]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: mark the value passed to csum_replace_by_diff as __wsum
authorJacob Keller <jacob.e.keller@intel.com>
Mon, 12 Dec 2016 23:44:17 +0000 (15:44 -0800)
committerJack Vogel <jack.vogel@oracle.com>
Sat, 10 Jun 2017 01:57:02 +0000 (18:57 -0700)
Fix, or rather, avoid a sparse warning caused by the fact that
csum_replace_by_diff expects to receive a __wsum value. Since the
calculation appears to work, simply typecast the passed paylen value to
__wsum to avoid the warning.

This seems pretty fishy since __wsum was obviously annotated as
a separate type on purpose, so this throws the entire calculation into
question. Since it currently appears to behave as expected, the typecast
is probably safe.

Change-ID: I4fdc5cddd589abc16098176e8a61127e761488f4
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>
Orabug: 26132523
(cherry picked from commit b9c015d421946fe3675fcb9cbacd0a37f1d3263c)
Signed-off-by: Jack Vogel <jack.vogel@oracle.com>
Reviewed-by: Brian Maly <brian.maly@oracle.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.c

index c760694e97e1bdedcba250c4fe7bb2efd4330e55..024535e851ad66d320d5e69f3767aecf4497040a 100644 (file)
@@ -2325,7 +2325,8 @@ static int i40e_tso(struct i40e_tx_buffer *first, u8 *hdr_len,
 
                        /* remove payload length from outer checksum */
                        paylen = skb->len - l4_offset;
-                       csum_replace_by_diff(&l4.udp->check, htonl(paylen));
+                       csum_replace_by_diff(&l4.udp->check,
+                                            (__force __wsum)htonl(paylen));
                }
 
                /* reset pointers to inner headers */
@@ -2346,7 +2347,7 @@ static int i40e_tso(struct i40e_tx_buffer *first, u8 *hdr_len,
 
        /* remove payload length from inner checksum */
        paylen = skb->len - l4_offset;
-       csum_replace_by_diff(&l4.tcp->check, htonl(paylen));
+       csum_replace_by_diff(&l4.tcp->check, (__force __wsum)htonl(paylen));
 
        /* compute length of segmentation header */
        *hdr_len = (l4.tcp->doff * 4) + l4_offset;
index aafceb11a28e838aee0c5464c584c8317198d07a..cdf83f6e3cda25c3946f90490253e34890df631d 100644 (file)
@@ -1619,7 +1619,8 @@ static int i40e_tso(struct i40e_tx_buffer *first, u8 *hdr_len,
 
                        /* remove payload length from outer checksum */
                        paylen = skb->len - l4_offset;
-                       csum_replace_by_diff(&l4.udp->check, htonl(paylen));
+                       csum_replace_by_diff(&l4.udp->check,
+                                            (__force __wsum)htonl(paylen));
                }
 
                /* reset pointers to inner headers */
@@ -1640,7 +1641,7 @@ static int i40e_tso(struct i40e_tx_buffer *first, u8 *hdr_len,
 
        /* remove payload length from inner checksum */
        paylen = skb->len - l4_offset;
-       csum_replace_by_diff(&l4.tcp->check, htonl(paylen));
+       csum_replace_by_diff(&l4.tcp->check, (__force __wsum)htonl(paylen));
 
        /* compute length of segmentation header */
        *hdr_len = (l4.tcp->doff * 4) + l4_offset;