DPDK patches and discussions
 help / color / mirror / Atom feed
From: Qi Zhang <qi.z.zhang@intel.com>
To: wenzhuo.lu@intel.com, qiming.yang@intel.com
Cc: dev@dpdk.org, xiaolong.ye@intel.com,
	Qi Zhang <qi.z.zhang@intel.com>,
	Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Subject: [dpdk-dev] [PATCH v4 17/30] net/ice/base: enable symmetric hash for RSS
Date: Mon, 23 Sep 2019 14:26:48 +0800	[thread overview]
Message-ID: <20190923062702.3836-18-qi.z.zhang@intel.com> (raw)
In-Reply-To: <20190923062702.3836-1-qi.z.zhang@intel.com>

Add parameter "symm" to rss configuration APIs.
When symm is 1, Symmetric Teoplitz Hash can be enabled by
configuring GLQF_HSYMM properly.

NOTE:
Symmetric Teoplitz hash will work only if hash schema of
VSIQF_HASH_CTL be configured to 01b and it is assumed be enabled
in PMD.

Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
---
 drivers/net/ice/base/ice_flow.c | 149 +++++++++++++++++++++++++++++++++++++---
 drivers/net/ice/base/ice_flow.h |   5 +-
 drivers/net/ice/ice_ethdev.c    |  16 ++---
 3 files changed, 150 insertions(+), 20 deletions(-)

diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index d91922527..e0e4fcab6 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -1876,6 +1876,7 @@ ice_add_rss_list(struct ice_hw *hw, u16 vsi_handle, struct ice_flow_prof *prof)
 
 	rss_cfg->hashed_flds = prof->segs[prof->segs_cnt - 1].match;
 	rss_cfg->packet_hdr = prof->segs[prof->segs_cnt - 1].hdrs;
+	rss_cfg->symm = prof->cfg.symm;
 	ice_set_bit(vsi_handle, rss_cfg->vsis);
 
 	LIST_ADD_TAIL(&rss_cfg->l_entry, &hw->rss_list_head);
@@ -1903,6 +1904,107 @@ ice_add_rss_list(struct ice_hw *hw, u16 vsi_handle, struct ice_flow_prof *prof)
 	      (((u64)(hdr) << ICE_FLOW_PROF_HDR_S) & ICE_FLOW_PROF_HDR_M) | \
 	      ((u8)((segs_cnt) - 1) ? ICE_FLOW_PROF_ENCAP_M : 0))
 
+static void
+ice_rss_config_xor_word(struct ice_hw *hw, u8 prof_id, u8 src, u8 dst)
+{
+	u32 s = ((src % 4) << 3); /* byte shift */
+	u32 v = dst | 0x80; /* value to program */
+	u8 i = src / 4; /* register index */
+	u32 reg;
+
+	reg = rd32(hw, GLQF_HSYMM(prof_id, i));
+	reg = (reg & ~(0xff << s)) | (v << s);
+	wr32(hw, GLQF_HSYMM(prof_id, i), reg);
+}
+
+static void
+ice_rss_config_xor(struct ice_hw *hw, u8 prof_id, u8 src, u8 dst, u8 len)
+{
+	int fv_last_word =
+		ICE_FLOW_SW_FIELD_VECTOR_MAX / ICE_FLOW_FV_EXTRACT_SZ - 1;
+	int i;
+
+	for (i = 0; i < len; i++) {
+		ice_rss_config_xor_word(hw, prof_id,
+					/* Yes, field vector in GLQF_HSYMM and
+					 * GLQF_HINSET is inversed!
+					 */
+					fv_last_word - (src + i),
+					fv_last_word - (dst + i));
+		ice_rss_config_xor_word(hw, prof_id,
+					fv_last_word - (dst + i),
+					fv_last_word - (src + i));
+	}
+}
+
+static void
+ice_rss_update_symm(struct ice_hw *hw,
+		    struct ice_flow_prof *prof)
+{
+	struct ice_prof_map *map;
+	u8 prof_id, m;
+
+	map = ice_search_prof_id(hw, ICE_BLK_RSS, prof->id);
+	prof_id = map->prof_id;
+
+	/* clear to default */
+	for (m = 0; m < 6; m++)
+		wr32(hw, GLQF_HSYMM(prof_id, m), 0);
+	if (prof->cfg.symm) {
+		struct ice_flow_seg_info *seg =
+			&prof->segs[prof->segs_cnt - 1];
+
+		struct ice_flow_seg_xtrct *ipv4_src =
+			&seg->fields[ICE_FLOW_FIELD_IDX_IPV4_SA].xtrct;
+		struct ice_flow_seg_xtrct *ipv4_dst =
+			&seg->fields[ICE_FLOW_FIELD_IDX_IPV4_DA].xtrct;
+		struct ice_flow_seg_xtrct *ipv6_src =
+			&seg->fields[ICE_FLOW_FIELD_IDX_IPV6_SA].xtrct;
+		struct ice_flow_seg_xtrct *ipv6_dst =
+			&seg->fields[ICE_FLOW_FIELD_IDX_IPV6_DA].xtrct;
+
+		struct ice_flow_seg_xtrct *tcp_src =
+			&seg->fields[ICE_FLOW_FIELD_IDX_TCP_SRC_PORT].xtrct;
+		struct ice_flow_seg_xtrct *tcp_dst =
+			&seg->fields[ICE_FLOW_FIELD_IDX_TCP_DST_PORT].xtrct;
+
+		struct ice_flow_seg_xtrct *udp_src =
+			&seg->fields[ICE_FLOW_FIELD_IDX_UDP_SRC_PORT].xtrct;
+		struct ice_flow_seg_xtrct *udp_dst =
+			&seg->fields[ICE_FLOW_FIELD_IDX_UDP_DST_PORT].xtrct;
+
+		struct ice_flow_seg_xtrct *sctp_src =
+			&seg->fields[ICE_FLOW_FIELD_IDX_SCTP_SRC_PORT].xtrct;
+		struct ice_flow_seg_xtrct *sctp_dst =
+			&seg->fields[ICE_FLOW_FIELD_IDX_SCTP_DST_PORT].xtrct;
+
+		/* xor IPv4 */
+		if (ipv4_src->prot_id != 0 && ipv4_dst->prot_id != 0)
+			ice_rss_config_xor(hw, prof_id,
+					   ipv4_src->idx, ipv4_dst->idx, 2);
+
+		/* xor IPv6 */
+		if (ipv6_src->prot_id != 0 && ipv6_dst->prot_id != 0)
+			ice_rss_config_xor(hw, prof_id,
+					   ipv6_src->idx, ipv6_dst->idx, 8);
+
+		/* xor TCP */
+		if (tcp_src->prot_id != 0 && tcp_dst->prot_id != 0)
+			ice_rss_config_xor(hw, prof_id,
+					   tcp_src->idx, tcp_dst->idx, 1);
+
+		/* xor UDP */
+		if (udp_src->prot_id != 0 && udp_dst->prot_id != 0)
+			ice_rss_config_xor(hw, prof_id,
+					   udp_src->idx, udp_dst->idx, 1);
+
+		/* xor SCTP */
+		if (sctp_src->prot_id != 0 && sctp_dst->prot_id != 0)
+			ice_rss_config_xor(hw, prof_id,
+					   sctp_src->idx, sctp_dst->idx, 1);
+	}
+}
+
 /**
  * ice_add_rss_cfg_sync - add an RSS configuration
  * @hw: pointer to the hardware structure
@@ -1910,12 +2012,13 @@ ice_add_rss_list(struct ice_hw *hw, u16 vsi_handle, struct ice_flow_prof *prof)
  * @hashed_flds: hash bit fields (ICE_FLOW_HASH_*) to configure
  * @addl_hdrs: protocol header fields
  * @segs_cnt: packet segment count
+ * @symm: symmetric hash enable/disable
  *
  * Assumption: lock has already been acquired for RSS list
  */
 static enum ice_status
 ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
-		     u32 addl_hdrs, u8 segs_cnt)
+		     u32 addl_hdrs, u8 segs_cnt, bool symm)
 {
 	const enum ice_block blk = ICE_BLK_RSS;
 	struct ice_flow_prof *prof = NULL;
@@ -1944,8 +2047,12 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 					vsi_handle,
 					ICE_FLOW_FIND_PROF_CHK_FLDS |
 					ICE_FLOW_FIND_PROF_CHK_VSI);
-	if (prof)
-		goto exit;
+	if (prof) {
+		if (prof->cfg.symm == symm)
+			goto exit;
+		prof->cfg.symm = symm;
+		goto update_symm;
+	}
 
 	/* Check if a flow profile exists with the same protocol headers and
 	 * associated with the input VSI. If so disasscociate the VSI from
@@ -1976,9 +2083,18 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 					vsi_handle,
 					ICE_FLOW_FIND_PROF_CHK_FLDS);
 	if (prof) {
-		status = ice_flow_assoc_prof(hw, blk, prof, vsi_handle);
-		if (!status)
-			status = ice_add_rss_list(hw, vsi_handle, prof);
+		if (prof->cfg.symm == symm) {
+			status = ice_flow_assoc_prof(hw, blk, prof,
+						     vsi_handle);
+			if (!status)
+				status = ice_add_rss_list(hw, vsi_handle,
+							  prof);
+		} else {
+			/* if a profile exist but with different symmetric
+			 * requirement, just return error.
+			 */
+			status = ICE_ERR_NOT_SUPPORTED;
+		}
 		goto exit;
 	}
 
@@ -2004,6 +2120,13 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 
 	status = ice_add_rss_list(hw, vsi_handle, prof);
 
+	prof->cfg.symm = symm;
+	if (!symm)
+		goto exit;
+
+update_symm:
+	ice_rss_update_symm(hw, prof);
+
 exit:
 	ice_free(hw, segs);
 	return status;
@@ -2015,6 +2138,7 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
  * @vsi_handle: software VSI handle
  * @hashed_flds: hash bit fields (ICE_FLOW_HASH_*) to configure
  * @addl_hdrs: protocol header fields
+ * @symm: symmetric hash enable/disable
  *
  * This function will generate a flow profile based on fields associated with
  * the input fields to hash on, the flow type and use the VSI number to add
@@ -2022,7 +2146,7 @@ ice_add_rss_cfg_sync(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
  */
 enum ice_status
 ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
-		u32 addl_hdrs)
+		u32 addl_hdrs, bool symm)
 {
 	enum ice_status status;
 
@@ -2032,10 +2156,11 @@ ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 
 	ice_acquire_lock(&hw->rss_locks);
 	status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds, addl_hdrs,
-				      ICE_RSS_OUTER_HEADERS);
+				      ICE_RSS_OUTER_HEADERS, symm);
 	if (!status)
 		status = ice_add_rss_cfg_sync(hw, vsi_handle, hashed_flds,
-					      addl_hdrs, ICE_RSS_INNER_HEADERS);
+					      addl_hdrs, ICE_RSS_INNER_HEADERS,
+					      symm);
 	ice_release_lock(&hw->rss_locks);
 
 	return status;
@@ -2148,13 +2273,15 @@ enum ice_status ice_replay_rss_cfg(struct ice_hw *hw, u16 vsi_handle)
 			status = ice_add_rss_cfg_sync(hw, vsi_handle,
 						      r->hashed_flds,
 						      r->packet_hdr,
-						      ICE_RSS_OUTER_HEADERS);
+						      ICE_RSS_OUTER_HEADERS,
+						      r->symm);
 			if (status)
 				break;
 			status = ice_add_rss_cfg_sync(hw, vsi_handle,
 						      r->hashed_flds,
 						      r->packet_hdr,
-						      ICE_RSS_INNER_HEADERS);
+						      ICE_RSS_INNER_HEADERS,
+						      r->symm);
 			if (status)
 				break;
 		}
diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h
index 3afd201c4..6f26f3935 100644
--- a/drivers/net/ice/base/ice_flow.h
+++ b/drivers/net/ice/base/ice_flow.h
@@ -315,6 +315,8 @@ struct ice_flow_prof {
 		/* struct sw_recipe */
 		/* struct fd */
 		u32 data;
+		/* Symmetric Hash for RSS */
+		bool symm;
 	} cfg;
 
 	/* Default actions */
@@ -327,6 +329,7 @@ struct ice_rss_cfg {
 	ice_declare_bitmap(vsis, ICE_MAX_VSI);
 	u64 hashed_flds;
 	u32 packet_hdr;
+	bool symm;
 };
 
 enum ice_flow_action_type {
@@ -402,7 +405,7 @@ ice_add_avf_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds);
 enum ice_status ice_rem_vsi_rss_cfg(struct ice_hw *hw, u16 vsi_handle);
 enum ice_status
 ice_add_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
-		u32 addl_hdrs);
+		u32 addl_hdrs, bool symm);
 enum ice_status
 ice_rem_rss_cfg(struct ice_hw *hw, u16 vsi_handle, u64 hashed_flds,
 		u32 addl_hdrs);
diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 63997fdfb..ccd64f49f 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -1790,50 +1790,50 @@ static int ice_init_rss(struct ice_pf *pf)
 
 	/* configure RSS for IPv4 with input set IPv4 src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,
-			      ICE_FLOW_SEG_HDR_IPV4);
+			      ICE_FLOW_SEG_HDR_IPV4, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s IPV4 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for IPv6 with input set IPv6 src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,
-			      ICE_FLOW_SEG_HDR_IPV6);
+			      ICE_FLOW_SEG_HDR_IPV6, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s IPV6 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for tcp6 with input set IPv6 src/dst, TCP src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV6,
-			      ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV6);
+			      ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV6, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s TCP_IPV6 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for udp6 with input set IPv6 src/dst, UDP src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV6,
-			      ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV6);
+			      ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV6, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s UDP_IPV6 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for sctp6 with input set IPv6 src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV6,
-			      ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV6);
+			      ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV6, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s SCTP_IPV6 rss flow fail %d",
 				__func__, ret);
 
 	/* configure RSS for tcp4 with input set IP src/dst, TCP src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_TCP_IPV4,
-			      ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV4);
+			      ICE_FLOW_SEG_HDR_TCP | ICE_FLOW_SEG_HDR_IPV4, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s TCP_IPV4 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for udp4 with input set IP src/dst, UDP src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_HASH_UDP_IPV4,
-			      ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV4);
+			      ICE_FLOW_SEG_HDR_UDP | ICE_FLOW_SEG_HDR_IPV4, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s UDP_IPV4 rss flow fail %d", __func__, ret);
 
 	/* configure RSS for sctp4 with input set IP src/dst */
 	ret = ice_add_rss_cfg(hw, vsi->idx, ICE_FLOW_HASH_IPV4,
-			      ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV4);
+			      ICE_FLOW_SEG_HDR_SCTP | ICE_FLOW_SEG_HDR_IPV4, 0);
 	if (ret)
 		PMD_DRV_LOG(ERR, "%s SCTP_IPV4 rss flow fail %d",
 				__func__, ret);
-- 
2.13.6


  parent reply	other threads:[~2019-09-23  6:26 UTC|newest]

Thread overview: 166+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-02  3:55 [dpdk-dev] [PATCH 0/8] net/ice/base: share code update secend batch Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 1/8] net/ice/base: remove redundant empty lines Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 2/8] net/ice/base: add support for tunnel packets Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 3/8] net/ice/base: add non-word aligned ip field support Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 4/8] net/ice/base: add non-word aligned ipv6 " Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 5/8] net/ice/base: correct the mask for checking protocol header Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 6/8] net/ice/base: propagate errors from functions Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 7/8] net/ice/base: remove pointless NULL check of port info Qi Zhang
2019-09-02  3:55 ` [dpdk-dev] [PATCH 8/8] net/ice/base: remove RSS code as iavf host Qi Zhang
2019-09-05  3:48 ` [dpdk-dev] [PATCH v2 00/16] net/ice/base: share code update secend batch Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 01/16] net/ice/base: remove redundant empty lines Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 02/16] net/ice/base: add support for tunnel packets Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 03/16] net/ice/base: add non-word aligned ip field support Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 04/16] net/ice/base: add non-word aligned ipv6 " Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 05/16] net/ice/base: correct the mask for checking protocol header Qi Zhang
2019-09-05  3:48   ` [dpdk-dev] [PATCH v2 06/16] net/ice/base: propagate errors from functions Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 07/16] net/ice/base: remove pointless NULL check of port info Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 08/16] net/ice/base: remove RSS code as iavf host Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 09/16] net/ice/base: add support for switch rule about VLAN PPPoE Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 10/16] net/ice/base: minor structure refactor Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 11/16] net/ice/base: associate switch recipe to profiles Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 12/16] net/ice/base: enable RSS for PPPoE with SCTP Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 13/16] net/ice/base: enable fdir queue region Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 14/16] net/ice/base: enable setting up FDIR counters Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 15/16] net/ice/base: add dest MAC field support for FDIR Qi Zhang
2019-09-05  3:49   ` [dpdk-dev] [PATCH v2 16/16] net/ice/base: update FW API minor version Qi Zhang
2019-09-05  6:55   ` [dpdk-dev] [PATCH v2 00/16] net/ice/base: share code update secend batch Yang, Qiming
2019-09-07  3:16 ` [dpdk-dev] [PATCH v3 00/22] " Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 01/22] net/ice/base: remove redundant empty lines Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 02/22] net/ice/base: add support for tunnel packets Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 03/22] net/ice/base: add non-word aligned ip field support Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 04/22] net/ice/base: add non-word aligned ipv6 " Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 05/22] net/ice/base: correct the mask for checking protocol header Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 06/22] net/ice/base: propagate errors from functions Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 07/22] net/ice/base: remove pointless NULL check of port info Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 08/22] net/ice/base: remove RSS code as iavf host Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 09/22] net/ice/base: add support for switch rule about VLAN PPPoE Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 10/22] net/ice/base: minor structure refactor Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 11/22] net/ice/base: associate switch recipe to profiles Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 12/22] net/ice/base: enable RSS for PPPoE with SCTP Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 13/22] net/ice/base: enable fdir queue region Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 14/22] net/ice/base: enable setting up FDIR counters Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 15/22] net/ice/base: add dest MAC field support for FDIR Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 16/22] net/ice/base: update FW API minor version Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 17/22] net/ice/base: enable symmetric hash for RSS Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 18/22] net/ice/base: replace alloc-followed-by-copy with memdup Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 19/22] net/ice/base: add FDIR support for GTPU qfi field Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 20/22] net/ice/base: fix the bitmap for TCP in RSS Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 21/22] net/ice/base: fix segment in remove existing RSS rule Qi Zhang
2019-09-07  3:16   ` [dpdk-dev] [PATCH v3 22/22] net/ice/base: remove unused DDP package macros Qi Zhang
2019-09-23  6:26 ` [dpdk-dev] [PATCH v4 00/30] net/ice/base: share code update secend batch Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 01/30] net/ice/base: remove redundant empty lines Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 02/30] net/ice/base: add support for tunnel packets Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 03/30] net/ice/base: add non-word aligned ip field support Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 04/30] net/ice/base: add non-word aligned ipv6 " Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 05/30] net/ice/base: correct the mask for checking protocol header Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 06/30] net/ice/base: propagate errors from functions Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 07/30] net/ice/base: remove pointless NULL check of port info Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 08/30] net/ice/base: remove RSS code as iavf host Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 09/30] net/ice/base: add support for switch rule about VLAN PPPoE Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 10/30] net/ice/base: minor structure refactor Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 11/30] net/ice/base: associate switch recipe to profiles Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 12/30] net/ice/base: enable RSS for PPPoE with SCTP Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 13/30] net/ice/base: enable fdir queue region Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 14/30] net/ice/base: enable setting up FDIR counters Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 15/30] net/ice/base: add dest MAC field support for FDIR Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 16/30] net/ice/base: update FW API minor version Qi Zhang
2019-09-23  6:26   ` Qi Zhang [this message]
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 18/30] net/ice/base: replace alloc-followed-by-copy with memdup Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 19/30] net/ice/base: add FDIR support for GTPU qfi field Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 20/30] net/ice/base: fix the bitmap for TCP in RSS Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 21/30] net/ice/base: fix segment in remove existing RSS rule Qi Zhang
2019-09-23  7:19     ` Yang, Qiming
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 22/30] net/ice/base: remove unused DDP package macros Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 23/30] net/ice/base: search field vector indices for result slots Qi Zhang
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 24/30] net/ice/base: fix 4 byte alignment for pppoe dummy packet Qi Zhang
2019-09-23  7:13     ` Yang, Qiming
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 25/30] net/ice/base: remove unnecessary error log Qi Zhang
2019-09-23  7:11     ` Yang, Qiming
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 26/30] net/ice/base: use bitmap copy where appropriate Qi Zhang
2019-09-23  7:10     ` Yang, Qiming
2019-09-23  6:26   ` [dpdk-dev] [PATCH v4 27/30] net/ice/base: fix alignment isue Qi Zhang
2019-09-23  6:26   ` Qi Zhang
2019-09-23  6:27   ` [dpdk-dev] [PATCH v4 28/30] net/ice/base: fix PTYPE bitmap Qi Zhang
2019-09-23  6:27   ` [dpdk-dev] [PATCH v4 29/30] net/ice/base: add switch support for IPv6 tc field Qi Zhang
2019-09-23  6:27   ` [dpdk-dev] [PATCH v4 30/30] net/ice/base: remove unused code Qi Zhang
2019-09-23  7:44 ` [dpdk-dev] [PATCH v5 00/30] net/ice/base: share code update secend batch Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 01/30] net/ice/base: remove redundant empty lines Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 02/30] net/ice/base: add support for tunnel packets Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 03/30] net/ice/base: add non-word aligned ip field support Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 04/30] net/ice/base: add non-word aligned ipv6 " Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 05/30] net/ice/base: correct the mask for checking protocol header Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 06/30] net/ice/base: propagate errors from functions Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 07/30] net/ice/base: remove pointless NULL check of port info Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 08/30] net/ice/base: remove RSS code as iavf host Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 09/30] net/ice/base: add support for switch rule about VLAN PPPoE Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 10/30] net/ice/base: minor structure refactor Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 11/30] net/ice/base: associate switch recipe to profiles Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 12/30] net/ice/base: enable RSS for PPPoE with SCTP Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 13/30] net/ice/base: enable fdir queue region Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 14/30] net/ice/base: enable setting up FDIR counters Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 15/30] net/ice/base: add dest MAC field support for FDIR Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 16/30] net/ice/base: update FW API minor version Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 17/30] net/ice/base: enable symmetric hash for RSS Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 18/30] net/ice/base: replace alloc-followed-by-copy with memdup Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 19/30] net/ice/base: add FDIR support for GTPU qfi field Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 20/30] net/ice/base: fix the bitmap for TCP in RSS Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 21/30] net/ice/base: fix segment in remove existing RSS rule Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 22/30] net/ice/base: remove unused DDP package macros Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 23/30] net/ice/base: search field vector indices for result slots Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 24/30] net/ice/base: fix 4 bytes alignment for pppoe dummy packet Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 25/30] net/ice/base: remove unnecessary error log Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 26/30] net/ice/base: use bitmap copy where appropriate Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 27/30] net/ice/base: fix alignment isue Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 28/30] net/ice/base: fix PTYPE bitmap Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 29/30] net/ice/base: add switch support for IPv6 tc field Qi Zhang
2019-09-23  7:44   ` [dpdk-dev] [PATCH v5 30/30] net/ice/base: remove unused code Qi Zhang
2019-09-23  9:31   ` [dpdk-dev] [PATCH v5 00/30] net/ice/base: share code update secend batch Yang, Qiming
2019-09-23 22:21     ` Ye Xiaolong
2019-09-27  4:16 ` [dpdk-dev] [PATCH 0/8] net/ice: base code update Qi Zhang
2019-09-27  4:16   ` [dpdk-dev] [PATCH 1/8] net/ice/base: fix for adding PPPoE switch rule Qi Zhang
2019-09-27  5:30     ` Yang, Qiming
2019-09-27  6:18       ` Zhang, Qi Z
2019-09-27  6:01     ` Zhao1, Wei
2019-09-27  4:16   ` [dpdk-dev] [PATCH 2/8] net/ice/base: fix for NVGRE switch rule programming Qi Zhang
2019-09-27  6:01     ` Zhao1, Wei
2019-09-27  4:16   ` [dpdk-dev] [PATCH 3/8] net/ice/base: update flow ptype bitmaps Qi Zhang
2019-09-27  4:16   ` [dpdk-dev] [PATCH 4/8] net/ice/base: add GTPU TEID support for FD Qi Zhang
2019-09-27  4:16   ` [dpdk-dev] [PATCH 5/8] net/ice/base: improvements to Flow Director masking Qi Zhang
2019-09-27  5:27     ` Yang, Qiming
2019-09-27  6:22       ` Zhang, Qi Z
2019-09-27  4:16   ` [dpdk-dev] [PATCH 6/8] net/ice/base: remove dead error condition Qi Zhang
2019-09-27  4:16   ` [dpdk-dev] [PATCH 7/8] net/ice/base: zero initialize structures Qi Zhang
2019-09-27  4:16   ` [dpdk-dev] [PATCH 8/8] net/ice/base: fix unexpected switch rule overwrite Qi Zhang
2019-09-27  6:24   ` [dpdk-dev] [PATCH 0/8] net/ice: base code update Yang, Qiming
2019-10-06  3:13 ` [dpdk-dev] [PATCH v2 00/12] " Qi Zhang
2019-10-06  3:13   ` [dpdk-dev] [PATCH v2 01/12] net/ice/base: fix for adding PPPoE switch rule Qi Zhang
2019-10-06  3:13   ` [dpdk-dev] [PATCH v2 02/12] net/ice/base: fix for NVGRE switch rule programming Qi Zhang
2019-10-06  3:13   ` [dpdk-dev] [PATCH v2 03/12] net/ice/base: update flow ptype bitmaps Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 04/12] net/ice/base: add GTPU TEID support for FD Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 05/12] net/ice/base: improvements to Flow Director masking Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 06/12] net/ice/base: remove dead error condition Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 07/12] net/ice/base: zero initialize structures Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 08/12] net/ice/base: fix unexpected switch rule overwrite Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 09/12] net/ice/base: fix flow raw field vector extraction Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 10/12] net/ice/base: fix switch rule programming for all profiles Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 11/12] net/ice/base: add QFI for Flow Director Qi Zhang
2019-10-06  3:14   ` [dpdk-dev] [PATCH v2 12/12] net/base/ice: improve misc code style Qi Zhang
2019-10-08  1:50 ` [dpdk-dev] [PATCH v3 00/12] net/ice: base code update Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 01/12] net/ice/base: fix for adding PPPoE switch rule Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 02/12] net/ice/base: fix for NVGRE switch rule programming Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 03/12] net/ice/base: update flow ptype bitmaps Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 04/12] net/ice/base: add GTPU TEID support for FD Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 05/12] net/ice/base: improvements to Flow Director masking Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 06/12] net/ice/base: remove dead error condition Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 07/12] net/ice/base: zero initialize structures Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 08/12] net/ice/base: fix unexpected switch rule overwrite Qi Zhang
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 09/12] net/ice/base: fix flow raw field vector extraction Qi Zhang
2019-10-10  3:07     ` Yang, Qiming
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 10/12] net/ice/base: fix switch rule programming for all profiles Qi Zhang
2019-10-10  3:08     ` Yang, Qiming
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 11/12] net/ice/base: add QFI for Flow Director Qi Zhang
2019-10-10  3:09     ` Yang, Qiming
2019-10-08  1:50   ` [dpdk-dev] [PATCH v3 12/12] net/ice/base: improve misc code style Qi Zhang
2019-10-10  3:09     ` Yang, Qiming
2019-10-14  6:02   ` [dpdk-dev] [PATCH v3 00/12] net/ice: base code update Ye Xiaolong

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=20190923062702.3836-18-qi.z.zhang@intel.com \
    --to=qi.z.zhang@intel.com \
    --cc=dev@dpdk.org \
    --cc=paul.m.stillwell.jr@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=wenzhuo.lu@intel.com \
    --cc=xiaolong.ye@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).