From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-CO1-obe.outbound.protection.outlook.com (mail-co1nam03on0057.outbound.protection.outlook.com [104.47.40.57]) by dpdk.org (Postfix) with ESMTP id DFC7D1B017 for ; Tue, 16 Jan 2018 07:29:55 +0100 (CET) Received: from CY1PR03CA0010.namprd03.prod.outlook.com (10.174.128.20) by MWHPR03MB2701.namprd03.prod.outlook.com (10.168.207.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.407.7; Tue, 16 Jan 2018 06:29:54 +0000 Received: from BN1AFFO11FD043.protection.gbl (2a01:111:f400:7c10::117) by CY1PR03CA0010.outlook.office365.com (2603:10b6:600::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.407.7 via Frontend Transport; Tue, 16 Jan 2018 06:29:54 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BN1AFFO11FD043.mail.protection.outlook.com (10.58.52.190) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.345.12 via Frontend Transport; Tue, 16 Jan 2018 06:29:52 +0000 Received: from [10.232.134.49] ([10.232.134.49]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id w0G6Tmt6012511; Mon, 15 Jan 2018 23:29:49 -0700 To: "Nicolau, Radu" , "dev@dpdk.org" CC: "De Lara Guarch, Pablo" , "hemant.agrawal@nxp.com" References: <20180115124212.7011-1-akhil.goyal@nxp.com> <87cc91ca-70c7-44a2-d5b2-e2263816c0e2@nxp.com> <763A2F19A5EFF34F8B7F1657C992EE297B30E218@IRSMSX104.ger.corp.intel.com> From: Akhil Goyal Message-ID: <412a8897-9a15-1d53-1d69-17f788f78620@nxp.com> Date: Tue, 16 Jan 2018 11:59:48 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.5.2 MIME-Version: 1.0 In-Reply-To: <763A2F19A5EFF34F8B7F1657C992EE297B30E218@IRSMSX104.ger.corp.intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131605577936361288; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(346002)(39380400002)(396003)(39860400002)(376002)(2980300002)(1110001)(1109001)(339900001)(3190300001)(189003)(199004)(24454002)(13464003)(8656006)(305945005)(77096006)(105606002)(54906003)(498600001)(110136005)(106466001)(229853002)(4326008)(53936002)(50466002)(6246003)(58126008)(53376002)(2906002)(26005)(10710500007)(966005)(356003)(31686004)(85426001)(36756003)(59450400001)(65826007)(76176011)(2486003)(23676004)(97736004)(7110500001)(2950100002)(53546011)(67846002)(64126003)(5660300001)(81156014)(2501003)(83506002)(316002)(8936002)(47776003)(104016004)(65956001)(8676002)(6306002)(31696002)(68736007)(230700001)(15650500001)(81166006)(2420400007)(86362001)(65806001)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR03MB2701; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD043; 1:8XvzUjAS+cNx/bF/H5tKcTyJ2+OLhpSsiEFUXK+FoXUPkZhH/9drTV6YmJ+3yhBUpEguNiemaOBnyXSEp3tHHSH7MG2NsKV35nqa9WoIPcX/gZTW81djbtm9VACrzm5I X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: a6213d5e-c1b9-49cf-5748-08d55caa8dd2 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(7020095)(5600026)(4604075)(2017052603307); SRVR:MWHPR03MB2701; X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 3:pyyx5sLRzBsonDynSZxMsuopiL8RN6rT/LHyCbNrB9l9grW0DcMr8zSt2O0PoDmWhErpe2k6OU1my08/8WnSUBm7WKSWMdrNNk0kP9BH4caNVv+gLkmyOX43NPTadEDAY0w6Im1VxoxSLcWvtIZaS+6mUCRPAMtpkwv+RdcnAKPbxANd5ELdwUx3tRjEL0Fna4obRjnHTXEOZM4X926MQZS1WhdlBHiXKVB66Po6Wq2DTBTnn1nDxKh2Os4oe2Fi6q1Ql2LgdkWoPE+ORf9PPS/byHhOFezt8LdPRwbvHfu4OXnFZWO21SpdjzLobT9ClbwHYtGE0udTd0m1fJeVTu0QS9FqoQHRi0CdJUCvRAc=; 25:lZw1GN9qbnzW8c3M/c6UCmgnKx4YoaZDg2D54E2d4nYTxrZO7lGQS+f+JvqKoA5VSBy5/8ym6GbCgVc5TmNHo/bmZnH3gtPwGIHWG8476FmYAgbc29tGTF+IW02pn5MU/2b7tey1uHtUcck5uJbH/b0t9a+sahK6idKqLqeRBLJYEE80JyZmhNL17Si7fBo3ThLZfu9hOXaHfqRxDlSJar52+V1vr9Dy5BGsuHxIALaksHrc40BQeBnQvXb/NcB9Td04f2cJWs2v8+OrdSTUqv+GZxBmvYkVtvtq8MiUPN1tw88DwrfH0Kpvch4q+tJQod0bZoNPOAzY+BWWqlw4Fw== X-MS-TrafficTypeDiagnostic: MWHPR03MB2701: X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 31:o7SY8tRG96VG86nOELzGH5d/UpuZtgdWqbwRFUcpPWPxI2eykZESGHQgeBAqC1QEEVKbg8vtADUaEbOI3b1A+58G2qbMECcNLVI1jWv6BkB351QI96j+2vI8BsFbuLRag1Hjn7332BOkvyQYHogo8gu+EoOtpwUZq103yYdQa942OdxxjE8i7H70uqem2w4yuzsV0g07Pi0Zy5VWxXjrwZnus4eg/fsYn0/mjK8S/TI=; 4:Nsjzn2q2Qeyt9Tj0+iiHLqJgBjq0xpB64OHB31+yMkYDMUzOXG/A8R5soDYQYcShzRcutkvQu7Q0mkotIFIc1a21fVme7yhSd9EhVGjCatA04MooqPZngjCcFAGdpPzdV3T58Yy03qbgGSCGbhGTNM9qapTR+yk/wy3vqfzGZX01lj1ttnnw5f9PSI0L7PPMfJiX3Ux4ETDCoGYI1zuiK2HZ7L4xM3TLH85/03Q2TmDTv8qgx1U6Feb6DFoKPsbFQHsqXD3UYvaApp36gE80NqQCBdep2NiAif/IHDs4tJe6I/yhcV3SUvBSkeraSNXZtY2i7n6bHe8XbkpamYTN2hk4uKPjIOMDEf0ID3RcF5E= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(185117386973197)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(8121501046)(5005006)(10201501046)(3231023)(944501161)(3002001)(93006095)(93001095)(6055026)(6096035)(201703131430075)(201703131448075)(201703131433075)(201703151042153)(20161123556025)(20161123565025)(20161123561025)(20161123559100)(20161123563025)(201708071742011); SRVR:MWHPR03MB2701; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:MWHPR03MB2701; X-Forefront-PRVS: 0554B1F54F X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtNV0hQUjAzTUIyNzAxOzIzOlRzM2FiaVVYd25obVo0cDBHVWVNVFVGOThw?= =?utf-8?B?SVhwYi9WNkIvN3NuZlY1L00yaitSTHVnNDNIQ2txdHhxTG5TUlBYcmpOVkEx?= =?utf-8?B?cGoyc0srVURPR0Vmc0M4blluMXZEVGs2TW5ZOVdDSmdpNXhsdEovVis2bThZ?= =?utf-8?B?K2RVNEFsU1VzZlE1dHNDRDRhMVppdGlNMXJkTXJZUkloZWkwSW54bVZabndh?= =?utf-8?B?cnIyU0puWit3M1NGSTF4alF0cDZSWW1qZUFDTWpsZEtiWmtpRjBoc0dyS3Vi?= =?utf-8?B?R2VwaVNKcVd5TExXaEtmTkhDSllYSFRrM01HOWdUYjhNRGFKczlTUS9NejRD?= =?utf-8?B?Q2R3STBHVWZMcGtlN3RBV2R5cnlyb2JWV3pqTGhBZXpOV1g2bmphRENyRkhz?= =?utf-8?B?NWNkYnR4RUtpaVFheHdmK1hrTVVBbGZDUFpKL3VkTGRMVXZucjZpTndYV3E1?= =?utf-8?B?VWRDNFZNN2d1VFdQNGVlOHNOekpGNzNLSG11SFM3ZUx5SlA4M3ZWMHZ6NHNF?= =?utf-8?B?QkpiWkF5bTlUbXEydXBHTWVFaVpMMGVZVzdSS2VyeERSYVlLZTlmRWc2N2Vo?= =?utf-8?B?VG9uWFpNUU1WTmgxMDBFUXZFTFNwZ2dBMjQ5OEg3NHhQVUxacUxybTJudVNL?= =?utf-8?B?ZVRxSy9mcVN5ZE1sRFFISnNIb3ZoTVA0b29zY3hHcys2Y2YyZUhwb056N3Fo?= =?utf-8?B?bVdSQ1dVR3hRZll0R3VHS2lWUFd2TWpuV2E5WmJpWmNWQW5RZUtPUmZla05V?= =?utf-8?B?c1ltL3MxU3Q5RjN0dDloVTVrY0xXV2xVanVTL0hETEdycFNsZ0R1cW1wTnhK?= =?utf-8?B?NHgveldoRk9PS2JCM1g0ZHp2MVR2Wlhacmh2SHRHL1hHTW1YTHZCeU51VlIr?= =?utf-8?B?ZnYxVWxNSDUrT2pDZEhsV1NVL25jS1M0SkpqUWNnSm44UmtwSjlKa25idHpP?= =?utf-8?B?SSt3K1NNMklXQUVwT3YxY1FXS0hkd2tFcmtEbEJVcjhWdHZXKy9OMWd4NjB5?= =?utf-8?B?NE82MmlXaGlXMktLRzY0ZDArMS9sQWNJWWpwa0pMZldncENrWFMvamRnNUpQ?= =?utf-8?B?dGZ5ak9QSU9VV3EvRStod1Z0bWhHWk9QNnlJWGZLL1NhN0c1ZUVSWktOdlcx?= =?utf-8?B?NW9QcE1VQ2tPeE5Oc1JyQzZ3NlEvaTJQZEhXakh4S3RzeXY2UERDVHRkTTZD?= =?utf-8?B?RmZGcEtxNy9QczllcURTZmU2akUrZlNLN2ZycFptUFppOUFVNUdady9PVUpI?= =?utf-8?B?U3VoT1pBbzBKS0x3cG9UTWhJMnVSZm9tZU93L3Uxd0ZtY1lWaE0xQk5VYmxq?= =?utf-8?B?WCtTS1FjR0QzcG1HMk85Wno1MGpwZ2NYOFBjdG45UjRERGJkcWNTeFZ5S0E5?= =?utf-8?B?anZpYnl0UFgxdDBqeXpoTVNvRXNFKzg4UFliOFBDMDhhQ1F1aU9UUHFUS2hy?= =?utf-8?B?RWpGcXdKSmQrQmJHSGt6QkZWaTBOSTdseU9UOEFOajZOdmZ5Y0EyOWhVV3Bt?= =?utf-8?B?RWVKamE2d2pWeGxUdmErenp2K0p5KzFZeWpFcDdkV1hGZDZWckFFcWVOMGh5?= =?utf-8?B?SWFMbVErMkpqWEh2U0ZENVNoVDhWRTFoSExiQUY0OXFVUkhMV3JLejFDNTdO?= =?utf-8?B?S3l4U3V3RUdDalNtblRUSS9UZ1kvSG1LdmtKM0ZFaFR3ZStlWUdsQTl0TTdw?= =?utf-8?B?M3VpVWJBTm1PMnFtcFNlYXZsdVZxS0NwY014b0IxT0F0cGZKZThRdDViNys5?= =?utf-8?B?aCsyUnh0enZlOXBSTkdHcmpOcFl3ZGlzMWgzNXZHblA5WVZkdjBvSkZxclFl?= =?utf-8?B?Vm5xYzd0RHFQUHdGZTlremdDM1FRTDUyQ0tHWWNMRkxZQVB4Ynoxb2lIQ2F0?= =?utf-8?B?MFlqejJ0VTNsSU04Z2xlMDhjRUcvRzdoMU9acGhNcTgybFVET0tnQUkrRjdB?= =?utf-8?B?VFFlNmVwanhFZnc2R2NPVW5NUC9JQk9KMHExZXJHeEhjNFlOY2ZtWnA5S2NR?= =?utf-8?B?cUk0eWJQOHZ3RHh1N05YVTAreVMxa0VrY1Z6WFp4L2ZPcnhhOTZsODByWXlP?= =?utf-8?B?Wno2ekloWUFXQzBoSEJ0V0U3dlhNWkIyTDNRc0NSeXZHUTJmU1RsVlQ0Znp0?= =?utf-8?Q?LNudd2JYYLkY4PK8mLvwCIw=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR03MB2701; 6:AL1wzRjxV8Odv4X2DdxDm7kdQU2MSbTmXV1moSVD41I1cCWNs7k3TXQLNAZyTjs1LJvUAG+tkrT/BENt9eK1rLjvOEiyACfLCsZeVGdy5PDRKRMXBxB4y9i6gLOSiKA/GgJnBzn/f0P9eh83zg53zWk/7c5IqQCC4punneAa2w7eeV55ZTYFxaiDumPdYxahqCfl7aSH9eMuGcW4qdttBiE8r4gjdm6aqMEy9PWJVWRSbHZ9MezcqKjd6SS52l5VqBvrVtH8P9Ik5HkDxWbRcVwAb6YaTD6JS/HnypWLbeUKT7ppIbzF6O4/aKDv2Y8hv5+OAFfiWDHV7Y4wimMGHv5ZWjtj9eGRJ9a2btbw/tQ=; 5:FuixMGnHRDUVLkPnlF5Kb9f/ZiE5jaEHRD1YC9SmrFhEp5rBZjSKZNVOGOoQzMWcvkyiTZQx27XE6L8Cof4nP3OnOLZqKc15NyjG6+XPpfBcy75+8Eu4M2dfksRqMkfRzsqd/7Mp/N0BuVc8efd1keKx9uGSF9Ih8vGlvz/TZlQ=; 24:bKeF7ZvuRSDta6jkIwLznl22VbNyXqMMKz22aJ2yAuLDlkVu0zrJD7dSzS9A0XafuNs5xf/UAdJtC9FVIdhMNUskNO46iithRvT0iG87T+o=; 7:RnrqP1TCWMyA+fT4oAerxG+MyCdvAvSvcQir0SqncexIWRjuCi/mPOYfv4cSDozSaOiOwFxQRVEi+sUfzQX21su7KB2WqTCK3l9TdpWkV7AkcUB5bBgBYv/CZdt4vA1aOnOR4M3QEUoLEI7hH769Fvzrj5HKR+gwgmn5o/indFcJrp4FAD9bbx0gRYt/MF9dweagtufvR1NVKUWqBtPXKeU8rlNl7p+YEGDSKz6RQzdGrTFdMkAVW6Wa9vyEJTq/ SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 16 Jan 2018 06:29:52.0448 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: a6213d5e-c1b9-49cf-5748-08d55caa8dd2 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR03MB2701 Subject: Re: [dpdk-dev] [PATCH] examples/ipsec-secgw: update incremental checksum X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Jan 2018 06:29:56 -0000 Hi Radu, On 1/15/2018 8:10 PM, Nicolau, Radu wrote: > > >> -----Original Message----- >> From: Akhil Goyal [mailto:akhil.goyal@nxp.com] >> Sent: Monday, January 15, 2018 12:48 PM >> To: dev@dpdk.org >> Cc: De Lara Guarch, Pablo ; >> hemant.agrawal@nxp.com; Nicolau, Radu >> Subject: Re: [PATCH] examples/ipsec-secgw: update incremental checksum >> >> On 1/15/2018 6:12 PM, Akhil Goyal wrote: >>> When TTL is decremented or ecn is updated in IP header before >>> forwarding the packet, checksum needs to be updated. >>> >>> In this patch an incremental checksum is added for ipv4 case. >>> >>> Signed-off-by: Akhil Goyal >>> --- >> This patch is an update to a very old patch which was rejected earlier. >> http://dpdk.org/dev/patchwork/patch/16113/ >> >>> examples/ipsec-secgw/ipip.h | 19 ++++++++++++++++++- >>> 1 file changed, 18 insertions(+), 1 deletion(-) >>> >>> diff --git a/examples/ipsec-secgw/ipip.h b/examples/ipsec-secgw/ipip.h >>> index fb6a6fa..13b8455 100644 >>> --- a/examples/ipsec-secgw/ipip.h >>> +++ b/examples/ipsec-secgw/ipip.h >>> @@ -27,6 +27,10 @@ ipip_outbound(struct rte_mbuf *m, uint32_t offset, >> uint32_t is_ipv6, >>> if (inip4->ip_v == IPVERSION) { >>> /* XXX This should be done by the forwarding engine instead >> */ >>> inip4->ip_ttl -= 1; >>> + if (inip4->ip_sum >= rte_cpu_to_be_16(0xffff - 0x100)) >>> + inip4->ip_sum += rte_cpu_to_be_16(0x100) + 1; >>> + else >>> + inip4->ip_sum += rte_cpu_to_be_16(0x100); >>> ds_ecn = inip4->ip_tos; >>> } else { >>> inip6 = (struct ip6_hdr *)inip4; >>> @@ -95,8 +99,17 @@ ip6ip_outbound(struct rte_mbuf *m, uint32_t offset, >>> static inline void >>> ip4_ecn_setup(struct ip *ip4) >>> { >>> - if (ip4->ip_tos & IPTOS_ECN_MASK) >>> + if (ip4->ip_tos & IPTOS_ECN_MASK) { >>> + unsigned long sum; >>> + uint8_t old; >>> + >>> + old = ip4->ip_tos; >>> ip4->ip_tos |= IPTOS_ECN_CE; >>> + sum = old + (~(*(uint8_t *)&ip4->ip_tos) & 0xff); >>> + sum += rte_be_to_cpu_16(ip4->ip_sum); >>> + sum = (sum & 0xffff) + (sum >> 16); >>> + ip4->ip_sum = rte_cpu_to_be_16(sum + (sum >> 16)); >>> + } >>> } >>> >>> static inline void >>> @@ -140,6 +153,10 @@ ipip_inbound(struct rte_mbuf *m, uint32_t offset) >>> ip4_ecn_setup(inip4); >>> /* XXX This should be done by the forwarding engine instead >> */ >>> inip4->ip_ttl -= 1; >>> + if (inip4->ip_sum >= rte_cpu_to_be_16(0xffff - 0x100)) >>> + inip4->ip_sum += rte_cpu_to_be_16(0x100) + 1; >>> + else >>> + inip4->ip_sum += rte_cpu_to_be_16(0x100); >>> m->packet_type &= ~RTE_PTYPE_L4_MASK; >>> if (inip4->ip_p == IPPROTO_UDP) >>> m->packet_type |= RTE_PTYPE_L4_UDP; >>> > > I think instead of manipulating the checksum in this way it will be better to use rte_ipv4_cksum to re-compute it, unless the performance penalty is too significant. > There would be unnecessary wastage of cycles. This way of updating the checksum is implemented as per the RFC1141 https://tools.ietf.org/html/rfc1141 Do you see any issue in this way of updating the checksum? -Akhil