@@ -1039,56 +1039,56 @@ int mlx5_query_dscp2prio(struct mlx5_core_dev *mdev, u8 *dscp2prio)
10391039
10401040/* speed in units of 1Mb */
10411041static const struct mlx5_link_info mlx5e_link_info [MLX5E_LINK_MODES_NUMBER ] = {
1042- [MLX5E_1000BASE_CX_SGMII ] = {.speed = 1000 },
1043- [MLX5E_1000BASE_KX ] = {.speed = 1000 },
1044- [MLX5E_10GBASE_CX4 ] = {.speed = 10000 },
1045- [MLX5E_10GBASE_KX4 ] = {.speed = 10000 },
1046- [MLX5E_10GBASE_KR ] = {.speed = 10000 },
1047- [MLX5E_20GBASE_KR2 ] = {.speed = 20000 },
1048- [MLX5E_40GBASE_CR4 ] = {.speed = 40000 },
1049- [MLX5E_40GBASE_KR4 ] = {.speed = 40000 },
1050- [MLX5E_56GBASE_R4 ] = {.speed = 56000 },
1051- [MLX5E_10GBASE_CR ] = {.speed = 10000 },
1052- [MLX5E_10GBASE_SR ] = {.speed = 10000 },
1053- [MLX5E_10GBASE_ER ] = {.speed = 10000 },
1054- [MLX5E_40GBASE_SR4 ] = {.speed = 40000 },
1055- [MLX5E_40GBASE_LR4 ] = {.speed = 40000 },
1056- [MLX5E_50GBASE_SR2 ] = {.speed = 50000 },
1057- [MLX5E_100GBASE_CR4 ] = {.speed = 100000 },
1058- [MLX5E_100GBASE_SR4 ] = {.speed = 100000 },
1059- [MLX5E_100GBASE_KR4 ] = {.speed = 100000 },
1060- [MLX5E_100GBASE_LR4 ] = {.speed = 100000 },
1061- [MLX5E_100BASE_TX ] = {.speed = 100 },
1062- [MLX5E_1000BASE_T ] = {.speed = 1000 },
1063- [MLX5E_10GBASE_T ] = {.speed = 10000 },
1064- [MLX5E_25GBASE_CR ] = {.speed = 25000 },
1065- [MLX5E_25GBASE_KR ] = {.speed = 25000 },
1066- [MLX5E_25GBASE_SR ] = {.speed = 25000 },
1067- [MLX5E_50GBASE_CR2 ] = {.speed = 50000 },
1068- [MLX5E_50GBASE_KR2 ] = {.speed = 50000 },
1042+ [MLX5E_1000BASE_CX_SGMII ] = {.speed = 1000 , . lanes = 1 },
1043+ [MLX5E_1000BASE_KX ] = {.speed = 1000 , . lanes = 1 },
1044+ [MLX5E_10GBASE_CX4 ] = {.speed = 10000 , . lanes = 4 },
1045+ [MLX5E_10GBASE_KX4 ] = {.speed = 10000 , . lanes = 4 },
1046+ [MLX5E_10GBASE_KR ] = {.speed = 10000 , . lanes = 1 },
1047+ [MLX5E_20GBASE_KR2 ] = {.speed = 20000 , . lanes = 2 },
1048+ [MLX5E_40GBASE_CR4 ] = {.speed = 40000 , . lanes = 4 },
1049+ [MLX5E_40GBASE_KR4 ] = {.speed = 40000 , . lanes = 4 },
1050+ [MLX5E_56GBASE_R4 ] = {.speed = 56000 , . lanes = 4 },
1051+ [MLX5E_10GBASE_CR ] = {.speed = 10000 , . lanes = 1 },
1052+ [MLX5E_10GBASE_SR ] = {.speed = 10000 , . lanes = 1 },
1053+ [MLX5E_10GBASE_ER ] = {.speed = 10000 , . lanes = 1 },
1054+ [MLX5E_40GBASE_SR4 ] = {.speed = 40000 , . lanes = 4 },
1055+ [MLX5E_40GBASE_LR4 ] = {.speed = 40000 , . lanes = 4 },
1056+ [MLX5E_50GBASE_SR2 ] = {.speed = 50000 , . lanes = 2 },
1057+ [MLX5E_100GBASE_CR4 ] = {.speed = 100000 , . lanes = 4 },
1058+ [MLX5E_100GBASE_SR4 ] = {.speed = 100000 , . lanes = 4 },
1059+ [MLX5E_100GBASE_KR4 ] = {.speed = 100000 , . lanes = 4 },
1060+ [MLX5E_100GBASE_LR4 ] = {.speed = 100000 , . lanes = 4 },
1061+ [MLX5E_100BASE_TX ] = {.speed = 100 , . lanes = 1 },
1062+ [MLX5E_1000BASE_T ] = {.speed = 1000 , . lanes = 1 },
1063+ [MLX5E_10GBASE_T ] = {.speed = 10000 , . lanes = 1 },
1064+ [MLX5E_25GBASE_CR ] = {.speed = 25000 , . lanes = 1 },
1065+ [MLX5E_25GBASE_KR ] = {.speed = 25000 , . lanes = 1 },
1066+ [MLX5E_25GBASE_SR ] = {.speed = 25000 , . lanes = 1 },
1067+ [MLX5E_50GBASE_CR2 ] = {.speed = 50000 , . lanes = 2 },
1068+ [MLX5E_50GBASE_KR2 ] = {.speed = 50000 , . lanes = 2 },
10691069};
10701070
10711071static const struct mlx5_link_info
10721072mlx5e_ext_link_info [MLX5E_EXT_LINK_MODES_NUMBER ] = {
1073- [MLX5E_SGMII_100M ] = {.speed = 100 },
1074- [MLX5E_1000BASE_X_SGMII ] = {.speed = 1000 },
1075- [MLX5E_5GBASE_R ] = {.speed = 5000 },
1076- [MLX5E_10GBASE_XFI_XAUI_1 ] = {.speed = 10000 },
1077- [MLX5E_40GBASE_XLAUI_4_XLPPI_4 ] = {.speed = 40000 },
1078- [MLX5E_25GAUI_1_25GBASE_CR_KR ] = {.speed = 25000 },
1079- [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2 ] = {.speed = 50000 },
1080- [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR ] = {.speed = 50000 },
1081- [MLX5E_CAUI_4_100GBASE_CR4_KR4 ] = {.speed = 100000 },
1082- [MLX5E_100GAUI_2_100GBASE_CR2_KR2 ] = {.speed = 100000 },
1083- [MLX5E_200GAUI_4_200GBASE_CR4_KR4 ] = {.speed = 200000 },
1084- [MLX5E_400GAUI_8_400GBASE_CR8 ] = {.speed = 400000 },
1085- [MLX5E_100GAUI_1_100GBASE_CR_KR ] = {.speed = 100000 },
1086- [MLX5E_200GAUI_2_200GBASE_CR2_KR2 ] = {.speed = 200000 },
1087- [MLX5E_400GAUI_4_400GBASE_CR4_KR4 ] = {.speed = 400000 },
1088- [MLX5E_800GAUI_8_800GBASE_CR8_KR8 ] = {.speed = 800000 },
1089- [MLX5E_200GAUI_1_200GBASE_CR1_KR1 ] = {.speed = 200000 },
1090- [MLX5E_400GAUI_2_400GBASE_CR2_KR2 ] = {.speed = 400000 },
1091- [MLX5E_800GAUI_4_800GBASE_CR4_KR4 ] = {.speed = 800000 },
1073+ [MLX5E_SGMII_100M ] = {.speed = 100 , . lanes = 1 },
1074+ [MLX5E_1000BASE_X_SGMII ] = {.speed = 1000 , . lanes = 1 },
1075+ [MLX5E_5GBASE_R ] = {.speed = 5000 , . lanes = 1 },
1076+ [MLX5E_10GBASE_XFI_XAUI_1 ] = {.speed = 10000 , . lanes = 1 },
1077+ [MLX5E_40GBASE_XLAUI_4_XLPPI_4 ] = {.speed = 40000 , . lanes = 4 },
1078+ [MLX5E_25GAUI_1_25GBASE_CR_KR ] = {.speed = 25000 , . lanes = 1 },
1079+ [MLX5E_50GAUI_2_LAUI_2_50GBASE_CR2_KR2 ] = {.speed = 50000 , . lanes = 2 },
1080+ [MLX5E_50GAUI_1_LAUI_1_50GBASE_CR_KR ] = {.speed = 50000 , . lanes = 1 },
1081+ [MLX5E_CAUI_4_100GBASE_CR4_KR4 ] = {.speed = 100000 , . lanes = 4 },
1082+ [MLX5E_100GAUI_2_100GBASE_CR2_KR2 ] = {.speed = 100000 , . lanes = 2 },
1083+ [MLX5E_200GAUI_4_200GBASE_CR4_KR4 ] = {.speed = 200000 , . lanes = 4 },
1084+ [MLX5E_400GAUI_8_400GBASE_CR8 ] = {.speed = 400000 , . lanes = 8 },
1085+ [MLX5E_100GAUI_1_100GBASE_CR_KR ] = {.speed = 100000 , . lanes = 1 },
1086+ [MLX5E_200GAUI_2_200GBASE_CR2_KR2 ] = {.speed = 200000 , . lanes = 2 },
1087+ [MLX5E_400GAUI_4_400GBASE_CR4_KR4 ] = {.speed = 400000 , . lanes = 4 },
1088+ [MLX5E_800GAUI_8_800GBASE_CR8_KR8 ] = {.speed = 800000 , . lanes = 8 },
1089+ [MLX5E_200GAUI_1_200GBASE_CR1_KR1 ] = {.speed = 200000 , . lanes = 1 },
1090+ [MLX5E_400GAUI_2_400GBASE_CR2_KR2 ] = {.speed = 400000 , . lanes = 2 },
1091+ [MLX5E_800GAUI_4_800GBASE_CR4_KR4 ] = {.speed = 800000 , . lanes = 4 },
10921092};
10931093
10941094int mlx5_port_query_eth_proto (struct mlx5_core_dev * dev , u8 port , bool ext ,
@@ -1168,8 +1168,10 @@ u32 mlx5_port_info2linkmodes(struct mlx5_core_dev *mdev,
11681168 mlx5e_port_get_link_mode_info_arr (mdev , & table , & max_size ,
11691169 force_legacy );
11701170 for (i = 0 ; i < max_size ; ++ i ) {
1171- if (table [i ].speed == info -> speed )
1172- link_modes |= MLX5E_PROT_MASK (i );
1171+ if (table [i ].speed == info -> speed ) {
1172+ if (!info -> lanes || table [i ].lanes == info -> lanes )
1173+ link_modes |= MLX5E_PROT_MASK (i );
1174+ }
11731175 }
11741176 return link_modes ;
11751177}
0 commit comments