i40e: add little endian conversion for checksum
authorJesse Brandeburg <[email protected]>
Wed, 26 Aug 2015 19:14:18 +0000 (15:14 -0400)
committerJeff Kirsher <[email protected]>
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 <[email protected]>
Signed-off-by: Paul M Stillwell Jr <[email protected]>
Tested-by: Andrew Bowers <[email protected]>
Signed-off-by: Jeff Kirsher <[email protected]>
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;
 }