Hi, On Tue, 12 Aug 2025, Junlong Wang wrote:
> > 1) If both 'spec' and 'mask' are 'NULL', shouldn't the code set some broader > > match on the sole presence of a Ethernet header? > > 2) If 'mask' is 'NULL' and 'spec' is not (or vice versa), isn't this an error? > >> + break; > >> + case RTE_FLOW_ITEM_TYPE_VLAN: > >> + vlan_spec = item->spec; > >> + vlan_mask = item->mask; > >> + if (vlan_spec && vlan_mask) { > >> + key->vlan_tci = vlan_spec->tci; > >> + key_mask->vlan_tci = vlan_mask->tci; > >> + } > > > > In my opinion, The values of 'spec' and 'mask' will not be null. > > If the user does not set 'spec' and 'mask', the passed-in values will be set to 00 and ff by default, > > which is ensured by the upper-layer interface of dpdk. > Wait a minute.. does this mean that if the user passes, say, ETH / IPV4 / UDP > pattern and the 'spec' and 'mask' of ETH are both 'null', the actual key/mask > values in the HW rule will be, say, for the EtherType, '0000' and 'ffff'? > Is this correct? And which part of DPDK interface envisages that? > Again, may be it's just my misunderstanding. Sorry, I misunderstood and caused you inconvenience. If the user does not set 'spec' and 'mask', we will set 'spec' '0000' and mask 'ffff' write fd table to HW, not set by DPDK interface. If the user set one of 'spec' and 'mask', we will also set 'spec' '0000' and mask 'ffff' write fd table to HW. This is how we handle it.
Understood. But is this the best course of action? Say, what happens if the user passes ETH / IPV4 / UDP pattern items, where 'spec' and 'mask' are 'null' in all the items? Theoretically, the driver could translate this to set the key to have EtherType 0x0800/0xffff and IP protocol to be 0x11/0xff . Or am I wrong? Thank you.