ibmveth: Remove integer divide caused by modulus
authorSantiago Leon <santil@linux.vnet.ibm.com>
Fri, 3 Sep 2010 18:28:04 +0000 (18:28 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 7 Sep 2010 01:20:32 +0000 (18:20 -0700)
Replace some modulus operators with an increment and compare to avoid
an integer divide.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Santiago Leon <santil@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ibmveth.c

index 4734c939ad03574a63e6dd0bc9ccf6d8cf29c06a..d2cc6d3f401ce42042c86a7f53de45789b3e262f 100644 (file)
@@ -252,7 +252,9 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
                }
 
                free_index = pool->consumer_index;
-               pool->consumer_index = (pool->consumer_index + 1) % pool->size;
+               pool->consumer_index++;
+               if (pool->consumer_index >= pool->size)
+                       pool->consumer_index = 0;
                index = pool->free_map[free_index];
 
                ibmveth_assert(index != IBM_VETH_INVALID_MAP);
@@ -377,9 +379,10 @@ static void ibmveth_remove_buffer_from_pool(struct ibmveth_adapter *adapter, u64
                         DMA_FROM_DEVICE);
 
        free_index = adapter->rx_buff_pool[pool].producer_index;
-       adapter->rx_buff_pool[pool].producer_index
-               = (adapter->rx_buff_pool[pool].producer_index + 1)
-               % adapter->rx_buff_pool[pool].size;
+       adapter->rx_buff_pool[pool].producer_index++;
+       if (adapter->rx_buff_pool[pool].producer_index >=
+           adapter->rx_buff_pool[pool].size)
+               adapter->rx_buff_pool[pool].producer_index = 0;
        adapter->rx_buff_pool[pool].free_map[free_index] = index;
 
        mb();