On Sat, Jul 27, 2019 at 11:40:11AM +0200, René van Dorst wrote: > In phylink_parse_fixedlink() the pl->link_config.advertising bits are AND > with pl->supported, pl->supported is zeroed and only the speed/duplex > modes and MII bits are set. > So pl->link_config.advertising always loses the flow control/pause bits. > > By setting Pause and Asym_Pause bits in pl->supported, the flow control > work again when devicetree "pause" is set in fixes-link node and the MAC > advertise that is supports pause. > > Results with this patch. > > Legend: > - DT = 'Pause' is set in the fixed-link in devicetree. > - validate() = ‘Yes’ means phylink_set(mask, Pause) is set in the > validate(). > - flow = results reported my link is Up line. > > +-----+------------+-------+ > | DT | validate() | flow | > +-----+------------+-------+ > | Yes | Yes | rx/tx | > | No | Yes | off | > | Yes | No | off | > +-----+------------+-------+ > > Fixes: 9525ae83959b ("phylink: add phylink infrastructure") > Signed-off-by: René van Dorst <opensou...@vdorst.com>
Acked-by: Russell King <rmk+ker...@armlinux.org.uk> Thanks. > --- > drivers/net/phy/phylink.c | 2 ++ > 1 file changed, 2 insertions(+) > > diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c > index 5d0af041b8f9..a6aebaa14338 100644 > --- a/drivers/net/phy/phylink.c > +++ b/drivers/net/phy/phylink.c > @@ -216,6 +216,8 @@ static int phylink_parse_fixedlink(struct phylink *pl, > pl->supported, true); > linkmode_zero(pl->supported); > phylink_set(pl->supported, MII); > + phylink_set(pl->supported, Pause); > + phylink_set(pl->supported, Asym_Pause); > if (s) { > __set_bit(s->bit, pl->supported); > } else { > -- > 2.20.1 > > -- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTC broadband for 0.8mile line in suburbia: sync at 12.1Mbps down 622kbps up According to speedtest.net: 11.9Mbps down 500kbps up