diff --git a/drivers/staging/fsl_qbman/fsl_usdpaa.c b/drivers/staging/fsl_qbman/fsl_usdpaa.c index 9a9e7befa9bde1ff472a7f8af83a38c3eee9482f..8ad5d74dca73ed18a5210e0d27899901375fe4cb 100644 --- a/drivers/staging/fsl_qbman/fsl_usdpaa.c +++ b/drivers/staging/fsl_qbman/fsl_usdpaa.c @@ -1849,9 +1849,13 @@ ioctl_usdpaa_get_link_status(struct usdpaa_ioctl_link_status_args *input) if (net_dev == NULL) return -ENODEV; - input->link_status = netif_carrier_ok(net_dev); - input->link_autoneg = net_dev->phydev->autoneg; - input->link_duplex = net_dev->phydev->duplex; + if (net_dev->phydev == NULL) { /* Interface is down from kernel */ + input->link_status = ETH_LINK_DOWN; + } else { + input->link_status = netif_carrier_ok(net_dev); + input->link_autoneg = net_dev->phydev->autoneg; + input->link_duplex = net_dev->phydev->duplex; + } if (input->link_status) input->link_speed = net_dev->phydev->speed;