DPDK patches and discussions
 help / color / mirror / Atom feed
From: Beilei Xing <beilei.xing@intel.com>
To: wenzhuo.lu@intel.com
Cc: dev@dpdk.org, Beilei Xing <beilei.xing@intel.com>
Subject: [dpdk-dev] [PATCH v4 21/29] ixgbe/base: simplify add/remove VLANs
Date: Thu, 23 Jun 2016 15:22:29 +0800	[thread overview]
Message-ID: <1466666557-14312-22-git-send-email-beilei.xing@intel.com> (raw)
In-Reply-To: <1466666557-14312-1-git-send-email-beilei.xing@intel.com>

This patch simplifies the adding and removing VLANs from
VFTA/VLVF/VLVFB registers. The logic to determine registers has
been simplified to (vid / 32) and (1 - vid / 32). Many conditional
paths and checks are no longer needed with this patch.

Signed-off-by: Beilei Xing <beilei.xing@intel.com>
---
 drivers/net/ixgbe/base/ixgbe_api.c    |  18 ++--
 drivers/net/ixgbe/base/ixgbe_api.h    |   2 +-
 drivers/net/ixgbe/base/ixgbe_common.c | 188 ++++++++++++++--------------------
 drivers/net/ixgbe/base/ixgbe_common.h |   2 +-
 drivers/net/ixgbe/base/ixgbe_type.h   |   2 +-
 5 files changed, 91 insertions(+), 121 deletions(-)

diff --git a/drivers/net/ixgbe/base/ixgbe_api.c b/drivers/net/ixgbe/base/ixgbe_api.c
index e117b86..90deaf1 100644
--- a/drivers/net/ixgbe/base/ixgbe_api.c
+++ b/drivers/net/ixgbe/base/ixgbe_api.c
@@ -1080,8 +1080,8 @@ s32 ixgbe_clear_vfta(struct ixgbe_hw *hw)
  *  ixgbe_set_vfta - Set VLAN filter table
  *  @hw: pointer to hardware structure
  *  @vlan: VLAN id to write to VLAN filter
- *  @vind: VMDq output index that maps queue to VLAN id in VFTA
- *  @vlan_on: boolean flag to turn on/off VLAN in VFTA
+ *  @vind: VMDq output index that maps queue to VLAN id in VLVFB
+ *  @vlan_on: boolean flag to turn on/off VLAN
  *
  *  Turn on/off specified VLAN in the VLAN filter table.
  **/
@@ -1095,18 +1095,20 @@ s32 ixgbe_set_vfta(struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on)
  *  ixgbe_set_vlvf - Set VLAN Pool Filter
  *  @hw: pointer to hardware structure
  *  @vlan: VLAN id to write to VLAN filter
- *  @vind: VMDq output index that maps queue to VLAN id in VFVFB
- *  @vlan_on: boolean flag to turn on/off VLAN in VFVF
- *  @vfta_changed: pointer to boolean flag which indicates whether VFTA
- *                 should be changed
+ *  @vind: VMDq output index that maps queue to VLAN id in VLVFB
+ *  @vlan_on: boolean flag to turn on/off VLAN in VLVF
+ *  @vfta_delta: pointer to the difference between the current value of VFTA
+ *               and the desired value
+ *  @vfta: the desired value of the VFTA
  *
  *  Turn on/off specified bit in VLVF table.
  **/
 s32 ixgbe_set_vlvf(struct ixgbe_hw *hw, u32 vlan, u32 vind, bool vlan_on,
-		    bool *vfta_changed)
+		   u32 *vfta_delta, u32 vfta)
 {
 	return ixgbe_call_func(hw, hw->mac.ops.set_vlvf, (hw, vlan, vind,
-			       vlan_on, vfta_changed), IXGBE_NOT_IMPLEMENTED);
+			       vlan_on, vfta_delta, vfta),
+			       IXGBE_NOT_IMPLEMENTED);
 }
 
 /**
diff --git a/drivers/net/ixgbe/base/ixgbe_api.h b/drivers/net/ixgbe/base/ixgbe_api.h
index f5970a8..9431d14 100644
--- a/drivers/net/ixgbe/base/ixgbe_api.h
+++ b/drivers/net/ixgbe/base/ixgbe_api.h
@@ -126,7 +126,7 @@ s32 ixgbe_clear_vfta(struct ixgbe_hw *hw);
 s32 ixgbe_set_vfta(struct ixgbe_hw *hw, u32 vlan,
 		   u32 vind, bool vlan_on);
 s32 ixgbe_set_vlvf(struct ixgbe_hw *hw, u32 vlan, u32 vind,
-		   bool vlan_on, bool *vfta_changed);
+		   bool vlan_on, u32 *vfta_delta, u32 vfta);
 s32 ixgbe_fc_enable(struct ixgbe_hw *hw);
 s32 ixgbe_setup_fc(struct ixgbe_hw *hw);
 s32 ixgbe_set_fw_drv_ver(struct ixgbe_hw *hw, u8 maj, u8 min, u8 build,
diff --git a/drivers/net/ixgbe/base/ixgbe_common.c b/drivers/net/ixgbe/base/ixgbe_common.c
index 0a708cf..4551a2a 100644
--- a/drivers/net/ixgbe/base/ixgbe_common.c
+++ b/drivers/net/ixgbe/base/ixgbe_common.c
@@ -3853,24 +3853,20 @@ s32 ixgbe_find_vlvf_slot(struct ixgbe_hw *hw, u32 vlan)
  *  ixgbe_set_vfta_generic - Set VLAN filter table
  *  @hw: pointer to hardware structure
  *  @vlan: VLAN id to write to VLAN filter
- *  @vind: VMDq output index that maps queue to VLAN id in VFVFB
- *  @vlan_on: boolean flag to turn on/off VLAN in VFVF
+ *  @vind: VMDq output index that maps queue to VLAN id in VLVFB
+ *  @vlan_on: boolean flag to turn on/off VLAN
  *
  *  Turn on/off specified VLAN in the VLAN filter table.
  **/
 s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
 			   bool vlan_on)
 {
-	s32 regindex;
-	u32 bitindex;
-	u32 vfta;
-	u32 targetbit;
-	s32 ret_val = IXGBE_SUCCESS;
-	bool vfta_changed = false;
+	u32 regidx, vfta_delta, vfta;
+	s32 ret_val;
 
 	DEBUGFUNC("ixgbe_set_vfta_generic");
 
-	if (vlan > 4095)
+	if (vlan > 4095 || vind > 63)
 		return IXGBE_ERR_PARAM;
 
 	/*
@@ -3885,33 +3881,28 @@ s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
 	 *    bits[11-5]: which register
 	 *    bits[4-0]:  which bit in the register
 	 */
-	regindex = (vlan >> 5) & 0x7F;
-	bitindex = vlan & 0x1F;
-	targetbit = (1 << bitindex);
-	vfta = IXGBE_READ_REG(hw, IXGBE_VFTA(regindex));
-
-	if (vlan_on) {
-		if (!(vfta & targetbit)) {
-			vfta |= targetbit;
-			vfta_changed = true;
-		}
-	} else {
-		if ((vfta & targetbit)) {
-			vfta &= ~targetbit;
-			vfta_changed = true;
-		}
-	}
+	regidx = vlan / 32;
+	vfta_delta = 1 << (vlan % 32);
+	vfta = IXGBE_READ_REG(hw, IXGBE_VFTA(regidx));
+
+	/* vfta_delta represents the difference between the current value
+	 * of vfta and the value we want in the register.  Since the diff
+	 * is an XOR mask we can just update the vfta using an XOR
+	 */
+	vfta_delta &= vlan_on ? ~vfta : vfta;
+	vfta ^= vfta_delta;
 
 	/* Part 2
 	 * Call ixgbe_set_vlvf_generic to set VLVFB and VLVF
 	 */
-	ret_val = ixgbe_set_vlvf_generic(hw, vlan, vind, vlan_on,
-					 &vfta_changed);
+	ret_val = ixgbe_set_vlvf_generic(hw, vlan, vind, vlan_on, &vfta_delta,
+					 vfta);
 	if (ret_val != IXGBE_SUCCESS)
 		return ret_val;
 
-	if (vfta_changed)
-		IXGBE_WRITE_REG(hw, IXGBE_VFTA(regindex), vfta);
+	/* Update VFTA now that we are ready for traffic */
+	if (vfta_delta)
+		IXGBE_WRITE_REG(hw, IXGBE_VFTA(regidx), vfta);
 
 	return IXGBE_SUCCESS;
 }
@@ -3920,21 +3911,23 @@ s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
  *  ixgbe_set_vlvf_generic - Set VLAN Pool Filter
  *  @hw: pointer to hardware structure
  *  @vlan: VLAN id to write to VLAN filter
- *  @vind: VMDq output index that maps queue to VLAN id in VFVFB
- *  @vlan_on: boolean flag to turn on/off VLAN in VFVF
- *  @vfta_changed: pointer to boolean flag which indicates whether VFTA
- *                 should be changed
+ *  @vind: VMDq output index that maps queue to VLAN id in VLVFB
+ *  @vlan_on: boolean flag to turn on/off VLAN in VLVF
+ *  @vfta_delta: pointer to the difference between the current value of VFTA
+ * and the desired value
+ *  @vfta: the desired value of the VFTA
  *
  *  Turn on/off specified bit in VLVF table.
  **/
 s32 ixgbe_set_vlvf_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
-			    bool vlan_on, bool *vfta_changed)
+			   bool vlan_on, u32 *vfta_delta, u32 vfta)
 {
-	u32 vt;
+	u32 bits;
+	s32 vlvf_index;
 
 	DEBUGFUNC("ixgbe_set_vlvf_generic");
 
-	if (vlan > 4095)
+	if (vlan > 4095 || vind > 63)
 		return IXGBE_ERR_PARAM;
 
 	/* If VT Mode is set
@@ -3944,82 +3937,57 @@ s32 ixgbe_set_vlvf_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
 	 *   Or !vlan_on
 	 *     clear the pool bit and possibly the vind
 	 */
-	vt = IXGBE_READ_REG(hw, IXGBE_VT_CTL);
-	if (vt & IXGBE_VT_CTL_VT_ENABLE) {
-		s32 vlvf_index;
-		u32 bits;
-
-		vlvf_index = ixgbe_find_vlvf_slot(hw, vlan);
-		if (vlvf_index < 0)
-			return vlvf_index;
-
-		if (vlan_on) {
-			/* set the pool bit */
-			if (vind < 32) {
-				bits = IXGBE_READ_REG(hw,
-						IXGBE_VLVFB(vlvf_index * 2));
-				bits |= (1 << vind);
-				IXGBE_WRITE_REG(hw,
-						IXGBE_VLVFB(vlvf_index * 2),
-						bits);
-			} else {
-				bits = IXGBE_READ_REG(hw,
-					IXGBE_VLVFB((vlvf_index * 2) + 1));
-				bits |= (1 << (vind - 32));
-				IXGBE_WRITE_REG(hw,
-					IXGBE_VLVFB((vlvf_index * 2) + 1),
-					bits);
-			}
-		} else {
-			/* clear the pool bit */
-			if (vind < 32) {
-				bits = IXGBE_READ_REG(hw,
-						IXGBE_VLVFB(vlvf_index * 2));
-				bits &= ~(1 << vind);
-				IXGBE_WRITE_REG(hw,
-						IXGBE_VLVFB(vlvf_index * 2),
-						bits);
-				bits |= IXGBE_READ_REG(hw,
-					IXGBE_VLVFB((vlvf_index * 2) + 1));
-			} else {
-				bits = IXGBE_READ_REG(hw,
-					IXGBE_VLVFB((vlvf_index * 2) + 1));
-				bits &= ~(1 << (vind - 32));
-				IXGBE_WRITE_REG(hw,
-					IXGBE_VLVFB((vlvf_index * 2) + 1),
-					bits);
-				bits |= IXGBE_READ_REG(hw,
-						IXGBE_VLVFB(vlvf_index * 2));
-			}
-		}
+	if (!(IXGBE_READ_REG(hw, IXGBE_VT_CTL) & IXGBE_VT_CTL_VT_ENABLE))
+		return IXGBE_SUCCESS;
+	vlvf_index = ixgbe_find_vlvf_slot(hw, vlan);
+	if (vlvf_index < 0)
+		return vlvf_index;
 
-		/*
-		 * If there are still bits set in the VLVFB registers
-		 * for the VLAN ID indicated we need to see if the
-		 * caller is requesting that we clear the VFTA entry bit.
-		 * If the caller has requested that we clear the VFTA
-		 * entry bit but there are still pools/VFs using this VLAN
-		 * ID entry then ignore the request.  We're not worried
-		 * about the case where we're turning the VFTA VLAN ID
-		 * entry bit on, only when requested to turn it off as
-		 * there may be multiple pools and/or VFs using the
-		 * VLAN ID entry.  In that case we cannot clear the
-		 * VFTA bit until all pools/VFs using that VLAN ID have also
-		 * been cleared.  This will be indicated by "bits" being
-		 * zero.
+	bits = IXGBE_READ_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32));
+
+	/* set the pool bit */
+	bits |= 1 << (vind % 32);
+	if (vlan_on)
+		goto vlvf_update;
+
+	/* clear the pool bit */
+	bits ^= 1 << (vind % 32);
+
+	if (!bits &&
+	    !IXGBE_READ_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + 1 - vind / 32))) {
+		/* Clear VFTA first, then disable VLVF.  Otherwise
+		 * we run the risk of stray packets leaking into
+		 * the PF via the default pool
 		 */
-		if (bits) {
-			IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index),
-					(IXGBE_VLVF_VIEN | vlan));
-			if ((!vlan_on) && (vfta_changed != NULL)) {
-				/* someone wants to clear the vfta entry
-				 * but some pools/VFs are still using it.
-				 * Ignore it. */
-				*vfta_changed = false;
-			}
-		} else
-			IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), 0);
+		if (vfta_delta)
+			IXGBE_WRITE_REG(hw, IXGBE_VFTA(vlan / 32), vfta);
+
+		/* disable VLVF and clear remaining bit from pool */
+		IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), 0);
+		IXGBE_WRITE_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32), 0);
+
+		return IXGBE_SUCCESS;
 	}
+	/* If there are still bits set in the VLVFB registers
+	 * for the VLAN ID indicated we need to see if the
+	 * caller is requesting that we clear the VFTA entry bit.
+	 * If the caller has requested that we clear the VFTA
+	 * entry bit but there are still pools/VFs using this VLAN
+	 * ID entry then ignore the request.  We're not worried
+	 * about the case where we're turning the VFTA VLAN ID
+	 * entry bit on, only when requested to turn it off as
+	 * there may be multiple pools and/or VFs using the
+	 * VLAN ID entry.  In that case we cannot clear the
+	 * VFTA bit until all pools/VFs using that VLAN ID have also
+	 * been cleared.  This will be indicated by "bits" being
+	 * zero.
+	 */
+	*vfta_delta = 0;
+
+vlvf_update:
+	/* record pool change and enable VLAN ID if not already enabled */
+	IXGBE_WRITE_REG(hw, IXGBE_VLVFB(vlvf_index * 2 + vind / 32), bits);
+	IXGBE_WRITE_REG(hw, IXGBE_VLVF(vlvf_index), IXGBE_VLVF_VIEN | vlan);
 
 	return IXGBE_SUCCESS;
 }
@@ -4042,7 +4010,7 @@ s32 ixgbe_clear_vfta_generic(struct ixgbe_hw *hw)
 	for (offset = 0; offset < IXGBE_VLVF_ENTRIES; offset++) {
 		IXGBE_WRITE_REG(hw, IXGBE_VLVF(offset), 0);
 		IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2), 0);
-		IXGBE_WRITE_REG(hw, IXGBE_VLVFB((offset * 2) + 1), 0);
+		IXGBE_WRITE_REG(hw, IXGBE_VLVFB(offset * 2 + 1), 0);
 	}
 
 	return IXGBE_SUCCESS;
diff --git a/drivers/net/ixgbe/base/ixgbe_common.h b/drivers/net/ixgbe/base/ixgbe_common.h
index fd67a88..b4cd366 100644
--- a/drivers/net/ixgbe/base/ixgbe_common.h
+++ b/drivers/net/ixgbe/base/ixgbe_common.h
@@ -135,7 +135,7 @@ s32 ixgbe_init_uta_tables_generic(struct ixgbe_hw *hw);
 s32 ixgbe_set_vfta_generic(struct ixgbe_hw *hw, u32 vlan,
 			 u32 vind, bool vlan_on);
 s32 ixgbe_set_vlvf_generic(struct ixgbe_hw *hw, u32 vlan, u32 vind,
-			   bool vlan_on, bool *vfta_changed);
+			   bool vlan_on, u32 *vfta_delta, u32 vfta);
 s32 ixgbe_clear_vfta_generic(struct ixgbe_hw *hw);
 s32 ixgbe_find_vlvf_slot(struct ixgbe_hw *hw, u32 vlan);
 
diff --git a/drivers/net/ixgbe/base/ixgbe_type.h b/drivers/net/ixgbe/base/ixgbe_type.h
index ec1f4e0..b1fd079 100644
--- a/drivers/net/ixgbe/base/ixgbe_type.h
+++ b/drivers/net/ixgbe/base/ixgbe_type.h
@@ -3866,7 +3866,7 @@ struct ixgbe_mac_operations {
 	s32 (*disable_mc)(struct ixgbe_hw *);
 	s32 (*clear_vfta)(struct ixgbe_hw *);
 	s32 (*set_vfta)(struct ixgbe_hw *, u32, u32, bool);
-	s32 (*set_vlvf)(struct ixgbe_hw *, u32, u32, bool, bool *);
+	s32 (*set_vlvf)(struct ixgbe_hw *, u32, u32, bool, u32 *, u32);
 	s32 (*init_uta_tables)(struct ixgbe_hw *);
 	void (*set_mac_anti_spoofing)(struct ixgbe_hw *, bool, int);
 	void (*set_vlan_anti_spoofing)(struct ixgbe_hw *, bool, int);
-- 
2.5.0

  parent reply	other threads:[~2016-06-23  7:23 UTC|newest]

Thread overview: 142+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-06  6:07 [dpdk-dev] [PATCH 00/29] ixgbe/base: update base driver Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 01/29] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-05-19  7:41   ` Gu, YongjieX
2016-05-06  6:07 ` [dpdk-dev] [PATCH 02/29] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-13 16:27   ` Ferruh Yigit
2016-05-06  6:07 ` [dpdk-dev] [PATCH 03/29] ixgbe/base: fix problematic return value Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 04/29] ixgbe/base: add mac link setup for x550a SFP Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 05/29] ixgbe/base: fix checksum error of checking PHY token Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 06/29] ixgbe/base: refactor eee setup for x550 Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 07/29] ixgbe/base: change access method Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 08/29] ixgbe/base: add KR support for X550EM_A devices Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 09/29] ixgbe/base: add link mac setup for x550a SFP+ Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 10/29] ixgbe/base: clear stale pool mappings Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 11/29] ixgbe/base: rename macro of TDL Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 12/29] ixgbe/base: fix error path to release lock Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 13/29] ixgbe/base: refactor NW management interface ops Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 14/29] ixgbe/base: fix for code style Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 15/29] ixgbe/base: fix firmware commands on x550em_a Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 16/29] ixgbe/base: add new phy definitions Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 17/29] ixgbe/base: change device IDs Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 18/29] ixgbe/base: update swfw semaphore function Beilei Xing
2016-06-13 16:26   ` Ferruh Yigit
2016-06-13 16:28   ` Ferruh Yigit
2016-05-06  6:07 ` [dpdk-dev] [PATCH 19/29] ixgbe/base: fix register access error Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 20/29] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 21/29] ixgbe/base: smplify add/remove VLANs Beilei Xing
2016-06-13 16:26   ` Ferruh Yigit
2016-05-06  6:07 ` [dpdk-dev] [PATCH 22/29] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-13 14:46   ` Ferruh Yigit
2016-05-06  6:07 ` [dpdk-dev] [PATCH 23/29] ixgbe/base: unify coding style Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 24/29] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 25/29] ixgbe/base: fix endianness issues Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 26/29] ixgbe/base: allow setting mac anti spoofing per vf Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 27/29] ixgbe/base: add flow control autoneg for x550a Beilei Xing
2016-05-06  6:07 ` [dpdk-dev] [PATCH 28/29] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-13 16:27   ` Ferruh Yigit
2016-05-06  6:07 ` [dpdk-dev] [PATCH 29/29] ixgbe/base: update README Beilei Xing
2016-06-13 16:28   ` Ferruh Yigit
2016-06-14  1:00     ` Xing, Beilei
2016-06-06  1:24 ` [dpdk-dev] [PATCH 00/29] ixgbe/base: update base driver Zhang, Helin
2016-06-14  6:59 ` [dpdk-dev] [PATCH v2 00/30] " Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 01/30] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 02/30] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 03/30] ixgbe/base: fix problematic return value Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 04/30] ixgbe/base: add mac link setup for x550a SFP Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 05/30] ixgbe/base: fix checksum error of checking PHY token Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 06/30] ixgbe/base: refactor eee setup for x550 Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 07/30] ixgbe/base: change access method Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 08/30] ixgbe/base: add KR support for X550EM_A devices Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 09/30] ixgbe/base: add link mac setup for x550a SFP+ Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 10/30] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 11/30] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 12/30] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 13/30] ixgbe/base: fix for code style Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 14/30] ixgbe/base: fix firmware commands on x550em_a Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 15/30] ixgbe/base: refactor NW management interface ops Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 16/30] ixgbe/base: add new phy definitions Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 17/30] ixgbe/base: change device IDs Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 18/30] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 19/30] ixgbe/base: fix possible race issue Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 20/30] ixgbe/base: fix register access error Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 21/30] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 22/30] ixgbe/base: simplify add/remove VLANs Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 23/30] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 24/30] ixgbe/base: unify coding style Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 25/30] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 26/30] ixgbe/base: fix endianness issues Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 27/30] ixgbe/base: allow setting mac anti spoofing per vf Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 28/30] ixgbe/base: add flow control autoneg for x550a Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 29/30] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-14  6:59   ` [dpdk-dev] [PATCH v2 30/30] ixgbe/base: update README Beilei Xing
2016-06-14 10:36   ` [dpdk-dev] [PATCH v2 00/30] ixgbe/base: update base driver Ferruh Yigit
2016-06-14 10:54     ` Ferruh Yigit
2016-06-15  2:56       ` Xing, Beilei
2016-06-15  8:07         ` Thomas Monjalon
2016-06-15  7:53   ` [dpdk-dev] [PATCH v3 00/30] Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 01/30] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-06-21 14:39       ` Bruce Richardson
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 02/30] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-21 14:40       ` Bruce Richardson
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 03/30] ixgbe/base: fix problematic return value Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 04/30] ixgbe/base: add MAC link setup for X550a SFP Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 05/30] ixgbe/base: fix checksum error of checking PHY token Beilei Xing
2016-06-21 14:35       ` Bruce Richardson
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 06/30] ixgbe/base: refactor eee setup for X550 Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 07/30] ixgbe/base: change access method Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 08/30] ixgbe/base: add KR support for X550em_a devices Beilei Xing
2016-06-21 14:53       ` Bruce Richardson
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 09/30] ixgbe/base: add link MAC setup for X550a SFP+ Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 10/30] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 11/30] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 12/30] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 13/30] ixgbe/base: fix for code style Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 14/30] ixgbe/base: fix firmware commands on X550em_a Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 15/30] ixgbe/base: refactor NW management interface ops Beilei Xing
2016-06-21 16:19       ` Bruce Richardson
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 16/30] ixgbe/base: add new phy definitions Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 17/30] ixgbe/base: change device IDs Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 18/30] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 19/30] ixgbe/base: fix possible race issue Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 20/30] ixgbe/base: fix register access error Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 21/30] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 22/30] ixgbe/base: simplify add/remove VLANs Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 23/30] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 24/30] ixgbe/base: unify coding style Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 25/30] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 26/30] ixgbe/base: fix endianness issues Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 27/30] ixgbe/base: allow setting MAC anti spoofing per VF Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 28/30] ixgbe/base: add flow control autoneg for X550a Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 29/30] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-15  7:53     ` [dpdk-dev] [PATCH v3 30/30] ixgbe/base: update README Beilei Xing
2016-06-23  7:22     ` [dpdk-dev] [PATCH v4 00/29] ixgbe/base: update base driver Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 01/29] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 02/29] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 03/29] ixgbe/base: fix problematic return value Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 04/29] ixgbe/base: add MAC link setup for X550a SFP Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 05/29] ixgbe/base: fix firmware command checksum error Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 06/29] ixgbe/base: refactor eee setup for X550 Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 07/29] ixgbe/base: add KR support for X550em_a devices Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 08/29] ixgbe/base: change access method Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 09/29] ixgbe/base: add link MAC setup for X550a SFP+ Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 10/29] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 11/29] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 12/29] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 13/29] ixgbe/base: fix for code style Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 14/29] ixgbe/base: optimize internal PHY mode determination Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 15/29] ixgbe/base: add new phy definitions Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 16/29] ixgbe/base: change device IDs Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 17/29] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 18/29] ixgbe/base: fix possible race issue Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 19/29] ixgbe/base: fix register access error Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 20/29] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-06-23  7:22       ` Beilei Xing [this message]
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 22/29] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 23/29] ixgbe/base: unify coding style Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 24/29] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 25/29] ixgbe/base: fix endianness issues Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 26/29] ixgbe/base: allow setting MAC anti spoofing per VF Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 27/29] ixgbe/base: add flow control autoneg for X550a Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 28/29] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-23  7:22       ` [dpdk-dev] [PATCH v4 29/29] ixgbe/base: update README Beilei Xing
2016-06-27 14:20       ` [dpdk-dev] [PATCH v4 00/29] ixgbe/base: update base driver Bruce Richardson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466666557-14312-22-git-send-email-beilei.xing@intel.com \
    --to=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=wenzhuo.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).