stmmac: hardware TX COE doesn't work when force_thresh_dma_mode is set
authorEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
Mon, 16 May 2016 15:41:07 +0000 (12:41 -0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 17 May 2016 02:17:45 +0000 (22:17 -0400)
Commit f748be531d70 ("stmmac: support new GMAC4") reverted a previous fix
by mistake. This commit re-applies said fix:

  commit dec2165ff38a99f937fe61875d102c6c8596c815
  Author: Sonic Zhang <sonic.zhang@analog.com>
  Date:   Thu Jan 22 14:55:57 2015 +0800
  stmmac: hardware TX COE doesn't work when force_thresh_dma_mode is set

  Clear the TX COE bit when force_thresh_dma_mode is set even hardware
  dma capability says support.

  Tested on BF609.

Signed-off-by: Sonic Zhang <sonic.zhang@analog.com>
Acked-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Tested on LPC4350 Hitex board.

Fixes: f748be531d70 ("stmmac: support new GMAC4")
Signed-off-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Tested-by: Joachim Eastwood <manabian@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c

index fd5ab7bfdb765e6a2ae91d3b6e2247c3c9301a49..eac45d0c75e2c0cc3855f69767737bc9fb7c440f 100644 (file)
@@ -3131,7 +3131,12 @@ static int stmmac_hw_init(struct stmmac_priv *priv)
                priv->plat->enh_desc = priv->dma_cap.enh_desc;
                priv->plat->pmt = priv->dma_cap.pmt_remote_wake_up;
 
-               priv->plat->tx_coe = priv->dma_cap.tx_coe;
+               /* TXCOE doesn't work in thresh DMA mode */
+               if (priv->plat->force_thresh_dma_mode)
+                       priv->plat->tx_coe = 0;
+               else
+                       priv->plat->tx_coe = priv->dma_cap.tx_coe;
+
                /* In case of GMAC4 rx_coe is from HW cap register. */
                priv->plat->rx_coe = priv->dma_cap.rx_coe;