Re: [PATCH] net: phylink: Fix flow control resolution
From: Date: Thu, 5 Sep 2019 19:46:18 +0300 > From: Stefan Chulski > > Regarding to IEEE 802.3-2015 standard section 2 > 28B.3 Priority resolution - Table 28-3 - Pause resolution > > In case of Local device Pause=1 AsymDir=0, Link partner > Pause=1 AsymDir=1, Local device resolution should be enable PAUSE > transmit, disable PAUSE receive. > And in case of Local device Pause=1 AsymDir=1, Link partner > Pause=1 AsymDir=0, Local device resolution should be enable PAUSE > receive, disable PAUSE transmit. > > Signed-off-by: Stefan Chulski > Reported-by: Shaul Ben-Mayor Applied and queued up for -stable, thanks.
Re: [PATCH] net: phylink: Fix flow control resolution
On Thu, Sep 05, 2019 at 07:46:18PM +0300, stef...@marvell.com wrote: > From: Stefan Chulski > > Regarding to IEEE 802.3-2015 standard section 2 > 28B.3 Priority resolution - Table 28-3 - Pause resolution > > In case of Local device Pause=1 AsymDir=0, Link partner > Pause=1 AsymDir=1, Local device resolution should be enable PAUSE > transmit, disable PAUSE receive. > And in case of Local device Pause=1 AsymDir=1, Link partner > Pause=1 AsymDir=0, Local device resolution should be enable PAUSE > receive, disable PAUSE transmit. > > Signed-off-by: Stefan Chulski > Reported-by: Shaul Ben-Mayor Good catch, thanks for the patch. Acked-by: Russell King Fixes: 9525ae83959b ("phylink: add phylink infrastructure") > --- > drivers/net/phy/phylink.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c > index a45c5de..a5a57ca 100644 > --- a/drivers/net/phy/phylink.c > +++ b/drivers/net/phy/phylink.c > @@ -376,8 +376,8 @@ static void phylink_get_fixed_state(struct phylink *pl, > struct phylink_link_stat > * Local device Link partner > * Pause AsymDir Pause AsymDir Result > *1 X 1 X TX+RX > - *0 1 1 1 RX > - *1 1 0 1 TX > + *0 1 1 1 TX > + *1 1 0 1 RX > */ > static void phylink_resolve_flow(struct phylink *pl, >struct phylink_link_state *state) > @@ -398,7 +398,7 @@ static void phylink_resolve_flow(struct phylink *pl, > new_pause = MLO_PAUSE_TX | MLO_PAUSE_RX; > else if (pause & MLO_PAUSE_ASYM) > new_pause = state->pause & MLO_PAUSE_SYM ? > - MLO_PAUSE_RX : MLO_PAUSE_TX; > + MLO_PAUSE_TX : MLO_PAUSE_RX; > } else { > new_pause = pl->link_config.pause & MLO_PAUSE_TXRX_MASK; > } > -- > 1.9.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
[PATCH] net: phylink: Fix flow control resolution
From: Stefan Chulski Regarding to IEEE 802.3-2015 standard section 2 28B.3 Priority resolution - Table 28-3 - Pause resolution In case of Local device Pause=1 AsymDir=0, Link partner Pause=1 AsymDir=1, Local device resolution should be enable PAUSE transmit, disable PAUSE receive. And in case of Local device Pause=1 AsymDir=1, Link partner Pause=1 AsymDir=0, Local device resolution should be enable PAUSE receive, disable PAUSE transmit. Signed-off-by: Stefan Chulski Reported-by: Shaul Ben-Mayor --- drivers/net/phy/phylink.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c index a45c5de..a5a57ca 100644 --- a/drivers/net/phy/phylink.c +++ b/drivers/net/phy/phylink.c @@ -376,8 +376,8 @@ static void phylink_get_fixed_state(struct phylink *pl, struct phylink_link_stat * Local device Link partner * Pause AsymDir Pause AsymDir Result *1 X 1 X TX+RX - *0 1 1 1 RX - *1 1 0 1 TX + *0 1 1 1 TX + *1 1 0 1 RX */ static void phylink_resolve_flow(struct phylink *pl, struct phylink_link_state *state) @@ -398,7 +398,7 @@ static void phylink_resolve_flow(struct phylink *pl, new_pause = MLO_PAUSE_TX | MLO_PAUSE_RX; else if (pause & MLO_PAUSE_ASYM) new_pause = state->pause & MLO_PAUSE_SYM ? -MLO_PAUSE_RX : MLO_PAUSE_TX; +MLO_PAUSE_TX : MLO_PAUSE_RX; } else { new_pause = pl->link_config.pause & MLO_PAUSE_TXRX_MASK; } -- 1.9.1