#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];
struct ice_flow_fld_info *flds;
u16 cnt, ese_bits, i;
s16 adj = 0;
- u8 off;
+ u16 off;
flds = params->prof->segs[seg].fields;
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;
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 */
};
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];