This commit was manufactured by cvs2svn to create tag
[linux-2.6.git] / net / bridge / br_device.c
index 1b8dbdd..e91f80f 100644 (file)
 #include <asm/uaccess.h>
 #include "br_private.h"
 
-static int br_dev_do_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
-{
-       unsigned long args[4];
-       unsigned long *data;
-
-       if (cmd != SIOCDEVPRIVATE)
-               return -EOPNOTSUPP;
-
-       data = (unsigned long *)rq->ifr_data;
-       if (copy_from_user(args, data, 4*sizeof(unsigned long)))
-               return -EFAULT;
-
-       return br_ioctl_device(dev->priv, args[0], args[1], args[2], args[3]);
-}
-
 static struct net_device_stats *br_dev_get_stats(struct net_device *dev)
 {
        struct net_bridge *br;
@@ -104,6 +89,15 @@ static int br_dev_stop(struct net_device *dev)
        return 0;
 }
 
+static int br_change_mtu(struct net_device *dev, int new_mtu)
+{
+       if ((new_mtu < 68) || new_mtu > br_min_mtu(dev->priv))
+               return -EINVAL;
+
+       dev->mtu = new_mtu;
+       return 0;
+}
+
 static int br_dev_accept_fastpath(struct net_device *dev, struct dst_entry *dst)
 {
        return -1;
@@ -115,11 +109,12 @@ void br_dev_setup(struct net_device *dev)
 
        ether_setup(dev);
 
-       dev->do_ioctl = br_dev_do_ioctl;
+       dev->do_ioctl = br_dev_ioctl;
        dev->get_stats = br_dev_get_stats;
        dev->hard_start_xmit = br_dev_xmit;
        dev->open = br_dev_open;
        dev->set_multicast_list = br_dev_set_multicast_list;
+       dev->change_mtu = br_change_mtu;
        dev->destructor = free_netdev;
        SET_MODULE_OWNER(dev);
        dev->stop = br_dev_stop;