net: bcmgenet: simplify circular pointer arithmetic
authorDoug Berger <opendmb@gmail.com>
Tue, 14 Mar 2017 00:41:33 +0000 (17:41 -0700)
committerDavid S. Miller <davem@davemloft.net>
Tue, 14 Mar 2017 04:51:49 +0000 (21:51 -0700)
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>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/genet/bcmgenet.c

index f92896835d2a4ceb18e7d69fdc53ce7730402667..2c008b09c4e36a9141a8ceab077d75b6393ca343 100644 (file)
@@ -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);