- status = ice_get_phy_types(sc, &phy_low, &phy_high);
+ status = ice_aq_get_phy_caps(pi, false, ICE_AQC_REPORT_ACTIVE_CFG,
+ &pcaps, NULL);
if (status != ICE_SUCCESS) {
- /* Function already prints appropriate error
- * message
- */
+ device_printf(sc->dev,
+ "%s: ice_aq_get_phy_caps (ACTIVE) failed; status %s, aq_err %s\n",
+ __func__, ice_status_str(status),
+ ice_aq_str(sc->hw.adminq.sq_last_status));
return (status);
}
+ phy_low = le64toh(pcaps.phy_type_low);
+ phy_high = le64toh(pcaps.phy_type_high);
/* make sure the added bitmap is zero'd */
memset(already_added, 0, sizeof(already_added));
@@ -1930,10 +1933,17 @@
"Possible mis-configuration of the Ethernet port detected; please use the Intel (R) Ethernet Port Configuration Tool utility to address the issue.\n");
if ((pi->phy.link_info.link_info & ICE_AQ_MEDIA_AVAILABLE) &&
- "Link is disabled on this device because an unsupported module type was detected! Refer to the Intel (R) Ethernet Adapters and Devices User Guide for a list of supported modules.\n");
+ if (!(pi->phy.link_info.an_info & ICE_AQ_QUALIFIED_MODULE))
+ device_printf(dev,
+ "Link is disabled on this device because an unsupported module type was detected! Refer to the Intel (R) Ethernet Adapters and Devices User Guide for a list of supported modules.\n");
+ if (pi->phy.link_info.link_cfg_err & ICE_AQ_LINK_MODULE_POWER_UNSUPPORTED)
+ device_printf(dev,
+ "The module's power requirements exceed the device's power supply. Cannot start link.\n");
+ if (pi->phy.link_info.link_cfg_err & ICE_AQ_LINK_INVAL_MAX_POWER_LIMIT)
+ device_printf(dev,
+ "The installed module is incompatible with the device's NVM image. Cannot start link.\n");
+ }
if (!(pi->phy.link_info.link_info & ICE_AQ_MEDIA_AVAILABLE)) {
if (!ice_testandset_state(&sc->state, ICE_STATE_NO_MEDIA)) {
+ device_printf(dev, "Possible Solution 1: Manually set speed/duplex or use Intel(R) Ethernet Port Configuration Tool to change the port option.\n");
+ device_printf(dev, "Possible Solution 2: If the problem persists, use a cable/module that is found in the supported modules and cables list for this device.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_MOD_NOT_PRESENT:
+ device_printf(dev, "Module is not present.\n");
+ device_printf(dev, "Possible Solution 1: Check that the module is inserted correctly.\n");
+ device_printf(dev, "Possible Solution 2: If the problem persists, use a cable/module that is found in the supported modules and cables list for this device.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_INFO_MOD_UNDERUTILIZED:
+ device_printf(dev, "Underutilized module.\n");
+ device_printf(dev, "Possible Solution 1: Change or replace the module or cable.\n");
+ device_printf(dev, "Possible Solution 2: Use Intel(R) Ethernet Port Configuration Tool to change the port option.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_UNKNOWN_MOD_LENIENT:
+ device_printf(dev, "An unsupported module was detected.\n");
+ device_printf(dev, "Possible Solution 1: Check your cable connection.\n");
+ device_printf(dev, "Possible Solution 2: Change or replace the module or cable.\n");
+ device_printf(dev, "Possible Solution 3: Manually set speed and duplex.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_INVALID_LINK_CFG:
+ device_printf(dev, "Invalid link configuration.\n");
+ device_printf(dev, "Possible Solution: Update to the latest NVM image.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_PORT_UNREACHABLE:
+ device_printf(dev, "A port is unreachable.\n");
+ device_printf(dev, "Possible Solution 1: Use Intel(R) Ethernet Port Configuration Tool to change the port option.\n");
+ device_printf(dev, "Possible Solution 2: Update to the latest NVM image.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_INFO_PORT_SPEED_MOD_LIMITED:
+ device_printf(dev, "Port speed is limited due to module.\n");
+ device_printf(dev, "Possible Solution: Change the module or use Intel(R) Ethernet Port Configuration Tool to configure the port option to match the current module speed.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_PARALLEL_FAULT:
+ device_printf(dev, "A parallel fault was detected.\n");
+ device_printf(dev, "Possible Solution: Check link partner connection and configuration.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_INFO_PORT_SPEED_PHY_LIMITED:
+ device_printf(dev, "Port speed is limited by PHY capabilities.\n");
+ device_printf(dev, "Possible Solution 1: Change the module to align to port option.\n");
+ device_printf(dev, "Possible Solution 2: Use Intel(R) Ethernet Port Configuration Tool to change the port option.\n");
+ break;
+ case ICE_AQC_HEALTH_STATUS_ERR_NETLIST_TOPO:
+ device_printf(dev, "LOM topology netlist is corrupted.\n");
+ device_printf(dev, "Possible Solution: Update to the latest NVM image.\n");