]> git.baikalelectronics.ru Git - kernel.git/commit
net: hns3: fix pause config problem after autoneg disabled
authorGuangbin Huang <huangguangbin2@huawei.com>
Wed, 27 Oct 2021 12:11:43 +0000 (20:11 +0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 Oct 2021 13:47:33 +0000 (14:47 +0100)
commit0a88471a16a28960deb749339b16eb6d122bed20
tree5a913be55eeb1481e4d668716853e34ad6968d32
parent6bad13ee21fba6bc27c1c73f484f16c40b0d608d
net: hns3: fix pause config problem after autoneg disabled

If a TP port is configured by follow steps:
1.ethtool -s ethx autoneg off speed 100 duplex full
2.ethtool -A ethx rx on tx on
3.ethtool -s ethx autoneg on(rx&tx negotiated pause results are off)
4.ethtool -s ethx autoneg off speed 100 duplex full

In step 3, driver will set rx&tx pause parameters of hardware to off as
pause parameters negotiated with link partner are off.

After step 4, the "ethtool -a ethx" command shows both rx and tx pause
parameters are on. However, pause parameters of hardware are still off
and port has no flow control function actually.

To fix this problem, if autoneg is disabled, driver uses its saved
parameters to restore pause of hardware. If the speed is not changed in
this case, there is no link state changed for phy, it will cause the pause
parameter is not taken effect, so we need to force phy to go down and up.

Fixes: 5177edc10ac1 ("net: hns3: modify how pause options is displayed")
Signed-off-by: Guangbin Huang <huangguangbin2@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hnae3.h
drivers/net/ethernet/hisilicon/hns3/hns3_ethtool.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_main.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.c
drivers/net/ethernet/hisilicon/hns3/hns3pf/hclge_tm.h