Thread (9 messages) 9 messages, 3 authors, 2020-01-23

RE: [PATCH V3,net-next, 1/2] hv_netvsc: Add XDP support

From: Haiyang Zhang <haiyangz@microsoft.com>
Date: 2020-01-23 17:14:47
Also in: lkml, netdev

-----Original Message-----
From: Jakub Kicinski <kuba@kernel.org>
Sent: Thursday, January 23, 2020 11:59 AM
To: Haiyang Zhang <haiyangz@microsoft.com>
Cc: sashal@kernel.org; linux-hyperv@vger.kernel.org; netdev@vger.kernel.org;
KY Srinivasan [off-list ref]; Stephen Hemminger
[off-list ref]; olaf@aepfle.de; vkuznets
[off-list ref]; davem@davemloft.net; linux-kernel@vger.kernel.org
Subject: Re: [PATCH V3,net-next, 1/2] hv_netvsc: Add XDP support

On Wed, 22 Jan 2020 09:23:33 -0800, Haiyang Zhang wrote:
quoted
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>

---
Changes:
	v3: Minor code and comment updates.
        v2: Added XDP_TX support. Addressed review comments.
How does the locking of the TX path work? You seem to be just calling the
normal xmit method, but you don't hold the xmit queue lock, so the stack can
start xmit concurrently, no?
The netvsc and vmbus can handle concurrent transmits, except the msd 
(Multi-Send Data) field which can only be used by one queue. 

I already added a new flag to netvsc_send(), so packets from XDP_TX won't use 
the msd.

Thanks,
- Haiyang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help