All of lore.kernel.org
 help / color / mirror / Atom feed
* mvpp2 switch from gmac to xlg requires ifdown/ifup
@ 2021-07-23  1:52 Marek Behún
  2021-07-23  8:05 ` Russell King (Oracle)
  0 siblings, 1 reply; 5+ messages in thread
From: Marek Behún @ 2021-07-23  1:52 UTC (permalink / raw)
  To: Russell King; +Cc: netdev

Hello Russell (and possibly others),

I discovered that with mvpp2 when switching from gmac (sgmii or
2500base-x mode) to xlg (10gbase-r mode) due to phylink requesting this
change, the link won't come up unless I do
  ifconfig ethX down
  ifconfig ethX up

Can be reproduced on MacchiatoBIN:
1. connect the two 10g RJ-45 ports (88X3310 PHY) with one cable
2. bring the interfaces up
3. the PHYs should link in 10gbase-t, links on MACs will go up in
   10gbase-r
4. use ethtool on one of the interfaces to advertise modes only up to
   2500base-t
5. the PHYs will unlink and then link at 2.5gbase-t, links on MACs will
   go up in 2500base-x
6. use ethtool on the same interface as in step 4 to advertise all
   supported modes

7. the PHYs will unlink and then link at 10gbase-t, BUT MACs won't link
   !!!
8. execute
     ifconfig ethX down ; ifconfig ethX up
   on both interfaces. After this, the MACs will successfully link in
   10gbase-r with the PHYs

It seems that the mvpp2 driver code needs to make additional stuff when
chaning mode from gmac to xlg. I haven't yet been able to find out
what, though.

BTW I discovered this because I am working on adding support for
5gbase-r mode to mvpp2, so that the PHY can support 5gbase-t on copper
side.
The ifdown/ifup cycle is required when switching from gmac to xlg, i.e.:
	sgmii		to	5gbase-r
	sgmii		to	10gbase-r
	2500base-x	to	5gbase-r
	2500base-x	to	10gbase-r
but also when switching from xlg to different xlg:
	5gbase-r	to	10gbase-r
	10gbase-r	to	5gbase-r

Did someone notice this bug? I see that Russell made some changes in
the phylink pcs API that touched mvpp2 (the .mac_config method got
split into .mac_prepare, .mac_config and .mac_finish, and also some
other changes). I haven't tried yet if the switch from gmac to xlg
worked at some time in the past. But if it did, maybe these changes
could be the cause?

Marek

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mvpp2 switch from gmac to xlg requires ifdown/ifup
  2021-07-23  1:52 mvpp2 switch from gmac to xlg requires ifdown/ifup Marek Behún
@ 2021-07-23  8:05 ` Russell King (Oracle)
  2021-07-26 15:52   ` Marek Behún
  0 siblings, 1 reply; 5+ messages in thread
From: Russell King (Oracle) @ 2021-07-23  8:05 UTC (permalink / raw)
  To: Marek Behún; +Cc: netdev

On Fri, Jul 23, 2021 at 03:52:02AM +0200, Marek Behún wrote:
> Hello Russell (and possibly others),
> 
> I discovered that with mvpp2 when switching from gmac (sgmii or
> 2500base-x mode) to xlg (10gbase-r mode) due to phylink requesting this
> change, the link won't come up unless I do
>   ifconfig ethX down
>   ifconfig ethX up
> 
> Can be reproduced on MacchiatoBIN:
> 1. connect the two 10g RJ-45 ports (88X3310 PHY) with one cable
> 2. bring the interfaces up
> 3. the PHYs should link in 10gbase-t, links on MACs will go up in
>    10gbase-r
> 4. use ethtool on one of the interfaces to advertise modes only up to
>    2500base-t
> 5. the PHYs will unlink and then link at 2.5gbase-t, links on MACs will
>    go up in 2500base-x
> 6. use ethtool on the same interface as in step 4 to advertise all
>    supported modes
> 
> 7. the PHYs will unlink and then link at 10gbase-t, BUT MACs won't link
>    !!!
> 8. execute
>      ifconfig ethX down ; ifconfig ethX up
>    on both interfaces. After this, the MACs will successfully link in
>    10gbase-r with the PHYs
> 
> It seems that the mvpp2 driver code needs to make additional stuff when
> chaning mode from gmac to xlg. I haven't yet been able to find out
> what, though.
> 
> BTW I discovered this because I am working on adding support for
> 5gbase-r mode to mvpp2, so that the PHY can support 5gbase-t on copper
> side.
> The ifdown/ifup cycle is required when switching from gmac to xlg, i.e.:
> 	sgmii		to	5gbase-r
> 	sgmii		to	10gbase-r
> 	2500base-x	to	5gbase-r
> 	2500base-x	to	10gbase-r
> but also when switching from xlg to different xlg:
> 	5gbase-r	to	10gbase-r
> 	10gbase-r	to	5gbase-r
> 
> Did someone notice this bug? I see that Russell made some changes in
> the phylink pcs API that touched mvpp2 (the .mac_config method got
> split into .mac_prepare, .mac_config and .mac_finish, and also some
> other changes). I haven't tried yet if the switch from gmac to xlg
> worked at some time in the past. But if it did, maybe these changes
> could be the cause?

What are the PHY leds doing when you encounter this bug?

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mvpp2 switch from gmac to xlg requires ifdown/ifup
  2021-07-23  8:05 ` Russell King (Oracle)
@ 2021-07-26 15:52   ` Marek Behún
  2021-07-26 16:43     ` Russell King (Oracle)
  0 siblings, 1 reply; 5+ messages in thread
From: Marek Behún @ 2021-07-26 15:52 UTC (permalink / raw)
  To: Russell King (Oracle); +Cc: netdev

On Fri, 23 Jul 2021 09:05:38 +0100
"Russell King (Oracle)" <linux@armlinux.org.uk> wrote:

> On Fri, Jul 23, 2021 at 03:52:02AM +0200, Marek Behún wrote:
> > Hello Russell (and possibly others),
> > 
> > I discovered that with mvpp2 when switching from gmac (sgmii or
> > 2500base-x mode) to xlg (10gbase-r mode) due to phylink requesting this
> > change, the link won't come up unless I do
> >   ifconfig ethX down
> >   ifconfig ethX up
> > 
> > Can be reproduced on MacchiatoBIN:
> > 1. connect the two 10g RJ-45 ports (88X3310 PHY) with one cable
> > 2. bring the interfaces up
> > 3. the PHYs should link in 10gbase-t, links on MACs will go up in
> >    10gbase-r
> > 4. use ethtool on one of the interfaces to advertise modes only up to
> >    2500base-t
> > 5. the PHYs will unlink and then link at 2.5gbase-t, links on MACs will
> >    go up in 2500base-x
> > 6. use ethtool on the same interface as in step 4 to advertise all
> >    supported modes
> > 
> > 7. the PHYs will unlink and then link at 10gbase-t, BUT MACs won't link
> >    !!!
> > 8. execute
> >      ifconfig ethX down ; ifconfig ethX up
> >    on both interfaces. After this, the MACs will successfully link in
> >    10gbase-r with the PHYs
> > 
> > It seems that the mvpp2 driver code needs to make additional stuff when
> > chaning mode from gmac to xlg. I haven't yet been able to find out
> > what, though.
> > 
> > BTW I discovered this because I am working on adding support for
> > 5gbase-r mode to mvpp2, so that the PHY can support 5gbase-t on copper
> > side.
> > The ifdown/ifup cycle is required when switching from gmac to xlg, i.e.:
> > 	sgmii		to	5gbase-r
> > 	sgmii		to	10gbase-r
> > 	2500base-x	to	5gbase-r
> > 	2500base-x	to	10gbase-r
> > but also when switching from xlg to different xlg:
> > 	5gbase-r	to	10gbase-r
> > 	10gbase-r	to	5gbase-r
> > 
> > Did someone notice this bug? I see that Russell made some changes in
> > the phylink pcs API that touched mvpp2 (the .mac_config method got
> > split into .mac_prepare, .mac_config and .mac_finish, and also some
> > other changes). I haven't tried yet if the switch from gmac to xlg
> > worked at some time in the past. But if it did, maybe these changes
> > could be the cause?  
> 
> What are the PHY leds doing when you encounter this bug?
> 

Table summary:

			PHY0/eth0	PHY1/eth1
			green	yellow	green	yellow
after boot		ON	OFF	ON	OFF
eth0 up			ON	OFF	ON	OFF
eth1 up			blink	ON	blink	ON
eth0 adv -10g -5g	blink	OFF	blink	OFF
eth0 adv +5g *	 	OFF	OFF	OFF	OFF
eth0 down		ON	OFF	ON	OFF
eth0 up			blink**	OFF	blink** OFF
eth1 down		ON	OFF	ON	OFF
eth1 up			blink	OFF	blink	OFF

 (*  PHYs are linked now, but MACs are not)
 (** blinks only for a while after link, pings do not work,
     read my opinion below)
 (The last 5 lines basically the same happens if I set it to advertise
  10g instead of 5g, but in case of 10g the yellow LED is ON when the
  PHYs are linked.)

In words:

After boot, the green LED is ON on both PHYs.

Bringing both interfaces up changes nothing.

Plugging cable so that they link (at 10gbase-t) bring the yellow LEDs
ON, and the green LEDs OFF, but the green LEDs blinks on activity.
(For example when pinging eth0's ipv6 address via eth1.)

Disabling advertisement of 10gbase-t and 5gbase-t on eth0 makes the
PHYs link at 2.5gbase-t. Both LEDs are OFF, but green blinks on
activity.

Enabling advertisement of 5gbase-t makes the PHYs link, but the MACs
do not link with the PHYs, and there is no blinking on activity, and
pings do not work.

Taking one interface (eth0) down and up makes the PHYs link (we are
still at 5gbase-t), and the green LEDs blink for a few times because of
activity on both PHYs. But the pings do not work. I think this is
because the eth0's PHY sent some neighbour discovery packets, and the
eth1's PHY received them. But pings do not work because those packets
don't go from eth1's PHY to eth1's MAC.

Taking the second interface (eth1) down and up makes the PHYs again
link at 5gbase-t, and the green LEDs start blinking on activity. Pings
work.

Marek

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mvpp2 switch from gmac to xlg requires ifdown/ifup
  2021-07-26 15:52   ` Marek Behún
@ 2021-07-26 16:43     ` Russell King (Oracle)
  2021-07-26 17:03       ` Marek Behún
  0 siblings, 1 reply; 5+ messages in thread
From: Russell King (Oracle) @ 2021-07-26 16:43 UTC (permalink / raw)
  To: Marek Behún; +Cc: netdev

On Mon, Jul 26, 2021 at 05:52:23PM +0200, Marek Behún wrote:
> On Fri, 23 Jul 2021 09:05:38 +0100
> "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> 
> > On Fri, Jul 23, 2021 at 03:52:02AM +0200, Marek Behún wrote:
> > > Hello Russell (and possibly others),
> > > 
> > > I discovered that with mvpp2 when switching from gmac (sgmii or
> > > 2500base-x mode) to xlg (10gbase-r mode) due to phylink requesting this
> > > change, the link won't come up unless I do
> > >   ifconfig ethX down
> > >   ifconfig ethX up
> > > 
> > > Can be reproduced on MacchiatoBIN:
> > > 1. connect the two 10g RJ-45 ports (88X3310 PHY) with one cable
> > > 2. bring the interfaces up
> > > 3. the PHYs should link in 10gbase-t, links on MACs will go up in
> > >    10gbase-r
> > > 4. use ethtool on one of the interfaces to advertise modes only up to
> > >    2500base-t
> > > 5. the PHYs will unlink and then link at 2.5gbase-t, links on MACs will
> > >    go up in 2500base-x
> > > 6. use ethtool on the same interface as in step 4 to advertise all
> > >    supported modes
> > > 
> > > 7. the PHYs will unlink and then link at 10gbase-t, BUT MACs won't link
> > >    !!!
> > > 8. execute
> > >      ifconfig ethX down ; ifconfig ethX up
> > >    on both interfaces. After this, the MACs will successfully link in
> > >    10gbase-r with the PHYs
> > > 
> > > It seems that the mvpp2 driver code needs to make additional stuff when
> > > chaning mode from gmac to xlg. I haven't yet been able to find out
> > > what, though.
> > > 
> > > BTW I discovered this because I am working on adding support for
> > > 5gbase-r mode to mvpp2, so that the PHY can support 5gbase-t on copper
> > > side.
> > > The ifdown/ifup cycle is required when switching from gmac to xlg, i.e.:
> > > 	sgmii		to	5gbase-r
> > > 	sgmii		to	10gbase-r
> > > 	2500base-x	to	5gbase-r
> > > 	2500base-x	to	10gbase-r
> > > but also when switching from xlg to different xlg:
> > > 	5gbase-r	to	10gbase-r
> > > 	10gbase-r	to	5gbase-r
> > > 
> > > Did someone notice this bug? I see that Russell made some changes in
> > > the phylink pcs API that touched mvpp2 (the .mac_config method got
> > > split into .mac_prepare, .mac_config and .mac_finish, and also some
> > > other changes). I haven't tried yet if the switch from gmac to xlg
> > > worked at some time in the past. But if it did, maybe these changes
> > > could be the cause?  
> > 
> > What are the PHY leds doing when you encounter this bug?
> > 
> 
> Table summary:
> 
> 			PHY0/eth0	PHY1/eth1
> 			green	yellow	green	yellow
> after boot		ON	OFF	ON	OFF
> eth0 up			ON	OFF	ON	OFF
> eth1 up			blink	ON	blink	ON
> eth0 adv -10g -5g	blink	OFF	blink	OFF
> eth0 adv +5g *	 	OFF	OFF	OFF	OFF
> eth0 down		ON	OFF	ON	OFF
> eth0 up			blink**	OFF	blink** OFF
> eth1 down		ON	OFF	ON	OFF
> eth1 up			blink	OFF	blink	OFF
> 
>  (*  PHYs are linked now, but MACs are not)
>  (** blinks only for a while after link, pings do not work,
>      read my opinion below)
>  (The last 5 lines basically the same happens if I set it to advertise
>   10g instead of 5g, but in case of 10g the yellow LED is ON when the
>   PHYs are linked.)
> 
> In words:
> 
> After boot, the green LED is ON on both PHYs.
> 
> Bringing both interfaces up changes nothing.
> 
> Plugging cable so that they link (at 10gbase-t) bring the yellow LEDs
> ON, and the green LEDs OFF, but the green LEDs blinks on activity.
> (For example when pinging eth0's ipv6 address via eth1.)
> 
> Disabling advertisement of 10gbase-t and 5gbase-t on eth0 makes the
> PHYs link at 2.5gbase-t. Both LEDs are OFF, but green blinks on
> activity.
> 
> Enabling advertisement of 5gbase-t makes the PHYs link, but the MACs
> do not link with the PHYs, and there is no blinking on activity, and
> pings do not work.
> 
> Taking one interface (eth0) down and up makes the PHYs link (we are
> still at 5gbase-t), and the green LEDs blink for a few times because of
> activity on both PHYs. But the pings do not work. I think this is
> because the eth0's PHY sent some neighbour discovery packets, and the
> eth1's PHY received them. But pings do not work because those packets
> don't go from eth1's PHY to eth1's MAC.
> 
> Taking the second interface (eth1) down and up makes the PHYs again
> link at 5gbase-t, and the green LEDs start blinking on activity. Pings
> work.

Hmm, the reason I asked was because I know the 88x3310 with older
firmware can get in a bit of a muddle when switching from SGMII back
to 10G mode. When it does, one of the link LEDs (green I think) blinks
rapidly while it is muddled, and iirc taking the interface down and
back up fixes it. There is no workaround for this other than upgrading
the PHY firmware.

If they only blink momentarily after establishing link, then that is
likely just the IPv6 router solicitation packets.

Hope that helps.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: mvpp2 switch from gmac to xlg requires ifdown/ifup
  2021-07-26 16:43     ` Russell King (Oracle)
@ 2021-07-26 17:03       ` Marek Behún
  0 siblings, 0 replies; 5+ messages in thread
From: Marek Behún @ 2021-07-26 17:03 UTC (permalink / raw)
  To: Russell King (Oracle); +Cc: netdev

On Mon, 26 Jul 2021 17:43:25 +0100
"Russell King (Oracle)" <linux@armlinux.org.uk> wrote:

> On Mon, Jul 26, 2021 at 05:52:23PM +0200, Marek Behún wrote:
> > On Fri, 23 Jul 2021 09:05:38 +0100
> > "Russell King (Oracle)" <linux@armlinux.org.uk> wrote:
> >   
> > > On Fri, Jul 23, 2021 at 03:52:02AM +0200, Marek Behún wrote:  
> > > > Hello Russell (and possibly others),
> > > > 
> > > > I discovered that with mvpp2 when switching from gmac (sgmii or
> > > > 2500base-x mode) to xlg (10gbase-r mode) due to phylink requesting this
> > > > change, the link won't come up unless I do
> > > >   ifconfig ethX down
> > > >   ifconfig ethX up
> > > > 
> > > > Can be reproduced on MacchiatoBIN:
> > > > 1. connect the two 10g RJ-45 ports (88X3310 PHY) with one cable
> > > > 2. bring the interfaces up
> > > > 3. the PHYs should link in 10gbase-t, links on MACs will go up in
> > > >    10gbase-r
> > > > 4. use ethtool on one of the interfaces to advertise modes only up to
> > > >    2500base-t
> > > > 5. the PHYs will unlink and then link at 2.5gbase-t, links on MACs will
> > > >    go up in 2500base-x
> > > > 6. use ethtool on the same interface as in step 4 to advertise all
> > > >    supported modes
> > > > 
> > > > 7. the PHYs will unlink and then link at 10gbase-t, BUT MACs won't link
> > > >    !!!
> > > > 8. execute
> > > >      ifconfig ethX down ; ifconfig ethX up
> > > >    on both interfaces. After this, the MACs will successfully link in
> > > >    10gbase-r with the PHYs
> > > > 
> > > > It seems that the mvpp2 driver code needs to make additional stuff when
> > > > chaning mode from gmac to xlg. I haven't yet been able to find out
> > > > what, though.
> > > > 
> > > > BTW I discovered this because I am working on adding support for
> > > > 5gbase-r mode to mvpp2, so that the PHY can support 5gbase-t on copper
> > > > side.
> > > > The ifdown/ifup cycle is required when switching from gmac to xlg, i.e.:
> > > > 	sgmii		to	5gbase-r
> > > > 	sgmii		to	10gbase-r
> > > > 	2500base-x	to	5gbase-r
> > > > 	2500base-x	to	10gbase-r
> > > > but also when switching from xlg to different xlg:
> > > > 	5gbase-r	to	10gbase-r
> > > > 	10gbase-r	to	5gbase-r
> > > > 
> > > > Did someone notice this bug? I see that Russell made some changes in
> > > > the phylink pcs API that touched mvpp2 (the .mac_config method got
> > > > split into .mac_prepare, .mac_config and .mac_finish, and also some
> > > > other changes). I haven't tried yet if the switch from gmac to xlg
> > > > worked at some time in the past. But if it did, maybe these changes
> > > > could be the cause?    
> > > 
> > > What are the PHY leds doing when you encounter this bug?
> > >   
> > 
> > Table summary:
> > 
> > 			PHY0/eth0	PHY1/eth1
> > 			green	yellow	green	yellow
> > after boot		ON	OFF	ON	OFF
> > eth0 up			ON	OFF	ON	OFF
> > eth1 up			blink	ON	blink	ON
> > eth0 adv -10g -5g	blink	OFF	blink	OFF
> > eth0 adv +5g *	 	OFF	OFF	OFF	OFF
> > eth0 down		ON	OFF	ON	OFF
> > eth0 up			blink**	OFF	blink** OFF
> > eth1 down		ON	OFF	ON	OFF
> > eth1 up			blink	OFF	blink	OFF
> > 
> >  (*  PHYs are linked now, but MACs are not)
> >  (** blinks only for a while after link, pings do not work,
> >      read my opinion below)
> >  (The last 5 lines basically the same happens if I set it to advertise
> >   10g instead of 5g, but in case of 10g the yellow LED is ON when the
> >   PHYs are linked.)
> > 
> > In words:
> > 
> > After boot, the green LED is ON on both PHYs.
> > 
> > Bringing both interfaces up changes nothing.
> > 
> > Plugging cable so that they link (at 10gbase-t) bring the yellow LEDs
> > ON, and the green LEDs OFF, but the green LEDs blinks on activity.
> > (For example when pinging eth0's ipv6 address via eth1.)
> > 
> > Disabling advertisement of 10gbase-t and 5gbase-t on eth0 makes the
> > PHYs link at 2.5gbase-t. Both LEDs are OFF, but green blinks on
> > activity.
> > 
> > Enabling advertisement of 5gbase-t makes the PHYs link, but the MACs
> > do not link with the PHYs, and there is no blinking on activity, and
> > pings do not work.
> > 
> > Taking one interface (eth0) down and up makes the PHYs link (we are
> > still at 5gbase-t), and the green LEDs blink for a few times because of
> > activity on both PHYs. But the pings do not work. I think this is
> > because the eth0's PHY sent some neighbour discovery packets, and the
> > eth1's PHY received them. But pings do not work because those packets
> > don't go from eth1's PHY to eth1's MAC.
> > 
> > Taking the second interface (eth1) down and up makes the PHYs again
> > link at 5gbase-t, and the green LEDs start blinking on activity. Pings
> > work.  
> 
> Hmm, the reason I asked was because I know the 88x3310 with older
> firmware can get in a bit of a muddle when switching from SGMII back
> to 10G mode. When it does, one of the link LEDs (green I think) blinks
> rapidly while it is muddled, and iirc taking the interface down and
> back up fixes it. There is no workaround for this other than upgrading
> the PHY firmware.
> 
> If they only blink momentarily after establishing link, then that is
> likely just the IPv6 router solicitation packets.
> 
> Hope that helps.
> 

Thanks, I will try different firmwares and let you know. I actually
currently have two different firmware version on the PHYs...

Marek

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2021-07-26 17:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-07-23  1:52 mvpp2 switch from gmac to xlg requires ifdown/ifup Marek Behún
2021-07-23  8:05 ` Russell King (Oracle)
2021-07-26 15:52   ` Marek Behún
2021-07-26 16:43     ` Russell King (Oracle)
2021-07-26 17:03       ` Marek Behún

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.