From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 74837A034C for ; Sat, 26 Mar 2022 09:13:27 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 19557410F3; Sat, 26 Mar 2022 09:13:27 +0100 (CET) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id 214954014F for ; Sat, 26 Mar 2022 09:13:24 +0100 (CET) Received: from kwepemi500011.china.huawei.com (unknown [172.30.72.53]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4KQWtG2mbSz1GCxh for ; Sat, 26 Mar 2022 16:13:10 +0800 (CST) Received: from kwepeml500002.china.huawei.com (7.221.188.128) by kwepemi500011.china.huawei.com (7.221.188.124) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Sat, 26 Mar 2022 16:13:22 +0800 Received: from dggpemm500020.china.huawei.com (7.185.36.49) by kwepeml500002.china.huawei.com (7.221.188.128) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Sat, 26 Mar 2022 16:13:22 +0800 Received: from dggpemm500020.china.huawei.com ([7.185.36.49]) by dggpemm500020.china.huawei.com ([7.185.36.49]) with mapi id 15.01.2308.021; Sat, 26 Mar 2022 16:13:21 +0800 From: "jiangheng (H)" To: "users@dpdk.org" Subject: [dpdk-users] DPDK RX TCP checksum failed Thread-Topic: [dpdk-users] DPDK RX TCP checksum failed Thread-Index: AdhA6QKUGskwiuTFTOWojyhhlQQdHQ== Date: Sat, 26 Mar 2022 08:13:21 +0000 Message-ID: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.136.117.195] Content-Type: multipart/alternative; boundary="_000_cb53d6174669407b96a0f6a09d6bf134huaweicom_" MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_cb53d6174669407b96a0f6a09d6bf134huaweicom_ Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable Hi all, I tried using the checksum offloads feature in DPDK and it did not see work= ing under virtual machine. Port only support TCP checksum and do not support IP checksum: rx_offload_capa =3D DEV_RX_OFFLOAD_TCP_CKSUM tx_offload_capa =3D DEV_TX_OFFLOAD_TCP_CKSUM so I config rxmode.offload txmode.offloads as below: rxmode.offloads =3D DEV_RX_OFFLOAD_TCP_CKSUM txmode.offloads =3D DEV_TX_OFFLOAD_TCP_CKSUM For TX, I set the following parameters, it works good. mbuf->l2_len =3D sizeof(*ethhdr) mbuf->l3_len =3D ip header len mbuf-ol_flags =3D RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM For RX, It will execute the following code: In drivers/net/virtio/virtio_rxtx.c virtio_rx_offload function : if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { hdrlen =3D hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len; if (hdr->csum_start <=3D hdrlen && l4_supported) { m->ol_flags |=3D RTE_MBUF_F_RX_L4_CKSUM_NONE; } else { m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP RX checksum= failed. How do I avoid the above code going into this branch? Thanks, Jinag. --_000_cb53d6174669407b96a0f6a09d6bf134huaweicom_ Content-Type: text/html; charset="us-ascii" Content-Transfer-Encoding: quoted-printable

Hi all,

 

I tried using the checksum offl= oads feature in DPDK and it did not see working under virtual machine.=

 

Port only support TCP checksum = and do not support IP checksum:

rx_offload_capa =3D DEV_RX_OFFL= OAD_TCP_CKSUM

tx_offload_capa =3D DEV_TX_OFFL= OAD_TCP_CKSUM

 

so I config rxmode.offload txmo= de.offloads as below:

rxmode.offloads =3D DEV_RX_OFFL= OAD_TCP_CKSUM

txmode.offloads =3D DEV_TX_OFFL= OAD_TCP_CKSUM

 

For TX, I set the following par= ameters, it works good.

mbuf->l2_len =3D sizeof(*eth= hdr)

mbuf->l3_len =3D ip header l= en

mbuf-ol_flags =3D RTE_MBUF_F_TX= _IPV4 | RTE_MBUF_F_TX_TCP_CKSUM

 

 =

For RX, It will execute the fol= lowing code:

In drivers/net/virtio/virtio_rx= tx.c  virtio_rx_offload function :

    if (hdr->= flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) {

     &= nbsp;  hdrlen =3D hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens= .l4_len;

     &= nbsp;  if (hdr->csum_start <=3D hdrlen && l4_supported) = {

     &= nbsp;      m->ol_flags |=3D RTE_MBUF_F_RX_L4_CK= SUM_NONE;

     &= nbsp;  } else {

 

m->ol_flags set to RTE_MBUF_= F_RX_L4_CKSUM_NONE, causing the TCP RX checksum failed.

How do I avoid the above code g= oing into this branch?

 

Thanks,

Jinag.

 

 

 

 

 

 

 

--_000_cb53d6174669407b96a0f6a09d6bf134huaweicom_-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CE116A034C for ; Sat, 26 Mar 2022 19:59:29 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 9C0B24285F; Sat, 26 Mar 2022 19:59:28 +0100 (CET) Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by mails.dpdk.org (Postfix) with ESMTP id 1F78642858 for ; Sat, 26 Mar 2022 19:59:27 +0100 (CET) Received: by mail-pl1-f172.google.com with SMTP id p17so11399162plo.9 for ; Sat, 26 Mar 2022 11:59:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=networkplumber-org.20210112.gappssmtp.com; s=20210112; h=date:from:to:cc:subject:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=L3fGkm960touch63/HLsndD8P5oxrgGmURr94ei8Wxc=; b=FlyrL0jaaQ7wwvA9RqQTZNrij2XAz0Spb3Ub2oSdGPeAu9oaDRyfMGOTPagnPs4ovq 7iv8UDsxXy4chrw249v+UXcHYJlFGwfIuwKn3km9QP8YQFo2pvndPWY51uO7txsrjbhl fbVpFsNrCrpTTNQifsW5ydEerZiOoCLLXN+ZkGwKCYXJLxctaRZIV6vLhy73RekJkDWc RaqjXxQIS0Qw0Zi8Yj9JwnYfruqtbY59HvkhMgcQ9LqpY38rFw8PGZLQVzpo7ze9MD75 T1bCdvGPaNxnukp2bV9/xJdYkqhkF2dC/uFTEXSH7Mig74HDp8uhjI9uT8yhk3KsRjFX u5KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=L3fGkm960touch63/HLsndD8P5oxrgGmURr94ei8Wxc=; b=BoqtygVQjRetQ4mqO0m0mzRAjA+HIaGnldtPbhp1RYRblynGeH9cYq0auq7vp8omoQ LugFSrWdzc2N/LsH7ji/DnD5M4xHvsX2dcD3dGdl5ebKUKFSmcehD5HHXQujqOdPUED6 mhUGYtwTKiBAOBzVC34+xN9LAHthiJBPakpgkXfnQ905yh3NBNgvMzEV3tq/ojv0JYVZ w0My+pC1GWvhu06c+sbSqxJFghQ46KrZMGbFRO6DhY7/9QZW7OJfpn/Zq0ulw27quCrt tEgd+6wipK2EwtPysLYXQ39PWkJU2TpguIV7k8PAO29nDle2o/cG0B4hhhpvFoSWjpu5 7PPQ== X-Gm-Message-State: AOAM533osXFd141jJST0ffITO06+AY707C1KFzS/h/fObjRfLXlz1nLG NTU/KUJE8cuNk+PIVwugnPV7Hw== X-Google-Smtp-Source: ABdhPJw+//gxuTNmP9tmvoVMVWtObpypEwU1JeqQ74j5P/tZsFAYBm18z3t4hf/myAn2W8DAbVIMsw== X-Received: by 2002:a17:90a:306:b0:1c6:ff30:70da with SMTP id 6-20020a17090a030600b001c6ff3070damr31563990pje.117.1648321166953; Sat, 26 Mar 2022 11:59:26 -0700 (PDT) Received: from hermes.local (204-195-112-199.wavecable.com. [204.195.112.199]) by smtp.gmail.com with ESMTPSA id l6-20020a17090a660600b001c985b0cb53sm1143254pjj.26.2022.03.26.11.59.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 26 Mar 2022 11:59:26 -0700 (PDT) Date: Sat, 26 Mar 2022 11:59:23 -0700 From: Stephen Hemminger To: "jiangheng (H)" Cc: "users@dpdk.org" Subject: Re: [dpdk-users] DPDK RX TCP checksum failed Message-ID: <20220326115923.715473aa@hermes.local> In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org On Sat, 26 Mar 2022 08:13:21 +0000 "jiangheng (H)" wrote: > Hi all, > > I tried using the checksum offloads feature in DPDK and it did not see working under virtual machine. > > Port only support TCP checksum and do not support IP checksum: > rx_offload_capa = DEV_RX_OFFLOAD_TCP_CKSUM > tx_offload_capa = DEV_TX_OFFLOAD_TCP_CKSUM > > so I config rxmode.offload txmode.offloads as below: > rxmode.offloads = DEV_RX_OFFLOAD_TCP_CKSUM > txmode.offloads = DEV_TX_OFFLOAD_TCP_CKSUM > > For TX, I set the following parameters, it works good. > mbuf->l2_len = sizeof(*ethhdr) > mbuf->l3_len = ip header len > mbuf-ol_flags = RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM Virtio does not support IP checksum offload. Because Virtio passes packets to Linux kernel, and Linux kernel does not do IP checksum offload. The IP checksum is so trivial it is faster for most things to just do it in software; the header is only 20 bytes and it will be in cache. You should always check device capability before enabling an offload. > For RX, It will execute the following code: > In drivers/net/virtio/virtio_rxtx.c virtio_rx_offload function : > if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { > hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len; > if (hdr->csum_start <= hdrlen && l4_supported) { > m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE; > } else { > > m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP RX checksum failed. > How do I avoid the above code going into this branch? > If you want TCP checksum offload you have to set RTE_ETH_RX_OFFLOAD_TCP_CKSUM in the rxmode when port is configured. This will tell virtio to ask the host to do rx offload. Again, virtio does not do IP checksum offload and you should always query device capability first. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id D0A1FA034C for ; Mon, 28 Mar 2022 03:50:19 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A4DB04068B; Mon, 28 Mar 2022 03:50:19 +0200 (CEST) Received: from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187]) by mails.dpdk.org (Postfix) with ESMTP id 7857D40143 for ; Mon, 28 Mar 2022 03:50:18 +0200 (CEST) Received: from dggpemm500020.china.huawei.com (unknown [172.30.72.56]) by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4KRbHF4XHzzcbCw; Mon, 28 Mar 2022 09:50:01 +0800 (CST) Received: from dggpemm100017.china.huawei.com (7.185.36.220) by dggpemm500020.china.huawei.com (7.185.36.49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Mon, 28 Mar 2022 09:50:16 +0800 Received: from dggpemm500020.china.huawei.com (7.185.36.49) by dggpemm100017.china.huawei.com (7.185.36.220) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2308.21; Mon, 28 Mar 2022 09:50:16 +0800 Received: from dggpemm500020.china.huawei.com ([7.185.36.49]) by dggpemm500020.china.huawei.com ([7.185.36.49]) with mapi id 15.01.2308.021; Mon, 28 Mar 2022 09:50:16 +0800 From: "jiangheng (H)" To: Stephen Hemminger CC: "users@dpdk.org" Subject: =?gb2312?B?tPC4tDogW2RwZGstdXNlcnNdIERQREsgUlggVENQIGNoZWNrc3VtIGZhaWxl?= =?gb2312?Q?d?= Thread-Topic: [dpdk-users] DPDK RX TCP checksum failed Thread-Index: AdhA6QKUGskwiuTFTOWojyhhlQQdHQAF4p+AAFDPHnA= Date: Mon, 28 Mar 2022 01:50:16 +0000 Message-ID: <2ca34799291042f9b2ce8e1adc0fde0a@huawei.com> References: <20220326115923.715473aa@hermes.local> In-Reply-To: <20220326115923.715473aa@hermes.local> Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.136.117.195] Content-Type: text/plain; charset="gb2312" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org PiBPbiBTYXQsIDI2IE1hciAyMDIyIDA4OjEzOjIxICswMDAwDQo+ICJqaWFuZ2hlbmcgKEgpIiA8 amlhbmdoZW5nMTJAaHVhd2VpLmNvbT4gd3JvdGU6DQo+IA0KPiA+IEhpIGFsbCwNCj4gPg0KPiA+ IEkgdHJpZWQgdXNpbmcgdGhlIGNoZWNrc3VtIG9mZmxvYWRzIGZlYXR1cmUgaW4gRFBESyBhbmQg aXQgZGlkIG5vdCBzZWUNCj4gd29ya2luZyB1bmRlciB2aXJ0dWFsIG1hY2hpbmUuDQo+ID4NCj4g PiBQb3J0IG9ubHkgc3VwcG9ydCBUQ1AgY2hlY2tzdW0gYW5kIGRvIG5vdCBzdXBwb3J0IElQIGNo ZWNrc3VtOg0KPiA+IHJ4X29mZmxvYWRfY2FwYSA9IERFVl9SWF9PRkZMT0FEX1RDUF9DS1NVTSB0 eF9vZmZsb2FkX2NhcGEgPQ0KPiA+IERFVl9UWF9PRkZMT0FEX1RDUF9DS1NVTQ0KPiA+DQo+ID4g c28gSSBjb25maWcgcnhtb2RlLm9mZmxvYWQgdHhtb2RlLm9mZmxvYWRzIGFzIGJlbG93Og0KPiA+ IHJ4bW9kZS5vZmZsb2FkcyA9IERFVl9SWF9PRkZMT0FEX1RDUF9DS1NVTSB0eG1vZGUub2ZmbG9h ZHMgPQ0KPiA+IERFVl9UWF9PRkZMT0FEX1RDUF9DS1NVTQ0KPiA+DQo+ID4gRm9yIFRYLCBJIHNl dCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMsIGl0IHdvcmtzIGdvb2QuDQo+ID4gbWJ1Zi0+bDJf bGVuID0gc2l6ZW9mKCpldGhoZHIpDQo+ID4gbWJ1Zi0+bDNfbGVuID0gaXAgaGVhZGVyIGxlbg0K PiA+IG1idWYtb2xfZmxhZ3MgPSBSVEVfTUJVRl9GX1RYX0lQVjQgfCBSVEVfTUJVRl9GX1RYX1RD UF9DS1NVTQ0KPiANCj4gDQo+IFZpcnRpbyBkb2VzIG5vdCBzdXBwb3J0IElQIGNoZWNrc3VtIG9m ZmxvYWQuICBCZWNhdXNlIFZpcnRpbyBwYXNzZXMNCj4gcGFja2V0cyB0byBMaW51eCBrZXJuZWws IGFuZCBMaW51eCBrZXJuZWwgZG9lcyBub3QgZG8gSVAgY2hlY2tzdW0gb2ZmbG9hZC4NCj4gVGhl IElQIGNoZWNrc3VtIGlzIHNvIHRyaXZpYWwgaXQgaXMgZmFzdGVyIGZvciBtb3N0IHRoaW5ncyB0 byBqdXN0IGRvIGl0IGluDQo+IHNvZnR3YXJlOyB0aGUgaGVhZGVyIGlzIG9ubHkgMjAgYnl0ZXMg YW5kIGl0IHdpbGwgYmUgaW4gY2FjaGUuDQo+IA0KPiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayBk ZXZpY2UgY2FwYWJpbGl0eSBiZWZvcmUgZW5hYmxpbmcgYW4gb2ZmbG9hZC4NCj4gDQo+IA0KPiA+ IEZvciBSWCwgSXQgd2lsbCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29kZToNCj4gPiBJbiBkcml2 ZXJzL25ldC92aXJ0aW8vdmlydGlvX3J4dHguYyAgdmlydGlvX3J4X29mZmxvYWQgZnVuY3Rpb24g Og0KPiA+ICAgICBpZiAoaGRyLT5mbGFncyAmIFZJUlRJT19ORVRfSERSX0ZfTkVFRFNfQ1NVTSkg ew0KPiA+ICAgICAgICAgaGRybGVuID0gaGRyX2xlbnMubDJfbGVuICsgaGRyX2xlbnMubDNfbGVu ICsgaGRyX2xlbnMubDRfbGVuOw0KPiA+ICAgICAgICAgaWYgKGhkci0+Y3N1bV9zdGFydCA8PSBo ZHJsZW4gJiYgbDRfc3VwcG9ydGVkKSB7DQo+ID4gICAgICAgICAgICAgbS0+b2xfZmxhZ3MgfD0g UlRFX01CVUZfRl9SWF9MNF9DS1NVTV9OT05FOw0KPiA+ICAgICAgICAgfSBlbHNlIHsNCj4gPg0K PiA+IG0tPm9sX2ZsYWdzIHNldCB0byBSVEVfTUJVRl9GX1JYX0w0X0NLU1VNX05PTkUsIGNhdXNp bmcgdGhlIFRDUA0KPiBSWCBjaGVja3N1bSBmYWlsZWQuDQo+ID4gSG93IGRvIEkgYXZvaWQgdGhl IGFib3ZlIGNvZGUgZ29pbmcgaW50byB0aGlzIGJyYW5jaD8NCj4gPg0KPiANCj4gSWYgeW91IHdh bnQgVENQIGNoZWNrc3VtIG9mZmxvYWQgeW91IGhhdmUgdG8gc2V0DQo+IFJURV9FVEhfUlhfT0ZG TE9BRF9UQ1BfQ0tTVU0gaW4gdGhlIHJ4bW9kZSB3aGVuIHBvcnQgaXMNCj4gY29uZmlndXJlZC4g IFRoaXMgd2lsbCB0ZWxsIHZpcnRpbyB0byBhc2sgdGhlIGhvc3QgdG8gZG8gcnggb2ZmbG9hZC4g QWdhaW4sDQo+IHZpcnRpbyBkb2VzIG5vdCBkbyBJUCBjaGVja3N1bSBvZmZsb2FkIGFuZCB5b3Ug c2hvdWxkIGFsd2F5cyBxdWVyeQ0KPiBkZXZpY2UgY2FwYWJpbGl0eSBmaXJzdC4NCg0KSSBoYXZl IHF1ZXJpZWQgZGV2aWNlIGNhcGFiaWxpdHkgYW5kIGl0IHRlbGwgbWUgaXQgc3VwcG9ydHMgdGNw IGNoZWNrc3VtLCBub3Qgc3VwcG9ydHMgaXAgY2hlY2tzdW0uIA0KU28gSSBoYXZlIHNldCBSVEVf RVRIX1JYX09GRkxPQURfVENQX0NLU1VNKERFVl9SWF9PRkZMT0FEX1RDUF9DS1NVTSkgZmxhZyB3 aGVuIHBvcnQgaXMgY29uZmlndXJlZCh1c2UgcnRlX2V0aF9kZXZfY29uZmlndXJlIGZ1bmN0aW9u KQ0KQnV0IFJYIGNoZWNrc3VtIHN0aWxsIGZhaWxlZCBpbiBiZWxvdyBicmFuY2g6DQpkcml2ZXJz L25ldC92aXJ0aW8vdmlydGlvX3J4dHguYyAgdmlydGlvX3J4X29mZmxvYWQgZnVuY3Rpb246DQpp ZiAoaGRyLT5mbGFncyAmIFZJUlRJT19ORVRfSERSX0ZfTkVFRFNfQ1NVTSkgew0KCWhkcmxlbiA9 IGhkcl9sZW5zLmwyX2xlbiArIGhkcl9sZW5zLmwzX2xlbiArIGhkcl9sZW5zLmw0X2xlbjsNCglp ZiAoaGRyLT5jc3VtX3N0YXJ0IDw9IGhkcmxlbiAmJiBsNF9zdXBwb3J0ZWQpIHsNCgkJaWYgKGhk ci0+Y3N1bV9zdGFydCA8PSBoZHJsZW4gJiYgbDRfc3VwcG9ydGVkKSB7DQoJCQltLT5vbF9mbGFn cyB8PSBSVEVfTUJVRl9GX1JYX0w0X0NLU1VNX05PTkU7DQoJCX0gZWxzZSB7DQpIZHItPmNzdW1f c3RhcnQgPD0gaGRybGVuLCBtLT5vbF9mbGFncyB3aWxsIHNldCB0byBSVEVfTUJVRl9GX1JYX0w0 X0NLU1VNX05PTkUsIGNhdXNpbmcgUlggY2hlY2tzdW0gZmFpbGVkLg0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 52F0FA034C for ; Mon, 28 Mar 2022 04:15:37 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DF7624068B; Mon, 28 Mar 2022 04:15:36 +0200 (CEST) Received: from mail-pl1-f169.google.com (mail-pl1-f169.google.com [209.85.214.169]) by mails.dpdk.org (Postfix) with ESMTP id E608640143 for ; Mon, 28 Mar 2022 04:15:34 +0200 (CEST) Received: by mail-pl1-f169.google.com with SMTP id w8so13571463pll.10 for ; Sun, 27 Mar 2022 19:15:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=X6eBicOX+NNPf3bUEqRYu52f7oBq1VlB4trvnXvHTVA=; b=f+kH9td2lbRglKRvkpnSG9WG4rMhssT8A7tsHsdiqVbbbbq7ZxNhLPz2kmNJ4wD80R PAnB1Xe6tk3mL7vKX63DGBGv0Mgakz6E+CAwB/wC58zWrGU/vKdK9BWSL6K/6ihFLnIZ By0R1i3yr+kW9qnIlwcG93GlIgRuz1xUTG4h90Hy7HRrx8lAKqgitfBr/lHtnlpZggvO k9fDXRKJXQpRPO9oR7Htb9mQd6jfJSC4ZF0FAEwjhILvh345SuG6RRDWPUM6ZoMhftho RJemp4mCx4QFvsZF+YEFDXK4DkqprxQGLvAC1vre5Xkk+nU1iAbRRriqy3nPPzNa1is9 VJSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=X6eBicOX+NNPf3bUEqRYu52f7oBq1VlB4trvnXvHTVA=; b=thd7T7fSO/ZYUAdAMDdDU9vg14Re7TJQtcq8TSSCmUiFTfCtCoLXno81TZvR0vK6au cllCJYI3XR2NCE+8gWpEauMaf7z1IbeYGtZjL9b7pwJ34S9omSzxF4iFPe4/dAMO7Up6 RYohW9s8NgjjYcFpsmVLmEJKwPCHDrb1GK1FNxSER0SV3tb7fwFabGMZ3UNUrlOjUrzY HtshFZU/NDt6SQOuD0zCUqguG3Yw5zVL/KVe4xN6H5/DGtJt0ezv94uPN2tX+qkU30W/ FeXY48by6XWeWqIEpL0qd2KLkKnzckkPHU4RZp5sgX+kqeggk10M9Q6DidL7MBAoIcvs +MNg== X-Gm-Message-State: AOAM531IXZjDRPnMoVnbdPnNslPBUBE60Sgx/02y4Sa8w/1lVRKru/hP GxVjRfvhOrMT2foFM5tbbbOR/2WrlD7dCKvHRag= X-Google-Smtp-Source: ABdhPJzjLqFm9i5e0P6ooQrNSrm+uMO+GC0l1mpZUu/ooIqRuw3Lwapoznr7yQVF9ficSBDLM4Lw2uFPFtwuVVj9rTU= X-Received: by 2002:a17:903:18c:b0:154:9ee:cedc with SMTP id z12-20020a170903018c00b0015409eecedcmr24367652plg.123.1648433733955; Sun, 27 Mar 2022 19:15:33 -0700 (PDT) MIME-Version: 1.0 References: <20220326115923.715473aa@hermes.local> <2ca34799291042f9b2ce8e1adc0fde0a@huawei.com> In-Reply-To: <2ca34799291042f9b2ce8e1adc0fde0a@huawei.com> From: Harold Huang Date: Mon, 28 Mar 2022 10:15:22 +0800 Message-ID: Subject: Re: [dpdk-users] DPDK RX TCP checksum failed To: "jiangheng (H)" Cc: Stephen Hemminger , "users@dpdk.org" Content-Type: text/plain; charset="UTF-8" X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org On Mon, Mar 28, 2022 at 9:50 AM jiangheng (H) wrote: > > > On Sat, 26 Mar 2022 08:13:21 +0000 > > "jiangheng (H)" wrote: > > > > > Hi all, > > > > > > I tried using the checksum offloads feature in DPDK and it did not see > > working under virtual machine. > > > > > > Port only support TCP checksum and do not support IP checksum: > > > rx_offload_capa = DEV_RX_OFFLOAD_TCP_CKSUM tx_offload_capa = > > > DEV_TX_OFFLOAD_TCP_CKSUM > > > > > > so I config rxmode.offload txmode.offloads as below: > > > rxmode.offloads = DEV_RX_OFFLOAD_TCP_CKSUM txmode.offloads = > > > DEV_TX_OFFLOAD_TCP_CKSUM > > > > > > For TX, I set the following parameters, it works good. > > > mbuf->l2_len = sizeof(*ethhdr) > > > mbuf->l3_len = ip header len > > > mbuf-ol_flags = RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM > > > > > > Virtio does not support IP checksum offload. Because Virtio passes > > packets to Linux kernel, and Linux kernel does not do IP checksum offload. > > The IP checksum is so trivial it is faster for most things to just do it in > > software; the header is only 20 bytes and it will be in cache. > > > > You should always check device capability before enabling an offload. > > > > > > > For RX, It will execute the following code: > > > In drivers/net/virtio/virtio_rxtx.c virtio_rx_offload function : > > > if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { > > > hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len; > > > if (hdr->csum_start <= hdrlen && l4_supported) { > > > m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE; > > > } else { > > > > > > m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP > > RX checksum failed. > > > How do I avoid the above code going into this branch? > > > > > > > If you want TCP checksum offload you have to set > > RTE_ETH_RX_OFFLOAD_TCP_CKSUM in the rxmode when port is > > configured. This will tell virtio to ask the host to do rx offload. Again, > > virtio does not do IP checksum offload and you should always query > > device capability first. > > I have queried device capability and it tell me it supports tcp checksum, not supports ip checksum. > So I have set RTE_ETH_RX_OFFLOAD_TCP_CKSUM(DEV_RX_OFFLOAD_TCP_CKSUM) flag when port is configured(use rte_eth_dev_configure function) > But RX checksum still failed in below branch: > drivers/net/virtio/virtio_rxtx.c virtio_rx_offload function: > if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { > hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len; > if (hdr->csum_start <= hdrlen && l4_supported) { > if (hdr->csum_start <= hdrlen && l4_supported) { > m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE; > } else { > Hdr->csum_start <= hdrlen, m->ol_flags will set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing RX checksum failed. Could you show the hdr->csum_start and hdrlen value in your test case? IIRC, hdr->csum_start should be hdr_lens.l2_len + hdr_lens.l3_len according to virtio sepc. The virtio spec has an example as follows: ``` For example, consider a partially checksummed TCP (IPv4) packet. It will have a 14 byte ether- net header and 20 byte IP header followed by the TCP header (with the TCP checksum field 16 bytes into that header). csum_start will be 14+20 = 34 (the TCP checksum includes the header), and csum_offset will be 16. ``` -- Thanks, Harold. From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3207AA034C for ; Mon, 28 Mar 2022 05:12:07 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id BBF6F4285A; Mon, 28 Mar 2022 05:12:06 +0200 (CEST) Received: from mail-vs1-f52.google.com (mail-vs1-f52.google.com [209.85.217.52]) by mails.dpdk.org (Postfix) with ESMTP id 149DC4068B for ; Mon, 28 Mar 2022 05:12:05 +0200 (CEST) Received: by mail-vs1-f52.google.com with SMTP id k15so11986663vsr.11 for ; Sun, 27 Mar 2022 20:12:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=oG9VjU16lypL2bVsxAk1PBAWtM/LGRAC47tuEjNo1/U=; b=g5KUmkE35HCdwZYVP39qKGtGbOmonMqhIYO8UGGmmz5t8kga97oaw9z0nkao+Y80ei vo6jrwydXaLMRnow+nYQaez3Fpo0tnkKUcOnp/RnjN/E2w2CEFIPHAMCde9JGxiyeAxD CePaiu431c6tlGWAKpDPKC559ICosCoVVQonAKhg+cIUrOuq/3oeO9vJMAtMJWGsQQEA EyxNUnRGnwe4VUkuHwNrSNgyK4FqKLKQ3xS6OhstLixlREzD/Bw6gEfVf9Xb5PauV0BK M9hjEH7LTrCu2GRhjGcNK/gutjcSW/PdVOepCBpFouw60VPrCpJEv1JLDT5Ix6epw63F 4mBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=oG9VjU16lypL2bVsxAk1PBAWtM/LGRAC47tuEjNo1/U=; b=52VEnht9ifp0qRktqOO7PUPfyIZTFle8AhcAK3ZraHuCmoyQmC11L7upKsKgCpOcq8 0FXcVQO8KjP+wzb8mbuLcEb4pokageiqMz9zki2E30S4Qkhk0lonKTr7FYzgEKUyYEXZ cCMfZwFULpzPgFG0iulUnajAGst9pMYWNwPBRFqGFXEtCoHyCraLbdgEl35l6bFllOv6 axCG5GCsfDORfwaHBlpZ4szttq/xDwAMCDdeT8oIxbGJV3HZ5XbxzZZhs1oMZb/tquyH mTpZ+Jvu/3Ddne3US4JSWIzsVwgCpZO19WCnBQLECazh1yl0WNevruaniz6q+/k/uIBT BheA== X-Gm-Message-State: AOAM530RqSLoApt62zRVlq+S86zq5Tvj8kxAb6KAM+vhymtb7jUlHflK chSTrwC6+3vYT/ei7hj9k4mRRjgNeCwA+UrCzZY= X-Google-Smtp-Source: ABdhPJx7p+cAnIGgRUv06gpCck5/RjFP+T/3fbojGOYE5wc+W9J86e/px3sXIx5Z4Hon3LqA3fS0wNu8NsRLBeOGhow= X-Received: by 2002:a67:f882:0:b0:322:ef79:7713 with SMTP id h2-20020a67f882000000b00322ef797713mr8648834vso.70.1648437124386; Sun, 27 Mar 2022 20:12:04 -0700 (PDT) MIME-Version: 1.0 References: <20220326115923.715473aa@hermes.local> In-Reply-To: <20220326115923.715473aa@hermes.local> From: fwefew 4t4tg <7532yahoo@gmail.com> Date: Sun, 27 Mar 2022 23:11:53 -0400 Message-ID: Subject: Re: [dpdk-users] DPDK RX TCP checksum failed To: Stephen Hemminger Cc: "jiangheng (H)" , "users@dpdk.org" Content-Type: multipart/alternative; boundary="0000000000003bd31705db3eadd1" X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --0000000000003bd31705db3eadd1 Content-Type: text/plain; charset="UTF-8" https://github.com/rodgarrison/reinvent demonstrates ether/UDP chec-kum offload running on AWS which uses virtio. I don't think TCP offload is substantially different. Look here: https://github.com/rodgarrison/reinvent/blob/main/integration_tests/reinvent_dpdk_udp/reinvent_dpdk_udp_integration_test.cpp#L345 for where the mbuf needs to be setup. But I kind of agree with Stephan, although I haven't tested it, avoiding more sets into mbuf which might involve cache misses it might be faster to do by hand since the data is already in cache. On Sat, Mar 26, 2022 at 2:59 PM Stephen Hemminger < stephen@networkplumber.org> wrote: > On Sat, 26 Mar 2022 08:13:21 +0000 > "jiangheng (H)" wrote: > > > Hi all, > > > > I tried using the checksum offloads feature in DPDK and it did not see > working under virtual machine. > > > > Port only support TCP checksum and do not support IP checksum: > > rx_offload_capa = DEV_RX_OFFLOAD_TCP_CKSUM > > tx_offload_capa = DEV_TX_OFFLOAD_TCP_CKSUM > > > > so I config rxmode.offload txmode.offloads as below: > > rxmode.offloads = DEV_RX_OFFLOAD_TCP_CKSUM > > txmode.offloads = DEV_TX_OFFLOAD_TCP_CKSUM > > > > For TX, I set the following parameters, it works good. > > mbuf->l2_len = sizeof(*ethhdr) > > mbuf->l3_len = ip header len > > mbuf-ol_flags = RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM > > > Virtio does not support IP checksum offload. Because Virtio passes > packets to Linux kernel, and Linux kernel does not do IP checksum offload. > The IP checksum is so trivial it is faster for most things to just > do it in software; the header is only 20 bytes and it will be in cache. > > You should always check device capability before enabling an offload. > > > > For RX, It will execute the following code: > > In drivers/net/virtio/virtio_rxtx.c virtio_rx_offload function : > > if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM) { > > hdrlen = hdr_lens.l2_len + hdr_lens.l3_len + hdr_lens.l4_len; > > if (hdr->csum_start <= hdrlen && l4_supported) { > > m->ol_flags |= RTE_MBUF_F_RX_L4_CKSUM_NONE; > > } else { > > > > m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP RX > checksum failed. > > How do I avoid the above code going into this branch? > > > > If you want TCP checksum offload you have to set > RTE_ETH_RX_OFFLOAD_TCP_CKSUM > in the rxmode when port is configured. This will tell virtio to ask the > host to do rx offload. Again, virtio does not do IP checksum offload and > you should always query device capability first. > > --0000000000003bd31705db3eadd1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
https:= //github.com/rodgarrison/reinvent
demonstrates ether/UDP chec-kum=C2= =A0offload running on AWS which uses virtio. I don't think TCP offload<= div>is substantially different. Look here:

https://github.com/rodgarrison/re= invent/blob/main/integration_tests/reinvent_dpdk_udp/reinvent_dpdk_udp_inte= gration_test.cpp#L345

for where the mbuf needs to be setup.
<= br>But I kind of agree with Stephan, although I haven't tested it, avoi= ding more sets into mbuf which might involve cache misses it might be faste= r to do by hand since the=C2=A0data is already in cache.

On Sat, Mar 2= 6, 2022 at 2:59 PM Stephen Hemminger <stephen@networkplumber.org> wrote:
On Sat, 26 Mar 2022 08:13:21 +0000 "jiangheng (H)" <jiangheng12@huawei.com> wrote:

> Hi all,
>
> I tried using the checksum offloads feature in DPDK and it did not see= working under virtual machine.
>
> Port only support TCP checksum and do not support IP checksum:
> rx_offload_capa =3D DEV_RX_OFFLOAD_TCP_CKSUM
> tx_offload_capa =3D DEV_TX_OFFLOAD_TCP_CKSUM
>
> so I config rxmode.offload txmode.offloads as below:
> rxmode.offloads =3D DEV_RX_OFFLOAD_TCP_CKSUM
> txmode.offloads =3D DEV_TX_OFFLOAD_TCP_CKSUM
>
> For TX, I set the following parameters, it works good.
> mbuf->l2_len =3D sizeof(*ethhdr)
> mbuf->l3_len =3D ip header len
> mbuf-ol_flags =3D RTE_MBUF_F_TX_IPV4 | RTE_MBUF_F_TX_TCP_CKSUM


Virtio does not support IP checksum offload.=C2=A0 Because Virtio passes packets to Linux kernel, and Linux kernel does not do IP checksum offload.<= br> The IP checksum is so trivial it is faster for most things to just
do it in software; the header is only 20 bytes and it will be in cache.

You should always check device capability before enabling an offload.


> For RX, It will execute the following code:
> In drivers/net/virtio/virtio_rxtx.c=C2=A0 virtio_rx_offload function :=
>=C2=A0 =C2=A0 =C2=A0if (hdr->flags & VIRTIO_NET_HDR_F_NEEDS_CSUM= ) {
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0hdrlen =3D hdr_lens.l2_len + hdr_lens= .l3_len + hdr_lens.l4_len;
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (hdr->csum_start <=3D hdrlen= && l4_supported) {
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0m->ol_flags |=3D RTE= _MBUF_F_RX_L4_CKSUM_NONE;
>=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0} else {
>
> m->ol_flags set to RTE_MBUF_F_RX_L4_CKSUM_NONE, causing the TCP RX = checksum failed.
> How do I avoid the above code going into this branch?
>

If you want TCP checksum offload you have to set RTE_ETH_RX_OFFLOAD_TCP_CKS= UM
in the rxmode when port is configured.=C2=A0 This will tell virtio to ask t= he
host to do rx offload. Again, virtio does not do IP checksum offload and you should always query device capability first.

--0000000000003bd31705db3eadd1-- From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 88643A050B for ; Thu, 7 Apr 2022 14:50:14 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 1C5F840E09; Thu, 7 Apr 2022 14:50:14 +0200 (CEST) Received: from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188]) by mails.dpdk.org (Postfix) with ESMTP id 1CD7D4068B for ; Thu, 7 Apr 2022 14:50:12 +0200 (CEST) Received: from kwepemi100007.china.huawei.com (unknown [172.30.72.54]) by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4KZ1QG3zKyzgYCr; Thu, 7 Apr 2022 20:48:22 +0800 (CST) Received: from dggpemm500020.china.huawei.com (7.185.36.49) by kwepemi100007.china.huawei.com (7.221.188.115) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 20:50:07 +0800 Received: from dggpemm500020.china.huawei.com ([7.185.36.49]) by dggpemm500020.china.huawei.com ([7.185.36.49]) with mapi id 15.01.2308.021; Thu, 7 Apr 2022 20:50:07 +0800 From: "jiangheng (H)" To: Harold Huang CC: Stephen Hemminger , "users@dpdk.org" Subject: =?utf-8?B?562U5aSNOiBbZHBkay11c2Vyc10gRFBESyBSWCBUQ1AgY2hlY2tzdW0gZmFp?= =?utf-8?Q?led?= Thread-Topic: [dpdk-users] DPDK RX TCP checksum failed Thread-Index: AdhA6QKUGskwiuTFTOWojyhhlQQdHQAF4p+AAFDPHnD//4WrAP/vFbpg Date: Thu, 7 Apr 2022 12:50:07 +0000 Message-ID: References: <20220326115923.715473aa@hermes.local> <2ca34799291042f9b2ce8e1adc0fde0a@huawei.com> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.136.117.195] Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org PiA+ID4gT24gU2F0LCAyNiBNYXIgMjAyMiAwODoxMzoyMSArMDAwMA0KPiA+ID4gImppYW5naGVu ZyAoSCkiIDxqaWFuZ2hlbmcxMkBodWF3ZWkuY29tPiB3cm90ZToNCj4gPiA+DQo+ID4gPiA+IEhp IGFsbCwNCj4gPiA+ID4NCj4gPiA+ID4gSSB0cmllZCB1c2luZyB0aGUgY2hlY2tzdW0gb2ZmbG9h ZHMgZmVhdHVyZSBpbiBEUERLIGFuZCBpdCBkaWQgbm90DQo+ID4gPiA+IHNlZQ0KPiA+ID4gd29y a2luZyB1bmRlciB2aXJ0dWFsIG1hY2hpbmUuDQo+ID4gPiA+DQo+ID4gPiA+IFBvcnQgb25seSBz dXBwb3J0IFRDUCBjaGVja3N1bSBhbmQgZG8gbm90IHN1cHBvcnQgSVAgY2hlY2tzdW06DQo+ID4g PiA+IHJ4X29mZmxvYWRfY2FwYSA9IERFVl9SWF9PRkZMT0FEX1RDUF9DS1NVTSB0eF9vZmZsb2Fk X2NhcGEgPQ0KPiA+ID4gPiBERVZfVFhfT0ZGTE9BRF9UQ1BfQ0tTVU0NCj4gPiA+ID4NCj4gPiA+ ID4gc28gSSBjb25maWcgcnhtb2RlLm9mZmxvYWQgdHhtb2RlLm9mZmxvYWRzIGFzIGJlbG93Og0K PiA+ID4gPiByeG1vZGUub2ZmbG9hZHMgPSBERVZfUlhfT0ZGTE9BRF9UQ1BfQ0tTVU0gdHhtb2Rl Lm9mZmxvYWRzID0NCj4gPiA+ID4gREVWX1RYX09GRkxPQURfVENQX0NLU1VNDQo+ID4gPiA+DQo+ ID4gPiA+IEZvciBUWCwgSSBzZXQgdGhlIGZvbGxvd2luZyBwYXJhbWV0ZXJzLCBpdCB3b3JrcyBn b29kLg0KPiA+ID4gPiBtYnVmLT5sMl9sZW4gPSBzaXplb2YoKmV0aGhkcikNCj4gPiA+ID4gbWJ1 Zi0+bDNfbGVuID0gaXAgaGVhZGVyIGxlbg0KPiA+ID4gPiBtYnVmLW9sX2ZsYWdzID0gUlRFX01C VUZfRl9UWF9JUFY0IHwgUlRFX01CVUZfRl9UWF9UQ1BfQ0tTVU0NCj4gPiA+DQo+ID4gPg0KPiA+ ID4gVmlydGlvIGRvZXMgbm90IHN1cHBvcnQgSVAgY2hlY2tzdW0gb2ZmbG9hZC4gIEJlY2F1c2Ug VmlydGlvIHBhc3Nlcw0KPiA+ID4gcGFja2V0cyB0byBMaW51eCBrZXJuZWwsIGFuZCBMaW51eCBr ZXJuZWwgZG9lcyBub3QgZG8gSVAgY2hlY2tzdW0gb2ZmbG9hZC4NCj4gPiA+IFRoZSBJUCBjaGVj a3N1bSBpcyBzbyB0cml2aWFsIGl0IGlzIGZhc3RlciBmb3IgbW9zdCB0aGluZ3MgdG8ganVzdA0K PiA+ID4gZG8gaXQgaW4gc29mdHdhcmU7IHRoZSBoZWFkZXIgaXMgb25seSAyMCBieXRlcyBhbmQg aXQgd2lsbCBiZSBpbiBjYWNoZS4NCj4gPiA+DQo+ID4gPiBZb3Ugc2hvdWxkIGFsd2F5cyBjaGVj ayBkZXZpY2UgY2FwYWJpbGl0eSBiZWZvcmUgZW5hYmxpbmcgYW4gb2ZmbG9hZC4NCj4gPiA+DQo+ ID4gPg0KPiA+ID4gPiBGb3IgUlgsIEl0IHdpbGwgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvZGU6 DQo+ID4gPiA+IEluIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fcnh0eC5jICB2aXJ0aW9fcnhf b2ZmbG9hZCBmdW5jdGlvbiA6DQo+ID4gPiA+ICAgICBpZiAoaGRyLT5mbGFncyAmIFZJUlRJT19O RVRfSERSX0ZfTkVFRFNfQ1NVTSkgew0KPiA+ID4gPiAgICAgICAgIGhkcmxlbiA9IGhkcl9sZW5z LmwyX2xlbiArIGhkcl9sZW5zLmwzX2xlbiArIGhkcl9sZW5zLmw0X2xlbjsNCj4gPiA+ID4gICAg ICAgICBpZiAoaGRyLT5jc3VtX3N0YXJ0IDw9IGhkcmxlbiAmJiBsNF9zdXBwb3J0ZWQpIHsNCj4g PiA+ID4gICAgICAgICAgICAgbS0+b2xfZmxhZ3MgfD0gUlRFX01CVUZfRl9SWF9MNF9DS1NVTV9O T05FOw0KPiA+ID4gPiAgICAgICAgIH0gZWxzZSB7DQo+ID4gPiA+DQo+ID4gPiA+IG0tPm9sX2Zs YWdzIHNldCB0byBSVEVfTUJVRl9GX1JYX0w0X0NLU1VNX05PTkUsIGNhdXNpbmcgdGhlIFRDUA0K PiA+ID4gUlggY2hlY2tzdW0gZmFpbGVkLg0KPiA+ID4gPiBIb3cgZG8gSSBhdm9pZCB0aGUgYWJv dmUgY29kZSBnb2luZyBpbnRvIHRoaXMgYnJhbmNoPw0KPiA+ID4gPg0KPiA+ID4NCj4gPiA+IElm IHlvdSB3YW50IFRDUCBjaGVja3N1bSBvZmZsb2FkIHlvdSBoYXZlIHRvIHNldA0KPiA+ID4gUlRF X0VUSF9SWF9PRkZMT0FEX1RDUF9DS1NVTSBpbiB0aGUgcnhtb2RlIHdoZW4gcG9ydCBpcyBjb25m aWd1cmVkLg0KPiA+ID4gVGhpcyB3aWxsIHRlbGwgdmlydGlvIHRvIGFzayB0aGUgaG9zdCB0byBk byByeCBvZmZsb2FkLiBBZ2FpbiwNCj4gPiA+IHZpcnRpbyBkb2VzIG5vdCBkbyBJUCBjaGVja3N1 bSBvZmZsb2FkIGFuZCB5b3Ugc2hvdWxkIGFsd2F5cyBxdWVyeQ0KPiA+ID4gZGV2aWNlIGNhcGFi aWxpdHkgZmlyc3QuDQo+ID4NCj4gPiBJIGhhdmUgcXVlcmllZCBkZXZpY2UgY2FwYWJpbGl0eSBh bmQgaXQgdGVsbCBtZSBpdCBzdXBwb3J0cyB0Y3AgY2hlY2tzdW0sIG5vdA0KPiBzdXBwb3J0cyBp cCBjaGVja3N1bS4NCj4gPiBTbyBJIGhhdmUgc2V0DQo+IFJURV9FVEhfUlhfT0ZGTE9BRF9UQ1Bf Q0tTVU0oREVWX1JYX09GRkxPQURfVENQX0NLU1VNKQ0KPiA+IGZsYWcgd2hlbiBwb3J0IGlzIGNv bmZpZ3VyZWQodXNlIHJ0ZV9ldGhfZGV2X2NvbmZpZ3VyZSBmdW5jdGlvbikgQnV0IFJYDQo+IGNo ZWNrc3VtIHN0aWxsIGZhaWxlZCBpbiBiZWxvdyBicmFuY2g6DQo+ID4gZHJpdmVycy9uZXQvdmly dGlvL3ZpcnRpb19yeHR4LmMgIHZpcnRpb19yeF9vZmZsb2FkIGZ1bmN0aW9uOg0KPiA+IGlmICho ZHItPmZsYWdzICYgVklSVElPX05FVF9IRFJfRl9ORUVEU19DU1VNKSB7DQo+ID4gICAgICAgICBo ZHJsZW4gPSBoZHJfbGVucy5sMl9sZW4gKyBoZHJfbGVucy5sM19sZW4gKyBoZHJfbGVucy5sNF9s ZW47DQo+ID4gICAgICAgICBpZiAoaGRyLT5jc3VtX3N0YXJ0IDw9IGhkcmxlbiAmJiBsNF9zdXBw b3J0ZWQpIHsNCj4gPiAgICAgICAgICAgICAgICAgaWYgKGhkci0+Y3N1bV9zdGFydCA8PSBoZHJs ZW4gJiYgbDRfc3VwcG9ydGVkKSB7DQo+ID4gICAgICAgICAgICAgICAgICAgICAgICAgbS0+b2xf ZmxhZ3MgfD0NCj4gUlRFX01CVUZfRl9SWF9MNF9DS1NVTV9OT05FOw0KPiA+ICAgICAgICAgICAg ICAgICB9IGVsc2Ugew0KPiA+IEhkci0+Y3N1bV9zdGFydCA8PSBoZHJsZW4sIG0tPm9sX2ZsYWdz IHdpbGwgc2V0IHRvDQo+IFJURV9NQlVGX0ZfUlhfTDRfQ0tTVU1fTk9ORSwgY2F1c2luZyBSWCBj aGVja3N1bSBmYWlsZWQuDQo+IA0KPiBDb3VsZCB5b3Ugc2hvdyB0aGUgaGRyLT5jc3VtX3N0YXJ0 IGFuZCBoZHJsZW4gdmFsdWUgaW4geW91ciB0ZXN0IGNhc2U/DQo+IElJUkMsIGhkci0+Y3N1bV9z dGFydCBzaG91bGQgYmUgaGRyX2xlbnMubDJfbGVuICsgaGRyX2xlbnMubDNfbGVuIGFjY29yZGlu ZyB0bw0KPiB2aXJ0aW8gc2VwYy4gVGhlIHZpcnRpbyBzcGVjIGhhcyBhbiBleGFtcGxlIGFzIGZv bGxvd3M6DQo+IA0KPiBgYGANCj4gRm9yIGV4YW1wbGUsIGNvbnNpZGVyIGEgcGFydGlhbGx5IGNo ZWNrc3VtbWVkIFRDUCAoSVB2NCkgcGFja2V0LiBJdCB3aWxsIGhhdmUgYQ0KPiAxNCBieXRlIGV0 aGVyLSBuZXQgaGVhZGVyIGFuZCAyMCBieXRlIElQIGhlYWRlciBmb2xsb3dlZCBieSB0aGUgVENQ IGhlYWRlcg0KPiAod2l0aCB0aGUgVENQIGNoZWNrc3VtIGZpZWxkIDE2IGJ5dGVzIGludG8gdGhh dCBoZWFkZXIpLiBjc3VtX3N0YXJ0IHdpbGwgYmUgMTQrMjANCj4gPSAzNCAodGhlIFRDUCBjaGVj a3N1bSBpbmNsdWRlcyB0aGUgaGVhZGVyKSwgYW5kIGNzdW1fb2Zmc2V0IHdpbGwgYmUgMTYuDQo+ IGBgYA0KPiANCj4gLS0NCj4gVGhhbmtzLCBIYXJvbGQuDQoNClllcywgaGRyLT5jc3VtX3N0YXJ0 IGlzIDM0LCBoZHJsZW4gaXMgNTQsIHNvIG0tPmZsYWdzIGlzIFJURV9NQlVGX0ZfUlhfTDRfQ0tT VU1fTk9ORS4gVGhpcyBjYXVzZSByeCBjaGVja3N1bSBmYWlsZWQuIEJ1dCB0aGlzIGxpbmUgc2Vl bXMgdG8gYmUgY29ycmVjdC4NCkkgc3VzcGVjdCB0aGF0IGhkci0+ZmxhZ3MgJiBWSVJUSU9fTkVU X0hEUl9GX05FRURTX0NTVU0gc2hvdWxkIG5vdCBiZSAxLCBidXQgSSBkb27igJl0IGtub3cgd2hl cmUgdGhpcyBmbGFnIGlzIHNldC4NCg0KDQoNCg0KDQoNCg0KDQoNCg0KDQoNCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 44D50A0032 for ; Thu, 7 Apr 2022 15:42:12 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id D23224068B; Thu, 7 Apr 2022 15:42:11 +0200 (CEST) Received: from szxga08-in.huawei.com (szxga08-in.huawei.com [45.249.212.255]) by mails.dpdk.org (Postfix) with ESMTP id 877BF40689 for ; Thu, 7 Apr 2022 15:42:09 +0200 (CEST) Received: from kwepemi100005.china.huawei.com (unknown [172.30.72.54]) by szxga08-in.huawei.com (SkyGuard) with ESMTP id 4KZ2bj5Xhgz1HBc1; Thu, 7 Apr 2022 21:41:37 +0800 (CST) Received: from dggpemm500020.china.huawei.com (7.185.36.49) by kwepemi100005.china.huawei.com (7.221.188.155) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.24; Thu, 7 Apr 2022 21:42:05 +0800 Received: from dggpemm500020.china.huawei.com ([7.185.36.49]) by dggpemm500020.china.huawei.com ([7.185.36.49]) with mapi id 15.01.2308.021; Thu, 7 Apr 2022 21:42:05 +0800 From: "jiangheng (H)" To: fwefew 4t4tg <7532yahoo@gmail.com> CC: "users@dpdk.org" , Stephen Hemminger Subject: =?utf-8?B?562U5aSNOiBbZHBkay11c2Vyc10gRFBESyBSWCBUQ1AgY2hlY2tzdW0gZmFp?= =?utf-8?Q?led?= Thread-Topic: [dpdk-users] DPDK RX TCP checksum failed Thread-Index: AdhA6QKUGskwiuTFTOWojyhhlQQdHQAF4p+AAEN95YACHZVgwA== Date: Thu, 7 Apr 2022 13:42:04 +0000 Message-ID: References: <20220326115923.715473aa@hermes.local> In-Reply-To: Accept-Language: zh-CN, en-US Content-Language: zh-CN X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [10.136.117.195] Content-Type: multipart/alternative; boundary="_000_f0675dd42a434ea8abfbe046f3154dcchuaweicom_" MIME-Version: 1.0 X-CFilter-Loop: Reflected X-BeenThere: users@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK usage discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: users-bounces@dpdk.org --_000_f0675dd42a434ea8abfbe046f3154dcchuaweicom_ Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 aHR0cHM6Ly9naXRodWIuY29tL3JvZGdhcnJpc29uL3JlaW52ZW50L2Jsb2IvbWFpbi9pbnRlZ3Jh dGlvbl90ZXN0cy9yZWludmVudF9kcGRrX3VkcC9yZWludmVudF9kcGRrX3VkcF9pbnRlZ3JhdGlv bl90ZXN0LmNwcCNMMzQ1DQp0aGlzIGlzIGZvciB0eCBjaGVja3N1bSwgVHggY2hlY2tzdW0gd29y a3MgZ29vZCwgUnggY2hlY2tzdW0gZmFpbGVkLg0KDQrlj5Hku7bkuro6IGZ3ZWZldyA0dDR0ZyBb bWFpbHRvOjc1MzJ5YWhvb0BnbWFpbC5jb21dDQrlj5HpgIHml7bpl7Q6IDIwMjLlubQz5pyIMjjm l6UgMTE6MTINCuaUtuS7tuS6ujogU3RlcGhlbiBIZW1taW5nZXIgPHN0ZXBoZW5AbmV0d29ya3Bs dW1iZXIub3JnPg0K5oqE6YCBOiBqaWFuZ2hlbmcgKEgpIDxqaWFuZ2hlbmcxMkBodWF3ZWkuY29t PjsgdXNlcnNAZHBkay5vcmcNCuS4u+mimDogUmU6IFtkcGRrLXVzZXJzXSBEUERLIFJYIFRDUCBj aGVja3N1bSBmYWlsZWQNCg0KaHR0cHM6Ly9naXRodWIuY29tL3JvZGdhcnJpc29uL3JlaW52ZW50 DQpkZW1vbnN0cmF0ZXMgZXRoZXIvVURQIGNoZWMta3VtIG9mZmxvYWQgcnVubmluZyBvbiBBV1Mg d2hpY2ggdXNlcyB2aXJ0aW8uIEkgZG9uJ3QgdGhpbmsgVENQIG9mZmxvYWQNCmlzIHN1YnN0YW50 aWFsbHkgZGlmZmVyZW50LiBMb29rIGhlcmU6DQoNCmh0dHBzOi8vZ2l0aHViLmNvbS9yb2RnYXJy aXNvbi9yZWludmVudC9ibG9iL21haW4vaW50ZWdyYXRpb25fdGVzdHMvcmVpbnZlbnRfZHBka191 ZHAvcmVpbnZlbnRfZHBka191ZHBfaW50ZWdyYXRpb25fdGVzdC5jcHAjTDM0NQ0KDQpmb3Igd2hl cmUgdGhlIG1idWYgbmVlZHMgdG8gYmUgc2V0dXAuDQoNCkJ1dCBJIGtpbmQgb2YgYWdyZWUgd2l0 aCBTdGVwaGFuLCBhbHRob3VnaCBJIGhhdmVuJ3QgdGVzdGVkIGl0LCBhdm9pZGluZyBtb3JlIHNl dHMgaW50byBtYnVmIHdoaWNoIG1pZ2h0IGludm9sdmUgY2FjaGUgbWlzc2VzIGl0IG1pZ2h0IGJl IGZhc3RlciB0byBkbyBieSBoYW5kIHNpbmNlIHRoZSBkYXRhIGlzIGFscmVhZHkgaW4gY2FjaGUu DQoNCk9uIFNhdCwgTWFyIDI2LCAyMDIyIGF0IDI6NTkgUE0gU3RlcGhlbiBIZW1taW5nZXIgPHN0 ZXBoZW5AbmV0d29ya3BsdW1iZXIub3JnPG1haWx0bzpzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9y Zz4+IHdyb3RlOg0KT24gU2F0LCAyNiBNYXIgMjAyMiAwODoxMzoyMSArMDAwMA0KImppYW5naGVu ZyAoSCkiIDxqaWFuZ2hlbmcxMkBodWF3ZWkuY29tPG1haWx0bzpqaWFuZ2hlbmcxMkBodWF3ZWku Y29tPj4gd3JvdGU6DQoNCj4gSGkgYWxsLA0KPg0KPiBJIHRyaWVkIHVzaW5nIHRoZSBjaGVja3N1 bSBvZmZsb2FkcyBmZWF0dXJlIGluIERQREsgYW5kIGl0IGRpZCBub3Qgc2VlIHdvcmtpbmcgdW5k ZXIgdmlydHVhbCBtYWNoaW5lLg0KPg0KPiBQb3J0IG9ubHkgc3VwcG9ydCBUQ1AgY2hlY2tzdW0g YW5kIGRvIG5vdCBzdXBwb3J0IElQIGNoZWNrc3VtOg0KPiByeF9vZmZsb2FkX2NhcGEgPSBERVZf UlhfT0ZGTE9BRF9UQ1BfQ0tTVU0NCj4gdHhfb2ZmbG9hZF9jYXBhID0gREVWX1RYX09GRkxPQURf VENQX0NLU1VNDQo+DQo+IHNvIEkgY29uZmlnIHJ4bW9kZS5vZmZsb2FkIHR4bW9kZS5vZmZsb2Fk cyBhcyBiZWxvdzoNCj4gcnhtb2RlLm9mZmxvYWRzID0gREVWX1JYX09GRkxPQURfVENQX0NLU1VN DQo+IHR4bW9kZS5vZmZsb2FkcyA9IERFVl9UWF9PRkZMT0FEX1RDUF9DS1NVTQ0KPg0KPiBGb3Ig VFgsIEkgc2V0IHRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycywgaXQgd29ya3MgZ29vZC4NCj4gbWJ1 Zi0+bDJfbGVuID0gc2l6ZW9mKCpldGhoZHIpDQo+IG1idWYtPmwzX2xlbiA9IGlwIGhlYWRlciBs ZW4NCj4gbWJ1Zi1vbF9mbGFncyA9IFJURV9NQlVGX0ZfVFhfSVBWNCB8IFJURV9NQlVGX0ZfVFhf VENQX0NLU1VNDQoNCg0KVmlydGlvIGRvZXMgbm90IHN1cHBvcnQgSVAgY2hlY2tzdW0gb2ZmbG9h ZC4gIEJlY2F1c2UgVmlydGlvIHBhc3Nlcw0KcGFja2V0cyB0byBMaW51eCBrZXJuZWwsIGFuZCBM aW51eCBrZXJuZWwgZG9lcyBub3QgZG8gSVAgY2hlY2tzdW0gb2ZmbG9hZC4NClRoZSBJUCBjaGVj a3N1bSBpcyBzbyB0cml2aWFsIGl0IGlzIGZhc3RlciBmb3IgbW9zdCB0aGluZ3MgdG8ganVzdA0K ZG8gaXQgaW4gc29mdHdhcmU7IHRoZSBoZWFkZXIgaXMgb25seSAyMCBieXRlcyBhbmQgaXQgd2ls bCBiZSBpbiBjYWNoZS4NCg0KWW91IHNob3VsZCBhbHdheXMgY2hlY2sgZGV2aWNlIGNhcGFiaWxp dHkgYmVmb3JlIGVuYWJsaW5nIGFuIG9mZmxvYWQuDQoNCg0KPiBGb3IgUlgsIEl0IHdpbGwgZXhl Y3V0ZSB0aGUgZm9sbG93aW5nIGNvZGU6DQo+IEluIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9f cnh0eC5jICB2aXJ0aW9fcnhfb2ZmbG9hZCBmdW5jdGlvbiA6DQo+ICAgICBpZiAoaGRyLT5mbGFn cyAmIFZJUlRJT19ORVRfSERSX0ZfTkVFRFNfQ1NVTSkgew0KPiAgICAgICAgIGhkcmxlbiA9IGhk cl9sZW5zLmwyX2xlbiArIGhkcl9sZW5zLmwzX2xlbiArIGhkcl9sZW5zLmw0X2xlbjsNCj4gICAg ICAgICBpZiAoaGRyLT5jc3VtX3N0YXJ0IDw9IGhkcmxlbiAmJiBsNF9zdXBwb3J0ZWQpIHsNCj4g ICAgICAgICAgICAgbS0+b2xfZmxhZ3MgfD0gUlRFX01CVUZfRl9SWF9MNF9DS1NVTV9OT05FOw0K PiAgICAgICAgIH0gZWxzZSB7DQo+DQo+IG0tPm9sX2ZsYWdzIHNldCB0byBSVEVfTUJVRl9GX1JY X0w0X0NLU1VNX05PTkUsIGNhdXNpbmcgdGhlIFRDUCBSWCBjaGVja3N1bSBmYWlsZWQuDQo+IEhv dyBkbyBJIGF2b2lkIHRoZSBhYm92ZSBjb2RlIGdvaW5nIGludG8gdGhpcyBicmFuY2g/DQo+DQoN CklmIHlvdSB3YW50IFRDUCBjaGVja3N1bSBvZmZsb2FkIHlvdSBoYXZlIHRvIHNldCBSVEVfRVRI X1JYX09GRkxPQURfVENQX0NLU1VNDQppbiB0aGUgcnhtb2RlIHdoZW4gcG9ydCBpcyBjb25maWd1 cmVkLiAgVGhpcyB3aWxsIHRlbGwgdmlydGlvIHRvIGFzayB0aGUNCmhvc3QgdG8gZG8gcnggb2Zm bG9hZC4gQWdhaW4sIHZpcnRpbyBkb2VzIG5vdCBkbyBJUCBjaGVja3N1bSBvZmZsb2FkIGFuZA0K eW91IHNob3VsZCBhbHdheXMgcXVlcnkgZGV2aWNlIGNhcGFiaWxpdHkgZmlyc3QuDQo= --_000_f0675dd42a434ea8abfbe046f3154dcchuaweicom_ Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: base64 PGh0bWwgeG1sbnM6dj0idXJuOnNjaGVtYXMtbWljcm9zb2Z0LWNvbTp2bWwiIHhtbG5zOm89InVy bjpzY2hlbWFzLW1pY3Jvc29mdC1jb206b2ZmaWNlOm9mZmljZSIgeG1sbnM6dz0idXJuOnNjaGVt YXMtbWljcm9zb2Z0LWNvbTpvZmZpY2U6d29yZCIgeG1sbnM6bT0iaHR0cDovL3NjaGVtYXMubWlj cm9zb2Z0LmNvbS9vZmZpY2UvMjAwNC8xMi9vbW1sIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv VFIvUkVDLWh0bWw0MCI+DQo8aGVhZD4NCjxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIg Y29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4NCjxtZXRhIG5hbWU9IkdlbmVyYXRv ciIgY29udGVudD0iTWljcm9zb2Z0IFdvcmQgMTUgKGZpbHRlcmVkIG1lZGl1bSkiPg0KPHN0eWxl PjwhLS0NCi8qIEZvbnQgRGVmaW5pdGlvbnMgKi8NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6 5a6L5L2TOw0KCXBhbm9zZS0xOjIgMSA2IDAgMyAxIDEgMSAxIDE7fQ0KQGZvbnQtZmFjZQ0KCXtm b250LWZhbWlseToiQ2FtYnJpYSBNYXRoIjsNCglwYW5vc2UtMToyIDQgNSAzIDUgNCA2IDMgMiA0 O30NCkBmb250LWZhY2UNCgl7Zm9udC1mYW1pbHk6Q2FsaWJyaTsNCglwYW5vc2UtMToyIDE1IDUg MiAyIDIgNCAzIDIgNDt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5OiJcQOWui+S9kyI7DQoJ cGFub3NlLTE6MiAxIDYgMCAzIDEgMSAxIDEgMTt9DQpAZm9udC1mYWNlDQoJe2ZvbnQtZmFtaWx5 OuW+rui9r+mbhem7kTsNCglwYW5vc2UtMToyIDExIDUgMyAyIDIgNCAyIDIgNDt9DQpAZm9udC1m YWNlDQoJe2ZvbnQtZmFtaWx5OiJcQOW+rui9r+mbhem7kSI7DQoJcGFub3NlLTE6MiAxMSA1IDMg MiAyIDQgMiAyIDQ7fQ0KLyogU3R5bGUgRGVmaW5pdGlvbnMgKi8NCnAuTXNvTm9ybWFsLCBsaS5N c29Ob3JtYWwsIGRpdi5Nc29Ob3JtYWwNCgl7bWFyZ2luOjBjbTsNCgltYXJnaW4tYm90dG9tOi4w MDAxcHQ7DQoJZm9udC1zaXplOjEyLjBwdDsNCglmb250LWZhbWlseTrlrovkvZM7fQ0KYTpsaW5r LCBzcGFuLk1zb0h5cGVybGluaw0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6Ymx1 ZTsNCgl0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lO30NCmE6dmlzaXRlZCwgc3Bhbi5Nc29IeXBl cmxpbmtGb2xsb3dlZA0KCXttc28tc3R5bGUtcHJpb3JpdHk6OTk7DQoJY29sb3I6cHVycGxlOw0K CXRleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmU7fQ0Kc3Bhbi5FbWFpbFN0eWxlMTcNCgl7bXNvLXN0 eWxlLXR5cGU6cGVyc29uYWwtcmVwbHk7DQoJZm9udC1mYW1pbHk6IkNhbGlicmkiLHNhbnMtc2Vy aWY7DQoJY29sb3I6IzFGNDk3RDt9DQouTXNvQ2hwRGVmYXVsdA0KCXttc28tc3R5bGUtdHlwZTpl eHBvcnQtb25seTsNCglmb250LWZhbWlseToiQ2FsaWJyaSIsc2Fucy1zZXJpZjt9DQpAcGFnZSBX b3JkU2VjdGlvbjENCgl7c2l6ZTo2MTIuMHB0IDc5Mi4wcHQ7DQoJbWFyZ2luOjcyLjBwdCA5MC4w cHQgNzIuMHB0IDkwLjBwdDt9DQpkaXYuV29yZFNlY3Rpb24xDQoJe3BhZ2U6V29yZFNlY3Rpb24x O30NCi0tPjwvc3R5bGU+PCEtLVtpZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWRlZmF1bHRz IHY6ZXh0PSJlZGl0IiBzcGlkbWF4PSIxMDI2IiAvPg0KPC94bWw+PCFbZW5kaWZdLS0+PCEtLVtp ZiBndGUgbXNvIDldPjx4bWw+DQo8bzpzaGFwZWxheW91dCB2OmV4dD0iZWRpdCI+DQo8bzppZG1h cCB2OmV4dD0iZWRpdCIgZGF0YT0iMSIgLz4NCjwvbzpzaGFwZWxheW91dD48L3htbD48IVtlbmRp Zl0tLT4NCjwvaGVhZD4NCjxib2R5IGxhbmc9IlpILUNOIiBsaW5rPSJibHVlIiB2bGluaz0icHVy cGxlIj4NCjxkaXYgY2xhc3M9IldvcmRTZWN0aW9uMSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBsYW5nPSJFTi1VUyI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JvZGdhcnJpc29u L3JlaW52ZW50L2Jsb2IvbWFpbi9pbnRlZ3JhdGlvbl90ZXN0cy9yZWludmVudF9kcGRrX3VkcC9y ZWludmVudF9kcGRrX3VkcF9pbnRlZ3JhdGlvbl90ZXN0LmNwcCNMMzQ1Ij5odHRwczovL2dpdGh1 Yi5jb20vcm9kZ2Fycmlzb24vcmVpbnZlbnQvYmxvYi9tYWluL2ludGVncmF0aW9uX3Rlc3RzL3Jl aW52ZW50X2RwZGtfdWRwL3JlaW52ZW50X2RwZGtfdWRwX2ludGVncmF0aW9uX3Rlc3QuY3BwI0wz NDU8L2E+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g bGFuZz0iRU4tVVMiPnRoaXMgaXMgZm9yIHR4IGNoZWNrc3VtLCBUeCBjaGVja3N1bSB3b3JrcyBn b29kLCBSeCBjaGVja3N1bSBmYWlsZWQuPC9zcGFuPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0i Zm9udC1zaXplOjEwLjVwdDtmb250LWZhbWlseTomcXVvdDtDYWxpYnJpJnF1b3Q7LHNhbnMtc2Vy aWY7Y29sb3I6IzFGNDk3RCI+PG86cD48L286cD48L3NwYW4+PC9wPg0KPHAgY2xhc3M9Ik1zb05v cm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTAuNXB0O2ZvbnQtZmFt aWx5OiZxdW90O0NhbGlicmkmcXVvdDssc2Fucy1zZXJpZjtjb2xvcjojMUY0OTdEIj48bzpwPiZu YnNwOzwvbzpwPjwvc3Bhbj48L3A+DQo8ZGl2IHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVm dDpzb2xpZCBibHVlIDEuNXB0O3BhZGRpbmc6MGNtIDBjbSAwY20gNC4wcHQiPg0KPGRpdj4NCjxk aXYgc3R5bGU9ImJvcmRlcjpub25lO2JvcmRlci10b3A6c29saWQgI0UxRTFFMSAxLjBwdDtwYWRk aW5nOjMuMHB0IDBjbSAwY20gMGNtIj4NCjxwIGNsYXNzPSJNc29Ob3JtYWwiPjxiPjxzcGFuIHN0 eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90 OyxzYW5zLXNlcmlmIj7lj5Hku7bkuro8c3BhbiBsYW5nPSJFTi1VUyI+Ojwvc3Bhbj48L3NwYW4+ PC9iPjxzcGFuIGxhbmc9IkVOLVVTIiBzdHlsZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWls eTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDssc2Fucy1zZXJpZiI+IGZ3ZWZldyA0dDR0ZyBbbWFp bHRvOjc1MzJ5YWhvb0BnbWFpbC5jb21dDQo8YnI+DQo8L3NwYW4+PGI+PHNwYW4gc3R5bGU9ImZv bnQtc2l6ZToxMS4wcHQ7Zm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7LHNhbnMt c2VyaWYiPuWPkemAgeaXtumXtDxzcGFuIGxhbmc9IkVOLVVTIj46PC9zcGFuPjwvc3Bhbj48L2I+ PHNwYW4gbGFuZz0iRU4tVVMiIHN0eWxlPSJmb250LXNpemU6MTEuMHB0O2ZvbnQtZmFtaWx5OiZx dW90O+W+rui9r+mbhem7kSZxdW90OyxzYW5zLXNlcmlmIj4gMjAyMjwvc3Bhbj48c3BhbiBzdHls ZT0iZm9udC1zaXplOjExLjBwdDtmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDss c2Fucy1zZXJpZiI+5bm0PHNwYW4gbGFuZz0iRU4tVVMiPjM8L3NwYW4+5pyIPHNwYW4gbGFuZz0i RU4tVVMiPjI4PC9zcGFuPuaXpTxzcGFuIGxhbmc9IkVOLVVTIj4NCiAxMToxMjxicj4NCjwvc3Bh bj48Yj7mlLbku7bkuro8c3BhbiBsYW5nPSJFTi1VUyI+Ojwvc3Bhbj48L2I+PHNwYW4gbGFuZz0i RU4tVVMiPiBTdGVwaGVuIEhlbW1pbmdlciAmbHQ7c3RlcGhlbkBuZXR3b3JrcGx1bWJlci5vcmcm Z3Q7PGJyPg0KPC9zcGFuPjxiPuaKhOmAgTxzcGFuIGxhbmc9IkVOLVVTIj46PC9zcGFuPjwvYj48 c3BhbiBsYW5nPSJFTi1VUyI+IGppYW5naGVuZyAoSCkgJmx0O2ppYW5naGVuZzEyQGh1YXdlaS5j b20mZ3Q7OyB1c2Vyc0BkcGRrLm9yZzxicj4NCjwvc3Bhbj48Yj7kuLvpopg8c3BhbiBsYW5nPSJF Ti1VUyI+Ojwvc3Bhbj48L2I+PHNwYW4gbGFuZz0iRU4tVVMiPiBSZTogW2RwZGstdXNlcnNdIERQ REsgUlggVENQIGNoZWNrc3VtIGZhaWxlZDxvOnA+PC9vOnA+PC9zcGFuPjwvc3Bhbj48L3A+DQo8 L2Rpdj4NCjwvZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxv OnA+Jm5ic3A7PC9vOnA+PC9zcGFuPjwvcD4NCjxkaXY+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIj48 c3BhbiBsYW5nPSJFTi1VUyI+PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JvZGdhcnJpc29u L3JlaW52ZW50Ij5odHRwczovL2dpdGh1Yi5jb20vcm9kZ2Fycmlzb24vcmVpbnZlbnQ8L2E+PGJy Pg0KZGVtb25zdHJhdGVzIGV0aGVyL1VEUCBjaGVjLWt1bSZuYnNwO29mZmxvYWQgcnVubmluZyBv biBBV1Mgd2hpY2ggdXNlcyB2aXJ0aW8uIEkgZG9uJ3QgdGhpbmsgVENQIG9mZmxvYWQ8bzpwPjwv bzpwPjwvc3Bhbj48L3A+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0i RU4tVVMiPmlzIHN1YnN0YW50aWFsbHkgZGlmZmVyZW50LiBMb29rIGhlcmU6PGJyPg0KPGJyPg0K PGEgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL3JvZGdhcnJpc29uL3JlaW52ZW50L2Jsb2IvbWFp bi9pbnRlZ3JhdGlvbl90ZXN0cy9yZWludmVudF9kcGRrX3VkcC9yZWludmVudF9kcGRrX3VkcF9p bnRlZ3JhdGlvbl90ZXN0LmNwcCNMMzQ1Ij5odHRwczovL2dpdGh1Yi5jb20vcm9kZ2Fycmlzb24v cmVpbnZlbnQvYmxvYi9tYWluL2ludGVncmF0aW9uX3Rlc3RzL3JlaW52ZW50X2RwZGtfdWRwL3Jl aW52ZW50X2RwZGtfdWRwX2ludGVncmF0aW9uX3Rlc3QuY3BwI0wzNDU8L2E+PGJyPg0KPGJyPg0K Zm9yIHdoZXJlIHRoZSBtYnVmIG5lZWRzIHRvIGJlIHNldHVwLjxicj4NCjxicj4NCkJ1dCBJIGtp bmQgb2YgYWdyZWUgd2l0aCBTdGVwaGFuLCBhbHRob3VnaCBJIGhhdmVuJ3QgdGVzdGVkIGl0LCBh dm9pZGluZyBtb3JlIHNldHMgaW50byBtYnVmIHdoaWNoIG1pZ2h0IGludm9sdmUgY2FjaGUgbWlz c2VzIGl0IG1pZ2h0IGJlIGZhc3RlciB0byBkbyBieSBoYW5kIHNpbmNlIHRoZSZuYnNwO2RhdGEg aXMgYWxyZWFkeSBpbiBjYWNoZS48bzpwPjwvbzpwPjwvc3Bhbj48L3A+DQo8L2Rpdj4NCjwvZGl2 Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4gbGFuZz0iRU4tVVMiPjxvOnA+Jm5ic3A7PC9v OnA+PC9zcGFuPjwvcD4NCjxkaXY+DQo8ZGl2Pg0KPHAgY2xhc3M9Ik1zb05vcm1hbCI+PHNwYW4g bGFuZz0iRU4tVVMiPk9uIFNhdCwgTWFyIDI2LCAyMDIyIGF0IDI6NTkgUE0gU3RlcGhlbiBIZW1t aW5nZXIgJmx0OzxhIGhyZWY9Im1haWx0bzpzdGVwaGVuQG5ldHdvcmtwbHVtYmVyLm9yZyI+c3Rl cGhlbkBuZXR3b3JrcGx1bWJlci5vcmc8L2E+Jmd0OyB3cm90ZTo8bzpwPjwvbzpwPjwvc3Bhbj48 L3A+DQo8L2Rpdj4NCjxibG9ja3F1b3RlIHN0eWxlPSJib3JkZXI6bm9uZTtib3JkZXItbGVmdDpz b2xpZCAjQ0NDQ0NDIDEuMHB0O3BhZGRpbmc6MGNtIDBjbSAwY20gNi4wcHQ7bWFyZ2luLWxlZnQ6 NC44cHQ7bWFyZ2luLXJpZ2h0OjBjbSI+DQo8cCBjbGFzcz0iTXNvTm9ybWFsIiBzdHlsZT0ibWFy Z2luLWJvdHRvbToxMi4wcHQiPjxzcGFuIGxhbmc9IkVOLVVTIj5PbiBTYXQsIDI2IE1hciAyMDIy IDA4OjEzOjIxICYjNDM7MDAwMDxicj4NCiZxdW90O2ppYW5naGVuZyAoSCkmcXVvdDsgJmx0Ozxh IGhyZWY9Im1haWx0bzpqaWFuZ2hlbmcxMkBodWF3ZWkuY29tIiB0YXJnZXQ9Il9ibGFuayI+amlh bmdoZW5nMTJAaHVhd2VpLmNvbTwvYT4mZ3Q7IHdyb3RlOjxicj4NCjxicj4NCiZndDsgSGkgYWxs LDxicj4NCiZndDsgPGJyPg0KJmd0OyBJIHRyaWVkIHVzaW5nIHRoZSBjaGVja3N1bSBvZmZsb2Fk cyBmZWF0dXJlIGluIERQREsgYW5kIGl0IGRpZCBub3Qgc2VlIHdvcmtpbmcgdW5kZXIgdmlydHVh bCBtYWNoaW5lLjxicj4NCiZndDsgPGJyPg0KJmd0OyBQb3J0IG9ubHkgc3VwcG9ydCBUQ1AgY2hl Y2tzdW0gYW5kIGRvIG5vdCBzdXBwb3J0IElQIGNoZWNrc3VtOjxicj4NCiZndDsgcnhfb2ZmbG9h ZF9jYXBhID0gREVWX1JYX09GRkxPQURfVENQX0NLU1VNPGJyPg0KJmd0OyB0eF9vZmZsb2FkX2Nh cGEgPSBERVZfVFhfT0ZGTE9BRF9UQ1BfQ0tTVU08YnI+DQomZ3Q7IDxicj4NCiZndDsgc28gSSBj b25maWcgcnhtb2RlLm9mZmxvYWQgdHhtb2RlLm9mZmxvYWRzIGFzIGJlbG93Ojxicj4NCiZndDsg cnhtb2RlLm9mZmxvYWRzID0gREVWX1JYX09GRkxPQURfVENQX0NLU1VNPGJyPg0KJmd0OyB0eG1v ZGUub2ZmbG9hZHMgPSBERVZfVFhfT0ZGTE9BRF9UQ1BfQ0tTVU08YnI+DQomZ3Q7IDxicj4NCiZn dDsgRm9yIFRYLCBJIHNldCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnMsIGl0IHdvcmtzIGdvb2Qu PGJyPg0KJmd0OyBtYnVmLSZndDtsMl9sZW4gPSBzaXplb2YoKmV0aGhkcik8YnI+DQomZ3Q7IG1i dWYtJmd0O2wzX2xlbiA9IGlwIGhlYWRlciBsZW48YnI+DQomZ3Q7IG1idWYtb2xfZmxhZ3MgPSBS VEVfTUJVRl9GX1RYX0lQVjQgfCBSVEVfTUJVRl9GX1RYX1RDUF9DS1NVTTxicj4NCjxicj4NCjxi cj4NClZpcnRpbyBkb2VzIG5vdCBzdXBwb3J0IElQIGNoZWNrc3VtIG9mZmxvYWQuJm5ic3A7IEJl Y2F1c2UgVmlydGlvIHBhc3Nlczxicj4NCnBhY2tldHMgdG8gTGludXgga2VybmVsLCBhbmQgTGlu dXgga2VybmVsIGRvZXMgbm90IGRvIElQIGNoZWNrc3VtIG9mZmxvYWQuPGJyPg0KVGhlIElQIGNo ZWNrc3VtIGlzIHNvIHRyaXZpYWwgaXQgaXMgZmFzdGVyIGZvciBtb3N0IHRoaW5ncyB0byBqdXN0 PGJyPg0KZG8gaXQgaW4gc29mdHdhcmU7IHRoZSBoZWFkZXIgaXMgb25seSAyMCBieXRlcyBhbmQg aXQgd2lsbCBiZSBpbiBjYWNoZS48YnI+DQo8YnI+DQpZb3Ugc2hvdWxkIGFsd2F5cyBjaGVjayBk ZXZpY2UgY2FwYWJpbGl0eSBiZWZvcmUgZW5hYmxpbmcgYW4gb2ZmbG9hZC48YnI+DQo8YnI+DQo8 YnI+DQomZ3Q7IEZvciBSWCwgSXQgd2lsbCBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29kZTo8YnI+ DQomZ3Q7IEluIGRyaXZlcnMvbmV0L3ZpcnRpby92aXJ0aW9fcnh0eC5jJm5ic3A7IHZpcnRpb19y eF9vZmZsb2FkIGZ1bmN0aW9uIDo8YnI+DQomZ3Q7Jm5ic3A7ICZuYnNwOyAmbmJzcDtpZiAoaGRy LSZndDtmbGFncyAmYW1wOyBWSVJUSU9fTkVUX0hEUl9GX05FRURTX0NTVU0pIHs8YnI+DQomZ3Q7 Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwO2hkcmxlbiA9IGhkcl9sZW5zLmwyX2xl biAmIzQzOyBoZHJfbGVucy5sM19sZW4gJiM0MzsgaGRyX2xlbnMubDRfbGVuOzxicj4NCiZndDsm bmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7aWYgKGhkci0mZ3Q7Y3N1bV9zdGFydCAm bHQ7PSBoZHJsZW4gJmFtcDsmYW1wOyBsNF9zdXBwb3J0ZWQpIHs8YnI+DQomZ3Q7Jm5ic3A7ICZu YnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7bS0mZ3Q7b2xfZmxhZ3MgfD0g UlRFX01CVUZfRl9SWF9MNF9DS1NVTV9OT05FOzxicj4NCiZndDsmbmJzcDsgJm5ic3A7ICZuYnNw OyAmbmJzcDsgJm5ic3A7fSBlbHNlIHs8YnI+DQomZ3Q7IDxicj4NCiZndDsgbS0mZ3Q7b2xfZmxh Z3Mgc2V0IHRvIFJURV9NQlVGX0ZfUlhfTDRfQ0tTVU1fTk9ORSwgY2F1c2luZyB0aGUgVENQIFJY IGNoZWNrc3VtIGZhaWxlZC48YnI+DQomZ3Q7IEhvdyBkbyBJIGF2b2lkIHRoZSBhYm92ZSBjb2Rl IGdvaW5nIGludG8gdGhpcyBicmFuY2g/PGJyPg0KJmd0OyA8YnI+DQo8YnI+DQpJZiB5b3Ugd2Fu dCBUQ1AgY2hlY2tzdW0gb2ZmbG9hZCB5b3UgaGF2ZSB0byBzZXQgUlRFX0VUSF9SWF9PRkZMT0FE X1RDUF9DS1NVTTxicj4NCmluIHRoZSByeG1vZGUgd2hlbiBwb3J0IGlzIGNvbmZpZ3VyZWQuJm5i c3A7IFRoaXMgd2lsbCB0ZWxsIHZpcnRpbyB0byBhc2sgdGhlPGJyPg0KaG9zdCB0byBkbyByeCBv ZmZsb2FkLiBBZ2FpbiwgdmlydGlvIGRvZXMgbm90IGRvIElQIGNoZWNrc3VtIG9mZmxvYWQgYW5k PGJyPg0KeW91IHNob3VsZCBhbHdheXMgcXVlcnkgZGV2aWNlIGNhcGFiaWxpdHkgZmlyc3QuPG86 cD48L286cD48L3NwYW4+PC9wPg0KPC9ibG9ja3F1b3RlPg0KPC9kaXY+DQo8L2Rpdj4NCjwvZGl2 Pg0KPC9ib2R5Pg0KPC9odG1sPg0K --_000_f0675dd42a434ea8abfbe046f3154dcchuaweicom_--