diff options
Diffstat (limited to 'drivers/net/virtio_net.c')
| -rw-r--r-- | drivers/net/virtio_net.c | 26 | 
1 files changed, 5 insertions, 21 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index ba38765dc490..0ada48edf749 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -2264,12 +2264,13 @@ static void virtnet_update_settings(struct virtnet_info *vi)  	if (!virtio_has_feature(vi->vdev, VIRTIO_NET_F_SPEED_DUPLEX))  		return; -	speed = virtio_cread32(vi->vdev, offsetof(struct virtio_net_config, -						  speed)); +	virtio_cread_le(vi->vdev, struct virtio_net_config, speed, &speed); +  	if (ethtool_validate_speed(speed))  		vi->speed = speed; -	duplex = virtio_cread8(vi->vdev, offsetof(struct virtio_net_config, -						  duplex)); + +	virtio_cread_le(vi->vdev, struct virtio_net_config, duplex, &duplex); +  	if (ethtool_validate_duplex(duplex))  		vi->duplex = duplex;  } @@ -2490,28 +2491,11 @@ err:  	return err;  } -static u32 virtnet_xdp_query(struct net_device *dev) -{ -	struct virtnet_info *vi = netdev_priv(dev); -	const struct bpf_prog *xdp_prog; -	int i; - -	for (i = 0; i < vi->max_queue_pairs; i++) { -		xdp_prog = rtnl_dereference(vi->rq[i].xdp_prog); -		if (xdp_prog) -			return xdp_prog->aux->id; -	} -	return 0; -} -  static int virtnet_xdp(struct net_device *dev, struct netdev_bpf *xdp)  {  	switch (xdp->command) {  	case XDP_SETUP_PROG:  		return virtnet_xdp_set(dev, xdp->prog, xdp->extack); -	case XDP_QUERY_PROG: -		xdp->prog_id = virtnet_xdp_query(dev); -		return 0;  	default:  		return -EINVAL;  	}  |