Commit a28277dc authored by Suresh Reddy's avatar Suresh Reddy Committed by David S. Miller

be2net: query max_tx_qs for BE3 super-nic profile from FW

In the BE3 super-nic profile, the max_tx_qs value can vary for each function.
So the driver needs to query this value from FW instead of using the
pre-defined constant BE3_MAX_TX_QS.
Signed-off-by: default avatarSuresh Reddy <Suresh.Reddy@emulex.com>
Signed-off-by: default avatarSathya Perla <sathya.perla@emulex.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a4906ea0
...@@ -3324,10 +3324,20 @@ static void BEx_get_resources(struct be_adapter *adapter, ...@@ -3324,10 +3324,20 @@ static void BEx_get_resources(struct be_adapter *adapter,
*/ */
if (BE2_chip(adapter) || use_sriov || (adapter->port_num > 1) || if (BE2_chip(adapter) || use_sriov || (adapter->port_num > 1) ||
!be_physfn(adapter) || (be_is_mc(adapter) && !be_physfn(adapter) || (be_is_mc(adapter) &&
!(adapter->function_caps & BE_FUNCTION_CAPS_RSS))) !(adapter->function_caps & BE_FUNCTION_CAPS_RSS))) {
res->max_tx_qs = 1; res->max_tx_qs = 1;
else } else if (adapter->function_caps & BE_FUNCTION_CAPS_SUPER_NIC) {
struct be_resources super_nic_res = {0};
/* On a SuperNIC profile, the driver needs to use the
* GET_PROFILE_CONFIG cmd to query the per-function TXQ limits
*/
be_cmd_get_profile_config(adapter, &super_nic_res, 0);
/* Some old versions of BE3 FW don't report max_tx_qs value */
res->max_tx_qs = super_nic_res.max_tx_qs ? : BE3_MAX_TX_QS;
} else {
res->max_tx_qs = BE3_MAX_TX_QS; res->max_tx_qs = BE3_MAX_TX_QS;
}
if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) && if ((adapter->function_caps & BE_FUNCTION_CAPS_RSS) &&
!use_sriov && be_physfn(adapter)) !use_sriov && be_physfn(adapter))
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment