Skip to content

Commit c2af622

Browse files
Dwip N. Banerjeedavem330
authored andcommitted
ibmvnic: fix rx buffer tracking and index management in replenish_rx_pool partial success
We observed that in the error case for batched send_subcrq_indirect() the driver does not account for the partial success case. This caused Linux to crash when free_map and pool index are inconsistent. Driver needs to update the rx pools "available" count when some batched sends worked but an error was encountered as part of the whole operation. Also track replenish_add_buff_failure for statistic purposes. Fixes: 4f0b681 ("ibmvnic: Introduce batched RX buffer descriptor transmission") Signed-off-by: Dwip N. Banerjee <dnbanerg@us.ibm.com> Reviewed-by: Dany Madden <drt@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 5a40cce commit c2af622

File tree

1 file changed

+2
-0
lines changed

1 file changed

+2
-0
lines changed

drivers/net/ethernet/ibm/ibmvnic.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,8 @@ static void replenish_rx_pool(struct ibmvnic_adapter *adapter,
398398
dev_kfree_skb_any(pool->rx_buff[index].skb);
399399
pool->rx_buff[index].skb = NULL;
400400
}
401+
adapter->replenish_add_buff_failure += ind_bufp->index;
402+
atomic_add(buffers_added, &pool->available);
401403
ind_bufp->index = 0;
402404
if (lpar_rc == H_CLOSED || adapter->failover_pending) {
403405
/* Disable buffer pool replenishment and report carrier off if

0 commit comments

Comments
 (0)