| From cac2f3ee230735cd09acf4e59d0619eaa9c0263a Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Wed, 18 Dec 2019 11:17:39 +0100 |
| Subject: net: stmmac: xgmac: Clear previous RX buffer size |
| |
| From: Jose Abreu <Jose.Abreu@synopsys.com> |
| |
| [ Upstream commit 11d55fd9975f8e46a0e5e19c14899544e81e1e15 ] |
| |
| 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: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h | 2 ++ |
| drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 3 ++- |
| 2 files changed, 4 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| index 9d08a934fe4f..ff751ab3d765 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2.h |
| @@ -343,6 +343,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_HADDR(x) (0x00003110 + (0x80 * (x))) |
| #define XGMAC_DMA_CH_TxDESC_LADDR(x) (0x00003114 + (0x80 * (x))) |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| index f70ca5300b82..4af7271cea56 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c |
| @@ -489,7 +489,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.20.1 |
| |