You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
41 lines
1.5 KiB
41 lines
1.5 KiB
From 94425de9ede5ef0eafbfced65140c30e7c0b6c0d Mon Sep 17 00:00:00 2001
|
|
From: John Crispin <john@phrozen.org>
|
|
Date: Tue, 3 May 2016 03:01:13 +0200
|
|
Subject: [PATCH 090/102] net-next: mediatek: fix off by one in the TX ring
|
|
allocation
|
|
|
|
The TX ring setup has an off by one error causing it to not utilise all
|
|
descriptors. This has the side effect that we need to reset the next
|
|
pointer at runtime to make it work. Fix the off by one and remove the
|
|
code fixing the ring at runtime.
|
|
|
|
Signed-off-by: Sean Wang <keyhaede@gmail.com>
|
|
Signed-off-by: John Crispin <john@phrozen.org>
|
|
---
|
|
drivers/net/ethernet/mediatek/mtk_eth_soc.c | 3 +--
|
|
1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
index 52cdb3a..87b48c0 100644
|
|
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
|
|
@@ -934,7 +934,6 @@ static int mtk_poll_tx(struct mtk_eth *eth, int budget, bool *tx_again)
|
|
}
|
|
mtk_tx_unmap(eth->dev, tx_buf);
|
|
|
|
- ring->last_free->txd2 = next_cpu;
|
|
ring->last_free = desc;
|
|
atomic_inc(&ring->free_count);
|
|
|
|
@@ -1042,7 +1041,7 @@ static int mtk_tx_alloc(struct mtk_eth *eth)
|
|
|
|
atomic_set(&ring->free_count, MTK_DMA_SIZE - 2);
|
|
ring->next_free = &ring->dma[0];
|
|
- ring->last_free = &ring->dma[MTK_DMA_SIZE - 2];
|
|
+ ring->last_free = &ring->dma[MTK_DMA_SIZE - 1];
|
|
ring->thresh = MAX_SKB_FRAGS;
|
|
|
|
/* make sure that all changes to the dma ring are flushed before we
|
|
--
|
|
1.7.10.4
|
|
|
|
|