OpenCloudOS-Kernel/drivers/net/hyperv
Haiyang Zhang 351e158139 hv_netvsc: Add XDP support
This patch adds support of XDP in native mode for hv_netvsc driver, and
transparently sets the XDP program on the associated VF NIC as well.

Setting / unsetting XDP program on synthetic NIC (netvsc) propagates to
VF NIC automatically. Setting / unsetting XDP program on VF NIC directly
is not recommended, also not propagated to synthetic NIC, and may be
overwritten by setting of synthetic NIC.

The Azure/Hyper-V synthetic NIC receive buffer doesn't provide headroom
for XDP. We thought about re-use the RNDIS header space, but it's too
small. So we decided to copy the packets to a page buffer for XDP. And,
most of our VMs on Azure have Accelerated  Network (SRIOV) enabled, so
most of the packets run on VF NIC. The synthetic NIC is considered as a
fallback data-path. So the data copy on netvsc won't impact performance
significantly.

XDP program cannot run with LRO (RSC) enabled, so you need to disable LRO
before running XDP:
        ethtool -K eth0 lro off

XDP actions not yet supported:
        XDP_REDIRECT

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-01-25 10:43:19 +01:00
..
Kconfig treewide: Add SPDX license identifier - Makefile/Kconfig 2019-05-21 10:50:46 +02:00
Makefile hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00
hyperv_net.h hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00
netvsc.c hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00
netvsc_bpf.c hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00
netvsc_drv.c hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00
netvsc_trace.c hv_netvsc: add trace points 2018-03-17 20:10:27 -04:00
netvsc_trace.h hv_netvsc: add trace points 2018-03-17 20:10:27 -04:00
rndis_filter.c hv_netvsc: Add XDP support 2020-01-25 10:43:19 +01:00