Uses the same method as various other drivers: shut the device down, change the MTU, then bring it back up again. Tested on Renesas D3 Draak and M3-W Salvator-X boards. Signed-off-by: Ulrich Hecht <uli+renesas@xxxxxxxx> Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@xxxxxxxxxxxx> Reviewed-by: Geert Uytterhoeven <geert+renesas@xxxxxxxxx> Reviewed-by: Sergei Shtylyov <sergei.shtylyov@xxxxxxxxxxxxxxxxxx> --- Hi! This revision reverts the MTU change if re-opening the device fails. CU Uli drivers/net/ethernet/renesas/ravb_main.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index ef8f089..402bcec 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -1810,12 +1810,24 @@ 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) { + unsigned int old_mtu = ndev->mtu; + if (netif_running(ndev)) - return -EBUSY; + ravb_close(ndev); ndev->mtu = new_mtu; netdev_update_features(ndev); + if (netif_running(ndev)) { + int err = ravb_open(ndev); + + if (err) { + ndev->mtu = old_mtu; + netdev_update_features(ndev); + return err; + } + } + return 0; } -- 2.7.4