All of lore.kernel.org
 help / color / mirror / Atom feed
From: Robin Zhang <robinx.zhang@intel.com>
To: dev@dpdk.org
Cc: beilei.xing@intel.com, qi.z.zhang@intel.com,
	helin.zhang@intel.com, jingjing.wu@intel.com,
	remy.horton@intel.com, jijiang.liu@intel.com,
	jing.d.chen@intel.com, heqing.zhu@intel.com,
	cunming.liang@intel.com, wenzhuo.lu@intel.com,
	roy.fan.zhang@intel.com, andrey.chilikin@intel.com,
	echaudro@redhat.com, junfeng.guo@intel.com,
	stevex.yang@intel.com, Robin Zhang <robinx.zhang@intel.com>,
	Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
Subject: [dpdk-dev] [PATCH v4 01/18] net/i40e/base: add new versions of send ASQ command functions
Date: Mon,  6 Sep 2021 02:02:41 +0000	[thread overview]
Message-ID: <20210906020258.1291688-2-robinx.zhang@intel.com> (raw)
In-Reply-To: <20210906020258.1291688-1-robinx.zhang@intel.com>

ASQ send command functions are returning only i40e status codes
yet some calling functions also need Admin Queue status
that is stored in hw->aq.asq_last_status. Since hw object
is stored on a heap it introduces a possibility for
a race condition in access to hw if calling function is not
fast enough to read hw->aq.asq_last_status before next
send ASQ command is executed.

Added new versions of send ASQ command functions that return
Admin Queue status on the stack to avoid race conditions
in access to hw->aq.asq_last_status.
Added new _v2 version of i40e_aq_remove_macvlan and i40e_aq_add_macvlan
that is using new _v2 versions of ASQ send command functions and
returns the Admin Queue status on the stack.

Signed-off-by: Sylwester Dziedziuch <sylwesterx.dziedziuch@intel.com>
Signed-off-by: Robin Zhang <robinx.zhang@intel.com>
---
 drivers/net/i40e/base/i40e_adminq.c    |  73 +++++++++++--
 drivers/net/i40e/base/i40e_common.c    | 139 ++++++++++++++++++++++---
 drivers/net/i40e/base/i40e_prototype.h |  17 +++
 3 files changed, 205 insertions(+), 24 deletions(-)

diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/i40e_adminq.c
index 0da45f03e4..eafacbdbec 100644
--- a/drivers/net/i40e/base/i40e_adminq.c
+++ b/drivers/net/i40e/base/i40e_adminq.c
@@ -834,7 +834,7 @@ STATIC bool i40e_asq_done(struct i40e_hw *hw)
 }
 
 /**
- *  i40e_asq_send_command - send command to Admin Queue
+ *  i40e_asq_send_command_exec - send command to Admin Queue
  *  @hw: pointer to the hw struct
  *  @desc: prefilled descriptor describing the command (non DMA mem)
  *  @buff: buffer to use for indirect commands
@@ -844,11 +844,12 @@ STATIC bool i40e_asq_done(struct i40e_hw *hw)
  *  This is the main send command driver routine for the Admin Queue send
  *  queue.  It runs the queue, cleans the queue, etc
  **/
-enum i40e_status_code i40e_asq_send_command(struct i40e_hw *hw,
-				struct i40e_aq_desc *desc,
-				void *buff, /* can be NULL */
-				u16  buff_size,
-				struct i40e_asq_cmd_details *cmd_details)
+STATIC enum i40e_status_code
+i40e_asq_send_command_exec(struct i40e_hw *hw,
+			   struct i40e_aq_desc *desc,
+			   void *buff, /* can be NULL */
+			   u16  buff_size,
+			   struct i40e_asq_cmd_details *cmd_details)
 {
 	enum i40e_status_code status = I40E_SUCCESS;
 	struct i40e_dma_mem *dma_buff = NULL;
@@ -858,8 +859,6 @@ enum i40e_status_code i40e_asq_send_command(struct i40e_hw *hw,
 	u16  retval = 0;
 	u32  val = 0;
 
-	i40e_acquire_spinlock(&hw->aq.asq_spinlock);
-
 	hw->aq.asq_last_status = I40E_AQ_RC_OK;
 
 	if (hw->aq.asq.count == 0) {
@@ -1042,6 +1041,64 @@ enum i40e_status_code i40e_asq_send_command(struct i40e_hw *hw,
 	}
 
 asq_send_command_error:
+	return status;
+}
+
+/**
+ *  i40e_asq_send_command - send command to Admin Queue
+ *  @hw: pointer to the hw struct
+ *  @desc: prefilled descriptor describing the command (non DMA mem)
+ *  @buff: buffer to use for indirect commands
+ *  @buff_size: size of buffer for indirect commands
+ *  @cmd_details: pointer to command details structure
+ *
+ *  Acquires the lock and calls the main send command execution
+ *  routine.
+ **/
+enum i40e_status_code
+i40e_asq_send_command(struct i40e_hw *hw,
+		      struct i40e_aq_desc *desc,
+		      void *buff, /* can be NULL */
+		      u16  buff_size,
+		      struct i40e_asq_cmd_details *cmd_details)
+{
+	enum i40e_status_code status = I40E_SUCCESS;
+
+	i40e_acquire_spinlock(&hw->aq.asq_spinlock);
+	status = i40e_asq_send_command_exec(hw, desc, buff, buff_size,
+					    cmd_details);
+	i40e_release_spinlock(&hw->aq.asq_spinlock);
+	return status;
+}
+
+/**
+ *  i40e_asq_send_command_v2 - send command to Admin Queue
+ *  @hw: pointer to the hw struct
+ *  @desc: prefilled descriptor describing the command (non DMA mem)
+ *  @buff: buffer to use for indirect commands
+ *  @buff_size: size of buffer for indirect commands
+ *  @cmd_details: pointer to command details structure
+ *  @aq_status: pointer to Admin Queue status return value
+ *
+ *  Acquires the lock and calls the main send command execution
+ *  routine. Returns the last Admin Queue status in aq_status
+ *  to avoid race conditions in access to hw->aq.asq_last_status.
+ **/
+enum i40e_status_code
+i40e_asq_send_command_v2(struct i40e_hw *hw,
+			 struct i40e_aq_desc *desc,
+			 void *buff, /* can be NULL */
+			 u16  buff_size,
+			 struct i40e_asq_cmd_details *cmd_details,
+			 enum i40e_admin_queue_err *aq_status)
+{
+	enum i40e_status_code status = I40E_SUCCESS;
+
+	i40e_acquire_spinlock(&hw->aq.asq_spinlock);
+	status = i40e_asq_send_command_exec(hw, desc, buff, buff_size,
+					    cmd_details);
+	if (aq_status)
+		*aq_status = hw->aq.asq_last_status;
 	i40e_release_spinlock(&hw->aq.asq_spinlock);
 	return status;
 }
diff --git a/drivers/net/i40e/base/i40e_common.c b/drivers/net/i40e/base/i40e_common.c
index e20bb9ac35..32642f3e2b 100644
--- a/drivers/net/i40e/base/i40e_common.c
+++ b/drivers/net/i40e/base/i40e_common.c
@@ -3114,6 +3114,46 @@ enum i40e_status_code i40e_aq_get_veb_parameters(struct i40e_hw *hw,
 	return status;
 }
 
+/**
+ * i40e_prepare_add_macvlan
+ * @mv_list: list of macvlans to be added
+ * @desc: pointer to AQ descriptor structure
+ * @count: length of the list
+ * @seid: VSI for the mac address
+ *
+ * Internal helper function that prepares the add macvlan request
+ * and returns the buffer size.
+ **/
+static u16
+i40e_prepare_add_macvlan(struct i40e_aqc_add_macvlan_element_data *mv_list,
+			 struct i40e_aq_desc *desc, u16 count, u16 seid)
+{
+	struct i40e_aqc_macvlan *cmd =
+		(struct i40e_aqc_macvlan *)&desc->params.raw;
+	u16 buf_size;
+	int i;
+
+	buf_size = count * sizeof(*mv_list);
+
+	/* prep the rest of the request */
+	i40e_fill_default_direct_cmd_desc(desc, i40e_aqc_opc_add_macvlan);
+	cmd->num_addresses = CPU_TO_LE16(count);
+	cmd->seid[0] = CPU_TO_LE16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid);
+	cmd->seid[1] = 0;
+	cmd->seid[2] = 0;
+
+	for (i = 0; i < count; i++)
+		if (I40E_IS_MULTICAST(mv_list[i].mac_addr))
+			mv_list[i].flags |=
+			    CPU_TO_LE16(I40E_AQC_MACVLAN_ADD_USE_SHARED_MAC);
+
+	desc->flags |= CPU_TO_LE16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));
+	if (buf_size > I40E_AQ_LARGE_BUF)
+		desc->flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB);
+
+	return buf_size;
+}
+
 /**
  * i40e_aq_add_macvlan
  * @hw: pointer to the hw struct
@@ -3124,8 +3164,74 @@ enum i40e_status_code i40e_aq_get_veb_parameters(struct i40e_hw *hw,
  *
  * Add MAC/VLAN addresses to the HW filtering
  **/
-enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
-			struct i40e_aqc_add_macvlan_element_data *mv_list,
+enum i40e_status_code
+i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
+		    struct i40e_aqc_add_macvlan_element_data *mv_list,
+		    u16 count, struct i40e_asq_cmd_details *cmd_details)
+{
+	struct i40e_aq_desc desc;
+	enum i40e_status_code status;
+	u16 buf_size;
+
+	if (count == 0 || !mv_list || !hw)
+		return I40E_ERR_PARAM;
+
+	buf_size = i40e_prepare_add_macvlan(mv_list, &desc, count, seid);
+
+	status = i40e_asq_send_command(hw, &desc, mv_list, buf_size,
+				       cmd_details);
+
+	return status;
+}
+
+/**
+ * i40e_aq_add_macvlan_v2
+ * @hw: pointer to the hw struct
+ * @seid: VSI for the mac address
+ * @mv_list: list of macvlans to be added
+ * @count: length of the list
+ * @cmd_details: pointer to command details structure or NULL
+ * @aq_status: pointer to Admin Queue status return value
+ *
+ * Add MAC/VLAN addresses to the HW filtering.
+ * The _v2 version returns the last Admin Queue status in aq_status
+ * to avoid race conditions in access to hw->aq.asq_last_status.
+ * It also calls _v2 versions of asq_send_command functions to
+ * get the aq_status on the stack.
+ **/
+enum i40e_status_code
+i40e_aq_add_macvlan_v2(struct i40e_hw *hw, u16 seid,
+		       struct i40e_aqc_add_macvlan_element_data *mv_list,
+		       u16 count, struct i40e_asq_cmd_details *cmd_details,
+		       enum i40e_admin_queue_err *aq_status)
+{
+	struct i40e_aq_desc desc;
+	enum i40e_status_code status;
+	u16 buf_size;
+
+	if (count == 0 || !mv_list || !hw)
+		return I40E_ERR_PARAM;
+
+	buf_size = i40e_prepare_add_macvlan(mv_list, &desc, count, seid);
+
+	status = i40e_asq_send_command_v2(hw, &desc, mv_list, buf_size,
+					  cmd_details, aq_status);
+
+	return status;
+}
+
+/**
+ * i40e_aq_remove_macvlan
+ * @hw: pointer to the hw struct
+ * @seid: VSI for the mac address
+ * @mv_list: list of macvlans to be removed
+ * @count: length of the list
+ * @cmd_details: pointer to command details structure or NULL
+ *
+ * Remove MAC/VLAN addresses from the HW filtering
+ **/
+enum i40e_status_code i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 seid,
+			struct i40e_aqc_remove_macvlan_element_data *mv_list,
 			u16 count, struct i40e_asq_cmd_details *cmd_details)
 {
 	struct i40e_aq_desc desc;
@@ -3133,7 +3239,6 @@ enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
 		(struct i40e_aqc_macvlan *)&desc.params.raw;
 	enum i40e_status_code status;
 	u16 buf_size;
-	int i;
 
 	if (count == 0 || !mv_list || !hw)
 		return I40E_ERR_PARAM;
@@ -3141,17 +3246,12 @@ enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
 	buf_size = count * sizeof(*mv_list);
 
 	/* prep the rest of the request */
-	i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_add_macvlan);
+	i40e_fill_default_direct_cmd_desc(&desc, i40e_aqc_opc_remove_macvlan);
 	cmd->num_addresses = CPU_TO_LE16(count);
 	cmd->seid[0] = CPU_TO_LE16(I40E_AQC_MACVLAN_CMD_SEID_VALID | seid);
 	cmd->seid[1] = 0;
 	cmd->seid[2] = 0;
 
-	for (i = 0; i < count; i++)
-		if (I40E_IS_MULTICAST(mv_list[i].mac_addr))
-			mv_list[i].flags |=
-			    CPU_TO_LE16(I40E_AQC_MACVLAN_ADD_USE_SHARED_MAC);
-
 	desc.flags |= CPU_TO_LE16((u16)(I40E_AQ_FLAG_BUF | I40E_AQ_FLAG_RD));
 	if (buf_size > I40E_AQ_LARGE_BUF)
 		desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB);
@@ -3163,18 +3263,25 @@ enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 seid,
 }
 
 /**
- * i40e_aq_remove_macvlan
+ * i40e_aq_remove_macvlan_v2
  * @hw: pointer to the hw struct
  * @seid: VSI for the mac address
  * @mv_list: list of macvlans to be removed
  * @count: length of the list
  * @cmd_details: pointer to command details structure or NULL
+ * @aq_status: pointer to Admin Queue status return value
  *
- * Remove MAC/VLAN addresses from the HW filtering
+ * Remove MAC/VLAN addresses from the HW filtering.
+ * The _v2 version returns the last Admin Queue status in aq_status
+ * to avoid race conditions in access to hw->aq.asq_last_status.
+ * It also calls _v2 versions of asq_send_command functions to
+ * get the aq_status on the stack.
  **/
-enum i40e_status_code i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 seid,
-			struct i40e_aqc_remove_macvlan_element_data *mv_list,
-			u16 count, struct i40e_asq_cmd_details *cmd_details)
+enum i40e_status_code
+i40e_aq_remove_macvlan_v2(struct i40e_hw *hw, u16 seid,
+			  struct i40e_aqc_remove_macvlan_element_data *mv_list,
+			  u16 count, struct i40e_asq_cmd_details *cmd_details,
+			  enum i40e_admin_queue_err *aq_status)
 {
 	struct i40e_aq_desc desc;
 	struct i40e_aqc_macvlan *cmd =
@@ -3198,8 +3305,8 @@ enum i40e_status_code i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 seid,
 	if (buf_size > I40E_AQ_LARGE_BUF)
 		desc.flags |= CPU_TO_LE16((u16)I40E_AQ_FLAG_LB);
 
-	status = i40e_asq_send_command(hw, &desc, mv_list, buf_size,
-				       cmd_details);
+	status = i40e_asq_send_command_v2(hw, &desc, mv_list, buf_size,
+					  cmd_details, aq_status);
 
 	return status;
 }
diff --git a/drivers/net/i40e/base/i40e_prototype.h b/drivers/net/i40e/base/i40e_prototype.h
index 124222e476..29c86c7fe8 100644
--- a/drivers/net/i40e/base/i40e_prototype.h
+++ b/drivers/net/i40e/base/i40e_prototype.h
@@ -38,6 +38,13 @@ enum i40e_status_code i40e_asq_send_command(struct i40e_hw *hw,
 				void *buff, /* can be NULL */
 				u16  buff_size,
 				struct i40e_asq_cmd_details *cmd_details);
+enum i40e_status_code
+i40e_asq_send_command_v2(struct i40e_hw *hw,
+			 struct i40e_aq_desc *desc,
+			 void *buff, /* can be NULL */
+			 u16  buff_size,
+			 struct i40e_asq_cmd_details *cmd_details,
+			 enum i40e_admin_queue_err *aq_status);
 #ifdef VF_DRIVER
 bool i40e_asq_done(struct i40e_hw *hw);
 #endif
@@ -188,9 +195,19 @@ enum i40e_status_code i40e_aq_get_veb_parameters(struct i40e_hw *hw,
 enum i40e_status_code i40e_aq_add_macvlan(struct i40e_hw *hw, u16 vsi_id,
 			struct i40e_aqc_add_macvlan_element_data *mv_list,
 			u16 count, struct i40e_asq_cmd_details *cmd_details);
+enum i40e_status_code
+i40e_aq_add_macvlan_v2(struct i40e_hw *hw, u16 seid,
+		       struct i40e_aqc_add_macvlan_element_data *mv_list,
+		       u16 count, struct i40e_asq_cmd_details *cmd_details,
+		       enum i40e_admin_queue_err *aq_status);
 enum i40e_status_code i40e_aq_remove_macvlan(struct i40e_hw *hw, u16 vsi_id,
 			struct i40e_aqc_remove_macvlan_element_data *mv_list,
 			u16 count, struct i40e_asq_cmd_details *cmd_details);
+enum i40e_status_code
+i40e_aq_remove_macvlan_v2(struct i40e_hw *hw, u16 seid,
+			  struct i40e_aqc_remove_macvlan_element_data *mv_list,
+			  u16 count, struct i40e_asq_cmd_details *cmd_details,
+			  enum i40e_admin_queue_err *aq_status);
 enum i40e_status_code i40e_aq_add_mirrorrule(struct i40e_hw *hw, u16 sw_seid,
 			u16 rule_type, u16 dest_vsi, u16 count, __le16 *mr_list,
 			struct i40e_asq_cmd_details *cmd_details,
-- 
2.25.1


  reply	other threads:[~2021-09-06  2:15 UTC|newest]

Thread overview: 122+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-18  6:38 [dpdk-dev] [PATCH 00/14] i40e base code update Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 01/14] net/i40e/base: add new versions of send ASQ command functions Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 02/14] net/i40e/base: update FVL FW API version to 1.14 Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 03/14] net/i40e/base: add support for Min Rollback Revision for 4 more FPK modules Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 04/14] net/i40e/base: set TSA table values when parsing CEE configuration Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 05/14] net/i40e/base: define new Shadow RAM pointers Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 06/14] net/i40e/base: fix PHY type identifiers for 2.5G and 5G adapters Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 07/14] net/i40e/base: fix PF reset failed Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 08/14] net/i40e/base: fix update link data for X722 Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 09/14] net/i40e/base: fix AOC media type reported by ethtool Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 10/14] net/i40e/base: add flags and fields for double vlan processing Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 11/14] net/i40e/base: 10GBASE-ER Optical modules recognition Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 12/14] net/i40e/base: fix headers to match functions Robin Zhang
2021-06-18  6:38 ` [dpdk-dev] [PATCH 13/14] net/i40e/base: fix potentially uninitialized variables in NVM code Robin Zhang
2021-06-21  6:52   ` Xing, Beilei
2021-06-18  6:38 ` [dpdk-dev] [PATCH 14/14] net/i40e/base: update version in readme Robin Zhang
2021-06-21  6:36 ` [dpdk-dev] [PATCH v2 00/14] i40e base code update Robin Zhang
2021-06-21  6:36   ` [dpdk-dev] [PATCH v2 01/14] net/i40e/base: add new versions of send ASQ command functions Robin Zhang
2021-06-21  6:36   ` [dpdk-dev] [PATCH v2 02/14] net/i40e/base: update FW API version to 1.14 Robin Zhang
2021-06-21  6:36   ` [dpdk-dev] [PATCH v2 03/14] net/i40e/base: add support for Min Rollback Revision for 4 more X722 modules Robin Zhang
2021-06-21  6:36   ` [dpdk-dev] [PATCH v2 04/14] net/i40e/base: set TSA table values when parsing CEE configuration Robin Zhang
2021-06-21  6:36   ` [dpdk-dev] [PATCH v2 05/14] net/i40e/base: define new Shadow RAM pointers Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 06/14] net/i40e/base: fix PHY type identifiers for 2.5G and 5G adapters Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 07/14] net/i40e/base: fix PF reset failed Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 08/14] net/i40e/base: fix update link data for X722 Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 09/14] net/i40e/base: fix AOC media type reported by ethtool Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 10/14] net/i40e/base: add flags and fields for double vlan processing Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 11/14] net/i40e/base: 10GBASE-ER Optical modules recognition Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 12/14] net/i40e/base: fix headers to match functions Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 13/14] net/i40e/base: fix potentially uninitialized variables in NVM code Robin Zhang
2021-06-21  6:37   ` [dpdk-dev] [PATCH v2 14/14] net/i40e/base: update version in readme Robin Zhang
2021-06-21  7:51 ` [dpdk-dev] [PATCH v3 00/15] i40e base code update Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 01/15] net/i40e/base: add new versions of send ASQ command functions Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 02/15] net/i40e/base: update X710 FW API version to 1.14 Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 03/15] net/i40e/base: add support for Min Rollback Revision for 4 more X722 modules Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 04/15] net/i40e/base: set TSA table values when parsing CEE configuration Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 05/15] net/i40e/base: define new Shadow RAM pointers Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 06/15] net/i40e/base: fix PHY type identifiers for 2.5G and 5G adapters Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 07/15] net/i40e/base: fix PF reset failed Robin Zhang
2021-06-21  7:51   ` [dpdk-dev] [PATCH v3 08/15] net/i40e/base: fix update link data for X722 Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 09/15] net/i40e/base: fix AOC media type reported by ethtool Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 10/15] net/i40e/base: add flags and fields for double vlan processing Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 11/15] net/i40e/base: 10GBASE-ER Optical modules recognition Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 12/15] net/i40e/base: fix headers to match functions Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 13/15] net/i40e/base: fix potentially uninitialized variables in NVM code Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 14/15] net/i40e/base: fix checksum is used before return value is checked Robin Zhang
2021-06-21  7:52   ` [dpdk-dev] [PATCH v3 15/15] net/i40e/base: update version in readme Robin Zhang
2021-09-06  2:02 ` [dpdk-dev] [PATCH v4 00/18] i40e base code update Robin Zhang
2021-09-06  2:02   ` Robin Zhang [this message]
2021-09-29 16:21     ` [dpdk-dev] [PATCH v4 01/18] net/i40e/base: add new versions of send ASQ command functions Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 02/18] net/i40e/base: add support for Min Rollback Revision for 4 more X722 modules Robin Zhang
2021-09-29 16:21     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 03/18] net/i40e/base: set TSA table values when parsing CEE configuration Robin Zhang
2021-09-29 16:21     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 04/18] net/i40e/base: define new Shadow RAM pointers Robin Zhang
2021-09-29 16:21     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 05/18] net/i40e/base: fix PHY type identifiers for 2.5G and 5G adapters Robin Zhang
2021-09-29 16:21     ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 06/18] net/i40e/base: fix PF reset failed Robin Zhang
2021-09-29 16:21     ` [dpdk-dev] [dpdk-stable] " Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 07/18] net/i40e/base: fix update link data for X722 Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 08/18] net/i40e/base: fix AOC media type reported by ethtool Robin Zhang
2021-09-29 16:21     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 09/18] net/i40e/base: add flags and fields for double vlan processing Robin Zhang
2021-09-29 16:22     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 10/18] net/i40e/base: fix headers to match functions Robin Zhang
2021-09-29 15:59     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 11/18] net/i40e/base: fix potentially uninitialized variables in NVM code Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 12/18] net/i40e/base: fix checksum is used before return value is checked Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 13/18] net/i40e/base: add defs for MAC frequency calculation if no link Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 14/18] net/i40e/base: separate kernel allocated rx_bi rings from AF_XDP rings Robin Zhang
2021-09-29 16:22     ` Ferruh Yigit
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 15/18] net/i40e/base: Update FVL FW API version to 1.15 Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 16/18] net/i40e/base: add defines related to DDP Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 17/18] net/i40e/base: update version in readme Robin Zhang
2021-09-06  2:02   ` [dpdk-dev] [PATCH v4 18/18] net/i40e: fix redefinition warning Robin Zhang
2021-09-27  9:17     ` Xing, Beilei
2021-09-27  9:30       ` Zhang, RobinX
2021-09-27 10:37         ` Kevin Traynor
2021-09-27 11:00           ` Zhang, Qi Z
2021-09-27  9:41   ` [dpdk-dev] [PATCH v4 00/18] i40e base code update Xing, Beilei
2021-09-27 12:09     ` Zhang, Qi Z
2021-09-29 16:21   ` Ferruh Yigit
2021-10-09  1:26 ` [dpdk-dev] [PATCH v5 00/17] " Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 01/17] net/i40e/base: add v2 version of send ASQ command functions Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 02/17] net/i40e/base: add Min SRev for 4 more X722 modules Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 03/17] net/i40e/base: set TSA table values when parsing CEE config Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 04/17] net/i40e/base: define new shadow RAM pointers Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 05/17] net/i40e/base: fix PHY identifiers for 2.5G and 5G adapters Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 06/17] net/i40e/base: fix PF reset Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 07/17] net/i40e/base: fix update link data for X722 Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 08/17] net/i40e/base: fix AOC media type Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 09/17] net/i40e/base: add flags and fields for double VLAN Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 10/17] net/i40e/base: fix headers to match functions Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 11/17] net/i40e/base: fix potentially uninitialized variables Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 12/17] net/i40e/base: fix checksum is used incorrectly Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 13/17] net/i40e/base: add calculation of MAC frequency if no link Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 14/17] net/i40e/base: separate kernel allocated Rx bi rings Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 15/17] net/i40e/base: update FVL FW API version to 1.15 Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 16/17] net/i40e/base: add defines related to DDP Robin Zhang
2021-10-09  1:26   ` [dpdk-dev] [PATCH v5 17/17] net/i40e/base: update version in readme Robin Zhang
2021-10-09  1:39 ` [dpdk-dev] [PATCH v6 00/17] i40e base code update Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 01/17] net/i40e/base: add v2 version of send ASQ command functions Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 02/17] net/i40e/base: add Min SRev for 4 more X722 modules Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 03/17] net/i40e/base: set TSA table values when parsing CEE config Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 04/17] net/i40e/base: define new shadow RAM pointers Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 05/17] net/i40e/base: fix PHY identifiers for 2.5G and 5G adapters Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 06/17] net/i40e/base: fix PF reset Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 07/17] net/i40e/base: fix update link data for X722 Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 08/17] net/i40e/base: fix AOC media type Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 09/17] net/i40e/base: add flags and fields for double VLAN Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 10/17] net/i40e/base: fix headers to match functions Robin Zhang
2021-10-09  5:36     ` Zhang, Qi Z
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 11/17] net/i40e/base: fix potentially uninitialized variables Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 12/17] net/i40e/base: fix checksum is used incorrectly Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 13/17] net/i40e/base: add calculation of MAC frequency if no link Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 14/17] net/i40e/base: separate kernel allocated Rx bi rings Robin Zhang
2021-10-09  5:39     ` Zhang, Qi Z
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 15/17] net/i40e/base: update FVL FW API version to 1.15 Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 16/17] net/i40e/base: add defines related to DDP Robin Zhang
2021-10-09  1:39   ` [dpdk-dev] [PATCH v6 17/17] net/i40e/base: update version in readme Robin Zhang
2021-10-09  5:41   ` [dpdk-dev] [PATCH v6 00/17] i40e base code update Zhang, Qi Z

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=20210906020258.1291688-2-robinx.zhang@intel.com \
    --to=robinx.zhang@intel.com \
    --cc=andrey.chilikin@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=cunming.liang@intel.com \
    --cc=dev@dpdk.org \
    --cc=echaudro@redhat.com \
    --cc=helin.zhang@intel.com \
    --cc=heqing.zhu@intel.com \
    --cc=jijiang.liu@intel.com \
    --cc=jing.d.chen@intel.com \
    --cc=jingjing.wu@intel.com \
    --cc=junfeng.guo@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=remy.horton@intel.com \
    --cc=roy.fan.zhang@intel.com \
    --cc=stevex.yang@intel.com \
    --cc=sylwesterx.dziedziuch@intel.com \
    --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.