ibmvnic: Start completion queue negotiation at server-provided optimum values
authorJohn Allen <jallen@linux.vnet.ibm.com>
Mon, 7 Nov 2016 20:27:28 +0000 (14:27 -0600)
committerDavid S. Miller <davem@davemloft.net>
Wed, 9 Nov 2016 23:52:41 +0000 (18:52 -0500)
Use the opt_* fields to determine the starting point for negotiating the
number of tx/rx completion queues with the vnic server. These contain the
number of queues that the vnic server estimates that it will be able to
allocate. While renegotiation may still occur, using the opt_* fields will
reduce the number of times this needs to happen and will prevent driver
probe timeout on systems using large numbers of ibmvnic client devices per
vnic port.

Signed-off-by: John Allen <jallen@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/ibm/ibmvnic.c

index 5f44c5520fbc86bd9076cc220906e0a4cdee4e90..f6c9b6d38ac75e4c23d2d54c9c911dbcfb23ef49 100644 (file)
@@ -1505,9 +1505,8 @@ static void init_sub_crqs(struct ibmvnic_adapter *adapter, int retry)
                    adapter->max_rx_add_entries_per_subcrq > entries_page ?
                    entries_page : adapter->max_rx_add_entries_per_subcrq;
 
-               /* Choosing the maximum number of queues supported by firmware*/
-               adapter->req_tx_queues = adapter->max_tx_queues;
-               adapter->req_rx_queues = adapter->max_rx_queues;
+               adapter->req_tx_queues = adapter->opt_tx_comp_sub_queues;
+               adapter->req_rx_queues = adapter->opt_rx_comp_queues;
                adapter->req_rx_add_queues = adapter->max_rx_add_queues;
 
                adapter->req_mtu = adapter->max_mtu;