[dpdk-dev] PKT_RX_VLAN_PKT when VLAN stripping is disabled

Olivier Matz olivier.matz at 6wind.com
Mon Apr 25 15:50:56 CEST 2016


Hi,

On 04/25/2016 02:02 PM, Ananyev, Konstantin wrote:
> Hi John,
> From rte_mbuf.h:
> #define PKT_RX_VLAN_PKT      (1ULL << 0)  /**< RX packet is a 802.1q VLAN packet. */
> So yes, in theory it should be set up for vlan packet with both stripping on/off.
> The problem is that (as far as I know) when VLAN stripping is disabled  FVL RXD doesn't contain information
> does that packet contain a VLAN or not.
> Don't really know what is the best option in that case: keep things as it is or change the meaning of
> the VLAN_PKT flag to indicate is mbuf.vlan_tci field is valid or not.
> Konstantin 

It seems the meaning of the PKT_RX_VLAN_PKT bit depends on the port
configuration:
- if vlan stripping is configured, it means VLAN is present in vlan_tci
  mbuf field
- if not configured, it means a VLAN is present in the packet

I don't think this is a good behavior since the application has to know
the port configuration to properly interpret the meaning of the flag.

I suggest to change the meaning of this flag to: "vlan was stripped by
hardware, and vlan tag is now located in m->vlan_tci".

The same could apply to PKT_RX_QINQ_PKT and m->outer_vlan_tci.

We could add a new packet_type to tell if the mbuf is a VLAN/QinQ is
detected in the packet but not stripped.

Example:

- vlan stripping is disabled

  - vlan packet recvd: flags=0, ptype=RTE_PTYPE_L2_ETHER_VLAN
  - qinq packet recvd: flags=0, ptype=RTE_PTYPE_L2_ETHER_QINQ

- vlan stripping is enabled

  - vlan packet recvd: flags=PKT_RX_VLAN_PKT, ptype=RTE_PTYPE_L2_ETHER,
        m->vlan_tci=id
  - qinq packet recvd: flags=PKT_RX_VLAN_PKT|PKT_RX_QINQ_PKT,
        ptype=RTE_PTYPE_L2_ETHER, m->vlan_tci=id, m->vlan_tci_outer=id


Thoughts?



> 
>> -----Original Message-----
>> From: dev [mailto:dev-bounces at dpdk.org] On Behalf Of John Daley (johndale)
>> Sent: Friday, April 22, 2016 12:37 AM
>> To: dev at dpdk.org
>> Subject: [dpdk-dev] PKT_RX_VLAN_PKT when VLAN stripping is disabled
>>
>> Hi,
>>
>> When VLAN stripping is disabled, X710 and 82599ES act differently for me in this case when receiving VLAN tagged packets. On
>> 82599ES the flag is set but on X710 the flag not set.
>>
>> Do I maybe have old X710 firmware? Or is it not set for X710 on purpose in this case and instead the flag is used to indicate if vlan_tci is
>> valid? Right now the enic pmd does what my X710 does, which I think is incorrect and I want to fix it.
>>
>> Thanks,
>> John
> 


More information about the dev mailing list