* [net-next v2 0/1] hyperv: Link queues to NAPIs
@ 2024-09-30 17:27 Joe Damato
2024-09-30 17:27 ` [net-next v2 1/1] hv_netvsc: " Joe Damato
2024-10-06 15:30 ` [net-next v2 0/1] hyperv: " patchwork-bot+netdevbpf
0 siblings, 2 replies; 3+ messages in thread
From: Joe Damato @ 2024-09-30 17:27 UTC (permalink / raw)
To: netdev
Cc: haiyangz, shradhagupta, horms, Joe Damato, David S. Miller,
K. Y. Srinivasan, Dexuan Cui, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Wei Liu, open list:Hyper-V/Azure CORE AND DRIVERS,
open list
Greetings:
Welcome to v2.
This was previously an RFC [1], see changelog below.
I've only compile tested this series; I don't have the software for testing
this so I am hoping some one from Microsoft can review and test this
following the instructions below :)
This change allows users to query the mapping of queues to NAPIs using
the netdev-genl interface.
Once this patch has been applied, this can be tested using the cli included
in the kernel tree like this:
$ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \
--dump queue-get --json='{"ifindex": 2}'
Substituting the ifindex above for the correct ifindex on your system
(which is, presumably, a hyper-V VM).
A sample of expected output would look like:
[{'id': 0, 'ifindex': 2, 'napi-id': 145, 'type': 'rx'},
{'id': 0, 'ifindex': 2, 'napi-id': 145, 'type': 'tx'}]
Which shows a mapping of queue ID (0) to NAPI ID (145) for both RX and TX
queues. Having this mapping is extremely useful for user apps for a variety
of use cases, including epoll-based busy poll which relies on the NAPI ID.
It would be really great to add support for this API to hyper-V so that
applications (including CI and automated testing facilities) could make use
of this API in VMs.
Sorry, I don't know much at all about hyper-V, but please let me know if
there is anything I can do to help.
Thanks,
Joe
[1]: https://lore.kernel.org/netdev/20240924234851.42348-1-jdamato@fastly.com/
v2:
- Added Haiyang Zhang's Reviewed-by
- Added Shradha Gupta's Tested-by
- Commit message updated to include test output from Shradha
- Wrapped lines to 80 characters, as suggested by Simon Horman (no
functional changes introduced)
Joe Damato (1):
hv_netvsc: Link queues to NAPIs
drivers/net/hyperv/netvsc.c | 13 ++++++++++++-
drivers/net/hyperv/rndis_filter.c | 9 +++++++--
2 files changed, 19 insertions(+), 3 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [net-next v2 1/1] hv_netvsc: Link queues to NAPIs
2024-09-30 17:27 [net-next v2 0/1] hyperv: Link queues to NAPIs Joe Damato
@ 2024-09-30 17:27 ` Joe Damato
2024-10-06 15:30 ` [net-next v2 0/1] hyperv: " patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: Joe Damato @ 2024-09-30 17:27 UTC (permalink / raw)
To: netdev
Cc: haiyangz, shradhagupta, horms, Joe Damato, K. Y. Srinivasan,
Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni,
open list:Hyper-V/Azure CORE AND DRIVERS, open list
Use netif_queue_set_napi to link queues to NAPI instances so that they
can be queried with netlink.
Shradha Gupta tested the patch and reported that the results are
as expected:
$ ./tools/net/ynl/cli.py --spec Documentation/netlink/specs/netdev.yaml \
--dump queue-get --json='{"ifindex": 2}'
[{'id': 0, 'ifindex': 2, 'napi-id': 8193, 'type': 'rx'},
{'id': 1, 'ifindex': 2, 'napi-id': 8194, 'type': 'rx'},
{'id': 2, 'ifindex': 2, 'napi-id': 8195, 'type': 'rx'},
{'id': 3, 'ifindex': 2, 'napi-id': 8196, 'type': 'rx'},
{'id': 4, 'ifindex': 2, 'napi-id': 8197, 'type': 'rx'},
{'id': 5, 'ifindex': 2, 'napi-id': 8198, 'type': 'rx'},
{'id': 6, 'ifindex': 2, 'napi-id': 8199, 'type': 'rx'},
{'id': 7, 'ifindex': 2, 'napi-id': 8200, 'type': 'rx'},
{'id': 0, 'ifindex': 2, 'napi-id': 8193, 'type': 'tx'},
{'id': 1, 'ifindex': 2, 'napi-id': 8194, 'type': 'tx'},
{'id': 2, 'ifindex': 2, 'napi-id': 8195, 'type': 'tx'},
{'id': 3, 'ifindex': 2, 'napi-id': 8196, 'type': 'tx'},
{'id': 4, 'ifindex': 2, 'napi-id': 8197, 'type': 'tx'},
{'id': 5, 'ifindex': 2, 'napi-id': 8198, 'type': 'tx'},
{'id': 6, 'ifindex': 2, 'napi-id': 8199, 'type': 'tx'},
{'id': 7, 'ifindex': 2, 'napi-id': 8200, 'type': 'tx'}]
Signed-off-by: Joe Damato <jdamato@fastly.com>
Reviewed-by: Haiyang Zhang <haiyangz@microsoft.com>
Tested-by: Shradha Gupta <shradhagupta@linux.microsoft.com>
---
drivers/net/hyperv/netvsc.c | 13 ++++++++++++-
drivers/net/hyperv/rndis_filter.c | 9 +++++++--
2 files changed, 19 insertions(+), 3 deletions(-)
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 2b6ec979a62f..9afb08dbc350 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -712,8 +712,13 @@ void netvsc_device_remove(struct hv_device *device)
for (i = 0; i < net_device->num_chn; i++) {
/* See also vmbus_reset_channel_cb(). */
/* only disable enabled NAPI channel */
- if (i < ndev->real_num_rx_queues)
+ if (i < ndev->real_num_rx_queues) {
+ netif_queue_set_napi(ndev, i, NETDEV_QUEUE_TYPE_TX,
+ NULL);
+ netif_queue_set_napi(ndev, i, NETDEV_QUEUE_TYPE_RX,
+ NULL);
napi_disable(&net_device->chan_table[i].napi);
+ }
netif_napi_del(&net_device->chan_table[i].napi);
}
@@ -1787,6 +1792,10 @@ struct netvsc_device *netvsc_device_add(struct hv_device *device,
netdev_dbg(ndev, "hv_netvsc channel opened successfully\n");
napi_enable(&net_device->chan_table[0].napi);
+ netif_queue_set_napi(ndev, 0, NETDEV_QUEUE_TYPE_RX,
+ &net_device->chan_table[0].napi);
+ netif_queue_set_napi(ndev, 0, NETDEV_QUEUE_TYPE_TX,
+ &net_device->chan_table[0].napi);
/* Connect with the NetVsp */
ret = netvsc_connect_vsp(device, net_device, device_info);
@@ -1805,6 +1814,8 @@ struct netvsc_device *netvsc_device_add(struct hv_device *device,
close:
RCU_INIT_POINTER(net_device_ctx->nvdev, NULL);
+ netif_queue_set_napi(ndev, 0, NETDEV_QUEUE_TYPE_TX, NULL);
+ netif_queue_set_napi(ndev, 0, NETDEV_QUEUE_TYPE_RX, NULL);
napi_disable(&net_device->chan_table[0].napi);
/* Now, we can close the channel safely */
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index ecc2128ca9b7..c0ceeef4fcd8 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1269,10 +1269,15 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
ret = vmbus_open(new_sc, netvsc_ring_bytes,
netvsc_ring_bytes, NULL, 0,
netvsc_channel_cb, nvchan);
- if (ret == 0)
+ if (ret == 0) {
napi_enable(&nvchan->napi);
- else
+ netif_queue_set_napi(ndev, chn_index, NETDEV_QUEUE_TYPE_RX,
+ &nvchan->napi);
+ netif_queue_set_napi(ndev, chn_index, NETDEV_QUEUE_TYPE_TX,
+ &nvchan->napi);
+ } else {
netdev_notice(ndev, "sub channel open failed: %d\n", ret);
+ }
if (atomic_inc_return(&nvscdev->open_chn) == nvscdev->num_chn)
wake_up(&nvscdev->subchan_open);
--
2.34.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [net-next v2 0/1] hyperv: Link queues to NAPIs
2024-09-30 17:27 [net-next v2 0/1] hyperv: Link queues to NAPIs Joe Damato
2024-09-30 17:27 ` [net-next v2 1/1] hv_netvsc: " Joe Damato
@ 2024-10-06 15:30 ` patchwork-bot+netdevbpf
1 sibling, 0 replies; 3+ messages in thread
From: patchwork-bot+netdevbpf @ 2024-10-06 15:30 UTC (permalink / raw)
To: Joe Damato
Cc: netdev, haiyangz, shradhagupta, horms, davem, kys, decui,
edumazet, kuba, pabeni, wei.liu, linux-hyperv, linux-kernel
Hello:
This patch was applied to netdev/net-next.git (main)
by David S. Miller <davem@davemloft.net>:
On Mon, 30 Sep 2024 17:27:08 +0000 you wrote:
> Greetings:
>
> Welcome to v2.
>
> This was previously an RFC [1], see changelog below.
>
> I've only compile tested this series; I don't have the software for testing
> this so I am hoping some one from Microsoft can review and test this
> following the instructions below :)
>
> [...]
Here is the summary with links:
- [net-next,v2,1/1] hv_netvsc: Link queues to NAPIs
https://git.kernel.org/netdev/net-next/c/8b641b5e4c78
You are awesome, thank you!
--
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-10-06 15:30 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-09-30 17:27 [net-next v2 0/1] hyperv: Link queues to NAPIs Joe Damato
2024-09-30 17:27 ` [net-next v2 1/1] hv_netvsc: " Joe Damato
2024-10-06 15:30 ` [net-next v2 0/1] hyperv: " patchwork-bot+netdevbpf
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).