diff options
| -rw-r--r-- | drivers/net/ibmveth.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/ibmveth.c b/drivers/net/ibmveth.c index 6aff2bc3df55..16f3faa7ea5b 100644 --- a/drivers/net/ibmveth.c +++ b/drivers/net/ibmveth.c | |||
| @@ -213,6 +213,7 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc | |||
| 213 | } | 213 | } |
| 214 | 214 | ||
| 215 | free_index = pool->consumer_index++ % pool->size; | 215 | free_index = pool->consumer_index++ % pool->size; |
| 216 | pool->consumer_index = free_index; | ||
| 216 | index = pool->free_map[free_index]; | 217 | index = pool->free_map[free_index]; |
| 217 | 218 | ||
| 218 | ibmveth_assert(index != IBM_VETH_INVALID_MAP); | 219 | ibmveth_assert(index != IBM_VETH_INVALID_MAP); |
| @@ -238,7 +239,10 @@ static void ibmveth_replenish_buffer_pool(struct ibmveth_adapter *adapter, struc | |||
| 238 | if(lpar_rc != H_SUCCESS) { | 239 | if(lpar_rc != H_SUCCESS) { |
| 239 | pool->free_map[free_index] = index; | 240 | pool->free_map[free_index] = index; |
| 240 | pool->skbuff[index] = NULL; | 241 | pool->skbuff[index] = NULL; |
| 241 | pool->consumer_index--; | 242 | if (pool->consumer_index == 0) |
| 243 | pool->consumer_index = pool->size - 1; | ||
| 244 | else | ||
| 245 | pool->consumer_index--; | ||
| 242 | dma_unmap_single(&adapter->vdev->dev, | 246 | dma_unmap_single(&adapter->vdev->dev, |
| 243 | pool->dma_addr[index], pool->buff_size, | 247 | pool->dma_addr[index], pool->buff_size, |
| 244 | DMA_FROM_DEVICE); | 248 | DMA_FROM_DEVICE); |
| @@ -326,6 +330,7 @@ static void ibmveth_remove_buffer_from_pool(struct ibmveth_adapter *adapter, u64 | |||
| 326 | DMA_FROM_DEVICE); | 330 | DMA_FROM_DEVICE); |
| 327 | 331 | ||
| 328 | free_index = adapter->rx_buff_pool[pool].producer_index++ % adapter->rx_buff_pool[pool].size; | 332 | free_index = adapter->rx_buff_pool[pool].producer_index++ % adapter->rx_buff_pool[pool].size; |
| 333 | adapter->rx_buff_pool[pool].producer_index = free_index; | ||
| 329 | adapter->rx_buff_pool[pool].free_map[free_index] = index; | 334 | adapter->rx_buff_pool[pool].free_map[free_index] = index; |
| 330 | 335 | ||
| 331 | mb(); | 336 | mb(); |
