summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorQi Zhang <qi.z.zhang@intel.com>2019-03-25 13:44:50 +0800
committerFerruh Yigit <ferruh.yigit@intel.com>2019-03-29 17:25:31 +0100
commit6e1db8a61d1de33e04a2e6d0ea24538e40c5c2de (patch)
tree71c523437ca66d33650b5ce942046437885b51cf /drivers
parent182dda1e8812a9f57984b7f0186487c494e24cbf (diff)
downloaddpdk-next-eventdev-6e1db8a61d1de33e04a2e6d0ea24538e40c5c2de.zip
dpdk-next-eventdev-6e1db8a61d1de33e04a2e6d0ea24538e40c5c2de.tar.gz
dpdk-next-eventdev-6e1db8a61d1de33e04a2e6d0ea24538e40c5c2de.tar.xz
net/ice/base: increase protocol offset size
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> Reviewed-by: Qiming Yang <qiming.yang@intel.com> Reviewed-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/ice/base/ice_flex_type.h8
-rw-r--r--drivers/net/ice/base/ice_flow.c7
-rw-r--r--drivers/net/ice/base/ice_flow.h2
-rw-r--r--drivers/net/ice/base/ice_protocol_type.h2
4 files changed, 14 insertions, 5 deletions
diff --git a/drivers/net/ice/base/ice_flex_type.h b/drivers/net/ice/base/ice_flex_type.h
index 365f333..f259e13 100644
--- a/drivers/net/ice/base/ice_flex_type.h
+++ b/drivers/net/ice/base/ice_flex_type.h
@@ -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];
diff --git a/drivers/net/ice/base/ice_flow.c b/drivers/net/ice/base/ice_flow.c
index 98727cf..be819e0 100644
--- a/drivers/net/ice/base/ice_flow.c
+++ b/drivers/net/ice/base/ice_flow.c
@@ -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;
diff --git a/drivers/net/ice/base/ice_flow.h b/drivers/net/ice/base/ice_flow.h
index bad925c..f0c74a3 100644
--- a/drivers/net/ice/base/ice_flow.h
+++ b/drivers/net/ice/base/ice_flow.h
@@ -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 */
};
diff --git a/drivers/net/ice/base/ice_protocol_type.h b/drivers/net/ice/base/ice_protocol_type.h
index 6b3bd65..e572dd3 100644
--- a/drivers/net/ice/base/ice_protocol_type.h
+++ b/drivers/net/ice/base/ice_protocol_type.h
@@ -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];