All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathias Thore <Mathias.Thore@infinera.com>
To: Christophe Leroy <christophe.leroy@c-s.fr>,
	"leoyang.li@nxp.com" <leoyang.li@nxp.com>,
	"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
	"linuxppc-dev@lists.ozlabs.org" <linuxppc-dev@lists.ozlabs.org>,
	David Gounaris <David.Gounaris@infinera.com>,
	Joakim Tjernlund <Joakim.Tjernlund@infinera.com>
Subject: Re: [PATCH] ucc_geth: Reset BQL queue when stopping device
Date: Mon, 28 Jan 2019 14:36:41 +0000	[thread overview]
Message-ID: <DM6PR10MB37217EA1DBEFE3D5CEB5A85084960@DM6PR10MB3721.namprd10.prod.outlook.com> (raw)
In-Reply-To: <6bc7e64a-b91a-cb6e-ed65-5e412cef3a76@c-s.fr>

Hi,


This is what we observed: there was a storm on the medium so that our controller could not do its TX, resulting in timeout. When timeout occurs, the driver clears all descriptors from the TX queue. The function called in this patch is used to reflect this clearing also in the BQL layer. Without it, the controller would get stuck, unable to perform TX, even several minutes after the storm had ended. Bringing the device down and then up again would solve the problem, but this patch also solves it automatically.


Some other drivers do the same, for example e1000e driver calls netdev_reset_queue in its e1000_clean_tx_ring function. It is possible that other drivers should do the same; I have no way of verifying this.


Regards,

Mathias

--


From: Christophe Leroy <christophe.leroy@c-s.fr>
Sent: Monday, January 28, 2019 10:48 AM
To: Mathias Thore; leoyang.li@nxp.com; netdev@vger.kernel.org; linuxppc-dev@lists.ozlabs.org; David Gounaris; Joakim Tjernlund
Subject: Re: [PATCH] ucc_geth: Reset BQL queue when stopping device
  

CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless you recognize the sender and know the content is safe.


Hi,

Le 28/01/2019 à 10:07, Mathias Thore a écrit :
> After a timeout event caused by for example a broadcast storm, when
> the MAC and PHY are reset, the BQL TX queue needs to be reset as
> well. Otherwise, the device will exhibit severe performance issues
> even after the storm has ended.

What are the symptomns ?

Is this reset needed on any network driver in that case, or is it
something particular for the ucc_geth ?
For instance, the freescale fs_enet doesn't have that reset. Should it
have it too ?

Christophe

>
> Co-authored-by: David Gounaris <david.gounaris@infinera.com>
> Signed-off-by: Mathias Thore <mathias.thore@infinera.com>
> ---
>   drivers/net/ethernet/freescale/ucc_geth.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/drivers/net/ethernet/freescale/ucc_geth.c b/drivers/net/ethernet/freescale/ucc_geth.c
> index c3d539e209ed..eb3e65e8868f 100644
> --- a/drivers/net/ethernet/freescale/ucc_geth.c
> +++ b/drivers/net/ethernet/freescale/ucc_geth.c
> @@ -1879,6 +1879,8 @@ static void ucc_geth_free_tx(struct ucc_geth_private *ugeth)
>       u16 i, j;
>       u8 __iomem *bd;
>
> +     netdev_reset_queue(ugeth->ndev);
> +
>       ug_info = ugeth->ug_info;
>       uf_info = &ug_info->uf_info;
>
>
    

  reply	other threads:[~2019-01-28 14:36 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-01-28  9:07 [PATCH] ucc_geth: Reset BQL queue when stopping device Mathias Thore
2019-01-28  9:07 ` Mathias Thore
2019-01-28  9:48 ` Christophe Leroy
2019-01-28 14:36   ` Mathias Thore [this message]
2019-01-28 21:36     ` Li Yang
2019-01-28 21:36       ` Li Yang
2019-01-29  8:07       ` Mathias Thore
2019-01-29  8:07         ` Mathias Thore
2019-01-29 19:50         ` Li Yang
2019-01-29 19:50           ` Li Yang
2019-01-29 23:33         ` David Miller
2019-01-29 23:33           ` David Miller
2019-01-30 18:37 ` David Miller
2019-01-30 18:37   ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=DM6PR10MB37217EA1DBEFE3D5CEB5A85084960@DM6PR10MB3721.namprd10.prod.outlook.com \
    --to=mathias.thore@infinera.com \
    --cc=David.Gounaris@infinera.com \
    --cc=Joakim.Tjernlund@infinera.com \
    --cc=christophe.leroy@c-s.fr \
    --cc=leoyang.li@nxp.com \
    --cc=linuxppc-dev@lists.ozlabs.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.