#define ICE_AQC_PHY_CAPS_MASK                          ICE_M(0xff, 0)
        u8 low_power_ctrl;
 #define ICE_AQC_PHY_EN_D3COLD_LOW_POWER_AUTONEG                BIT(0)
+#define ICE_AQC_PHY_AN_EN_CLAUSE28                     BIT(1)
+#define ICE_AQC_PHY_AN_EN_CLAUSE73                     BIT(2)
+#define ICE_AQC_PHY_AN_EN_CLAUSE37                     BIT(3)
        __le16 eee_cap;
 #define ICE_AQC_PHY_EEE_EN_100BASE_TX                  BIT(0)
 #define ICE_AQC_PHY_EEE_EN_1000BASE_T                  BIT(1)
 
 
        return status;
 }
+
+/**
+ * ice_is_phy_caps_an_enabled - check if PHY capabilities autoneg is enabled
+ * @caps: get PHY capability data
+ */
+bool ice_is_phy_caps_an_enabled(struct ice_aqc_get_phy_caps_data *caps)
+{
+       if (caps->caps & ICE_AQC_PHY_AN_MODE ||
+           caps->low_power_ctrl & (ICE_AQC_PHY_AN_EN_CLAUSE28 |
+                                   ICE_AQC_PHY_AN_EN_CLAUSE73 |
+                                   ICE_AQC_PHY_AN_EN_CLAUSE37))
+               return true;
+
+       return false;
+}
 
 enum ice_status
 ice_get_link_default_override(struct ice_link_default_override_tlv *ldo,
                              struct ice_port_info *pi);
+bool ice_is_phy_caps_an_enabled(struct ice_aqc_get_phy_caps_data *caps);
 
 enum ice_fc_mode ice_caps_to_fc_mode(u8 caps);
 enum ice_fec_mode ice_caps_to_fec_mode(u8 caps, u8 fec_options);
 
        if (status)
                goto out;
 
-       pause->autoneg = ((pcaps->caps & ICE_AQC_PHY_AN_MODE) ?
-                       AUTONEG_ENABLE : AUTONEG_DISABLE);
+       pause->autoneg = ice_is_phy_caps_an_enabled(pcaps) ? AUTONEG_ENABLE :
+                                                            AUTONEG_DISABLE;
 
        if (dcbx_cfg->pfc.pfcena)
                /* PFC enabled so report LFC as off */
                return -EIO;
        }
 
-       is_an = ((pcaps->caps & ICE_AQC_PHY_AN_MODE) ?
-                       AUTONEG_ENABLE : AUTONEG_DISABLE);
+       is_an = ice_is_phy_caps_an_enabled(pcaps) ? AUTONEG_ENABLE :
+                                                   AUTONEG_DISABLE;
 
        kfree(pcaps);
 
 
 void ice_print_link_msg(struct ice_vsi *vsi, bool isup)
 {
        struct ice_aqc_get_phy_caps_data *caps;
+       const char *an_advertised;
        enum ice_status status;
        const char *fec_req;
        const char *speed;
        caps = kzalloc(sizeof(*caps), GFP_KERNEL);
        if (!caps) {
                fec_req = "Unknown";
+               an_advertised = "Unknown";
                goto done;
        }
 
        if (status)
                netdev_info(vsi->netdev, "Get phy capability failed.\n");
 
+       an_advertised = ice_is_phy_caps_an_enabled(caps) ? "On" : "Off";
+
        if (caps->link_fec_options & ICE_AQC_PHY_FEC_25G_RS_528_REQ ||
            caps->link_fec_options & ICE_AQC_PHY_FEC_25G_RS_544_REQ)
                fec_req = "RS-FEC";
        kfree(caps);
 
 done:
-       netdev_info(vsi->netdev, "NIC Link is up %sbps Full Duplex, Requested FEC: %s, Negotiated FEC: %s, Autoneg: %s, Flow Control: %s\n",
-                   speed, fec_req, fec, an, fc);
+       netdev_info(vsi->netdev, "NIC Link is up %sbps Full Duplex, Requested FEC: %s, Negotiated FEC: %s, Autoneg Advertised: %s, Autoneg Negotiated: %s, Flow Control: %s\n",
+                   speed, fec_req, fec, an_advertised, an, fc);
        ice_print_topo_conflict(vsi);
 }