i40e: add little endian conversion for checksum
authorJesse Brandeburg <jesse.brandeburg@intel.com>
Wed, 26 Aug 2015 19:14:18 +0000 (15:14 -0400)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 7 Oct 2015 21:18:53 +0000 (14:18 -0700)
The checksum is not correct on big endian machines so add code to swap it
correctly.

Change-ID: Ic92b886d172a2cbe49f5d7eee1bc78e447023c7b
Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Paul M Stillwell Jr <paul.m.stillwell.jr@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_nvm.c

index d0288ad4e9b238023f716fa9fc034ec30de74bef..2142e1004a2f41de2bf3cdaee8d91ba756c41ed0 100644 (file)
@@ -547,11 +547,13 @@ i40e_status i40e_update_nvm_checksum(struct i40e_hw *hw)
 {
        i40e_status ret_code = 0;
        u16 checksum;
+       __le16 le_sum;
 
        ret_code = i40e_calc_nvm_checksum(hw, &checksum);
+       le_sum = cpu_to_le16(checksum);
        if (!ret_code)
                ret_code = i40e_write_nvm_aq(hw, 0x00, I40E_SR_SW_CHECKSUM_WORD,
-                                            1, &checksum, true);
+                                            1, &le_sum, true);
 
        return ret_code;
 }