> -----Original Message----- > From: Intel-wired-lan <[email protected]> On Behalf Of > Ahmed Zaki > Sent: Monday, May 27, 2024 8:58 PM > To: [email protected] > Cc: [email protected]; Zaki, Ahmed <[email protected]>; Marcin > Szycik <[email protected]>; Nguyen, Anthony L > <[email protected]>; Keller, Jacob E <[email protected]>; Guo, > Junfeng <[email protected]> > Subject: [Intel-wired-lan] [PATCH iwl-next v2 09/13] virtchnl: support raw > packet > in protocol header > > From: Junfeng Guo <[email protected]> > > The patch extends existing virtchnl_proto_hdrs structure to allow VF to pass a > pair of buffers as packet data and mask that describe a match pattern of a > filter > rule. Then the kernel PF driver is requested to parse the pair of buffer and > figure > out low level hardware metadata (ptype, profile, field vector.. ) to program > the > expected FDIR or RSS rules. > > Reviewed-by: Marcin Szycik <[email protected]> > Signed-off-by: Qi Zhang <[email protected]> > Signed-off-by: Junfeng Guo <[email protected]> > Signed-off-by: Ahmed Zaki <[email protected]> > --- > include/linux/avf/virtchnl.h | 12 +++++++++++- > 1 file changed, 11 insertions(+), 1 deletion(-) > > diff --git a/include/linux/avf/virtchnl.h b/include/linux/avf/virtchnl.h index > 8e177b67e82f..4f78a65e33dc 100644 > --- a/include/linux/avf/virtchnl.h > +++ b/include/linux/avf/virtchnl.h > @@ -1121,6 +1121,7 @@ enum virtchnl_vfr_states { }; > > #define VIRTCHNL_MAX_NUM_PROTO_HDRS 32 > +#define VIRTCHNL_MAX_SIZE_RAW_PACKET 1024 > #define PROTO_HDR_SHIFT 5 > #define PROTO_HDR_FIELD_START(proto_hdr_type) ((proto_hdr_type) << > PROTO_HDR_SHIFT) #define PROTO_HDR_FIELD_MASK ((1UL << > PROTO_HDR_SHIFT) - 1) @@ -1266,13 +1267,22 @@ struct virtchnl_proto_hdrs { > u8 pad[3]; > /** > * specify where protocol header start from. > + * must be 0 when sending a raw packet request. > * 0 - from the outer layer > * 1 - from the first inner layer > * 2 - from the second inner layer > * .... > **/ > int count; /* the proto layers must < > VIRTCHNL_MAX_NUM_PROTO_HDRS */ > - struct virtchnl_proto_hdr > proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS]; > + union { > + struct virtchnl_proto_hdr > + proto_hdr[VIRTCHNL_MAX_NUM_PROTO_HDRS]; > + struct { > + u16 pkt_len; > + u8 spec[VIRTCHNL_MAX_SIZE_RAW_PACKET]; > + u8 mask[VIRTCHNL_MAX_SIZE_RAW_PACKET]; > + } raw; > + }; > }; > > VIRTCHNL_CHECK_STRUCT_LEN(2312, virtchnl_proto_hdrs); > -- > 2.43.0
Tested-by: Rafal Romanowski <[email protected]>
