Message ID | 20231011092728.105904-9-xuanzhuo@linux.alibaba.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio-net: support AF_XDP zero copy | expand |
On Wed, Oct 11, 2023 at 05:27:14PM +0800, Xuan Zhuo wrote: > virtnet_poll_tx() support to return budget when busy to be rescheduled. > > When retval < budget, napi_poll() in dev.c will exit directly. And > virtqueue_napi_complete() will be called to close napi. > > When retval == budget, the napi_poll() in dev.c will re-add napi to the > queue. > > The purpose of this patch is to support xsk xmit in virtio_poll_tx() for > subsequent patch. > > Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> > --- > drivers/net/virtio/main.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/drivers/net/virtio/main.c b/drivers/net/virtio/main.c > index bcfd31a55076..f32cfa189972 100644 > --- a/drivers/net/virtio/main.c > +++ b/drivers/net/virtio/main.c > @@ -1976,6 +1976,7 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) > struct virtnet_info *vi = sq->vq->vdev->priv; > unsigned int index = vq2txq(sq->vq); > struct netdev_queue *txq; > + int busy = 0; > int opaque; > bool done; > > @@ -1993,6 +1994,11 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) > if (sq->vq->num_free >= 2 + MAX_SKB_FRAGS) > netif_tx_wake_queue(txq); > > + if (busy) { > + __netif_tx_unlock(txq); > + return budget; > + } > + > opaque = virtqueue_enable_cb_prepare(sq->vq); > > done = napi_complete_done(napi, 0); This just adds a bit of dead code. Pls just squash into that patch. > -- > 2.32.0.3.g01195cf9f
diff --git a/drivers/net/virtio/main.c b/drivers/net/virtio/main.c index bcfd31a55076..f32cfa189972 100644 --- a/drivers/net/virtio/main.c +++ b/drivers/net/virtio/main.c @@ -1976,6 +1976,7 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) struct virtnet_info *vi = sq->vq->vdev->priv; unsigned int index = vq2txq(sq->vq); struct netdev_queue *txq; + int busy = 0; int opaque; bool done; @@ -1993,6 +1994,11 @@ static int virtnet_poll_tx(struct napi_struct *napi, int budget) if (sq->vq->num_free >= 2 + MAX_SKB_FRAGS) netif_tx_wake_queue(txq); + if (busy) { + __netif_tx_unlock(txq); + return budget; + } + opaque = virtqueue_enable_cb_prepare(sq->vq); done = napi_complete_done(napi, 0);
virtnet_poll_tx() support to return budget when busy to be rescheduled. When retval < budget, napi_poll() in dev.c will exit directly. And virtqueue_napi_complete() will be called to close napi. When retval == budget, the napi_poll() in dev.c will re-add napi to the queue. The purpose of this patch is to support xsk xmit in virtio_poll_tx() for subsequent patch. Signed-off-by: Xuan Zhuo <xuanzhuo@linux.alibaba.com> --- drivers/net/virtio/main.c | 6 ++++++ 1 file changed, 6 insertions(+)