From patchwork Mon Jun 26 18:07:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kalderon, Michal" X-Patchwork-Id: 9810227 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 E921560209 for ; Mon, 26 Jun 2017 18:13:03 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E71D028520 for ; Mon, 26 Jun 2017 18:13:03 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id DB884285ED; Mon, 26 Jun 2017 18:13:03 +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 A33D628520 for ; Mon, 26 Jun 2017 18:13:02 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751754AbdFZSMo (ORCPT ); Mon, 26 Jun 2017 14:12:44 -0400 Received: from mail-bn3nam01on0060.outbound.protection.outlook.com ([104.47.33.60]:7072 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751552AbdFZSMg (ORCPT ); Mon, 26 Jun 2017 14:12:36 -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=W0H17o6DNubWmBFJEnvRJpRDZGoOiKtqXiOz6RAkimk=; b=BcQ6/v37YDLyIsd+Tm0S5s+LTezC0DpMM57myllJ1IoX6L+9+7V7Gbz7qO7Cx7ehUSbDX0LSmQoaHH7YcwIJ8kF7WSEh01E3fVpCU4OFmIdbRHoZ1Eriwi2m9XLIdjGkIR6YAc5jMzC16uLtoulS4VUN9GA+GszWb6qqtdrmpnQ= Received: from SN1PR0701CA0062.namprd07.prod.outlook.com (10.163.126.30) by BLUPR0701MB1011.namprd07.prod.outlook.com (10.160.34.21) 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:12:33 +0000 Received: from BY2FFO11FD034.protection.gbl (2a01:111:f400:7c0c::159) by SN1PR0701CA0062.outlook.office365.com (2a01:111:e400:52fd::30) 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:12:33 +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 BY2FFO11FD034.mail.protection.outlook.com (10.1.14.219) 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:12:33 +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:12:31 -0700 From: Michal Kalderon To: , , , , , , , CC: Michal Kalderon , Yuval Mintz , Ariel Elior Subject: [RFC 10/19] qed: iWARP CM add error handling Date: Mon, 26 Jun 2017 21:07:00 +0300 Message-ID: <1498500429-22557-11-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)(39840400002)(39400400002)(39450400003)(39850400002)(39410400002)(2980300002)(428002)(199003)(189002)(9170700003)(101416001)(50986999)(478600001)(72206003)(356003)(76176999)(104016004)(5660300001)(305945005)(5003940100001)(86362001)(4326008)(189998001)(2906002)(107886003)(2950100002)(48376002)(81166006)(50226002)(2201001)(8676002)(38730400002)(50466002)(47776003)(6666003)(77096006)(105586002)(106466001)(8936002)(36756003)(54906002); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB1011; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD034; 1:YtYcjQvXZpmjJOtxqZVFmzXABVAx31Iiy64rJ9YZe2al7YwMABPowoQ1aFJhOBnISAOVBXVCskmWU0i0zMJXOql6PdH1jVtWWKfR45OcozUCxc/7tjzy2NxWE7smpgj3Sc6HtuZaaCx0WmpJK7EosM3qZ118hzZGJ41RfCHeeUA1ymfZGtbCzC5NBA/XE7H/DISQCfOa9rwREW2JiJ96+KEveFz8KdP80Mz4+YrLF56gdrLlkFueRA4E9yEbjxr9+V90BiQcTodW3vlGbZ62Ljo9u7xYoi1NdCuGAflY17EnAPU3nLiR0Ga5m/t8UuIdgSPu/K7rJLHts+7oGYsXVTku7dh5EAYg80g4HWQefNUyUaxYZu4UCC6XMikqRIpgj27QBKJqcqy960gEO90dZjGhN9K+ABsBZtK+VAFZ/Mz+I7uGoo3h27m0cU1KUmgL+7TedPygwKUu2fiiqgFo5mTF56j5IZSnCX0AMtGJyzusvSdOFsf+pokKe7cKtjUIp9+KCE8P1iGTw4104d0D95rp/rmzdhOa4TI2thFmq2zkbJ+Wse9I3GH2fybJ6FGNH5hW6zK9Ds5V+xg7bvGV616SNVggCg0Fr7tqstb1yXolwdOkHpNqPbIYlyEf8/cwQZoeW3QTd38mWM97JSPxXZRmFgnj+HtGha4jxufwv+8kXx9uZD6BA7zVn2b5Wuq7Jwsen75zc00BRSIyXoaxHlWyO8VhdcelE7oD1XldHjAtr9QHtTK6Idiac5ElU9QFRJPOBTcvUoEL2KdU33TJ4D3DJqQuwCHXLawkuCDeZ8EmmKMHmS25qqJyTKm4p/1qGaflOIcxqxD67fxvq6mFyyZvfKz3MYiQmPOR/K68BVI= X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: c3001a84-9239-4398-fde7-08d4bcbeeaae X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254075)(300000503095)(300135400095)(201703131423075)(201703031133081)(300000504095)(300135200095)(300000505095)(300135600095); SRVR:BLUPR0701MB1011; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 3:s7pOGD/knQMjNjLedn8DNa+k89MIeMc4aG7OKPimsKiCPNKcfCBUcPmu8hyKUFDu2p9eU0JbUl0FOczCAVXgokk7+5OKv8mU+ciM67KijrfMV3oRDz4SJAI3Yovp4Rc43rDxfd6hPy9p3P8Xff96TVlnp2NoXPPGi6EPPR4woWqUuSnL3YY6BuSnRJsXGeSruu80wV2CDJ4ABVmhi46lALutBPmiQJWNFP+8sSFRklkKAFu56htY1na6YwDlF3cgeyCymKsJbYiUWG+x3/zFwfSD488S+4ydWFEHuM6Oh9MWo/V9IQkSVf7xo5uvdsB6BDpSsAsoKP1xiznQoR+KnOc07psBv06/d50Bp+kKf8P50PnJ0RJHlrn5T9b/9tIxWig2FA7G/2S/vrRiOLH83K0rpp/0GJxM8+qM5dok/TuE8JbQ5ubfBlLkXPm8xvR5PWqU6GGCcfQlle7zPfS/n86EbZRuC0FOocIehg6QYwAqoS7qgP3dWRtYqj0zaF/82rx4YIwdTiS0o8iNz9HdXLQsDxsw/TBx/pnsT2dTy1mdgHUmZjBnq96Qiuj84v34wzDp+3dCHUL8l8JJ/eyfyJRSIfyLb/dT+fP/rX4INoOdeBQZ0Gl0DDMvt2TJhZt7TROPI+bSdnwiWkHsUK7avLk392Mwgh4PWA7RYa5y7bQBAtvAHijSvsYgxuhtL1EwR8UfPAwRmi4j6NEdaxSDk2Qf0+GuMr0Z8vAUjEI4bF+7GdmWql6dSavHDFjG7fus2LQ4yiSb13z3CvSS19DT0CSFgWKyD8ZFrB4APevr9Ib+CXTW1XZwwNcKWWtEuLTR X-MS-TrafficTypeDiagnostic: BLUPR0701MB1011: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 25:mKGzUiCrZ8euGaVKpYU5V7Jtk6I4H4M4UVdzlq4PmdPR90KLwKb2ioV5V6raGovyN48GoHATIEf9drDhlNh9dd7dB1U0RHkTOFj4aLdqSuRYupAApFRmEzo/TMaht+8MXCQImKJhOZwnISH4PLP6OAjo8vyBnfQPe9hBzYrjSjZ8/lynxPwp5W/OptAehcueVhW6OHLpr2FleVlHnYJxKehJ2cWacv0sglrUzfGgozzHgGuLh7G1C5RQRwAuzDGxRslU+2dS00rd2IoxPd70E5DYLTdwHf43JwnWFCb3OStJ6kzN8mYliQ8hDPbysnRWiXcnCnYGMBz7jH7dIRVlDCyFlLWGEkOFpjKY4N6f4z9naNAQl7sY0gS5jwwnMlZaDbsKAFDd7mJusrajMuekOIXNozvzUbTmRXy433HlOAPckAYF8+W+S/An3oIlb05dCBTTlbswQtP1rpFAB0ap9FfHoh8VAYqkEzxJlxQIj99KyGQ77aqokFqM8fZeatRWVVPxcf4EJ3xlHDMsLd2BYWNYNnIoMc+vhI1DNLFJlTmXN6XfbjQPDmz+XJxcoyZ/0coa/SaI+wqwerec8O8BLTpjXLpswtltaS47KjgCKnkLcn6Ot2cjNq3KDyU9DtbZRE4mGmpoVISmYDPrHC2tuMsIDedhAiczK4OIhTVc5k4LEBHINgffG4jovbQ/wNgV7o+EA+Rdb7GACIZOlZsksf1J3qXzQTXM1h0Zs/ClFk2BXvtxFN1uQzZS2nyYN+mIJTxze1EXDw8JucqkJnks5qxyNLrbyJHcPMaPWGjk8G+YJ+PFvbOLRVdmE6IV/PRi0//5uYzptNQD2FMPLYzvJAk7S4y0lPYm3Dd5SQvbBW2I7TWkyMfVH3z4bdbMzq4dzbuvxX+i37lNqTEgyKn3W86eE/klVIppAmgyEZZ quqc= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 31:x315W8VQV7dIC3a8hSjKK5stArVnwFpu7tg2CiT4KhHRS1Ag+PFPzORVxPrC7xSw+yNHXeTzwtIufSvYqi8cXeC+I76ejzjjEzz+bf593jOl8gWopcOvEdeVZubnj8VRexIGu3bHqx2CEJhyv9YicQWMqqy5oesHTbecYQPzTHLj0K7kM/ixcIlLjlDb6EICTtXimv916Bv7xT43jKKtWT9rdmxo/tnitGB9iMfklXGI/rCOOCTQMwTGoa6TAdvr8ZoamO/LZT7wayFm8Wvb8dVbDCiEVhV/YlPMiEJNbpSVx1OhxdkuNdAxQ6GI1ci4vzutMjCt/0lGPYlY8fr/XJmuzKQIMdnY9+awQGS3bxeauf9CAHruTErUlfAOtU4buWvyvC2WQeLMjqnJToYc/EV3YJS7OYZqFG92VsjPZHB/DQa3QGMLxMlg3kPtsfht5xc/Oh5nNIAVHByRjUMs6opctsNgTqLnaIXO2O/JpfeMH+pbykg8u0BDJJ1odCw4cWejiw7C3L/lLxcP1joRr/VaMfqqdxnaus/vJVv1uXK90OaNBLRx/lp0YqtOZD5F8g2YKdo95lWPM+qFgCwbUgVlgPu78tAhK0jN/RdL1nVfHoFBsujqxAc7x+Mz8VJ8VfAgjP7BQi0ggRuAGGW2DRw7D32WMNsUAma3uOORfSRVRluF16XsmKZUAFcVIlbub39X85wr8iXiQ/vTdMYwsA== X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 20:NMszg7sRadf927MXEiaCMo9hfEcDKE+Xg2qTxWOoNDDKEro1etT5c9wfDaoyNP5ifahsYVAFn998pUBrJzAycHgvrvQ5mKICtbUMO4J8k8bkRk5dBDnEDAOL6Wixh8VNa0BYM5FPyJSptRGLwuKW1g6u8db+KiU7yiT7v8ToQODckCf9fqCbyMh9O7zuQfUip/w8gXTUQbd3ehn8P7nHzMP8wD8wH8loCCk9HSdm999/c0l/ZZ1mH3W1QkyNJJvbvEZdERe08KzdciwIXH+R76vrbl3nZVojaOXmPu26JU/Vto8jnnPsreDOKephpdJeJs95v3K+1Ir5uppKrwvsSzu2V+dmCIDxogd2kL9LbxNch+A3dcxJ7UANYXA0mzjd6i7IRrCrUqQumiMTvtMmT0xqj9/IQsqtmtcVngGhAR7d6cxcv4h504SKxOF+x4/E18WwwURPxUD83uiqdEIkzf71ZcmIQG8ETxYIuC8NQi+224h9/5H67H5H4kkL7FmW X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(236129657087228)(21532816269658); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(601004)(2401047)(8121501046)(5005006)(13016025)(13018025)(3002001)(93006095)(93001095)(10201501046)(100000703101)(100105400095)(6041248)(20161123560025)(20161123558100)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123562025)(20161123564025)(6072148)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB1011; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB1011; X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1011; 4:JiEnN2oO4Rabh3GXXutbWX5wmWWhBcyf1ZC9uH2e?= =?us-ascii?Q?3X2oTe+qGgFz+J2ZiDswKK0ZNOttpDRwzrxXfrpxNwJb63xjPOd5s7BicTjF?= =?us-ascii?Q?qZiP+lLhhP6HU04Ixxlx1OZFwhWKGzaegXdGFqNdr8fs3sDaD2yHCycuA6hW?= =?us-ascii?Q?qu//OI0+U2x2AdB+Fi94QGjbXClL+TwyEVS8phJ2dKoFgUC5NZHNqiKADTtD?= =?us-ascii?Q?ydDc5jOhSxqsBaukX1m6NfqDCqM8VBJIReqUDjIW0ylm3AaZC668TNfgwFlp?= =?us-ascii?Q?OwdmY2ZLQF9BV31MdFsfnT4SWXftnbxqoy0hW8NZ+Qs6y2na74Zp/KfxGvF8?= =?us-ascii?Q?fk7IijPypA3ADuYE8cpVBd39FUcTyUNSt1tLleeFGDO/klBIa2BHeR3NC+w+?= =?us-ascii?Q?R0XWGLZKJGdLV/UCUbikOo6BrOBTgRglRGFxFW7JXgEnVZA8mIL0vB9nqdkp?= =?us-ascii?Q?ioE5vGdsKfhPxhlF3ZBd/UMLR8jFUHFD5Z4dd9bfy0RLAYAUbrfKb94Doa/I?= =?us-ascii?Q?bSSXjlwd3PqkIGvN/9gHmr9QIaYpaAL6HSWYToRyV85aDcnX9hLFu3VXwiIA?= =?us-ascii?Q?IO9hGgeC6GpsuPdNZtcG7AG9aTqrMvvFypdYORVTJZVW32e0MRCCF3veJQ7f?= =?us-ascii?Q?nyeQYI725kK1rK1GtXPR16ZGNnZ3Qqcqc+mkmAiq4qXvHS/85t6Mpr5K4Qpk?= =?us-ascii?Q?3T7UoIvAlNt7+gdJoMW0Ti6vBNQpPcVNGL/ivGEpdF8goaGcxu9Bq2Vqq6RH?= =?us-ascii?Q?Cvvk1zICEhSQjwlZiM/Ahx1dfqB+Ws8kwf8pD2Z/wqidVFSNs0dy99QZ/H47?= =?us-ascii?Q?ADWO0vbP6eL6452hd3d/pb9VuQ4Kiq/2js0xNPFziHBy6GBYJ97XSDbTzrx6?= =?us-ascii?Q?8uksJhEx2kjWKoPuQDoyRrQJcKS5feF6yLju/EI4AyQ+LjxIvWNQ2GzSt2LF?= =?us-ascii?Q?ShVwLsXY+wqZGkfdejPgSEZQ2/cHvpXtU+b0Vdw0k1sRD4spek8LXZ0sOewA?= =?us-ascii?Q?DQ/Bvb0gw8cZCoCtG9syCTUflYhqYj/dBvITOQaZP5ZYjijms87uQRj4jQ75?= =?us-ascii?Q?lMY2eaRkPa3pQPCdZPhk1Ww2LW4VfuyDBA323ZuTrgnlCcMobM83KKPqa1ww?= =?us-ascii?Q?eWd/mf6YYYrqVCH6ed2qaIWdsmR1PCCKcDZ9uMQF0CwkunoXiIfgDkP+BA/R?= =?us-ascii?Q?UcGZaRvOzB2hTRkgaaguM+X9yihg98x7OyQHoW234FqYmQCrBcJ9JtJ9lN9X?= =?us-ascii?Q?JW5Nio8k8mS3mM6Cph9lhbvO7i2iO7cRgR2RDmGC?= X-Forefront-PRVS: 0350D7A55D X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1011; 23:hMuYkd5aih3Suj5c3+aTzJH4l90T5HMxbx5kjTq?= =?us-ascii?Q?blT484aBTsgOuuf4utm+fEPv5cbxX/23+O1/3rVMFyPm1JyXhliMfMFHdsX7?= =?us-ascii?Q?gNRyZnVlcIrwH9jQcMwmOFNK4QPAPN0hglldQiXsw5gc0p1mttkp65rTTRc6?= =?us-ascii?Q?NMwui9QKqx4y56tVhtbvyPMDkjUz3lm+jkeDzzI1mXTldmTB9Qu2cCj7A7o5?= =?us-ascii?Q?lzSPJ9Nqwg+VIsvJw6af8Z3kaoQa/gnyw3VCyn3O8CaZKO0SLiah87WUvQLp?= =?us-ascii?Q?t+N7iie2F0JcfP37pna5VB37FIKVeyfdthjeTXs12oeTGUPt1z4Au7IDKak6?= =?us-ascii?Q?D3N7YnlFLo817okOg8yH5VCvwBmKX4ceI9aq3nKDfDJutfc/9vh33DE9afxm?= =?us-ascii?Q?tfJ9/nnMpxVKlGnMTnZb23207hMQrNLnceMrUeO8lBPGonKwO++qe/WzaW6/?= =?us-ascii?Q?QXiiWE8Egyl2vykp6Pzblu75d9qjW8eltPTouTHPA6+OBuJ+CPwHtnMirmZH?= =?us-ascii?Q?giMitGbpRzL0gcoOYeFH9ReuQ0o5crvnIqbA//5mOVOby6xqZsdyV4WZBEv+?= =?us-ascii?Q?RGYKMD3C2h/hxd5BBSyh9ZmVlD6ZCU8q3J2bcUXqbFwR0xxRxNukQftWpvV2?= =?us-ascii?Q?C3OdEyR6aL1Mk/V5qxPPg563Rhpj9m8wACle5TrZKkhdt36KNGvsGOlIECEd?= =?us-ascii?Q?ooez5x2cO6+Tr1kdP5yRGlnPxD1CsQZ3YL0+iMLaB9b2oi/cxGl5aZQf7G9Q?= =?us-ascii?Q?F1PUpWMwXRBoHFT2fXU1861zf6hPaWxTlb4jiFdrr19N/qv/KhuEfvzib0CA?= =?us-ascii?Q?jr1jXoEkGVGpBXXeiqGzMtSvwIm4KnymMlUXAf8VrWdcq1EYThaKi0g9NfgF?= =?us-ascii?Q?NewdNIQcFPHXgueL9D0WrH9oGuQl+yVBNTmJrzly1fSWQPZo0kp/BG1JE6+4?= =?us-ascii?Q?2ZTiWIwmPM9WviaDi+0LB0SHxe4wyzw1eagZ8F9q4V04vaFKv82RnTayB7pm?= =?us-ascii?Q?ygSUrKpE7E0PRi/6NXnhFq+r6v+OwypTFNBdzvrRsFu3NnTCws735IKqPYgE?= =?us-ascii?Q?84efVOQc=3D?= X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB1011; 6:OX5zTqM3aenWxwH/wDuuq1m5eIcW2u41uF5FHp0w?= =?us-ascii?Q?dLgeKukQEXbDZP40FkbOw8SFMAn/SWZctO0n9w+skIsJ/9nz6uqs8tLI5UsK?= =?us-ascii?Q?+qFNtH1JiXKoZVrVTG6y8d4HB7gC8QJKdU61e2gQbJ/sPSm4M1tmf/w58vPD?= =?us-ascii?Q?GEPrsPyrS21zP/4fCkCxfoYMregKxhFBC8Pv9Tg+78a1RUS30DaDtxnwGFO5?= =?us-ascii?Q?wNlB/I6tR9OvktgmAMFNq10bqiqgE2SoWsSE7KkkXH02nmqWFRJMWRwKGKtT?= =?us-ascii?Q?nqdGloofmah0+oQlqbddkEWsVQQY3mnCmgnRuGR7dulaaN1pGNtaAeoK9M1X?= =?us-ascii?Q?65Yr79RIchR2D2NT+04L0WmRjt4IpuCyWAldO1486Oa7uoGV0J+r+YPExPU0?= =?us-ascii?Q?Z5lpLx5cB5Gr3Wb5I6kww6EJ74xJfF878dBAJ/I1HNTH6xlH+IEi0Y6pQa/d?= =?us-ascii?Q?r96AwKuD4lS8LB2kKg23m6QK/6CCBv+8IATPQ0akySBIif/zFP4WCBA3zBEA?= =?us-ascii?Q?5AJSAuCymaLRRg1m51MiobR7lII5taQDbrhE3vXVfU6EZv4YQauJwsemRDCB?= =?us-ascii?Q?xwKsDnqflqB0eyELGNtcvjo4Le9IikUCDj6pOozY7BgjTrihLNZql1czewH0?= =?us-ascii?Q?AoNmnYkELWrH1t5D04xkoNsQ+d5dM6cEFiIMIemwT0HuFEF7ymy0jYsFWYG/?= =?us-ascii?Q?lGwOh1M5Yda98/d7NY3KPi0thGUqIeP44AnTY0RBgxbhsvgwI7tA8ykIbkxF?= =?us-ascii?Q?KLjxgOjy16WOsRNUH4qjAFHiQES5R4JCK4gkVyvR+cVZq9es9MkST2PgSRw0?= =?us-ascii?Q?jsuDNun7ipm7DVZQBBJUk25l/xNxQQcrAStQrk2R3yvu7K/MISmmWZ8cp/0I?= =?us-ascii?Q?7gvnXQs3olZ8YQ2/xXubAe4WBhdE4A3GkQP3TXdBxbrL/8s2P64PjF+WSzGI?= =?us-ascii?Q?aj5yu0PHSPiOSM0UJA7HnzMpgi0VQ70mlwbNaWQ8bu+Oq5uhCCoVn4V235c3?= =?us-ascii?Q?vhw=3D?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 5:l1OWokSzqVAolgbg22G0aA2RtBUq0AkrfF6Q0gHRrCeBJ09yCLUqjv9YJAa0hQ1ubvxF1MZMqOI69Sjz91stA9d3KfFS5Caa73zEokNN5DaOWx0KB2vSlnP5+MyruovdasFnHPE7MXm6ijgOWJ3ZQH+tIvrVMwNEK/P5TGK+NBa22GScvkz7L2h2qXjfl2rHE/rMh8KamTp4jrkrO6O0F6ygumCXQzVnPECnOrBhQ6ZA+8QeJULUNBHsPA5Ji08mOuf9t/4LrRSVRRxAddWRx//A1eESLuUECRmLO7AbqMXZ5FqPcXBOBARgU275fiobISU0WRMF6sWdTd8d7SsUVlcaVDuAGiinXphBTEocuY/ABMBUYUwuhl5NXKXgrC0m3vVF9DAEbZ2Vklb8zxs7wk5vLLmF5ZazXfy3i4Nt0G3vUpQH8UhG09Ck5SiBMUNSYxyZQ/cpJneTlRQsJdAbT05ZRrsvK27CIoFhTxBy5IJTWTYvb2Bpuxs1Lnd6ptab; 24:LnL857ENaOYgAKJ3zQmzH/OPQhIXtEntootisA6pyfT5DG6DKAO0QMTRcz76yD8rmFh9F0OFm2nUgoMkWLO/2Lj22VQH5RcRAjBKj5NvOm0= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB1011; 7:SZpt508RxPhmwqsIb4MxhRi0E7CN9aNUeYEO4hmYehXfJBSqK1i1fTcESgyJ/eiZ1F63tiHjdmJHz70C/QwoGqy0xNw+9Dv29aRjnUc5lAYMrTsAWAxxYfXvUd6pigJF0WNwR8AQLwPFhL4OXEt6H57UaYCWgs1OJmSCVnjmxx9Gg/BqUg6t1arZutV2t5aR5HfWJnBvGOL6wRORDyT/afUEc8MR0w1rFwsRuxmHyuJ2qv5UV26MzGwMZ+2iYowcDy1OB3PLiiepCPW41FRJV80BFx7qtQsYC5eI2HqQNK4XRexHb2y1MrnuxkOwuoxTMYZj/msMCK9G6BXiXRzHYyDkVwr9oTLByWvDVF+I7DogipaFNS08Fy8U9l8w849myLtTnU/BaG0XGh0RsfiJcTWFMvl+iNnVHN66/+TMYsFGR88COrXm20qX2Fln+gQGRP+TmWNooB40RF8b2DbnZ41hFAePN7c79zq7Kv9kpKqq8Fj5I6B25sHBcxi0nDMrJxYdYx+i7e36pGXzOljmpBZ/Xx8EodcwFfV0NSTtllwbDYEaS2tviIVw/L8joMlb+PAf5qGxjLGIixMNyq4KCz0K1q4a8li3ONk69LqkaFU4e/6r7/Kg9WMBNtZz+jMu4WJl6guMd70e7fi5mBuBCjtmM2It2l1To9PIs6jqOPpD2m3Dw6qpwVnFSFQPDsj5Pzm/dAFL9WTuVG/XeyesCZl4QoTxa5IFAESVp2Yg8HnLsM4e27xF4dFCWAc5t/QbL/ZFTTaEEyx1H1TYEx1tGY2S4gt1IsAf/5tuuSGe/2o= X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Jun 2017 18:12:33.1199 (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: BLUPR0701MB1011 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 This patch introduces error handling for errors that occurred during connection establishment. Signed-off-by: Michal Kalderon Signed-off-by: Yuval Mintz Signed-off-by: Ariel Elior --- drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 183 +++++++++++++++++++++++++++- include/linux/qed/qed_rdma_if.h | 9 ++ 2 files changed, 190 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c index 84bcda3..5cd20da 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c +++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c @@ -1001,12 +1001,75 @@ int qed_iwarp_destroy_qp(struct qed_hwfn *p_hwfn, struct qed_rdma_qp *qp) ep->state = QED_IWARP_EP_ESTABLISHED; params.status = 0; break; + case IWARP_CONN_ERROR_MPA_TIMEOUT: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA timeout\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -EBUSY; + break; + case IWARP_CONN_ERROR_MPA_ERROR_REJECT: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA Reject\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_RST: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA reset(tcp cid: 0x%x)\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid, + ep->tcp_cid); + params.status = -ECONNRESET; + break; + case IWARP_CONN_ERROR_MPA_FIN: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA received FIN\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_INSUF_IRD: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA insufficient ird\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_RTR_MISMATCH: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA RTR MISMATCH\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_INVALID_PACKET: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA Invalid Packet\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_LOCAL_ERROR: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA Local Error\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_TERMINATE: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA TERMINATE\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->cid); + params.status = -ECONNREFUSED; + break; default: params.status = -ECONNRESET; break; } ep->event_cb(ep->cb_context, ¶ms); + + /* on passive side, if there is no associated QP (REJECT) we need to + * return the ep to the pool, (in the regular case we add an element + * in accept instead of this one. + * In both cases we need to remove it from the ep_list. + */ + if (fw_return_code != RDMA_RETURN_OK) { + ep->tcp_cid = QED_IWARP_INVALID_TCP_CID; + if ((ep->connect_mode == TCP_CONNECT_PASSIVE) && + (!ep->qp)) { /* Rejected */ + qed_iwarp_return_ep(p_hwfn, ep); + } else { + spin_lock_bh(&p_hwfn->p_rdma_info->iwarp.iw_lock); + list_del(&ep->list_entry); + spin_unlock_bh(&p_hwfn->p_rdma_info->iwarp.iw_lock); + } + } } static void @@ -2011,6 +2074,42 @@ void qed_iwarp_exception_received(struct qed_hwfn *p_hwfn, params.event = QED_IWARP_EVENT_DISCONNECT; event_cb = true; break; + case IWARP_EXCEPTION_DETECTED_RQ_EMPTY: + params.event = QED_IWARP_EVENT_RQ_EMPTY; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_IRQ_FULL: + params.event = QED_IWARP_EVENT_IRQ_FULL; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_LLP_TIMEOUT: + params.event = QED_IWARP_EVENT_LLP_TIMEOUT; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_REMOTE_PROTECTION_ERROR: + params.event = QED_IWARP_EVENT_REMOTE_PROTECTION_ERROR; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_CQ_OVERFLOW: + params.event = QED_IWARP_EVENT_CQ_OVERFLOW; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_LOCAL_CATASTROPHIC: + params.event = QED_IWARP_EVENT_QP_CATASTROPHIC; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_LOCAL_ACCESS_ERROR: + params.event = QED_IWARP_EVENT_LOCAL_ACCESS_ERROR; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_REMOTE_OPERATION_ERROR: + params.event = QED_IWARP_EVENT_REMOTE_OPERATION_ERROR; + event_cb = true; + break; + case IWARP_EXCEPTION_DETECTED_TERMINATE_RECEIVED: + params.event = QED_IWARP_EVENT_TERMINATE_RECEIVED; + event_cb = true; + break; default: DP_VERBOSE(p_hwfn, QED_MSG_RDMA, "Unhandled exception received...fw_ret_code=%d\n", @@ -2025,6 +2124,66 @@ void qed_iwarp_exception_received(struct qed_hwfn *p_hwfn, } } +static void +qed_iwarp_tcp_connect_unsuccessful(struct qed_hwfn *p_hwfn, + struct qed_iwarp_ep *ep, u8 fw_return_code) +{ + struct qed_iwarp_cm_event_params params; + + memset(¶ms, 0, sizeof(params)); + params.event = QED_IWARP_EVENT_ACTIVE_COMPLETE; + params.ep_context = ep; + params.cm_info = &ep->cm_info; + ep->state = QED_IWARP_EP_CLOSED; + + switch (fw_return_code) { + case IWARP_CONN_ERROR_TCP_CONNECT_INVALID_PACKET: + DP_VERBOSE(p_hwfn, QED_MSG_RDMA, + "%s(0x%x) TCP connect got invalid packet\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->tcp_cid); + params.status = -ECONNRESET; + break; + case IWARP_CONN_ERROR_TCP_CONNECTION_RST: + DP_VERBOSE(p_hwfn, QED_MSG_RDMA, + "%s(0x%x) TCP Connection Reset\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->tcp_cid); + params.status = -ECONNRESET; + break; + case IWARP_CONN_ERROR_TCP_CONNECT_TIMEOUT: + DP_NOTICE(p_hwfn, "%s(0x%x) TCP timeout\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->tcp_cid); + params.status = -EBUSY; + break; + case IWARP_CONN_ERROR_MPA_NOT_SUPPORTED_VER: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA not supported VER\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->tcp_cid); + params.status = -ECONNREFUSED; + break; + case IWARP_CONN_ERROR_MPA_INVALID_PACKET: + DP_NOTICE(p_hwfn, "%s(0x%x) MPA Invalid Packet\n", + QED_IWARP_CONNECT_MODE_STRING(ep), ep->tcp_cid); + params.status = -ECONNRESET; + break; + default: + DP_ERR(p_hwfn, + "%s(0x%x) Unexpected return code tcp connect: %d\n", + QED_IWARP_CONNECT_MODE_STRING(ep), + ep->tcp_cid, fw_return_code); + params.status = -ECONNRESET; + break; + } + + if (ep->connect_mode == TCP_CONNECT_PASSIVE) { + ep->tcp_cid = QED_IWARP_INVALID_TCP_CID; + qed_iwarp_return_ep(p_hwfn, ep); + } else { + ep->event_cb(ep->cb_context, ¶ms); + spin_lock_bh(&p_hwfn->p_rdma_info->iwarp.iw_lock); + list_del(&ep->list_entry); + spin_unlock_bh(&p_hwfn->p_rdma_info->iwarp.iw_lock); + } +} + void qed_iwarp_connect_complete(struct qed_hwfn *p_hwfn, struct qed_iwarp_ep *ep, u8 fw_return_code) @@ -2038,9 +2197,17 @@ void qed_iwarp_exception_received(struct qed_hwfn *p_hwfn, ep->syn = NULL; /* If connect failed - upper layer doesn't know about it */ - qed_iwarp_mpa_received(p_hwfn, ep); + if (fw_return_code == RDMA_RETURN_OK) + qed_iwarp_mpa_received(p_hwfn, ep); + else + qed_iwarp_tcp_connect_unsuccessful(p_hwfn, ep, + fw_return_code); } else { - qed_iwarp_mpa_offload(p_hwfn, ep); + if (fw_return_code == RDMA_RETURN_OK) + qed_iwarp_mpa_offload(p_hwfn, ep); + else + qed_iwarp_tcp_connect_unsuccessful(p_hwfn, ep, + fw_return_code); } } @@ -2123,6 +2290,18 @@ static int qed_iwarp_async_event(struct qed_hwfn *p_hwfn, qed_iwarp_cid_cleaned(p_hwfn, cid); break; + case IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW: + DP_NOTICE(p_hwfn, "IWARP_EVENT_TYPE_ASYNC_CQ_OVERFLOW\n"); + + p_hwfn->p_rdma_info->events.affiliated_event( + p_hwfn->p_rdma_info->events.context, + QED_IWARP_EVENT_CQ_OVERFLOW, + (void *)fw_handle); + break; + default: + DP_ERR(p_hwfn, "Received unexpected async iwarp event %d\n", + fw_event_code); + return -EINVAL; } return 0; } diff --git a/include/linux/qed/qed_rdma_if.h b/include/linux/qed/qed_rdma_if.h index 01966c3..4dd72ba 100644 --- a/include/linux/qed/qed_rdma_if.h +++ b/include/linux/qed/qed_rdma_if.h @@ -476,7 +476,16 @@ enum qed_iwarp_event_type { QED_IWARP_EVENT_ACTIVE_COMPLETE, /* Active side reply received */ QED_IWARP_EVENT_DISCONNECT, QED_IWARP_EVENT_CLOSE, + QED_IWARP_EVENT_IRQ_FULL, + QED_IWARP_EVENT_RQ_EMPTY, + QED_IWARP_EVENT_LLP_TIMEOUT, + QED_IWARP_EVENT_REMOTE_PROTECTION_ERROR, + QED_IWARP_EVENT_CQ_OVERFLOW, + QED_IWARP_EVENT_QP_CATASTROPHIC, QED_IWARP_EVENT_ACTIVE_MPA_REPLY, + QED_IWARP_EVENT_LOCAL_ACCESS_ERROR, + QED_IWARP_EVENT_REMOTE_OPERATION_ERROR, + QED_IWARP_EVENT_TERMINATE_RECEIVED }; enum qed_tcp_ip_version {