From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM03-BY2-obe.outbound.protection.outlook.com (mail-by2nam03on0088.outbound.protection.outlook.com [104.47.42.88]) by dpdk.org (Postfix) with ESMTP id CF9BA7CDF for ; Wed, 14 Jun 2017 11:19:47 +0200 (CEST) Received: from BN3PR03CA0062.namprd03.prod.outlook.com (10.167.1.150) by BY1PR0301MB1190.namprd03.prod.outlook.com (10.160.195.149) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Wed, 14 Jun 2017 09:19:45 +0000 Received: from BN1AFFO11FD034.protection.gbl (2a01:111:f400:7c10::156) by BN3PR03CA0062.outlook.office365.com (2a01:111:e400:7a4d::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14 via Frontend Transport; Wed, 14 Jun 2017 09:19:45 +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 BN1AFFO11FD034.mail.protection.outlook.com (10.58.52.158) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1157.12 via Frontend Transport; Wed, 14 Jun 2017 09:19:45 +0000 Received: from [127.0.0.1] (B46179-11.ap.freescale.net [10.232.133.96]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id v5E9JcfD028168; Wed, 14 Jun 2017 02:19:43 -0700 To: "Ananyev, Konstantin" , "dev@dpdk.org" References: <1492672688-3571-1-git-send-email-ashish.jain@nxp.com> <2601191342CEEE43887BDE71AB9772583FB0589E@IRSMSX109.ger.corp.intel.com> From: Jain Ashish-B46179 Message-ID: Date: Wed, 14 Jun 2017 14:49:38 +0530 User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.1.1 MIME-Version: 1.0 In-Reply-To: <2601191342CEEE43887BDE71AB9772583FB0589E@IRSMSX109.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: 131419055854390302; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(336005)(39410400002)(39400400002)(39450400003)(39850400002)(39380400002)(39860400002)(39840400002)(2980300002)(1109001)(1110001)(339900001)(3190300001)(199003)(24454002)(57704003)(189002)(377454003)(13464003)(9170700003)(33646002)(81166006)(8936002)(498600001)(64126003)(31696002)(356003)(8676002)(65806001)(65956001)(47776003)(5660300001)(65826007)(23676002)(31686004)(50466002)(83506001)(105606002)(104016004)(85426001)(106466001)(86362001)(4001350100001)(76176999)(50986999)(2906002)(189998001)(54356999)(36756003)(230700001)(77096006)(38730400002)(6246003)(7246003)(53546009)(6666003)(53936002)(2950100002)(7126002)(229853002)(2501003)(120886001)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:BY1PR0301MB1190; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; MLV:ovrnspm; A:1; MX:1; PTR:InfoDomainNonexistent; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1AFFO11FD034; 1:rkMXcAKNjLTm6v1K4dD4seg5pNcWb7ixbe+qPx8/oYGHbLXSFkNg/b/LhLCMEAjsgO8XHsXD64h36bhgKinKv5X3mscibL9s9wuISg8JlFbUOdNuUOYzW8YMVZvOdC7/dX6zAV0qZqkZpb8xoy+3MjostBHpN9KGICQYvPPX4X16gj5PuBjPIzdHd5+AC0JFrQwnowywf+mS0zJ6NJYcahud/udf+dkuy8RAjymmO6D3ix8Ila50l15ETMJ/fMIIP2iC/H0vQxzpNDFqaGWpidEOGFxDk1P5VTZtAckamRuCjiG9yaY80ATXWr3PjqL5E56hIDYTlF7OjFG257KQjfbaGLuDMv9pdRrnEICVHc9MePLE36/atFhaYvBoo5mgsShvTYXUYfGgvn5s8Fa9qRWCsYoIN8rbELwiDsHLab4i7jQiQD5MFJ7oax9xthSFiNTyiV4nyXrONG4Ai3aOiTNYd3dO9KBHPYsHCbTVTE1pHbGRmfEoBbmDxx9h7Psd1eZFNySIP6HTWfspTQpQyz9zpEfnOm7b7w8NZTbTyUfXblz5UcHHzoFtN1hLHwgtlHugtCA7h9bj/74dc9G+fxG22oClg9UTTGw96C1ugj0zT3ib1MsqLsw7SVQM1yfu X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: BY1PR0301MB1190: X-MS-Office365-Filtering-Correlation-Id: 77707a31-cdac-40ca-9fac-08d4b3067f4c X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(201703131430075)(201703131517081); SRVR:BY1PR0301MB1190; X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1190; 3:N4nCtwGCacw7HOK/8Yku3CCZgowUCxW62w0EPQbsPd73sCjFqQOAlwx/v+ihwk+i9l44Pvuh5t6WK9w40tZjqepj3UE5unxiXXpXSpNtLRmGXk6yBbQ2T6CcX3RJLg9XlL8Kq3hVvdOgwisrkAcEh4Orid7BtfDbkU/P8CxT0l8kJD1W9Z7mlwET0R3rs//HMcWq1a480rRvRetkS4nWngIB40UKWXvItefsaRvIgvyk8z22ummpPcaKUstYnvDZw8vCJwF8Zoz72rsaSXtq4HRJ/HbmZGVj/c4pZssy+Ch7RdBP+8/UZrRmKq57ldNkXMYjoI5dlzGnM5/ZAaO/b5zqUCSJ0FMax9BHuDwJVjPQyTcTX8SYkoYQ+ts7HlZfgHhjT9k+Bl87XV+KddGupXEGhXR1w43jauy251n48+WjGqkwHBiFKV8UEd8/xy88; 25:hfYErh+d1B/Xvfp2YO2Fml1jVRkym41e537b1tmy2cLMwmglJEWuUeTXhXJ4jHwi/fnqDm73tUdjxgINfz+4QLC/K8tKkOjxVrRfbR91U7P074EHR4z2QDhsfMNyVMZ5hDb3CzfIsHuigydMWCwrvAXBz8Z0/tD7GpV3mq2AxNRZmD8XFrVtG2frE+5/nEuai4H6uzbyLrnvgcLqrj0x1FOrwZ3kz5bMY6wgPaiJqzbDSwA6NmYP/2vZC+VB76YcNZh06BKN8b8dg+sjV/g9pBUUJbDBQbC3lrrDsXkhMVims+claJU3GCZSdH52pR/fYf+6CazlovsRsmLbijGW6hDvksv9DFa4YSYMotehGiySXZGZJeANVbAgPRkChK3ft07pxhP2P50GawpI9vTdYGC67K1MwT0+gA7/q4aEaISG5J9mIMxfQg9MtzT+fl4uS8mCvpBjNVKRgxQxU03DtRStvFFCpTiwBC+ko1gkvf4= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1190; 31:zgKz2bAoRr4/qYaqAse58DAn92dGHqy3W75A8ShI1Kco+6WZLgOBYLm96+0fZdc/R8UlgTTAhHYcffr45QYzTFXRhp4Q+Uw+/RD1UL4Z67JhYNvBuwXavhgIIxES/DUk0uysRuoMgi1L7Be82PisCZVVYOks9dHNuLys6F0o1N2XfjujLnzxfYdeK+wqOhouxdAwdWvORZrNUY/hp4r9IFF+i2e9w3Z7L9bPJ7BPXmdqAgfPHiaz5sQz+1mOSqr8g2zTYDTm8+eAjpnhItzZvA== X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(278428928389397)(185117386973197)(228905959029699); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6095135)(601004)(2401047)(13018025)(8121501046)(5005006)(13016025)(93006095)(93001095)(3002001)(10201501046)(100000703101)(100105400095)(6055026)(6096035)(20161123565025)(201703131430075)(201703131441075)(201703131448075)(201703131433075)(201703161259150)(20161123559100)(20161123556025)(20161123561025)(20161123563025)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY1PR0301MB1190; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(400006)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY1PR0301MB1190; X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTFQUjAzMDFNQjExOTA7NDpmSXJDSFJYcUFGdDNDSDRZRFJRL2hvUDdB?= =?utf-8?B?SGgzRXh0VWxTQXMwTW1GWGVjRVYyQUowSkViTHdVK0FCRXYwY3F2UCs4blNo?= =?utf-8?B?cTYydWVBOVUzS2ZSNzdLdGJHNDZWSDJCTS9mSER1SVQxTGN5NllkTkxRK01E?= =?utf-8?B?TXZvcXVQMXVhYjZvaUU1MnU3akJBb3k5QUtlUzF2S0hiR0l0TVplYnh6eVRW?= =?utf-8?B?NHhKWGpxZlVyRDN0RHZkRnZidTlOOXoyV2VmbUVLTmQxSndhbUVMT21uVjlR?= =?utf-8?B?YnB1dGtPTHB2by9tZUNTcXc3MjYrazVQMEdSSmp6VktxaitmeC8vLzFmeU5K?= =?utf-8?B?R1BubXlmbXFreFlDbXBuM09mb0VpdXM2THNPMnlIOUY3ZjFlbjdKUTd6Vlg3?= =?utf-8?B?K1BhZkk1L3hWUGxjeWhGZE4rbzNwL0dLUGozZ09SR2NrampXTmsyZEVTdGZy?= =?utf-8?B?emVXdzZzdUhVcXlsaWFiRWR6aDM3OE9iWEJLVjVKL2dTSXdNUGRISGxFOW45?= =?utf-8?B?MStUMGlzOHA3cTNCczJqWEJrbFlYRlo1dnBQMk1WeWtGSU9kT29weG9CNXg2?= =?utf-8?B?dkZWa0J1cis0WUJIYmZwQVBkSjdJdGpKYW82SkNIbTJIUklOUzFuYzhmV29q?= =?utf-8?B?ZVdBa09JL1gwVkdGVHdWU0xSU210MFU5cEY1QkpYMkFubUl6dUxUKzF3SXp2?= =?utf-8?B?OTdLKzJVRnd0ZEdDckhUT2EyRldXSmNibkJCQVlQMWtIeFlyUDZZZkJJK2F5?= =?utf-8?B?TmZzaGliTVhEOTNra1hHMDFNYUVGd1FQaW52U0hlelJneXpmWDhTd3c5MFk0?= =?utf-8?B?Rlc4dUtCTk83clNTTVZkT2VGZTR1Ym9RUnJmVEhaZzdacmorQnU2a0NhUFk5?= =?utf-8?B?Z1ZkTHF0cWMrekdaam5iV2k3SFQxT1FUZ0J3eFZPdTh0KzFmN3o2Z09iMVVM?= =?utf-8?B?aTBabHV0RFRhd0lGeldZN2diM2hpOFFoOHlDUjRIMjZjZ1RQdVQ2UlV3UXdr?= =?utf-8?B?SllzYklGUXJ3b0poN2VTdTlBK0Zhd0RFdmVlTGtkS05aUUFHVCtPKythZFQx?= =?utf-8?B?cndFeGVKa3VuNUpFYlRGcmxXOXFTWE5vVGlJYVp3enNGM0NPS2JYbHk4WGk5?= =?utf-8?B?UmdtZk0rMDdoNHlIcXFHek9JL3RhM3hZNmMvdkVGMmtqRU4ydmk5NWY1WmlM?= =?utf-8?B?MmcwNG85NXo1WFliMWsyVkNkNlhNbEpyYlgxVEVXdjRQdkNsWDBVUU5sU0xX?= =?utf-8?B?clgzbnFJejBRdW03cXFKbWZLUC9jdE12MkZqcE9yd1hYaXM1NlJObyt2dUI4?= =?utf-8?B?VVd1UlNyL2xXUGVwb01UZHkyVDZqOEpWdnFuM0FSU0FtblBzWWNkVURjWnJu?= =?utf-8?B?Tndlc0o4amw0T2FTbWh2eUIyRy9vWUtRdTgyVnVHMEZoZ0VxekVNZ2w5RE5P?= =?utf-8?B?Sm5PeUdwQ2tQVWl3WHFFMjdxdVBxek0wYWRnUG5RZFRuR0FZT3NTcXIrVjRx?= =?utf-8?B?a2ZBaVBPQVZHb3VqREFqeFRrRnZXaVJzK3hYWk9SWThFVUZzWlEyd0dxN0t4?= =?utf-8?B?NGErcUU4WUgrY29TSGtrdXNVZU5UZUZ6Z3RrZUMrL0JkYnFRQmltNlAzOElv?= =?utf-8?B?K3o3SlFUM09KSHFxUGxwZElwSjhucUJzZTRGcWgvVm15QnF5dEMrUjJVdUNK?= =?utf-8?B?VC9mTXh4aXdSY3d0Q0J4eGdlNFRGSUdDZThFSXhnOGJYcytFNDVCUUFzYWlm?= =?utf-8?B?V1Q0VE8vYlpYbFVXRk1jRDNVU2xWbWNoNFFpTFZuV0VuODViMC94QklmY3Qz?= =?utf-8?Q?C1w3LIsLSC0Vts?= X-Forefront-PRVS: 033857D0BD X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCWTFQUjAzMDFNQjExOTA7MjM6bEY0Z2lrNjMvSWhpdnZiV1NSMnRrL215?= =?utf-8?B?UnhBRGxmUTZhZFFmb0VnaExMb0ErSzdOUGtLdGV6RnhtNGxJeHFJS3lxaDBV?= =?utf-8?B?cmd5cWRiY3B2emsyazIzbW5lTXFDSklBUXpwSjRnaTNLbE1jMXUvaEdpYVNi?= =?utf-8?B?VklwQitBQ1U3UHhTc3VRbHFkWXRxV2JwWEtBeFU4WXZsczNjUUZocGtIUGxY?= =?utf-8?B?VzcvUFVtN3RTa3BCajdaQklZUWpRWHA5ZjRhMjdYRGpmOUttcGlhR2xZbkg2?= =?utf-8?B?S0EwK2lxZjhGejU4RkR6WFNKTm9jZTBwQXVCWHpXN0UvbHpySFJWMTdId3cy?= =?utf-8?B?bUJpcnl4UTZUZFVXckdtSUcwc1hHcTRoQXBNdnM1U244T2wyU3VmckgwODJi?= =?utf-8?B?a0pvOGlpMENCZlpyWUtZeTlNQlBMVStSbkpIUi9uVW5yRXZEV0hGQVRUZWVw?= =?utf-8?B?bXlFVTdkd1oza0FhUnI1dlZka3ltT3VHWmh1TUQ1SXRIRmhwcEtweTZvRllJ?= =?utf-8?B?akRtb3FsUEdNNUZhM09sZUwvWkF0Vm91aUp3MmJoRkYzMmRLQ1gyTjdKZHY0?= =?utf-8?B?d0tqc0dxUzAvRUhZaVFIYkJva2UyTlhEQ0w1R3lFWXFJdU85VDNZM3NyVjY2?= =?utf-8?B?cmZsSGJncVhUbTE1emRqd0ZvWmhoZjBzaVBiZXQrc1oweFJOTmdPM2pCWGRl?= =?utf-8?B?eno3UjI5YWxkcFI4ODE0MFg1Ukw2Ulc3ckRIQTlhSkV2Q2xGMlpmano2R1JR?= =?utf-8?B?ZlMyRmMybytsdHV6WFVPM3Nmbnc3cXVKbDNKVFpkZTl1Vjc1R1Z0Q0haY0xi?= =?utf-8?B?eFhHZGY5K0lMNzZCNzYwVTN0MUF4OUk2Z3VDTWZTazZ0Q2IzZmpCUVQwN2c1?= =?utf-8?B?dG1TQVJtR1hFeUs2emFFa1d0dHMxcExKaU1iTW1pT3c3VFlCQi8wNVlLcVJw?= =?utf-8?B?SnNBRFliVDdzUG5RWlVVSjhhQjJOa1BnWXdrMFYxWHRVL2RRbStYdHE2aytJ?= =?utf-8?B?YWJzZlVuNlRvY1RJQnUwRjBwQ0FnYWdGZ1pKUkt1eEc2M3ZYRTVJL2F0d1Nr?= =?utf-8?B?ZzMvcDl3bWwyTXUxYnVITU4vU0NBTTdwSEphVTVndGtHdHZ4c2dqOExZemNu?= =?utf-8?B?Z3VOOWxERzlZZWlhbFlGQXNZSyt3ZXBscy9qd05rZWNWS2V5SG5KaDAvY0Rv?= =?utf-8?B?MTlLZGgyN2lsUmdEblVPUW1meWtCK2lwZXJaU1htMHVKMUlTRHk0RXBGeXVZ?= =?utf-8?B?QVhMRk15dXR0N1RKNEdFZ0dnSFd2YkM3YmJKZXhQenFtV0sxeDYrMkkrRnhK?= =?utf-8?B?OVQxclBVbUc1eStud2l3dUhSNTdpeXplVHNhZjBuZEc0MlBzNTBQWWtFM28w?= =?utf-8?B?Nk5oZk9xUnFyMlJZcmxRcThVNHBWUWxjMVpRTlhUM3AzZkRiL3dnUk9mWXBj?= =?utf-8?B?UmhPcDJTOTlxK0VJdmZycFFZYXlMdUhCWjdwMDlvQmEzMGZ6MjZFaDZCMTgx?= =?utf-8?B?aFlTNG1mTU8rZnNCU3g5cU0vaXFRdU5VcjQ3dUwwenRaVmMyZFkxWmRRKzRK?= =?utf-8?B?ZXpOcjBKL3loY21Ca1hzdFBXMERxZ0RlOWt0RzdhZml5eGt4NWI3Wm9SRksv?= =?utf-8?B?ZDBMY1hMZnpVZWtrRnZ1UWVRbGRORHdzYWk2ZEFMNitzOTZObUF5MStGcEE0?= =?utf-8?B?Qy95N2ovTTQwTTBWQ2lLbzJOTHJhYkM5NThpemJNVWNTODc2NXlNMmxkeGZu?= =?utf-8?B?VWFXZjZYeVBhdnYraUNHa3pmRnNra0JKK2lSL1lvVHMrTmpVQXZibk1pMjRl?= =?utf-8?B?azhGMlg5K3RQWWEyVDM3MHREVGtxTEtrbzY0NHF2bDVuaGd1cEJFU3lKTWZk?= =?utf-8?B?eUhsMGZqc2JobmlidVZWeklJUTNZRytzRUpCQjNwZmZpem02YXh6RHpJTDVV?= =?utf-8?B?c3pxdHEzZXExMUcySllXRGljc0k2UXRkQ3NWWTlsR291eCtGSXFCU2tQNnIx?= =?utf-8?B?cU9mdWxabWZsSkpqa294Nml0VnROdXpKZUVSTjFBclRaRnR5cWd4VWVObE1p?= =?utf-8?B?N1Y5aDJSaFdZcHlkRFRmRmlnRlk1MXlpb2NvV3V1ZEFWTmwzbEtxVHA5Y1pX?= =?utf-8?B?VmIwUT09?= X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1190; 6:+z/QDjjzh/sZNsPD7tP8oCoLYMqt5n8hjTQyTf7QBA/+o5pzxyu8ab66byvM0jVURQuRX7+PuvvPCGIA/iAyeWIGjIyWF306NfF1JRkEZahhHxGFxKz7fRhmiJdag9nW7QyuRMqxlSbwi3Y87No0nd+gWpV8aXrHuVfBgSAl8uvfwUvgxM1+sGh+WTQNMeLqUFWPSAhXSYfj5wiL2f0uTwJKisOKSV4pKCuK+xUESQxChOgszY10Y/PavgiOOHSohbUKdNTH6W2ELI2detaIpVg/W4YV7B5DoOzAN5YymeE7TfjY2ei1cw4iC2ABvBZtUKPcvi0tx2Pj28+NqZJxLQzmKNzwM7orW2JQa//w7Xe/BCIU2hZXyOso1YK4MG/7V+uRV43ROJbZf4SR2JZHSDfWsxcPp6xJUaAC/jO0lHDxZLAhe8WbPcGgiuzajXRIVdiTbJzRUAUyPKBaFkZNGalWms7GdnKu9aZGq4vDqBXNRmn+776LqzXh7LhNMO2RsoRcDkrKcb5mv4BUnoliLg== X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1190; 5:oTb/E9NGrB+EJRNYVC+LamzSJhERU7oCIL1kZQ1qiFqLgCJxSJOqDwK3LnjLDQyyDcRbuK+6Wh++t0LV4CFsVcQk1REdl9IxtcU9MOnWkUNHSFDg1fizWvr52uby0HTl1rKbWBmiqL//piJj4uErVesf910iJVg0Io92yCcFeNA/5NLnK8pJN6saPh/mEPNXL8WUV2ZAw5S3TFyzygSjiRSIrjxR3BqT55zjDTXAqmJQ/nTwr4EzqUx3eTfHHNY7+M9h1nvat22rCUUAbF3Y9+jTJDjM3t/LLl3lH/7Fq73X/YfJKpf72AMyzwdWQdqcuIQayy1BUz7rqcQl67S5hm00HI8FbpyPuaasbqGHNlYgVqN8NCpVd02kJyTbzZYc71NDUOWPqNkyjRNhm3JHujYcKBOeg/lJoGqj0CNz82VEUOv9KLeoO1zq008n/JXthasiCLk6ftPnJ7op0QO9lBJbCCJUQBD81bQJIM2PuwSNNPQNkYzdR1ZnigmcD61HNOWMll8jGhl6i3eKa+BE4g==; 24:C85Ek6arqGua4HdJ1rKrcPHRQfx1NRJNOx59xUpNTdmzuneu/BDVFkM1X6Po7CY2gSLQuquQrZekfrAMF9UZM/iTSoiR/9p2ZRBIVSp02Gs= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY1PR0301MB1190; 7:tuVFpcdH/4niPYrZ9MJNFtGlSfQToh7Q6YWQNJuCCA4CXEl69gY6x9iJ3MxDd5JL96grdxfXsgdZmDlSgr90HbbTU3xuPlj9zcDV0TX3WXqlAPwAg0d4rmvqMT4YAstldvur/EAmT30FVfSeeMkpGF7erIdtV9jNLjLHhKlLIMxZr7IFviwkybaUxicxkY2wXz31fBmGM2jbe7WZvnGOshp7a6dx+sRMT6dNEG4ahhxRqpzItHYr+ghw4o5L7d5zLwI7ngKNNC+JSD9RiC2NnNjzWgUOUqXBH+SOrnsNOsoyjTaIX9RYs0ie10ZLjBhIA0ts9XgHr6zv7YEiaYWWWA== X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jun 2017 09:19:45.1270 (UTC) 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: BY1PR0301MB1190 Subject: Re: [dpdk-dev] [PATCH] examples/ip_fragmentation: add fragmentation size support 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: Wed, 14 Jun 2017 09:19:48 -0000 Hi Konstantin, On 6/4/2017 9:14 PM, Ananyev, Konstantin wrote: > Hi, > >> -----Original Message----- >> From: Ashish Jain [mailto:ashish.jain@nxp.com] >> Sent: Thursday, April 20, 2017 8:18 AM >> To: dev@dpdk.org; Ananyev, Konstantin >> Subject: [PATCH] examples/ip_fragmentation: add fragmentation size support >> >> Adding support for determining fragmentation size for both >> ipv4 and ipv6 traffic dynamically through command line. >> It is helpful in testing to configure different fragmentation >> sizes and validate the packets. >> >> Signed-off-by: Ashish Jain >> Signed-off-by: Hemant Agrawal >> --- >> examples/ip_fragmentation/main.c | 89 ++++++++++++++++++++++++++++++++++++---- >> 1 file changed, 81 insertions(+), 8 deletions(-) >> >> diff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c >> index 815b225..436755b 100644 >> --- a/examples/ip_fragmentation/main.c >> +++ b/examples/ip_fragmentation/main.c >> @@ -94,6 +94,16 @@ >> #define IPV6_DEFAULT_PAYLOAD (IPV6_MTU_DEFAULT - sizeof(struct ipv6_hdr)) >> >> /* >> + * Configure fragmentation size for IPv4 and IPv6 packets >> + */ >> +static uint32_t frag_size_v4 = IPV4_MTU_DEFAULT; >> +static uint32_t frag_size_v6 = IPV6_MTU_DEFAULT; >> +#define MIN_IPV4_FRAG_SIZE 64 >> +#define MAX_IPV4_FRAG_SIZE 9600 >> +#define MIN_IPV6_FRAG_SIZE 1280 >> +#define MAX_IPV6_FRAG_SIZE 9600 >> + >> +/* >> * Max number of fragments per packet expected - defined by config file. >> */ >> #define MAX_PACKET_FRAG RTE_LIBRTE_IP_FRAG_MAX_FRAG >> @@ -299,14 +309,14 @@ struct rte_lpm6_config lpm6_config = { >> } >> >> /* if we don't need to do any fragmentation */ >> - if (likely (IPV4_MTU_DEFAULT >= m->pkt_len)) { >> + if (likely (frag_size_v4 >= m->pkt_len)) { >> qconf->tx_mbufs[port_out].m_table[len] = m; >> len2 = 1; >> } else { >> len2 = rte_ipv4_fragment_packet(m, >> &qconf->tx_mbufs[port_out].m_table[len], >> (uint16_t)(MBUF_TABLE_SIZE - len), >> - IPV4_MTU_DEFAULT, >> + frag_size_v4, >> rxq->direct_pool, rxq->indirect_pool); >> >> /* Free input packet */ >> @@ -336,14 +346,14 @@ struct rte_lpm6_config lpm6_config = { >> } >> >> /* if we don't need to do any fragmentation */ >> - if (likely (IPV6_MTU_DEFAULT >= m->pkt_len)) { >> + if (likely (frag_size_v6 >= m->pkt_len)) { >> qconf->tx_mbufs[port_out].m_table[len] = m; >> len2 = 1; >> } else { >> len2 = rte_ipv6_fragment_packet(m, >> &qconf->tx_mbufs[port_out].m_table[len], >> (uint16_t)(MBUF_TABLE_SIZE - len), >> - IPV6_MTU_DEFAULT, >> + frag_size_v6, >> rxq->direct_pool, rxq->indirect_pool); >> >> /* Free input packet */ >> @@ -489,8 +499,14 @@ struct rte_lpm6_config lpm6_config = { >> { >> printf("%s [EAL options] -- -p PORTMASK [-q NQ]\n" >> " -p PORTMASK: hexadecimal bitmask of ports to configure\n" >> - " -q NQ: number of queue (=ports) per lcore (default is 1)\n", >> - prgname); >> + " -q NQ: number of queue (=ports) per lcore (default is 1)\n" >> + " --frag_size_v4=:optional,IPv4 fragment size in decimal" >> + ",Condition:(frag_size_v4 - 20) should be a multiple of 8," >> + " default is %d \n" >> + " --frag_size_v6=:optional,IPv6 fragment size in decimal" >> + ",Condition:(frag_size_v6 - 40) should be a multiple of 8," >> + " default is %d\n", >> + prgname, frag_size_v4, frag_size_v6); >> } >> >> static int >> @@ -528,6 +544,29 @@ struct rte_lpm6_config lpm6_config = { >> return n; >> } >> >> +static int >> +parse_frag_size(const char *str, uint32_t min, uint32_t max, >> + uint8_t hdr_size, uint32_t *val) >> +{ >> + char *end; >> + uint64_t v; >> + >> + /* parse decimal string */ >> + errno = 0; >> + v = strtoul(str, &end, 10); >> + if (errno != 0 || *end != '\0') >> + return -EINVAL; >> + >> + if (v < min || v > max) >> + return -EINVAL; >> + >> + if ((v - hdr_size) % 8) >> + return -EINVAL; >> + >> + *val = (uint32_t)v; >> + return 0; >> +} >> + >> /* Parse the argument given in the command line of the application */ >> static int >> parse_args(int argc, char **argv) >> @@ -537,6 +576,8 @@ struct rte_lpm6_config lpm6_config = { >> int option_index; >> char *prgname = argv[0]; >> static struct option lgopts[] = { >> + {"frag_size_v4", 1, 0, 0}, >> + {"frag_size_v6", 1, 0, 0}, >> {NULL, 0, 0, 0} >> }; >> >> @@ -568,8 +609,40 @@ struct rte_lpm6_config lpm6_config = { >> >> /* long options */ >> case 0: >> - print_usage(prgname); >> - return -1; >> + if (!strncmp(lgopts[option_index].name, >> + "frag_size_v4", 12)) { > > > Why just not strcmp() here? strncmp() here is adhering to its similar use in other applications like ip_reassemble, l3fwd etc. > >> + ret = parse_frag_size(optarg, >> + MIN_IPV4_FRAG_SIZE, >> + MAX_IPV4_FRAG_SIZE, >> + sizeof(struct ipv4_hdr), >> + &frag_size_v4); >> + if (ret) { >> + printf("invalid value: \"%s\" for " >> + "parameter %s\n", >> + optarg, >> + lgopts[option_index].name); >> + print_usage(prgname); >> + return ret; >> + } >> + } >> + if (!strncmp(lgopts[option_index].name, >> + "frag_size_v6", 12)) { >> + ret = parse_frag_size(optarg, >> + MIN_IPV6_FRAG_SIZE, >> + MAX_IPV6_FRAG_SIZE, >> + sizeof(struct ipv6_hdr), >> + &frag_size_v6); >> + if (ret) { >> + printf("invalid value: \"%s\" for " >> + "parameter %s\n", >> + optarg, >> + lgopts[option_index].name); >> + print_usage(prgname); >> + return ret; >> + } >> + } >> + >> + break; > > Hmm, why do we need that break here? > Konstantin 'break' is needed here to exit from the switch case Ashish > > >> >> default: >> print_usage(prgname); >> -- >> 1.9.1 > >