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


Groups > linux.kernel > #1599953

[PATCH net-next 03/12] net: bcmgenet: simplify circular pointer arithmetic

Path csiph.com!feeder.erje.net!2.eu.feeder.erje.net!border1.nntp.ams1.giganews.com!nntp.giganews.com!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer01.fr7!futter-mich.highwinds-media.com!news.highwinds-media.com!fu-berlin.de!bofh.it!news.nic.it!robomod
From Doug Berger <opendmb@gmail.com>
Newsgroups linux.kernel
Subject [PATCH net-next 03/12] net: bcmgenet: simplify circular pointer arithmetic
Date Tue, 14 Mar 2017 01:50:02 +0100
Message-ID <tkIP0-AW-19@gated-at.bofh.it> (permalink)
References <tkIOZ-AW-3@gated-at.bofh.it>
Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yhRoWwFN9Kzxy03wF56lXPAjliJiBWKNxR17w1vpNpU=; b=MUsguep0tmOTsmUkC+Q0J00QFDpOnYh0Su1T+aBeN6SaArEBRcRw9ujOl77mfxLL2u z6PeFa7cyg2VbRm2brVQTuzb/gazALgJ/l8puBzoy1mAYGsXthXtLUNJjlEJgYz8bpKD 6jccqeJW3ZWa+qbMa/Gq2Jw/BLgQApOlCHuHZmOZvSIocDUI6j/qYQSAKSMrkk3Rs6sh dEhFx9gAPS/rZcfNsAqvWWjeA4j6DRMKZv7Z/7J9IbpkpCYPiclFRPDVxqbUVQQBRIjJ +JkYfyP83NV95Zr9fSs+I8z+ALs51Iv7EClgyJB8MYw82x0vICyjxSyL3HYby7k31f1P 1JKQ==
X-Google-Dkim-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yhRoWwFN9Kzxy03wF56lXPAjliJiBWKNxR17w1vpNpU=; b=Dg9tNlHSdrgady/BNybEhMpqjRwAjl8Nv+1tnzyiix4QUSuGQ/dw9RSYfhGPEbVWSi AyCoY4owUIH+YkG86K3kH4V44Ad8o99hOdz67b+IgL6yYLa4O/8Q9xlj/S2ZJw1wDE9e ReKqTgRj+SNZbFhC69FEFwD2ZETMfOyG/8GuVplzXzYcCdKqgLzknCvXC+WSJHdth9h8 HeWMjfkdxk3lUl1ip2vuRZJ8V9rawSISCT97Niycfei5g6mOZM4ThLgAuTRiJ+C7xOTk r8IlnJ73ctwmcMkxCcmp9/CfuXN+gMWAZBcneDTpUwHG/9Jzf/koVsXqDhcTUkZ7LDTy OP+A==
X-Gm-Message-State AMke39lakH7SKaLgcTXzLR/Fh3wsaW/7QV+LTRo2296j4DhQhgpfVt62lpQLPKY/z4rEUA==
X-Received by 10.237.36.53 with SMTP id r50mr38013108qtc.46.1489452129688; Mon, 13 Mar 2017 17:42:09 -0700 (PDT)
X-Mailer git-send-email 2.11.1
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 54
Organization linux.* mail to news gateway
X-Original-Cc robh+dt@kernel.org, mark.rutland@arm.com, davem@davemloft.net, rafal@milecki.pl, xow@google.com, joel@jms.id.au, jon.mason@broadcom.com, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, pgynther@google.com, jaedon.shin@gmail.com, Doug Berger <opendmb@gmail.com>
X-Original-Date Mon, 13 Mar 2017 17:41:33 -0700
X-Original-Message-ID <20170314004142.4746-4-opendmb@gmail.com>
X-Original-References <20170314004142.4746-1-opendmb@gmail.com>
X-Original-Sender linux-kernel-owner@vger.kernel.org
X-Received-Body-CRC 975416803
X-Received-Bytes 4891
Xref csiph.com linux.kernel:1599953

Show key headers only | View raw


A 2's complement subtraction will always do a borrow, so masking
off the sign bits is the same as conditionally adding (mask+1).

Signed-off-by: Doug Berger <opendmb@gmail.com>
---
 drivers/net/ethernet/broadcom/genet/bcmgenet.c | 19 +++++--------------
 1 file changed, 5 insertions(+), 14 deletions(-)

diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
index f92896835d2a..2c008b09c4e3 100644
--- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c
+++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c
@@ -1,7 +1,7 @@
 /*
  * Broadcom GENET (Gigabit Ethernet) controller driver
  *
- * Copyright (c) 2014 Broadcom Corporation
+ * Copyright (c) 2014-2017 Broadcom
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License version 2 as
@@ -1175,13 +1175,9 @@ static unsigned int __bcmgenet_tx_reclaim(struct net_device *dev,
 	unsigned int txbds_processed = 0;
 
 	/* Compute how many buffers are transmitted since last xmit call */
-	c_index = bcmgenet_tdma_ring_readl(priv, ring->index, TDMA_CONS_INDEX);
-	c_index &= DMA_C_INDEX_MASK;
-
-	if (likely(c_index >= ring->c_index))
-		txbds_ready = c_index - ring->c_index;
-	else
-		txbds_ready = (DMA_C_INDEX_MASK + 1) - ring->c_index + c_index;
+	c_index = bcmgenet_tdma_ring_readl(priv, ring->index, TDMA_CONS_INDEX)
+		& DMA_C_INDEX_MASK;
+	txbds_ready = (c_index - ring->c_index) & DMA_C_INDEX_MASK;
 
 	netif_dbg(priv, tx_done, dev,
 		  "%s ring=%d old_c_index=%u c_index=%u txbds_ready=%u\n",
@@ -1611,12 +1607,7 @@ static unsigned int bcmgenet_desc_rx(struct bcmgenet_rx_ring *ring,
 	}
 
 	p_index &= DMA_P_INDEX_MASK;
-
-	if (likely(p_index >= ring->c_index))
-		rxpkttoprocess = p_index - ring->c_index;
-	else
-		rxpkttoprocess = (DMA_C_INDEX_MASK + 1) - ring->c_index +
-				 p_index;
+	rxpkttoprocess = (p_index - ring->c_index) & DMA_C_INDEX_MASK;
 
 	netif_dbg(priv, rx_status, dev,
 		  "RDMA: rxpkttoprocess=%d\n", rxpkttoprocess);
-- 
2.11.1

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH net-next 03/12] net: bcmgenet: simplify circular pointer arithmetic Doug Berger <opendmb@gmail.com> - 2017-03-14 01:50 +0100
  Re: [PATCH net-next 03/12] net: bcmgenet: simplify circular pointer  arithmetic Florian Fainelli <f.fainelli@gmail.com> - 2017-03-14 02:00 +0100

csiph-web