numam-dpdk/drivers/net
Viacheslav Ovsiienko dfedf3e3f9 net/mlx5: add workaround for VLAN in virtual machine
On some virtual setups (particularly on ESXi) when we have SR-IOV and
E-Switch enabled there is the problem to receive VLAN traffic on VF
interfaces. The NIC driver in ESXi hypervisor does not setup E-Switch
vport setting correctly and VLAN traffic targeted to VF is dropped.

The patch provides the temporary workaround - if the rule
containing the VLAN pattern is being installed for VF the VLAN
network interface over VF is created, like the command does:

  ip link add link vf.if name mlx5.wa.1.100 type vlan id 100

The PMD in DPDK maintains the database of created VLAN interfaces
for each existing VF and requested VLAN tags. When all of the RTE
Flows using the given VLAN tag are removed the created VLAN interface
with this VLAN tag is deleted.

The name of created VLAN interface follows the format:

  evmlx.d1.d2, where d1 is VF interface ifindex, d2 - VLAN ifindex

Implementation limitations:

- mask in rules is ignored, rule must specify VLAN tags exactly,
  no wildcards (which are implemented by the masks) are allowed

- virtual environment is detected via rte_hypervisor() call,
  and the type of hypervisor is checked. Currently we engage
  the workaround for ESXi and unrecognized hypervisors (which
  always happen on platforms other than x86 - it means workaround
  applied for the Flow over PCI VF). There are no confirmed data
  the other hypervisors (HyperV, Qemu) need this workaround,
  we are trying to reduce the list of configurations on those
  workaround should be applied.

Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
Acked-by: Shahaf Shuler <shahafs@mellanox.com>
2019-08-06 17:42:12 +02:00
..
af_packet net/af_packet: remove unused Rx counter 2019-07-26 15:27:05 +02:00
af_xdp net/af_xdp: remove unused Tx counter 2019-07-26 15:27:05 +02:00
ark net/ark: remove resources when port is close 2019-07-23 14:31:36 +02:00
atlantic drivers/net: use ack in interrupt handlers 2019-07-23 12:00:23 +02:00
avp drivers/net: use ack in interrupt handlers 2019-07-23 12:00:23 +02:00
axgbe drivers/net: use ack in interrupt handlers 2019-07-23 12:00:23 +02:00
bnx2x net/bnx2x: fix fastpath SB allocation for SRIOV 2019-07-23 14:31:34 +02:00
bnxt net/bnxt: fix traffic stall on Rx queue stop/start 2019-08-05 23:33:12 +02:00
bonding net/bonding: use dynamic log type for error message 2019-07-23 14:31:35 +02:00
cxgbe net/cxgbe: remove unnecessary cast 2019-06-13 23:54:29 +09:00
dpaa net/dpaa: fix build with 0 headroom 2019-08-05 19:24:17 +02:00
dpaa2 bus/fslmc: fix build with 0 headroom 2019-08-05 19:24:27 +02:00
e1000 net/e1000: fix PCI config read check 2019-08-06 13:07:54 +02:00
ena net/ena: fix L4 checksum Tx offload 2019-08-05 19:42:02 +02:00
enetc drivers: add reasons for components being disabled 2019-07-02 23:21:11 +02:00
enic net/enic: restore default log level to info 2019-07-29 13:01:01 +02:00
failsafe net/failsafe: skip devargs if not present in secondary 2019-07-23 14:31:35 +02:00
fm10k net/fm10k: fix address of first segment 2019-08-06 13:30:53 +02:00
hinic net/hinic: fix implicit downcast of bitfield 2019-07-23 14:31:35 +02:00
i40e net/i40e: fix address of first segment 2019-08-06 13:30:10 +02:00
iavf net/iavf: fix address of first segment 2019-08-06 13:30:42 +02:00
ice net/ice: fix address of first segment 2019-08-06 13:29:25 +02:00
ifc net/ifc: add devargs pointer check 2019-07-23 14:31:35 +02:00
ipn3ke remove extra blank lines at end of files 2019-08-05 15:19:32 +02:00
ixgbe net/ixgbe: fix address of first segment 2019-08-06 13:28:47 +02:00
kni net/kni: do not count unsent packets as errors 2019-07-26 15:27:05 +02:00
liquidio net: add rte prefix to ether defines 2019-05-24 13:34:45 +02:00
memif net/memif: fix multi-process Tx 2019-08-06 11:26:52 +02:00
mlx4 net/mlx4: fix typo in comment 2019-07-23 14:31:36 +02:00
mlx5 net/mlx5: add workaround for VLAN in virtual machine 2019-08-06 17:42:12 +02:00
mvneta net/mvneta: remove resources when port is closed 2019-07-08 21:26:52 +02:00
mvpp2 net/mvpp2: remove resources when port is closed 2019-08-05 19:26:32 +02:00
netvsc net/netvsc: fix definition of offload values 2019-07-05 01:52:01 +02:00
nfb net/nfb: support timestamp 2019-07-23 14:31:34 +02:00
nfp drivers/net: use ack in interrupt handlers 2019-07-23 12:00:23 +02:00
null net/null: remove unused Tx error counter 2019-07-26 15:27:05 +02:00
octeontx net/octeontx: use driver log type 2019-07-23 14:31:36 +02:00
octeontx2 common/octeontx2: fix mbox memory access 2019-08-05 23:18:27 +02:00
pcap net/pcap: fix concurrent multiseg Tx 2019-07-26 00:32:18 +02:00
qede drivers/net: use ack in interrupt handlers 2019-07-23 12:00:23 +02:00
ring net/ring: do not count unsent packets as errors 2019-07-26 15:27:05 +02:00
sfc net/sfc: unify power of 2 alignment check macro 2019-07-24 21:01:11 +02:00
softnic net/softnic: add config flexibility to TM 2019-07-22 15:41:50 +02:00
szedata2 net/szedata2: support Silicom Mango card 2019-07-03 12:57:30 +02:00
tap net/tap: remove redundant declarations 2019-07-23 14:31:34 +02:00
thunderx net/thunderx: fix crash on detach 2019-08-05 19:03:01 +02:00
vdev_netvsc net/vdev_netvsc: use new ethernet address parser 2019-07-08 21:26:52 +02:00
vhost net/vhost: do not count unsent packets as errors 2019-07-26 15:27:05 +02:00
virtio net/virtio: fix build with 0 headroom 2019-08-05 19:26:49 +02:00
vmxnet3 net/vmxnet3: replace license text with SPDX tag 2019-07-29 13:31:45 +02:00
Makefile net/octeontx2: add build and doc infrastructure 2019-07-05 01:52:01 +02:00
meson.build net/octeontx2: add build and doc infrastructure 2019-07-05 01:52:01 +02:00