mirror of
https://github.com/torvalds/linux
synced 2024-11-05 18:23:50 +00:00
virtio_net: exploit napi_complete_done() return value
Since commit 364b605573
("net: busy-poll: return busypolling status to
drivers"), napi_complete_done() returns a boolean that can be used
by drivers to conditionally rearm interrupts.
This patch changes virtio_net to use this boolean to avoid a bit of
overhead for busy-poll users.
Jason reports about 1.1% improvement for 1 byte TCP_RR (burst 100).
Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Jason Wang <jasowang@redhat.com>
Cc: Michael S. Tsirkin <mst@redhat.com>
Cc: Willem de Bruijn <willemb@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
a076d1bdc6
commit
4d6308aac3
1 changed files with 6 additions and 5 deletions
|
@ -1012,11 +1012,12 @@ static int virtnet_poll(struct napi_struct *napi, int budget)
|
|||
/* Out of packets? */
|
||||
if (received < budget) {
|
||||
r = virtqueue_enable_cb_prepare(rq->vq);
|
||||
napi_complete_done(napi, received);
|
||||
if (unlikely(virtqueue_poll(rq->vq, r)) &&
|
||||
napi_schedule_prep(napi)) {
|
||||
virtqueue_disable_cb(rq->vq);
|
||||
__napi_schedule(napi);
|
||||
if (napi_complete_done(napi, received)) {
|
||||
if (unlikely(virtqueue_poll(rq->vq, r)) &&
|
||||
napi_schedule_prep(napi)) {
|
||||
virtqueue_disable_cb(rq->vq);
|
||||
__napi_schedule(napi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue