staging: dpaa2-ethsw: fix reported link state
authorIoana Ciornei <ioana.ciornei@nxp.com>
Tue, 14 Jul 2020 13:34:26 +0000 (16:34 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 15 Jul 2020 14:22:36 +0000 (16:22 +0200)
On the .ndo_open() callback set netif_carrier_off() until the link state
interrupt is received so that the LOWER_UP flag does not show up
incorrectly in the output of 'ip link show'.

Signed-off-by: Ioana Ciornei <ioana.ciornei@nxp.com>
Link: https://lore.kernel.org/r/20200714133431.17532-2-ioana.ciornei@nxp.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/fsl-dpaa2/ethsw/ethsw.c

index 546ad37..46aa370 100644 (file)
@@ -473,6 +473,13 @@ static int port_open(struct net_device *netdev)
        /* No need to allow Tx as control interface is disabled */
        netif_tx_stop_all_queues(netdev);
 
+       /* Explicitly set carrier off, otherwise
+        * netif_carrier_ok() will return true and cause 'ip link show'
+        * to report the LOWER_UP flag, even though the link
+        * notification wasn't even received.
+        */
+       netif_carrier_off(netdev);
+
        err = dpsw_if_enable(port_priv->ethsw_data->mc_io, 0,
                             port_priv->ethsw_data->dpsw_handle,
                             port_priv->idx);