From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0089.outbound.protection.outlook.com [104.47.33.89]) by dpdk.org (Postfix) with ESMTP id E23662935 for ; Fri, 14 Jul 2017 07:45:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=bMx+JH0yPPCSDt/Mn3VBMYcvP4ilvR1ZPcZ8+atl/2M=; b=Xs7qXHdPlOfW5+l71zL5FCyMtLTwpfHicqYXbzLZCsM6qAMOPN+x1tc1ybfBn5bZgpngIHtpBpGFmJw3l9IiCMgxbujtnq7akUO0oioXYzZgqGtq3YeaAyEBsAJd91tXT4OfjmoQfqz3o3kEZGivniIfW5bteTchX0h3J3zb5CI= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from jerin (223.186.243.244) by BY2PR07MB2440.namprd07.prod.outlook.com (10.166.115.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1261.13; Fri, 14 Jul 2017 05:45:25 +0000 Date: Fri, 14 Jul 2017 11:15:08 +0530 From: Jerin Jacob To: ilia.kurakin@intel.com Cc: dev@dpdk.org, konstantin.ananyev@intel.com, keith.wiles@intel.com, dmitry.galanov@intel.com Message-ID: <20170714054506.GA3760@jerin> References: <1499359372-6658-1-git-send-email-ilia.kurakin@intel.com> <1499795286-31826-1-git-send-email-ilia.kurakin@intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1499795286-31826-1-git-send-email-ilia.kurakin@intel.com> User-Agent: Mutt/1.8.3 (2017-05-23) X-Originating-IP: [223.186.243.244] X-ClientProxiedBy: PN1PR01CA0118.INDPRD01.PROD.OUTLOOK.COM (10.174.144.34) To BY2PR07MB2440.namprd07.prod.outlook.com (10.166.115.20) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 8174093d-68c6-4045-7c9e-08d4ca7b8a9d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BY2PR07MB2440; X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 3:MCMt4JZDEzBwZ65HPzdSj1ITqmaagbDYaock6m5xsppV2H+GHa8l7kFCedAKP8xqN9UbDM6PCOMPQ+Wh2OS8sJcBIvLIQUHA/eOFjLz1O+rAC1UJMcGRYDCwmEMn3vhLu3yFUwNt0CwybGfqvFfJeLBEvdZ/a8dN7jE0zdTmxcfx0DrVVHfu/20rqBlKYxl9pDfQys/BGdPqJzOiRYBO0GUqQYBZd0WzPW8Bh7H2o+7CTGqtwCtGkABU/LWMYSuRLSVxzZN1+BIcwa9DuaAyHYXJTAY9sqhNRNP82d8XaRPP0l4etQDAZNOkRhyUPEzcX5+oRtOLGwq5oR5fRsRQPwGkeiKcIxuIbSpUvrFZfd5wzZ4hryFXBgjGa+WBewtCJ7EGua2qMGRERT+0HyJgS3SLq5b6KyFnkI5SjlnF0XjcKqr/6X1yLMrRNawCIa0IJiuAOa2zW1YRUXdUgqCQse8NKWWxM0RqqGs8mGa7vXwmoURHj71Riltt+MmGyxvUanLwk2qBXuvuUBBk2sB2JeJcn/xPZMSt/a2fdXQ5T3W7lvRXtYr7mKD9jCoeEOdhAFqJyHMM5ix0usGUufteFPT62Xpfikr35ZZd+Nudk7QOezNulFCTVxAr1FTzXKLLNF/Z5XrSfUTfuPUD9+vDWAULP2ePgeC0o+m8TeIzOuCQ5t0MuE2TQTDVuY6eB0zlQQ7zwYBlNKXx39njGylYoovStN69/qZtjbx8OXeAdVM= X-MS-TrafficTypeDiagnostic: BY2PR07MB2440: X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 25:VAZUhjEcHK6S9jItkMX15oCh20yC9X+vukrhvWioBuSstgIwVbVouWbSjsYOWazrgPN7/3579EiCqyppmfPikwLb5JU8EUgAgP96lfwGFcvnVnRMnoVQYhThQ/mRSMfkZAHYqfkwZnsXwHq5xgHNIoH4eKjCAx/qwVkYbnMWoAuyMkvwKWdiMY2yuJa0uIxQCzLwZ3SSyvr4Pyy7cDziyzY4XALgywkR7yraH2kATwYcO27w+NZ9oCmgv2w9jc3ntaBkOcJQaZ9hg15GdHhkb3bWqK0Er05h6jWvLecZHyoPP6kdsxAwGl+qPC4ng1h7fyCDtGKD1MJTY1Dcz+nz+P/aJBsdNgOz09qQp4KQd+lWXqjXfnU64d7NqjXaU4d2VmEpLg9iApQAe7W1fN4H4RgzOCaRdt12FIIPZcJecpk1K6yPs0PenDls5pJydbRNZHhG/R9U5iOfoX7REUKKfiybOMrRKkYAz8cgqviHZ+TxR4dYhBM1P1XRM77pJ/BiHATHMv/beetdZDVLx10xoQxTZ+iAkvdeijBniTWH9Ika2TXXZ9IbXqAX6fTIYZ9P3JRwv+E7s8wNZV3es+pf5uV/w5VaihKs4VVdCRHCXAbv/B3KZORxbRFzklI/3gE4BpjNoPgFeK3aryohEMvK2b8H14Svxe6FUg0Bjs/ZxuXOcniuqSt4sizOa/k+wFb1NcIRq2ZspYABOiXGa5uv5U1wf+X5/NGwFvVjcHX//okLmNQgooKk6IxW5Tom7qlbD9O2ex478oGY4vEmCOeWJR4s1/AB8PPVrPD8VP8Z3g8unZknm/cB9ZH9Wj0Gyxer9czf6WQD0D3hu3MjFqo/a6jy5TjZiSS9s+JsQ/3/0jbiOd90sVAJoYXVtqLB9lx2Tz0kFy085RrFWHGoTkMYMabLjLEEi/43WUZGoofbKCE= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 31:jzGlmOyaerTETmebOyMhwsZQ5nQygjSeui4IB0TR2pdFQ8wJdOTe6QkDfDoo5iLmm516rtUZHQCSAdjk2RiTlueieiVCuZlL7LFzuu9p55sixPBFB7YnGJo9u1RhTLPxtJTARKsKYrAHK8ZCdWwB/3nhDzFNt0EJoRGlf5LzQnyf74JMMSZVfGjlIBorpVdM9ymlby2pJYtoW8YziobYSyIbSxHqS3kX7EoFNZFWhq/yQ3fppwrdDZRLGeC08U++I9m2cWYvDSVlXmsARFwjcrmk0P5zTH6eqsMjT1hWsEZS0gPOD+CU7cM3ZD4bjyYbS/vyJTicE3hWvk/GO/47f3QAMtIxy8RQWcUg2V0GDcJYoIXgO7ptWw+AnZiCCSzVAv9wzI9tZnjwQZ3Af1Fhaskrhco1qfV5lPSHjVi1nm4MOSZAw6jIzv1Cdiw+8PW0ii6awq9BM2jdLDcX5+Ze8xWwf2gmr4ot+GgW0LkPaX2YOJYBVZ1Uc+1yt+bcCFMAc7Opgw2m5CQHTd4DafyGwccKyKiH8hOmdagMTC9ukATN0VdKDy7rl3yjN/H6oE2aKdeGUwkPc6I3RaERHuzpjvWzqYAtjk2fu+LdoXGZgLMNJZUph5V8i5sPsfi4cuH4anxpPF8Ppml+4tGEIMRdZXBjcFF+gy1oc2vgaQvjxG57Cnm2jtf+vXK3ZRKPyUASH/9Ke6fl0LSQPzZACCdb0Q== X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 20:61VplAn7gt9Av0ISkj7hLQ5U6zrK+puAyLscvKru3um0qpm5l1NMUzJHMEcYY283tBVzyQDC/q2Ncrr9R2ItYgILsq5ldIsz7FjkStEG2bmxLFMCgHUz+q5xaLfZmxzxLWLr8MkeiMihZfgEZ9msAhueJbI5wedDlW4Spkaeb4fbwzppw64mjGiLNGPVIM8CEkcPEVF1wH+CUIq/9wafG/PSl4T9KzGyNtfLTwbg5KW2I2Q3uKd6Q6hT+PelkeLp9vNx0bjsAiw8Cz6Lzzu3SeXLyMZO457yMUquWUsmmY2yqCXiyfMt5SzwOImkNaEijt6s+eynzQOuj72SfMWQtmffMryUL7b1ubGTw3ezL82wFpLBxbOSPPhjkUFxOofVtXsJGP0flR4Kp3Viz6wVZR4wS+aDa6XZHEgTLOTN2mgp95E/IEthA/9YcTBqw82YUbzeWTuRr8moJUn2NrxXN5QeJGnSVSCxh6Q75CS+ZcHjJ3b41FyzVycvT6uRdBqf47ognW8iLyY/8DU4/UyRANCpsCF6xJ6gdrnzm5kyvcFuWQICBwG1fhmmRCgGtnGVJf45HbEmlO7EWl+8dcyfkfeSEjtA80xKnRn95bZs1Uc= X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(108984395545644)(236129657087228)(148574349560750)(158140799945019)(228905959029699); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(5005006)(8121501046)(2017060910075)(10201501046)(93006095)(100000703101)(100105400095)(3002001)(6041248)(20161123555025)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BY2PR07MB2440; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BY2PR07MB2440; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2440; 4:+IQFT7xpJ1m517XI1VZd2krZ0iYHdmDGzvouAqQqm7?= =?us-ascii?Q?Znd7/53j2GmGMytO3X2Lk6otATGbe5YtGxD9fXMlM2dU7aSS1rq58uXrVpsq?= =?us-ascii?Q?tlC/szAzyMzZBBj7HKr72jBOhaZiydJbURYOVmhigz593Q0V9BEAemGvQMWn?= =?us-ascii?Q?/2eOqOqG0/oQ+etSSSpwHzaBdzC9/2snbHd5j46hvBg8XAlyC25yt0J8MDJ6?= =?us-ascii?Q?WQbEuIFy7ow3SDjwJZpTKBfdopMSKXY8cPGhfR5388+yEVTXSwZ4YZOzadfQ?= =?us-ascii?Q?tWaQHQ29JBWwnfunuY3jXGshCGVpqMGKIkipyoVhBJKo2EcRhIimjocs+iK+?= =?us-ascii?Q?1Xt1gIJ2odozZbl8lmZsVLT7XIUEXH1m2jR8nYsCkj3l4YyFddtDIz6ZRmZA?= =?us-ascii?Q?dS8j12Mpjgns8XvX8r5/xioTr9RelJIH9IaKrTA033MFiPD69G4AxpugewcQ?= =?us-ascii?Q?Ma8YFZomc7SBTu3TWdSlvtZlUQBfnjTemZjsKsKkXuoiXdTL/reLFyMArv1E?= =?us-ascii?Q?qcSBgfZXfM7sGdjdCrGzoDAMEm9oAq24yFj9y8e1mHv/Q6PL/TyDD7++TgiA?= =?us-ascii?Q?FSSPlfdSb/nrqo/8STq3RiC2tLBW45FZ6vmN3IML9Azgy0jVQRKhlIKRpEBY?= =?us-ascii?Q?UHijHpIb2eyMwlzYtafBxVwr6loOl8Mfb72SHN6krd1jQk4BZL4TpyFxGKE1?= =?us-ascii?Q?ydi5hN8pPZ+cCRs/SBD4o0RCDv65Z7TSXDsUZ3+B6eTUVZoMZPUt0jbfY+vY?= =?us-ascii?Q?l/MwgTZoP/DPMHTnq8cwELiKtvnkxHrQB+12pKe0b3sm7ApB3SMRFPZKb/Iu?= =?us-ascii?Q?EHSKhumXvdNgv8rxdXjqxw5XYqwoc87b1oYeN1YnGQDWHr2/78rxbjJT0JLU?= =?us-ascii?Q?LDMGC/DrRnur+RO7edrwda/dbbY2bzhoi6HMgUhdNSxkop1+x3RFc0EXedS2?= =?us-ascii?Q?Jr6IiI5Dh+xOBvKfOnfANuduA0E0CWVpev3RePPbbCgnuks9pRqiwJhZ3X6p?= =?us-ascii?Q?yhsUt7+v7pa0v8tnP2Xixkqgv/tM6MdXpmO/KZ4Icb1fwwWT/YmFhGxXTZw8?= =?us-ascii?Q?90IkvLLqeREpsn7BWkiPe8hj9+/mm4Qu/6c+6U6sGfCXA3AQr0zGPOygxo6G?= =?us-ascii?Q?9AmXuO0WuT/CHPtxGNRkgPvFNUJqKjqIumGCk4qpyeN/XE6BP46XEOFDYKmc?= =?us-ascii?Q?Ah7YhsA0FVoIisyDJuBI3Zi5X+j4qrtoZ4vemQiPEN+mUmWlYOdEpetJaYFz?= =?us-ascii?Q?XYJ7ZhV8tceBKVz2Q5p6U9Cp5Z+s9SP+yZDp8RGz92vjSukUwXbVAm7e/Df3?= =?us-ascii?Q?Mv3cGj2SYCCioW9WCuUGcwmflZMsuTLZD1TPnL2iWAcqwVf9DArllq5MFcEd?= =?us-ascii?Q?RcWFXFS+0q1nuitrTGcwCgZoo=3D?= X-Forefront-PRVS: 0368E78B5B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(7370300001)(4630300001)(6009001)(39450400003)(39840400002)(39860400002)(39410400002)(39400400002)(39850400002)(13464003)(2906002)(6246003)(478600001)(2351001)(110136004)(42882006)(2950100002)(6916009)(72206003)(9686003)(38730400002)(53376002)(1076002)(3846002)(25786009)(6116002)(6306002)(8676002)(81166006)(53936002)(23726003)(5660300001)(966005)(55016002)(6666003)(33716001)(83506001)(4326008)(2361001)(229853002)(305945005)(54356999)(50986999)(76176999)(4001350100001)(33656002)(189998001)(42186005)(6496005)(7736002)(7350300001)(66066001)(50466002)(47776003)(18370500001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR07MB2440; H:jerin; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2440; 23:8ybo88G+F/hLiQhgESau7FQ0X5O9mTVy8z0rKbD1A?= =?us-ascii?Q?j5XQ9DTWW1YesW9Lw/QPpYhgzV9BSEmWEXeMsbsybJX4MYN75tARjvH5eaB4?= =?us-ascii?Q?rCsK2PJRLJuSug8nh9p1DwxubYQhtQx7rWgcVE8690rrKGFCaGmmXvUU1cga?= =?us-ascii?Q?jJSlP6dWwHsuPbsec+KB/Ix3k7m3HFpP1g7PrMhzq8MK66lH5Jpt5VD/JB/m?= =?us-ascii?Q?VZ8P8H/jG06FeJJO/yy7vtLoJCTtwIPPRMvB2ccS/UmemfmFXAnX/H1ECqvN?= =?us-ascii?Q?tnttPQWfo5xS63LYWCLc5e9ymsE9nQeZD3PelaaPqYGgIHdziEOGkOEmmGQH?= =?us-ascii?Q?8dXi6Pbqkzq8oBGxKlbTeiDskYkcnuEF9nN1fN5dfBuvy2tltHLTgkZ+yqst?= =?us-ascii?Q?hXU12Fw1iXINEUFEO4ItDtsOOUJdMozSoRvp490I+qRRtfEuJRIp9bKSZIq8?= =?us-ascii?Q?XyXYj21k8140edtrD5/3St/x2x1Ws4Dsf3jVTQHqveHaT+M0Sau5RJg4XAnk?= =?us-ascii?Q?AaSi77Vol7KMFkbpobk/G6Xyv7hEURjprG3R0W6HMr8iyy1QKB6jhbRXo48N?= =?us-ascii?Q?pz579cvIqXytmOG2urWpij1RFWIeMd1TfgzI+EJFDvEiG99zGO/kdsS6hauW?= =?us-ascii?Q?elzIsnU8qUxe9LiiV7Tw1mrm+PCggv3LVvyxVBYepbMWpyGj2d++owr7H7PD?= =?us-ascii?Q?cw41aVC6Tw8LrwsW30Nd6naua5d4Oww7HtK35oV7VGgLF/6GqxqB7U8amuA6?= =?us-ascii?Q?DZGhjkP2ktNZbjtONZNDDIZKIrj5AB3FKelp1rdxovNs/28yiItW76GM5zWh?= =?us-ascii?Q?4eZcy3vyiIcJ8U+J5F18beIy4q25LHmlaJCJWlwLZGOrNZdP8aEzscjmVlL5?= =?us-ascii?Q?Twjdc3BY+igGM4mTugCuIHBsRho8JM516X08EhWeQVM5wn1eFsncR9r9IhPG?= =?us-ascii?Q?Y34skF2TySmW0vASyqOmXpNi+IMuLn/ZVihAT4qFuV3lEnrlXMn+Z9bTG0zV?= =?us-ascii?Q?hEKH3Lp7YBQZBQilCHZrjizvOKkZzwK6TEi7s5eZoIffVgWwEmUpGkG8h5kW?= =?us-ascii?Q?UWrYlcEcmoCFmqRYnlJW4sCtsDZ/1X8QNBq1Q3eRaOOH0o6yrNNn3jMt+gg/?= =?us-ascii?Q?ky80fBBN1oA+pXQJIciFH+1ZhgC0JSKTjM9Ghxy0+XkM63YD1BM+ptTppjhh?= =?us-ascii?Q?jea+yjFDJb2F0VSDsOszvP3SmWsAf+X6KJfc74KTbQPEl8QTwiA4Ydtk17uc?= =?us-ascii?Q?0zQ7yhaPlz+flA0kRWxLYeacAx/FnGZg4cm+nFtWJ415c9ZJcFUd+SSG8gOv?= =?us-ascii?Q?TkLi7uWthUTzvqrbaT+m8hOI5dAuhm5Lmj9/NJ/fV0x7RMcDykATnk517rGU?= =?us-ascii?Q?pAuKg=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR07MB2440; 6:4R3EMBDHZndAfYMvfA4Ibo7XB+BudfVmoW48g1pNZW?= =?us-ascii?Q?bvRLd/hDvVA4q7obg+ICEuvbOkXayNmQfqnQLKLSO925l53a64qvoNqzcuaM?= =?us-ascii?Q?IwvSF61ZvXl219OkhX2dgQMHC8qVl2Q7ncucrfOgpGsjEvQhwP/MvKjr7BGE?= =?us-ascii?Q?4ct0g98E6o3Z1KXK6elE1yYHTw4MwNCPpxgfSXRP3gMlG3lSIHM4WauvssC+?= =?us-ascii?Q?SbQEU3VoIXGaG9LWLu9YarvZ5VnTUjLnWNdEcAc7oFWGlbf4xIxQ6kzigfuE?= =?us-ascii?Q?hHutOLaobHSo130l5xKpjgqtFYoOr9CtI1jg38AEnq9FK2nk20UzMqJw1tBp?= =?us-ascii?Q?OzLyUxTXkb3ze/RaA+F5Z9Cj247Oc5Ufx3tUc6KGCRUjh9/OtBb4U5Hyo5jE?= =?us-ascii?Q?frtIfq0yqOk+moH8MognqcU2coXAj6vFQ3JX7t3jwI/Q8cieUUV5Do9oqLPA?= =?us-ascii?Q?uZzcsX6axkJMSztRMzJix6F5PIr5r/4SeYu4HWgpIcm+G2NLHxGSzSBbnjck?= =?us-ascii?Q?NPQ5r+C12zeTwlBXQNx4x/Qhs8vZjHKhrZByD4Sgvc+bcK/Oy/PH30NSmmXu?= =?us-ascii?Q?r2NbVkzFeTYOWpEPyRU6Cq+RDF65R6gQvBCqo0NrNbw85lY3ob79ZEXf9zOj?= =?us-ascii?Q?mr22ZqTSEucimuqNoy6DyMqMBUJcbISlm7I9WYf/38oYSoM1gGFZPlvl5Kib?= =?us-ascii?Q?CyHebItq4+vaDg0BjYTYvNAfTkV55M2WOymuR3W87nwkGwPej7aMiZE+3H4R?= =?us-ascii?Q?INuw7Yv0log7LSIoPF8EkbPThOHyL8cougMekaVGfqGFIJzx4akokzbH6HfI?= =?us-ascii?Q?0yvPwOdr+bGWvQC8nx1FpsL0JrSiuePVomJ5WTJQ7p+3oM7UVANOx/CFBXhE?= =?us-ascii?Q?P6nNttBM9Zx/xkSGlA/UqBeG4XrubZDfGX2CJ1KKQH0avzm5klOPXkICvx2z?= =?us-ascii?Q?Ba+OfvcEPbWJDZHbVAnTaWXVueQGWcQPrQICVb8I9IyC8iuO/aqEHEM11AN4?= =?us-ascii?Q?c=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 5:2Kz9fYhZGq2R+zInPIgWD6FgyX1MEFIZ0kUBxC/N7P2h6WrFOJVgwwI5SH4MBAFgqkv84rpwtwkeE4vqUwI1EL8uvSp5IexwoHloLp+ERP7pT6YUJ4d/+owcz3zhleZKs7ljrOz4uxbG1VqscMVMsVibIgf7jk/qx3aNc9DzpS2j9bznRaDqWeSWpvHi1aRcZA6Jmf3GLg6x6Kf0ZcKuHsFpOOdQAZ3BC5hleqnLm+GCil0Oa5MGkdbTS2tV3a1LQN78rosIJC09kM7rTUJD0r9igFyxmDTgsCf2JMIZC5RWJNn0gJV0nLg0V4atZYsOive5ti0UljRYIvCyCZ+zMYDEuBsM80KjUqTQ0C/ZeCl5nyqKi0YLJkAdalI5RB2TJ9pBjjCGYLCjh4rA0KhiZef/D399f2tHOi6I3l3YpgsQOUEgdpBP0kznjCKWkCprUhqUhaL+7YxQb0SqA+zYZWu5FWzuZPdxCZbCC5XpJTyYDjqU9L8npcntbpP0P48I; 24:x9lp3SgrGRmADxLH41n2pOitqtJJkd+XtDRp0xxSlAImXHqC1lAXuvj5uCdEVC5mlqMupXzb/UcW7CjFnUpOmcn58hl6RliQkslPTbd/7rQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR07MB2440; 7:MsWdErw5ogRjjWXM9M8v4qMQzU0CoA3aM5z5XN0TZn2ULJbBfIodzoDMpGjlQl7JxmTxrY2zZ3Eohukn0Pr2uDNp+Cfn4vaGJbx5MPpqHYnB33+o61TphfLVXLN+PbUvdKIn6LF/XWwlWLjojxrW8Ojgmfq4NfumcHwvTT2o6vOTZVWJYmwVeSqTveHu8H3yQXOgdVaY9tl8anzaVEMLo9XPT03zJR+6HoLich4npS124HdSInATgg4HMeHuHMeI4HAmIEIJwZYQ733/jXDs19n50g66ethbSdW0+DsY2gMUzu2OYkiS0AubMwDxK4J9vXNHi5zV+C/fWZvIZWfZbm5/5psStW5C5abigpOrKbKZquv3gh+ugAdDvclt94Bo2PoxfV1/Z3s7cu4LMSCupbX1KNfhCkqCo38V+rIEw8LrEId3DJNZUsHUQnExebG3Jnz6mVIO4+XVWXOklLOb5dd/EbFMrHS0rh1kOvZr/X2ktMhmJ4ZBe046vnFK/yJTQHQQLLNV+mZ3Svn0kmd3VKjCAMO/NhHWC5mzIaKwXm8cetP5RFCYRuLQV8kUQlisHBJ+EGaHD6BGz3hKjJZi1HoQYFR914WsdqajMVQoNEHQFg+J8T4DfdeaJhAsmwe+P8+Df9nDpVCJQ6MNNvyk3plJNPxmGam07vyPklJ1YvW7cQMxOiFy0xDQFSb3YbC+T5zJaclj36LmSr5T6SqsTbJeyMXbP2ShUQP9loInC4D+5L98GqE8JWufnK8zgrsKnkUW4MCamdnmb4o0nmS7sBeAt39cjYXuYzl85qPNl4M= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Jul 2017 05:45:25.4101 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BY2PR07MB2440 Subject: Re: [dpdk-dev] [PATCH v3] ether: add support for vtune task tracing 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: Fri, 14 Jul 2017 05:45:35 -0000 -----Original Message----- > Date: Tue, 11 Jul 2017 20:48:06 +0300 > From: ilia.kurakin@intel.com > To: dev@dpdk.org > CC: jerin.jacob@caviumnetworks.com, konstantin.ananyev@intel.com, > keith.wiles@intel.com, dmitry.galanov@intel.com, Ilia Kurakin > > Subject: [PATCH v3] ether: add support for vtune task tracing > X-Mailer: git-send-email 2.7.4 > > From: Ilia Kurakin > > The patch adds tracing of loop iterations that yielded no packets in a DPDK > application. It is using ITT task API: > https://software.intel.com/en-us/node/544206 > > We suppose the flow of using this tracing would assume the user has ITT lib > and header on machine and re-build DPDK with additional make parameters: > > make EXTRA_CFLAGS=-I > EXTRA_LDLIBS="-L -littnotify" > Plenty of checkpatch errors found in the patch. Verify the checkpatch issues with ./devtools/checkpatches.sh I think, this vtune tracing support deserves to added a section in http://dpdk.org/doc/guides/prog_guide/profile_app.html > Signed-off-by: Ilia Kurakin > > --- > > -V2 change: > ITT tasks collection is moved to rx callback > > -V3 change: > rte_ethdev_profile.c created, all profile specific code moved there. > > Added generic profile function > > > config/common_base | 1 + > lib/librte_ether/Makefile | 1 + > lib/librte_ether/rte_ethdev.c | 4 + > lib/librte_ether/rte_ethdev_profile.c | 150 ++++++++++++++++++++++++++++++++++ > lib/librte_ether/rte_ethdev_profile.h | 51 ++++++++++++ > 5 files changed, 207 insertions(+) > create mode 100644 lib/librte_ether/rte_ethdev_profile.c > create mode 100644 lib/librte_ether/rte_ethdev_profile.h > > diff --git a/config/common_base b/config/common_base > index 8ae6e92..dda51db 100644 > --- a/config/common_base > +++ b/config/common_base > @@ -136,6 +136,7 @@ CONFIG_RTE_MAX_QUEUES_PER_PORT=1024 > CONFIG_RTE_LIBRTE_IEEE1588=n > CONFIG_RTE_ETHDEV_QUEUE_STAT_CNTRS=16 > CONFIG_RTE_ETHDEV_RXTX_CALLBACKS=y > +CONFIG_RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS=n > > # > # Turn off Tx preparation stage > diff --git a/lib/librte_ether/Makefile b/lib/librte_ether/Makefile > index 93fdde1..3c86ec6 100644 > --- a/lib/librte_ether/Makefile > +++ b/lib/librte_ether/Makefile > @@ -45,6 +45,7 @@ LIBABIVER := 6 > > SRCS-y += rte_ethdev.c > SRCS-y += rte_flow.c > +SRCS-y += rte_ethdev_profile.c > > # > # Export include files > diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c > index 76179fd..f4ec119 100644 > --- a/lib/librte_ether/rte_ethdev.c > +++ b/lib/librte_ether/rte_ethdev.c > @@ -67,6 +67,7 @@ > > #include "rte_ether.h" > #include "rte_ethdev.h" > +#include "rte_ethdev_profile.h" > > static const char *MZ_RTE_ETH_DEV_DATA = "rte_eth_dev_data"; > struct rte_eth_dev rte_eth_devices[RTE_MAX_ETHPORTS]; > @@ -825,6 +826,9 @@ rte_eth_dev_configure(uint8_t port_id, uint16_t nb_rx_q, uint16_t nb_tx_q, > return diag; > } > > + /* See rte_ethdev_profile.h to find comments on code below. */ > + rte_eth_rx_profile_init(port_id, dev); I prefer to change to rte_eth_profile_rx_init for better name space. > + > return 0; > } > > diff --git a/lib/librte_ether/rte_ethdev_profile.c b/lib/librte_ether/rte_ethdev_profile.c > new file mode 100644 > index 0000000..029fbba > --- /dev/null > +++ b/lib/librte_ether/rte_ethdev_profile.c > @@ -0,0 +1,150 @@ > +/*- > + * BSD LICENSE > + * > + * Copyright(c) 2010-2017 Intel Corporation. All rights reserved. > + * All rights reserved. > + * > + * Redistribution and use in source and binary forms, with or without > + * modification, are permitted provided that the following conditions > + * are met: > + * > + * * Redistributions of source code must retain the above copyright > + * notice, this list of conditions and the following disclaimer. > + * * Redistributions in binary form must reproduce the above copyright > + * notice, this list of conditions and the following disclaimer in > + * the documentation and/or other materials provided with the > + * distribution. > + * * Neither the name of Intel Corporation nor the names of its > + * contributors may be used to endorse or promote products derived > + * from this software without specific prior written permission. > + * > + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS > + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT > + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR > + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT > + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE > + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. > + */ > + > +#include "rte_ethdev_profile.h" > + > +/** > + * This conditional block is responsible for RX queues profiling using the > + * Instrumentation and Tracing Technology (ITT) API, employed by the > + * Intel VTune TM Amplifier. > + */ > +#ifdef RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS > + > +#include Shouldn't the rte_config.h moved up to bring RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS definition. > +#include > + > +#define ITT_MAX_NAME_LEN (100) > + > +/** > + * Auxiliary ITT structure belonging to port and using to: > + * - track queue state to determine whether it is wasting loop iterations > + * - begin or end ITT task using task domain and name > + */ > +struct rte_eth_itt_aux_data { > + /** > + * ITT domains for each queue. > + */ > + __itt_domain *wasted_iter_domains[RTE_MAX_QUEUES_PER_PORT]; > + /** > + * ITT task names for each queue. > + */ > + __itt_string_handle *wasted_iter_handles[RTE_MAX_QUEUES_PER_PORT]; > + /** > + * Flags indicating the queues state. Possible values: > + * 1 - queue is wasting iterations, 0 - otherwise. > + */ > + uint8_t queue_is_wasting_iters[RTE_MAX_QUEUES_PER_PORT]; > +}; > + > +/** > + * The pool of *rte_eth_itt_aux_data* structures. > + */ > +struct rte_eth_itt_aux_data itt_aux_data[RTE_MAX_ETHPORTS]; > + > + > +/** > + * This callback function manages ITT tasks collection on given port and queue. > + * It must be registered with rte_eth_add_rx_callback() to be called from > + * rte_eth_rx_burst(). To find more comments see rte_rx_callback_fn function > + * type declaration. > + */ > +static uint16_t > +collect_itt_rx_burst_cb(uint8_t port_id, uint16_t queue_id, > + __rte_unused struct rte_mbuf *pkts[], uint16_t nb_pkts, > + __rte_unused uint16_t max_pkts, __rte_unused void *user_param) > +{ > + if (unlikely(nb_pkts == 0)) { > + if (!itt_aux_data[port_id].queue_is_wasting_iters[queue_id]) { > + __itt_task_begin( > + itt_aux_data[port_id].wasted_iter_domains[queue_id], > + __itt_null, __itt_null, > + itt_aux_data[port_id].wasted_iter_handles[queue_id]); > + itt_aux_data[port_id].queue_is_wasting_iters[queue_id] = 1; > + } > + } else { > + if (unlikely(itt_aux_data[port_id].queue_is_wasting_iters[queue_id])) { > + __itt_task_end( > + itt_aux_data[port_id].wasted_iter_domains[queue_id]); > + itt_aux_data[port_id].queue_is_wasting_iters[queue_id] = 0; > + } > + } > + return nb_pkts; > +} > + > +/** > + * Initialization of rte_eth_itt_aux_data for a given port. > + * This function must be invoked when ethernet device is being configured. > + * Result will be stored in the global array *itt_aux_data*. > + * > + * @param port_id > + * The port identifier of the Ethernet device. > + * @param port_name > + * The name of the Ethernet device. > + * @param rx_queue_num > + * The number of RX queues on specified port. > + */ > +static inline void > +rte_eth_init_itt(uint8_t port_id, char *port_name, uint8_t rx_queue_num) > +{ > + uint16_t q_id; > + for (q_id = 0; q_id < rx_queue_num; ++q_id) { > + char domain_name[ITT_MAX_NAME_LEN]; > + snprintf(domain_name, sizeof(domain_name), > + "RXBurst.WastedIterations.Port_%s.Queue_%d", > + port_name, q_id); > + itt_aux_data[port_id].wasted_iter_domains[q_id] > + = __itt_domain_create(domain_name); > + > + char task_name[ITT_MAX_NAME_LEN]; > + snprintf(task_name, sizeof(task_name), > + "port id: %d; queue id: %d", > + port_id, q_id); > + itt_aux_data[port_id].wasted_iter_handles[q_id] > + = __itt_string_handle_create(task_name); > + > + itt_aux_data[port_id].queue_is_wasting_iters[q_id] = 0; > + > + rte_eth_add_rx_callback( > + port_id, q_id, collect_itt_rx_burst_cb, NULL); > + } > +} > +#endif /* RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS */ > + > +void > +rte_eth_rx_profile_init(__rte_unused uint8_t port_id, > + __rte_unused struct rte_eth_dev *dev) > +{ > +#ifdef RTE_ETHDEV_PROFILE_ITT_WASTED_RX_ITERATIONS > + rte_eth_init_itt(port_id, dev->data->name, dev->data->nb_rx_queues); You may not need to start with rte_ for location functions and i think, it is better to reference rx in this function name.