| From 806624ebfe2d817eefd7de9628549ccb8a28c883 Mon Sep 17 00:00:00 2001 |
| From: Jose Abreu <Jose.Abreu@synopsys.com> |
| Date: Wed, 18 Dec 2019 11:17:39 +0100 |
| Subject: [PATCH] net: stmmac: xgmac: Clear previous RX buffer size |
| |
| commit 11d55fd9975f8e46a0e5e19c14899544e81e1e15 upstream. |
| |
| When switching between buffer sizes we need to clear the previous value. |
| |
| Fixes: d6ddfacd95c7 ("net: stmmac: Add DMA related callbacks for XGMAC2") |
| Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| index 085b700a4994..13be6f2cad90 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| @@ -186,6 +186,8 @@ |
| #define XGMAC_DMA_CH_RX_CONTROL(x) (0x00003108 + (0x80 * (x))) |
| #define XGMAC_RxPBL GENMASK(21, 16) |
| #define XGMAC_RxPBL_SHIFT 16 |
| +#define XGMAC_RBSZ GENMASK(14, 1) |
| +#define XGMAC_RBSZ_SHIFT 1 |
| #define XGMAC_RXST BIT(0) |
| #define XGMAC_DMA_CH_TxDESC_LADDR(x) (0x00003114 + (0x80 * (x))) |
| #define XGMAC_DMA_CH_RxDESC_LADDR(x) (0x0000311c + (0x80 * (x))) |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| index 8788c8511a8c..19fdd29b54ac 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| @@ -443,7 +443,8 @@ static void dwxgmac2_set_bfsize(void __iomem *ioaddr, int bfsize, u32 chan) |
| u32 value; |
| |
| value = readl(ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); |
| - value |= bfsize << 1; |
| + value &= ~XGMAC_RBSZ; |
| + value |= bfsize << XGMAC_RBSZ_SHIFT; |
| writel(value, ioaddr + XGMAC_DMA_CH_RX_CONTROL(chan)); |
| } |
| |
| -- |
| 2.7.4 |
| |