@@ -1817,7 +1817,7 @@ igc_ethtool_set_link_ksettings(struct net_device *netdev,
1817
1817
struct igc_adapter * adapter = netdev_priv (netdev );
1818
1818
struct net_device * dev = adapter -> netdev ;
1819
1819
struct igc_hw * hw = & adapter -> hw ;
1820
- u32 advertising ;
1820
+ u16 advertised = 0 ;
1821
1821
1822
1822
/* When adapter in resetting mode, autoneg/speed/duplex
1823
1823
* cannot be changed
@@ -1842,18 +1842,33 @@ igc_ethtool_set_link_ksettings(struct net_device *netdev,
1842
1842
while (test_and_set_bit (__IGC_RESETTING , & adapter -> state ))
1843
1843
usleep_range (1000 , 2000 );
1844
1844
1845
- ethtool_convert_link_mode_to_legacy_u32 (& advertising ,
1846
- cmd -> link_modes .advertising );
1847
- /* Converting to legacy u32 drops ETHTOOL_LINK_MODE_2500baseT_Full_BIT.
1848
- * We have to check this and convert it to ADVERTISE_2500_FULL
1849
- * (aka ETHTOOL_LINK_MODE_2500baseX_Full_BIT) explicitly.
1850
- */
1851
- if (ethtool_link_ksettings_test_link_mode (cmd , advertising , 2500b aseT_Full ))
1852
- advertising |= ADVERTISE_2500_FULL ;
1845
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1846
+ 2500b aseT_Full ))
1847
+ advertised |= ADVERTISE_2500_FULL ;
1848
+
1849
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1850
+ 1000b aseT_Full ))
1851
+ advertised |= ADVERTISE_1000_FULL ;
1852
+
1853
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1854
+ 100b aseT_Full ))
1855
+ advertised |= ADVERTISE_100_FULL ;
1856
+
1857
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1858
+ 100b aseT_Half ))
1859
+ advertised |= ADVERTISE_100_HALF ;
1860
+
1861
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1862
+ 10b aseT_Full ))
1863
+ advertised |= ADVERTISE_10_FULL ;
1864
+
1865
+ if (ethtool_link_ksettings_test_link_mode (cmd , advertising ,
1866
+ 10b aseT_Half ))
1867
+ advertised |= ADVERTISE_10_HALF ;
1853
1868
1854
1869
if (cmd -> base .autoneg == AUTONEG_ENABLE ) {
1855
1870
hw -> mac .autoneg = 1 ;
1856
- hw -> phy .autoneg_advertised = advertising ;
1871
+ hw -> phy .autoneg_advertised = advertised ;
1857
1872
if (adapter -> fc_autoneg )
1858
1873
hw -> fc .requested_mode = igc_fc_default ;
1859
1874
} else {
0 commit comments