From: Koen Vandeputte <koen.vandeputte@ncentric.com>
Date: Tue, 7 Aug 2018 09:44:36 +0000 (+0200)
Subject: cns3xxx: ethernet: use circular queue checks consistently
X-Git-Tag: v19.07.0-rc1~2881
X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=0d283c0180a22610ed5bee988902525dee90cc71;p=oweals%2Fopenwrt.git

cns3xxx: ethernet: use circular queue checks consistently

Use the same method for setting queue index pointers consistenly
throughout the source file.

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---

diff --git a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
index 9397a9e7ab..77a7ab73d5 100644
--- a/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
+++ b/target/linux/cns3xxx/files/drivers/net/ethernet/cavium/cns3xxx_eth.c
@@ -595,21 +595,23 @@ static void eth_complete_tx(struct sw *sw)
 	desc = &(tx_ring)->desc[index];
 
 	for (i = 0; i < num_used; i++) {
-		if (desc->cown) {
-			skb = tx_ring->buff_tab[index];
-			tx_ring->buff_tab[index] = 0;
-			if (skb)
-				dev_kfree_skb_any(skb);
-			dma_unmap_single(sw->dev, tx_ring->phys_tab[index],
-				desc->sdl, DMA_TO_DEVICE);
-			if (++index == TX_DESCS) {
-				index = 0;
-				desc = &(tx_ring)->desc[index];
-			} else {
-				desc++;
-			}
-		} else {
+		if (!desc->cown)
 			break;
+
+		skb = tx_ring->buff_tab[index];
+		tx_ring->buff_tab[index] = 0;
+
+		if (skb)
+			dev_kfree_skb_any(skb);
+
+		dma_unmap_single(sw->dev, tx_ring->phys_tab[index], desc->sdl, DMA_TO_DEVICE);
+
+		if (index == TX_DESCS - 1) {
+			index = 0;
+			desc = &(tx_ring)->desc[index];
+		} else {
+			index++;
+			desc++;
 		}
 	}
 
@@ -705,10 +707,11 @@ static int eth_poll(struct napi_struct *napi, int budget)
 		}
 
 		received++;
-		if (++i == RX_DESCS) {
+		if (i == RX_DESCS - 1) {
 			i = 0;
 			desc = &(rx_ring)->desc[i];
 		} else {
+			i++;
 			desc++;
 		}
 	}