Message ID | 20170628230403.10142-3-yskoh@mellanox.com (mailing list archive) |
---|---|
State | Superseded, archived |
Delegated to: | Ferruh Yigit |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 26F6E37B7; Thu, 29 Jun 2017 01:05:26 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30051.outbound.protection.outlook.com [40.107.3.51]) by dpdk.org (Postfix) with ESMTP id 257AF377E for <dev@dpdk.org>; Thu, 29 Jun 2017 01:05:21 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Mellanox.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=g+FZFengGXCaegI5VzNmTcHxJbDX9QHVIDdyxqO6Ek4=; b=RlrxGxKVbYITSjGVOEPvUkBQWFFgfpO7yNg9FUqB1u/DJDwMMsryAWvo5/WDWGWMFb65YTwPtZ5YT3By8aP9DrSrvJ2B3fcxp+tK5Prb5kvWqjBbVSGVnBEgRSQ4WkzXAf11E2J7dKrR5hzgmEIRluIr3Y+xzJvo7trIEZmkFvE= Authentication-Results: intel.com; dkim=none (message not signed) header.d=none; intel.com; dmarc=none action=none header.from=mellanox.com; Received: from mellanox.com (209.116.155.178) by AM5PR0501MB2035.eurprd05.prod.outlook.com (2603:10a6:203:1a::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Wed, 28 Jun 2017 23:05:18 +0000 From: Yongseok Koh <yskoh@mellanox.com> To: ferruh.yigit@intel.com Cc: dev@dpdk.org, adrien.mazarguil@6wind.com, nelio.laranjeiro@6wind.com, Yongseok Koh <yskoh@mellanox.com> Date: Wed, 28 Jun 2017 16:04:00 -0700 Message-Id: <20170628230403.10142-3-yskoh@mellanox.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170628230403.10142-1-yskoh@mellanox.com> References: <20170628230403.10142-1-yskoh@mellanox.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [209.116.155.178] X-ClientProxiedBy: DM5PR21CA0024.namprd21.prod.outlook.com (2603:10b6:3:ac::34) To AM5PR0501MB2035.eurprd05.prod.outlook.com (2603:10a6:203:1a::21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f22726fd-24ad-425a-b7fb-08d4be7a25c0 X-MS-Office365-Filtering-HT: Tenant X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(300000503095)(300135400095)(48565401081)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:AM5PR0501MB2035; X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 3:gKUmiKxqGLR46PYc4nXYu91WplWCb9F+iguN5gwCwUC4wjCsBAR7ILTTUJlo00RVbAGnf+tPAOLhaphiL53UkDkV0qqTK/G55ms4vVDRo8uuUR9CicQ7NkzybqbgysD91xM3qzB/YjmPExwWRfy5nCCCRT0sGHT/Jor3lP1xsVlSmOokE3El7Z+lxWVHTIGhNx+PNVDikkNGjoFLg9UxLvu8iZXcc0kUa2R5PfuqaoPFXEwTp5qUYLScb6mmU31V6H3MdylcYlwx5oObbNDjJKaga7OUl5V/oF42TPyWJ6ttJi3ZY1disp6PaKfDGbLTmtSMoLDbBWQkWNNfUTTXL74NWarSry8r/hs37jLoufcNbwUPSz5Qg5RoKsm2RJvppLDenmH4kcsRv+pFQteReAqjzRb8xM8cr9npX+7YpxNMEK71emRf2OKoCzotXCApY1/rO47uFPbFT3W1/akApRwTKvNSgNqIaz+XTuepPKrVB9uakY6WCqF8j2OMG5qJvccNCZJxrmtZHgZOfKBYhjKyyN6Vp0ViVBKpNvO4kUauozw5ZxHm7AVTWvd8kPBhzzLf40kplnX/pCAT1J5d9tvIb24RdZZ4FwZmFrrkdvdrY1OWDuWDr6aSaYUBG4qT+hHSYVCJvxAXM2OzmZc3mwDQBgE96FVMtCCHrk19o4UiFlreYFx8OAcgpnrygsDf4lldyeYM04OSyhi6g52gNz/zKAjdnH1BuVvIziHIYgBqScotWfbqYDh+0wFo/dxOzC+fIaHd8qEsHgVtmHDD4A== X-MS-TrafficTypeDiagnostic: AM5PR0501MB2035: X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 25:qpObMYvCki4rV8tjqV5U8PUZUnD9S79Aw/4flOWhC0vgscEt19BNa7e4pnjRk4Xom2bQqm4VVdbHxIihjRDkem47eAdCJpHcNOCRb+R6cz0pT5en9FYg+Ez6m2mcpuB348pmuH8OwGcTgPzp9c9kht4924sfZDqVxBzeB05W5PXjDLRPKIszoDaslluBYbq4Dwjza0BrzRtDahknQ8ncEb2VnRrDGKO/S/TUTzyET/P8qM3NLfIfgG7hIC7/emJg3AzuO0zUjaFZN0+C3QXCmsJ2Fj1wvpQk2dHUiIPCzKeUDxCu6cTFwfW47edn6HnMUOZRD26kEMtxi3MMOPCTiWplj56baUFIkvoTeYpO7SGNFWr0vPUPFjljzIaHNX2Qsm08glfydMc7kcPgx7SM2IQoryh7I0QQYniyLhUqBSC7g7JO0qT3Ui7C2NluBkvYDWrfTwRLBgSHuUkU09lRz8fHj7Vb8ikS+19bscpzGNNUSmxRB8A7TMPHAVThlGNPVDj9M5TWAi94HuBDgtxyqrGTwB8cUxiNO3Wf3/3ZZrNo8jVDEMROSeUjiGlevZCJiCxBi35lTlZn0m+FRsudjsGXWtWnpaAHp8zNJ8w8NNT5Tq7ZKgpEqbfmuJNBzq2NyBef0n8xqR3w2LR1/G/N7ZKer5MEPvAKZy2sMb19MogVCoCsXhz5O54NhF/7i8+hsZu9CCrZL77yQarPSVlXOWtEkjgBjYQ0xxAR2Hk9wnqMBCiHWi9pizgkeGo7V8J51eKVm8l1QMwi6rP3zyCdmUGlySNm5qi8J4Z/iWBIWHN7aeLJL7SHDY7tyTwVX+HyYDWKMhtrnz2iW3BzJHijT5YYs2CsizLkunnxjaKa0kPZzrbMNoJMlrftXA4DlfEHQ0MPdPw47Dx22gnrCdUjN0y2CPkD5gWZDFqxZw/P0LA= X-LD-Processed: a652971c-7d2e-4d9b-a6a4-d149256f461b,ExtAddr X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 31:f3HLgdWUJWolreptMeyLKuaALcwiU3g3psGwOdvOJt5bWCJNjodg5bbgymBJR6z09Xh/7T0TkfhNg5FqXoTp4YD8aKvRCxH4Y6o9vxu7b7aEDjDl6g2EO7T7p73/ua1oth7dFiXGXViO67ZE2NTUfBJ+5iHRrelVSAot/3kP96xf3DFzTKHuOLcyoyfCAbH3Kq0HtMS72pAspGBJA4p9V2Qs9LObIGUPjwzav0mJPJzHXzKDJ1YVNX33sEYC7+J6R6aax4LelCEDA4PNmSCAm0ecVzewSBk7R98OKu5rcZ+96YN8AJbUBv0r0fgA0RN/jTROTX+6s+cQRZf274FX1vQF5o9y3VYGiVmed9wmQutpYHdmN5eD3RibIWX5RyZ5nZsjRPDWkq96b7rbVzQQoSJAkqRrwfzbTGb4Fn2dg18mJOVlHlFdVVma26g5p4d/pJLkCwZ10QpghVnjJYjvXTFW5vRt3/nnhmtXQ03O7XZ3Bj2o0mN2NwvEudmVBo3AF1JCiE0UWFxg0wrn54YRzzCvcHtdnBckpBeCvRsp37LWrY/9Z9oBLO0BtTeEs3tIs1f13SMRVC5IxIXSkUrrOOFMAkaqxtf8hFXc0gUBlAY6azSLR/rC96khVN/I3nrk1uGGp0q1BpssfZOYrsRlYUO6DBXtvGVa22FZwqMnGcLRr9VlFxoJPI1k/6kz+C365VOdbSqXGrA4H8+scm9++w== X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 20:8BGQIAmHyiphTU/xGecyKlLkrNjIhbvu06Xy+RWGe0SCniXyr8XsBFxJh/IR1dA0vIx3B+RVFRP4b9L2GDzj2aTYg0m/BS31YcVujatiZYaT3G2xIuKhUZZJlUefenSGV6GvLy89Kw/t+tAkVrYlFQtqRrcgLAfhQ741aeXONTCFB1MktJsfxa5YlIZlZ2G34e8O5LdB8GUuLkeBXRrozG4mfeXQTLEBJgMxI+tLc4tq1nyPPfs1abBNS3ImG4lGwA9vu24aFa0dQnKqO3qdcdTj+CoOvozBIOXRhuoYeERh5S3wLonXybi8krioEc5eW01BSGD3hj0wV77foahvsatxrHTP6lNkTuBqhFGwx8Y4+lvSjRI+NabXwePgyaJts98t8Lk3GYj2V1FitSBAv32+7j4MZXFELJP6SB9P8xmOdcuwHNNpn3I+ogUch8DwH4qpXZLgqZkWuOcHepw8pybSyZlmgKmlBsSsLu6oXduAVHMy4jeioOt5wrAudtxz X-Microsoft-Antispam-PRVS: <AM5PR0501MB20357208FFB9C8D2C79CDD00C3DD0@AM5PR0501MB2035.eurprd05.prod.outlook.com> X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(167848164394848)(247924648384137); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6055026)(6041248)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123555025)(20161123558100)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:AM5PR0501MB2035; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:AM5PR0501MB2035; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0501MB2035; 4:FoFgrB9QrhEvoHf8ZuyIsZXsnzXKLoJ6psgZawv4?= rJY8iQY0OzMCf2P6ahccrtde8t8nADUG2CMP33XAf2G2FIDbbT3xDxFWaASE4tcYc1NaY2LXVMcaek8C9NRBGLOqNrwpX63veeUt6TcD8vNu/psJ1TQ6wgGBhy8VVVMhXKOmbc91bKT4qa+I2LV3ERV0Fs+JDbAQfjG5P72sCaYC0UxB+xkVk2UwRvOdqtl+mGa0+Uiwr3cnEAsSDVxRLqXW6YoGfA3fRW+Vwxhq3KJGiLgZQRTyYpFwCasViL0wzX38u8bjnfQn2ABP0hMIERpUy3hyMkdsxfAgMGj3z7yI2qbj/g4lGV1KbVmd/zlKDEONO5S1SLpJNrq3QKCV79ET094+UIxBovyHolBHrq7jPbwNI4i7q6/xRGtcSp1s9FmG8KHViB0HiURwUdL7P5TwvZ3MD5P1d2cH+CQOVLGRwdXA/T8nbS33EKyCT5HGDFvNriBhka4RsfCoqZDS/0k3g5GFiMAEnuxQaFBjJ5WRb45cyen4HlkP8TbsfzeZICgWoxVqd1UxCh2L8RRnVTTQi6m5Nb9J3RuO0upJzYwMiYrVWh9D8oXxp3izNQHk+wwoaWyWaAU54mkdfS2t7eIW5sQLAi6keFZ8FGqgUVPN/wj5uTY0efnVqS9RCFjMi0/je6v00q0g+R3q8ooLHoB9OKwuIQ3snx/k5vwrhUIKH0ivFGutnkkvVHaVUBOp0VNx0UJIHTshio5L/Q86uFqlHUb7FdJZv+fQwPkZc5qYeKUfXHplba7JTveZJSfqeiIT2rpjxcQChmtV83WeI006zY17w2zu5P0Preo1d73OP0SWC8lQCVzcOoTzPUNoRLCIIHGbL5dnCDFlIQdFH9Db+t9w11UYtlk761VjKT+oSUoO+RpSEtS8JdB5blfImsk2vy0mzJf4dtrWRGHGE4wgbb+SuDkIfUcj8nXzqCpy8iXTwUd1zr5YtsEx6zPF974UJv+afLmRNiNz8Cl7dwSdZSBrdaZPTs9CEI52BkfWJbAq/SoSHencXOb7TgFHWEnKMDET2eCwyIxLacTrGamk4U6PunxFoC4kCHVrpkyD5uScAQ9/BdpOumTdJWAAZ3cbtGpWoGYaQCZPdZrI725nw8z3/WXi1GOn+aGfhWSft0xO+xP2F8RRqh2NTRzDm6TDoL89cj5sCvl7PN+6pEUain63EC9/VjDNIGO/QW6ybaDEvj/pn9rtf+6JU7JFRgjHoP5SfruILQQgluHMNhRH X-Forefront-PRVS: 03524FBD26 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(4630300001)(6009001)(39850400002)(39450400003)(39410400002)(39400400002)(39840400002)(39860400002)(107886003)(38730400002)(50226002)(1076002)(3846002)(6116002)(7736002)(478600001)(4326008)(2906002)(6916009)(2950100002)(55016002)(50466002)(42186005)(6666003)(53936002)(5003940100001)(48376002)(33646002)(110136004)(2351001)(2361001)(189998001)(86362001)(50986999)(36756003)(81166006)(8676002)(305945005)(76176999)(47776003)(25786009)(5660300001)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM5PR0501MB2035; H:mellanox.com; FPR:; SPF:None; MLV:sfv; LANG:en; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0501MB2035; 23:Z/LtynQAjP4ABtOCxcI3YKWNFPpmcqmsIep1RhE?= YhYDCx0xAi9qVd715mZo7Kzjx74o2gOaT53LbTvXc/hGcD+aIiLtCnPabfOB3uAsgMArRohHxOR5egX/5wq6Y3/ZF10Sxk8GyZHJHrag/NDOg7JTGOO9/qGdMYuhbByps2j3sVrFCi6N6LAyIynJq4MzppWWU2P2kAr7uvI2g5TrDxrrcM7umuc+RgC5MhicFZ5eE/MfOdETHTVVTKCi++xk4Ilr8ZRyXFea00W4gwXPYFnxsjREiw1pKPsSVwnLZyWxmmB86rK55+Fo0+og1glAny5ZrZUu3DX1eNmSsfGSfKLjhSxZzVJ6od25vneAOgbNCb3vG18TnWmq1ky13R1r4YOTx/Nhqiyv7hZkGhDgqNPpuHKSAec68C9x3Zp4v9rQX4lLfIniNMMHeH4XMv5GfD/ajJltiwYfRKvBNMSaUqvny/TnSj/wXkEwhkM43X7W0m22lJnIOujCmmNs16tqGtuMmmgFWtR8dtbNqQ5zW6IDGyqf79wNqGhxEufomRw25RORrhp9Ea74XMYdzOPFXw7bGMtY3dwityI9uF0TvL/cv11weYWCea9mhRnJKJzzmA8S+iUhZ3TJ7WIAEr56w1vW1rPuumZbgIQuJOaI3/fIW9iuf9C9slfNS3wdfq/bb5+sZ9Ph53gQNLAfmI8g76GUGgRT7jpVMMsZndxxaABj4yOx3qMBvhDH64CNPqWnUuPIFXefRzmAzJOgiA2ym8NgrZb6Us7qfhnBbHYDW06mnX5M3o7guHht6Eud/3a/x3Z37ts2uCZmRDUbHCHa/ZLJ4V7cAIi/J6k/Q4AAW8tle8htSBOMYqlkRTtae9kzpFIFPC7xe3aiVayg5K2yk0k9UTA3v9KA0lZQV2vvU1CI98fB7YD2BY3SDIXZaEmk/zrnwblhXBS3iMbVRa73trpsQgqbDT52NOQ1lnKfP+k891WQhmqJiTMGu235RyDELVKB15ezjtMNTBEFQhJxkHVNZ3lSm6+mkFQ6belBYRS4QPJw7g1ClnqUvGG9cb7F4/cTm8mxl/tF6Lmxz0UzrSYnxXdZ4Q4uDLfhA+/0l+w== X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; AM5PR0501MB2035; 6:c+I3+EgkRRplxFIAb3VDoAOtS7BzlIOhW4CT54Gg?= yW4raiRQijggycW3QxaBUbXeL3Vv40m8EuWYWwTVh7Ggb8Zbg8Ipp3g+lawL37jZd63Bbwc5yRBqbD8cnoXbVjRbZ7b3zGIh2XU5GnL5svJ2LPb4H6XFZwqGgAWsTTBBf1MT3X+aU9eP85rxpY5NnSqi5V3FO7d6mkTzhGaiJ9J3IRoK7LtMQ4xZ1IZuKyeH76QdgdajG5vVPzRXIjHmpI3CQPxJa9LjtxHJKaWq+coCI9eo6pBhQUR/bofDjeF3jue15ApcfO70IbV4NHj4A1NjB+lFFx12JKsV6DDwE2bOK9p+64B5AfAw/2t0Y1hZgd3YthCDzFJZ1F9RhCtHlhuOgEzGt/PnUz+60D8Luc9hLTH8j85QG+t4DWswEnkD7b3vi6ALe7zYPMH+cWyzMhGTv7U3gSQ/jnlUIyPWp94jB8Im53x2H2Tl8OTTH2LMaNighLACXMVuBYCcz/fOyzIxQpackiZNAUsA2+6bQtI6r9yRXEZkDwUN1pl+3J//XCswLwBqk9gL1ffEJdtxRh4XkXRj5z85qGOrc9UT3WpKY6BQKDTjeutqwoeUbRHxuaXouY5RP10izM6lnHqeD4rvugeZZwbGdMZEfUsGwBk59SWBb82tWbDmW0WOYVYJJNWM0Y5I9Unl2HZMaKMcHtR/IjY19di2OMKOwmNvF97aPrYEX0h0AMPAeIJJcD1RQSxLkyqqJumk4ytQdLmC6iRSnK4c++pim0CAUAUXq8uNf1n9yLPaEn/9dHIkhEUiWNF2oOL7GbVfI61BnVZZdP9V98nBJBnzonAWoQxu/SVt7TZ+XjgHW1TLP1xKL2T0RNJTreQDMHApHTqMX5mMdlEP6udZ+lGi8fKwGocfwgPxzUeTYnBC+nS18ooQ+SkNspbvIcPGRHaILxe9DxxQqcOw2tvc6PZFMmtrm8auM4vJg1Gurn2rTwk1rfWJ3mklxD/G5SXVa0oPLN/m5d6Jo1Yx X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 5:HG2zWXpjU6ERM2qzxEmiPOuJVtZejDirDHCYbyJYkUq1rzIjgHA0SVEE+CR6BQMHej5MfTu8ZQV0SayjhrD0vrcMiROFVaMwJPdB16+YNd6YZczPgmXGSptGi2jFhzZX1G97MEg6egMjAuHdbqITw4L+Yp1CaItrTSQglWr6vdPZM5nu2KRlkorqEPzTBLaB6uQNnDFW5/6JAoNOcSM7fVvVWo0ZjhFAZ5/WGfBtRcfRhcqB54fyvQKzb2RoBvRKJUy88guOT+RUUUHWGO0Ewta0fmVqHZmVZbYN1m8tzBUhx29emNP8Ec7GKt3SODYDJWWEXTgs3C402mKQBfYuxhthQuaj0uZaM1F4+LN3nEz01I6Swot6ZyFHURMs0k6GeN6MjVY2Y6kOaVm9jALf57HDOZQPLtEwv3zb0Z8swaYlsw2Myic1x78lDH8ZIZMT+Om3W3liam5AGVbI9sSDA4C/8pN32FwhRi9OCmXvh9WQgy2yut8mxFLvL7rP5CMd; 24:ZD23pHGNj0xQA0aSE6lHOQNY2TifRUXvIidF0UFwCgc2k7NKk88wUg84q4JGAJPekTfHkCsfx2c9VqfJOgIMhCYt1ODxQG4MDYOunIbXQas= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; AM5PR0501MB2035; 7:sVgymb42u6N4S9o32TfMr/2HSD/oWUf5eWQ/M+QGfDuREWeVA0pk+RpJ/QqJfjW36byssZuLuCpnPEEdceO3N46f7098q74F8wQDvaqVotqMpllqHv4gI/5YxyBylQ4SJmL+p7syRo7nKQfEPiUfyFHyvxMP+dGXGXfNiL2Rqnt52iBEz76J+UY/cwzqgGwJ2vY+q8v7BcbhW56S7l9ziJT44NikSpaAXWiFrKLc87IE6nUXK/FWbZSzMwvr/jihX9wKmoCYtUvx3bTeC9Lyv3zql7UMR5bgNgPfK7WhYIOi6pptTFU8H37EAJk4ZeFCoMPTmqnbz9gNUZvwI+rX4Jm4anBoQ8M2JXEgWwaHRwH6zAEdFrH0EQz54ykJqhI8eF7PHPgFbMDnuex3yd7k9gdU3XKE/GA3bS8+96ELYbB/skDx1aoajfu4DjDz0xVb8EvuGPOme4YuRi4RkMdjinGZ4VXgr6s1So/E0YS8R8ODDwhi43mP2zR5fDrGfQ6tpaXWCEA/Mx3hhCcKIgPXWfiR7HQrqM8TLor/G+cUY1OBZzZe9glIIMeVeraZG8d4RwQ/bE3qK9ELrDqg8gZ2jwdGxnZqPdusAnoBcLY2DYI2vsrl22/t9iZ+KJ5YGD5nBv2Vqq+lWuVVGFc01/C+InVE1fE19Okl3mZ6Nn1URW9F5mT2UbtSnfdiLKuDmSMNgKTN21M7qD7ipMVOEkF9hwqyc8W7Joga246FbkzOZQSKDod9Imd8bZpp749k1JTCcxFY8Z8TEvSW9WoWHHRSgqueuvDlnThLhoL0swH5i0I= X-OriginatorOrg: Mellanox.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 28 Jun 2017 23:05:18.3506 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM5PR0501MB2035 Subject: [dpdk-dev] [PATCH 2/5] net/mlx5: free buffers in bulk on Tx completion X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Checks
Context | Check | Description |
---|---|---|
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | success | coding style OK |
Commit Message
Yongseok Koh
June 28, 2017, 11:04 p.m. UTC
When processing Tx completion, it is more efficient to free buffers in bulk
using rte_mempool_put_bulk() if buffers are from a same mempool.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com>
---
drivers/net/mlx5/mlx5_rxtx.c | 36 +++++++++++++++++++++++++++---------
1 file changed, 27 insertions(+), 9 deletions(-)
Comments
On Wed, Jun 28, 2017 at 04:04:00PM -0700, Yongseok Koh wrote: > When processing Tx completion, it is more efficient to free buffers in bulk > using rte_mempool_put_bulk() if buffers are from a same mempool. > > Signed-off-by: Yongseok Koh <yskoh@mellanox.com> > --- > drivers/net/mlx5/mlx5_rxtx.c | 36 +++++++++++++++++++++++++++--------- > 1 file changed, 27 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > index 43db06ad8..d81d630f7 100644 > --- a/drivers/net/mlx5/mlx5_rxtx.c > +++ b/drivers/net/mlx5/mlx5_rxtx.c > @@ -264,6 +264,8 @@ txq_complete(struct txq *txq) > uint16_t cq_ci = txq->cq_ci; > volatile struct mlx5_cqe *cqe = NULL; > volatile struct mlx5_wqe_ctrl *ctrl; > + struct rte_mbuf *m, *free[elts_n]; > + unsigned int blk_n = 0; > > do { > volatile struct mlx5_cqe *tmp; > @@ -296,21 +298,37 @@ txq_complete(struct txq *txq) > assert((elts_tail & elts_m) < (1 << txq->wqe_n)); > /* Free buffers. */ > while (elts_free != elts_tail) { > - struct rte_mbuf *elt = (*txq->elts)[elts_free & elts_m]; > - struct rte_mbuf *elt_next = > - (*txq->elts)[(elts_free + 1) & elts_m]; > - > + m = rte_pktmbuf_prefree_seg((*txq->elts)[elts_free++ & elts_m]); > + if (likely(m != NULL)) { > + if (blk_n) { > + if (likely(m->pool == free[0]->pool)) { > + free[blk_n++] = m; > + } else { > + rte_mempool_put_bulk( > + free[0]->pool, > + (void *)free, > + blk_n); The indentation is strange here, free[0] should be on the same line as rte_mempool_put_bulk. > + free[0] = m; > + blk_n = 1; > + } > + } else { > + free[0] = m; > + blk_n = 1; > + } > + } This loop could be smaller, blk_n can only be equal to 0 in the first iteration, otherwise is >= 1. The first if statement can be merged with the second one: if (likely(m != NULL)) { if (likely(blk_n && m->pool == free[0]->pool)) { ... } else { ... } Thanks,
On Fri, Jun 30, 2017 at 02:30:47PM +0200, Nélio Laranjeiro wrote: > On Wed, Jun 28, 2017 at 04:04:00PM -0700, Yongseok Koh wrote: > > When processing Tx completion, it is more efficient to free buffers in bulk > > using rte_mempool_put_bulk() if buffers are from a same mempool. > > > > Signed-off-by: Yongseok Koh <yskoh@mellanox.com> > > --- > > drivers/net/mlx5/mlx5_rxtx.c | 36 +++++++++++++++++++++++++++--------- > > 1 file changed, 27 insertions(+), 9 deletions(-) > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > > index 43db06ad8..d81d630f7 100644 > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > @@ -264,6 +264,8 @@ txq_complete(struct txq *txq) > > uint16_t cq_ci = txq->cq_ci; > > volatile struct mlx5_cqe *cqe = NULL; > > volatile struct mlx5_wqe_ctrl *ctrl; > > + struct rte_mbuf *m, *free[elts_n]; > > + unsigned int blk_n = 0; > > > > do { > > volatile struct mlx5_cqe *tmp; > > @@ -296,21 +298,37 @@ txq_complete(struct txq *txq) > > assert((elts_tail & elts_m) < (1 << txq->wqe_n)); > > /* Free buffers. */ > > while (elts_free != elts_tail) { > > - struct rte_mbuf *elt = (*txq->elts)[elts_free & elts_m]; > > - struct rte_mbuf *elt_next = > > - (*txq->elts)[(elts_free + 1) & elts_m]; > > - > > + m = rte_pktmbuf_prefree_seg((*txq->elts)[elts_free++ & elts_m]); > > + if (likely(m != NULL)) { > > + if (blk_n) { > > + if (likely(m->pool == free[0]->pool)) { > > + free[blk_n++] = m; > > + } else { > > + rte_mempool_put_bulk( > > + free[0]->pool, > > + (void *)free, > > + blk_n); > > The indentation is strange here, free[0] should be on the same line as > rte_mempool_put_bulk. > > > + free[0] = m; > > + blk_n = 1; > > + } > > + } else { > > + free[0] = m; > > + blk_n = 1; > > + } > > + } > > This loop could be smaller, blk_n can only be equal to 0 in the first > iteration, otherwise is >= 1. > The first if statement can be merged with the second one: > > if (likely(m != NULL)) { > if (likely(blk_n && m->pool == free[0]->pool)) { This condition is a wrong also, it should be !blk_n || (m->pool ... Why don't you keep a pointer to the mpool (e.g. m->pool == pool)? It seems to cost a little to deference two pointers to reach the pool's one. Thanks,
On Fri, Jun 30, 2017 at 02:43:21PM +0200, Nélio Laranjeiro wrote: > On Fri, Jun 30, 2017 at 02:30:47PM +0200, Nélio Laranjeiro wrote: > > On Wed, Jun 28, 2017 at 04:04:00PM -0700, Yongseok Koh wrote: > > > When processing Tx completion, it is more efficient to free buffers in bulk > > > using rte_mempool_put_bulk() if buffers are from a same mempool. > > > > > > Signed-off-by: Yongseok Koh <yskoh@mellanox.com> > > > --- > > > drivers/net/mlx5/mlx5_rxtx.c | 36 +++++++++++++++++++++++++++--------- > > > 1 file changed, 27 insertions(+), 9 deletions(-) > > > > > > diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c > > > index 43db06ad8..d81d630f7 100644 > > > --- a/drivers/net/mlx5/mlx5_rxtx.c > > > +++ b/drivers/net/mlx5/mlx5_rxtx.c > > > @@ -264,6 +264,8 @@ txq_complete(struct txq *txq) > > > uint16_t cq_ci = txq->cq_ci; > > > volatile struct mlx5_cqe *cqe = NULL; > > > volatile struct mlx5_wqe_ctrl *ctrl; > > > + struct rte_mbuf *m, *free[elts_n]; > > > + unsigned int blk_n = 0; > > > > > > do { > > > volatile struct mlx5_cqe *tmp; > > > @@ -296,21 +298,37 @@ txq_complete(struct txq *txq) > > > assert((elts_tail & elts_m) < (1 << txq->wqe_n)); > > > /* Free buffers. */ > > > while (elts_free != elts_tail) { > > > - struct rte_mbuf *elt = (*txq->elts)[elts_free & elts_m]; > > > - struct rte_mbuf *elt_next = > > > - (*txq->elts)[(elts_free + 1) & elts_m]; > > > - > > > + m = rte_pktmbuf_prefree_seg((*txq->elts)[elts_free++ & elts_m]); > > > + if (likely(m != NULL)) { > > > + if (blk_n) { > > > + if (likely(m->pool == free[0]->pool)) { > > > + free[blk_n++] = m; > > > + } else { > > > + rte_mempool_put_bulk( > > > + free[0]->pool, > > > + (void *)free, > > > + blk_n); > > > > The indentation is strange here, free[0] should be on the same line as > > rte_mempool_put_bulk. > > > > > + free[0] = m; > > > + blk_n = 1; > > > + } > > > + } else { > > > + free[0] = m; > > > + blk_n = 1; > > > + } > > > + } > > > > This loop could be smaller, blk_n can only be equal to 0 in the first > > iteration, otherwise is >= 1. > > The first if statement can be merged with the second one: > > > > if (likely(m != NULL)) { > > if (likely(blk_n && m->pool == free[0]->pool)) { > > This condition is a wrong also, it should be !blk_n || (m->pool ... > > Why don't you keep a pointer to the mpool (e.g. m->pool == pool)? It > seems to cost a little to deference two pointers to reach the pool's > one. Good point. The following will be the final streamlined code. /* Free buffers. */ while (elts_free != elts_tail) { m = rte_pktmbuf_prefree_seg((*txq->elts)[elts_free++ & elts_m]); if (likely(m != NULL)) { if (likely(m->pool == pool)) { free[blk_n++] = m; } else { if (likely(pool != NULL)) rte_mempool_put_bulk(pool, (void *)free, blk_n); free[0] = m; pool = m->pool; blk_n = 1; } } } if (blk_n) rte_mempool_put_bulk(pool, (void *)free, blk_n); Thanks, Yongseok
diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 43db06ad8..d81d630f7 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -264,6 +264,8 @@ txq_complete(struct txq *txq) uint16_t cq_ci = txq->cq_ci; volatile struct mlx5_cqe *cqe = NULL; volatile struct mlx5_wqe_ctrl *ctrl; + struct rte_mbuf *m, *free[elts_n]; + unsigned int blk_n = 0; do { volatile struct mlx5_cqe *tmp; @@ -296,21 +298,37 @@ txq_complete(struct txq *txq) assert((elts_tail & elts_m) < (1 << txq->wqe_n)); /* Free buffers. */ while (elts_free != elts_tail) { - struct rte_mbuf *elt = (*txq->elts)[elts_free & elts_m]; - struct rte_mbuf *elt_next = - (*txq->elts)[(elts_free + 1) & elts_m]; - + m = rte_pktmbuf_prefree_seg((*txq->elts)[elts_free++ & elts_m]); + if (likely(m != NULL)) { + if (blk_n) { + if (likely(m->pool == free[0]->pool)) { + free[blk_n++] = m; + } else { + rte_mempool_put_bulk( + free[0]->pool, + (void *)free, + blk_n); + free[0] = m; + blk_n = 1; + } + } else { + free[0] = m; + blk_n = 1; + } + } + } + if (blk_n) + rte_mempool_put_bulk(free[0]->pool, (void *)free, blk_n); #ifndef NDEBUG - /* Poisoning. */ + elts_free = txq->elts_tail; + /* Poisoning. */ + while (elts_free != elts_tail) { memset(&(*txq->elts)[elts_free & elts_m], 0x66, sizeof((*txq->elts)[elts_free & elts_m])); -#endif - RTE_MBUF_PREFETCH_TO_FREE(elt_next); - /* Only one segment needs to be freed. */ - rte_pktmbuf_free_seg(elt); ++elts_free; } +#endif txq->cq_ci = cq_ci; txq->elts_tail = elts_tail; /* Update the consumer index. */