All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Fainelli <f.fainelli@gmail.com>
To: Jaedon Shin <jaedon.shin@gmail.com>,
	David Miller <davem@davemloft.net>,
	Petri Gynther <pgynther@google.com>,
	netdev@vger.kernel.org
Subject: Re: [PATCH] net: bcmgenet: fix uncleaned dma flags
Date: Thu, 20 Aug 2015 15:04:57 -0700	[thread overview]
Message-ID: <55D64F09.1090802@gmail.com> (raw)
In-Reply-To: <1440040627-59949-1-git-send-email-jaedon.shin@gmail.com>

On 19/08/15 20:17, Jaedon Shin wrote:
> Clean the dma flags of multiq ring buffer int the interface stop
> process. This patch fixes that the genet is not running while the
> interface is re-enabled.
> 
> $ ifup eth0 - running after booting
> $ ifdown eth0
> $ ifup eth0 - not running and occur tx_timeout
> 
> The bcmgenet_dma_disable() in bcmgenet_open() do clean ring16 dma flag
> only. If the genet has multiq, the dma register is not cleaned. and
> bcmgenet_init_dma() is not done correctly. in case
> GENET_V2(tx_queues=4), tdma_ctrl has 0x1e after running
> bcmgenet_dma_disable().

It sounds like this should be moved to bcmgenet_dma_disable() where we
are already modifying DMA_CTRL and returning a dma_ctrl value back to
the caller, or at the very last bcmgenet_dma_teardown().

Thanks!

> 
> Signed-off-by: Jaedon Shin <jaedon.shin@gmail.com>
> ---
>  drivers/net/ethernet/broadcom/genet/bcmgenet.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
> index 64c1e9db6b0b..81bde6fa70b7 100644
> --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
> +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
> @@ -2174,6 +2174,8 @@ static int bcmgenet_dma_teardown(struct bcmgenet_priv *priv)
>  
>  static void bcmgenet_fini_dma(struct bcmgenet_priv *priv)
>  {
> +	u32 dma_ctrl;
> +	u32 reg;
>  	int i;
>  
>  	bcmgenet_fini_rx_napi(priv);
> @@ -2182,6 +2184,20 @@ static void bcmgenet_fini_dma(struct bcmgenet_priv *priv)
>  	/* disable DMA */
>  	bcmgenet_dma_teardown(priv);
>  
> +	dma_ctrl = 0;
> +	for (i = 0; i < priv->hw_params->rx_queues; i++)
> +		dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT));
> +	reg = bcmgenet_rdma_readl(priv, DMA_CTRL);
> +	reg &= ~dma_ctrl;
> +	bcmgenet_rdma_writel(priv, reg, DMA_CTRL);
> +
> +	dma_ctrl = 0;
> +	for (i = 0; i < priv->hw_params->tx_queues; i++)
> +		dma_ctrl |= (1 << (i + DMA_RING_BUF_EN_SHIFT));
> +	reg = bcmgenet_tdma_readl(priv, DMA_CTRL);
> +	reg &= ~dma_ctrl;
> +	bcmgenet_tdma_writel(priv, reg, DMA_CTRL);
> +
>  	for (i = 0; i < priv->num_tx_bds; i++) {
>  		if (priv->tx_cbs[i].skb != NULL) {
>  			dev_kfree_skb(priv->tx_cbs[i].skb);
> 


-- 
Florian

  reply	other threads:[~2015-08-20 22:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-20  3:17 [PATCH] net: bcmgenet: fix uncleaned dma flags Jaedon Shin
2015-08-20 22:04 ` Florian Fainelli [this message]
2015-08-21  1:12   ` Jaedon Shin

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=55D64F09.1090802@gmail.com \
    --to=f.fainelli@gmail.com \
    --cc=davem@davemloft.net \
    --cc=jaedon.shin@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=pgynther@google.com \
    /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.