Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1419281

[PATCH V2 09/11] net: mediatek: fix off by one in the TX ring allocation

Path csiph.com!goblin2!goblin1!goblin.stu.neva.ru!nntpspool.opticnetworks.net!nntpspool01.opticnetworks.net!aioe.org!gothmog.csi.it!bofh.it!news.nic.it!robomod
From John Crispin <john@phrozen.org>
Newsgroups linux.kernel
Subject [PATCH V2 09/11] net: mediatek: fix off by one in the TX ring allocation
Date Fri, 10 Jun 2016 13:30:02 +0200
Message-ID <rIsNs-3Vg-23@gated-at.bofh.it> (permalink)
References <rIsNs-3Vg-5@gated-at.bofh.it>
X-Original-To "David S. Miller" <davem@davemloft.net>
X-Mailer git-send-email 1.7.10.4
Sender robomod@news.nic.it
List-ID <linux-kernel.vger.kernel.org>
X-Mailing-List linux-kernel@vger.kernel.org
Approved robomod@news.nic.it
Lines 33
Organization linux.* mail to news gateway
X-Original-Cc Felix Fietkau <nbd@nbd.name>, Sean Wang <keyhaede@gmail.com>, netdev@vger.kernel.org, linux-mediatek@lists.infradead.org, linux-kernel@vger.kernel.org, John Crispin <john@phrozen.org>
X-Original-Date Fri, 10 Jun 2016 13:28:06 +0200
X-Original-Message-ID <1465558088-15265-10-git-send-email-john@phrozen.org>
X-Original-References <1465558088-15265-1-git-send-email-john@phrozen.org>
X-Original-Sender linux-kernel-owner@vger.kernel.org
Xref csiph.com linux.kernel:1419281

Show key headers only | View raw


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: 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 24714ab..6daf48b 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -903,7 +903,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);
 
@@ -1011,7 +1010,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

Back to linux.kernel | Previous | Next | Find similar | Unroll thread


Thread

[PATCH V2 09/11] net: mediatek: fix off by one in the TX ring allocation John Crispin <john@phrozen.org> - 2016-06-10 13:30 +0200

csiph-web