forked from Minki/linux
virtio_net: remove ndo_poll_controller
As diagnosed by Song Liu, ndo_poll_controller() can be very dangerous on loaded hosts, since the cpu calling ndo_poll_controller() might steal all NAPI contexts (for all RX/TX queues of the NIC). This capture can last for unlimited amount of time, since one cpu is generally not able to drain all the queues under load. virto_net uses NAPI for TX completions, so we better let core networking stack call the napi->poll() to avoid the capture. Signed-off-by: Eric Dumazet <edumazet@google.com> Cc: "Michael S. Tsirkin" <mst@redhat.com> Cc: Jason Wang <jasowang@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4bd2c03be7
commit
260dd2c3e2
@ -1699,17 +1699,6 @@ static void virtnet_stats(struct net_device *dev,
|
||||
tot->rx_frame_errors = dev->stats.rx_frame_errors;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
static void virtnet_netpoll(struct net_device *dev)
|
||||
{
|
||||
struct virtnet_info *vi = netdev_priv(dev);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < vi->curr_queue_pairs; i++)
|
||||
napi_schedule(&vi->rq[i].napi);
|
||||
}
|
||||
#endif
|
||||
|
||||
static void virtnet_ack_link_announce(struct virtnet_info *vi)
|
||||
{
|
||||
rtnl_lock();
|
||||
@ -2447,9 +2436,6 @@ static const struct net_device_ops virtnet_netdev = {
|
||||
.ndo_get_stats64 = virtnet_stats,
|
||||
.ndo_vlan_rx_add_vid = virtnet_vlan_rx_add_vid,
|
||||
.ndo_vlan_rx_kill_vid = virtnet_vlan_rx_kill_vid,
|
||||
#ifdef CONFIG_NET_POLL_CONTROLLER
|
||||
.ndo_poll_controller = virtnet_netpoll,
|
||||
#endif
|
||||
.ndo_bpf = virtnet_xdp,
|
||||
.ndo_xdp_xmit = virtnet_xdp_xmit,
|
||||
.ndo_features_check = passthru_features_check,
|
||||
|
Loading…
Reference in New Issue
Block a user