diff options
author | Jesper Dangaard Brouer <brouer@redhat.com> | 2018-05-31 05:00:08 -0400 |
---|---|---|
committer | Alexei Starovoitov <ast@kernel.org> | 2018-06-03 11:11:34 -0400 |
commit | 5d274cb4bbae481161737a1f652e276883d3d970 (patch) | |
tree | 34177ed99c06dc87e4841e963ee00b5ea7d3a22b | |
parent | 0c9d917b7d74b758af1b4e37996af48d95b2ef33 (diff) |
virtio_net: implement flush flag for ndo_xdp_xmit
When passed the XDP_XMIT_FLUSH flag virtnet_xdp_xmit now performs the
same virtqueue_kick as virtnet_xdp_flush.
Signed-off-by: Jesper Dangaard Brouer <brouer@redhat.com>
Acked-by: Song Liu <songliubraving@fb.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
-rw-r--r-- | drivers/net/virtio_net.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 4ed823625953..62ba8aadd8e6 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -481,7 +481,7 @@ static int virtnet_xdp_xmit(struct net_device *dev, | |||
481 | int err; | 481 | int err; |
482 | int i; | 482 | int i; |
483 | 483 | ||
484 | if (unlikely(flags & ~XDP_XMIT_FLAGS_NONE)) | 484 | if (unlikely(flags & ~XDP_XMIT_FLAGS_MASK)) |
485 | return -EINVAL; | 485 | return -EINVAL; |
486 | 486 | ||
487 | qp = vi->curr_queue_pairs - vi->xdp_queue_pairs + smp_processor_id(); | 487 | qp = vi->curr_queue_pairs - vi->xdp_queue_pairs + smp_processor_id(); |
@@ -507,6 +507,10 @@ static int virtnet_xdp_xmit(struct net_device *dev, | |||
507 | drops++; | 507 | drops++; |
508 | } | 508 | } |
509 | } | 509 | } |
510 | |||
511 | if (flags & XDP_XMIT_FLUSH) | ||
512 | virtqueue_kick(sq->vq); | ||
513 | |||
510 | return n - drops; | 514 | return n - drops; |
511 | } | 515 | } |
512 | 516 | ||