]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/net/virtio_net.c
mlxsw: item: Make char *buf arg constant for getters
[karo-tx-linux.git] / drivers / net / virtio_net.c
index fad84f3f41099dce6fb62399b0df9ac6be857318..720809f82a0e60aeb7c3f894d74eb2ba8eb90614 100644 (file)
@@ -1419,17 +1419,6 @@ static const struct ethtool_ops virtnet_ethtool_ops = {
        .set_settings = virtnet_set_settings,
 };
 
-#define MIN_MTU 68
-#define MAX_MTU 65535
-
-static int virtnet_change_mtu(struct net_device *dev, int new_mtu)
-{
-       if (new_mtu < MIN_MTU || new_mtu > MAX_MTU)
-               return -EINVAL;
-       dev->mtu = new_mtu;
-       return 0;
-}
-
 static const struct net_device_ops virtnet_netdev = {
        .ndo_open            = virtnet_open,
        .ndo_stop            = virtnet_close,
@@ -1437,7 +1426,6 @@ static const struct net_device_ops virtnet_netdev = {
        .ndo_validate_addr   = eth_validate_addr,
        .ndo_set_mac_address = virtnet_set_mac_address,
        .ndo_set_rx_mode     = virtnet_set_rx_mode,
-       .ndo_change_mtu      = virtnet_change_mtu,
        .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,
@@ -1748,6 +1736,9 @@ static bool virtnet_validate_features(struct virtio_device *vdev)
        return true;
 }
 
+#define MIN_MTU ETH_MIN_MTU
+#define MAX_MTU ETH_MAX_MTU
+
 static int virtnet_probe(struct virtio_device *vdev)
 {
        int i, err;
@@ -1821,6 +1812,10 @@ static int virtnet_probe(struct virtio_device *vdev)
 
        dev->vlan_features = dev->features;
 
+       /* MTU range: 68 - 65535 */
+       dev->min_mtu = MIN_MTU;
+       dev->max_mtu = MAX_MTU;
+
        /* Configuration may specify what MAC to use.  Otherwise random. */
        if (virtio_has_feature(vdev, VIRTIO_NET_F_MAC))
                virtio_cread_bytes(vdev,
@@ -1875,8 +1870,10 @@ static int virtnet_probe(struct virtio_device *vdev)
                mtu = virtio_cread16(vdev,
                                     offsetof(struct virtio_net_config,
                                              mtu));
-               if (virtnet_change_mtu(dev, mtu))
+               if (mtu < dev->min_mtu || mtu > dev->max_mtu)
                        __virtio_clear_bit(vdev, VIRTIO_NET_F_MTU);
+               else
+                       dev->mtu = mtu;
        }
 
        if (vi->any_header_sg)