For freeing DMA buffers we depend on nfp_net.fl_bufsz having the same
value as during allocation therefore in .ndo_change_mtu we must first
free the buffers and then change the setting.

Signed-off-by: Jakub Kicinski <jakub.kicin...@netronome.com>
Reviewed-by: Rolf Neugebauer <rolf.neugeba...@netronome.com>
---
 drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c 
b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
index 006d9600240f..b381682de3d6 100644
--- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
+++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c
@@ -1921,17 +1921,17 @@ static int nfp_net_change_mtu(struct net_device 
*netdev, int new_mtu)
                return -EINVAL;
        }
 
+       if (netif_running(netdev))
+               nfp_net_netdev_close(netdev);
+
        netdev->mtu = new_mtu;
 
        /* Freelist buffer size rounded up to the nearest 1K */
        tmp = new_mtu + ETH_HLEN + VLAN_HLEN + NFP_NET_MAX_PREPEND;
        nn->fl_bufsz = roundup(tmp, 1024);
 
-       /* restart if running */
-       if (netif_running(netdev)) {
-               nfp_net_netdev_close(netdev);
+       if (netif_running(netdev))
                ret = nfp_net_netdev_open(netdev);
-       }
 
        return ret;
 }
-- 
1.9.1

Reply via email to