Prechádzať zdrojové kódy

ibmveth: Remove integer divide caused by modulus

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>
Santiago Leon 14 rokov pred
rodič
commit
a613f58148
1 zmenil súbory, kde vykonal 7 pridanie a 4 odobranie
  1. 7 4
      drivers/net/ibmveth.c

+ 7 - 4
drivers/net/ibmveth.c

@@ -252,7 +252,9 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc
 		}
 		}
 
 
 		free_index = pool->consumer_index;
 		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];
 		index = pool->free_map[free_index];
 
 
 		ibmveth_assert(index != IBM_VETH_INVALID_MAP);
 		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);
 			 DMA_FROM_DEVICE);
 
 
 	free_index = adapter->rx_buff_pool[pool].producer_index;
 	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;
 	adapter->rx_buff_pool[pool].free_map[free_index] = index;
 
 
 	mb();
 	mb();