From patchwork Mon Jun 26 18:07:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michal Kalderon X-Patchwork-Id: 780829 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 3wxHJf353qz9s5L for ; Tue, 27 Jun 2017 04:14:42 +1000 (AEST) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=CAVIUMNETWORKS.onmicrosoft.com header.i=@CAVIUMNETWORKS.onmicrosoft.com header.b="Pz7XTW6V"; dkim-atps=neutral Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751887AbdFZSOe (ORCPT ); Mon, 26 Jun 2017 14:14:34 -0400 Received: from mail-bl2nam02on0053.outbound.protection.outlook.com ([104.47.38.53]:58307 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751376AbdFZSOZ (ORCPT ); Mon, 26 Jun 2017 14:14:25 -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=pvL8mh4lxDNHILjsL57zNYGKZPrN3OqB+/vI6/0NmGM=; b=Pz7XTW6V/DxLUDRY0o3Y1WOK4ScNLsWK6laL8nbaBmShl7JCXhJUzg+QMQuXKA2kiKlETiff589WaG11m4UfUFN0cd8BdFdYLmm90vHASijnpsVLtF+2plRj+GRt4j9VTy7EoH4kf+zEBUqVmXodGWuvGOdnQg0/funfRe+qwT0= Received: from SN1PR0701CA0012.namprd07.prod.outlook.com (2a01:111:e400:5173::22) by CO1PR07MB426.namprd07.prod.outlook.com (2a01:111:e400:103d::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15; Mon, 26 Jun 2017 18:14:22 +0000 Received: from BY2FFO11OLC014.protection.gbl (2a01:111:f400:7c0c::132) by SN1PR0701CA0012.outlook.office365.com (2a01:111:e400:5173::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1199.15 via Frontend Transport; Mon, 26 Jun 2017 18:14:21 +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 BY2FFO11OLC014.mail.protection.outlook.com (10.1.15.48) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1199.9 via Frontend Transport; Mon, 26 Jun 2017 18:14:21 +0000 Received: from lb-tlvb-michal.il.qlogic.com.com (10.185.6.89) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Mon, 26 Jun 2017 11:14:19 -0700 From: Michal Kalderon To: , , , , , , , CC: Michal Kalderon , Ram Amrani , Ariel Elior Subject: [RFC 15/19] RDMA/qedr: Add iWARP support in existing verbs. Date: Mon, 26 Jun 2017 21:07:05 +0300 Message-ID: <1498500429-22557-16-git-send-email-Michal.Kalderon@cavium.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1498500429-22557-1-git-send-email-Michal.Kalderon@cavium.com> References: <1498500429-22557-1-git-send-email-Michal.Kalderon@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)(6009001)(39450400003)(39840400002)(39850400002)(39400400002)(39410400002)(2980300002)(428002)(189002)(199003)(9170700003)(6666003)(2950100002)(104016004)(5003940100001)(38730400002)(8936002)(107886003)(5660300001)(47776003)(2906002)(356003)(50226002)(8676002)(54906002)(81166006)(86362001)(575784001)(77096006)(2201001)(105586002)(478600001)(36756003)(101416001)(50466002)(76176999)(50986999)(189998001)(305945005)(4326008)(72206003)(106466001)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:CO1PR07MB426; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC014; 1:HgMjnDlAA5RXnY5+M4a8G6eRtV4EIIIeLwK/jybTlE6nXrfWBP3i1a6HxkjXu7ml4zM1mTWgeoy6+Pb3+mk2LNmRC2E29NNPBM9FemkgzdVq1YCigCEuUGo7rooKvL0Sr/L1qWaACP52X9a/o/S2L8BAIEqurAOCQHkLtt4sfeMDcnmau81HRKBWhm4rCttvNEaTfowL7v+U26UIsC0ZxfE9tLKK+H4VoHqpzLCAHTN53LZCo17pxEct69NfTnABj/40OPwrYi7Q2kslsFAruL3YD9jQiwtpKt95fI6ygPgGIB5BWFdzBJenVviYeq1l+Xo1H7Rlqo5hmr5AY75joZPxx3gT6eJxCNKZS3gw0obxfnd/6ZODjGo4JxSgLu/rLZWc9EHI6C3Swv1QPQyN8QaTWHm0r1tz7ELsOlB9fZwHHP6hcV0YF4SbIf0M306IaAyx6JdwLN4xqXX/SdEY3ejKDLHTxYEtxfI3SRE2wek5wdaCNPgmq74omW+mCLFJfy1QQrs9Dl2CNrGwdr2rSsDFv914Nm5XzVaj57/ynGYTXCrln3XixK4Be6GfgZoff7WquHpjB5lb+jooyq/lWVyvVS6N4Aex5Bf+Aeirru0SNx2T7ST1IhY+ynz1ztJbEPPJuWUQis0fTfS7zNjEU4kvQxNd5NiW5gMP/8WYrA5lSbv/4iMys11PxqN017w8nO199Wr4ynWhmOHYjano2Q+AygebWNIZwkS9we5ldW0r8GgYeQu3Q0LA+frUl6An7S0KdqWl1qErD6IbGAmxw4RYrwtH+MxmuFh6jokwFmxjsF42MzC49wqbQnsNfBJAwGQxf6nF9xEzSFBlcjAWFVehCI9hH27ps421YtPSrbg= X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cfc1a2e5-8214-45cd-e4ae-08d4bcbf2b65 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506067)(300135500095); SRVR:CO1PR07MB426; X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 3:pxYPgfEMzkm/GnQ5wP+yYmHGmfygGoyAL1cKxpKrDR5KLukx2DootyRctc6aPxVkY+D79uvhEl9ATmc4lECgUiJsMj6y5/VFVmwpqR97yFI45kQpZBjSlq2yYrAQ2oi89VyNNWKlP5yp6EdixsTFDjXl5pODZu8spY3ZDQ/dIRMbsa5qcPne41AQaZyGIQSEeMGczJ+JFsV4tMqjUFCL5vTX1bQcj77Az42cASuJJQk96MfrOCVcqVqJPO+e4sEfAk126z9MkOSEb5j5jSeXUHl9BzJS8dZhgsLzmg3nEYjOV148yKyLh0c9UZkBm5cJ2yCbroWDhVyqxvnJYv+fneMWL8AKt8n4TnRarRb0saYFJZAXlJtnOMFodM6n6k0693jhVTIBxh3cOmeYyAVD+hRUs+EE9mIgrNTG6F2foOFC1XFTB0yb12e1KFe4pcesqm9JZeW5DJLgZ1SPjqs10DVIfL9V4340PjEV8rBwiizWJXOsPJUzXgmvf3BFoC58QEKtDx+0WccRHE19cIhh7d73lxOtUb8W2vNeGV3c3YaKt8dIVhRdQW9pz84Q1jhXNz8H0TYI8Q7+ncovLeO2A9FyMmiMCMpEonOOD9bEF12xvoyZ6UdPBSZe2HDpp1JGElsTO+btUQV8W9iN7c6WblTAyOYrbI801QrmvKn9rdywCrYSBESiqrx5/7W7FERwWmwBr7ZHg/FyOsjq3u6xppLrLG31f7i9bNBlMKI6Ph6yjC0w+PLI3dMA8mGmSOWzS1LZZp3wRrbXW/VIYse2z1X8s+ueGba2WBdw4wq8RilIXbgxk4W2bqzEhukrV655NIuGNqZnZR6a4Ted8EIE1eYRFvtS8b4Qp++D+RuGqR1f898mTVPU6dmwMjgj176qSKeYMz9B5KR7HSQ+rx3GjA== X-MS-TrafficTypeDiagnostic: CO1PR07MB426: X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 25:OhO44jABlfm42wh9dUKPMzhE+ShETvOrvTfNp/cPQx1Mpa88k2+sAhSe05fBpWV0ERXaF9fah8UmVujXW5Zz+rLVGHHZoK+Kyc59jFJHMxFhqHesXfOvIHkMoU3zNNEDY2r0i+co9pRrYtC2XUhhnQEyKtdLlj6tgi1TtsDQCSKwE6MF5leRanGrbs7jPRgaFTVRXhlqEoiK2EMULeTpEX4temV11JBw/Ktpv9qq73q1dMGnK6dyLvi5i0xCROrSNsqpNyk/dbSNgfSjd6n0um1VQw3pcBoqZQEtXEeem7Adf4n8D0pEv9Iijtd6xwaSqXd3NgGloMDOJrIWj9K7REdJm48HfOgjX3OiRlSqzHU6caZt2BeJbrnWZmME3Inhdc9sTOq5lgoiYtIbgSOrcq1HA0AFcX5XD9GlCSiDzFXsQmVCyWQWiqVePdDLkvcuFUXpjce8VtZp8XLEPLgme/Y7v37foAwzeyTzd6lut1mjRsBuR9qU+6hkDuWs5OtblZDFQzviwkqROlar9XXCsXwH1k8Qi1WWHduRssL20jZHgquAKKYBlJHBG+qVKKSE9i+L3RPrlvVUDVj7VLVu93kJnpMqaa51dJ+qSQ2WHHFFq3jhZmCeVaGSmkq7cqnIVGkWGbp/F3mfuNYti0ma2iUdUUFQ/yDK7n7tuDUoxHAdLPPsihHEPNRusMY2wcRtlh2h7BehQ6oGSiS5rB3ihp9XaFsbabUzH82Px8ZFzVWgamOHQc2aXCJdGZN859Deef+r+pgTW7yLKQ9YwGk/pkdOrQq/6JD8ASEn1fGzDptbt9hBptuUSJNFLg819YaWyG1qrAE0d32jlUXmj4W9WGOPwZHnq9dpN2o9Nku3TD8Gz46cuMqWgWsZ/AODzdcJxVV+8mlIrJxKhSaFSvcFeJ8PH5lP5niX71h1R6jR0to= X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 31:PY7OyfkbahAOsm2kbp5SoeBHQ5kOg8hmPw7bIy7HC92cgBSjCv61djrNFZ7Bv2xCfZuffHUnAWrMb+WEn8RSMOdtu9qsEKhj2UqcE9WmQ10encCEcU4Kqm2U6ZwF8MAdcPZeEmOREyd1mrETuvjXZGNoayQw8qUFayJHT8yBf6fdf0nD2cY11v2Pi3KSoV5D/npkYSrtpGKHfHMhGQgOwPV+kfTmbWslsVm/pdYWJ3v8IS9vc6bZU8Rir/1xQnm8hnyl/5KnRokMfToV+pRvBUQ2Eb3Tj1hxH7XUlMjxJtwtCrXs0pCoKHG5/+GsF/jGDohDzb267rndoltTkFdd86kjrto6eK/EfsnDpDApAORozd9qYzT7hEEL+ClEeuM9pkGxn+xFkaVD/NDjDbQsQ308kRDWShPoDq6vybFZY9zWQL+3wkXw8L9CcaYEmsHxJSw/msnv8PUnRnK2VP4aGkVWFMx4Cgc9y0GRFuQvSGo5PWzpGpCxOAjXj4ST6/uxSwqFv2R+8+gM8gW02IXyV4eOGgQ7xedE5XRdjHBB1gPtEIxAzumykGxDcFnph7ds9hsQCAhLGBJpbqZYdBFy8dqP3Yj228dd9mFweDa3JXX98YRrYEvcwy+6E7nHiMc6vl3rXyz22bAgTXkB8uxmi/b4X9Fh4wMxs1yH5189DJnibFnuV//VAxthvQAmg/dMhBKGGrCwbGBPMtPQ+ksiXw== X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 20:JzlpAkM9bjjtXmHS1We4vRaXZ5R1hlgSRZvuunuSZKPKOvhLrl78pwG6axltEHvaEJkwuYUAwfiWIyOen8o3AzXTrFz3ybTxWZ0V1cKbJKvC+f47SLu2SMkW3JkPPYQIIZLf3Rn/2hNxmZ8mUHNLK7Dis8f97Si+2RZvOLdT73iKVqI7IXdAo3Y6AT+oqOqhPSizc2+Nn3tYC48I9+LKgoGWKgLP+vfmBI9HXYHPYy6rDdzfngh1ZeSzOSedXZa2rRmzRiIEgHx0hLTFfnnfNZztUvQSlo7nvMtPwxeS4IbroYQiDZ1oNVa+mQXkcKv/BU8pXSNQqPM23swUDM7+KgZQMMmiQZTyhDoEGtNGTOBDo2W7+2ANtRtrEbT7G3wVU7kB1HUjBddi5Z6lO5+h5txmQr5jO6Pox4NoexYHPHyjDR00eGIChfqJ5DPL+FUDcEKo4/CZklFxEhEUKW9zXZ81KkIE3mjt93xZpxjbug9yG5Hfg0QTLMVA7FYgW+Y1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(133145235818549)(236129657087228)(148574349560750)(167848164394848); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13016025)(13018025)(5005006)(8121501046)(100000703101)(100105400095)(10201501046)(93006095)(93001095)(3002001)(6041248)(20161123562025)(20161123558100)(20161123555025)(20161123564025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CO1PR07MB426; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CO1PR07MB426; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR07MB426; 4:WhaEM81iQTo4Y8YHBDezyTPFlN9Huvq7AccPJapQNW4?= =?us-ascii?Q?jhIivrOfPubW4OrZhLzyGpVkt4MzqfeDLvqLUp8up6uzMgQrM/KffwMt8hEE?= =?us-ascii?Q?Ton6RhlRYvH8GTGIiduU4wuHz9WiiLaym3TvL8kswe7L/gl+LZoGcVI0OCh6?= =?us-ascii?Q?H6MmvzpjMbGX72G/14e8AiKXlFe5ZUWsUJkgAOSHe5gVWfABLB77QBgJwLLX?= =?us-ascii?Q?1QcTzzof4yKR2bJO/2BQLPxtk9vsgCWfFcqEnQc5OAjuwWd/lu9fkRq0ayZb?= =?us-ascii?Q?ucWK8pS7RmUcaQbBC+JZMU7q8XYl6DzCZjnttrEthsAqtwyLr8etl8krouPx?= =?us-ascii?Q?af/zXkYMq4uZ559QLFqd6UJpjB5K3RBW+f9QQidi85NHvAiyXzgGp9p74NKp?= =?us-ascii?Q?zh5jvDN8D8+28RghFnOXjajn0Y5BquM2a4DbhoLk0nJ3V/Qm1fJGibKYdQG/?= =?us-ascii?Q?ph1F5H7HGvF8qa2LKdT955DAVfk6l68N74j/x16YuRWS7sqxyPBXT3fr3sb0?= =?us-ascii?Q?XYO0E79KrYHsIsmB6g2OkJOHUHHjtGi8NnOpQxj24lct093hcLqc4XLZxV7+?= =?us-ascii?Q?XekCFxgO2kOHPIhMG8XY0/EeDUZZTABwIa6j0DdLKklmwS9Db85Nv829YiLl?= =?us-ascii?Q?B4IUpqeC2Gbh8BPk85GKU8wLkE4/mZDnrp8doBqSSIDghJ/T9n9wYmX4dbNN?= =?us-ascii?Q?g354VjGiYKl+NRyN+6RNxS4eIXTMrayefGVDqoHpi7RUyYOIIz4DnzlJfBSU?= =?us-ascii?Q?xIl5fSS3aEUucPlIKMoe7vUXLh90SklVwhDU30GtegkGcBPhfOOMnxCUbyAu?= =?us-ascii?Q?asDynTmyYR0sCkELwkUAjOF7+7xcK67iHgdLTbFf9jsr4ge6PSUg40lIzCUT?= =?us-ascii?Q?iNN5J4wDapCMJ+u4hWebbwy39PTbVOwA5fm50Clrs4WNDZ/rZ72r31sNLo8C?= =?us-ascii?Q?hV9tHz/p5fz3h//hRAiR6eCAChxsskfmwZCoB00jOjt+PkacsvsE8hdDT2o4?= =?us-ascii?Q?0VWmOAEdxf9P1PJDRPqiT5/0qg3Qj+lRt9Wpbdphf7JIi8fQf4vjjKBXs0N0?= =?us-ascii?Q?Orkcs3c6TZwtkAIhM+K0oqh+0+q20OC79RKhXu931XDEOfJMolKThhEnYmBB?= =?us-ascii?Q?FcjBjm/CKT5X93pOLPbtgClnu1ZCYXU4HvaBe52X2L0ty16IkqFZR/JH85q0?= =?us-ascii?Q?1TGTZ2a5u9wi4fQUW+MlGH7AgDi16/62nyuDjNMddkkQJy2mxx8ZTqsASSPx?= =?us-ascii?Q?LJiswnTrv69uquheJ5RGxZy8Azn2hTgvxxpzb4A21nDAN2AxeoK3N46rLGQr?= =?us-ascii?Q?xblmNldzpiRt+wyEe+Tx2AH6G1r3s2rzm6z/CEtod?= X-Forefront-PRVS: 0350D7A55D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR07MB426; 23:EM6I3HN7lsvvAJKA/Dx+DH7cjEynK31FCpS81KzCL0?= =?us-ascii?Q?0R3ZfaKbJtKvRzogMY1gxABtvkHOWSQmjw1pAXvNMB8ElphWO+gp/HFolTyj?= =?us-ascii?Q?sCQ1nqYogXXZOtIaA5lBQlRYRjOoZkmSg1MNYO6Udz+wCb2z6/HJD3NGhLca?= =?us-ascii?Q?P/XZUBoyu5BQcShU/CpI4CCIGh1YEGnWl3lkZfGZvoDLajNnDg4KMzq/yZu1?= =?us-ascii?Q?YW+NNrAN5HXPzZsjrJjDzHS8gLpxECDjIb1V/aevBPfXYAejVXzvrMvBWLA6?= =?us-ascii?Q?78jUbDevNQI2fA2lwKqouTC6BaFUef5fW19UOMJRGRc3MN31Z/X271WB+c0q?= =?us-ascii?Q?KcAYZt5BCzXs2X0HYU4lDL/iCXnR6BZFZyoNNIA6BdUoKIVuF3X5njs2AnK+?= =?us-ascii?Q?c5aXDOR8n85GcRPdYWvQSzbaJ8Xg/YF1jf9nIdDKLo7fQ716zG7exI9pbJZm?= =?us-ascii?Q?xtvf+Y1xVp6K2y2ibr6OXZ+EBT+FIRCPlJDAIF18YVIOiT0KrdPids5YijJN?= =?us-ascii?Q?8vASBAAbdj+z0CL1pEcZYjj7ZTTRyPXycYX0eE93P7y7NDj088i/jXT/CNHD?= =?us-ascii?Q?8QWgRZ0DsmjQZWWa5HQ9/UKywQt/aePEG0yPbroyyF88F2ZGSvrClOvh4J4V?= =?us-ascii?Q?mIqqYyEaRYPwOH1N3ejd7GsGIQxQPCDM8MWZ58WlFuEV1RjXABio1jGbzqjt?= =?us-ascii?Q?4CgRk6D2vbax7aLUHs2lKEnwx0XbB4STNzWumquD7OP4GdWU0Mzw1ygXTkvb?= =?us-ascii?Q?89+NnXoi+Eax4dTFpYHwbyh+ogIZkLovZwMU+TfektiU/UfuptdIuZvntcwQ?= =?us-ascii?Q?5CeR7GUIyJvo7tkONCecNkjEfd1+Vda8pnP3Bx01j9yN1Yr+xdZG94jXaE4u?= =?us-ascii?Q?P6BYu47PGbYX9VjN9NbqvhSVgRqWbD0IVBtYbrUycQDApthCcen7TZ7m4/OW?= =?us-ascii?Q?n7lcgScmQJnjrefCjg2qLXG9o8iS5rkw/0VblMGlWJaRp6imuN7ARmu1qjBa?= =?us-ascii?Q?Nxo9QaJKwWZgQ74V6BsRpwupo9Hew0i84QoXl2+iESav561jhuXdeyFGHoJb?= =?us-ascii?Q?1wkqe390CESutqc2cUqbdeWQF7+EETlzpWSezBY7uLzraDSQ=3D=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; CO1PR07MB426; 6:lD9UmAbAjxlJ6piFK0GMmxl7cvroJ7uUBJ5l9hUiuDm?= =?us-ascii?Q?B/D3kiM2USh2N45IgQW2YmoA+RH9/TockTRbLJvZJiTPsyMsdtOItEmv4E+J?= =?us-ascii?Q?rBUeHzvoxd5e+ID3xWnDbeHV/fAx0pI35he0v9T4/cwEoXqma4Kn+T66uFQO?= =?us-ascii?Q?NQ/COAvoR7YTrHsHBpSNT+s1OOIc3QMuqYLnu4J7k7ExlL3b6QCD4hzb1XQx?= =?us-ascii?Q?zLvoC1Xllqzvl/eRaVssYHhKR5NN+lspI4lyNY1IMly6R4GGCkMfvi3RWBkF?= =?us-ascii?Q?X6f/YYQC/P1f7sKwBUMXK/TXZHw72LfPfjSVxGHw+U6OELlS/aEdGSTTggD2?= =?us-ascii?Q?iV96Xsk9u5G8InA2RhdNmYWtxxl4J8XeU1x+yDCjEnkJ4tWcbkSxqSXPtbFU?= =?us-ascii?Q?fM5hhDUx3CzT6/RAZllePLj8mmMjrMniLAxuwfh70fqsnurONCegJj33ap1c?= =?us-ascii?Q?HLLeOBkwm12oAujw/3hPGWOBiwqIrC2trsbHkNu5z9Sgzb1kpOFdT3AOt29L?= =?us-ascii?Q?WcA/E60yFnMfzCag25ZhAHbP4I5qBLV02eyRgg8G5/qPvxzPjG2pK2Gt2H4a?= =?us-ascii?Q?Br3TCGviKoXqBB/J55qC43NEKvJ6CduM+0dPle6MaqL30rW4kHPkPWe8GxEB?= =?us-ascii?Q?IusOfyzh81caq1aGWxTfiTKZ9Om2Y1hQdzyV5VPcQwo356DLF4eAb1WwGbfb?= =?us-ascii?Q?E9ix0hFVXYAO3lKsySAIbs95yDJ9QfuBECPdfr+L5Yhgh4MVc/i7PUNb4XVv?= =?us-ascii?Q?0vTwUw1rAUkty8TxVJZCHPFndZajbrU06nbw/vzI96hgeZqDzBBmOWgibrOK?= =?us-ascii?Q?L4VV2MhtqE14duAC/Q2Om6+gRMGtylHprJdCnXj664z1PnmZPG5dFMkMYEFe?= =?us-ascii?Q?dksuFmxL1+u6uwwQYYuNu+iJA0lKjiMnYg4qoUN/NkoKC+6pIvmYm50Z0I93?= =?us-ascii?Q?GdApMUVshF3eJNc1EFUjM7clM9awweUVunqYzOUHHPEsbvmCji6IqCNiCW0w?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 5:ABw+9ONPIWoKV1irl/IVshbDJ0WBROzR9cW2rHRMULSrleEk4a2X9dlcDLz8lW9hqB10yt8aR5CXjjBuxxV1+Qz/WneQu7d7mOjpZv+cSbZUkSIRDe/f/K29jkBfGH5LocpqdkT7k8AKhcqymK+FUaVxXBxfSyWyxERlm8vTXDiGvGRyT7T5FZ8KmLGxlyNwhhpXCd8toQWudC3hS/X0cPjuMP0gA6AnUs4tBbPPE93kT2Tpv7XdWKQsr1NcZYa/W6kXJsO4Oc83D/1cgUGxQREhwKpNPdkKFNv/N2dAmyxzAmD9Yv2u/ZFEmPKh8GcK7USYWuiioUwYSfwfV1Gf+J1n2x/zBGqHW8CtZX5e6PeyZjswWGDFGYVajq6Evu3u3ERSwBMlVbuT0lHfnLn5K/QWgtIWcecKXrSk3DLNNWgN9i9B50JSAU2CzCth46YO9/9iujxk0aUcuiE0hjDduCqD/KgG8qTA+rc6W9YInfa5cnn+L0NcI8gP4UmEy0k+; 24:RdDacs11QeJoPVY9M6iqfT3Io5wLcfL6yTvKbL85cDNvxGW+t4BWAhPwQAcqQpafrIR0Vso/qTPXU7Wfn54hkBmOUKkGNlQ/hypgUunmLHI= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; CO1PR07MB426; 7:C/EpuDYll2aVCBFX5BL3+XNsBzK7LU4VkPiiwV5qDZA2OgluOx3Kg/q98eC0IytlBUPxw+qwh3SKPWNoRy4ddCV5f8LbdLmzxuyV8k5mVLNT/dO/qJ2FZd5v7iJjq1jXQwFK0lhMf0jDNpqRj3AQ67jWZHEEytE/v6ndYjpkMlG/87MgqDsmwgUb6jkZANQaPHlGX/xkzhhTOXNo+zGAKiRwAAQ+U8tMMRO1pHqVUWa8V9I1HRnUIRx+V4I0riuSnHeVhDMwVsjdKHhAeS+xpYlMzc13A08u34jZiQ6PDjMavS6fkDfMTPSTrq12FX0YnKGF9h8ac4MuCTY/IzdPzAtlOlNeeNIO7H32GVaCN3BDDPS890wr8YlL+a1d3cZATCuOMXhE5848zNiZQl8Ra+/2epsru46p8KoDE9HHzZmsjAvJU4c4KontwYl0tIyDoFCKMJ83zDl1tf0sE422z3mELjJ+42mqSeOjHVcrXdNEZAnVIdSyfOzsw0cPX2Ry9BSXX2qcWaw6W9WQQe5zMABZUxYl+u1SpJSQxgU+roOW1TgqbHTHwq42yt9Y24XODPkw5aFl9JFgKDQuKBmK7fZpmJI1MhfZ/4goH6WVd7T0XRJarLOD8hJjsW1Zxlz0BIseHxsFc+ke6KwY5IQ2HDo0iiYlOsBlmT1b6L8LoQqoez3hkflPRvDzv09xjoggsfe64uSpcc1ARbyzK+jBfau5UEsxdhemAv/FVNnfJyeC7kBRondHN7IpccK1KspAxi70eTVbxLRgi3dOuNez9IG6yvU8TsHB+9lIbfEM5zg= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2017 18:14:21.6771 (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: CO1PR07MB426 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Make slight modifications to common RoCE/iWARP code. Add additional doorbell for iWARP post_send. iWARP QP pbl is allocated in qed and not in qedr. Signed-off-by: Michal Kalderon Signed-off-by: Ram Amrani Signed-off-by: Ariel Elior --- drivers/infiniband/hw/qedr/qedr.h | 3 + drivers/infiniband/hw/qedr/verbs.c | 171 +++++++++++++++++++++++++++++-------- 2 files changed, 139 insertions(+), 35 deletions(-) diff --git a/drivers/infiniband/hw/qedr/qedr.h b/drivers/infiniband/hw/qedr/qedr.h index c52fde0..0c0a39a 100644 --- a/drivers/infiniband/hw/qedr/qedr.h +++ b/drivers/infiniband/hw/qedr/qedr.h @@ -319,6 +319,9 @@ struct qedr_qp_hwq_info { /* DB */ void __iomem *db; union db_prod32 db_data; + + void __iomem *iwarp_db2; + union db_prod32 iwarp_db2_data; }; #define QEDR_INC_SW_IDX(p_info, index) \ diff --git a/drivers/infiniband/hw/qedr/verbs.c b/drivers/infiniband/hw/qedr/verbs.c index 9b74015..7fef9b3 100644 --- a/drivers/infiniband/hw/qedr/verbs.c +++ b/drivers/infiniband/hw/qedr/verbs.c @@ -269,8 +269,13 @@ int qedr_query_port(struct ib_device *ibdev, u8 port, struct ib_port_attr *attr) attr->sm_lid = 0; attr->sm_sl = 0; attr->port_cap_flags = IB_PORT_IP_BASED_GIDS; - attr->gid_tbl_len = QEDR_MAX_SGID; - attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN; + if (IS_IWARP(dev)) { + attr->gid_tbl_len = 1; + attr->pkey_tbl_len = 1; + } else { + attr->gid_tbl_len = QEDR_MAX_SGID; + attr->pkey_tbl_len = QEDR_ROCE_PKEY_TABLE_LEN; + } attr->bad_pkey_cntr = rdma_port->pkey_bad_counter; attr->qkey_viol_cntr = 0; get_link_speed_and_width(rdma_port->link_speed, @@ -1422,6 +1427,21 @@ static int qedr_create_user_qp(struct qedr_dev *dev, return rc; } +static void qedr_set_iwarp_db_info(struct qedr_dev *dev, struct qedr_qp *qp) +{ + qp->sq.db = dev->db_addr + + DB_ADDR_SHIFT(DQ_PWM_OFFSET_XCM_RDMA_SQ_PROD); + qp->sq.db_data.data.icid = qp->icid; + + qp->rq.db = dev->db_addr + + DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_IWARP_RQ_PROD); + qp->rq.db_data.data.icid = qp->icid; + qp->rq.iwarp_db2 = dev->db_addr + + DB_ADDR_SHIFT(DQ_PWM_OFFSET_TCM_FLAGS); + qp->rq.iwarp_db2_data.data.icid = qp->icid; + qp->rq.iwarp_db2_data.data.value = DQ_TCM_IWARP_POST_RQ_CF_CMD; +} + static int qedr_roce_create_kernel_qp(struct qedr_dev *dev, struct qedr_qp *qp, @@ -1468,8 +1488,71 @@ static int qedr_create_user_qp(struct qedr_dev *dev, qp->icid = out_params.icid; qedr_set_roce_db_info(dev, qp); + return rc; +} - return 0; +static int +qedr_iwarp_create_kernel_qp(struct qedr_dev *dev, + struct qedr_qp *qp, + struct qed_rdma_create_qp_in_params *in_params, + u32 n_sq_elems, u32 n_rq_elems) +{ + struct qed_rdma_create_qp_out_params out_params; + struct qed_chain_ext_pbl ext_pbl; + int rc; + + in_params->sq_num_pages = QED_CHAIN_PAGE_CNT(n_sq_elems, + QEDR_SQE_ELEMENT_SIZE, + QED_CHAIN_MODE_PBL); + in_params->rq_num_pages = QED_CHAIN_PAGE_CNT(n_rq_elems, + QEDR_RQE_ELEMENT_SIZE, + QED_CHAIN_MODE_PBL); + + qp->qed_qp = dev->ops->rdma_create_qp(dev->rdma_ctx, + in_params, &out_params); + + if (!qp->qed_qp) + return -EINVAL; + + /* Now we allocate the chain */ + ext_pbl.p_pbl_virt = out_params.sq_pbl_virt; + ext_pbl.p_pbl_phys = out_params.sq_pbl_phys; + + rc = dev->ops->common->chain_alloc(dev->cdev, + QED_CHAIN_USE_TO_PRODUCE, + QED_CHAIN_MODE_PBL, + QED_CHAIN_CNT_TYPE_U32, + n_sq_elems, + QEDR_SQE_ELEMENT_SIZE, + &qp->sq.pbl, &ext_pbl); + + if (rc) + goto err; + + ext_pbl.p_pbl_virt = out_params.rq_pbl_virt; + ext_pbl.p_pbl_phys = out_params.rq_pbl_phys; + + rc = dev->ops->common->chain_alloc(dev->cdev, + QED_CHAIN_USE_TO_CONSUME_PRODUCE, + QED_CHAIN_MODE_PBL, + QED_CHAIN_CNT_TYPE_U32, + n_rq_elems, + QEDR_RQE_ELEMENT_SIZE, + &qp->rq.pbl, &ext_pbl); + + if (rc) + goto err; + + qp->qp_id = out_params.qp_id; + qp->icid = out_params.icid; + + qedr_set_iwarp_db_info(dev, qp); + return rc; + +err: + dev->ops->rdma_destroy_qp(dev->rdma_ctx, qp->qed_qp); + + return rc; } static void qedr_cleanup_kernel(struct qedr_dev *dev, struct qedr_qp *qp) @@ -1544,8 +1627,12 @@ static int qedr_create_kernel_qp(struct qedr_dev *dev, n_rq_elems = qp->rq.max_wr * QEDR_MAX_RQE_ELEMENTS_PER_RQE; - rc = qedr_roce_create_kernel_qp(dev, qp, &in_params, - n_sq_elems, n_rq_elems); + if (IS_IWARP(dev)) + rc = qedr_iwarp_create_kernel_qp(dev, qp, &in_params, + n_sq_elems, n_rq_elems); + else + rc = qedr_roce_create_kernel_qp(dev, qp, &in_params, + n_sq_elems, n_rq_elems); if (rc) qedr_cleanup_kernel(dev, qp); @@ -1692,10 +1779,13 @@ static int qedr_update_qp_state(struct qedr_dev *dev, /* Update doorbell (in case post_recv was * done before move to RTR) */ - wmb(); - writel(qp->rq.db_data.raw, qp->rq.db); - /* Make sure write takes effect */ - mmiowb(); + + if (IS_ROCE(dev)) { + wmb(); + writel(qp->rq.db_data.raw, qp->rq.db); + /* Make sure write takes effect */ + mmiowb(); + } break; case QED_ROCE_QP_STATE_ERR: break; @@ -1789,16 +1879,18 @@ int qedr_modify_qp(struct ib_qp *ibqp, struct ib_qp_attr *attr, else new_qp_state = old_qp_state; - if (!ib_modify_qp_is_ok - (old_qp_state, new_qp_state, ibqp->qp_type, attr_mask, - IB_LINK_LAYER_ETHERNET)) { - DP_ERR(dev, - "modify qp: invalid attribute mask=0x%x specified for\n" - "qpn=0x%x of type=0x%x old_qp_state=0x%x, new_qp_state=0x%x\n", - attr_mask, qp->qp_id, ibqp->qp_type, old_qp_state, - new_qp_state); - rc = -EINVAL; - goto err; + if (IS_ROCE(dev)) { + if (!ib_modify_qp_is_ok(old_qp_state, new_qp_state, + ibqp->qp_type, attr_mask, + IB_LINK_LAYER_ETHERNET)) { + DP_ERR(dev, + "modify qp: invalid attribute mask=0x%x specified for\n" + "qpn=0x%x of type=0x%x old_qp_state=0x%x, new_qp_state=0x%x\n", + attr_mask, qp->qp_id, ibqp->qp_type, + old_qp_state, new_qp_state); + rc = -EINVAL; + goto err; + } } /* Translate the masks... */ @@ -2114,15 +2206,17 @@ int qedr_destroy_qp(struct ib_qp *ibqp) DP_DEBUG(dev, QEDR_MSG_QP, "destroy qp: destroying %p, qp type=%d\n", qp, qp->qp_type); - if ((qp->state != QED_ROCE_QP_STATE_RESET) && - (qp->state != QED_ROCE_QP_STATE_ERR) && - (qp->state != QED_ROCE_QP_STATE_INIT)) { + if (IS_ROCE(dev)) { + if ((qp->state != QED_ROCE_QP_STATE_RESET) && + (qp->state != QED_ROCE_QP_STATE_ERR) && + (qp->state != QED_ROCE_QP_STATE_INIT)) { - attr.qp_state = IB_QPS_ERR; - attr_mask |= IB_QP_STATE; + attr.qp_state = IB_QPS_ERR; + attr_mask |= IB_QP_STATE; - /* Change the QP state to ERROR */ - qedr_modify_qp(ibqp, &attr, attr_mask, NULL); + /* Change the QP state to ERROR */ + qedr_modify_qp(ibqp, &attr, attr_mask, NULL); + } } if (qp->qp_type == IB_QPT_GSI) @@ -3017,15 +3111,17 @@ int qedr_post_send(struct ib_qp *ibqp, struct ib_send_wr *wr, spin_lock_irqsave(&qp->q_lock, flags); - if ((qp->state != QED_ROCE_QP_STATE_RTS) && - (qp->state != QED_ROCE_QP_STATE_ERR) && - (qp->state != QED_ROCE_QP_STATE_SQD)) { - spin_unlock_irqrestore(&qp->q_lock, flags); - *bad_wr = wr; - DP_DEBUG(dev, QEDR_MSG_CQ, - "QP in wrong state! QP icid=0x%x state %d\n", - qp->icid, qp->state); - return -EINVAL; + if (IS_ROCE(dev)) { + if ((qp->state != QED_ROCE_QP_STATE_RTS) && + (qp->state != QED_ROCE_QP_STATE_ERR) && + (qp->state != QED_ROCE_QP_STATE_SQD)) { + spin_unlock_irqrestore(&qp->q_lock, flags); + *bad_wr = wr; + DP_DEBUG(dev, QEDR_MSG_CQ, + "QP in wrong state! QP icid=0x%x state %d\n", + qp->icid, qp->state); + return -EINVAL; + } } while (wr) { @@ -3145,6 +3241,11 @@ int qedr_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr, /* Make sure write sticks */ mmiowb(); + if (IS_IWARP(dev)) { + writel(qp->rq.iwarp_db2_data.raw, qp->rq.iwarp_db2); + mmiowb(); /* for second doorbell */ + } + wr = wr->next; }