* [RFC net-next 0/1] hyperv: Link queues to NAPIs
@ 2024-09-24 23:48 Joe Damato
2024-09-24 23:48 ` [RFC net-next 1/1] hv_netvsc: " Joe Damato
0 siblings, 1 reply; 13+ messages in thread
From: Joe Damato @ 2024-09-24 23:48 UTC (permalink / raw)
To: netdev
Cc: Joe Damato, David S. Miller, K. Y. Srinivasan, Dexuan Cui,
Eric Dumazet, Haiyang Zhang, Jakub Kicinski, Paolo Abeni, Wei Liu,
open list:Hyper-V/Azure CORE AND DRIVERS, open list
Greetings:
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}'
Substituing 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
Joe Damato (1):
hv_netvsc: Link queues to NAPIs
drivers/net/hyperv/netvsc.c | 11 ++++++++++-
drivers/net/hyperv/rndis_filter.c | 9 +++++++--
2 files changed, 17 insertions(+), 3 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 13+ messages in thread* [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-24 23:48 [RFC net-next 0/1] hyperv: Link queues to NAPIs Joe Damato @ 2024-09-24 23:48 ` Joe Damato 2024-09-25 19:39 ` Haiyang Zhang 2024-09-26 15:10 ` Simon Horman 0 siblings, 2 replies; 13+ messages in thread From: Joe Damato @ 2024-09-24 23:48 UTC (permalink / raw) To: netdev Cc: Joe Damato, K. Y. Srinivasan, Haiyang Zhang, 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. Signed-off-by: Joe Damato <jdamato@fastly.com> --- drivers/net/hyperv/netvsc.c | 11 ++++++++++- drivers/net/hyperv/rndis_filter.c | 9 +++++++-- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c index 2b6ec979a62f..ccaa4690dba0 100644 --- a/drivers/net/hyperv/netvsc.c +++ b/drivers/net/hyperv/netvsc.c @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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] 13+ messages in thread
* RE: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-24 23:48 ` [RFC net-next 1/1] hv_netvsc: " Joe Damato @ 2024-09-25 19:39 ` Haiyang Zhang 2024-09-26 4:06 ` Shradha Gupta ` (2 more replies) 2024-09-26 15:10 ` Simon Horman 1 sibling, 3 replies; 13+ messages in thread From: Haiyang Zhang @ 2024-09-25 19:39 UTC (permalink / raw) To: Joe Damato, netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela Cc: KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list > -----Original Message----- > From: Joe Damato <jdamato@fastly.com> > Sent: Tuesday, September 24, 2024 7:49 PM > To: netdev@vger.kernel.org > Cc: Joe Damato <jdamato@fastly.com>; KY Srinivasan <kys@microsoft.com>; > Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; > Dexuan Cui <decui@microsoft.com>; David S. Miller <davem@davemloft.net>; > Eric Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; > Paolo Abeni <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND DRIVERS > <linux-hyperv@vger.kernel.org>; open list <linux-kernel@vger.kernel.org> > Subject: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > [You don't often get email from jdamato@fastly.com. Learn why this is > important at https://aka.ms/LearnAboutSenderIdentification ] > > Use netif_queue_set_napi to link queues to NAPI instances so that they > can be queried with netlink. > > Signed-off-by: Joe Damato <jdamato@fastly.com> > --- > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > 2 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > index 2b6ec979a62f..ccaa4690dba0 100644 > --- a/drivers/net/hyperv/netvsc.c > +++ b/drivers/net/hyperv/netvsc.c > @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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); > -- The code change looks fine to me. @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test this? Thanks, - Haiyang ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-25 19:39 ` Haiyang Zhang @ 2024-09-26 4:06 ` Shradha Gupta 2024-09-26 10:34 ` Shradha Gupta 2024-09-26 15:53 ` Joe Damato 2 siblings, 0 replies; 13+ messages in thread From: Shradha Gupta @ 2024-09-26 4:06 UTC (permalink / raw) To: Haiyang Zhang Cc: Joe Damato, netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > > > > -----Original Message----- > > From: Joe Damato <jdamato@fastly.com> > > Sent: Tuesday, September 24, 2024 7:49 PM > > To: netdev@vger.kernel.org > > Cc: Joe Damato <jdamato@fastly.com>; KY Srinivasan <kys@microsoft.com>; > > Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; > > Dexuan Cui <decui@microsoft.com>; David S. Miller <davem@davemloft.net>; > > Eric Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; > > Paolo Abeni <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND DRIVERS > > <linux-hyperv@vger.kernel.org>; open list <linux-kernel@vger.kernel.org> > > Subject: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > > > [You don't often get email from jdamato@fastly.com. Learn why this is > > important at https://aka.ms/LearnAboutSenderIdentification ] > > > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > can be queried with netlink. > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > --- > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > index 2b6ec979a62f..ccaa4690dba0 100644 > > --- a/drivers/net/hyperv/netvsc.c > > +++ b/drivers/net/hyperv/netvsc.c > > @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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); > > -- > > The code change looks fine to me. > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test this? > > Thanks, > - Haiyang > > Sure, we will review and test and get back. Thanks ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-25 19:39 ` Haiyang Zhang 2024-09-26 4:06 ` Shradha Gupta @ 2024-09-26 10:34 ` Shradha Gupta 2024-09-26 14:29 ` Haiyang Zhang 2024-09-26 15:41 ` Joe Damato 2024-09-26 15:53 ` Joe Damato 2 siblings, 2 replies; 13+ messages in thread From: Shradha Gupta @ 2024-09-26 10:34 UTC (permalink / raw) To: Haiyang Zhang Cc: Joe Damato, netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > > > > -----Original Message----- > > From: Joe Damato <jdamato@fastly.com> > > Sent: Tuesday, September 24, 2024 7:49 PM > > To: netdev@vger.kernel.org > > Cc: Joe Damato <jdamato@fastly.com>; KY Srinivasan <kys@microsoft.com>; > > Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; > > Dexuan Cui <decui@microsoft.com>; David S. Miller <davem@davemloft.net>; > > Eric Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; > > Paolo Abeni <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND DRIVERS > > <linux-hyperv@vger.kernel.org>; open list <linux-kernel@vger.kernel.org> > > Subject: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > > > [You don't often get email from jdamato@fastly.com. Learn why this is > > important at https://aka.ms/LearnAboutSenderIdentification ] > > > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > can be queried with netlink. > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > --- > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > index 2b6ec979a62f..ccaa4690dba0 100644 > > --- a/drivers/net/hyperv/netvsc.c > > +++ b/drivers/net/hyperv/netvsc.c > > @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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); > > -- > > The code change looks fine to me. > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test this? > > Thanks, > - Haiyang > > Hi Joe, Haiyang, I have verified the patch on a VM with netvsc interfaces and the seems to be working as expected CLI output after applying the patch: [{'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'}] The code changes also look good. Tested-by: Shradha Gupta <shradhagupta@linux.microsoft.com> Thanks, Shradha. ^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 10:34 ` Shradha Gupta @ 2024-09-26 14:29 ` Haiyang Zhang 2024-09-26 15:41 ` Joe Damato 1 sibling, 0 replies; 13+ messages in thread From: Haiyang Zhang @ 2024-09-26 14:29 UTC (permalink / raw) To: Shradha Gupta Cc: Joe Damato, netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list > -----Original Message----- > From: Shradha Gupta <shradhagupta@linux.microsoft.com> > Sent: Thursday, September 26, 2024 6:35 AM > To: Haiyang Zhang <haiyangz@microsoft.com> > Cc: Joe Damato <jdamato@fastly.com>; netdev@vger.kernel.org; Shradha > Gupta <shradhagupta@microsoft.com>; Erni Sri Satya Vennela > <ernis@microsoft.com>; KY Srinivasan <kys@microsoft.com>; Wei Liu > <wei.liu@kernel.org>; Dexuan Cui <decui@microsoft.com>; David S. Miller > <davem@davemloft.net>; Eric Dumazet <edumazet@google.com>; Jakub Kicinski > <kuba@kernel.org>; Paolo Abeni <pabeni@redhat.com>; open list:Hyper- > V/Azure CORE AND DRIVERS <linux-hyperv@vger.kernel.org>; open list > <linux-kernel@vger.kernel.org> > Subject: Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > > > > > > > -----Original Message----- > > > From: Joe Damato <jdamato@fastly.com> > > > Sent: Tuesday, September 24, 2024 7:49 PM > > > To: netdev@vger.kernel.org > > > Cc: Joe Damato <jdamato@fastly.com>; KY Srinivasan > <kys@microsoft.com>; > > > Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; > > > Dexuan Cui <decui@microsoft.com>; David S. Miller > <davem@davemloft.net>; > > > Eric Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; > > > Paolo Abeni <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND > DRIVERS > > > <linux-hyperv@vger.kernel.org>; open list <linux- > kernel@vger.kernel.org> > > > Subject: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > > > > > [You don't often get email from jdamato@fastly.com. Learn why this is > > > important at https://aka.ms/LearnAboutSenderIdentification ] > > > > > > Use netif_queue_set_napi to link queues to NAPI instances so that > they > > > can be queried with netlink. > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > --- > > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/net/hyperv/netvsc.c > b/drivers/net/hyperv/netvsc.c > > > index 2b6ec979a62f..ccaa4690dba0 100644 > > > --- a/drivers/net/hyperv/netvsc.c > > > +++ b/drivers/net/hyperv/netvsc.c > > > @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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); > > > -- > > > > The code change looks fine to me. > > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test > this? > > > > Thanks, > > - Haiyang > > > > > Hi Joe, Haiyang, > > I have verified the patch on a VM with netvsc interfaces and the seems > to be working as expected > > CLI output after applying the patch: > > [{'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'}] > > The code changes also look good. > > Tested-by: Shradha Gupta <shradhagupta@linux.microsoft.com> > Thank you for the testing! - Haiyang ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 10:34 ` Shradha Gupta 2024-09-26 14:29 ` Haiyang Zhang @ 2024-09-26 15:41 ` Joe Damato 1 sibling, 0 replies; 13+ messages in thread From: Joe Damato @ 2024-09-26 15:41 UTC (permalink / raw) To: Shradha Gupta Cc: Haiyang Zhang, netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Thu, Sep 26, 2024 at 03:34:43AM -0700, Shradha Gupta wrote: > On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > > > > > > > -----Original Message----- > > > From: Joe Damato <jdamato@fastly.com> > > > Sent: Tuesday, September 24, 2024 7:49 PM > > > To: netdev@vger.kernel.org > > > Cc: Joe Damato <jdamato@fastly.com>; KY Srinivasan <kys@microsoft.com>; > > > Haiyang Zhang <haiyangz@microsoft.com>; Wei Liu <wei.liu@kernel.org>; > > > Dexuan Cui <decui@microsoft.com>; David S. Miller <davem@davemloft.net>; > > > Eric Dumazet <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; > > > Paolo Abeni <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND DRIVERS > > > <linux-hyperv@vger.kernel.org>; open list <linux-kernel@vger.kernel.org> > > > Subject: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > > > > > [You don't often get email from jdamato@fastly.com. Learn why this is > > > important at https://aka.ms/LearnAboutSenderIdentification ] > > > > > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > > can be queried with netlink. > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > --- > > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > > index 2b6ec979a62f..ccaa4690dba0 100644 > > > --- a/drivers/net/hyperv/netvsc.c > > > +++ b/drivers/net/hyperv/netvsc.c > > > @@ -712,8 +712,11 @@ 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 +1790,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 +1812,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); > > > -- > > > > The code change looks fine to me. > > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test this? > > > > Thanks, > > - Haiyang > > > > > Hi Joe, Haiyang, > > I have verified the patch on a VM with netvsc interfaces and the seems > to be working as expected > > CLI output after applying the patch: > > [{'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'}] > > The code changes also look good. > > Tested-by: Shradha Gupta <shradhagupta@linux.microsoft.com> Thank you very much for testing, I will include your tested-by when I resend this next week when net-next is open. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-25 19:39 ` Haiyang Zhang 2024-09-26 4:06 ` Shradha Gupta 2024-09-26 10:34 ` Shradha Gupta @ 2024-09-26 15:53 ` Joe Damato 2024-09-26 16:45 ` Haiyang Zhang 2 siblings, 1 reply; 13+ messages in thread From: Joe Damato @ 2024-09-26 15:53 UTC (permalink / raw) To: Haiyang Zhang Cc: netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > [...] > The code change looks fine to me. > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test this? Haiyang, would you like me to include an acked-by or reviewed-by from you for this patch when I send it when net-next reopens? I've added Shradha's Tested-by. ^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 15:53 ` Joe Damato @ 2024-09-26 16:45 ` Haiyang Zhang 0 siblings, 0 replies; 13+ messages in thread From: Haiyang Zhang @ 2024-09-26 16:45 UTC (permalink / raw) To: Joe Damato Cc: netdev@vger.kernel.org, Shradha Gupta, Erni Sri Satya Vennela, KY Srinivasan, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list > -----Original Message----- > From: Joe Damato <jdamato@fastly.com> > Sent: Thursday, September 26, 2024 11:53 AM > To: Haiyang Zhang <haiyangz@microsoft.com> > Cc: netdev@vger.kernel.org; Shradha Gupta <shradhagupta@microsoft.com>; > Erni Sri Satya Vennela <ernis@microsoft.com>; KY Srinivasan > <kys@microsoft.com>; Wei Liu <wei.liu@kernel.org>; Dexuan Cui > <decui@microsoft.com>; David S. Miller <davem@davemloft.net>; Eric Dumazet > <edumazet@google.com>; Jakub Kicinski <kuba@kernel.org>; Paolo Abeni > <pabeni@redhat.com>; open list:Hyper-V/Azure CORE AND DRIVERS <linux- > hyperv@vger.kernel.org>; open list <linux-kernel@vger.kernel.org> > Subject: Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs > > On Wed, Sep 25, 2024 at 07:39:03PM +0000, Haiyang Zhang wrote: > > > > [...] > > > The code change looks fine to me. > > @Shradha Gupta or @Erni Sri Satya Vennela, Do you have time to test > this? > > Haiyang, would you like me to include an acked-by or reviewed-by > from you for this patch when I send it when net-next reopens? Yes, you can add my reviewed-by. Thanks, - Haiyang ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-24 23:48 ` [RFC net-next 1/1] hv_netvsc: " Joe Damato 2024-09-25 19:39 ` Haiyang Zhang @ 2024-09-26 15:10 ` Simon Horman 2024-09-26 15:42 ` Joe Damato 1 sibling, 1 reply; 13+ messages in thread From: Simon Horman @ 2024-09-26 15:10 UTC (permalink / raw) To: Joe Damato Cc: netdev, K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Tue, Sep 24, 2024 at 11:48:51PM +0000, Joe Damato wrote: > Use netif_queue_set_napi to link queues to NAPI instances so that they > can be queried with netlink. > > Signed-off-by: Joe Damato <jdamato@fastly.com> > --- > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > 2 files changed, 17 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > index 2b6ec979a62f..ccaa4690dba0 100644 > --- a/drivers/net/hyperv/netvsc.c > +++ b/drivers/net/hyperv/netvsc.c > @@ -712,8 +712,11 @@ 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); Hi Joe, When you post a non-RFC version of this patch, could you consider line-wrapping the above to 80 columns, as is still preferred for Networking code? There is an option to checkpatch that will warn you about this. ... ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 15:10 ` Simon Horman @ 2024-09-26 15:42 ` Joe Damato 2024-09-26 15:50 ` Joe Damato 2024-09-26 15:56 ` Simon Horman 0 siblings, 2 replies; 13+ messages in thread From: Joe Damato @ 2024-09-26 15:42 UTC (permalink / raw) To: Simon Horman Cc: netdev, K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Thu, Sep 26, 2024 at 04:10:24PM +0100, Simon Horman wrote: > On Tue, Sep 24, 2024 at 11:48:51PM +0000, Joe Damato wrote: > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > can be queried with netlink. > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > --- > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > index 2b6ec979a62f..ccaa4690dba0 100644 > > --- a/drivers/net/hyperv/netvsc.c > > +++ b/drivers/net/hyperv/netvsc.c > > @@ -712,8 +712,11 @@ 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); > > Hi Joe, > > When you post a non-RFC version of this patch, could you consider > line-wrapping the above to 80 columns, as is still preferred for > Networking code? > > There is an option to checkpatch that will warn you about this. Thanks for letting me know. I run checkpatch.pl --strict and usually it seems to let me know if I am over 80, but maybe there's another option I need? ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 15:42 ` Joe Damato @ 2024-09-26 15:50 ` Joe Damato 2024-09-26 15:56 ` Simon Horman 1 sibling, 0 replies; 13+ messages in thread From: Joe Damato @ 2024-09-26 15:50 UTC (permalink / raw) To: Simon Horman, netdev, K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Thu, Sep 26, 2024 at 08:42:32AM -0700, Joe Damato wrote: > On Thu, Sep 26, 2024 at 04:10:24PM +0100, Simon Horman wrote: > > On Tue, Sep 24, 2024 at 11:48:51PM +0000, Joe Damato wrote: > > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > > can be queried with netlink. > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > --- > > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > > index 2b6ec979a62f..ccaa4690dba0 100644 > > > --- a/drivers/net/hyperv/netvsc.c > > > +++ b/drivers/net/hyperv/netvsc.c > > > @@ -712,8 +712,11 @@ 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); > > > > Hi Joe, > > > > When you post a non-RFC version of this patch, could you consider > > line-wrapping the above to 80 columns, as is still preferred for > > Networking code? > > > > There is an option to checkpatch that will warn you about this. > > Thanks for letting me know. > > I run checkpatch.pl --strict and usually it seems to let me know if > I am over 80, but maybe there's another option I need? Ah, I see: --max-line-length=n set the maximum line length, (default 100) I didn't realize the checkpatch default was 100. Sorry about that, will make sure to pass that flag in the future; thanks for letting me know. ^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [RFC net-next 1/1] hv_netvsc: Link queues to NAPIs 2024-09-26 15:42 ` Joe Damato 2024-09-26 15:50 ` Joe Damato @ 2024-09-26 15:56 ` Simon Horman 1 sibling, 0 replies; 13+ messages in thread From: Simon Horman @ 2024-09-26 15:56 UTC (permalink / raw) To: Joe Damato, netdev, K. Y. Srinivasan, Haiyang Zhang, Wei Liu, Dexuan Cui, David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni, open list:Hyper-V/Azure CORE AND DRIVERS, open list On Thu, Sep 26, 2024 at 08:42:32AM -0700, Joe Damato wrote: > On Thu, Sep 26, 2024 at 04:10:24PM +0100, Simon Horman wrote: > > On Tue, Sep 24, 2024 at 11:48:51PM +0000, Joe Damato wrote: > > > Use netif_queue_set_napi to link queues to NAPI instances so that they > > > can be queried with netlink. > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > --- > > > drivers/net/hyperv/netvsc.c | 11 ++++++++++- > > > drivers/net/hyperv/rndis_filter.c | 9 +++++++-- > > > 2 files changed, 17 insertions(+), 3 deletions(-) > > > > > > diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c > > > index 2b6ec979a62f..ccaa4690dba0 100644 > > > --- a/drivers/net/hyperv/netvsc.c > > > +++ b/drivers/net/hyperv/netvsc.c > > > @@ -712,8 +712,11 @@ 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); > > > > Hi Joe, > > > > When you post a non-RFC version of this patch, could you consider > > line-wrapping the above to 80 columns, as is still preferred for > > Networking code? > > > > There is an option to checkpatch that will warn you about this. > > Thanks for letting me know. > > I run checkpatch.pl --strict and usually it seems to let me know if > I am over 80, but maybe there's another option I need? At some point the default changed from 80 to 100. So these days --max-line-length=80 is needed to detect this. --strict is also good :) ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2024-09-26 16:46 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-09-24 23:48 [RFC net-next 0/1] hyperv: Link queues to NAPIs Joe Damato 2024-09-24 23:48 ` [RFC net-next 1/1] hv_netvsc: " Joe Damato 2024-09-25 19:39 ` Haiyang Zhang 2024-09-26 4:06 ` Shradha Gupta 2024-09-26 10:34 ` Shradha Gupta 2024-09-26 14:29 ` Haiyang Zhang 2024-09-26 15:41 ` Joe Damato 2024-09-26 15:53 ` Joe Damato 2024-09-26 16:45 ` Haiyang Zhang 2024-09-26 15:10 ` Simon Horman 2024-09-26 15:42 ` Joe Damato 2024-09-26 15:50 ` Joe Damato 2024-09-26 15:56 ` Simon Horman
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).