ice: Fix link_down_on_close message
authorKatarzyna Wieczerzycka <katarzyna.wieczerzycka@intel.com>
Fri, 15 Dec 2023 11:01:56 +0000 (12:01 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Jan 2024 16:16:48 +0000 (17:16 +0100)
[ Upstream commit 6a8d8bb55e7001de2d50920381cc858f3a3e9fb7 ]

The driver should not report an error message when for a medialess port
the link_down_on_close flag is enabled and the physical link cannot be
set down.

Fixes: 8ac7132704f3 ("ice: Fix interface being down after reset with link-down-on-close flag on")
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Signed-off-by: Katarzyna Wieczerzycka <katarzyna.wieczerzycka@intel.com>
Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/intel/ice/ice_main.c

index 7784135..66f4c54 100644 (file)
@@ -2146,7 +2146,7 @@ static int ice_configure_phy(struct ice_vsi *vsi)
 
        /* Ensure we have media as we cannot configure a medialess port */
        if (!(phy->link_info.link_info & ICE_AQ_MEDIA_AVAILABLE))
-               return -EPERM;
+               return -ENOMEDIUM;
 
        ice_print_topo_conflict(vsi);
 
@@ -9173,8 +9173,12 @@ int ice_stop(struct net_device *netdev)
                int link_err = ice_force_phys_link_state(vsi, false);
 
                if (link_err) {
-                       netdev_err(vsi->netdev, "Failed to set physical link down, VSI %d error %d\n",
-                                  vsi->vsi_num, link_err);
+                       if (link_err == -ENOMEDIUM)
+                               netdev_info(vsi->netdev, "Skipping link reconfig - no media attached, VSI %d\n",
+                                           vsi->vsi_num);
+                       else
+                               netdev_err(vsi->netdev, "Failed to set physical link down, VSI %d error %d\n",
+                                          vsi->vsi_num, link_err);
                        return -EIO;
                }
        }