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;