stmmac: DMA threshold mode or SF mode can be different among multiple device instance
- In tx_hard_error_bump_tc interrupt, tc should be bumped only when current device instance is in DMA threshold mode. Check per device xstats.threshold other than global tc. - Set per device xstats.threshold to SF_DMA_MODE when current device instance is set to SF mode. v2-changes: - fix ident style Signed-off-by: Sonic Zhang <sonic.zhang@analog.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3051fa617a
commit
b2dec116fb
|
@ -1288,7 +1288,7 @@ static void stmmac_dma_operation_mode(struct stmmac_priv *priv)
|
|||
* that needs to not insert csum in the TDES.
|
||||
*/
|
||||
priv->hw->dma->dma_mode(priv->ioaddr, SF_DMA_MODE, SF_DMA_MODE);
|
||||
tc = SF_DMA_MODE;
|
||||
priv->xstats.threshold = SF_DMA_MODE;
|
||||
} else
|
||||
priv->hw->dma->dma_mode(priv->ioaddr, tc, SF_DMA_MODE);
|
||||
}
|
||||
|
@ -1452,7 +1452,8 @@ static void stmmac_dma_interrupt(struct stmmac_priv *priv)
|
|||
}
|
||||
if (unlikely(status & tx_hard_error_bump_tc)) {
|
||||
/* Try to bump up the dma threshold on this failure */
|
||||
if (unlikely(tc != SF_DMA_MODE) && (tc <= 256)) {
|
||||
if (unlikely(priv->xstats.threshold != SF_DMA_MODE) &&
|
||||
(tc <= 256)) {
|
||||
tc += 64;
|
||||
if (priv->plat->force_thresh_dma_mode)
|
||||
priv->hw->dma->dma_mode(priv->ioaddr, tc, tc);
|
||||
|
|
Loading…
Reference in New Issue