diff mbox series

[net:] net: mvpp2: disable link IRQ waiting for IDLE frames

Message ID 1551289652-7377-1-git-send-email-mw@semihalf.com (mailing list archive)
State New, archived
Headers show
Series [net:] net: mvpp2: disable link IRQ waiting for IDLE frames | expand

Commit Message

Marcin Wojtas Feb. 27, 2019, 5:47 p.m. UTC
Current version of the driver was configuring XLG MAC
in a way to wait 3 IDLE frames before allowing for the
link-up interrupt to be triggered. This resulted in an
issue, preventing to detect the link change during RX
traffic on the interface. Fix that.

Fixes: 4bb043262878 ("net: mvpp2: phylink support")
Signed-off-by: Marcin Wojtas <mw@semihalf.com>
---
 drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Russell King (Oracle) Feb. 28, 2019, 9:36 a.m. UTC | #1
On Wed, Feb 27, 2019 at 06:47:32PM +0100, Marcin Wojtas wrote:
> Current version of the driver was configuring XLG MAC
> in a way to wait 3 IDLE frames before allowing for the
> link-up interrupt to be triggered. This resulted in an
> issue, preventing to detect the link change during RX
> traffic on the interface. Fix that.

What about noise sensitivity?  Does this now mean that on boards such as
Macchiatobin Single Shot or Clearfog GT9k where the serdes is connected
directly to a SFP cage, that noise on the serdes lines triggers a link
indication?

> 
> Fixes: 4bb043262878 ("net: mvpp2: phylink support")
> Signed-off-by: Marcin Wojtas <mw@semihalf.com>
> ---
>  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> index 16066c2..f1378f9 100644
> --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> @@ -4532,8 +4532,7 @@ static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
>  		ctrl0 |= MVPP22_XLG_CTRL0_RX_FLOW_CTRL_EN;
>  
>  	ctrl4 &= ~MVPP22_XLG_CTRL4_MACMODSELECT_GMAC;
> -	ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
> -		 MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
> +	ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC;
>  
>  	writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
>  	writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);
> -- 
> 2.7.4
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
>
Marcin Wojtas Feb. 28, 2019, 1:58 p.m. UTC | #2
Hi Russell,

czw., 28 lut 2019 o 10:36 Russell King - ARM Linux admin
<linux@armlinux.org.uk> napisał(a):
>
> On Wed, Feb 27, 2019 at 06:47:32PM +0100, Marcin Wojtas wrote:
> > Current version of the driver was configuring XLG MAC
> > in a way to wait 3 IDLE frames before allowing for the
> > link-up interrupt to be triggered. This resulted in an
> > issue, preventing to detect the link change during RX
> > traffic on the interface. Fix that.
>
> What about noise sensitivity?  Does this now mean that on boards such as
> Macchiatobin Single Shot or Clearfog GT9k where the serdes is connected
> directly to a SFP cage, that noise on the serdes lines triggers a link
> indication?
>

Afaik waiting for idle frames is not required by any standard. In fact
this feature of the XLG MAC caused a risk that after dropping the link
during data transfer it would never go up again until remote peer
stops it.

I tested it on 3 different boards with SerDes directly connected to
the SFP cage and I'm also not aware of any reporte about
noise-triggered false link interrupts in XLG MAC (proprietary Marvell
mvpp2x driver did not use waiting 3 idle frames feature). I'd rather
assume the MAC is not vulnerable to it, and only properly established
link can trigger an event.

Best regards,
Marcin

> >
> > Fixes: 4bb043262878 ("net: mvpp2: phylink support")
> > Signed-off-by: Marcin Wojtas <mw@semihalf.com>
> > ---
> >  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 +--
> >  1 file changed, 1 insertion(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > index 16066c2..f1378f9 100644
> > --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > @@ -4532,8 +4532,7 @@ static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
> >               ctrl0 |= MVPP22_XLG_CTRL0_RX_FLOW_CTRL_EN;
> >
> >       ctrl4 &= ~MVPP22_XLG_CTRL4_MACMODSELECT_GMAC;
> > -     ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
> > -              MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
> > +     ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC;
> >
> >       writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
> >       writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);
> > --
> > 2.7.4
> >
> >
> > _______________________________________________
> > linux-arm-kernel mailing list
> > linux-arm-kernel@lists.infradead.org
> > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> >
>
> --
> 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
Marcin Wojtas April 23, 2019, 4:08 p.m. UTC | #3
Hi David, Rusell,

czw., 28 lut 2019 o 14:58 Marcin Wojtas <mw@semihalf.com> napisał(a):
>
> Hi Russell,
>
> czw., 28 lut 2019 o 10:36 Russell King - ARM Linux admin
> <linux@armlinux.org.uk> napisał(a):
> >
> > On Wed, Feb 27, 2019 at 06:47:32PM +0100, Marcin Wojtas wrote:
> > > Current version of the driver was configuring XLG MAC
> > > in a way to wait 3 IDLE frames before allowing for the
> > > link-up interrupt to be triggered. This resulted in an
> > > issue, preventing to detect the link change during RX
> > > traffic on the interface. Fix that.
> >
> > What about noise sensitivity?  Does this now mean that on boards such as
> > Macchiatobin Single Shot or Clearfog GT9k where the serdes is connected
> > directly to a SFP cage, that noise on the serdes lines triggers a link
> > indication?
> >
>
> Afaik waiting for idle frames is not required by any standard. In fact
> this feature of the XLG MAC caused a risk that after dropping the link
> during data transfer it would never go up again until remote peer
> stops it.
>
> I tested it on 3 different boards with SerDes directly connected to
> the SFP cage and I'm also not aware of any reporte about
> noise-triggered false link interrupts in XLG MAC (proprietary Marvell
> mvpp2x driver did not use waiting 3 idle frames feature). I'd rather
> assume the MAC is not vulnerable to it, and only properly established
> link can trigger an event.
>

This patch seems to get forgotten - any objections to merge it?

Best regards,
Marcin

> Best regards,
> Marcin
>
> > >
> > > Fixes: 4bb043262878 ("net: mvpp2: phylink support")
> > > Signed-off-by: Marcin Wojtas <mw@semihalf.com>
> > > ---
> > >  drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c | 3 +--
> > >  1 file changed, 1 insertion(+), 2 deletions(-)
> > >
> > > diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > > index 16066c2..f1378f9 100644
> > > --- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > > +++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
> > > @@ -4532,8 +4532,7 @@ static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
> > >               ctrl0 |= MVPP22_XLG_CTRL0_RX_FLOW_CTRL_EN;
> > >
> > >       ctrl4 &= ~MVPP22_XLG_CTRL4_MACMODSELECT_GMAC;
> > > -     ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
> > > -              MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
> > > +     ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC;
> > >
> > >       writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
> > >       writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);
> > > --
> > > 2.7.4
> > >
> > >
> > > _______________________________________________
> > > linux-arm-kernel mailing list
> > > linux-arm-kernel@lists.infradead.org
> > > http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> > >
> >
> > --
> > 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
David Miller April 23, 2019, 5:26 p.m. UTC | #4
From: Marcin Wojtas <mw@semihalf.com>
Date: Tue, 23 Apr 2019 18:08:00 +0200

> Hi David, Rusell,
> 
> czw., 28 lut 2019 o 14:58 Marcin Wojtas <mw@semihalf.com> napisał(a):
>>
>> Hi Russell,
>>
>> czw., 28 lut 2019 o 10:36 Russell King - ARM Linux admin
>> <linux@armlinux.org.uk> napisał(a):
>> >
>> > On Wed, Feb 27, 2019 at 06:47:32PM +0100, Marcin Wojtas wrote:
>> > > Current version of the driver was configuring XLG MAC
>> > > in a way to wait 3 IDLE frames before allowing for the
>> > > link-up interrupt to be triggered. This resulted in an
>> > > issue, preventing to detect the link change during RX
>> > > traffic on the interface. Fix that.
>> >
>> > What about noise sensitivity?  Does this now mean that on boards such as
>> > Macchiatobin Single Shot or Clearfog GT9k where the serdes is connected
>> > directly to a SFP cage, that noise on the serdes lines triggers a link
>> > indication?
>> >
>>
>> Afaik waiting for idle frames is not required by any standard. In fact
>> this feature of the XLG MAC caused a risk that after dropping the link
>> during data transfer it would never go up again until remote peer
>> stops it.
>>
>> I tested it on 3 different boards with SerDes directly connected to
>> the SFP cage and I'm also not aware of any reporte about
>> noise-triggered false link interrupts in XLG MAC (proprietary Marvell
>> mvpp2x driver did not use waiting 3 idle frames feature). I'd rather
>> assume the MAC is not vulnerable to it, and only properly established
>> link can trigger an event.
>>
> 
> This patch seems to get forgotten - any objections to merge it?

If there is agreement, please repost it.

Thank you.
diff mbox series

Patch

diff --git a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
index 16066c2..f1378f9 100644
--- a/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
+++ b/drivers/net/ethernet/marvell/mvpp2/mvpp2_main.c
@@ -4532,8 +4532,7 @@  static void mvpp2_xlg_config(struct mvpp2_port *port, unsigned int mode,
 		ctrl0 |= MVPP22_XLG_CTRL0_RX_FLOW_CTRL_EN;
 
 	ctrl4 &= ~MVPP22_XLG_CTRL4_MACMODSELECT_GMAC;
-	ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC |
-		 MVPP22_XLG_CTRL4_EN_IDLE_CHECK;
+	ctrl4 |= MVPP22_XLG_CTRL4_FWD_FC | MVPP22_XLG_CTRL4_FWD_PFC;
 
 	writel(ctrl0, port->base + MVPP22_XLG_CTRL0_REG);
 	writel(ctrl4, port->base + MVPP22_XLG_CTRL4_REG);