X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=datapath%2Fdp_dev.c;h=b0ba3017a2cdf35d5ec165e49ff63becf1c989c9;hb=2e8873af89047bc4093ad8f2755867af632b9363;hp=3902a8c5f2eb21e41070eeeb8dd777f63a421b08;hpb=0858ad2b9d2f594f99bb11fc9b331ce8b1de953d;p=openvswitch diff --git a/datapath/dp_dev.c b/datapath/dp_dev.c index 3902a8c5..b0ba3017 100644 --- a/datapath/dp_dev.c +++ b/datapath/dp_dev.c @@ -28,7 +28,6 @@ struct datapath *dp_dev_get_dp(struct net_device *netdev) { return dp_dev_priv(netdev)->dp; } -EXPORT_SYMBOL(dp_dev_get_dp); static struct net_device_stats *dp_dev_get_stats(struct net_device *netdev) { @@ -130,6 +129,15 @@ static struct ethtool_ops dp_ethtool_ops = { .get_tso = ethtool_op_get_tso, }; +static int dp_dev_change_mtu(struct net_device *dev, int new_mtu) +{ + if (new_mtu < 68 || new_mtu > dp_min_mtu(dp_dev_get_dp(dev))) + return -EINVAL; + + dev->mtu = new_mtu; + return 0; +} + static int dp_dev_init(struct net_device *netdev) { struct dp_dev *dp_dev = dp_dev_priv(netdev); @@ -162,6 +170,7 @@ do_setup(struct net_device *netdev) netdev->stop = dp_dev_stop; netdev->tx_queue_len = 0; netdev->set_mac_address = dp_dev_mac_addr; + netdev->change_mtu = dp_dev_change_mtu; netdev->init = dp_dev_init; netdev->destructor = dp_dev_free; @@ -202,16 +211,17 @@ struct net_device *dp_dev_create(struct datapath *dp, const char *dp_name, int p if (!netdev) return ERR_PTR(-ENOMEM); + dp_dev = dp_dev_priv(netdev); + dp_dev->dp = dp; + dp_dev->port_no = port_no; + dp_dev->dev = netdev; + err = register_netdevice(netdev); if (err) { free_netdev(netdev); return ERR_PTR(err); } - dp_dev = dp_dev_priv(netdev); - dp_dev->dp = dp; - dp_dev->port_no = port_no; - dp_dev->dev = netdev; return netdev; } @@ -225,4 +235,3 @@ int is_dp_dev(struct net_device *netdev) { return netdev->open == dp_dev_open; } -EXPORT_SYMBOL(is_dp_dev);