ibmvnic: Update driver queues after change in ring size support
During device reset, queue memory is not being updated to accommodate changes in ring buffer sizes supported by backing hardware. Track any differences in ring buffer sizes following the reset and update queue memory when possible. Signed-off-by: Thomas Falcon <tlfalcon@linux.ibm.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
b7cdec3d69
Коммит
5bf032ef08
|
@ -1737,6 +1737,7 @@ static int do_reset(struct ibmvnic_adapter *adapter,
|
|||
struct ibmvnic_rwi *rwi, u32 reset_state)
|
||||
{
|
||||
u64 old_num_rx_queues, old_num_tx_queues;
|
||||
u64 old_num_rx_slots, old_num_tx_slots;
|
||||
struct net_device *netdev = adapter->netdev;
|
||||
int i, rc;
|
||||
|
||||
|
@ -1748,6 +1749,8 @@ static int do_reset(struct ibmvnic_adapter *adapter,
|
|||
|
||||
old_num_rx_queues = adapter->req_rx_queues;
|
||||
old_num_tx_queues = adapter->req_tx_queues;
|
||||
old_num_rx_slots = adapter->req_rx_add_entries_per_subcrq;
|
||||
old_num_tx_slots = adapter->req_tx_entries_per_subcrq;
|
||||
|
||||
ibmvnic_cleanup(netdev);
|
||||
|
||||
|
@ -1810,7 +1813,11 @@ static int do_reset(struct ibmvnic_adapter *adapter,
|
|||
if (rc)
|
||||
return rc;
|
||||
} else if (adapter->req_rx_queues != old_num_rx_queues ||
|
||||
adapter->req_tx_queues != old_num_tx_queues) {
|
||||
adapter->req_tx_queues != old_num_tx_queues ||
|
||||
adapter->req_rx_add_entries_per_subcrq !=
|
||||
old_num_rx_slots ||
|
||||
adapter->req_tx_entries_per_subcrq !=
|
||||
old_num_tx_slots) {
|
||||
release_rx_pools(adapter);
|
||||
release_tx_pools(adapter);
|
||||
release_napi(adapter);
|
||||
|
|
Загрузка…
Ссылка в новой задаче