From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott Daniels Subject: Re: [PATCH] net/ixgbe: fix vlan insert parameter type and its use Date: Wed, 19 Oct 2016 09:56:43 -0400 (EDT) Message-ID: References: <1476818007-13659-1-git-send-email-daniels@research.att.com> <6A0DE07E22DDAD4C9103DF62FEBC09093933CE36@shsmsx102.ccr.corp.intel.com> <8CEF83825BEC744B83065625E567D7C21A093CC1@IRSMSX108.ger.corp.intel.com> <8CEF83825BEC744B83065625E567D7C21A093DA3@IRSMSX108.ger.corp.intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII; format=flowed Cc: "Lu, Wenzhuo" , "Zhang, Helin" , "dev@dpdk.org" , "ZELEZNIAK, ALEX" To: "Iremonger, Bernard" Return-path: Received: from mx0a-00191d01.pphosted.com (mx0b-00191d01.pphosted.com [67.231.157.136]) by dpdk.org (Postfix) with ESMTP id EF7D86CD7 for ; Wed, 19 Oct 2016 15:57:21 +0200 (CEST) In-Reply-To: <8CEF83825BEC744B83065625E567D7C21A093DA3@IRSMSX108.ger.corp.intel.com> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Wed, 19 Oct 2016, Iremonger, Bernard wrote: > Hi Scott, > > > >>>>> Subject: [dpdk-dev] [PATCH] net/ixgbe: fix vlan insert parameter >>>>> type and its use >>>>> >>>>> The final parameter to rte_pmd_ixgbe_set_vf_vlan_insert is uint8_t >>>>> and treated as a binary flag when it needs to be a uint16_t and >>>>> treated as a VLAN id. The data sheet (sect 8.2.3.27.13) describes >>>>> the right most >>>>> 16 bits as the VLAN id that is to be inserted; the >>>>> 16.11 code is accepting only a 1 or 0 thus effectively only >>>>> allowing the VLAN id 1 to be inserted (0 disables the insertion setting). >>>>> >>>>> This patch changes the final parm name to represent the data that is >>>>> being accepted (vlan_id), changes the type to permit all valid VLAN >>>>> ids, and validates the parameter based on the range of 0 to 4095. >>>>> Corresponding changes to prototype and documentation in the .h file. >>>>> >>>>> Fixes: 49e248223e9f71 ("net/ixgbe: add API for VF management") >>>>> >>>>> Signed-off-by: E. Scott Daniels >>>>> --- >>>>> drivers/net/ixgbe/ixgbe_ethdev.c | 8 ++++---- >>>>> drivers/net/ixgbe/rte_pmd_ixgbe.h | 9 +++++---- >>>>> 2 files changed, 9 insertions(+), 8 deletions(-) >>>>> >>>>> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c >>>>> b/drivers/net/ixgbe/ixgbe_ethdev.c >>>>> index 4ca5747..316af73 100644 >>>>> --- a/drivers/net/ixgbe/ixgbe_ethdev.c >>>>> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c >>>>> @@ -4727,7 +4727,7 @@ >> rte_pmd_ixgbe_set_vf_mac_anti_spoof(uint8_t >>>>> port, uint16_t vf, uint8_t on) } >>>>> >>>>> int >>>>> -rte_pmd_ixgbe_set_vf_vlan_insert(uint8_t port, uint16_t vf, uint8_t >>>>> on) >>>>> +rte_pmd_ixgbe_set_vf_vlan_insert(uint8_t port, uint16_t vf, >>>>> +uint16_t >>>>> +vlan_id) >>>>> { >>>>> struct ixgbe_hw *hw; >>>>> uint32_t ctrl; >>>>> @@ -4742,13 +4742,13 @@ rte_pmd_ixgbe_set_vf_vlan_insert(uint8_t >>>> port, >>>>> uint16_t vf, uint8_t on) >>>>> if (vf >= dev_info.max_vfs) >>>>> return -EINVAL; >>>>> >>>>> - if (on > 1) >>>>> + if (vlan_id > 4095) >>>>> return -EINVAL; >>>>> >>>>> hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); >>>>> ctrl = IXGBE_READ_REG(hw, IXGBE_VMVIR(vf)); >>>>> - if (on) { >>>>> - ctrl = on; >>>>> + if (vlan_id) { >>>>> + ctrl = vlan_id; >>>> I believe this patch is a good idea of an enhancement. But you cannot >>>> leverage the existing code like this. >>>> The register IXGBE_VMVIR is only for enable/disable. We cannot write >>>> the VLAN ID into it. >>>> If you want to merge the 2 things, enabling/disabling and setting >>>> VLAN ID together. I think we need a totally new implementation. So >> NACK. >>> >>> Reading the 82599 data sheet (sect 8.2.3.27.13), the change from Scott is >> correct. >>> The NACK is not correct. >>> >>> However changing the API means that where it is called needs to be >> changed too. >>> It is called at present from app/testpmd/cmdline.c line 4731. >>> >>> >> Bernard, >> Should I add this change to the patch? (Didn't occur to me to look for use). >> >> Scott > > No, it would be better to make the testpmd change in a separate patch, and send a v2 patchset with two patches. > Will do, thanks. New to the patch world, so I appreciate your patience! Scott > >>>>> ctrl |= IXGBE_VMVIR_VLANA_DEFAULT; >>>>> } else { >>>>> ctrl = 0; >>>>> diff --git a/drivers/net/ixgbe/rte_pmd_ixgbe.h >>>>> b/drivers/net/ixgbe/rte_pmd_ixgbe.h >>>>> index 2fdf530..c2fb826 100644 >>>>> --- a/drivers/net/ixgbe/rte_pmd_ixgbe.h >>>>> +++ b/drivers/net/ixgbe/rte_pmd_ixgbe.h >>>>> @@ -99,16 +99,17 @@ int >> rte_pmd_ixgbe_set_vf_mac_anti_spoof(uint8_t >>>>> port, uint16_t vf, uint8_t on); >>>>> * The port identifier of the Ethernet device. >>>>> * @param vf >>>>> * ID specifying VF. >>>>> - * @param on >>>>> - * 1 - Enable VF's vlan insert. >>>>> - * 0 - Disable VF's vlan insert >>>>> + * @param vlan_id >>>>> + * 0 - Disable VF's vlan insert. >>>>> + * n - Enable; n is inserted as the vlan id. >>>>> * >>>>> * @return >>>>> * - (0) if successful. >>>>> * - (-ENODEV) if *port* invalid. >>>>> * - (-EINVAL) if bad parameter. >>>>> */ >>>>> -int rte_pmd_ixgbe_set_vf_vlan_insert(uint8_t port, uint16_t vf, >>>>> uint8_t on); >>>>> +int rte_pmd_ixgbe_set_vf_vlan_insert(uint8_t port, uint16_t vf, >>>>> + uint16_t vlan_id); >>>>> >>>>> /** >>>>> * Enable/Disable tx loopback >>>>> -- >>>>> 1.9.1 > > Regards, > > Bernard. > >