From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM02-CY1-obe.outbound.protection.outlook.com (mail-cys01nam02on0075.outbound.protection.outlook.com [104.47.37.75]) by dpdk.org (Postfix) with ESMTP id 636622B84 for ; Tue, 4 Jul 2017 14:33:39 +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=2XcJbceFz4ihf88lZfA6q0m32CKB644rqsj5dhBk2us=; b=KjbPcw5Bw+O86Lp6a2DitjbcbmpTi07WEIHPHz5oUl8NIo/6ewb0Q0KgKdNvCmRCVmX8JUX4S37wWDmxy6A1RCzsNerH0NbYQy6iW2zhlSwoZe9WzGF6XtWkiU6XG77PZUGnPhMPGVt+S5o+Te/4jvOk1z/LSGILcviEs5/oGM0= Authentication-Results: caviumnetworks.com; dkim=none (message not signed) header.d=none;caviumnetworks.com; dmarc=none action=none header.from=caviumnetworks.com; Received: from [192.168.1.101] (106.209.135.7) by BN6PR07MB3089.namprd07.prod.outlook.com (10.172.105.7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1220.11; Tue, 4 Jul 2017 12:33:36 +0000 To: Olivier Matz References: <20170601080559.10684-1-santosh.shukla@caviumnetworks.com> <20170601080559.10684-2-santosh.shukla@caviumnetworks.com> <20170630161254.36730e2a@platinum> Cc: dev@dpdk.org, hemant.agrawal@nxp.com, jerin.jacob@caviumnetworks.com From: santosh Message-ID: Date: Tue, 4 Jul 2017 18:03:20 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1 MIME-Version: 1.0 In-Reply-To: <20170630161254.36730e2a@platinum> Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 7bit X-Originating-IP: [106.209.135.7] X-ClientProxiedBy: PN1PR01CA0081.INDPRD01.PROD.OUTLOOK.COM (10.174.144.149) To BN6PR07MB3089.namprd07.prod.outlook.com (10.172.105.7) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 7bbb0ab9-347a-41ac-3c74-08d4c2d8e505 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:BN6PR07MB3089; X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 3:OWQGPKp5+k771oRlKD9XleWxzURhpL+JgJ+3MAh+poVtyvlnSFn9EPbDqUKMDDvKhPYWWbQbsoaONqeL7wfhLlGW3sQIw7jV6ZQhwBVQNmQlSqpPnQoyAUfy87LZ8+fNbb8B7qtrcvl1EL17jS/1JMeNrW6waUqsb/IB8shDFNNRJIMe0Hp8+1yS2jf4RnN3ylzwT4ZxzUb3tw0f1fDPvm3vcRbNWANYFSpYRR5wzD7FyZtcXm3rxJTHpt+jszylwqY2b1zr9B7Tat9rg8kFWwTf7v+MU0qwhT7LgJI58Pt+5VSSKH/NVF5LPfghc9zaPS3Z3kHazUMLZSUQ3un4zefc7CeigQrGyFeGdr3gbQAWWAHCnWRsbpOxnFIdERNF4PuDhGx26uzfGH5rNpEBnoA+1f0TsBnz3GumuI1s2D7LHj27exS2igV1VpQNuCfkvIZT3J3yBEj2AtSjIsskD3Zh3/2bEvNNac7oXHDVoznctKGQJ3w50MGwmkTaUY+oVTh7hQC1gSftCScT28YWQwT1vylRCdRZjHOAMyCT44m5TViB30uVFiw7vaed3LiyJNoKZ3F8DdU7kNAGgd3E0zUGykLYUqRVZTaOmIVQrb5H2k57+/MyxVUT2IG4R+3avHZnTHjyvyafmBRsN4erje6+KcjgI9nBXujcr4nF3ejLTK0lNQStH0GZ/dVMmo1itma91NEz+xUgo0opNADqTBGW4CpzvHkZL9y1yxesu208CbFBt56sfTzPQbj2kFpI X-MS-TrafficTypeDiagnostic: BN6PR07MB3089: X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 25:UJinvAjQFSWQKVPHZ6mAO+2FsPT78oy+9507OM79KNUva8ALvoeaCIJdWn//G5SC9ClM5NoOuyxOIx5cbTgYZbFq4H8xuc9KzXttMK+jJdhvzKmCm6RBTUOotIaHC9cEzU+I1n4Ouw30kPixHoUu1D33PLcjHTHEKCBc7QOHlfgrZ5nBm0UlpDsXfGCE2R3VlJQP6E6/BmxuEQyYGg2NFR2tTX+4zYVnrGA6iJqNEUNF80OlA8KIROndGqAeSbEh1MzfDogCZDcPgU8VVq7hj/LHtSFl3nXwY6GTevnvQYB6FUL/bM8jOdo8dhpoC9BmZ9eiS2BNUghNVxWRydfxI+4UL6H3FImP7FRDc7+OMnbnOUiYXB2k7soV6HYWUfkss9osrhX1BjJgDQMPkeJ5rV2Vq0YOukp9Y26mX+H34bEqLHqf4rH3rxd0r241BAoIhgomyaps8d0+X8Cw3B2klu08pz8ckYI6Dn3e/IbDI+mOiOkBmpHtuD/bPb6TCHV5gddiAqAYcYwJG2QBz8FS8ps2GWAswDEdqNPLmfPc9ag7LNmcG6/9pdZWJcb/1/V8SYE1Mi9odG9Wy2BStOFQ74XMvFSY/0EREiLzlVSGPgzdYTthNCaURKpVinJCxxW+NG5+WOFiy/12LoDd7IIM94VlFoYDAX3P+aux3yCyQSUd9Y/g+KZxqh71D795vo1D/1xtR4FZmB7eV5Sj02nnT6FOGcf99QfCvBRWRFYxXS7HGPi06Y8NVIl+icz7HQB+OC0NrKpqDAe8FoGIhcw1UM83QOJzvUbfy7stJInjx8oVXsbuxYVPK5jMhxh1XdVXAdSG90sAHwINOSMpLR9aFEevtADJTCEdeOoRB7/3658Ahwzn/kqv/TwB1jQj693g9MT00TrWtaM/Gs/hwV68A7pqg7nC4Uq1Y/bM9ud4FiM= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 31:qhNpGOffpbEcbTVTjy2zQ0IKwHU5QuFt2tdHGuTCGKMqo9FxWKIfnHkkrII54i5i2XrHo9kquZ9a/3ARuOSnumc/r9AEuS8d/03NLwLw32kpFzu7D46FJV7CuL/o4BBezn0oWCHjh+gn/Z60ylPBxMkamGMWwD+sH/KmQBMvlthhEwKKuA4glktGrPMh9PiaPxK+MAhnd6OTdKf5EQXCN33quBJC4jUthZZelqsB84VHKmBD2YAsadURhME+9skWhMo747+neBLckR95Cgw1f4tdANNCmgea77f8ODDqUaUVdVAgQ4mUreh4YMBD/PPGao9A1CfgwOAykNSqbdUh/LXNWbaElHrpc7vQJZ6U4frJjyXyIe5dYh/qI/W5LrCtF+N1CnQ1irir1rvtMUQto6+j6EqxoQipF7xSUI+xp94yzPVUw2AsItM7pmHllSOTRko4Ng8ON1ILjNI0lu9OJnO5SDoAI84cQ2VYQkOOGuXOh5H14VRDmQKCTeN8k65HnWycNHUsLDRjmS9eG/e89OEF+qWeImOUQTFDSE4s1fVutb4wT4YHRUEptriPMXTOgiL+9mKfzM8vS8TEJJi9wjly8M+hOAXYvmQX01jBZv/tbd2EaQW4nm9PgCc0km4ummUiHpiEXvktb+/scjH5mddzX/3KWl1KAWCSg/jDl1s= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 20:40m9+bMfaxm9NM3aLqgB1yOyuDH1/QnfzbzSKm2fPR8322G2jpPh3U+wT1fumKcuHKLVt44OUw7gTJC2YhnJiA88lMAD1TUxtL6EerQyFMH+9s+wU6jol6F1QkjmrbtfT3hhXE14TNC8bHXoMIwGhT9Ce4FY0zPte3L0nmVmb8gTphvr5e8fpwhCci7EqlpRmgZrpXzfxsq+GMVxIeUjcASA7jzD2y9vsMWojmR+yixIt7enS29b2g/Tfu2clz8lS0Yq2hLQ4ayJa20H5caMPWiqZi7ytVxinQgau26TmUBfsjzEKx94FSgOkwCjbj5t8MYONteTEi7D1K8A1qbGFKGER+fuM4Y9CWyO4hZhz9GxLiZZzU2s31bS1+9mnb/giZcfdAZXMflckmIfZCgkmD27cP99WtuKhGZR7YLt0IEIIcvgIjYOoaBXXKMxQpfVmA1eq2BSLSQOifXVGYBjxaegcdHhFJMbVRIn43EdyYWNIYyPqYA9irT4PQWHoIqF7Ul/862qzVmELvMdfU1xXJuN7boOeckAr6Ag/kILeG6JWRYE9GnCWvdaOsJ4bfgjmzds8rdQpRdH0/y4Lyw+qQ2zMit0TlFd+svZf1QmRJo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(148574349560750)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(100000703101)(100105400095)(10201501046)(3002001)(93006095)(6041248)(20161123558100)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123560025)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN6PR07MB3089; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN6PR07MB3089; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3089; 4:0Gci4W2rIGVpxYfdgGHTWW6SLG+yjA/YWa4c4n?= =?Windows-1252?Q?Gm7VaU20IFW2baeztEge9qHs9vb8Zxm6qZaUDAsM3GiF+OmaMtlifrIc?= =?Windows-1252?Q?L+izgyF+dKhPmbsmxIf7+VzVTQCaqaZpOVY/l9N8PWtZ1zbGXtgOF/4v?= =?Windows-1252?Q?6frcUIQM5r4PBv3w2LPqdJEPWhUPawXWEx+AKX6KfZas2CgoZC6b/d60?= =?Windows-1252?Q?OR9r/Lg+uTUvKbf5Uut7CYvBYhYS17CN6Rlt4cvmGGjXBjcutjOWfbpp?= =?Windows-1252?Q?YP38ZHQ8zXa3XeH3joAUHsqpjEnHmY5mNCZjQOupRycALubaiTlWWxNk?= =?Windows-1252?Q?nZG8ttTeE7SLo5Arux7POWyoQaGllU14gpUCZ6+sYCQ/Qxhno6xuPz8A?= =?Windows-1252?Q?my5Z8YpEc3X0FDIp/CogObLBec4ankUfrvORc3mO7bWn0KH0py/UM0S7?= =?Windows-1252?Q?VJ3KHfDy+wqK0IPs7fnF+loXhnCEUGJSCKDBDBCkTRvrZX9fQ14V4bc1?= =?Windows-1252?Q?jFw/wEC8gJDk54dO7HHw+IHyMOybMhxMfwRY8ytgp3XsbTTFXpXhOoNO?= =?Windows-1252?Q?5rmXo21kVYZLwpU+BCXfeFjPykuz0BG2329LYVuMdT9+xhj/99WXkDrb?= =?Windows-1252?Q?HdvLHyyD0Z5kFWTh7XniPcTK8SRoPZT8GDRGDgVss/6p9s0iuzJX10+D?= =?Windows-1252?Q?WX+UOHn8On1F+DghB7gxrMfE98/iApdj4G+g2P/UqmbXpmiYWWAdngxv?= =?Windows-1252?Q?Z1DZ7XAnHVRAlTXby2PQ4+8xUq8jSM1yXsfG/WIKKnv86zvpHtssZg8k?= =?Windows-1252?Q?Jg0EtQOwQCOaQTYh6rM3D96r61Ybc7Uu43XdLnuRKAk7SDAYTC0JfeuU?= =?Windows-1252?Q?CEtBDR0MF6AYsfEBpm5elBa9/CFhTW+DFDriE7r9vntQdIB4Hydy5+e1?= =?Windows-1252?Q?3KX7928BJmAfoNgNl5aZMTvVM7eXmuQGzw933WntolO9XD2LqRRq1Lt7?= =?Windows-1252?Q?hF/wL7xuBZtAjRARwv7MfL5XR+N04seiMRZ68tqpGyjP/kCjp32E6hyh?= =?Windows-1252?Q?q2Ol5io2E3VckpQhstKYIlON/CTDjd+uQUvOa+raNSi/Yz9hUSg2Ez3/?= =?Windows-1252?Q?jayCH2431eiSpcNLiP5a9DR2z5hWONcZFHCk++nv+hrKNZwaNRkF9d7T?= =?Windows-1252?Q?W3D9jCB2KGQm/NrLwQsAxZxSelx/7G2q8ouRjPTBUGJK98iVvnj6y6Rf?= =?Windows-1252?Q?oRor+She7w96AYyryW/sCX1OhMvNg9d/cUPICqmaHiuyccNtDj32Yoq0?= =?Windows-1252?Q?9sKdnm9UGB/W/K1WPGcHAXCRYcaSQ+1gOcb4QdtYYPcJDHT0mKifPTWL?= =?Windows-1252?Q?H5qw4ZREG/?= X-Forefront-PRVS: 0358535363 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(6049001)(39840400002)(39450400003)(39410400002)(39400400002)(39850400002)(377454003)(24454002)(50986999)(478600001)(54356999)(76176999)(72206003)(65826007)(66066001)(23746002)(86152003)(8656002)(4001350100001)(50466002)(2906002)(3846002)(6116002)(5009440100003)(5660300001)(230700001)(7736002)(38730400002)(31686004)(4326008)(6916009)(6666003)(110136004)(107886003)(53936002)(42882006)(8676002)(81166006)(189998001)(42186005)(305945005)(2950100002)(33646002)(36756003)(117156002)(47776003)(25786009)(31696002)(575784001)(6486002)(229853002)(77096006)(6246003); DIR:OUT; SFP:1101; SCL:1; SRVR:BN6PR07MB3089; H:[192.168.1.101]; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3089; 23:3qTUJ3OE0QSgKSSuTIsGo3Kp/YGQjGiVxPh8N?= =?Windows-1252?Q?dYoetuLCq4JLzmvatnUoYMD1TGA6ZR8e1oAl2yyBGAqIqZ7tOLotTMaP?= =?Windows-1252?Q?WTJiOzL5M0TgoTqPQYdLjwilYp3ZdgBeCQqjVdJ9ju6cf+mFOXTRKUQI?= =?Windows-1252?Q?JTe1PIMK91M/MeiXWLrvFHOhUhtoMEVZbIVDi43nGhiJI6NfOnLZgcrp?= =?Windows-1252?Q?ylNJbE3l/qnGGv3f9THqkyjdAyObajKvW2lW4b/JZ65qx7dVc+odBnkn?= =?Windows-1252?Q?3tp7oziZ8AFi329qfL5WGNQ9Yy9VGscY5qlmuxCKdTpRLzaNC0t1Mjef?= =?Windows-1252?Q?bRJQ+e0t7C73apod1RT3/X1WNqxwshFKj40qPEhgs8YoSD0VmyEJpdUF?= =?Windows-1252?Q?FQquEiDALX6fnxZdBFyhfZkxxFELLW19KOnSRXMzWgOrvwaZhWimUd6T?= =?Windows-1252?Q?ciknVyaUgt0Dd13+q5LWiMdd0jFhn4FtPSeuLyt7rSvN+ZkYnn5vYd28?= =?Windows-1252?Q?X6YXq+AdAu+UEuvaAHTUo398UKDQBdRaSJtIAx+xnCNpFkKoPlaDoHr8?= =?Windows-1252?Q?m7iCWVZViyUibLcuOsPFLOecc+WdmWuoMtEnZ1rQNtVd3bC/rpN6az//?= =?Windows-1252?Q?3oa5CNTWaBAm3hhlGd6D+Cf8bZ8lq4lxal4t4nH2uqGDk3E8RsosSLfS?= =?Windows-1252?Q?J0XWFEHl+PA5XtvhgiaSBD2VQVIsxhMDzz6BPyKkXkr3fwNOYYn2inFx?= =?Windows-1252?Q?KQmI/pZo8OvOXRNq1E5NyE8Ys7fDi8HhdR/bPaGpF0y7umSdZmOxv6EQ?= =?Windows-1252?Q?YyRgF38bV6UUHlOcpoR90NNKwViqUedGjr0UJh3HCBwb9rnpsxqLUCco?= =?Windows-1252?Q?SxsfY6TM2P3IrUvVVhNWIV93mpVUz0f+BlE9OPcyogqGRYMsVo6/Ha4j?= =?Windows-1252?Q?+MUN4CCh2lNDqVhjYsadXe++RtvqyhD0gZHKxIjpTzi4M3RZCDWTOjaT?= =?Windows-1252?Q?RAC5WtJ6EELLF6AoVzn7ntxuydNtdWsFovgPgZxvrZ12nqAqLUGMa2OK?= =?Windows-1252?Q?hMj2alcqPhYMbVLA2dJXN89OHST/jdLi3CcP2jy9tktmzBcSUkNk1/Qi?= =?Windows-1252?Q?p93gw8C6C+Igo+qcZmb2cb2WOSjpmwJfdYvB3EZ45eL2DhGaAr+G9QEN?= =?Windows-1252?Q?Z4MTZ95gshsnRqxomcrhn0PgV/UxIyCAgTxw7VoAApIzCC2qE/4yAdro?= =?Windows-1252?Q?qNJHAJ4DUInfaUpgINzAhCDwFHPncznc8Clw4GdEgNzpWlw39PPb6N0p?= =?Windows-1252?Q?cNfoq64OAhgTFU/EQG7aVhmGrY86f3/CLNf4lMCm5Rj3OPPCMntezGIH?= =?Windows-1252?Q?sIAsfa0kfAzcZpjA4FMYdYZNPJeFgz5g2+jq/muaRma+z2GKFKPKzoZS?= =?Windows-1252?Q?RnvCJPqcQ5HO1MyDrXjIgeMRWl8XNLDPMCPmOUxKA=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?Windows-1252?Q?1; BN6PR07MB3089; 6:jHQwfV0egzBGQN44JvqiFPUWBVnFRVWuEmFu+e?= =?Windows-1252?Q?GB0QWUhJl13PkEoAgvphT7ALaSEqGw4EWphPpq/K85jAa/5fpn7SYstY?= =?Windows-1252?Q?bUOgr2ykx3251z5kjsXpHevJKxOgs6/e3IY2WbLEJeFa4tkMaPo3m0m3?= =?Windows-1252?Q?ZfRDxqxG6DpARdTQ8WcGURpMwI6WHeTieK2SvUJZJ+KWz1FEYvJLjqW/?= =?Windows-1252?Q?RpQqZzcrM5aHMgESfq6RHajShRBFQBv5IIl1RNpkYmzf3fc6AbRFtGpV?= =?Windows-1252?Q?ThXqNu1IfDCCRQgdYEarsri0lpQoDYcP0ESOzmh0y2pD/bifyE8DMZr8?= =?Windows-1252?Q?/9jrYqUE0ZqrgtNn1ik8iBO44lWQGhnHAJlKIOwb3OmtwSKy0+3M4CLE?= =?Windows-1252?Q?/1fJCxJV6GceMVxdxxXNAk5vtfphagGvvdsl2c98oCpxVFWh/MK9fLnT?= =?Windows-1252?Q?Ak8m14o6xxCNfjfKhAXdWbxFCJOR4WFwQ2EqoizWs5qOwMxlz7SiIj/7?= =?Windows-1252?Q?rJJ4KrfSHRbmff+0QZcqBMi8Zw6pnCsS3VQeZyuf/hKlhgz8BHnfmnf9?= =?Windows-1252?Q?LfEIENF3wfXzHY9zC3rt6cIdwGPa4ihRSHXHAe6PVxYjF7dW8WbT8Gej?= =?Windows-1252?Q?RdmCQ4BGs270gFt/lGgkE7p11qz3jbyf1m4Ts5QrMRGOLn+kc+FvIXcv?= =?Windows-1252?Q?Ko8Y5IT0o5zU3buKst6/0ex4BQY1PaOs6BR2p4n+68inD7osK04Aw+f9?= =?Windows-1252?Q?UezIz/5z7/v5NTe3NJEHTtg0UGTRVBACOxy7rqXMvu8gp6ocy2YdGdnr?= =?Windows-1252?Q?/D0GtLlsVid4gtgNeBBO3fClE50AoDXDsft6G1AKP/ixFNS4RNLAW8Lh?= =?Windows-1252?Q?m0jEve8DfXPS+IZuf8LEAy7FPR5MoRfBq2+zXYCVi5fHDuchXtUvuqGB?= =?Windows-1252?Q?8AwVpP+enthzk428f6CIpknHdClxn8IIDOQYNfLfE/2OjduqA0ZrJ+kt?= =?Windows-1252?Q?OkXiBiT0paMLxT0mRaIef4Gf3ZAl8vvNSEAsDx98JwOBFnCiOTFDDUom?= =?Windows-1252?Q?nvL5SbuNrBiII=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 5:m9I031NuXlQOoyuYxzOpQ7u0dvkx/5NkDAvGuJOw03xLCM7CkYGlo/MswQa9QhRFHEnyDwOYGxNSVbUjrQE+Z2BNsUtzKfDmEk3D3xK+PljP8VMq7yu3b/swcqIF7dGQEgF7G2V8IS3LqBmzqDZMuaizwDtxNjDm/Gqapmd2w8sP49Om3cGJCgNiU/brOealOPaC7s8FHZZayXAvhqawpKSr2p0IEjimd4KTkbk6k2XR5oRdHqnO5yTP1aZQevrYc+QBHiyz81O3P6AERvYiLwCsHl3xZLdENZ6v1e23LMJI0uFc15ogIP+Mu27x+nwQlC7moNz6ZLwi3qQBoPBUT2fqKLeJT9eMlf5+bXz0dp9TlmzNks317wJHF7S1XYR+3L34w6PW9U6OwjZjbZD9HuMgaEmGpNfdyFc3IL0nZRQbmwK47/5T102VZZ75IipuIeQvn31wQugmZs9kGnciEziX+aquqQPGxG2j2QGoPU3f+D/Cm7OKTBHy3aNnJkTK; 24:g73+sEX3qAiuAGlOhbVKi0eIKWGwHA10Fl7aHpYIiRvstDoMJLGatIJU9Ztj2rWRI6m4HfQN5xz5hTXy/yX3jCqvols9EM0eRdDNVb1BkAc= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN6PR07MB3089; 7:2fPt1mCquRiLZNa6pQwR+g0ySgtAK2Ednk6sWYH0IvgRenndLYRXGDEiPm4obm+RCO8YN7ifYaWwGekiTUbj10N5SQ9Rs4P9l/Vh2xfoaReGifPerGGTewrLTrUQYpxVcmxBvi542sKvrSCCx4zTY/YbvErzPzfycQS1S8C9MfaF5Xu/J9WIwMT678V0Gm9vzpBa+sI+aRqP4uX/8TtyIbkrPUAmaCH4QUWqIRrlom8FGe4ZgEAQi95WWyQ2SfezyjQDfS7kGs7vILSO4xlmTi+DN5UxvWb93KNcrtISH4etUM9pZRgZCZP8QCYTpd/9hm9zdrbNW4qbBiVbm22NPtXTh4uAC0pgihrD8xiPc0ZeahM7B0c10sUSeAOszHUDk7ANMKaXsGi0rN/3uqtXolYAGjITnM3S7VMKMkarwe6ivjfDW5bBuNf/4lr4TDlZnHcIUCJy1lGpDVElWxA4m6aCleiRgzhrnx+EhZYiwpLl788smLg8eHdgod2w4O2RBji+M6mg3ePqwlDT7wLkAY2yCCCXsuj1jPOzWon0Vd4mMSdTHPn8Jdsx+wHB/K1Y8Htpa3kN56JQsYXDPyjm382F6v1UC/9HuCvtSMLYs+Mfk6IUsXfuq4lfyFKr4iXalxp4+znGitmnvrV4gIi8o+/tjga8GasyNcc1GdPc0ugvRndvXgxN8Dfrsm9TFmCJzzZLYU9Aj9+EEAwArPHThFqUDsucEXanZ/ge5mQcfBCi1zLlNcdpfA3xYPirMsy3HKqB4xW1kJDY58w8FyiCfP5T9US+mUOPuLiGAG30iOo= X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Jul 2017 12:33:36.0413 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN6PR07MB3089 Subject: Re: [dpdk-dev] [PATCH 1/2] eal: Introducing option to set mempool handle X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 04 Jul 2017 12:33:40 -0000 Hi Olivier, On Friday 30 June 2017 07:42 PM, Olivier Matz wrote: > Hi Santosh, > > On Thu, 1 Jun 2017 13:35:58 +0530, Santosh Shukla wrote: >> Platform can have external PCI cards like Intel 40G card and >> Integrated NIC like OcteoTX. Where both NIC has their >> preferred pool handle. Example: Intel 40G NIC preferred pool >> is ring_mp_mc and OcteonTX preferred pool handle would be >> ext-mempool's handle named 'octeontx-fpavf'. >> >> There is no way that either of NIC's could use their choice >> of mempool handle. >> >> Because Currently mempool handle programmed in static way i.e. >> User has to set pool handle name in CONFIG_RTE_MEMPOOL_OPS_DEFAULT='' >> >> So introducing eal option --pkt-mempool="". >> >> Signed-off-by: Santosh Shukla >> --- >> lib/librte_eal/bsdapp/eal/eal.c | 9 +++++++ >> lib/librte_eal/bsdapp/eal/rte_eal_version.map | 7 +++++ >> lib/librte_eal/common/eal_common_options.c | 3 +++ >> lib/librte_eal/common/eal_internal_cfg.h | 2 ++ >> lib/librte_eal/common/eal_options.h | 2 ++ >> lib/librte_eal/common/include/rte_eal.h | 9 +++++++ >> lib/librte_eal/linuxapp/eal/eal.c | 36 +++++++++++++++++++++++++ >> lib/librte_eal/linuxapp/eal/rte_eal_version.map | 7 +++++ >> lib/librte_mbuf/rte_mbuf.c | 8 ++++-- >> 9 files changed, 81 insertions(+), 2 deletions(-) >> >> diff --git a/lib/librte_eal/bsdapp/eal/eal.c b/lib/librte_eal/bsdapp/eal/eal.c >> index 05f0c1f90..7d8824707 100644 >> --- a/lib/librte_eal/bsdapp/eal/eal.c >> +++ b/lib/librte_eal/bsdapp/eal/eal.c >> @@ -113,6 +113,15 @@ struct internal_config internal_config; >> /* used by rte_rdtsc() */ >> int rte_cycles_vmware_tsc_map; >> >> +char *__rte_unused > why __rte_unused? > I'll also add a const ok. >> +rte_eal_get_mp_name(void) > I suggest rte_eal_mbuf_default_mempool_ops() > It's longer but it shows it's only about mbufs, and it is consistent > with the #define. > no strong opinion. In v2. >> +{ >> + if (internal_config.mp_name[0] == 0x0) >> + return NULL; >> + else >> + return internal_config.mp_name; >> +} >> + > Would returning RTE_MBUF_DEFAULT_MEMPOOL_OPS instead of NULL > make sense? > ok. >> /* Return a pointer to the configuration structure */ >> struct rte_config * >> rte_eal_get_configuration(void) >> diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map b/lib/librte_eal/bsdapp/eal/rte_eal_version.map >> index 2e48a7366..a1e9ad95f 100644 >> --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map >> +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map >> @@ -193,3 +193,10 @@ DPDK_17.05 { >> vfio_get_group_no; >> >> } DPDK_17.02; >> + >> +DPDK_17.08 { >> + global: >> + >> + rte_eal_get_mp_name; >> + >> +} DPDK_17.05; >> diff --git a/lib/librte_eal/common/eal_common_options.c b/lib/librte_eal/common/eal_common_options.c >> index f470195f3..1c147a696 100644 >> --- a/lib/librte_eal/common/eal_common_options.c >> +++ b/lib/librte_eal/common/eal_common_options.c >> @@ -95,6 +95,7 @@ eal_long_options[] = { >> {OPT_VFIO_INTR, 1, NULL, OPT_VFIO_INTR_NUM }, >> {OPT_VMWARE_TSC_MAP, 0, NULL, OPT_VMWARE_TSC_MAP_NUM }, >> {OPT_XEN_DOM0, 0, NULL, OPT_XEN_DOM0_NUM }, >> + {OPT_PKT_MEMPOOL, 1, NULL, OPT_PKT_MEMPOOL_NUM }, >> {0, 0, NULL, 0 } >> }; >> >> @@ -161,6 +162,7 @@ eal_reset_internal_config(struct internal_config *internal_cfg) >> #endif >> internal_cfg->vmware_tsc_map = 0; >> internal_cfg->create_uio_dev = 0; >> + memset(&internal_cfg->mp_name[0], 0x0, MAX_POOL_NAME_LEN); >> } >> >> static int > Or it could be initialized to RTE_MBUF_DEFAULT_MEMPOOL_OPS here? even better, ok. >> @@ -1083,5 +1085,6 @@ eal_common_usage(void) >> " --"OPT_NO_PCI" Disable PCI\n" >> " --"OPT_NO_HPET" Disable HPET\n" >> " --"OPT_NO_SHCONF" No shared config (mmap'd files)\n" >> + " --"OPT_PKT_MEMPOOL" Use pool name as mempool for port\n" >> "\n", RTE_MAX_LCORE); >> } >> diff --git a/lib/librte_eal/common/eal_internal_cfg.h b/lib/librte_eal/common/eal_internal_cfg.h >> index 7b7e8c887..b8fedd2e6 100644 >> --- a/lib/librte_eal/common/eal_internal_cfg.h >> +++ b/lib/librte_eal/common/eal_internal_cfg.h >> @@ -43,6 +43,7 @@ >> #include >> >> #define MAX_HUGEPAGE_SIZES 3 /**< support up to 3 page sizes */ >> +#define MAX_POOL_NAME_LEN 256 /**< Max len of a pool name */ >> >> /* >> * internal configuration structure for the number, size and > Shouldn't we have the same length than RTE_MEMPOOL_OPS_NAMESIZE? > I think we should try to avoid introducing new defines without > RTE_ prefix. > ok. Hoping that future pool_handle name don't cross >32 limit. >> @@ -84,6 +85,7 @@ struct internal_config { >> const char *hugepage_dir; /**< specific hugetlbfs directory to use */ >> >> unsigned num_hugepage_sizes; /**< how many sizes on this system */ >> + char mp_name[MAX_POOL_NAME_LEN]; /**< mempool handle name */ >> struct hugepage_info hugepage_info[MAX_HUGEPAGE_SIZES]; >> }; > If it's in internal config, I think we can use a char pointer > instead of a table. > > What is the expected behavior in case of multiprocess? > ok. >> extern struct internal_config internal_config; /**< Global EAL configuration. */ >> diff --git a/lib/librte_eal/common/eal_options.h b/lib/librte_eal/common/eal_options.h >> index a881c62e2..4e52ee255 100644 >> --- a/lib/librte_eal/common/eal_options.h >> +++ b/lib/librte_eal/common/eal_options.h >> @@ -83,6 +83,8 @@ enum { >> OPT_VMWARE_TSC_MAP_NUM, >> #define OPT_XEN_DOM0 "xen-dom0" >> OPT_XEN_DOM0_NUM, >> +#define OPT_PKT_MEMPOOL "pkt-mempool" >> + OPT_PKT_MEMPOOL_NUM, >> OPT_LONG_MAX_NUM >> }; >> > While "pkt-mempool" is probably ok, here are some other suggestions, > in case you feel it's clearer: > > pkt-pool-ops > mbuf-pool-ops > mbuf-default-mempool-ops (too long, but consistent with #define and api) > No strong opinion on naming convention. I'll choose last one, for consistency reasons. >> diff --git a/lib/librte_eal/common/include/rte_eal.h b/lib/librte_eal/common/include/rte_eal.h >> index abf020bf9..c2f696a3d 100644 >> --- a/lib/librte_eal/common/include/rte_eal.h >> +++ b/lib/librte_eal/common/include/rte_eal.h >> @@ -283,6 +283,15 @@ static inline int rte_gettid(void) >> return RTE_PER_LCORE(_thread_id); >> } >> >> +/** >> + * Get mempool name from cmdline. >> + * >> + * @return >> + * On success, returns the pool name. >> + * On Failure, returs NULL. >> + */ >> +char *rte_eal_get_mp_name(void); >> + >> #define RTE_INIT(func) \ >> static void __attribute__((constructor, used)) func(void) >> >> diff --git a/lib/librte_eal/linuxapp/eal/eal.c b/lib/librte_eal/linuxapp/eal/eal.c >> index 7c78f2dc2..b2a6c8068 100644 >> --- a/lib/librte_eal/linuxapp/eal/eal.c >> +++ b/lib/librte_eal/linuxapp/eal/eal.c >> @@ -122,6 +122,15 @@ struct internal_config internal_config; >> /* used by rte_rdtsc() */ >> int rte_cycles_vmware_tsc_map; >> >> +char * >> +rte_eal_get_mp_name(void) >> +{ >> + if (internal_config.mp_name[0] == 0x0) >> + return NULL; >> + else >> + return internal_config.mp_name; >> +} >> + >> /* Return a pointer to the configuration structure */ >> struct rte_config * >> rte_eal_get_configuration(void) >> @@ -478,6 +487,23 @@ eal_parse_vfio_intr(const char *mode) >> return -1; >> } >> >> +static int >> +eal_parse_mp_name(const char *name) >> +{ >> + int len; >> + >> + if (name == NULL) >> + return -1; >> + >> + len = strlen(name); >> + if (len >= MAX_POOL_NAME_LEN) >> + return -1; >> + >> + strcpy(internal_config.mp_name, name); >> + >> + return 0; >> +} >> + > Why is it linuxapp only? We'll add in v2. > Using strcpy() is not a good habbit, I suggest to use snprintf > instead. Also, prefer to use sizeof() instead of using the #define > size. > > > ret = snprintf(internal_config.mp_name, sizeof(internal_config.mp_name), > "%s", name); > if (ret < 0 || ret >= sizeof(internal_config.mp_name)) > return -1; > return 0; > in v2. >> /* Parse the arguments for --log-level only */ >> static void >> eal_log_level_parse(int argc, char **argv) >> @@ -611,6 +637,16 @@ eal_parse_args(int argc, char **argv) >> internal_config.create_uio_dev = 1; >> break; >> >> + case OPT_PKT_MEMPOOL_NUM: >> + if (eal_parse_mp_name(optarg) < 0) { >> + RTE_LOG(ERR, EAL, "invalid parameters for --" >> + OPT_PKT_MEMPOOL "\n"); >> + eal_usage(prgname); >> + ret = -1; >> + goto out; >> + } >> + break; >> + >> default: >> if (opt < OPT_LONG_MIN_NUM && isprint(opt)) { >> RTE_LOG(ERR, EAL, "Option %c is not supported " >> diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map b/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> index 670bab3a5..e57330bec 100644 >> --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map >> @@ -198,3 +198,10 @@ DPDK_17.05 { >> vfio_get_group_no; >> >> } DPDK_17.02; >> + >> +DPDK_17.08 { >> + global: >> + >> + rte_eal_get_mp_name; >> + >> +} DPDK_17.05 >> diff --git a/lib/librte_mbuf/rte_mbuf.c b/lib/librte_mbuf/rte_mbuf.c >> index 0e3e36a58..38f4b3de0 100644 >> --- a/lib/librte_mbuf/rte_mbuf.c >> +++ b/lib/librte_mbuf/rte_mbuf.c >> @@ -158,6 +158,7 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, >> { >> struct rte_mempool *mp; >> struct rte_pktmbuf_pool_private mbp_priv; >> + const char *mp_name = NULL; >> unsigned elt_size; >> int ret; >> >> @@ -177,8 +178,11 @@ rte_pktmbuf_pool_create(const char *name, unsigned n, >> if (mp == NULL) >> return NULL; >> >> - ret = rte_mempool_set_ops_byname(mp, >> - RTE_MBUF_DEFAULT_MEMPOOL_OPS, NULL); >> + mp_name = rte_eal_get_mp_name(); >> + if (mp_name == NULL) >> + mp_name = RTE_MBUF_DEFAULT_MEMPOOL_OPS; >> + >> + ret = rte_mempool_set_ops_byname(mp, mp_name, NULL); >> if (ret != 0) { >> RTE_LOG(ERR, MBUF, "error setting mempool handler\n"); >> rte_mempool_free(mp); > If NULL is never returned, the code can be simplified a bit. Yes. Thanks for review comment. > > Olivier