i40e: convert to cpu from le16 to generate switch_id correctly
authorJacob Keller <jacob.e.keller@intel.com>
Mon, 12 Dec 2016 23:44:14 +0000 (15:44 -0800)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sun, 19 Feb 2017 04:35:36 +0000 (20:35 -0800)
On Big Endian platforms we would incorrectly calculate the wrong switch
id since we did not properly convert the le16 value into CPU format.
Caught by sparse.

Change-ID: I69a2f9fa064a0a91691f7d0e6fcc206adceb8e36
Signed-off-by: Jacob Keller <jacob.e.keller@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 f1f41f1..267ad25 100644 (file)
@@ -974,7 +974,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;
+                       u16 switch_id;
 
                        bw_data = kzalloc(sizeof(
                                    struct i40e_aqc_query_port_ets_config_resp),
@@ -986,7 +986,8 @@ static ssize_t i40e_dbg_command_write(struct file *filp,
 
                        vsi = pf->vsi[pf->lan_vsi];
                        switch_id =
-                               vsi->info.switch_id & I40E_AQ_VSI_SW_ID_MASK;
+                               le16_to_cpu(vsi->info.switch_id) &
+                                           I40E_AQ_VSI_SW_ID_MASK;
 
                        ret = i40e_aq_query_port_ets_config(&pf->hw,
                                                            switch_id,