[PATCH net-next 0/9] ibmvnic: Reuse ltb, rx, tx pools
From: Sukadev Bhattiprolu <hidden>
Date: 2021-09-01 00:09:58
It can take a long time to free and reallocate rx and tx pools and long term buffer (LTB) during each reset of the VNIC. This is specially true when the partition (LPAR) is heavily loaded and going through a Logical Partition Migration (LPM). The long drawn reset causes the LPAR to lose connectivity for extended periods of time and results in "RMC connection" errors and the LPM failing. What is worse is that during the LPM we could get a failover because of the lost connectivity. At that point, the vnic driver releases even the resources it has already allocated and starts over. As long as the resources we have already allocated are valid/applicable, we might as well hold on to them while trying to allocate the remaining resources. This patch set attempts to reuse the resources previously allocated as long as they are valid. It seems to vastly improve the time taken for the vnic reset. We have also not seen any RMC connection issues during our testing with this patch set. If the backing devices for a vnic adapter are not "matched" (see "pool parameters" in patches 8 and 9) it is possible that we will still free all the resources and allocate them. If that becomes a common problem, we have to address it separately. Thanks to input and extensive testing from Brian King, Cris Forno, Dany Madden, Rick Lindsley. Sukadev Bhattiprolu (9): ibmvnic: consolidate related code in replenish_rx_pool() ibmvnic: Fix up some comments and messages ibmvnic: Use/rename local vars in init_rx_pools ibmvnic: Use/rename local vars in init_tx_pools ibmvnic: init_tx_pools move loop-invariant code out ibmvnic: use bitmap for LTB map_ids ibmvnic: Reuse LTB when possible ibmvnic: Reuse rx pools when possible ibmvnic: Reuse tx pools when possible drivers/net/ethernet/ibm/ibmvnic.c | 592 ++++++++++++++++++----------- drivers/net/ethernet/ibm/ibmvnic.h | 10 +- 2 files changed, 379 insertions(+), 223 deletions(-) -- 2.31.1