staging: fsl-dpaa2/ethsw: register_netdev only when ready
authorIoana Ciornei <ioana.ciornei@nxp.com>
Tue, 13 Aug 2019 12:43:06 +0000 (15:43 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 14 Aug 2019 14:46:25 +0000 (16:46 +0200)
The register_netdev() call should be made only when ready to process any
user request on the interface. Move the call to be the last one issued
in the probe sequence.

Reported-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/1565700187-16048-10-git-send-email-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/fsl-dpaa2/ethsw/ethsw.c

index 28da109..14a9eeb 100644 (file)
@@ -1588,23 +1588,21 @@ static int ethsw_probe_port(struct ethsw_core *ethsw, u16 port_idx)
        port_netdev->min_mtu = ETH_MIN_MTU;
        port_netdev->max_mtu = ETHSW_MAX_FRAME_LENGTH;
 
+       err = ethsw_port_init(port_priv, port_idx);
+       if (err)
+               goto err_port_probe;
+
        err = register_netdev(port_netdev);
        if (err < 0) {
                dev_err(dev, "register_netdev error %d\n", err);
-               goto err_register_netdev;
+               goto err_port_probe;
        }
 
        ethsw->ports[port_idx] = port_priv;
 
-       err = ethsw_port_init(port_priv, port_idx);
-       if (err)
-               goto err_ethsw_port_init;
-
        return 0;
 
-err_ethsw_port_init:
-       unregister_netdev(port_netdev);
-err_register_netdev:
+err_port_probe:
        free_netdev(port_netdev);
 
        return err;