OS package's format is changed, field vector's protocol offset size is
changed from 8 bit to 16 bit. So base code also need to align to this, or
PMD will not be able to load OS package correctly.
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_flex_type.h | 8 +++++++-
drivers/net/ice/base/ice_flow.c | 7 +++++--
drivers/net/ice/base/ice_flow.h | 2 +-
drivers/net/ice/base/ice_protocol_type.h | 2 +-
4 files changed, 14 insertions(+), 5 deletions(-)
@@ -5,12 +5,18 @@
#ifndef _ICE_FLEX_TYPE_H_
#define _ICE_FLEX_TYPE_H_
+#define ICE_FV_OFFSET_INVAL 0x1FF
+
+#pragma pack(1)
/* Extraction Sequence (Field Vector) Table */
struct ice_fv_word {
u8 prot_id;
- u8 off; /* Offset within the protocol header */
+ u16 off; /* Offset within the protocol header */
+ u8 resvrd;
};
+#pragma pack()
+
#define ICE_MAX_FV_WORDS 48
struct ice_fv {
struct ice_fv_word ew[ICE_MAX_FV_WORDS];
@@ -516,7 +516,7 @@ ice_flow_xtract_fld(struct ice_hw *hw, struct ice_flow_prof_params *params,
struct ice_flow_fld_info *flds;
u16 cnt, ese_bits, i;
s16 adj = 0;
- u8 off;
+ u16 off;
flds = params->prof->segs[seg].fields;
@@ -956,7 +956,10 @@ ice_flow_add_prof_sync(struct ice_hw *hw, enum ice_block blk,
return ICE_ERR_NO_MEMORY;
/* initialize extraction sequence to all invalid (0xff) */
- ice_memset(params.es, 0xff, sizeof(params.es), ICE_NONDMA_MEM);
+ for (i = 0; i < ICE_MAX_FV_WORDS; i++) {
+ params.es[i].prot_id = ICE_PROT_INVALID;
+ params.es[i].off = ICE_FV_OFFSET_INVAL;
+ }
params.blk = blk;
params.prof->id = prof_id;
@@ -174,7 +174,7 @@ enum ice_flow_priority {
struct ice_flow_seg_xtrct {
u8 prot_id; /* Protocol ID of extracted header field */
- u8 off; /* Starting offset of the field in header in bytes */
+ u16 off; /* Starting offset of the field in header in bytes */
u8 idx; /* Index of FV entry used */
u8 disp; /* Displacement of field in bits fr. FV entry's start */
};
@@ -223,7 +223,7 @@ struct ice_prot_lkup_ext {
u16 prot_type;
u8 n_val_words;
/* create a buffer to hold max words per recipe */
- u8 field_off[ICE_MAX_CHAIN_WORDS];
+ u16 field_off[ICE_MAX_CHAIN_WORDS];
struct ice_fv_word fv_words[ICE_MAX_CHAIN_WORDS];