• C
    igc: fix link speed advertising · f1735ab7
    Corinna Vinschen 提交于
    stable inclusion
    from stable-5.10.13
    commit 4c919b215bb38f63d05bc0eb3701b5392e29e1bb
    bugzilla: 47995
    
    --------------------------------
    
    [ Upstream commit 329a3678 ]
    
    Link speed advertising in igc has two problems:
    
    - When setting the advertisement via ethtool, the link speed is converted
      to the legacy 32 bit representation for the intel PHY code.
      This inadvertently drops ETHTOOL_LINK_MODE_2500baseT_Full_BIT (being
      beyond bit 31).  As a result, any call to `ethtool -s ...' drops the
      2500Mbit/s link speed from the PHY settings.  Only reloading the driver
      alleviates that problem.
    
      Fix this by converting the ETHTOOL_LINK_MODE_2500baseT_Full_BIT to the
      Intel PHY ADVERTISE_2500_FULL bit explicitly.
    
    - Rather than checking the actual PHY setting, the .get_link_ksettings
      function always fills link_modes.advertising with all link speeds
      the device is capable of.
    
      Fix this by checking the PHY autoneg_advertised settings and report
      only the actually advertised speeds up to ethtool.
    
    Fixes: 8c5ad0da ("igc: Add ethtool support")
    Signed-off-by: NCorinna Vinschen <vinschen@redhat.com>
    Signed-off-by: NTony Nguyen <anthony.l.nguyen@intel.com>
    Signed-off-by: NSasha Levin <sashal@kernel.org>
    Signed-off-by: NZheng Zengkai <zhengzengkai@huawei.com>
    Acked-by: NXie XiuQi <xiexiuqi@huawei.com>
    f1735ab7
igc_ethtool.c 52.6 KB