diff options
Diffstat (limited to 'drivers/net/virtio_net.c')
| -rw-r--r-- | drivers/net/virtio_net.c | 23 | 
1 files changed, 11 insertions, 12 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 55db6a336f7e..3d97f158ec59 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -733,7 +733,7 @@ static struct sk_buff *receive_small(struct net_device *dev,  		pr_debug("%s: rx error: len %u exceeds max size %d\n",  			 dev->name, len, GOOD_PACKET_LEN);  		dev->stats.rx_length_errors++; -		goto err_len; +		goto err;  	}  	if (likely(!vi->xdp_enabled)) { @@ -812,7 +812,7 @@ static struct sk_buff *receive_small(struct net_device *dev,  			rcu_read_unlock();  			goto xdp_xmit;  		default: -			bpf_warn_invalid_xdp_action(act); +			bpf_warn_invalid_xdp_action(vi->dev, xdp_prog, act);  			fallthrough;  		case XDP_ABORTED:  			trace_xdp_exception(vi->dev, xdp_prog, act); @@ -825,10 +825,8 @@ static struct sk_buff *receive_small(struct net_device *dev,  skip_xdp:  	skb = build_skb(buf, buflen); -	if (!skb) { -		put_page(page); +	if (!skb)  		goto err; -	}  	skb_reserve(skb, headroom - delta);  	skb_put(skb, len);  	if (!xdp_prog) { @@ -839,13 +837,12 @@ skip_xdp:  	if (metasize)  		skb_metadata_set(skb, metasize); -err:  	return skb;  err_xdp:  	rcu_read_unlock();  	stats->xdp_drops++; -err_len: +err:  	stats->drops++;  	put_page(page);  xdp_xmit: @@ -1025,7 +1022,7 @@ static struct sk_buff *receive_mergeable(struct net_device *dev,  			rcu_read_unlock();  			goto xdp_xmit;  		default: -			bpf_warn_invalid_xdp_action(act); +			bpf_warn_invalid_xdp_action(vi->dev, xdp_prog, act);  			fallthrough;  		case XDP_ABORTED:  			trace_xdp_exception(vi->dev, xdp_prog, act); @@ -2174,7 +2171,9 @@ static void virtnet_cpu_notif_remove(struct virtnet_info *vi)  }  static void virtnet_get_ringparam(struct net_device *dev, -				struct ethtool_ringparam *ring) +				  struct ethtool_ringparam *ring, +				  struct kernel_ethtool_ringparam *kernel_ring, +				  struct netlink_ext_ack *extack)  {  	struct virtnet_info *vi = netdev_priv(dev); @@ -2694,7 +2693,7 @@ static void virtnet_tx_timeout(struct net_device *dev, unsigned int txqueue)  	netdev_err(dev, "TX timeout on queue: %u, sq: %s, vq: 0x%x, name: %s, %u usecs ago\n",  		   txqueue, sq->name, sq->vq->index, sq->vq->name, -		   jiffies_to_usecs(jiffies - txq->trans_start)); +		   jiffies_to_usecs(jiffies - READ_ONCE(txq->trans_start)));  }  static const struct net_device_ops virtnet_netdev = { @@ -3313,7 +3312,7 @@ static int virtnet_probe(struct virtio_device *vdev)  	return 0;  free_unregister_netdev: -	vi->vdev->config->reset(vdev); +	virtio_reset_device(vdev);  	unregister_netdev(dev);  free_failover: @@ -3329,7 +3328,7 @@ free:  static void remove_vq_common(struct virtnet_info *vi)  { -	vi->vdev->config->reset(vi->vdev); +	virtio_reset_device(vi->vdev);  	/* Free unused buffers in both send and recv, if any. */  	free_unused_bufs(vi);  |