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 5FB99A0C46; Wed, 9 Jun 2021 10:37:17 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E0B0B40FDF; Wed, 9 Jun 2021 10:37:16 +0200 (CEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by mails.dpdk.org (Postfix) with ESMTP id C1C1140E3C for ; Wed, 9 Jun 2021 10:37:14 +0200 (CEST) IronPort-SDR: lEi8S3SP6GhXziXdj5IdMYMoezg+mW+MG45Q3Rm3QPVXJfnhGjPPCRJDGAP5Op+m2+lUmuSvN4 xU1LUzVRAuyA== X-IronPort-AV: E=McAfee;i="6200,9189,10009"; a="185404478" X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="185404478" Received: from orsmga001.jf.intel.com ([10.7.209.18]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 09 Jun 2021 01:37:09 -0700 IronPort-SDR: dErzwNnob6tsJlodinCVHdmui/4SwGFTqMtBa12mXmny8hNu0YO6B6kY1jbi0/6p7s7AKBxwe1 KP32VtNfhmLA== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,260,1616482800"; d="scan'208";a="482299010" Received: from orsmsx603.amr.corp.intel.com ([10.22.229.16]) by orsmga001.jf.intel.com with ESMTP; 09 Jun 2021 01:37:08 -0700 Received: from orsmsx612.amr.corp.intel.com (10.22.229.25) by ORSMSX603.amr.corp.intel.com (10.22.229.16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Wed, 9 Jun 2021 01:37:08 -0700 Received: from ORSEDG602.ED.cps.intel.com (10.7.248.7) by orsmsx612.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4 via Frontend Transport; Wed, 9 Jun 2021 01:37:08 -0700 Received: from NAM12-MW2-obe.outbound.protection.outlook.com (104.47.66.48) by edgegateway.intel.com (134.134.137.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2242.4; Wed, 9 Jun 2021 01:36:33 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F//geoIpoGXBR14QdGcZBhYQbEMYvxtCDgXMBI1jsUuacqkf74RHhNvrkyRgo8BNdtU/5TeKvJ5XVDVu44ivgxbsD0VVU/tDhDOC9jbzFPQb5sAek+fv9mvSlJugYS+K6D9R2Ks21CKeQ4/t16hB+D0I4SuRKfQg9kkQDpp5sf3clAKiE4rUWnbdCD+XsDsX6NZM/rGDN7OI0kXUTFcreoZizkJ2T/3rmIY9HrSvB4v3nb6P3UC8kvgySxa6Ktb6Jq3g+FHLlKiaqlAeXLFcaOoOxh2kUM3dmmaFqiq/NR4xp2c3iIZyrWYS4RaWmJ5LsBwsyvLqnLZiKrVCwgZqiQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MgtBj4DNgNZSeFAguJ9mJBp2kWT3ipNn0AHc/Lyj+YA=; b=N5/CbOvVotn7XxmkhblYj2B3AXu6IWWfyEL3oBfgQqcIvEQKVYZ4qPxrOKlLvYc81rZ7IM67eQEq4zC7G/cMXUyRewbhqVSY5/S0OAlKWumyWBfVeTCPm2yC2KDLB//rRaNv9hJavzByN5tsXOVAnhhGdQxW4gmTd4pyOmhHHnFcnyAll/KFuvqtkhhASgWAHc/13ugUE+bU81R7AU+AwPw+ze6XXmrXQ32J2O8gwV9ge9jwfqEjNdBt2+akC1W6DscqqvWnaCWlQBP6VwJiTDyg/1d9cHO3DT964L8L+w9smQooOQPwAoPKgySNtFFusb5PwPElsm03ysnoJ0/Ygw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=MgtBj4DNgNZSeFAguJ9mJBp2kWT3ipNn0AHc/Lyj+YA=; b=Asie7X0gifF6YphMmlxSWo6hGg88wpl2pNWz6Pcc86tkeKp8JdXI+oq+LtPJovIc+5gFvtDwGvjtF799UW3V4LL5wPnOo7tgk3imScxkTrPGKGANmA0LKaJOtAGsgd9qu+aldpXGLtFiJULN1ke1N0A12lHM49HH9bZ66hXDibg= Received: from MWHPR1101MB2112.namprd11.prod.outlook.com (2603:10b6:301:50::18) by MWHPR11MB1309.namprd11.prod.outlook.com (2603:10b6:300:20::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4195.25; Wed, 9 Jun 2021 08:36:32 +0000 Received: from MWHPR1101MB2112.namprd11.prod.outlook.com ([fe80::7dd6:4194:7125:a180]) by MWHPR1101MB2112.namprd11.prod.outlook.com ([fe80::7dd6:4194:7125:a180%4]) with mapi id 15.20.4195.030; Wed, 9 Jun 2021 08:36:32 +0000 From: "Liguzinski, WojciechX" To: =?iso-8859-1?Q?Morten_Br=F8rup?= , "Singh, Jasvinder" , "Dumitrescu, Cristian" CC: "Dharmappa, Savinay" , "dev@dpdk.org" , "Ajmera, Megha" Thread-Topic: [dpdk-dev] [RFC PATCH 1/3] sched: add pie based congestion management Thread-Index: AQHXUIvyj+E+DTWn10COP3hFZZoy3qrz7EKAgBXaWYA= Date: Wed, 9 Jun 2021 08:36:32 +0000 Message-ID: References: <20210524105822.63171-1-wojciechx.liguzinski@intel.com> <20210524105822.63171-2-wojciechx.liguzinski@intel.com> <98CBD80474FA8B44BF855DF32C47DC35C617C3@smartserver.smartshare.dk> In-Reply-To: <98CBD80474FA8B44BF855DF32C47DC35C617C3@smartserver.smartshare.dk> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.5.1.3 dlp-reaction: no-action authentication-results: smartsharesystems.com; dkim=none (message not signed) header.d=none; smartsharesystems.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [37.249.80.174] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ae59ddcb-f668-4e86-a3d9-08d92b21af67 x-ms-traffictypediagnostic: MWHPR11MB1309: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:2331; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: AwBsD0er+DV1oWdAEZD5bicsniK7xykJRKcy62CeFY44SC+nR8U58VkNHRfMSaYE31Z1isozGnVOWZVe188pTycIId6KwfHmPkENMBQgw4JqJ8GbVJq/HiNoW7d5IUts4QSu82Hb3b4zMG3f6+oRqBs0GDs/L+pwcwOJNitXvMIJvnoJftlisSqawMLQ0tnqGhFuGXRvUJFFVt9V1t0/zObRTshzLrxxVClWsdr+WSQngLIt7vj6NrT5w+57TSYwhZmdWNsNVBTmkKN7g4xa7j0nDwGy3y8f047RC+UmHKmANNS/3izRGEs1Jn+h95I8+gIR6oGAOC/pBRKx21j9qFMTFIMSUOzX3HT271ezxvrlyRnprC1Ikajr4Bxy4Eokp2OYMFR0XaYGmsAJHIliYuTtubTDgJT2BdcAgnPXIBB0W4kjneH2xBhqmDU8+dkIUKXQC2WeCrzfT+BycjOL2SaWGOa7ELJngSsS9HbWqEE5TZmAMmCqKLyPK2wq5M8xXxW9YbJ1wcFCSW6jaQ22y3wAiBDJB7sSunKhcXdt+d3im+N6lXp632n2WiNisXrDo8MAX22jaBZsOLXjVcztCU9YE8HmESe+ZEHTkIk4Lpc= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MWHPR1101MB2112.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(346002)(396003)(136003)(376002)(39860400002)(366004)(9686003)(71200400001)(5660300002)(110136005)(55016002)(38100700002)(8676002)(8936002)(2906002)(186003)(83380400001)(33656002)(52536014)(76116006)(122000001)(6636002)(6506007)(7696005)(53546011)(478600001)(107886003)(54906003)(66556008)(316002)(26005)(66476007)(4326008)(66446008)(64756008)(66574015)(86362001)(66946007); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-8859-1?Q?C4MYg8rMH8GhTsVzzcsL+CdosgWqanMhZpjLrl+bz6PxTlk0UMtZomDHub?= =?iso-8859-1?Q?yBTet1TBPBUf8qkXpTlGUkMaYThOruFdx4FXQu3rR1xBbMcBm1YGN5EUMb?= =?iso-8859-1?Q?m9mZ4bq8cKJMhiU3/0MH1ZFWWM2UbIH4QXSry+a9AfHlvzTUdCnLTn8JUQ?= =?iso-8859-1?Q?4H6ZR8xRsOk3D66/NzEL3eLmRIOPYg5Hog5abJo57FYtnvxNRbOTO/3/t0?= =?iso-8859-1?Q?69+O/7eMVeAQagl+kv5paYu73nGkn2V4kjpwl4HVWZTEdHQF0CpJDPyzKX?= =?iso-8859-1?Q?9TqbLvdPeWMHI+NJe7/l/NJruQh+l7JInREI+ACpVHP2vAkHuT+pBZ0NxV?= =?iso-8859-1?Q?7VM6LPixRPSGcd5MNLTyhyDhPG10inWtCQ4OQ9DNsI6IFSuDw+S2sWhqIL?= =?iso-8859-1?Q?QNUcXld7aIwoUptXNtoEcAG9hRXCf4TUZc003ZBkUVqZ8HyskoL1xb0JOy?= =?iso-8859-1?Q?SJT9pB3itl1z/Z5aDyrZiNVr6Ul8FgF+dsJBl8R+YuJUSNVqwOsXLBqX+q?= =?iso-8859-1?Q?oqzKk6yzBuzW1JG8n/kw34EpLnsQKHGk40itE+OyvTMkw8Ng6j9js4P+mw?= =?iso-8859-1?Q?zUP13vJ1505qzXxsAlpryCr7NjcchKT89QNPGhFNMi64NXuDSO/An+8kLe?= =?iso-8859-1?Q?CaJ1N5nNLHrKG80skD/LLIEbFlT9Z1eynsMcqjaoeKLOzqdejdAsPUdYB8?= =?iso-8859-1?Q?pwP5sjdT1HPMqgbi0bFN34uyERyH/63tRLrexQhAW/pFAXnUezQCCXjtdV?= =?iso-8859-1?Q?3Y7rGioIEngMp2CpnzH/26J+QQWqSe3tSYWaYCTtxYBNtBQaph4xMsSYlk?= =?iso-8859-1?Q?f6uF47/9k34COMH+cU/vWRnnLAvugYmY1c/fClsmF74BJBI4RNPm+MAs27?= =?iso-8859-1?Q?e+s465Ct70zRpUs8cJtXYdFzASjY2IN8oh0a52BLFjPn6aDev4P+QlP8KK?= =?iso-8859-1?Q?vVzeSv+RHsgq0AejUElDmdhfRzEHSQvkTFPSWxt8ZfSEPLc+1kKY/JVrtx?= =?iso-8859-1?Q?LN6Otw0OSUj/H5yrDsImh0oNr1+SFJMSC9eNYdgerCUiJq79Vw7zoBqQ5Q?= =?iso-8859-1?Q?SDd7q2WNymJvCIWa37238UEZ11oGOyS+iU20dO8UFpc/ehd2TWFwq2wcJg?= =?iso-8859-1?Q?3/sdlKAiPym0NKr3y8qxKy2n2bmB7+WW+dWSj+J5eCbnoMy+7bo2DNxg1t?= =?iso-8859-1?Q?3YQHVqvHICfzWywxailxHcQFLiM+9xAylzzJTKxW1+zZuoZ7mxuJ7BaYk1?= =?iso-8859-1?Q?VfDf7ETiKgnPcDgIr8uXkEMn8wS2bsT2PaIjN+jOi4C/t+d+vHS41BnkKD?= =?iso-8859-1?Q?4sEPKenawyEhGdnw5hMNOD6mp5NwsryPXgc0YB6mPqtBcJw=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2112.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae59ddcb-f668-4e86-a3d9-08d92b21af67 X-MS-Exchange-CrossTenant-originalarrivaltime: 09 Jun 2021 08:36:32.5026 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: YZPLHPox//ur6VnyioGhTbZ4lUtS4WcIjConQoab4aV3QWZ38P24WD6wIG0n0E7rgfDamehxabV/yNkmvEErD+m56utX6ZZy+VNY3zF62k8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1309 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [RFC PATCH 1/3] sched: add pie based congestion management X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" > -----Original Message----- > From: Morten Br=F8rup =20 > Sent: Tuesday, May 25, 2021 11:17 AM > To: Liguzinski, WojciechX ; dev@dpdk.org;= Singh, Jasvinder ; Dumitrescu, Cristian > Cc: Dharmappa, Savinay > Subject: RE: [dpdk-dev] [RFC PATCH 1/3] sched: add pie based congestion m= anagement > > > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Liguzinski,=20 > > WojciechX > > Sent: Monday, 24 May 2021 12.58 > >=20 > > Implement pie based congestion management based on rfc8033 > >=20 > > Signed-off-by: Liguzinski, WojciechX > > --- > > drivers/net/softnic/rte_eth_softnic_tm.c | 4 +- > > lib/sched/meson.build | 10 +- > > lib/sched/rte_sched.c | 220 +++++++++++++++++------ > > lib/sched/rte_sched.h | 53 ++++-- > > 4 files changed, 210 insertions(+), 77 deletions(-) > > Please use the abbreviation AQM instead of CMAN in the source code. This = applies to the RTE_SCHED_CMAN definition, as well as functions, enums and v= ariable names. Ok, sure, I'm going to change that where applicable. > > > +#ifdef RTE_SCHED_CMAN > > + > > +static int > > +rte_sched_red_config (struct rte_sched_port *port, > > + struct rte_sched_subport *s, > > + struct rte_sched_subport_params *params, > > + uint32_t n_subports) > > +{ > > + uint32_t i; > > + > > + for (i =3D 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++) { > > + > > + uint32_t j; > > + > > + for (j =3D 0; j < RTE_COLORS; j++) { > > + /* if min/max are both zero, then RED is disabled */ > > + if ((params->red_params[i][j].min_th | > > + params->red_params[i][j].max_th) =3D=3D 0) { > > + continue; > > + } > > + > > + if (rte_red_config_init(&s->red_config[i][j], > > + params->red_params[i][j].wq_log2, > > + params->red_params[i][j].min_th, > > + params->red_params[i][j].max_th, > > + params->red_params[i][j].maxp_inv) !=3D 0) { > > + rte_sched_free_memory(port, n_subports); > > + > > + RTE_LOG(NOTICE, SCHED, > > + "%s: RED configuration init fails\n", > > __func__); > > + return -EINVAL; > > + } > > + } > > + } > > + s->cman =3D RTE_SCHED_CMAN_WRED; > > + return 0; > > +} > > + > > +static int > > +rte_sched_pie_config (struct rte_sched_port *port, > > + struct rte_sched_subport *s, > > + struct rte_sched_subport_params *params, > > + uint32_t n_subports) > > +{ > > + uint32_t i; > > + > > + for (i =3D 0; i < RTE_SCHED_TRAFFIC_CLASSES_PER_PIPE; i++) { > > + if (params->pie_params[i].tailq_th > params->qsize[i]) { > > + RTE_LOG(NOTICE, SCHED, > > + "%s: PIE tailq threshold incorrect \n", __func__); > > + return -EINVAL; > > + } > > + > > + if (rte_pie_config_init(&s->pie_config[i], > > + params->pie_params[i].qdelay_ref, > > + params->pie_params[i].dp_update_interval, > > + params->pie_params[i].max_burst, > > + params->pie_params[i].tailq_th) !=3D 0) { > > + rte_sched_free_memory(port, n_subports); > > + > > + RTE_LOG(NOTICE, SCHED, > > + "%s: PIE configuration init fails\n", __func__); > > + return -EINVAL; > > + } > > + } > > + s->cman =3D RTE_SCHED_CMAN_PIE; > > + return 0; > > +} > > I suggest moving the two above functions from rte_sched.c to respectively= rte_red.c and rte_pie.c. rte_red.c and rte_pie.c hold functions implementing those algorithms and th= ey don't know anything about ports and subports. That part refers to schedu= ler implementation. Putting those methods respectively to those files would= in my opinion break the 'functional isolation'. > > > -#ifdef RTE_SCHED_RED > > +#ifdef RTE_SCHED_CMAN > > static inline void > > rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port=20 > > *port, > > struct rte_sched_subport *subport, > > uint32_t qindex, > > struct rte_mbuf *pkt, > > - uint32_t red) > > + uint32_t cman) > > #else > > static inline void > > rte_sched_port_update_subport_stats_on_drop(struct rte_sched_port=20 > > *port, > > struct rte_sched_subport *subport, > > uint32_t qindex, > > struct rte_mbuf *pkt, > > - __rte_unused uint32_t red) > > + __rte_unused uint32_t cman) > > #endif > > Two comments: > 1. __rte_unused indicates that the variable might be unused, not that it = is never used. So you do not need the first variant of this function declar= ation. Thanks, it's going to be fixed. > 2. I suggest using "drops" as the variable name instead of "red" or "aqm"= . Ok, I will change that. > > > -#ifdef RTE_SCHED_RED > > +#ifdef RTE_SCHED_CMAN > > static inline void > > rte_sched_port_update_queue_stats_on_drop(struct rte_sched_subport=20 > > *subport, > > uint32_t qindex, > > struct rte_mbuf *pkt, > > - uint32_t red) > > + uint32_t cman) > > #else > > static inline void > > rte_sched_port_update_queue_stats_on_drop(struct rte_sched_subport=20 > > *subport, > > uint32_t qindex, > > struct rte_mbuf *pkt, > > - __rte_unused uint32_t red) > > + __rte_unused uint32_t cman) > > #endif > > The above two comments also apply here. Ok, it's going to be changed. > > > +static inline void > > +rte_sched_port_pie_dequeue(struct rte_sched_subport *subport,=20 > > +uint32_t qindex, uint32_t pkt_len, uint64_t time) { > > + struct rte_sched_queue_extra *qe =3D subport->queue_extra + qindex; > > + struct rte_pie *pie =3D &qe->pie; > > + > > + /* Update queue length */ > > + pie->qlen -=3D 1; > > + pie->qlen_bytes -=3D pkt_len; > > + > > + rte_pie_dequeue (pie, pkt_len, time); > > } > > Can the RED/PIE specific functions somehow move to rte_red.c and rte_pie.= c without degrading performance? Perhaps function pointers are required. Th= is prevents rte_sched.c from growing too much. Like I mentioned above, those functions use data structures known to schedu= ler and not directly to those algorithms which are implemented in those def= inition files. I will try think of a solution that could be suitable here. > > > diff --git a/lib/sched/rte_sched.h b/lib/sched/rte_sched.h > >=20 > > +/** > > + * Congestion management (CMAN) mode > > "Active Queue Management (AQM) mode", please. Sure. ;-) > > > + * > > + * This is used for controlling the admission of packets into a=20 > > + packet > > queue or > > + * group of packet queues on congestion. > > + * > > + * The *Random Early Detection (RED)* algorithm works by proactively > > dropping > > + * more and more input packets as the queue occupancy builds up. When > > the queue > > + * is full or almost full, RED effectively works as *tail drop*. The > > *Weighted > > + * RED* algorithm uses a separate set of RED thresholds for each > > packet color. > > + * > > + * Similar to RED, Proportional Integral Controller Enhanced (PIE) > > randomly > > + * drops a packet at the onset of the congestion and tries to control > > the > > + * latency around the target value. The congestion detection,=20 > > + however, > > is based > > + * on the queueing latency instead of the queue length like RED. For > > more > > + * information, refer RFC8033. > > + */ > > +enum rte_sched_cman_mode { > > + RTE_SCHED_CMAN_WRED, /**< Weighted Random Early Detection (WRED) > > */ > > Please stick with either the name RED or WRED, for consistency. WRED is just an extension of RED so in places where I found that it is suit= able I have used such naming, otherwise RED. I think it shouldn't be change= d in all places as it may be confusing. > > > + RTE_SCHED_CMAN_PIE, /**< Proportional Integral Controller > > Enhanced (PIE) */ > > +}; > > + > > > > -------------------------------------------------------------- > > Intel Research and Development Ireland Limited Registered in Ireland=20 > > Registered Office: Collinstown Industrial Park, Leixlip, County=20 > > Kildare Registered Number: 308263 > >=20 > >=20 > > This e-mail and any attachments may contain confidential material for=20 > > the sole use of the intended recipient(s). Any review or distribution=20 > > by others is strictly prohibited. If you are not the intended=20 > > recipient, please contact the sender and delete all copies. > >=20 > > Please don't use this footer when sending to the DPDK mailing list. Footer issue has been handled. Thanks, Wojtek