Linux kernel -stable discussions
 help / color / mirror / Atom feed
* [PATCH stable 4.9 v3] net: dsa: bcm_sf2: force pause link settings
@ 2022-07-08  0:14 Florian Fainelli
  2022-07-08  0:14 ` [PATCH stable 4.14 " Florian Fainelli
  0 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2022-07-08  0:14 UTC (permalink / raw)
  To: stable
  Cc: Doug Berger, Florian Fainelli, Jakub Kicinski, Greg Kroah-Hartman,
	Sasha Levin, netdev, olteanv, andrew

From: Doug Berger <opendmb@gmail.com>

commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream

The pause settings reported by the PHY should also be applied to the
GMII port status override otherwise the switch will not generate pause
frames towards the link partner despite the advertisement saying
otherwise.

Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
Signed-off-by: Doug Berger <opendmb@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
Changes in v3:

- gate the flow control enabling to links that are auto-negotiated and
  in full duplex

Changes in v2:

- use both local and remote advertisement to determine when to apply
  flow control settings

 drivers/net/dsa/bcm_sf2.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index 40b3adf7ad99..f3d61f2bb0f7 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -600,7 +600,9 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
 	struct ethtool_eee *p = &priv->port_sts[port].eee;
 	u32 id_mode_dis = 0, port_mode;
+	u16 lcl_adv = 0, rmt_adv = 0;
 	const char *str = NULL;
+	u8 flowctrl = 0;
 	u32 reg;
 
 	switch (phydev->interface) {
@@ -667,10 +669,27 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 		break;
 	}
 
+	if (phydev->duplex == DUPLEX_FULL &&
+	    phydev->autoneg == AUTONEG_ENABLE) {
+		if (phydev->pause)
+			rmt_adv = LPA_PAUSE_CAP;
+		if (phydev->asym_pause)
+			rmt_adv |= LPA_PAUSE_ASYM;
+		if (phydev->advertising & ADVERTISED_Pause)
+			lcl_adv = ADVERTISE_PAUSE_CAP;
+		if (phydev->advertising & ADVERTISED_Asym_Pause)
+			lcl_adv |= ADVERTISE_PAUSE_ASYM;
+		flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
+	}
+
 	if (phydev->link)
 		reg |= LINK_STS;
 	if (phydev->duplex == DUPLEX_FULL)
 		reg |= DUPLX_MODE;
+	if (flowctrl & FLOW_CTRL_TX)
+		reg |= TXFLOW_CNTL;
+	if (flowctrl & FLOW_CTRL_RX)
+		reg |= RXFLOW_CNTL;
 
 	core_writel(priv, reg, CORE_STS_OVERRIDE_GMIIP_PORT(port));
 
-- 
2.25.1


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

* [PATCH stable 4.14 v3] net: dsa: bcm_sf2: force pause link settings
  2022-07-08  0:14 [PATCH stable 4.9 v3] net: dsa: bcm_sf2: force pause link settings Florian Fainelli
@ 2022-07-08  0:14 ` Florian Fainelli
  2022-07-12 19:18   ` Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2022-07-08  0:14 UTC (permalink / raw)
  To: stable
  Cc: Doug Berger, Florian Fainelli, Jakub Kicinski, Greg Kroah-Hartman,
	Sasha Levin, netdev, olteanv, andrew

From: Doug Berger <opendmb@gmail.com>

commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream

The pause settings reported by the PHY should also be applied to the
GMII port status override otherwise the switch will not generate pause
frames towards the link partner despite the advertisement saying
otherwise.

Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
Signed-off-by: Doug Berger <opendmb@gmail.com>
Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
---
Changes in v3:

- gate the flow control enabling to links that are auto-negotiated and
  in full duplex

Changes in v2:

- use both local and remote advertisement to determine when to apply
  flow control settings

 drivers/net/dsa/bcm_sf2.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/drivers/net/dsa/bcm_sf2.c b/drivers/net/dsa/bcm_sf2.c
index 11a72c4cbb92..2279e5e2deee 100644
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
@@ -625,7 +625,9 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 	struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
 	struct ethtool_eee *p = &priv->port_sts[port].eee;
 	u32 id_mode_dis = 0, port_mode;
+	u16 lcl_adv = 0, rmt_adv = 0;
 	const char *str = NULL;
+	u8 flowctrl = 0;
 	u32 reg, offset;
 
 	if (priv->type == BCM7445_DEVICE_ID)
@@ -697,10 +699,27 @@ static void bcm_sf2_sw_adjust_link(struct dsa_switch *ds, int port,
 		break;
 	}
 
+	if (phydev->duplex == DUPLEX_FULL &&
+	    phydev->autoneg == AUTONEG_ENABLE) {
+		if (phydev->pause)
+			rmt_adv = LPA_PAUSE_CAP;
+		if (phydev->asym_pause)
+			rmt_adv |= LPA_PAUSE_ASYM;
+		if (phydev->advertising & ADVERTISED_Pause)
+			lcl_adv = ADVERTISE_PAUSE_CAP;
+		if (phydev->advertising & ADVERTISED_Asym_Pause)
+			lcl_adv |= ADVERTISE_PAUSE_ASYM;
+		flowctrl = mii_resolve_flowctrl_fdx(lcl_adv, rmt_adv);
+	}
+
 	if (phydev->link)
 		reg |= LINK_STS;
 	if (phydev->duplex == DUPLEX_FULL)
 		reg |= DUPLX_MODE;
+	if (flowctrl & FLOW_CTRL_TX)
+		reg |= TXFLOW_CNTL;
+	if (flowctrl & FLOW_CTRL_RX)
+		reg |= RXFLOW_CNTL;
 
 	core_writel(priv, reg, offset);
 
-- 
2.25.1


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

* Re: [PATCH stable 4.14 v3] net: dsa: bcm_sf2: force pause link settings
  2022-07-08  0:14 ` [PATCH stable 4.14 " Florian Fainelli
@ 2022-07-12 19:18   ` Greg Kroah-Hartman
  2022-07-12 19:30     ` Florian Fainelli
  0 siblings, 1 reply; 6+ messages in thread
From: Greg Kroah-Hartman @ 2022-07-12 19:18 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: stable, Doug Berger, Jakub Kicinski, Sasha Levin, netdev, olteanv,
	andrew

On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> From: Doug Berger <opendmb@gmail.com>
> 
> commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> 
> The pause settings reported by the PHY should also be applied to the
> GMII port status override otherwise the switch will not generate pause
> frames towards the link partner despite the advertisement saying
> otherwise.
> 
> Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> Signed-off-by: Doug Berger <opendmb@gmail.com>
> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> ---
> Changes in v3:
> 
> - gate the flow control enabling to links that are auto-negotiated and
>   in full duplex
> 

Are these versions better / ok now?

thanks,

greg k-h

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

* Re: [PATCH stable 4.14 v3] net: dsa: bcm_sf2: force pause link settings
  2022-07-12 19:18   ` Greg Kroah-Hartman
@ 2022-07-12 19:30     ` Florian Fainelli
  2022-07-12 22:07       ` Vladimir Oltean
  0 siblings, 1 reply; 6+ messages in thread
From: Florian Fainelli @ 2022-07-12 19:30 UTC (permalink / raw)
  To: Greg Kroah-Hartman
  Cc: stable, Doug Berger, Jakub Kicinski, Sasha Levin, netdev, olteanv,
	andrew

On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
>> From: Doug Berger <opendmb@gmail.com>
>>
>> commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
>>
>> The pause settings reported by the PHY should also be applied to the
>> GMII port status override otherwise the switch will not generate pause
>> frames towards the link partner despite the advertisement saying
>> otherwise.
>>
>> Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
>> Signed-off-by: Doug Berger <opendmb@gmail.com>
>> Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
>> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
>> ---
>> Changes in v3:
>>
>> - gate the flow control enabling to links that are auto-negotiated and
>>    in full duplex
>>
> 
> Are these versions better / ok now?

Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:

https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/

so yes, these are good now. Thanks and sorry for the noise.
-- 
Florian

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

* Re: [PATCH stable 4.14 v3] net: dsa: bcm_sf2: force pause link settings
  2022-07-12 19:30     ` Florian Fainelli
@ 2022-07-12 22:07       ` Vladimir Oltean
  2022-07-15 14:37         ` Greg Kroah-Hartman
  0 siblings, 1 reply; 6+ messages in thread
From: Vladimir Oltean @ 2022-07-12 22:07 UTC (permalink / raw)
  To: Florian Fainelli
  Cc: Greg Kroah-Hartman, stable, Doug Berger, Jakub Kicinski,
	Sasha Levin, netdev, andrew

On Tue, Jul 12, 2022 at 12:30:00PM -0700, Florian Fainelli wrote:
> On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> > On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> > > From: Doug Berger <opendmb@gmail.com>
> > > 
> > > commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> > > 
> > > The pause settings reported by the PHY should also be applied to the
> > > GMII port status override otherwise the switch will not generate pause
> > > frames towards the link partner despite the advertisement saying
> > > otherwise.
> > > 
> > > Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> > > Signed-off-by: Doug Berger <opendmb@gmail.com>
> > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > > Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> > > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > > ---
> > > Changes in v3:
> > > 
> > > - gate the flow control enabling to links that are auto-negotiated and
> > >    in full duplex
> > > 
> > 
> > Are these versions better / ok now?
> 
> Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:
> 
> https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/
> 
> so yes, these are good now. Thanks and sorry for the noise.
> -- 
> Florian

Sorry, I tend not to leave review tags on backported patches. I should
have left a message stating that I looked at these patches and they look ok.

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

* Re: [PATCH stable 4.14 v3] net: dsa: bcm_sf2: force pause link settings
  2022-07-12 22:07       ` Vladimir Oltean
@ 2022-07-15 14:37         ` Greg Kroah-Hartman
  0 siblings, 0 replies; 6+ messages in thread
From: Greg Kroah-Hartman @ 2022-07-15 14:37 UTC (permalink / raw)
  To: Vladimir Oltean
  Cc: Florian Fainelli, stable, Doug Berger, Jakub Kicinski,
	Sasha Levin, netdev, andrew

On Wed, Jul 13, 2022 at 01:07:28AM +0300, Vladimir Oltean wrote:
> On Tue, Jul 12, 2022 at 12:30:00PM -0700, Florian Fainelli wrote:
> > On 7/12/22 12:18, Greg Kroah-Hartman wrote:
> > > On Thu, Jul 07, 2022 at 05:14:05PM -0700, Florian Fainelli wrote:
> > > > From: Doug Berger <opendmb@gmail.com>
> > > > 
> > > > commit 7c97bc0128b2eecc703106112679a69d446d1a12 upstream
> > > > 
> > > > The pause settings reported by the PHY should also be applied to the
> > > > GMII port status override otherwise the switch will not generate pause
> > > > frames towards the link partner despite the advertisement saying
> > > > otherwise.
> > > > 
> > > > Fixes: 246d7f773c13 ("net: dsa: add Broadcom SF2 switch driver")
> > > > Signed-off-by: Doug Berger <opendmb@gmail.com>
> > > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> > > > Link: https://lore.kernel.org/r/20220623030204.1966851-1-f.fainelli@gmail.com
> > > > Signed-off-by: Jakub Kicinski <kuba@kernel.org>
> > > > ---
> > > > Changes in v3:
> > > > 
> > > > - gate the flow control enabling to links that are auto-negotiated and
> > > >    in full duplex
> > > > 
> > > 
> > > Are these versions better / ok now?
> > 
> > Vladimir "soft" acked it when posting the v3 to v2 incremental diff here:
> > 
> > https://lore.kernel.org/stable/20220707221537.atc4b2k7fifhvaej@skbuf/
> > 
> > so yes, these are good now. Thanks and sorry for the noise.
> > -- 
> > Florian
> 
> Sorry, I tend not to leave review tags on backported patches. I should
> have left a message stating that I looked at these patches and they look ok.

Thanks, both now queued up.

greg k-h

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

end of thread, other threads:[~2022-07-15 14:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-07-08  0:14 [PATCH stable 4.9 v3] net: dsa: bcm_sf2: force pause link settings Florian Fainelli
2022-07-08  0:14 ` [PATCH stable 4.14 " Florian Fainelli
2022-07-12 19:18   ` Greg Kroah-Hartman
2022-07-12 19:30     ` Florian Fainelli
2022-07-12 22:07       ` Vladimir Oltean
2022-07-15 14:37         ` Greg Kroah-Hartman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox