diff --git a/sys/dev/ice/ice_adminq_cmd.h b/sys/dev/ice/ice_adminq_cmd.h --- a/sys/dev/ice/ice_adminq_cmd.h +++ b/sys/dev/ice/ice_adminq_cmd.h @@ -2131,6 +2131,7 @@ #define ICE_AQC_PORT_OPT_MAX_LANE_50G 6 #define ICE_AQC_PORT_OPT_MAX_LANE_100G 7 #define ICE_AQC_PORT_OPT_MAX_LANE_200G 8 +#define ICE_AQC_PORT_OPT_MAX_LANE_40G 9 u8 global_scid[2]; u8 phy_scid[2]; u8 pf2port_cid[2]; diff --git a/sys/dev/ice/ice_lib.c b/sys/dev/ice/ice_lib.c --- a/sys/dev/ice/ice_lib.c +++ b/sys/dev/ice/ice_lib.c @@ -11344,10 +11344,10 @@ return err; if (cage_type == 0x11 || /* SFP */ - cage_type == 0x12) { /* SFP28 */ + cage_type == 0x12) { /* SFP28 */ port_topology->serdes_lane_count = 1; } else if (cage_type == 0x13 || /* QSFP */ - cage_type == 0x14) { /* QSFP28 */ + cage_type == 0x14) { /* QSFP28 */ u8 max_speed = 0; err = ice_get_maxspeed(hw, port_topology->primary_serdes_lane, @@ -11362,7 +11362,8 @@ if (max_speed == ICE_AQC_PORT_OPT_MAX_LANE_100G) port_topology->serdes_lane_count = 4; - else if (max_speed == ICE_AQC_PORT_OPT_MAX_LANE_50G) + else if (max_speed == ICE_AQC_PORT_OPT_MAX_LANE_50G || + max_speed == ICE_AQC_PORT_OPT_MAX_LANE_40G) port_topology->serdes_lane_count = 2; else port_topology->serdes_lane_count = 1;