int mv_eth_change_mtu(struct net_device *dev, int mtu) { int old_mtu = dev->mtu; mtu = mv_eth_check_mtu_valid(dev, mtu); if (mtu < 0) return -EINVAL; if (!netif_running(dev)) { if (mv_eth_change_mtu_internals(dev, mtu) == -1) goto error; printk(KERN_NOTICE "%s: change mtu %d (buffer-size %d) to %d (buffer-size %d)\n", dev->name, old_mtu, RX_PKT_SIZE(old_mtu), dev->mtu, RX_PKT_SIZE(dev->mtu)); return 0; } if (mv_eth_check_mtu_internals(dev, mtu)) goto error; if (mv_eth_stop(dev)) { printk(KERN_ERR "%s: stop interface failed\n", dev->name); goto error; } if (mv_eth_change_mtu_internals(dev, mtu) == -1) { printk(KERN_ERR "%s change mtu internals failed\n", dev->name); goto error; } if (mv_eth_start(dev)) { printk(KERN_ERR "%s: start interface failed\n", dev->name); goto error; } printk(KERN_NOTICE "%s: change mtu %d (buffer-size %d) to %d (buffer-size %d)\n", dev->name, old_mtu, RX_PKT_SIZE(old_mtu), dev->mtu, RX_PKT_SIZE(dev->mtu)); return 0; error: printk(KERN_ERR "%s: change mtu failed\n", dev->name); return -1; }
int mv_eth_change_mtu( struct net_device *dev, int mtu ) { int old_mtu = dev->mtu; if(!netif_running(dev)) { if(mv_eth_change_mtu_internals(dev, mtu) == -1) { goto error; } printk( KERN_NOTICE "%s: change mtu %d (buffer-size %d) to %d (buffer-size %d)\n", dev->name, old_mtu, MV_RX_BUF_SIZE( old_mtu), dev->mtu, MV_RX_BUF_SIZE( dev->mtu) ); return 0; } if( mv_eth_stop( dev )) { printk( KERN_ERR "%s: stop interface failed\n", dev->name ); goto error; } if(mv_eth_change_mtu_internals(dev, mtu) == -1) { goto error; } if(mv_eth_start( dev )) { printk( KERN_ERR "%s: start interface failed\n", dev->name ); goto error; } printk( KERN_NOTICE "%s: change mtu %d (buffer-size %d) to %d (buffer-size %d)\n", dev->name, old_mtu, MV_RX_BUF_SIZE(old_mtu), dev->mtu, MV_RX_BUF_SIZE(dev->mtu)); return 0; error: printk( "%s: change mtu failed\n", dev->name ); return -1; }