numam-dpdk/drivers/net
Chengchang Tang b4e4d7ac9f net/hns3: support setting VF PVID by PF driver
This patch adds support setting VF PVID by hns3 PF kernel ethdev driver
on the host by "ip link set <eth num> vf <vf id> vlan <vlan tag>"
command.

Because of the hardware constraints, the striped VLAN tag will always in
Rx descriptors which should has been dropped when PVID is enabled and
the PVID will overwrite the outer VLAN tag in Tx descriptor. So, hns3
PMD driver need to change the processing of VLAN tags in the process of
Tx and Rx according to whether PVID is enabled.
1) If the hns3 PF kernel ethdev driver sets the PVID for VF device
   before the initialization of the related VF device, hns3 VF PMD
   driver should get the PVID state from PF driver through mailbox and
   update the related state in txq and rxq maintained by hns3 VF driver
   to change the process of Tx and Rx.
2) If the hns3 PF kernel ethdev driver sets the PVID for VF device after
   initialization of the related VF device, the PF driver will notify VF
   driver to update the PVID state. The VF driver will update the PVID
   configuration state immediately to ensure that the VLAN process in Tx
   and Rx is correct. But in the window period of this state transition,
   packets loss or packets with wrong VLAN may occur.
3) Due to hardware limitations, we only support two-layer VLAN hardware
   offload in Tx direction based on hns3 network engine, so when PVID is
   enabled, QinQ insert is no longer supported. And when PVID is
   enabled, in the following two cases:
     i) packets with more than two VLAN tags.
     ii) packets with one VLAN tag while the hardware VLAN insert is
         enabled.
   The packets will be regarded as abnormal packets and discarded by
   hardware in Tx direction. For debugging purposes, a validation check
   for these types of packets is added to the '.tx_pkt_prepare' ops
   implementation function named hns3_prep_pkts to inform users that
   these packets will be discarded.

Signed-off-by: Chengchang Tang <tangchengchang@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
2020-07-07 23:38:26 +02:00
..
af_packet log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
af_xdp log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
ark log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
atlantic log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
avp log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
axgbe log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
bnx2x log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
bnxt log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
bonding log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
cxgbe log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
dpaa log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
dpaa2 drivers: drop workaround for internal libraries version 2020-07-07 12:48:59 +02:00
e1000 net/e1000: fix port hotplug for multi-process 2020-05-18 20:35:07 +02:00
ena log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
enetc log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
enic log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
failsafe log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
fm10k log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
hinic log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
hns3 net/hns3: support setting VF PVID by PF driver 2020-07-07 23:38:26 +02:00
i40e log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
iavf net/iavf: fix RSS RETA after restart 2020-07-07 23:38:26 +02:00
ice net/ice/base: update version 2020-07-07 23:38:26 +02:00
igc log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
ionic log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
ipn3ke log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
ixgbe net/ixgbe/base: remove dead code 2020-07-07 23:38:26 +02:00
kni log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
liquidio log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
memif log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
mlx4 log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
mlx5 net/mlx5: add OS specific flow actions operations 2020-07-07 23:38:26 +02:00
mvneta log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
mvpp2 log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
netvsc log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
nfb net/nfb: check array size before access 2020-04-21 13:57:06 +02:00
nfp log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
null log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
octeontx log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
octeontx2 net/octeontx2: fix DMAC filtering 2020-06-30 14:52:30 +02:00
pcap log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
pfe log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
qede log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
ring log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
sfc net/sfc: reap Tx descriptors at least once 2020-06-30 14:52:29 +02:00
softnic log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
szedata2 log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
tap log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
thunderx log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
vdev_netvsc log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
vhost log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
virtio log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
vmxnet3 log: introduce logtype register macro 2020-07-03 15:52:51 +02:00
Makefile net/igc: add skeleton 2020-04-21 13:57:07 +02:00
meson.build bus/pci: introduce Windows support with stubs 2020-06-30 00:02:54 +02:00