All of lore.kernel.org
 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: [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 [PATCH 00/29] ixgbe/base: update base driver Beilei Xing
2016-05-06  6:07 ` [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 ` [PATCH 02/29] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-13 16:27   ` Ferruh Yigit
2016-05-06  6:07 ` [PATCH 03/29] ixgbe/base: fix problematic return value Beilei Xing
2016-05-06  6:07 ` [PATCH 04/29] ixgbe/base: add mac link setup for x550a SFP Beilei Xing
2016-05-06  6:07 ` [PATCH 05/29] ixgbe/base: fix checksum error of checking PHY token Beilei Xing
2016-05-06  6:07 ` [PATCH 06/29] ixgbe/base: refactor eee setup for x550 Beilei Xing
2016-05-06  6:07 ` [PATCH 07/29] ixgbe/base: change access method Beilei Xing
2016-05-06  6:07 ` [PATCH 08/29] ixgbe/base: add KR support for X550EM_A devices Beilei Xing
2016-05-06  6:07 ` [PATCH 09/29] ixgbe/base: add link mac setup for x550a SFP+ Beilei Xing
2016-05-06  6:07 ` [PATCH 10/29] ixgbe/base: clear stale pool mappings Beilei Xing
2016-05-06  6:07 ` [PATCH 11/29] ixgbe/base: rename macro of TDL Beilei Xing
2016-05-06  6:07 ` [PATCH 12/29] ixgbe/base: fix error path to release lock Beilei Xing
2016-05-06  6:07 ` [PATCH 13/29] ixgbe/base: refactor NW management interface ops Beilei Xing
2016-05-06  6:07 ` [PATCH 14/29] ixgbe/base: fix for code style Beilei Xing
2016-05-06  6:07 ` [PATCH 15/29] ixgbe/base: fix firmware commands on x550em_a Beilei Xing
2016-05-06  6:07 ` [PATCH 16/29] ixgbe/base: add new phy definitions Beilei Xing
2016-05-06  6:07 ` [PATCH 17/29] ixgbe/base: change device IDs Beilei Xing
2016-05-06  6:07 ` [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 ` [PATCH 19/29] ixgbe/base: fix register access error Beilei Xing
2016-05-06  6:07 ` [PATCH 20/29] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-05-06  6:07 ` [PATCH 21/29] ixgbe/base: smplify add/remove VLANs Beilei Xing
2016-06-13 16:26   ` Ferruh Yigit
2016-05-06  6:07 ` [PATCH 22/29] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-13 14:46   ` Ferruh Yigit
2016-05-06  6:07 ` [PATCH 23/29] ixgbe/base: unify coding style Beilei Xing
2016-05-06  6:07 ` [PATCH 24/29] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-05-06  6:07 ` [PATCH 25/29] ixgbe/base: fix endianness issues Beilei Xing
2016-05-06  6:07 ` [PATCH 26/29] ixgbe/base: allow setting mac anti spoofing per vf Beilei Xing
2016-05-06  6:07 ` [PATCH 27/29] ixgbe/base: add flow control autoneg for x550a Beilei Xing
2016-05-06  6:07 ` [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 ` [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 ` [PATCH 00/29] ixgbe/base: update base driver Zhang, Helin
2016-06-14  6:59 ` [PATCH v2 00/30] " Beilei Xing
2016-06-14  6:59   ` [PATCH v2 01/30] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-06-14  6:59   ` [PATCH v2 02/30] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-14  6:59   ` [PATCH v2 03/30] ixgbe/base: fix problematic return value Beilei Xing
2016-06-14  6:59   ` [PATCH v2 04/30] ixgbe/base: add mac link setup for x550a SFP Beilei Xing
2016-06-14  6:59   ` [PATCH v2 05/30] ixgbe/base: fix checksum error of checking PHY token Beilei Xing
2016-06-14  6:59   ` [PATCH v2 06/30] ixgbe/base: refactor eee setup for x550 Beilei Xing
2016-06-14  6:59   ` [PATCH v2 07/30] ixgbe/base: change access method Beilei Xing
2016-06-14  6:59   ` [PATCH v2 08/30] ixgbe/base: add KR support for X550EM_A devices Beilei Xing
2016-06-14  6:59   ` [PATCH v2 09/30] ixgbe/base: add link mac setup for x550a SFP+ Beilei Xing
2016-06-14  6:59   ` [PATCH v2 10/30] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-14  6:59   ` [PATCH v2 11/30] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-14  6:59   ` [PATCH v2 12/30] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-14  6:59   ` [PATCH v2 13/30] ixgbe/base: fix for code style Beilei Xing
2016-06-14  6:59   ` [PATCH v2 14/30] ixgbe/base: fix firmware commands on x550em_a Beilei Xing
2016-06-14  6:59   ` [PATCH v2 15/30] ixgbe/base: refactor NW management interface ops Beilei Xing
2016-06-14  6:59   ` [PATCH v2 16/30] ixgbe/base: add new phy definitions Beilei Xing
2016-06-14  6:59   ` [PATCH v2 17/30] ixgbe/base: change device IDs Beilei Xing
2016-06-14  6:59   ` [PATCH v2 18/30] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-14  6:59   ` [PATCH v2 19/30] ixgbe/base: fix possible race issue Beilei Xing
2016-06-14  6:59   ` [PATCH v2 20/30] ixgbe/base: fix register access error Beilei Xing
2016-06-14  6:59   ` [PATCH v2 21/30] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-06-14  6:59   ` [PATCH v2 22/30] ixgbe/base: simplify add/remove VLANs Beilei Xing
2016-06-14  6:59   ` [PATCH v2 23/30] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-14  6:59   ` [PATCH v2 24/30] ixgbe/base: unify coding style Beilei Xing
2016-06-14  6:59   ` [PATCH v2 25/30] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-14  6:59   ` [PATCH v2 26/30] ixgbe/base: fix endianness issues Beilei Xing
2016-06-14  6:59   ` [PATCH v2 27/30] ixgbe/base: allow setting mac anti spoofing per vf Beilei Xing
2016-06-14  6:59   ` [PATCH v2 28/30] ixgbe/base: add flow control autoneg for x550a Beilei Xing
2016-06-14  6:59   ` [PATCH v2 29/30] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-14  6:59   ` [PATCH v2 30/30] ixgbe/base: update README Beilei Xing
2016-06-14 10:36   ` [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   ` [PATCH v3 00/30] Beilei Xing
2016-06-15  7:53     ` [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     ` [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     ` [PATCH v3 03/30] ixgbe/base: fix problematic return value Beilei Xing
2016-06-15  7:53     ` [PATCH v3 04/30] ixgbe/base: add MAC link setup for X550a SFP Beilei Xing
2016-06-15  7:53     ` [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     ` [PATCH v3 06/30] ixgbe/base: refactor eee setup for X550 Beilei Xing
2016-06-15  7:53     ` [PATCH v3 07/30] ixgbe/base: change access method Beilei Xing
2016-06-15  7:53     ` [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     ` [PATCH v3 09/30] ixgbe/base: add link MAC setup for X550a SFP+ Beilei Xing
2016-06-15  7:53     ` [PATCH v3 10/30] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-15  7:53     ` [PATCH v3 11/30] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-15  7:53     ` [PATCH v3 12/30] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-15  7:53     ` [PATCH v3 13/30] ixgbe/base: fix for code style Beilei Xing
2016-06-15  7:53     ` [PATCH v3 14/30] ixgbe/base: fix firmware commands on X550em_a Beilei Xing
2016-06-15  7:53     ` [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     ` [PATCH v3 16/30] ixgbe/base: add new phy definitions Beilei Xing
2016-06-15  7:53     ` [PATCH v3 17/30] ixgbe/base: change device IDs Beilei Xing
2016-06-15  7:53     ` [PATCH v3 18/30] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-15  7:53     ` [PATCH v3 19/30] ixgbe/base: fix possible race issue Beilei Xing
2016-06-15  7:53     ` [PATCH v3 20/30] ixgbe/base: fix register access error Beilei Xing
2016-06-15  7:53     ` [PATCH v3 21/30] ixgbe/base: limit PHY token accessing to MDIO only Beilei Xing
2016-06-15  7:53     ` [PATCH v3 22/30] ixgbe/base: simplify add/remove VLANs Beilei Xing
2016-06-15  7:53     ` [PATCH v3 23/30] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-15  7:53     ` [PATCH v3 24/30] ixgbe/base: unify coding style Beilei Xing
2016-06-15  7:53     ` [PATCH v3 25/30] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-15  7:53     ` [PATCH v3 26/30] ixgbe/base: fix endianness issues Beilei Xing
2016-06-15  7:53     ` [PATCH v3 27/30] ixgbe/base: allow setting MAC anti spoofing per VF Beilei Xing
2016-06-15  7:53     ` [PATCH v3 28/30] ixgbe/base: add flow control autoneg for X550a Beilei Xing
2016-06-15  7:53     ` [PATCH v3 29/30] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-15  7:53     ` [PATCH v3 30/30] ixgbe/base: update README Beilei Xing
2016-06-23  7:22     ` [PATCH v4 00/29] ixgbe/base: update base driver Beilei Xing
2016-06-23  7:22       ` [PATCH v4 01/29] ixgbe/base: add new VF requests for mailbox API Beilei Xing
2016-06-23  7:22       ` [PATCH v4 02/29] ixgbe/base: add sgmii link for X550 Beilei Xing
2016-06-23  7:22       ` [PATCH v4 03/29] ixgbe/base: fix problematic return value Beilei Xing
2016-06-23  7:22       ` [PATCH v4 04/29] ixgbe/base: add MAC link setup for X550a SFP Beilei Xing
2016-06-23  7:22       ` [PATCH v4 05/29] ixgbe/base: fix firmware command checksum error Beilei Xing
2016-06-23  7:22       ` [PATCH v4 06/29] ixgbe/base: refactor eee setup for X550 Beilei Xing
2016-06-23  7:22       ` [PATCH v4 07/29] ixgbe/base: add KR support for X550em_a devices Beilei Xing
2016-06-23  7:22       ` [PATCH v4 08/29] ixgbe/base: change access method Beilei Xing
2016-06-23  7:22       ` [PATCH v4 09/29] ixgbe/base: add link MAC setup for X550a SFP+ Beilei Xing
2016-06-23  7:22       ` [PATCH v4 10/29] ixgbe/base: clear stale pool mappings Beilei Xing
2016-06-23  7:22       ` [PATCH v4 11/29] ixgbe/base: rename macro of TDL Beilei Xing
2016-06-23  7:22       ` [PATCH v4 12/29] ixgbe/base: fix error path to release lock Beilei Xing
2016-06-23  7:22       ` [PATCH v4 13/29] ixgbe/base: fix for code style Beilei Xing
2016-06-23  7:22       ` [PATCH v4 14/29] ixgbe/base: optimize internal PHY mode determination Beilei Xing
2016-06-23  7:22       ` [PATCH v4 15/29] ixgbe/base: add new phy definitions Beilei Xing
2016-06-23  7:22       ` [PATCH v4 16/29] ixgbe/base: change device IDs Beilei Xing
2016-06-23  7:22       ` [PATCH v4 17/29] ixgbe/base: add function to reset swfw semaphore Beilei Xing
2016-06-23  7:22       ` [PATCH v4 18/29] ixgbe/base: fix possible race issue Beilei Xing
2016-06-23  7:22       ` [PATCH v4 19/29] ixgbe/base: fix register access error Beilei Xing
2016-06-23  7:22       ` [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       ` [PATCH v4 22/29] ixgbe/base: add bypassing VLVF Beilei Xing
2016-06-23  7:22       ` [PATCH v4 23/29] ixgbe/base: unify coding style Beilei Xing
2016-06-23  7:22       ` [PATCH v4 24/29] ixgbe/base: use u8 to replace u16 for a variable Beilei Xing
2016-06-23  7:22       ` [PATCH v4 25/29] ixgbe/base: fix endianness issues Beilei Xing
2016-06-23  7:22       ` [PATCH v4 26/29] ixgbe/base: allow setting MAC anti spoofing per VF Beilei Xing
2016-06-23  7:22       ` [PATCH v4 27/29] ixgbe/base: add flow control autoneg for X550a Beilei Xing
2016-06-23  7:22       ` [PATCH v4 28/29] ixgbe/base: define if enable crosstalk work around Beilei Xing
2016-06-23  7:22       ` [PATCH v4 29/29] ixgbe/base: update README Beilei Xing
2016-06-27 14:20       ` [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.