[Intel-wired-lan] [PATCH] i40e: The state of phy may not be correct during power-on
xiao
534535881 at qq.com
Tue Apr 13 02:02:06 UTC 2021
On 4/10/21 2:12 AM, Kubalewski, Arkadiusz wrote:
>> -----Original Message-----
>> From: Intel-wired-lan <intel-wired-lan-bounces at osuosl.org> On Behalf Of xiao33522 at qq.com
>> Sent: piątek, 9 kwietnia 2021 11:18
>> To: Brandeburg, Jesse <jesse.brandeburg at intel.com>; Nguyen, Anthony L <anthony.l.nguyen at intel.com>
>> Cc: netdev at vger.kernel.org; xiaolinkui <xiaolinkui at kylinos.cn>; linux-kernel at vger.kernel.org; intel-wired-lan at lists.osuosl.org; kuba at kernel.org; davem at davemloft.net
>> Subject: [Intel-wired-lan] [PATCH] i40e: The state of phy may not be correct during power-on
>>
>> From: xiaolinkui <xiaolinkui at kylinos.cn>
>>
>> Sometimes the power on state of the x710 network card indicator is not right, and the indicator shows orange. At this time, the network card speed is Gigabit.
> By "power on state" you mean that it happens after power-up of the server?
Yes, it means that sometimes the boot state of the server is still in
the BIOS boot stage, and the network card indicator is wrong(orange
indicator).
>
>> After entering the system, check the network card status through the ethtool command as follows:
>>
>> [root at localhost ~]# ethtool enp132s0f0
>> Settings for enp132s0f0:
>> Supported ports: [ FIBRE ]
>> Supported link modes: 1000baseX/Full
>> 10000baseSR/Full
>> Supported pause frame use: Symmetric
>> Supports auto-negotiation: Yes
>> Supported FEC modes: Not reported
>> Advertised link modes: 1000baseX/Full
>> 10000baseSR/Full
>> Advertised pause frame use: No
>> Advertised auto-negotiation: Yes
>> Advertised FEC modes: Not reported
>> Speed: 1000Mb/s
>> Duplex: Full
>> Port: FIBRE
>> PHYAD: 0
>> Transceiver: internal
>> Auto-negotiation: off
>> Supports Wake-on: d
>> Wake-on: d
>> Current message level: 0x00000007 (7)
>> drv probe link
>> Link detected: yes
>>
>> We can see that the speed is 1000Mb/s.
>>
>> If you unplug and plug in the optical cable, it can be restored to 10g.
>> After this operation, the rate is as follows:
>>
>> [root at localhost ~]# ethtool enp132s0f0
>> Settings for enp132s0f0:
>> Supported ports: [ FIBRE ]
>> Supported link modes: 1000baseX/Full
>> 10000baseSR/Full
>> Supported pause frame use: Symmetric
>> Supports auto-negotiation: Yes
>> Supported FEC modes: Not reported
>> Advertised link modes: 1000baseX/Full
>> 10000baseSR/Full
>> Advertised pause frame use: No
>> Advertised auto-negotiation: Yes
>> Advertised FEC modes: Not reported
>> Speed: 10000Mb/s
>> Duplex: Full
>> Port: FIBRE
>> PHYAD: 0
>> Transceiver: internal
>> Auto-negotiation: off
>> Supports Wake-on: d
>> Wake-on: d
>> Current message level: 0x00000007 (7)
>> drv probe link
>> Link detected: yes
>>
>> Calling i40e_aq_set_link_restart_an can also achieve this function.
>> So we need to do a reset operation for the network card when the network card status is abnormal.
> Can't say much about the root cause of the issue right now,
> but I don't think it is good idea for the fix.
> This leads to braking existing link each time
> i40e_aq_get_link_info is called on 1 Gigabit PHY.
> For example 'ethtool -m <dev>' does that.
>
> Have you tried reloading the driver?
> Thanks!
> I tried to unload the driver again and then load the driver, but it didn't work.If I pull the fiber optic cable off and plug it in, it can be recovered from 1000Mb/s to 10000Mb/s.
>> Signed-off-by: xiaolinkui <xiaolinkui at kylinos.cn>
>> ---
>> drivers/net/ethernet/intel/i40e/i40e_common.c | 4 ++++
>> 1 file changed, 4 insertions(+)
>>
>> diff --git a/drivers/net/ethernet/intel/i40e/i40e_common.c b/drivers/net/ethernet/intel/i40e/i40e_common.c
>> index ec19e18305ec..dde0224776ac 100644
>> --- a/drivers/net/ethernet/intel/i40e/i40e_common.c
>> +++ b/drivers/net/ethernet/intel/i40e/i40e_common.c
>> @@ -1866,6 +1866,10 @@ i40e_status i40e_aq_get_link_info(struct i40e_hw *hw,
>> hw_link_info->max_frame_size = le16_to_cpu(resp->max_frame_size);
>> hw_link_info->pacing = resp->config & I40E_AQ_CONFIG_PACING_MASK;
>>
>> + if (hw_link_info->phy_type == I40E_PHY_TYPE_1000BASE_SX &&
>> + hw->mac.type == I40E_MAC_XL710)
>> + i40e_aq_set_link_restart_an(hw, true, NULL);
>> +
>> /* update fc info */
>> tx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_TX);
>> rx_pause = !!(resp->an_info & I40E_AQ_LINK_PAUSE_RX);
>> --
>> 2.17.1
>>
>> _______________________________________________
>> Intel-wired-lan mailing list
>> Intel-wired-lan at osuosl.org
>> https://lists.osuosl.org/mailman/listinfo/intel-wired-lan
>>
More information about the Intel-wired-lan
mailing list