From patchwork Wed Jul 26 11:41:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kalderon, Michal" X-Patchwork-Id: 9864615 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 9ADAC6038C for ; Wed, 26 Jul 2017 11:42:59 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A276028634 for ; Wed, 26 Jul 2017 11:42:59 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 96E8D28745; Wed, 26 Jul 2017 11:42:59 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.8 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_HI,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AA20528634 for ; Wed, 26 Jul 2017 11:42:58 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751641AbdGZLm5 (ORCPT ); Wed, 26 Jul 2017 07:42:57 -0400 Received: from mail-co1nam03on0082.outbound.protection.outlook.com ([104.47.40.82]:31337 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751635AbdGZLmz (ORCPT ); Wed, 26 Jul 2017 07:42:55 -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=MgPvFDJE5/+SCGZQ+v6ttl9a41Zi83Crd811li1gPOw=; b=d4QD+KOymP8mnPpt9l3ajuxhf0tKDND6zj71X0eL4WxKTv3ay+TPMuTxY7SDMVFcXJHgfZ8PS0DFCKJrRnvA0GsyMJ9nQw3/NRD2faVCJd8+6WPVkc4cHdWOoMD8fUVvXNzufb2me7aXhFYIgKzkd8RrruIE90jxku2skZr951s= Received: from SN1PR0701CA0012.namprd07.prod.outlook.com (10.162.96.22) by BN3PR07MB2498.namprd07.prod.outlook.com (10.167.4.135) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1282.10; Wed, 26 Jul 2017 11:42:53 +0000 Received: from BY2FFO11OLC012.protection.gbl (2a01:111:f400:7c0c::196) 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.1282.10 via Frontend Transport; Wed, 26 Jul 2017 11:42:52 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; redhat.com; dkim=none (message not signed) header.d=none; redhat.com; 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 BY2FFO11OLC012.mail.protection.outlook.com (10.1.15.23) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1240.9 via Frontend Transport; Wed, 26 Jul 2017 11:42:52 +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; Wed, 26 Jul 2017 04:42:49 -0700 From: Michal Kalderon To: , , CC: , Michal Kalderon , Ram Amrani , Ariel Elior Subject: [PATCH for-next 4/8] RDMA/qedr: Add iWARP support in existing verbs Date: Wed, 26 Jul 2017 14:41:53 +0300 Message-ID: <1501069317-16601-5-git-send-email-Michal.Kalderon@cavium.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1501069317-16601-1-git-send-email-Michal.Kalderon@cavium.com> References: <1501069317-16601-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)(39850400002)(39860400002)(39840400002)(39410400002)(39400400002)(2980300002)(428002)(199003)(189002)(48376002)(69596002)(81166006)(105586002)(54906002)(107886003)(106466001)(50226002)(38730400002)(6666003)(76176999)(86362001)(626005)(4326008)(5660300001)(2201001)(478600001)(50986999)(189998001)(5003940100001)(101416001)(104016004)(72206003)(77096006)(8676002)(81156014)(2906002)(36756003)(356003)(50466002)(305945005)(2950100002)(47776003)(8936002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR07MB2498; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11OLC012; 1:xWZ1brRh8GpagfGv9/c1w/3+WdU0crWI3xoAcopcq4dUjDHe3ju+okeyQaJaCatgvGEx5DGPg/DnDhq4mWPf+OyY/s+fw0T1xHNexxf4nP78RBKRWumh0rx/c7nDFY3+UmvB+Sp4+FzL8lnihNRAxUHWM283WcXNiDskzgTHd/G+tyLb3q5uaVW3Lo4iM5TpLY1HdxK6JC4BMu3fAFm8KXc2adAsYHf/ne0eGw54/xpjEd0/2Q2+UDw+wCoaj/K/KJ+hNyV5EsbekoCCmK+4ZjjVTC8XN2GBO4lG/U1R9aJZ/1sg2p8SoKxsc6MUQT8jQkdieqZrm8JK36iyx3UvFo1n9IPF6jEmamEVu6eoUfLoC3uSG1DYob3jTFRk2ffgZ8qWt80Ql80g43vulvM6gbKInjudghHdF+rg6xQNFyFWv48LtVOloOOgC8DnsCowjZFiN56ctLvSZiMRwzj5KV3bG04WPnGQrPslWXlrLlztsY8pcC3ZJQ8Y2fQyJcu5RcpE7yzaFQ3pLDCV+TApWxcJcNeXk7XTh8jfFekhfrPHKFFW8URaAyQGInheF15UOcgtOilRti7nbjlYz8Ng/ZwKUybF4y3goui42jjsIJq2okCVci5Qq/28iWTXR8uN3hrFjGGt9IUnjbFVkEjAVgI6UWQz5H61bQ13t58TJHl2EVmRapIe13aXINiAxywWA/AkLD7q3vQCyqcDHPhpJbXDsdc1Egyt1zHElBqk5cYnPzdFj6rq+HaIKMEjNrUo17l93eMgdCa4t816+btKOS9aoi54d0Tx7YM/2DVKS9BS+24+Kw9Ncllp0+y6Yc7Do2rHLWWvV2CYnPnnsDUtJw== X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 973f266b-c88e-4048-6f78-08d4d41b7312 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(2017052603031)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:BN3PR07MB2498; X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 3:rrK7ogOocj3afwo8qBchI9/Wk9aKcLgslgrYKMO3NPAco0OfvjodnDH+ZmWOSRvp/T5Xs2rJfIxhz9CrEWH55Q3OQ0+uEVN4qZDWwsMCMVJcWdWPeDh8oGSXrd2WFq+t1INX5IQV58d10SD8y2LegIr6pYFvb2VX4PgvmP5nN4pH31CnG4K3myLjym45VvGpOjoGS8KPU0vnkDNIee4xrYn5ypxQXZhemY0YMewbUYqAJv4z++sjx3sglh/xn7r2BlGyZP8R0/NSUN/wmzyJXnjTFDw3WBbOivG5/HGJNA/J4U6dy7JBdnZInbB76C89cuWYyEQRVlkV/XKQLED+Bes1WCQrXs6MsD4+PhPnKJdGSSObdDsawJaEh08Fk+9zWLqrh0us9rveBTaTBEpE7zSwIhD+hQMweGfh9V5b+Un84BCddprFNBRuTZjVMXJiB+DkSAIJuoWJ9f3EOLe3l5MD6zS8Jh72RN5A8kAqRbpSdXnEzgoqggB4pGXWfSDKjNyB+chBl+jb+VELJwpF1XkDjGvoFUpIOjf5xXdTDCA1rfdVt+bFZhz1sLu41wJ01CbjvVQsyOD0tj7UH1kaiA3qBykojXwLIgyHL7h75FdTRzuufVn/lf9MoTsxFDvoGa8pfNX0dCLp0NzBWpAPPorG9Ult5+sLMHp2zwBvoNSMvFFocqKjkHYuAq09PDqZBsUFcWLtUEQCLr7c8TAusJyoTx00eLnJ3at39tLQljXK9jLjMOFXi+E2f8SFZifOpI1tsSRmn54+STO7ylmLLwzj1IzvRthILGn0XGLFCBcMUcG79RuQ1sMlrn+yUN6gkuPjvDxDIhVMqHiL75tI8Kznj5AzJk0xRrJbRMSXmQ1Npma93fKGseivgfHL2SAx2Bao49OjfrFgKqeudTShmQ== X-MS-TrafficTypeDiagnostic: BN3PR07MB2498: X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 25:OJPr/NGhhUil/Zcp8EFh5IzwoFu2cSZiI838i6vREhqmQnx2WBfhGMcDVbgkDecUTrxwYHwbermkqARy8Yhbt1AM/Va20/+RfXw4I0lAQ8mZ1hddqJhKQprurX5nj0Km3kQ/NuH/oG3SEcwSSJVqqFBSLeNiy1D41kAs3XbDqILqJ99EQcUGBK+PekRIlp3lr9/vuPRXvpez9ZRiv49oju4IE8sg6QGovkLyfcWKB+3+tZ4Amz6+PBXWxGpcV+BEhu25qVkGkm13+sLydogroYeoYDiO9KWxW3wCEnfdx9OqjblNPmy+G2+J2xV/Ncw7YWNzIvzyw/FGy2nr1SBZKBJf7ZWeRsF6pKZlbkxH0HazokBP/mqbKnS0DNnTkHW3Z3bynJw3DK8Ub7cr+HEZ3Y6BhP1E57YqaICqR0kuxvL/DRIqaqL8y4Q41KpvOPiWDLS+1ie3/QgLcPsdCuv/+FmZGDSi8XufGziz17iGLHRqdT7lLc/q9/5hjZqZHyki+EWc8a5E5+d8+ituDVlKP/3zZsU3W3OFwjNpLJ4LRziHJBvCITOI8NM8sVo0HzJCEnSL1j6e6W2MbXYEuFmVNbUt6ZqYKZ3NAV/Y5g0ItassBB8QHcrHurVJLGsNjC7Vt4Y+N+afGGXDFojtYMKBgQOZdmrYC3w0UOtC1JlUtONakIuw+vNnbzbwf4eBwsUZLdAOs0Unyi4lx84ZDkY5FmOtNCww4td5nqtKDBKVzdOhAXQPz/KPeCG1qNyuW+OF1YRhz5o/k5Sv8qSPyxyXpJpKwtaRFFQ8oNsYYGl4w/pR0Qo6B+43UmdYHZplDYdw/tU7jngqwiMyxawm+QrJXLVb+MQxX6G+dJvio67LSDzY/NLyOy8URisDW8B0gY3D3ZzaqNq7PrvR82vN4sTAs3wlcDp1INoQffUllwuwd 94= X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 31:qXcQlIUk2c2LofUOmSUlVQNcdGfpstZK3RU/Gr7oL+j+zdvDavN/RbMIxHFJibGbgVBODEZKogCoQug/XnN2iaHD74NWcMPjQwzpDsC/ffk7QH76VB4kKH71z58acXsP3BOQ52776AcLnP+quXCr7YCNcsKulpDvtIFowTRPsQ5SjFHCZlHpk1cMEuWiJwKx3Lfx0LbT76+6KINoWKctqY/vwvaJMFLX9NDFvHtiZ3bcThyRxXnlHsDruOFvi23vH+brJ27c1oeyjCQKld6TBA7g20exU60Y2c3NnJNyiMH22KHescifWFVmrFymAZljtI3W8GKIIvq7nVhfD6teU2wCdUFC46Hpav6Ot6qkI40xH0qzl/e0QVHlYqW4N3X39bilaY7fOkZ5zTQ1hG8W4KPcXhmu+H8+R0EK96ChlIZeQpha7F6O+roZbEV85t35g2V+9IM+AMrLbEKgId4JAKG1eGFbAR4RFE38IYYioNT1IQvJVyecJlQNvnJeeFdwEXoNqb6lduqPO4/7Sq+3CSFakIyOZ1xLPMp5PmkE17vbq54zOKQWx1h0HsLph742lHBGsZETEU6fwM2G9YCd3KVHrwxvmZWam3e9o3sckCYKEpAIbedO20cXBzoqkrM3Orsiorei9gqjIJsr18h14JiQe/ybmN9a/IV1+W6eyTAbWkBXIJMYjD/VUJyvQIEOgwr3mNQcu/dLefZGyqqMcw== X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 20:cov2nzhYbfcpnCGL9hOQ/2mdcdbI7M2uI1AAk7xQrE2tR1BTt8G8N6pNEg4RJxgD40ZQLNjoVzm8yfiQsZpCZsL61ORKGEbFpi1jO4PtmXTY1y4MraKF2+St2TkLQAUKNy7HLxD+xRze9wi/ZpYpvWkS7cksfG3Ixs2HzlpTGm1xWafMFBrzvjT5tas7yDXPbWqVGwF0RuNCs1qbmqS4mZfCV9OiJzOJ8noBRvf7i/AlCddUtL522XXE1+utEIocPxxW+qiN4JIPdaxR2B3zW7m3wgr+PxdNM0TCb8TpF/OYGjFNPafkf5Ku+CbLI6gLZ+EhEodoNW5H+34yj5LBoLsPBdtfc0IyFSsNvwQCCGoQLm3lQrBDVnXNLJ7DFZydHJoJmvn7kdRkNxNPASNWnj0tQFPEre26cVTkWuGTrgPp68ol9Kffv9uHi+TbiVO1kmy63lIiJ/d/pG9ihzId1YYd6Q3+m+YThk0nsL7hTjnhodKOCt8vqeZZjpRaSA1U X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(13016025)(5005006)(13018025)(8121501046)(10201501046)(3002001)(93006095)(93001095)(100000703101)(100105400095)(6041248)(20161123560025)(20161123562025)(20161123558100)(20161123564025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BN3PR07MB2498; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BN3PR07MB2498; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR07MB2498; 4:ROkvGzHpGWijXgfBRo4DkNrS2L012XmKU7MzP6Zwvn?= =?us-ascii?Q?d0ytqgJoFqQ+7YtylTcDoihPMBXp4o7tmkObSXmVYYhNJ6vQMr2Af0AtyQV1?= =?us-ascii?Q?bJEXFGxM5WHVIsVvvcSwRYVRRxKjZfiDP1ks5/xjmbNuzACDm4KuuopoWapa?= =?us-ascii?Q?pUysEkclVIQ2WnU7uV1r1d2V3faot28ZKNnMerahKpZ1WJjyRHipZHZZ59/t?= =?us-ascii?Q?Xe7UHySj93jkbmJGk9dI/S0jMcpaYcWCsG45CvADae6d6s1xf5Z6XceBoRg9?= =?us-ascii?Q?UVCmaBy81fdNvgxEFXKvx0xmxKX/M+E1Y4xnkM0SdJn94gqT+bpCC/oh9FNl?= =?us-ascii?Q?0uLZmDmhRxLlP+CGgsZ9Uj50EGq5i1igW6UOSg80ULTS29uNxmPXpXD4ErUK?= =?us-ascii?Q?oo7INDAcf4Rg7dtEWtLtj5SyWMxCXve6mcLw3qPnSoe1IBckqxDF20nCh2pU?= =?us-ascii?Q?rMpVluCA1k7ahBC5YTL1lJ81ez3RpPn31Plkbg3CsoSJ6kgaDjkaUBSce2tj?= =?us-ascii?Q?X7/fre8PzWg8hQl8CHJFG9OV5e0iAE9ao0501Khn1QR8NMWSLq1Y/hYAQzMi?= =?us-ascii?Q?pyAr/uXAkCKVGtW7qR2ZhgaILuFvvvEARur1ZDSfnjdPEmYm9uFkwgJOW+3d?= =?us-ascii?Q?KfEhDRbfyWDJLDXBS6aV038e7b0YKPyLbewHIASEW51E3+1b5zbPIYnn/6d4?= =?us-ascii?Q?s+tPEyDFCsRy2ietYTPeM3TZVNe4zQZzR4X5xlb2ob0P9uA+VmZcD1xpK4Zl?= =?us-ascii?Q?zF+vpHj1rLzjMNnCcEpSmpHwqPmIBxq3d6J57BWXL0FC4C1gcvSJDus7PN6L?= =?us-ascii?Q?4bvV2qcFkTSei0VBGf+dHueKXDqu1Is+628T5Q1Q/Qvx3uG0W+v02nY/hWaE?= =?us-ascii?Q?SQdP8J1hDtQGibc6dmhNbLAaKHj78EbRjVmvNKz0ZCqMoyPMcWqRBXEfSvW/?= =?us-ascii?Q?USyTOvQLZgSJ48Q/W4JtznGYXx7WnrAd4e1bkmOtujO/lRSb4u0ES73zuy9X?= =?us-ascii?Q?qSl+voZHY7L08SEuntlThwzZA3CXEChRzNopv0WAHXQ5h1s/pI4v6mzaM2dp?= =?us-ascii?Q?NmD+XU+mJOHesMXMO3CDhQO+sekBBdEF3dLCt7ix58EzlCPz2ikWNiqeqAN6?= =?us-ascii?Q?d+VmAj0JuMtsUICaDND0lpxdFtVd0G42b91jMpLvTgI7Kk/4I2Kcds802H9Y?= =?us-ascii?Q?7RP4IN+Lrx7Zg=3D?= X-Forefront-PRVS: 038002787A X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR07MB2498; 23:J6fvD3fKWFW40jbTGjfaU6cjTU2HQ5QfRlD08xeo1?= =?us-ascii?Q?DXwaCLMN+btckeX++08SHXGjDVyZdmwppriQTIu7jt/YlRzcdMSUEITqb7Tg?= =?us-ascii?Q?7PTvPBOnf5Sn5jAR4MHPNbgyZgM3uATyHL05BVaI772eJmJPRUO6WJC41qLB?= =?us-ascii?Q?mAcNLA7IqHSZ49qZLWpELaBsnz7rPmgQTn8ukPcM1XCUYTLbLs6fnAipw1NF?= =?us-ascii?Q?cK2G/tZx50uPDQvhICgi1qF6jTaWhuEwrxHyIq0DN+YijJKWodp6d3GFBfIb?= =?us-ascii?Q?e4BR5Oj1sxA/t5hqjNSpouolP+nIWZaXZCmuj37ZFyDElE6uWN0xHLFvy7n+?= =?us-ascii?Q?duBDA+qFl72bbXsXQQ5T1i6r++wL01hPReTS8889GSqhC5BteR8AxsgxFqEK?= =?us-ascii?Q?rdEyBi9f6Pdp1ZVFswyaiz5RCOSXzmFAILZmrdVWjIF/Oe7lYBUQ5S82GuS5?= =?us-ascii?Q?Wy0+7qlwgFBE0kyf99GpHE/hb0E/TfIEhypMjqwxi3KZbpuF0yBu3XvWzKAf?= =?us-ascii?Q?d2lsuh7G480A1jIiGbx23lLdX6HFeigsdYz2JdXRwm0a4FsyVOpi2cRh93tk?= =?us-ascii?Q?WW2WSgYdqLaZk3eQ3qjvcn9SefVZEjkPTUsImyMG0aHq6bl83CtgEDqvsjkk?= =?us-ascii?Q?R74G1xYRT777e/7PiMsed3UhnAcu3x43r8wCdjaC+YxbNNwwvo84x8BJUXS3?= =?us-ascii?Q?d1mYL+y+XrJHCrv/Jtwg6WmVtgB+yCtA24u0/1SxmZGWm2G13Zg46hAUk4nT?= =?us-ascii?Q?4uCJyd0HNK1shRL1MGdewWQ7QFD4iBkVYiNUAKL5Y4jglnv3vVMnEa1qJkxH?= =?us-ascii?Q?84uLyGJ+A1Puj82cX3crBjCfi4rY6x6SxYhhhhYz+cMgNq+qgAWSPOeXla9T?= =?us-ascii?Q?GXqu6ZmF2qCLub5X+ei0GXXMN4WhORb5r4hIPOsAQEm5JZlXsmziCxDfMeiS?= =?us-ascii?Q?o/5SMEp/sCMuW4Wl3TgIbSPhvz9/tIWFO+QVNQxxVX30IxkNmYD7HCwaxp/4?= =?us-ascii?Q?dZU4NImIhGai9BnxdYHGqeY9RShQShoxdzFpnHAC5PwNuK3ysCusiBgkOerR?= =?us-ascii?Q?mKF4g5DD8Iz+GNQ9ZHab+QSngHeyD/anjnBalrTOO4wJDCbTR1/MqDmXJ9fH?= =?us-ascii?Q?o2JMyNIiKs=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BN3PR07MB2498; 6:qn7Ku2ckmS5YEVAuurjGJDvZeZCxUCEzdG9Bu5/ckC?= =?us-ascii?Q?u9egd00WblxQ2WsXrhxuIJ5kgTPY8tr/nWPD9A27lSH4Tl4LsUBdJLgJ0d/y?= =?us-ascii?Q?k58xfWQhdZoOkPv8ptD05TK3/chQ6Vl2bAI3dl7BKR6xss7/9yZYiRqSAIhy?= =?us-ascii?Q?qdksqPmEKDZPHrqFRX+NYCcwuVZBkq7HEV0g9G0b9mIYnFjnJ1ILBoe8/h8i?= =?us-ascii?Q?r9VpGyGLEboAaCyDTzuImvjsWK6X5pHoorGXMG3tEVumddkFMxAFyDyi0XDd?= =?us-ascii?Q?FEwfysj2OvuQGJt5FqzgJMT7xO1Vk2fU6Sgvb8Z3CgUWjvazTHFVjqhrSe43?= =?us-ascii?Q?+sP+fZEqbVex9k6AR4vuNiZEhp5hqel1gP00Dx83CNbkJqosGNi/unoiW5ne?= =?us-ascii?Q?J1L+xl8JxvbbIBo6JcfMePugEfXzHlZGOC/bcbPjQW6KZunIzwuEkoeohyam?= =?us-ascii?Q?Ad1n+kBh6GudumXY1+RYL6cisS+HQ4OlVSYltVVMxrP6I895wHV7uBw2n8QA?= =?us-ascii?Q?PHzr/ebfSvs5EC2Nu1r3jWc0+14BMHdV7mgERFvHf4ld13aNseSTpyFuGQ6S?= =?us-ascii?Q?+7fXJtpH2Aid6gWqS9YxTy7HmgUeeBAEIQMbDIgUmF4pJOOULiyUQIGxZMKn?= =?us-ascii?Q?3zFllfWBhfibGxQgIluHYe27ZcNoMDY0TF+r3OJ5qH9Fn9IUb/f50z8hUBQG?= =?us-ascii?Q?rCfr0AjrQJzcf+JCk8YDGMxDyck+KOCDpaQxGURhmoguVZawAceOQYUReOZG?= =?us-ascii?Q?u1QGF+kxf38uWPQKf846YHVcDAlxporshrNeIC0B0OZutCkPiZXOTGHEZQpt?= =?us-ascii?Q?8jE2PeyOi/r4XcUIbeH+lmyii3M+vgI845xZkBe8+x60muzIH88vGIz8skRr?= =?us-ascii?Q?gpB39yw2eF8XtoeksIwLeg1lU+d6tXJ/bBSJ70pmfLD5PzU+dtB57kgcI6o2?= =?us-ascii?Q?xnV1mDNNRJ3woy7ulHl1RNOrf2IRy1NA96APXw2xNzKOlwcxBWPENJfoFiCV?= =?us-ascii?Q?g=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 5:jPShdggnIbZT6HMZMnTF6KKRf8t8zpraiadZiv6hmpnJ78I5kD9/dpOLKsp+Nw8r7r0aUzl1g3f21gRrw9JvabS1yUXtHG2h0vXIpN6tGji46nrjch0POI/23IkPsWoxfpMahJqN8BCuVRTIuI9t1HHFRiH50b9tsgJTwxCymG1ZeNwxDi/YX/CWWQW3oYUVWFhy+Q31KaR/WXkww7Sly7Sh0M4N/OQvbRuLO9XURSXUNpuau1gEMi9h0MFnIAgv4rtpC0WNViNzMGNFziA8XnwNy4mkfU2zfV1whH7ptcGloTm5hbCuxtJgcJTA4o1yIjOpJbTvBaplr8gvv60XLQds3/gPmXdF3C2SA2lyn14CL7oh3NaQhwcXMkwmtGoBzhw1GO+mzU77uCbOwjmXPvV1TJRnMMnfrmaxV6t8eTbX7SB5t8j53rW5nFE8/jm6AaSC0SY44GZUZIVj1CnRV8LJwB9F+yl/gQRdgVCF5H2hCChl5ZDj29j/z13Ag9PP; 24:3UY/fXV1qC9WPxIbru9tURAOl81oBe0vPUKPkjkkfzt7vQnZfT+b1V9181BTHT09hrv1pKb8yRsDENSLobM3anEV1j4681B849GIIbvTy3s= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BN3PR07MB2498; 7:aCWsAHz+Lu28RsDyvRKtTdcZrOoH97XRkewtKmlEktNe51sZvzwhaQLTHyccoWdz7KJDuq7kF5Vp7UTreb/LpPUPcW7VI7XJ4Q/r9V9BUz0Cmi8b81xb+bOsaW8f3ecFBkk7u8KSIgZi5/nige2DCcyPkjY8fr/EqO2xwbFrDJ7TnCtlCzEGyYdyGtxMV9MQoBCz2V9DLs5XuXNPnMaATVL6EAxcTQyN7bMwrLwWSwftlmKZEm4sXpuS+ZZ43brZ3bGllKw6tN6L3WUril4OpJEMyTi7azyoKOIqmE6+bG4gee7IUe9hjG0NcCGpmQxepCmGEm9/79gMwe3OL6j+eFLPeAyMWc3Pi3AIkWe+kPrZ++pcpZDNVV3ODTlL0OHLwr13tNiLAoVkWrZoSTrl2+Ax363PteGmrpP15Mf+PZuNw4Q2vKdFCGOrNX3w4x7WCFMQOS27SGf219QNB0Y5sD+qbsF+ob5eTLagBpyGdICgdJAUkJRNpK+MpTH+Zzd1JPlx2EPls0UcdRAsnt2mg6PWBj+WQkQ8WueW2CkIabkvVc36R5jtJxD9oaqoffQKInEKB5ag5VDCxlTGhwYKLPUJz+8ZnRLP88lUP1ZKI16Szf/nidsl9TxQDHKVsW1tZHGqoGc0vUsty8FB5YoyNivPWepCrmf4tYYWmkmWGiAGjYZO7OE8KqJ+u+tGthIYN8Etm3+vuxlqC+N3QFtvoHI55S52xLTezc1h0H3FkCUHav1GyHzO/hzNIW2Rwn8aD6F8L6bBIHo/TKTB/hNNJoDl6HQZavJ5gVkAB0s4r0M= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jul 2017 11:42:52.3848 (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: BN3PR07MB2498 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP 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 349e6ae..0ddac91 100644 --- a/drivers/infiniband/hw/qedr/qedr.h +++ b/drivers/infiniband/hw/qedr/qedr.h @@ -320,6 +320,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 b9245fc..b40c815 100644 --- a/drivers/infiniband/hw/qedr/verbs.c +++ b/drivers/infiniband/hw/qedr/verbs.c @@ -277,8 +277,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 (rdma_protocol_iwarp(&dev->ibdev, 1)) { + 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, @@ -1433,6 +1438,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, @@ -1479,8 +1499,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) @@ -1555,8 +1638,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 (rdma_protocol_iwarp(&dev->ibdev, 1)) + 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); @@ -1703,10 +1790,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 (rdma_protocol_roce(&dev->ibdev, 1)) { + wmb(); + writel(qp->rq.db_data.raw, qp->rq.db); + /* Make sure write takes effect */ + mmiowb(); + } break; case QED_ROCE_QP_STATE_ERR: break; @@ -1800,16 +1890,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 (rdma_protocol_roce(&dev->ibdev, 1)) { + 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... */ @@ -2125,15 +2217,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 (rdma_protocol_roce(&dev->ibdev, 1)) { + 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) @@ -3028,15 +3122,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 (rdma_protocol_roce(&dev->ibdev, 1)) { + 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) { @@ -3156,6 +3252,11 @@ int qedr_post_recv(struct ib_qp *ibqp, struct ib_recv_wr *wr, /* Make sure write sticks */ mmiowb(); + if (rdma_protocol_iwarp(&dev->ibdev, 1)) { + writel(qp->rq.iwarp_db2_data.raw, qp->rq.iwarp_db2); + mmiowb(); /* for second doorbell */ + } + wr = wr->next; }