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
next prev parent 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.