Message ID | ca2cef5c582bea958e300b39eb508d08675d1106.1697093455.git.hengqi@linux.alibaba.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio-net: support dynamic coalescing moderation | expand |
On Thu, Oct 12, 2023 at 3:44 PM Heng Qi <hengqi@linux.alibaba.com> wrote: > > rx netdim needs to count the traffic during a complete napi process, > and start updating and comparing samples to make decisions after > the napi ends. Let virtqueue_napi_complete() return true if napi is done, > otherwise vice versa. > > Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> Acked-by: Jason Wang <jasowang@redhat.com> Thanks > --- > drivers/net/virtio_net.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c > index a52fd743504a..cf5d2ef4bd24 100644 > --- a/drivers/net/virtio_net.c > +++ b/drivers/net/virtio_net.c > @@ -431,7 +431,7 @@ static void virtqueue_napi_schedule(struct napi_struct *napi, > } > } > > -static void virtqueue_napi_complete(struct napi_struct *napi, > +static bool virtqueue_napi_complete(struct napi_struct *napi, > struct virtqueue *vq, int processed) > { > int opaque; > @@ -440,9 +440,13 @@ static void virtqueue_napi_complete(struct napi_struct *napi, > if (napi_complete_done(napi, processed)) { > if (unlikely(virtqueue_poll(vq, opaque))) > virtqueue_napi_schedule(napi, vq); > + else > + return true; > } else { > virtqueue_disable_cb(vq); > } > + > + return false; > } > > static void skb_xmit_done(struct virtqueue *vq) > -- > 2.19.1.6.gb485710b >
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index a52fd743504a..cf5d2ef4bd24 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -431,7 +431,7 @@ static void virtqueue_napi_schedule(struct napi_struct *napi, } } -static void virtqueue_napi_complete(struct napi_struct *napi, +static bool virtqueue_napi_complete(struct napi_struct *napi, struct virtqueue *vq, int processed) { int opaque; @@ -440,9 +440,13 @@ static void virtqueue_napi_complete(struct napi_struct *napi, if (napi_complete_done(napi, processed)) { if (unlikely(virtqueue_poll(vq, opaque))) virtqueue_napi_schedule(napi, vq); + else + return true; } else { virtqueue_disable_cb(vq); } + + return false; } static void skb_xmit_done(struct virtqueue *vq)
rx netdim needs to count the traffic during a complete napi process, and start updating and comparing samples to make decisions after the napi ends. Let virtqueue_napi_complete() return true if napi is done, otherwise vice versa. Signed-off-by: Heng Qi <hengqi@linux.alibaba.com> --- drivers/net/virtio_net.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-)