@@ -966,8 +966,8 @@ static int mlxsw_sp_port_get_link_ksettings(struct net_device *dev,
966
966
967
967
cmd -> base .autoneg = autoneg ? AUTONEG_ENABLE : AUTONEG_DISABLE ;
968
968
cmd -> base .port = mlxsw_sp_port_connector_port (connector_type );
969
- ops -> from_ptys_speed_duplex (mlxsw_sp , netif_carrier_ok (dev ),
970
- eth_proto_oper , cmd );
969
+ ops -> from_ptys_link_mode (mlxsw_sp , netif_carrier_ok (dev ),
970
+ eth_proto_oper , cmd );
971
971
972
972
return 0 ;
973
973
}
@@ -1221,19 +1221,21 @@ mlxsw_sp1_from_ptys_speed(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto)
1221
1221
}
1222
1222
1223
1223
static void
1224
- mlxsw_sp1_from_ptys_speed_duplex (struct mlxsw_sp * mlxsw_sp , bool carrier_ok ,
1225
- u32 ptys_eth_proto ,
1226
- struct ethtool_link_ksettings * cmd )
1224
+ mlxsw_sp1_from_ptys_link_mode (struct mlxsw_sp * mlxsw_sp , bool carrier_ok ,
1225
+ u32 ptys_eth_proto ,
1226
+ struct ethtool_link_ksettings * cmd )
1227
1227
{
1228
- cmd -> base .speed = SPEED_UNKNOWN ;
1229
- cmd -> base .duplex = DUPLEX_UNKNOWN ;
1228
+ int i ;
1229
+
1230
+ cmd -> link_mode = -1 ;
1230
1231
1231
1232
if (!carrier_ok )
1232
1233
return ;
1233
1234
1234
- cmd -> base .speed = mlxsw_sp1_from_ptys_speed (mlxsw_sp , ptys_eth_proto );
1235
- if (cmd -> base .speed != SPEED_UNKNOWN )
1236
- cmd -> base .duplex = DUPLEX_FULL ;
1235
+ for (i = 0 ; i < MLXSW_SP1_PORT_LINK_MODE_LEN ; i ++ ) {
1236
+ if (ptys_eth_proto & mlxsw_sp1_port_link_mode [i ].mask )
1237
+ cmd -> link_mode = mlxsw_sp1_port_link_mode [i ].mask_ethtool ;
1238
+ }
1237
1239
}
1238
1240
1239
1241
static int mlxsw_sp1_ptys_max_speed (struct mlxsw_sp_port * mlxsw_sp_port , u32 * p_max_speed )
@@ -1322,7 +1324,7 @@ const struct mlxsw_sp_port_type_speed_ops mlxsw_sp1_port_type_speed_ops = {
1322
1324
.from_ptys_supported_port = mlxsw_sp1_from_ptys_supported_port ,
1323
1325
.from_ptys_link = mlxsw_sp1_from_ptys_link ,
1324
1326
.from_ptys_speed = mlxsw_sp1_from_ptys_speed ,
1325
- .from_ptys_speed_duplex = mlxsw_sp1_from_ptys_speed_duplex ,
1327
+ .from_ptys_link_mode = mlxsw_sp1_from_ptys_link_mode ,
1326
1328
.ptys_max_speed = mlxsw_sp1_ptys_max_speed ,
1327
1329
.to_ptys_advert_link = mlxsw_sp1_to_ptys_advert_link ,
1328
1330
.to_ptys_speed_lanes = mlxsw_sp1_to_ptys_speed_lanes ,
@@ -1658,19 +1660,24 @@ mlxsw_sp2_from_ptys_speed(struct mlxsw_sp *mlxsw_sp, u32 ptys_eth_proto)
1658
1660
}
1659
1661
1660
1662
static void
1661
- mlxsw_sp2_from_ptys_speed_duplex (struct mlxsw_sp * mlxsw_sp , bool carrier_ok ,
1662
- u32 ptys_eth_proto ,
1663
- struct ethtool_link_ksettings * cmd )
1663
+ mlxsw_sp2_from_ptys_link_mode (struct mlxsw_sp * mlxsw_sp , bool carrier_ok ,
1664
+ u32 ptys_eth_proto ,
1665
+ struct ethtool_link_ksettings * cmd )
1664
1666
{
1665
- cmd -> base .speed = SPEED_UNKNOWN ;
1666
- cmd -> base .duplex = DUPLEX_UNKNOWN ;
1667
+ struct mlxsw_sp2_port_link_mode link ;
1668
+ int i ;
1669
+
1670
+ cmd -> link_mode = -1 ;
1667
1671
1668
1672
if (!carrier_ok )
1669
1673
return ;
1670
1674
1671
- cmd -> base .speed = mlxsw_sp2_from_ptys_speed (mlxsw_sp , ptys_eth_proto );
1672
- if (cmd -> base .speed != SPEED_UNKNOWN )
1673
- cmd -> base .duplex = DUPLEX_FULL ;
1675
+ for (i = 0 ; i < MLXSW_SP2_PORT_LINK_MODE_LEN ; i ++ ) {
1676
+ if (ptys_eth_proto & mlxsw_sp2_port_link_mode [i ].mask ) {
1677
+ link = mlxsw_sp2_port_link_mode [i ];
1678
+ cmd -> link_mode = link .mask_ethtool [1 ];
1679
+ }
1680
+ }
1674
1681
}
1675
1682
1676
1683
static int mlxsw_sp2_ptys_max_speed (struct mlxsw_sp_port * mlxsw_sp_port , u32 * p_max_speed )
@@ -1793,7 +1800,7 @@ const struct mlxsw_sp_port_type_speed_ops mlxsw_sp2_port_type_speed_ops = {
1793
1800
.from_ptys_supported_port = mlxsw_sp2_from_ptys_supported_port ,
1794
1801
.from_ptys_link = mlxsw_sp2_from_ptys_link ,
1795
1802
.from_ptys_speed = mlxsw_sp2_from_ptys_speed ,
1796
- .from_ptys_speed_duplex = mlxsw_sp2_from_ptys_speed_duplex ,
1803
+ .from_ptys_link_mode = mlxsw_sp2_from_ptys_link_mode ,
1797
1804
.ptys_max_speed = mlxsw_sp2_ptys_max_speed ,
1798
1805
.to_ptys_advert_link = mlxsw_sp2_to_ptys_advert_link ,
1799
1806
.to_ptys_speed_lanes = mlxsw_sp2_to_ptys_speed_lanes ,
0 commit comments