From: David Wilder <dwil...@us.ibm.com>

[ Upstream commit 5ce9ad815a296374ca21f43f3b1ab5083d202ee1 ]

ibmveth_rx_csum_helper() must be called after ibmveth_rx_mss_helper()
as ibmveth_rx_csum_helper() may alter ip and tcp checksum values.

Fixes: 66aa0678efc2 ("ibmveth: Support to enable LSO/CSO for Trunk VEA.")
Signed-off-by: David Wilder <dwil...@us.ibm.com>
Reviewed-by: Thomas Falcon <tlfal...@linux.ibm.com>
Reviewed-by: Cristobal Forno <cris.fo...@ibm.com>
Reviewed-by: Pradeep Satyanarayana <prade...@linux.vnet.ibm.com>
Acked-by: Willem de Bruijn <will...@google.com>
Signed-off-by: Jakub Kicinski <k...@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gre...@linuxfoundation.org>
---
 drivers/net/ethernet/ibm/ibmveth.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

--- a/drivers/net/ethernet/ibm/ibmveth.c
+++ b/drivers/net/ethernet/ibm/ibmveth.c
@@ -1366,16 +1366,16 @@ static int ibmveth_poll(struct napi_stru
                        skb_put(skb, length);
                        skb->protocol = eth_type_trans(skb, netdev);
 
-                       if (csum_good) {
-                               skb->ip_summed = CHECKSUM_UNNECESSARY;
-                               ibmveth_rx_csum_helper(skb, adapter);
-                       }
-
                        if (length > netdev->mtu + ETH_HLEN) {
                                ibmveth_rx_mss_helper(skb, mss, lrg_pkt);
                                adapter->rx_large_packets++;
                        }
 
+                       if (csum_good) {
+                               skb->ip_summed = CHECKSUM_UNNECESSARY;
+                               ibmveth_rx_csum_helper(skb, adapter);
+                       }
+
                        napi_gro_receive(napi, skb);    /* send it up */
 
                        netdev->stats.rx_packets++;


Reply via email to