Hi > -----Original Message----- > From: Xing, Beilei <beilei.x...@intel.com> > Sent: Tuesday, March 2, 2021 14:54 > To: Li, Xiaoyun <xiaoyun...@intel.com>; dev@dpdk.org; Guo, Jia > <jia....@intel.com>; Finn, Emma <emma.f...@intel.com> > Cc: sta...@dpdk.org > Subject: RE: [PATCH] net/i40e: fix IPv4 fragment offload issue > > > > > -----Original Message----- > > From: Li, Xiaoyun <xiaoyun...@intel.com> > > Sent: Friday, February 26, 2021 4:15 PM > > To: dev@dpdk.org; Xing, Beilei <beilei.x...@intel.com>; Guo, Jia > > <jia....@intel.com>; Finn, Emma <emma.f...@intel.com> > > Cc: Li, Xiaoyun <xiaoyun...@intel.com>; sta...@dpdk.org > > Subject: [PATCH] net/i40e: fix IPv4 fragment offload issue > > > > IPv4 fragment_offset mask was required to be 0 no matter what the spec > > value was. But zero mask means not caring about fragment_offset field > > then both non-frag and frag packets should hit the rule. > > > > But the actual fragment rules should be like the following: > > Only non-fragment packets can hit Rule 1: > > Rule 1: mask=0x3fff, spec=0 > > Only fragment packets can hit rule 2: > > Rule 2: mask=0x3fff, spec=0x8, last=0x2000 > > > > This patch allows the above rules. > > > > Fixes: 42044b69c67d ("net/i40e: support input set selection for FDIR") > > Cc: sta...@dpdk.org > > > > Signed-off-by: Xiaoyun Li <xiaoyun...@intel.com> > > --- > > drivers/net/i40e/i40e_flow.c | 89 > > ++++++++++++++++++++++++++++++++---- > > 1 file changed, 80 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/net/i40e/i40e_flow.c > > b/drivers/net/i40e/i40e_flow.c index > > 4d44282312..86d96d9a11 100644 > > --- a/drivers/net/i40e/i40e_flow.c > > +++ b/drivers/net/i40e/i40e_flow.c > > > > + "Invalid IPv4 " > > + "fragment_offset mask"); > > Needn't split the comments line. > > > + return -rte_errno; > > + } > > + /* > > + * non-frag rule: > > + * mask=0x3fff,sepc=0 > > Typo: sepc->spec > > > + * frag rule: > > + * mask=0x3fff,spec=0x8,last=0x2000 > > + */ > > + if (frag_spec == > > + (1 << RTE_IPV4_HDR_FO_SHIFT) && > > + frag_last == > > RTE_IPV4_HDR_MF_FLAG) { > > + pctype = > > + > > I40E_FILTER_PCTYPE_FRAG_IPV4; > > + } else if (frag_spec || frag_last) { > > + rte_flow_error_set(error, > > + EINVAL, > > + > > RTE_FLOW_ERROR_TYPE_ITEM, > > + item, > > + "Invalid IPv4 " > > + "fragment_offset rule"); > > Same as above. > > > + return -rte_errno; > > + } > > + } else if (frag_spec || frag_last) { > > + rte_flow_error_set(error, > > + EINVAL, > > + > > RTE_FLOW_ERROR_TYPE_ITEM, > > + item, > > + "Invalid fragment_offset"); > > + return -rte_errno; > > + } > > > > if (input_set & (I40E_INSET_DMAC | > > I40E_INSET_SMAC)) { > > if (input_set & (I40E_INSET_IPV4_SRC > > | > > -- > > 2.25.1
Thanks for the review. Will update them in v2. BRs Xiaoyun