Skip to content

Commit

Permalink
virtio_net: remove custom busy_poll
Browse files Browse the repository at this point in the history
Generic NAPI busy polling allows us to remove custom implementations
found in drivers.

It is possible further optimization could be done by testing
napi_complete_done() return value.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Acked-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Eric Dumazet authored and David S. Miller committed Feb 3, 2017
1 parent c45f8e1 commit ceef438
Showing 1 changed file with 0 additions and 41 deletions.
41 changes: 0 additions & 41 deletions drivers/net/virtio_net.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@
#include <linux/slab.h>
#include <linux/cpu.h>
#include <linux/average.h>
#include <net/busy_poll.h>

static int napi_weight = NAPI_POLL_WEIGHT;
module_param(napi_weight, int, 0444);
Expand Down Expand Up @@ -1024,43 +1023,6 @@ static int virtnet_poll(struct napi_struct *napi, int budget)
return received;
}

#ifdef CONFIG_NET_RX_BUSY_POLL
/* must be called with local_bh_disable()d */
static int virtnet_busy_poll(struct napi_struct *napi)
{
struct receive_queue *rq =
container_of(napi, struct receive_queue, napi);
struct virtnet_info *vi = rq->vq->vdev->priv;
int r, received = 0, budget = 4;

if (!(vi->status & VIRTIO_NET_S_LINK_UP))
return LL_FLUSH_FAILED;

if (!napi_schedule_prep(napi))
return LL_FLUSH_BUSY;

virtqueue_disable_cb(rq->vq);

again:
received += virtnet_receive(rq, budget);

r = virtqueue_enable_cb_prepare(rq->vq);
clear_bit(NAPI_STATE_SCHED, &napi->state);
if (unlikely(virtqueue_poll(rq->vq, r)) &&
napi_schedule_prep(napi)) {
virtqueue_disable_cb(rq->vq);
if (received < budget) {
budget -= received;
goto again;
} else {
__napi_schedule(napi);
}
}

return received;
}
#endif /* CONFIG_NET_RX_BUSY_POLL */

static int virtnet_open(struct net_device *dev)
{
struct virtnet_info *vi = netdev_priv(dev);
Expand Down Expand Up @@ -1816,9 +1778,6 @@ static const struct net_device_ops virtnet_netdev = {
.ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid,
#ifdef CONFIG_NET_POLL_CONTROLLER
.ndo_poll_controller = virtnet_netpoll,
#endif
#ifdef CONFIG_NET_RX_BUSY_POLL
.ndo_busy_poll = virtnet_busy_poll,
#endif
.ndo_xdp = virtnet_xdp,
};
Expand Down

0 comments on commit ceef438

Please sign in to comment.