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 >