From patchwork Fri Nov 29 02:59:09 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "fan.du" X-Patchwork-Id: 295072 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 43BE92C0040 for ; Fri, 29 Nov 2013 13:59:23 +1100 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753099Ab3K2C7U (ORCPT ); Thu, 28 Nov 2013 21:59:20 -0500 Received: from mail.windriver.com ([147.11.1.11]:49726 "EHLO mail.windriver.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750972Ab3K2C7S (ORCPT ); Thu, 28 Nov 2013 21:59:18 -0500 Received: from ALA-HCA.corp.ad.wrs.com (ala-hca.corp.ad.wrs.com [147.11.189.40]) by mail.windriver.com (8.14.5/8.14.5) with ESMTP id rAT2xCwj014525 (version=TLSv1/SSLv3 cipher=AES128-SHA bits=128 verify=FAIL); Thu, 28 Nov 2013 18:59:12 -0800 (PST) Received: from romashell-ThinkPad-T510.corp.ad.wrs.com (128.224.163.146) by ALA-HCA.corp.ad.wrs.com (147.11.189.40) with Microsoft SMTP Server id 14.2.347.0; Thu, 28 Nov 2013 18:59:11 -0800 From: Fan Du To: CC: , Subject: [PATCH net] {pktgen, xfrm} re-caculate IPv4 checksum after transformation Date: Fri, 29 Nov 2013 10:59:09 +0800 Message-ID: <1385693949-3786-1-git-send-email-fan.du@windriver.com> X-Mailer: git-send-email 1.7.9.5 MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org I accidently observed incorrect IPv4 checksum by wireshark when armming pktgen with IPsec by ESP transport mode with following pktgen configuration: pgset "flag IPSEC" pgset "flows 1" It seems that after transformation, IPv4 checksum remains the origianl checksum as before, so encrypted packet will never reach receiver's upper layer because of wrong IPv4 checksum value. Fix this by re-caculate checksum value. Signed-off-by: Fan Du --- net/core/pktgen.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 261357a..8d13b41 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -2786,6 +2786,8 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev, #ifdef CONFIG_XFRM if (!process_ipsec(pkt_dev, skb, protocol)) return NULL; + iph = ip_hdr(skb); + ip_send_check(iph); #endif return skb;