[05/12] net/ice/base: flexbytes should match on header data
diff mbox series

Message ID 20191205123847.39579-6-qi.z.zhang@intel.com
State Superseded, archived
Delegated to: xiaolong ye
Headers show
Series
  • base code update
Related show

Checks

Context Check Description
ci/Intel-compilation success Compilation OK
ci/checkpatch success coding style OK

Commit Message

Qi Zhang Dec. 5, 2019, 12:38 p.m. UTC
Change the extraction sequence generated by flow director flexbytes to
use package mac protocol. Without this change data in packet headers
cannot be used for flexbyte matching. The old extraction for flex bytes
started at the beginning of the payload which is after the header.

Signed-off-by: Henry Tieman <henry.w.tieman@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
---
 drivers/net/ice/base/ice_flow.c | 17 ++++-------------
 drivers/net/ice/base/ice_flow.h |  2 +-
 2 files changed, 5 insertions(+), 14 deletions(-)

Patch
diff mbox series

diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index 391df1b54..eaa7a3b96 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -868,20 +868,11 @@  ice_flow_xtract_raws(struct ice_hw *hw, struct ice_flow_prof_params *params,
 
 		raw = &params->prof->segs[seg].raws[i];
 
-		/* Only support matching raw fields in the payload */
-		if (raw->off < hdrs_sz)
-			return ICE_ERR_PARAM;
-
-		/* Convert the segment-relative offset into payload-relative
-		 * offset.
-		 */
-		off = raw->off - hdrs_sz;
-
 		/* Storing extraction information */
-		raw->info.xtrct.prot_id = ICE_PROT_PAY;
-		raw->info.xtrct.off = (off / ICE_FLOW_FV_EXTRACT_SZ) *
+		raw->info.xtrct.prot_id = ICE_PROT_MAC_OF_OR_S;
+		raw->info.xtrct.off = (raw->off / ICE_FLOW_FV_EXTRACT_SZ) *
 			ICE_FLOW_FV_EXTRACT_SZ;
-		raw->info.xtrct.disp = (off % ICE_FLOW_FV_EXTRACT_SZ) *
+		raw->info.xtrct.disp = (raw->off % ICE_FLOW_FV_EXTRACT_SZ) *
 			BITS_PER_BYTE;
 		raw->info.xtrct.idx = params->es_cnt;
 
@@ -909,7 +900,7 @@  ice_flow_xtract_raws(struct ice_hw *hw, struct ice_flow_prof_params *params,
 			else
 				idx = params->es_cnt;
 
-			params->es[idx].prot_id = ICE_PROT_PAY;
+			params->es[idx].prot_id = raw->info.xtrct.prot_id;
 			params->es[idx].off = off;
 			params->es_cnt++;
 			off += ICE_FLOW_FV_EXTRACT_SZ;
diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h
index 4686274af..d7b10ccc3 100644
--- a/drivers/net/ice/base/ice_flow.h
+++ b/drivers/net/ice/base/ice_flow.h
@@ -282,8 +282,8 @@  struct ice_flow_fld_info {
 };
 
 struct ice_flow_seg_fld_raw {
-	int off;	/* Offset from the start of the segment */
 	struct ice_flow_fld_info info;
+	u16 off;	/* Offset from the start of the segment */
 };
 
 struct ice_flow_seg_info {