From patchwork Mon Jun 19 07:42:31 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Mintz, Yuval" X-Patchwork-Id: 777623 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3wrjdN6Qkzz9s0g for ; Mon, 19 Jun 2017 17:43:20 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="ln8UEUnb"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753656AbdFSHnT (ORCPT ); Mon, 19 Jun 2017 03:43:19 -0400 Received: from mail-cys01nam02on0064.outbound.protection.outlook.com ([104.47.37.64]:11520 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753591AbdFSHnQ (ORCPT ); Mon, 19 Jun 2017 03:43:16 -0400 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=prnw2mgLTE8hrA5H0R6K6NK3uee4ZVyCzYKKsRBLFC4=; b=ln8UEUnb3yWuIUvDk0WlqqXSKEeygfBtDE4ugbHoC2317+B4oWDK7n+mPhBCwbLGibbZuMNEu11qaAaE607f8+71IVn9MFBed/ckpDtPQ7Gx7ry40rhTfpJowprQnPUfDLRhQM8Jc08aH/dfpPMB+wgCAejO/iCD/JYAnRzT+mE= Received: from SN1PR0701CA0073.namprd07.prod.outlook.com (10.163.126.41) by BLUPR0701MB1010.namprd07.prod.outlook.com (10.160.34.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1178.14; Mon, 19 Jun 2017 07:43:13 +0000 Received: from BN1BFFO11FD004.protection.gbl (2a01:111:f400:7c10::1:105) by SN1PR0701CA0073.outlook.office365.com (2a01:111:e400:52fd::41) 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; Mon, 19 Jun 2017 07:43:12 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; vger.kernel.org; dkim=none (message not signed) header.d=none; vger.kernel.org; dmarc=none action=none header.from=cavium.com; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) Received: from CAEXCH02.caveonetworks.com (50.232.66.26) by BN1BFFO11FD004.mail.protection.outlook.com (10.58.144.67) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1157.12 via Frontend Transport; Mon, 19 Jun 2017 07:43:12 +0000 Received: from lb-tlvb-yuvalmin.qlc.com (10.185.6.94) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Mon, 19 Jun 2017 00:43:09 -0700 From: Yuval Mintz To: , CC: , , Yuval Mintz Subject: [PATCH v3 net-next 1/7] qed: Chain support for external PBL Date: Mon, 19 Jun 2017 10:42:31 +0300 Message-ID: <20170619074237.30249-2-Yuval.Mintz@cavium.com> X-Mailer: git-send-email 2.9.4 In-Reply-To: <20170619074237.30249-1-Yuval.Mintz@cavium.com> References: <20170619074237.30249-1-Yuval.Mintz@cavium.com> MIME-Version: 1.0 X-EOPAttributedMessage: 0 X-Forefront-Antispam-Report: CIP:50.232.66.26; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(979002)(6009001)(39450400003)(39410400002)(39840400002)(39850400002)(39400400002)(2980300002)(428002)(199003)(189002)(9170700003)(106466001)(105586002)(50466002)(8936002)(48376002)(8676002)(47776003)(53416004)(2950100002)(77096006)(356003)(50226002)(86362001)(305945005)(5003940100001)(6666003)(5660300001)(2906002)(50986999)(36756003)(104016004)(1076002)(81156014)(107886003)(38730400002)(76176999)(478600001)(54906002)(189998001)(81166006)(72206003)(101416001)(4326008)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1010; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:ovrnspm; A:1; MX:1; PTR:50-232-66-26-static.hfc.comcastbusiness.net; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BN1BFFO11FD004; 1:ABi7CHXR/UokKv8o8QbO00MEoG7b7dJgb6YwdvX/VKEpZuXviPTKlxgNn1GLipQCgqsqF4VD15wZI4ZEsF4HzMizU4N+6YHgQlec3epfnj2ZRXIisrw6C1W42XA42eVXtVqRBCiv8WfPkRhqCe/eBQbSpU1gFYQofTHSsufs9f3IR0AboWs6aqzsbyfPlZZ874yDlQWNYmsr/BESyPrPWPGBeYJTrZQvoL/UK9D7AAfDFN3JL+4sXeyVf1Bt5EWSJWmbLKmtqPj4XeCxWTxHMajfUk4YzfXQi7wVEyB+cXgzo2WVS4MpUG06Up7CyiXHcGcXl3f2vWxHzd6ArpqMwsBSM2btq0UkbFVUnYoL97CoGNjuCjQQ57v2pbh8xK3SpAgcosXmV160q/N7oo0kBPtvoEufj2rvqB9wBXGkMiALOAR+67D7N8WOsMH3AitTiUC3xJt29Aj0K8lK+ga1hlndE/9ao8A1dnZhAvZYrPWHM18h/RjMTEiNXHVNlURslhd/B+MWK3+115b6TyMXCQ== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e1ef86f6-25f0-4b1f-aa3d-08d4b6e6d6a4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:BLUPR0701MB1010; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 3:11R2Wx39trQF1XkBuW/kq1SpBWNTmyQod0S51k4Vo1MS5oEDfqSjMWtvYDnWrIWAtryE1pY0NbXGUPkgiSqX/ga/GjvieLrHkBOh+nveoFjZXQEDNK5Pa5f8xxp78x6cW8G2nT6DnpeuMZ4FunV4M9AaA5/Buebxh1aATd03/DwnOz/sLjQaY6TBoJbJEPzFb0nZf8eFf3D3EB8hnlTaFA1PJ+1grMRJr6S+kWlx5lhhUljDhNNh0vIjSwaNiqehrT+k+ZS2R9HnyZUW9EY32S3LZSScSPUSJX8vai0Nsm/thpqOWM4/73zJGo9d0s5vy9E5ASGKBKRPPbimOahstTQl4YW8Xl1394lKd0McUkkaAnGF6sFgF29t70BLtmwgmDRwcBgzq4R4MA1xM2Cf26lKPr6cqyPtmAK7yRHOAvnXyCP5WBXisfeyAPn27TiSiy97rCjBRfU7LwN9rMpxFg== X-MS-TrafficTypeDiagnostic: BLUPR0701MB1010: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 25:sCLIUfnqZDzkdHRDnvsSi1XCUMF4ad6ZLtxfIK2FzvZrVtMRYmxzrSRZpkhD1V6YIur5PXEMXsti3l6q+xETVh1YI8BjEZk4Uvfy+2Ty7StuR08pgqe+WlrgTCJVlDhxotK/Y1CjUQpNc+YETA93LNU2gHEWdxJlVHvYbbuUglSrKUECus3ard8Ngp0ftU9cFtZbgdZ8LzR8ATm62B/xcnYGlsNpkYTsv951AMwhN1ST8dnucu0FR9M8N+4ux1f/Hwy9E+a0UHZC1aXa2SKMIkPX8XihhiacXFDWQ3qWARTPwe3Wg/THZ5zXWZyclU4TO2gSs+cCYr4S58CN/v6hnh2Ih+m5dVdo0tfui2YhtT4rFOuMziXzvwKwf9ipMQvjcPVjQ3Q282oF/oucU9NiariIg0lmLFV7FbZfwW2wCmA6pakfe+bpPYgWMd3WxIakeIswVyQpJ2aRREhaupERK7IQ/+O66I2iJXCtuYCqhNeokeq3FEfBfmwo+gkv2S6vA9nMIvu5FmfuSliwDZjQ6UgrqOSIYZ6Zalq5xlW9I3pXKPFa9QjWJxH/YnmLvdauUhCXeUOOlLuKb9MM+Iug/x1+/v/4mksG5+hSa3A/AgjI3L4H0Eu4VJEUveOlE5D2/ESi9JksZxaNRqF3+RLZMcccytrYZ5BJ53cghZIMOB6Mx1V9wGZqqynE5dR4Ly4fBKqNHXsaIctuoM51iK5uHT/eADOBcBts/dsm63BaAvCro0L0+JahJUFWKnPcjwHAbOWi2CCeWRnppPWT3OpNVDL75ic0DcvGp/fx7spUOy7+Tq9MjbkFFT7R5F39gX/XXAZkzNGtJ7ZUNtWSSiPx+n/i36v3jA+eLzIoaeTZ/LIzsG9i5Fb0T7pN9WMcFt5H2wCQmtga2dpSW5vH91P4lcYEn4MUQ5Z97K+9gR/s6EI= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 31:X7sXEJkwMq4d2yDwrGR4p91YuUiZxXX/lBr++UF8fVoFloyw82hztz55t4Ji44xLRnF6+HL2PYO5VTzo5+X0gIcLoHpQjIcL9xNJpJlbFBk0DpKQ+C8bxW3oNNY2t+/bCKmcQTboiT3qcjLGOM0EngAi73pm5wJ1WkzOg0aPz4Xi0zRxNiDTTL3c8hgv3qmyFdQ1x7Om5Szo0USNDcW82XF6Pe0Q0dFSEaP58VzsN+GkM/XYHIg0ssY52MKzb7I3SQeANroKpJZAzq5tX846Jl8rOr3Dv6pVvnsgK9N+zDChwV+9u3I32WWh5kTKwadwB/WCRKvYS4SZ/0iQK9TaPnbcz4gY6JR4fwAuOCITAw9Amz3IXJ1EYaU7JbdWnIhxhoLd7xYPZ1UuDwKSFEHph+Oc3Gt0NrJDaPM+z88jm/IQlu+TEi0ovKB4Yu1tLwbc/4iD27N0nLjyW56+8XfoaL8zTS7Bnj8Af1t+rWb+TGRpxH9QeZK0nYZEMB7N1LHZ8XILHLMNBr55x8PEO2pIzqUleSRYYm9emXHhegiPPU6hATM0UjksFAST+nF6rH/BJfHKr+uGVL3X5fcfzmNuP04wk5dyRkpGwTII2UOoph2kyFhimMKSW227Y6u6dszs5yPHDm7bKpmdDcVuTZ2z/w== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 20:xaXL1PmVpMujy4gw2Pj4hO3LR8Pr8M59BlaAi/03Ub7DhtAr9rPrXrprrG/eJYvpL2If2JHtdLbrJMJb9aBFJA5L4seqeLBCdPZcv9gvy2HuBKR40vJYd56DMwhth3rECh/cEL/ohr2/1NuM0EQyqtkailg3i7zLeA2BX7DR/6Ff1aOkZy2LnL4cd2/5ok7zcyij/ubr4Qf4hvQPuSSfll+QkS45M1Y7I+uIv64rcSIyX9mCHde8Qljyxppte4GhW/kA7eNqo+GY0991GPfIUJOM8aqOwHHpLz974gZYfQD87XagWNszJfdW4ndfswOb/IcmEAyNJr0X5pVeUEAMJrFPDGRSmnmI4bvDcrNxmvMJhih3AChAbAHRpgbCr+e9QYiQUkSB2SD0H9uBzQzc1E/UGiP0uAnBENNrS/3ynZs/aCXwtkzVxRYA/YGf2CZtRjgiFAMSw+uYyPViErhgZDLPwxHBVoCmbCpjh5jG3LY0cmoKzAM+2vaNPD5Y4fjK X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13018025)(8121501046)(13016025)(5005006)(10201501046)(100000703101)(100105400095)(93006095)(93001095)(3002001)(6041248)(20161123564025)(20161123560025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123555025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1010; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1010; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1010; 4:1qo6d1IzKpjbvo9ItWzNo6KFIl1Hhb7hX+Lq18bN?= =?us-ascii?Q?f699AJbkrSlN3qbErZTLXgx1Fbj1LKSnQQ4v4myIMo5hQU2qMcr6hDMXZ9im?= =?us-ascii?Q?GoH69vnDTWr8Rb4fL6V9ilpyfGuHgRzad6suyGJjizHxovSXW/UfghLpCCUc?= =?us-ascii?Q?Phe5oFx+YvFUJsO7WRcmnWyTeNyjjxMlPYy+osGmAP61+t5WdqB6KcrYFiwL?= =?us-ascii?Q?XVOF3Odchxrt7C896frMwdKrpoa/8UTooNljxCGLdO2lURSkI5kJk8v0ZV7F?= =?us-ascii?Q?+YQiyH3ME5beKpZsOx2i096u3A6QpednllfhgOoGspKgLizwl5HIFiszHjyi?= =?us-ascii?Q?Y7wzFfzDnAfRuMOFl6mrbT9jaFaFkOQljm2zD2y5BokC6Rx3uEof4NGzHCrt?= =?us-ascii?Q?/b4ViGUWLZmKAEB+EkyrFB5W4aFN5GLoSAj5HoENyojZabS1j5NnLfko5xbi?= =?us-ascii?Q?OLZptuqoaRZM1vg03Nq9js6VrYyJFbW2hgPnq4mKaF8JZ7fhJP7rObjeKDTS?= =?us-ascii?Q?NUlNYOHqvkTLhs8SFDd8us+VLCYVc00zWnBJwirDeW2RBdCI+mJl/jZIBQRT?= =?us-ascii?Q?8WvZUg/sRf5erGh4aslLK7oj9v/1CCBolc/cJEiBRQ96hctIjKFf7vANl9G5?= =?us-ascii?Q?eUyFVWfmYei5x8uasXMbJqTtKxwSYUB+AkrQRjxq0BTPBUVh6AFXf9wXlhiC?= =?us-ascii?Q?BIvSiCZfI7/PbhTL/s9sAcoMiKRh5NbJ7ycVUl5a9shWiRh6TxoW1cPLjbD8?= =?us-ascii?Q?/o2MlPzULH8aKubxzPfTxEtEvckQGjchF7lihkA++I5Q3ngU0s4szok8sO6Z?= =?us-ascii?Q?4lcyTEzcdESLFstn7BNe7Qk6d9vBEoCdjlNhcBwPiw00HKgRu8UWxhrHnFb9?= =?us-ascii?Q?G9IYuIwSfLDYSwRZx9qRf29woPiF5YjwowzGrhmKPnBptHNi5qcceT2MDgf/?= =?us-ascii?Q?ioUIunr7yR1VEueFhuYVZf1nx1a+SwpiS2Sp1Krrf3e2DvnaIFIvPIgccfni?= =?us-ascii?Q?LIqpOaRKLXbq+p6mM3b51fF+T/lLu/EHPYWERn4IAKolMGFEZJTGs40M+EUW?= =?us-ascii?Q?iRSewygRAN3d5lue2CykA1w6YcXFYt+Y2GzaoJf4FN8ZfybbFF9dJ+iWxHhD?= =?us-ascii?Q?hqSvzZUI4q6bCNa48Ar9pDtxAC2RWa1DaIVvrEdtjzHxC1Fckn23gtcwRhYr?= =?us-ascii?Q?d5cDl9Oc+1Y+3r44oe2LvXB/UEVEN3nK8vbjy5y1NYh3p0bbqfBilOIJVg?= =?us-ascii?Q?=3D=3D?= X-Forefront-PRVS: 0343AC1D30 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1010; 23:Oll2FG5N3IsdQZL/dZE6sC2oEzSZyv5IYRLVJvo?= =?us-ascii?Q?gv0+lgaZ911C7KrZ7lHkDX8rqr/3QwUuCEAWo5G1Gx85orCXkLzcafbPqmag?= =?us-ascii?Q?eJceD81rzRMEkYEzCiHjBSkU+fPS0ODQsC4iOh3dqf1P9hme+rpg7ehTgIia?= =?us-ascii?Q?qinz/HI8BvOzL6OLJx/6kqIYaFeXRq7pjlJSG8GYfwKqex7X9/OY6ORKD60s?= =?us-ascii?Q?rek+lZCv3qd7HJHJMrafMTgeUBjiQRszCBiE/0p76bqPDJ73IyOP9oTH8Rrr?= =?us-ascii?Q?fAvhczpaoWO8Hod3sHCQXa62tw/2xtMvniPNonw8EZK6faDxplbI+qa8yAfv?= =?us-ascii?Q?L7GjmdacU0AMfr6HmNaQltrMLRkIDwGDaJwCT5hEErCgX26BeuD7iwuSHjzY?= =?us-ascii?Q?gqz1rA6Rp0eHL47Y8XiswT+K4a6l/qVG1bwhHurrFFHn6dIad2kt98mWuXaK?= =?us-ascii?Q?39QApbSJosa+WuvaVejRfi9v6wm91rhBhwJUDKpvWUTHSct91nDOtAFPaKtv?= =?us-ascii?Q?s9i85rdNAYXqAN5P55Ro+30zUMWgTybBmdF93RiPAeMFM4y8XQltcLpwyBrF?= =?us-ascii?Q?w69RkFP6kb5U+1y5OHCRnwPNW9bylnClkAbziaE6xnCzmszfHlIXPEfzEcpY?= =?us-ascii?Q?ZMozDhzVQTSN/k9ZkC3wvLIUW3Umle7L4mIJXVeCtL1WmClEhmYcwcR1IIfr?= =?us-ascii?Q?7sKR4PUiIpRLeyAXtwGIM0VaM25ZmC88GAX85AMb7xAsBP+2o8sMdnE64qoV?= =?us-ascii?Q?GS5XQdsK0l/QZIAiNR7TgKFGaru7/JNeTh8ARgzozGug2jyfkDVTcqOEqltc?= =?us-ascii?Q?fD1hAZwKKQYrOd7HwYA9sy0a9sWm9JhbhLeVfBBUS+nwB8y14ZXgK1v9m7E1?= =?us-ascii?Q?U0Z5qkavUd6+N3U5rPphCnDMrqd6/4BrlWGlNwApcT8U1qIBIjZHiE2bTSY4?= =?us-ascii?Q?DeGSoDVW8uvoH76wa87z2YJiiAudP+t7wFxLOKnrOaQj4tXk1Qf4iJsOU2fd?= =?us-ascii?Q?dCQQhv873JhDf1Ul3t1/lKGMD1zMVFCYxichRnGmsxqMFmTSWdmmLCS5kGVV?= =?us-ascii?Q?pyc0jC58NEVq2+WQ1A4xH+yPRmsekzOCG15GJIOPLV9jArrUWGr4pF4/wWj9?= =?us-ascii?Q?Z4IP/WA+Yr5IgCZ28m5arqUKhkQ9Q4K/xmhS/vUhdKmOID/NeXNfvQUaOnut?= =?us-ascii?Q?WOCISo8TlnmuPkh6TqNCx/yaSeds/VkoRGDdd?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1010; 6:FNjAhBdUgHGe7riymZR87QQDxPzKmAhIyi4mG9dX?= =?us-ascii?Q?dhdOFergkZg4fwZ8fSrju6ljxD9qPBURseCeK1Z7hoJ2bckUtwbGJqMztm0m?= =?us-ascii?Q?rlEw9wArWff8rEaXu57iV1Te+hXOSIC8SuD53qUecHkfQkAYYmtJ4MW3mCDV?= =?us-ascii?Q?jHu51kVcIvyJC32+/JTG3xuQsHmCY4p72xKvL2wccM9KV9aQocsVwrimm8O1?= =?us-ascii?Q?ARUIqwUpV9/fxHQuVRWVtPx3hSYCy4cQ8wc0m8rmNOL+CXb8CdZq1nzg6jEZ?= =?us-ascii?Q?MICNhVcNE0HzhcAVVZgLpvRSWmZ8MALprZm9FqiQUen8WOhNRFv9b2sEP+Ee?= =?us-ascii?Q?GeHH3mia4Zutz7atoI409uxQAZNDC2VfBXjuxDFxHlWVdfrLgUJI5Eh1w1LC?= =?us-ascii?Q?RfmeE8CkWGB5ISJ8PFzRu7dSgIMQMg+3WTAcq4uau+vW2JECT1TYg6GF83bD?= =?us-ascii?Q?ILyeZJRq7oArCnoySbBe2FDwJAoIOla8I+w6pZ/HN5VDlse3GtePAmIPSQv7?= =?us-ascii?Q?aUKTxT67BY6LQDLqT6KBFVFz3vXf+Xy0EXsDWVPM34mY3iMT2/Fa+CBOaKrb?= =?us-ascii?Q?iefZkjk2Cr1sVjrzK0jMFDi6zOoXh9srFFuKZakj05CcX1oz0YWUQXo71EFE?= =?us-ascii?Q?Se5u/+eNsPJnVJ7U0Opk5GxLrLP9Jdk9g5DSUOgEJa8npnRlKF2kxuEtUAuY?= =?us-ascii?Q?SDCIwiwRHWx+uhvzNLhHaKQuq0vURkoxBXTEk6kxK+u7yXfHL57NS7SnhhOL?= =?us-ascii?Q?1fRrtsPMNr8I3ZzyAWbQHGrfv93pCtq4RBd7buT5VvJf/+YqhkI/mqA2Y8vk?= =?us-ascii?Q?dt2K/I46C4U3IcmvANNDeRcg7jYKUTWLXIV+Iitl3OtudCBf+TP77SqNAht6?= =?us-ascii?Q?9IsAyooOHDGzXsg2A4xBJHsvtJh7zmQMPW2UaVGzvhwPj4dLlv931dTvjHAJ?= =?us-ascii?Q?VWeQwClo+h6LXjpdxFRN5iT+Sn3aUCaog9hmWHKFATF8qEGbEASbniSHkmih?= =?us-ascii?Q?YUE=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 5:YfKtLe4b1lZ07CAdyoNI8si5FYIErnnve6f24NbLJfDGOS9hOUc9mKUsRv+p6MOmRqncWm8dbZcehMuqaRlxYdxJjwqMHkLALo6iEz/yLpeqRBRO95WabRpaMKeEoVIxCXwPVU1OPeRbONkozqVa6Qmm4X8SJ/VVfCGVbfGuJg7NsVbuCRwSNqFfjSd0S9J5Q1qg9wWK1g3395S3/hGRPA6a87GxskKYYUesR/4GBpNdfXVEB/mrG3LbvUq7a1PFhUW87sHqI9ep/fJN+SzEQtPv394T8A7I4pQViktH7DZXnQPCA4YYpSZyM9LAZr3SOqzBxEGZ9+ZXdbnIE3yjsVPoblXIm4PlhO9R6evTkSPx1eSRgiFdbHYbrBkV80Lsg1R+WBco8jHZu6wpluZ8XySTRuvDDBVR5lKExdh9WhJWLblSPXzeTIj9mSYnFT0Ewirwv7N9Z7MiC/nAmADcpW9jHsxIINM4zhEUOtC277PPxylpEkWMUK65wKXNkHp+; 24:bvBQOmnISS+Wl+AwiCEbq0shAgFoMhmeGXMzz/48/7YB4PjHF0qJiRdPeMlx9ZlvkM20HiB7k4sd9KyJr9wVpNO2aVvfb8Xpak7vxubksrY= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1010; 7:yFVhLXecD0onUNLg9t+msr2HB+1sQ+Ysc2izAoR/6BfRQX6eH2UB/tMnIzQV+DvJFv+NYCSqI6xXFm7TeglGw+zLQXz9Ok5OldnqE4KcCZ/jjA+RZZh28otvDFhQoM2tc9pmzk8bTQjey1r79AWYrd+tiTIG84fp0h3HodY7Z+EKV2FisBb5wW6EPIdBoMxYg2RNykWSyrFLM4VkXeHPZzzGu2+d0HIVpmmgJxrq3xq5E+vufZttvF8bGhEnB8xdOuxdZknCYrgSfTEgN1WX4v0H2gnCMb1dqvPdJTWy/7tJgjp0Q4JferE/bQ0yp/b2dO9MqNRNfqBkDNv10hyT3d1K9nM/QejUfIghV3ajpzdiqbEXw23utcYC2rbr/Ne/pyFTLwo+lZgvVyRjlMHXZR8em29/r+5hnqQPO5tThCPajuseRCevjWs4c2dYcWeU4f/FIGUsPe4AWin8FnFsxOQZZX2/gEbVUL/GjH7qELQGIq5SuwjaFBIv4Cb2KyckJk6RzNs2RNX9fZkSVyKMvj1g5QP0RWt7Z+C2paJsTHjEqyBXB384UTuAd0kchxWE711SvBspTYk7y2CHLa/UzbJeYOVCtMgCR2JrxgXXfSSE0/ZalaJfUwGlCPKpSM8TuU5Pg2gK7dYYCr10o18CNXVEyuHcIGhmwNA43od74AL73k9gS4cNX2uHddvMNWrAoWt9GKA6bqRcJFpG9LHmg2fMBedAi9ev6P7qKxv1/2+M0SyQj2Y5XVl6B5dEWy7Q8wSaAFLXcp3i4q2w5xRd2BqeaQIJNm9aInouK6gfHOI= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Jun 2017 07:43:12.2343 (UTC) X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=711e4ccf-2e9b-4bcf-a551-4094005b6194; Ip=[50.232.66.26]; Helo=[CAEXCH02.caveonetworks.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BLUPR0701MB1010 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org iWARP would require the chains to allocate/free their PBL memory independently, so add the infrastructure to provide it externally. Signed-off-by: Yuval Mintz --- drivers/infiniband/hw/qedr/main.c | 2 +- drivers/infiniband/hw/qedr/verbs.c | 6 ++--- drivers/net/ethernet/qlogic/qed/qed_dev.c | 35 ++++++++++++++++++++------- drivers/net/ethernet/qlogic/qed/qed_dev_api.h | 5 +++- drivers/net/ethernet/qlogic/qed/qed_iscsi.c | 6 ++--- drivers/net/ethernet/qlogic/qed/qed_ll2.c | 6 ++--- drivers/net/ethernet/qlogic/qed/qed_spq.c | 6 ++--- drivers/net/ethernet/qlogic/qede/qede_main.c | 8 +++--- include/linux/qed/qed_chain.h | 7 ++++++ include/linux/qed/qed_if.h | 3 ++- 10 files changed, 56 insertions(+), 28 deletions(-) diff --git a/drivers/infiniband/hw/qedr/main.c b/drivers/infiniband/hw/qedr/main.c index 485c1fe..5a32b80 100644 --- a/drivers/infiniband/hw/qedr/main.c +++ b/drivers/infiniband/hw/qedr/main.c @@ -276,7 +276,7 @@ static int qedr_alloc_resources(struct qedr_dev *dev) QED_CHAIN_CNT_TYPE_U16, n_entries, sizeof(struct regpair *), - &cnq->pbl); + &cnq->pbl, NULL); if (rc) goto err4; diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c index 17685cf..80df89b 100644 --- a/drivers/infiniband/hw/qedr/verbs.c +++ b/drivers/infiniband/hw/qedr/verbs.c @@ -925,7 +925,7 @@ struct ib_cq *qedr_create_cq(struct ib_device *ibdev, QED_CHAIN_CNT_TYPE_U32, chain_entries, sizeof(union rdma_cqe), - &cq->pbl); + &cq->pbl, NULL); if (rc) goto err1; @@ -1413,7 +1413,7 @@ qedr_roce_create_kernel_qp(struct qedr_dev *dev, QED_CHAIN_CNT_TYPE_U32, n_sq_elems, QEDR_SQE_ELEMENT_SIZE, - &qp->sq.pbl); + &qp->sq.pbl, NULL); if (rc) return rc; @@ -1427,7 +1427,7 @@ qedr_roce_create_kernel_qp(struct qedr_dev *dev, QED_CHAIN_CNT_TYPE_U32, n_rq_elems, QEDR_RQE_ELEMENT_SIZE, - &qp->rq.pbl); + &qp->rq.pbl, NULL); if (rc) return rc; diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev.c b/drivers/net/ethernet/qlogic/qed/qed_dev.c index 65fe494..8b14054 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_dev.c +++ b/drivers/net/ethernet/qlogic/qed/qed_dev.c @@ -3075,12 +3075,15 @@ static void qed_chain_free_pbl(struct qed_dev *cdev, struct qed_chain *p_chain) } pbl_size = page_cnt * QED_CHAIN_PBL_ENTRY_SIZE; - dma_free_coherent(&cdev->pdev->dev, - pbl_size, - p_chain->pbl_sp.p_virt_table, - p_chain->pbl_sp.p_phys_table); + + if (!p_chain->b_external_pbl) + dma_free_coherent(&cdev->pdev->dev, + pbl_size, + p_chain->pbl_sp.p_virt_table, + p_chain->pbl_sp.p_phys_table); out: vfree(p_chain->pbl.pp_virt_addr_tbl); + p_chain->pbl.pp_virt_addr_tbl = NULL; } void qed_chain_free(struct qed_dev *cdev, struct qed_chain *p_chain) @@ -3174,7 +3177,10 @@ qed_chain_alloc_single(struct qed_dev *cdev, struct qed_chain *p_chain) return 0; } -static int qed_chain_alloc_pbl(struct qed_dev *cdev, struct qed_chain *p_chain) +static int +qed_chain_alloc_pbl(struct qed_dev *cdev, + struct qed_chain *p_chain, + struct qed_chain_ext_pbl *ext_pbl) { u32 page_cnt = p_chain->page_cnt, size, i; dma_addr_t p_phys = 0, p_pbl_phys = 0; @@ -3194,8 +3200,16 @@ static int qed_chain_alloc_pbl(struct qed_dev *cdev, struct qed_chain *p_chain) * should be saved to allow its freeing during the error flow. */ size = page_cnt * QED_CHAIN_PBL_ENTRY_SIZE; - p_pbl_virt = dma_alloc_coherent(&cdev->pdev->dev, - size, &p_pbl_phys, GFP_KERNEL); + + if (!ext_pbl) { + p_pbl_virt = dma_alloc_coherent(&cdev->pdev->dev, + size, &p_pbl_phys, GFP_KERNEL); + } else { + p_pbl_virt = ext_pbl->p_pbl_virt; + p_pbl_phys = ext_pbl->p_pbl_phys; + p_chain->b_external_pbl = true; + } + qed_chain_init_pbl_mem(p_chain, p_pbl_virt, p_pbl_phys, pp_virt_addr_tbl); if (!p_pbl_virt) @@ -3228,7 +3242,10 @@ int qed_chain_alloc(struct qed_dev *cdev, enum qed_chain_use_mode intended_use, enum qed_chain_mode mode, enum qed_chain_cnt_type cnt_type, - u32 num_elems, size_t elem_size, struct qed_chain *p_chain) + u32 num_elems, + size_t elem_size, + struct qed_chain *p_chain, + struct qed_chain_ext_pbl *ext_pbl) { u32 page_cnt; int rc = 0; @@ -3259,7 +3276,7 @@ int qed_chain_alloc(struct qed_dev *cdev, rc = qed_chain_alloc_single(cdev, p_chain); break; case QED_CHAIN_MODE_PBL: - rc = qed_chain_alloc_pbl(cdev, p_chain); + rc = qed_chain_alloc_pbl(cdev, p_chain, ext_pbl); break; } if (rc) diff --git a/drivers/net/ethernet/qlogic/qed/qed_dev_api.h b/drivers/net/ethernet/qlogic/qed/qed_dev_api.h index 12d16c0..1f1df1b 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_dev_api.h +++ b/drivers/net/ethernet/qlogic/qed/qed_dev_api.h @@ -307,6 +307,7 @@ int qed_dmae_host2host(struct qed_hwfn *p_hwfn, * @param num_elems * @param elem_size * @param p_chain + * @param ext_pbl - a possible external PBL * * @return int */ @@ -315,7 +316,9 @@ qed_chain_alloc(struct qed_dev *cdev, enum qed_chain_use_mode intended_use, enum qed_chain_mode mode, enum qed_chain_cnt_type cnt_type, - u32 num_elems, size_t elem_size, struct qed_chain *p_chain); + u32 num_elems, + size_t elem_size, + struct qed_chain *p_chain, struct qed_chain_ext_pbl *ext_pbl); /** * @brief qed_chain_free - Free chain DMA memory diff --git a/drivers/net/ethernet/qlogic/qed/qed_iscsi.c b/drivers/net/ethernet/qlogic/qed/qed_iscsi.c index 6103723..5a1ed05 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iscsi.c +++ b/drivers/net/ethernet/qlogic/qed/qed_iscsi.c @@ -752,7 +752,7 @@ static int qed_iscsi_allocate_connection(struct qed_hwfn *p_hwfn, QED_CHAIN_USE_TO_CONSUME_PRODUCE, QED_CHAIN_MODE_PBL, QED_CHAIN_CNT_TYPE_U16, - r2tq_num_elements, 0x80, &p_conn->r2tq); + r2tq_num_elements, 0x80, &p_conn->r2tq, NULL); if (rc) goto nomem_r2tq; @@ -763,7 +763,7 @@ static int qed_iscsi_allocate_connection(struct qed_hwfn *p_hwfn, QED_CHAIN_MODE_PBL, QED_CHAIN_CNT_TYPE_U16, uhq_num_elements, - sizeof(struct iscsi_uhqe), &p_conn->uhq); + sizeof(struct iscsi_uhqe), &p_conn->uhq, NULL); if (rc) goto nomem_uhq; @@ -773,7 +773,7 @@ static int qed_iscsi_allocate_connection(struct qed_hwfn *p_hwfn, QED_CHAIN_MODE_PBL, QED_CHAIN_CNT_TYPE_U16, xhq_num_elements, - sizeof(struct iscsi_xhqe), &p_conn->xhq); + sizeof(struct iscsi_xhqe), &p_conn->xhq, NULL); if (rc) goto nomem; diff --git a/drivers/net/ethernet/qlogic/qed/qed_ll2.c b/drivers/net/ethernet/qlogic/qed/qed_ll2.c index 0e26193..f9c51cb 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_ll2.c +++ b/drivers/net/ethernet/qlogic/qed/qed_ll2.c @@ -1056,7 +1056,7 @@ qed_ll2_acquire_connection_rx(struct qed_hwfn *p_hwfn, QED_CHAIN_CNT_TYPE_U16, p_ll2_info->input.rx_num_desc, sizeof(struct core_rx_bd), - &p_ll2_info->rx_queue.rxq_chain); + &p_ll2_info->rx_queue.rxq_chain, NULL); if (rc) { DP_NOTICE(p_hwfn, "Failed to allocate ll2 rxq chain\n"); goto out; @@ -1078,7 +1078,7 @@ qed_ll2_acquire_connection_rx(struct qed_hwfn *p_hwfn, QED_CHAIN_CNT_TYPE_U16, p_ll2_info->input.rx_num_desc, sizeof(struct core_rx_fast_path_cqe), - &p_ll2_info->rx_queue.rcq_chain); + &p_ll2_info->rx_queue.rcq_chain, NULL); if (rc) { DP_NOTICE(p_hwfn, "Failed to allocate ll2 rcq chain\n"); goto out; @@ -1108,7 +1108,7 @@ static int qed_ll2_acquire_connection_tx(struct qed_hwfn *p_hwfn, QED_CHAIN_CNT_TYPE_U16, p_ll2_info->input.tx_num_desc, sizeof(struct core_tx_bd), - &p_ll2_info->tx_queue.txq_chain); + &p_ll2_info->tx_queue.txq_chain, NULL); if (rc) goto out; diff --git a/drivers/net/ethernet/qlogic/qed/qed_spq.c b/drivers/net/ethernet/qlogic/qed/qed_spq.c index dede73f..a971916 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_spq.c +++ b/drivers/net/ethernet/qlogic/qed/qed_spq.c @@ -419,7 +419,7 @@ int qed_eq_alloc(struct qed_hwfn *p_hwfn, u16 num_elem) QED_CHAIN_CNT_TYPE_U16, num_elem, sizeof(union event_ring_element), - &p_eq->chain)) + &p_eq->chain, NULL)) goto eq_allocate_fail; /* register EQ completion on the SP SB */ @@ -547,7 +547,7 @@ int qed_spq_alloc(struct qed_hwfn *p_hwfn) QED_CHAIN_CNT_TYPE_U16, 0, /* N/A when the mode is SINGLE */ sizeof(struct slow_path_element), - &p_spq->chain)) + &p_spq->chain, NULL)) goto spq_allocate_fail; /* allocate and fill the SPQ elements (incl. ramrod data list) */ @@ -953,7 +953,7 @@ int qed_consq_alloc(struct qed_hwfn *p_hwfn) QED_CHAIN_MODE_PBL, QED_CHAIN_CNT_TYPE_U16, QED_CHAIN_PAGE_SIZE / 0x80, - 0x80, &p_consq->chain)) + 0x80, &p_consq->chain, NULL)) goto consq_allocate_fail; p_hwfn->p_consq = p_consq; diff --git a/drivers/net/ethernet/qlogic/qede/qede_main.c b/drivers/net/ethernet/qlogic/qede/qede_main.c index fdf04bc..37ad799 100644 --- a/drivers/net/ethernet/qlogic/qede/qede_main.c +++ b/drivers/net/ethernet/qlogic/qede/qede_main.c @@ -1317,8 +1317,7 @@ static int qede_alloc_mem_rxq(struct qede_dev *edev, struct qede_rx_queue *rxq) QED_CHAIN_CNT_TYPE_U16, RX_RING_SIZE, sizeof(struct eth_rx_bd), - &rxq->rx_bd_ring); - + &rxq->rx_bd_ring, NULL); if (rc) goto err; @@ -1329,7 +1328,7 @@ static int qede_alloc_mem_rxq(struct qede_dev *edev, struct qede_rx_queue *rxq) QED_CHAIN_CNT_TYPE_U16, RX_RING_SIZE, sizeof(union eth_rx_cqe), - &rxq->rx_comp_ring); + &rxq->rx_comp_ring, NULL); if (rc) goto err; @@ -1387,7 +1386,8 @@ static int qede_alloc_mem_txq(struct qede_dev *edev, struct qede_tx_queue *txq) QED_CHAIN_MODE_PBL, QED_CHAIN_CNT_TYPE_U16, txq->num_tx_buffers, - sizeof(*p_virt), &txq->tx_pbl); + sizeof(*p_virt), + &txq->tx_pbl, NULL); if (rc) goto err; diff --git a/include/linux/qed/qed_chain.h b/include/linux/qed/qed_chain.h index 5cd7a46..59ddf9a 100644 --- a/include/linux/qed/qed_chain.h +++ b/include/linux/qed/qed_chain.h @@ -80,6 +80,11 @@ struct qed_chain_pbl_u32 { u32 cons_page_idx; }; +struct qed_chain_ext_pbl { + dma_addr_t p_pbl_phys; + void *p_pbl_virt; +}; + struct qed_chain_u16 { /* Cyclic index of next element to produce/consme */ u16 prod_idx; @@ -155,6 +160,8 @@ struct qed_chain { u32 size; u8 intended_use; + + bool b_external_pbl; }; #define QED_CHAIN_PBL_ENTRY_SIZE (8) diff --git a/include/linux/qed/qed_if.h b/include/linux/qed/qed_if.h index 74f6b99..ef39c7f 100644 --- a/include/linux/qed/qed_if.h +++ b/include/linux/qed/qed_if.h @@ -634,7 +634,8 @@ struct qed_common_ops { enum qed_chain_cnt_type cnt_type, u32 num_elems, size_t elem_size, - struct qed_chain *p_chain); + struct qed_chain *p_chain, + struct qed_chain_ext_pbl *ext_pbl); void (*chain_free)(struct qed_dev *cdev, struct qed_chain *p_chain);