mbuf: add new Rx flags for stripped VLAN
authorOlivier Matz <olivier.matz@6wind.com>
Wed, 15 Jun 2016 11:48:07 +0000 (13:48 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Wed, 15 Jun 2016 15:18:57 +0000 (17:18 +0200)
commitb37b528d957c3c37744c430838faa93fb458b206
tree26d482ac7f374b04fe037d5de29ad06c745218e3
parent32ebe1e0c4d2f10342fc4d2a382f7a9e5c3240b8
mbuf: add new Rx flags for stripped VLAN

The behavior of PKT_RX_VLAN_PKT was not very well defined, resulting in
PMDs not advertising the same flags in similar conditions.

Following discussion in [1], introduce 2 new flags PKT_RX_VLAN_STRIPPED
and PKT_RX_QINQ_STRIPPED that are better defined:

  PKT_RX_VLAN_STRIPPED: a vlan has been stripped by the hardware and its
  tci is saved in mbuf->vlan_tci. This can only happen if vlan stripping
  is enabled in the RX configuration of the PMD.

For now, the old flag PKT_RX_VLAN_PKT is kept but marked as deprecated.
It should be removed from applications and PMDs in a future revision.

This patch also updates the drivers. For PKT_RX_VLAN_PKT:

- e1000, enic, i40e, mlx5, nfp, vmxnet3: done, PKT_RX_VLAN_PKT already
  had the same meaning than PKT_RX_VLAN_STRIPPED, minor update is
  required.
- fm10k: done, PKT_RX_VLAN_PKT already had the same meaning than
  PKT_RX_VLAN_STRIPPED, and vlan stripping is always enabled on fm10k.
- ixgbe: modification done (vector and normal), the old flag was set
  when a vlan was recognized, even if vlan stripping was disabled.
- the other drivers do not support vlan stripping.

For PKT_RX_QINQ_PKT, it was only supported on i40e, and the behavior was
already correct, so we can reuse the same bit value for
PKT_RX_QINQ_STRIPPED.

[1] http://dpdk.org/ml/archives/dev/2016-April/037837.html,

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
16 files changed:
app/test-pmd/rxonly.c
doc/guides/rel_notes/deprecation.rst
drivers/net/e1000/em_rxtx.c
drivers/net/e1000/igb_rxtx.c
drivers/net/enic/enic_rx.c
drivers/net/i40e/i40e_rxtx.c
drivers/net/i40e/i40e_rxtx_vec.c
drivers/net/ixgbe/ixgbe_ethdev.c
drivers/net/ixgbe/ixgbe_rxtx.c
drivers/net/ixgbe/ixgbe_rxtx.h
drivers/net/ixgbe/ixgbe_rxtx_vec.c
drivers/net/mlx5/mlx5_rxtx.c
drivers/net/nfp/nfp_net.c
drivers/net/vmxnet3/vmxnet3_rxtx.c
lib/librte_mbuf/rte_mbuf.c
lib/librte_mbuf/rte_mbuf.h