Message ID | 20250121191047.269844-3-jdamato@fastly.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio_net: Link queues to NAPIs | expand |
On Wed, Jan 22, 2025 at 3:11 AM Joe Damato <jdamato@fastly.com> wrote: > > Slight refactor to prepare the code for NAPI to queue mapping. No > functional changes. > > Signed-off-by: Joe Damato <jdamato@fastly.com> > Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com> > Tested-by: Lei Yang <leiyang@redhat.com> > --- > v2: > - Previously patch 1 in the v1. > - Added Reviewed-by and Tested-by tags to commit message. No > functional changes. > > drivers/net/virtio_net.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index 7646ddd9bef7..cff18c66b54a 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -2789,7 +2789,8 @@ static void skb_recv_done(struct virtqueue *rvq) > virtqueue_napi_schedule(&rq->napi, rvq); > } > > -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > +static void virtnet_napi_do_enable(struct virtqueue *vq, > + struct napi_struct *napi) > { > napi_enable(napi); Nit: it might be better to not have this helper to avoid a misuse of this function directly. Other than this. Acked-by: Jason Wang <jasowang@redhat.com> Thanks > > @@ -2802,6 +2803,11 @@ static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > local_bh_enable(); > } > > +static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > +{ > + virtnet_napi_do_enable(vq, napi); > +} > + > static void virtnet_napi_tx_enable(struct virtnet_info *vi, > struct virtqueue *vq, > struct napi_struct *napi) > @@ -2817,7 +2823,7 @@ static void virtnet_napi_tx_enable(struct virtnet_info *vi, > return; > } > > - return virtnet_napi_enable(vq, napi); > + virtnet_napi_do_enable(vq, napi); > } > > static void virtnet_napi_tx_disable(struct napi_struct *napi) > -- > 2.25.1 >
On Wed, Jan 22, 2025 at 02:12:46PM +0800, Jason Wang wrote: > On Wed, Jan 22, 2025 at 3:11 AM Joe Damato <jdamato@fastly.com> wrote: > > > > Slight refactor to prepare the code for NAPI to queue mapping. No > > functional changes. > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com> > > Tested-by: Lei Yang <leiyang@redhat.com> > > --- > > v2: > > - Previously patch 1 in the v1. > > - Added Reviewed-by and Tested-by tags to commit message. No > > functional changes. > > > > drivers/net/virtio_net.c | 10 ++++++++-- > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > index 7646ddd9bef7..cff18c66b54a 100644 > > --- a/drivers/net/virtio_net.c > > +++ b/drivers/net/virtio_net.c > > @@ -2789,7 +2789,8 @@ static void skb_recv_done(struct virtqueue *rvq) > > virtqueue_napi_schedule(&rq->napi, rvq); > > } > > > > -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > > +static void virtnet_napi_do_enable(struct virtqueue *vq, > > + struct napi_struct *napi) > > { > > napi_enable(napi); > > Nit: it might be better to not have this helper to avoid a misuse of > this function directly. Sorry, I'm probably missing something here. Both virtnet_napi_enable and virtnet_napi_tx_enable need the logic in virtnet_napi_do_enable. Are you suggesting that I remove virtnet_napi_do_enable and repeat the block of code in there twice (in virtnet_napi_enable and virtnet_napi_tx_enable)? Just seemed like a lot of code to repeat twice and a helper would be cleaner? Let me know; since net-next is closed there is a plenty of time to get this to where you'd like it to be before new code is accepted. > Other than this. > > Acked-by: Jason Wang <jasowang@redhat.com> Thanks.
On Thu, Jan 23, 2025 at 1:41 AM Joe Damato <jdamato@fastly.com> wrote: > > On Wed, Jan 22, 2025 at 02:12:46PM +0800, Jason Wang wrote: > > On Wed, Jan 22, 2025 at 3:11 AM Joe Damato <jdamato@fastly.com> wrote: > > > > > > Slight refactor to prepare the code for NAPI to queue mapping. No > > > functional changes. > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com> > > > Tested-by: Lei Yang <leiyang@redhat.com> > > > --- > > > v2: > > > - Previously patch 1 in the v1. > > > - Added Reviewed-by and Tested-by tags to commit message. No > > > functional changes. > > > > > > drivers/net/virtio_net.c | 10 ++++++++-- > > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > > index 7646ddd9bef7..cff18c66b54a 100644 > > > --- a/drivers/net/virtio_net.c > > > +++ b/drivers/net/virtio_net.c > > > @@ -2789,7 +2789,8 @@ static void skb_recv_done(struct virtqueue *rvq) > > > virtqueue_napi_schedule(&rq->napi, rvq); > > > } > > > > > > -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > > > +static void virtnet_napi_do_enable(struct virtqueue *vq, > > > + struct napi_struct *napi) > > > { > > > napi_enable(napi); > > > > Nit: it might be better to not have this helper to avoid a misuse of > > this function directly. > > Sorry, I'm probably missing something here. > > Both virtnet_napi_enable and virtnet_napi_tx_enable need the logic > in virtnet_napi_do_enable. > > Are you suggesting that I remove virtnet_napi_do_enable and repeat > the block of code in there twice (in virtnet_napi_enable and > virtnet_napi_tx_enable)? I think I miss something here, it looks like virtnet_napi_tx_enable() calls virtnet_napi_do_enable() directly. I would like to know why we don't call netif_queue_set_napi() for TX NAPI here? Thanks > > Just seemed like a lot of code to repeat twice and a helper would be > cleaner? > > Let me know; since net-next is closed there is a plenty of time to > get this to where you'd like it to be before new code is accepted. > > > Other than this. > > > > Acked-by: Jason Wang <jasowang@redhat.com> > > Thanks. >
On Thu, Jan 23, 2025 at 10:40:43AM +0800, Jason Wang wrote: > On Thu, Jan 23, 2025 at 1:41 AM Joe Damato <jdamato@fastly.com> wrote: > > > > On Wed, Jan 22, 2025 at 02:12:46PM +0800, Jason Wang wrote: > > > On Wed, Jan 22, 2025 at 3:11 AM Joe Damato <jdamato@fastly.com> wrote: > > > > > > > > Slight refactor to prepare the code for NAPI to queue mapping. No > > > > functional changes. > > > > > > > > Signed-off-by: Joe Damato <jdamato@fastly.com> > > > > Reviewed-by: Gerhard Engleder <gerhard@engleder-embedded.com> > > > > Tested-by: Lei Yang <leiyang@redhat.com> > > > > --- > > > > v2: > > > > - Previously patch 1 in the v1. > > > > - Added Reviewed-by and Tested-by tags to commit message. No > > > > functional changes. > > > > > > > > drivers/net/virtio_net.c | 10 ++++++++-- > > > > 1 file changed, 8 insertions(+), 2 deletions(-) > > > > > > > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > > > > index 7646ddd9bef7..cff18c66b54a 100644 > > > > --- a/drivers/net/virtio_net.c > > > > +++ b/drivers/net/virtio_net.c > > > > @@ -2789,7 +2789,8 @@ static void skb_recv_done(struct virtqueue *rvq) > > > > virtqueue_napi_schedule(&rq->napi, rvq); > > > > } > > > > > > > > -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) > > > > +static void virtnet_napi_do_enable(struct virtqueue *vq, > > > > + struct napi_struct *napi) > > > > { > > > > napi_enable(napi); > > > > > > Nit: it might be better to not have this helper to avoid a misuse of > > > this function directly. > > > > Sorry, I'm probably missing something here. > > > > Both virtnet_napi_enable and virtnet_napi_tx_enable need the logic > > in virtnet_napi_do_enable. > > > > Are you suggesting that I remove virtnet_napi_do_enable and repeat > > the block of code in there twice (in virtnet_napi_enable and > > virtnet_napi_tx_enable)? > > I think I miss something here, it looks like virtnet_napi_tx_enable() > calls virtnet_napi_do_enable() directly. > > I would like to know why we don't call netif_queue_set_napi() for TX NAPI here? Please see both the cover letter and the commit message of the next commit which addresses this question. TX-only NAPIs do not have NAPI IDs so there is nothing to map.
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 7646ddd9bef7..cff18c66b54a 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2789,7 +2789,8 @@ static void skb_recv_done(struct virtqueue *rvq) virtqueue_napi_schedule(&rq->napi, rvq); } -static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) +static void virtnet_napi_do_enable(struct virtqueue *vq, + struct napi_struct *napi) { napi_enable(napi); @@ -2802,6 +2803,11 @@ static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) local_bh_enable(); } +static void virtnet_napi_enable(struct virtqueue *vq, struct napi_struct *napi) +{ + virtnet_napi_do_enable(vq, napi); +} + static void virtnet_napi_tx_enable(struct virtnet_info *vi, struct virtqueue *vq, struct napi_struct *napi) @@ -2817,7 +2823,7 @@ static void virtnet_napi_tx_enable(struct virtnet_info *vi, return; } - return virtnet_napi_enable(vq, napi); + virtnet_napi_do_enable(vq, napi); } static void virtnet_napi_tx_disable(struct napi_struct *napi)