static const struct net_device_ops hdlcdev_ops = {
        .ndo_open       = hdlcdev_open,
        .ndo_stop       = hdlcdev_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hdlcdev_ioctl,
        .ndo_tx_timeout = hdlcdev_tx_timeout,
 
 static const struct net_device_ops c101_ops = {
        .ndo_open       = c101_open,
        .ndo_stop       = c101_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = c101_ioctl,
 };
 
 static const struct net_device_ops cosa_ops = {
        .ndo_open       = cosa_net_open,
        .ndo_stop       = cosa_net_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = cosa_net_ioctl,
        .ndo_tx_timeout = cosa_net_timeout,
 
 static const struct net_device_ops dscc4_ops = {
        .ndo_open       = dscc4_open,
        .ndo_stop       = dscc4_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = dscc4_ioctl,
        .ndo_tx_timeout = dscc4_tx_timeout,
 
 static const struct net_device_ops fst_ops = {
        .ndo_open       = fst_open,
        .ndo_stop       = fst_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = fst_ioctl,
        .ndo_tx_timeout = fst_tx_timeout,
 
 static const struct net_device_ops uhdlc_ops = {
        .ndo_open       = uhdlc_open,
        .ndo_stop       = uhdlc_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = uhdlc_ioctl,
 };
 
 
 static struct hdlc_proto *first_proto;
 
-int hdlc_change_mtu(struct net_device *dev, int new_mtu)
-{
-       if ((new_mtu < 68) || (new_mtu > HDLC_MAX_MTU))
-               return -EINVAL;
-       dev->mtu = new_mtu;
-       return 0;
-}
-
 static int hdlc_rcv(struct sk_buff *skb, struct net_device *dev,
                    struct packet_type *p, struct net_device *orig_dev)
 {
        dev->flags               = IFF_POINTOPOINT | IFF_NOARP;
        dev->priv_flags          = IFF_WAN_HDLC;
        dev->mtu                 = HDLC_MAX_MTU;
+       dev->min_mtu             = 68;
+       dev->max_mtu             = HDLC_MAX_MTU;
        dev->type                = ARPHRD_RAWHDLC;
        dev->hard_header_len     = 16;
        dev->addr_len            = 0;
 MODULE_DESCRIPTION("HDLC support module");
 MODULE_LICENSE("GPL v2");
 
-EXPORT_SYMBOL(hdlc_change_mtu);
 EXPORT_SYMBOL(hdlc_start_xmit);
 EXPORT_SYMBOL(hdlc_open);
 EXPORT_SYMBOL(hdlc_close);
 
 static const struct net_device_ops pvc_ops = {
        .ndo_open       = pvc_open,
        .ndo_stop       = pvc_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = pvc_xmit,
        .ndo_do_ioctl   = pvc_ioctl,
 };
        }
        dev->netdev_ops = &pvc_ops;
        dev->mtu = HDLC_MAX_MTU;
+       dev->min_mtu = 68;
+       dev->max_mtu = HDLC_MAX_MTU;
        dev->priv_flags |= IFF_NO_QUEUE;
        dev->ml_priv = pvc;
 
 
 static const struct net_device_ops hostess_ops = {
        .ndo_open       = hostess_open,
        .ndo_stop       = hostess_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hostess_ioctl,
 };
 
 static const struct net_device_ops hss_hdlc_ops = {
        .ndo_open       = hss_hdlc_open,
        .ndo_stop       = hss_hdlc_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hss_hdlc_ioctl,
 };
 
 static const struct net_device_ops lmc_ops = {
        .ndo_open       = lmc_open,
        .ndo_stop       = lmc_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = lmc_ioctl,
        .ndo_tx_timeout = lmc_driver_timeout,
 
 static const struct net_device_ops n2_ops = {
        .ndo_open       = n2_open,
        .ndo_stop       = n2_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = n2_ioctl,
 };
 
 static const struct net_device_ops pc300_ops = {
        .ndo_open       = pc300_open,
        .ndo_stop       = pc300_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = pc300_ioctl,
 };
 
 static const struct net_device_ops pci200_ops = {
        .ndo_open       = pci200_open,
        .ndo_stop       = pci200_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = pci200_ioctl,
 };
 
 static const struct net_device_ops sealevel_ops = {
        .ndo_open       = sealevel_open,
        .ndo_stop       = sealevel_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = sealevel_ioctl,
 };
 
 static const struct net_device_ops wanxl_ops = {
        .ndo_open       = wanxl_open,
        .ndo_stop       = wanxl_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = wanxl_ioctl,
        .ndo_get_stats  = wanxl_get_stats,
 
        unsigned char *xbuff, *rbuff;
        int len;
 
-       if (newmtu > 65534)
-               return -EINVAL;
-
        len = 2 * newmtu;
        xbuff = kmalloc(len + 4, GFP_ATOMIC);
        rbuff = kmalloc(len + 4, GFP_ATOMIC);
         */
 
        dev->mtu                = SL_MTU;
+       dev->min_mtu            = 0;
+       dev->max_mtu            = 65534;
        dev->netdev_ops         = &x25_asy_netdev_ops;
        dev->watchdog_timeo     = HZ*20;
        dev->hard_header_len    = 0;
 
 static const struct net_device_ops hdlcdev_ops = {
        .ndo_open       = hdlcdev_open,
        .ndo_stop       = hdlcdev_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hdlcdev_ioctl,
        .ndo_tx_timeout = hdlcdev_tx_timeout,
 
 static const struct net_device_ops hdlcdev_ops = {
        .ndo_open       = hdlcdev_open,
        .ndo_stop       = hdlcdev_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hdlcdev_ioctl,
        .ndo_tx_timeout = hdlcdev_tx_timeout,
 
 static const struct net_device_ops hdlcdev_ops = {
        .ndo_open       = hdlcdev_open,
        .ndo_stop       = hdlcdev_close,
-       .ndo_change_mtu = hdlc_change_mtu,
        .ndo_start_xmit = hdlc_start_xmit,
        .ndo_do_ioctl   = hdlcdev_ioctl,
        .ndo_tx_timeout = hdlcdev_tx_timeout,
 
 int hdlc_open(struct net_device *dev);
 /* Must be called by hardware driver when HDLC device is being closed */
 void hdlc_close(struct net_device *dev);
-/* May be used by hardware driver */
-int hdlc_change_mtu(struct net_device *dev, int new_mtu);
 /* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */
 netdev_tx_t hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev);
 
 
        return 0;
 }
 
-/* shamelessly stolen from drivers/net/net_init.c */
-static int lec_change_mtu(struct net_device *dev, int new_mtu)
-{
-       if ((new_mtu < 68) || (new_mtu > 18190))
-               return -EINVAL;
-       dev->mtu = new_mtu;
-       return 0;
-}
-
 static void lec_set_multicast_list(struct net_device *dev)
 {
        /*
        .ndo_open               = lec_open,
        .ndo_stop               = lec_close,
        .ndo_start_xmit         = lec_start_xmit,
-       .ndo_change_mtu         = lec_change_mtu,
        .ndo_tx_timeout         = lec_tx_timeout,
        .ndo_set_rx_mode        = lec_set_multicast_list,
 };
                if (!dev_lec[i])
                        return -ENOMEM;
                dev_lec[i]->netdev_ops = &lec_netdev_ops;
+               dev_lec[i]->max_mtu = 18190;
                snprintf(dev_lec[i]->name, IFNAMSIZ, "lec%d", i);
                if (register_netdev(dev_lec[i])) {
                        free_netdev(dev_lec[i]);