Subject: Re: [PATCH] net: mvpp2: add delay at the end of .mac_prepare

From: Baruch Siach <[email-masked]>
Date: Sun, 01 May 2022 11:28:28 +0300

Hi Marcin,

On Sun, May 01 2022, Marcin Wojtas wrote:
> niedz., 1 maj 2022 o 09:57 Baruch Siach <[email-masked]> napisał(a):
>> On Thu, Apr 28 2022, Baruch Siach wrote:
>> > On Thu, Apr 28 2022, Marcin Wojtas wrote:
>> >> I booted MacchiatoBin doubleshot with DT (phy-mode set to "10gbase-r")
>> >> without your patch and the 3310 PHY is connected to 1G e1000 card.
>> >> After `ifconfig eth0 up` it properly drops to SGMII without any issue
>> >> in my setup:
>> >>
>> >> # ifconfig eth0 up
>> >> [   62.006580] mvpp2 f2000000.ethernet eth0: PHY
>> >> [f212a600.mdio-mii:00] driver [mv88x3310] (irq=POLL)
>> >> [   62.016777] mvpp2 f2000000.ethernet eth0: configuring for phy/sgmii link mode
>> >> # [   66.110289] mvpp2 f2000000.ethernet eth0: Link is Up - 1Gbps/Full
>> >> - flow control rx/tx
>> >> [   66.118270] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
>> >> # ifconfig eth0 192.168.1.1
>> >> # ping 192.168.1.2
>> >> PING 192.168.1.2 (192.168.1.2): 56 data bytes
>> >> 64 bytes from 192.168.1.2: seq=0 ttl=64 time=0.511 ms
>> >> 64 bytes from 192.168.1.2: seq=1 ttl=64 time=0.212 ms
>> >
>> > This is what I see here:
>> >
>> > [   46.097184] mvpp2 f2000000.ethernet eth0: PHY [f212a600.mdio-mii:02] driver [mv88x3310] (irq=POLL)
>> > [   46.115071] mvpp2 f2000000.ethernet eth0: configuring for phy/10gbase-r link mode
>> > [   50.249513] mvpp2 f2000000.ethernet eth0: Link is Up - 1Gbps/Full - flow control rx/tx
>> > [   50.257539] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
>> >
>> > It is almost the same except from the link mode. Why does it try sgmii
>> > even before auto-negotiation takes place?
>>
>> I have now tested on my Macchiatobin, and the issue does not
>> reproduce. PHY firmware version here:
>>
>> [    1.074605] mv88x3310 f212a600.mdio-mii:00: Firmware version 0.2.1.0
>>
>> But still I see that pl->link_config.interface is initially set to
>> PHY_INTERFACE_MODE_10GBASER:
>>
>> [   13.518118] mvpp2 f2000000.ethernet eth0: configuring for phy/10gbase-r link mode
>>
>> This is set in phylink_create() based on DT phy-mode. After interface
>> down/up sequence pl->link_config.interface matches the 1G wire rate:
>>
>> [   33.383971] mvpp2 f2000000.ethernet eth0: configuring for phy/sgmii link mode
>>
>> Do you have any idea where your initial PHY_INTERFACE_MODE_SGMII comes
>> from?
>>
>
> I have the same behavior, the link configured to 10GBASER and switches
> to 1G by linux init scripts. When I do the first ifconfig up, it's
> already at SGMII state:
>
> # dmesg | grep eth1
> [    2.071753] mvpp2 f2000000.ethernet eth1: Using random mac address
> 12:27:35:ff:2d:48
> [    3.461338] mvpp2 f2000000.ethernet eth1: PHY
> [f212a600.mdio-mii:00] driver [mv88x3310] (irq=POLL)
> [    3.679714] mvpp2 f2000000.ethernet eth1: configuring for
> phy/10gbase-r link mode
> [    7.775483] mvpp2 f2000000.ethernet eth1: Link is Up - 1Gbps/Full -
> flow control rx/tx
> [    7.783455] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready
> [    8.801107] mvpp2 f2000000.ethernet eth1: Link is Down
> # ifconfig eth1 up
> [   37.498617] mvpp2 f2000000.ethernet eth1: PHY
> [f212a600.mdio-mii:00] driver [mv88x3310] (irq=POLL)
> [   37.508812] mvpp2 f2000000.ethernet eth1: configuring for phy/sgmii link mode
> [   41.598331] mvpp2 f2000000.ethernet eth1: Link is Up - 1Gbps/Full -
> flow control rx/tx
> [   41.606309] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready

No wonder why you don't see this issue. Interface down/up sequence is
one of the "fixes" I tested.

Does it work for you if you remove the init script on first interface
up?

Thanks for testing,
baruch

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - [email-masked] - tel: +972.52.368.4656, http://www.tkos.co.il -