From mboxrd@z Thu Jan 1 00:00:00 1970 From: "E. Scott Daniels" Subject: [PATCH] net/ixgbe: fix vlan insert parameter type and its use Date: Tue, 18 Oct 2016 15:13:27 -0400 Message-ID: <1476818007-13659-1-git-send-email-daniels@research.att.com> Cc: dev@dpdk.org, az5157@att.com, "E. Scott Daniels" To: helin.zhang@intel.com, bernard.iremonger@intel.com Return-path: Received: from mx0a-00191d01.pphosted.com (mx0a-00191d01.pphosted.com [67.231.149.140]) by dpdk.org (Postfix) with ESMTP id 6F1705A33 for ; Tue, 18 Oct 2016 21:14:02 +0200 (CEST) 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" 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; 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