From: Ulrich Hecht <uli+renesas@xxxxxxxx> Date: Wed, 5 Jun 2019 17:14:20 +0200 > @@ -1811,11 +1811,14 @@ static int ravb_do_ioctl(struct net_device *ndev, struct ifreq *req, int cmd) > static int ravb_change_mtu(struct net_device *ndev, int new_mtu) > { > if (netif_running(ndev)) > - return -EBUSY; > + ravb_close(ndev); > > ndev->mtu = new_mtu; > netdev_update_features(ndev); > > + if (netif_running(ndev)) > + return ravb_open(ndev); > + And if ravb_open() fails? The user sees a failure, but to the user the failure means the MTU change can't be done, yet the device has the new MTU set still. This really is terrible behavior. If you must do a prepare/commit kind of sequence for this to work properly if you are going to go down the road of taking the device down to change the MTU when the device is UP.