i40e: fix "dump port" command when NPAR enabled
authorAlan Brady <alan.brady@intel.com>
Wed, 24 Aug 2016 18:33:47 +0000 (11:33 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 23 Sep 2016 05:33:38 +0000 (22:33 -0700)
When using the debugfs to issue the "dump port" command
with NPAR enabled, the firmware reports back with invalid argument.

The issue occurs because the pf->mac_seid was used to perform the query.
This is fine when NPAR is disabled because the switch ID == pf->mac_seid,
however this is not the case when NPAR is enabled.  This fix instead
goes through the VSI to determine the correct ID to use in either case.

Change-ID: I0cd67913a7f2c4a2962e06d39e32e7447cc55b6a
Signed-off-by: Alan Brady <alan.brady@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_debugfs.c

index 05cf9a719bab2656448fa2e42ca6999148207046..8555f04002da793747ced588a993ff32be2dd984 100644 (file)
@@ -1054,6 +1054,7 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
                        struct i40e_dcbx_config *r_cfg =
                                                &pf->hw.remote_dcbx_config;
                        int i, ret;
+                       u32 switch_id;
 
                        bw_data = kzalloc(sizeof(
                                    struct i40e_aqc_query_port_ets_config_resp),
@@ -1063,8 +1064,12 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
                                goto command_write_done;
                        }
 
+                       vsi = pf->vsi[pf->lan_vsi];
+                       switch_id =
+                               vsi->info.switch_id & I40E_AQ_VSI_SW_ID_MASK;
+
                        ret = i40e_aq_query_port_ets_config(&pf->hw,
-                                                           pf->mac_seid,
+                                                           switch_id,
                                                            bw_data, NULL);
                        if (ret) {
                                dev_info(&pf->pdev->dev,