From patchwork Tue Oct 3 08:54:57 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kalderon, Michal" X-Patchwork-Id: 9981961 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 5E79B6029B for ; Tue, 3 Oct 2017 08:56:50 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 5122E1FFCA for ; Tue, 3 Oct 2017 08:56:50 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 4601A2862A; Tue, 3 Oct 2017 08:56:50 +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 9B15F1FFCA for ; Tue, 3 Oct 2017 08:56:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751396AbdJCI4K (ORCPT ); Tue, 3 Oct 2017 04:56:10 -0400 Received: from mail-cys01nam02on0068.outbound.protection.outlook.com ([104.47.37.68]:45760 "EHLO NAM02-CY1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751277AbdJCI4H (ORCPT ); Tue, 3 Oct 2017 04:56:07 -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=fiz98cZ/Xo8UdrEFfbyDhrK68jXvq/8auwEWRqtfi7E=; b=PHAuIMko9wSHUULOUgzlu08YC0amCeTjbcm6Fqy1SaBH3EHARsw3rpwSYGPHeNA7WsNiNleGl8+IEhLzyiJXsHZeFbZ2Lc8Z0/HX/z0MjQ1E82vU8M2cNXhXpDZQ461x9GLyDA3nRxE8Re9+mgV7TTG4xpO2qPZVDgo9YpWuhto= Received: from DM5PR07CA0039.namprd07.prod.outlook.com (10.168.109.25) by BLUPR0701MB2035.namprd07.prod.outlook.com (10.163.122.142) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Tue, 3 Oct 2017 08:56:04 +0000 Received: from BY2FFO11FD018.protection.gbl (2a01:111:f400:7c0c::150) by DM5PR07CA0039.outlook.office365.com (2603:10b6:3:16::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.56.11 via Frontend Transport; Tue, 3 Oct 2017 08:56:04 +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 BY2FFO11FD018.mail.protection.outlook.com (10.1.14.106) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.20.77.10 via Frontend Transport; Tue, 3 Oct 2017 08:56:03 +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; Tue, 3 Oct 2017 01:56:02 -0700 From: Michal Kalderon To: CC: , , , Michal Kalderon , "Ariel Elior" Subject: [PATCH v2 net-next 07/12] qed: Add ll2 connection for processing unaligned MPA packets Date: Tue, 3 Oct 2017 11:54:57 +0300 Message-ID: <1507020902-4952-8-git-send-email-Michal.Kalderon@cavium.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1507020902-4952-1-git-send-email-Michal.Kalderon@cavium.com> References: <1507020902-4952-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)(376002)(346002)(2980300002)(428002)(189002)(199003)(6666003)(106466001)(2351001)(47776003)(104016004)(16586007)(107886003)(5660300001)(77096006)(189998001)(105586002)(54906003)(86362001)(2950100002)(316002)(6916009)(101416001)(8936002)(50986999)(72206003)(69596002)(50226002)(4326008)(81156014)(76176999)(8676002)(36756003)(81166006)(5003940100001)(50466002)(48376002)(478600001)(2906002)(356003)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:BLUPR0701MB2035; H:CAEXCH02.caveonetworks.com; FPR:; SPF:None; PTR:50-232-66-26-static.hfc.comcastbusiness.net; MX:1; A:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BY2FFO11FD018; 1:RUCgeJlgLPTETHmaAlvI3ZAnalOkQbuDo/GmX04l2j+vBa0lKmYr7jRTHFlXu77ZAzT0+yKuSlmBGf1ENFZuixvDv38WbsxiTlJ4anPeAAXsx6qiVNYmeNAT+GV648X1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d46b906a-8d82-4d00-940e-08d50a3c940a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:BLUPR0701MB2035; X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2035; 3:8K5kcmQr3AYJ0kERDAKLSg7bh1er4i5rhTJCrMwN4EVfAMMbqCQONuVin6rMX5M0W6j3f7BSqNA0xmH7g9Ol290/DObhdhhTRtOVtNe6jn3ACTSfWb9k1LdC9WHDH90PWEGhQaYvyHivWjm/Oo9Il8SppXUXznEh8oZgy4/LS2RY90XCjv3JlofRJEDPbgg5Wne6EN7l9tjPQIm+sU2N7imD9/aHjAwe58yUHm06kj9y01frR7/RgMxTcgNqNlaJVFplcuAt0NGuxaRU4K22ZEf78ANqMMKD7lgFHCtGZEBPxdzE28E+K0jtOYvy4SuC7eMe/DtOB24CkKebiS538A==; 25:cq7ZY9sR/8IP5XGrWf0j6EUqFmtCG9PH5RgyLwa0NPo5SGKHxTt5n/6Q9TgdDxqdf6jUlZ2ViAci3mKNNH2+fP/e3kuEJ6UJiguKRAqrYlyssfpqoY9yFdOaMX57lPBpC07yk40h4kgBkrEB4+xpnoPH9VlhbZVMYOA1agTLYIYhiNMGG8dM8hHs64fQF8LviwtGtdYIo6vkjhJhBpr4x53sgLE7mzsWLivGEnG02kNa37FtFpPYWRtUaNsmVRXw2uV7IATp6NAeEOuGOysXNXrCV92GgvLUMDesfgjLKQ/+txA15D464wuujLkhunV/5/PJcdQ/RFoOezzi2KCK+Q==; 31:Twi80e/IVuQA7ZvANjkrfdIKoHh3qMvbOGsxw3m+peleFZFO8qrXkMRbC1ZTbCx2RLnuAmM2AfiFMocxn37PN3Ac2hJBdPJYRd2iwnUmFP+UNkIAeaMUrf3uhH4+07NvwaDUlzySzPV8TywkaKguB+HPc0pTe+3c0HMHcmrTd/W9dMgczSMZ0MZOxz9fuO2g4InfJ7XrDU5j55vSBRo35Ko34B2xojcR3DeUZ4N9IqA= X-MS-TrafficTypeDiagnostic: BLUPR0701MB2035: X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2035; 20:As3Frcsfn12EYjlRWNGmlInSi0gzayk6xJqGltYeQKHFEll1vf2ry1ppkpc7YNY0R7ob/4ijwoRVNtnYOrFjt5ZWAXOhkjKo7dtkSjYdvecNCuGP3sXdr4z7ePx2oflGHlgS1djcDt9BBAQtSwwUUADfEIfsrZjFFKY2OUcoGE/vEE+w628MQYYJZbSNyQB4HvwYSOD55TCC6woyQNAd0WH652pnPc5l4riRUAndKD4IEMAPmpANecwXPVzbClTIuO1lbrszuVE4L8rikdgSqydO66u1psdt70PmeT3X2dVcc6epT2/IWpg35c+xGHZb41ctkH+3Fw0APpRydEEXWOat6sKflx67FKPee+4NfAmHrqm8/obWvLT2UQiqFiONZcpXLcVAO8cM5+0Iexr2RjPepd0BgW7F764NdmelisRFaaXPL3PB0pQr3bKT5Eus7ZdhujDa++7Mv2jRgv0R2I8pTg9ZnG8O3QnC/OHVKoNXo6+4He9mtId5SwBbaZzt; 4:fWb9PAnrEuSzo7bNDDOAMuqd9c+krFIvLNVIngFefbKI042UINohff8jwTMkhTW3puW+LuLuq7yhmfxrfxRYJ0shnOh46J6FJzfd+8AtMBR24IyAw3WaWxD1RYhDZPXDMam1ONEFqKn466Je2R2ovnKJQU5hn6rF1I5+vCjRhxjmsDOQk8Sj7ATmjqjTbOAyKinj8zDap4YYucJ8upo3j3RMPi+ObhiaSRtQwOmiBLu7k9sPDrrbGVEZVzB1/Rsa 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)(2401047)(5005006)(8121501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(10201501046)(6041248)(20161123562025)(20161123558100)(20161123564025)(20161123560025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:BLUPR0701MB2035; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:BLUPR0701MB2035; X-Forefront-PRVS: 044968D9E1 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BLUPR0701MB2035; 23:ND2Imbzt8BCamUx0HANRmLlxDMfzUWfE8B93wEf?= =?us-ascii?Q?YqCz+mG5iPAp4HyBwzbsu36I3M7K4ypPp/H9IS6t4Nj2fp538Y25JcwEHpWy?= =?us-ascii?Q?EKtiN5Vg5PkMTP/1qxN4FTEEDtutOIU/C7msNYB6DLt8fXVa5A0viaT+UFpK?= =?us-ascii?Q?slXdY9GLj0HkpySHi/khvxKPvbKRjGITO/yIlD+KPzj6GCk22EnpUYoEeEJM?= =?us-ascii?Q?vnbHQu7/RsFsM3pSInZs4vJ/GpVe+KXGnEITVk/9PEjXkRkb75ooEw/q75Ex?= =?us-ascii?Q?MGj/0m7Yimxj3FTrncjGjFFfHa7+q8z+idfnlOQr2UiX0MMHkjUjABaGDofy?= =?us-ascii?Q?aTRu/XbJ8CLHhsX97hts0tiG+VZvIerl0U3EZp0osV1Ru6FLyzHZaRP0QyST?= =?us-ascii?Q?QZEnSXu64pWuhPlaNb+wnaQ39s2JXhrRU2Fn2WFONWjDlKRfVso/TKUbD/LM?= =?us-ascii?Q?uxGiM6pz57i5+7lj82ZFQjR1PAjCW2Jb8j1IiN3InqE5e2/wTKyV6+ZQVOwu?= =?us-ascii?Q?cKK6IHLfV9OMEBN68dGGfKXUtpk6AU6p06RJzXkXDxhhtbBU1ZSWiTYIAHyK?= =?us-ascii?Q?D/a7wprkLxLjDx6UfO5fDRS3oLZRP9WFK/kLcQZ/LstFHw3IkVcZKCS3qM23?= =?us-ascii?Q?baUxSTwEGIqtTkAUE8U4bEHn1HQW/lY5/cG+aRO2P0izh5CvXsKU44TvYWVL?= =?us-ascii?Q?xcmMuKvQ/KQHbDLXVnNOrguYm5090GYx6oAHIY7DtBqMMqjVFWUQvPkpvXdz?= =?us-ascii?Q?t4zD6aZbSTi2olVqG72Wkc32hPFO3I0gB0UfYEZq/HhBytXcvVI58KTlflmL?= =?us-ascii?Q?W1Xtif4ufCFWyvSrvEaqvb+yT6fOWZWPTy4D1ci02q1PUaYKzlkPkkHWwMnw?= =?us-ascii?Q?buuUdJUmi8cFRSgLlmWfFKP19wCCbrEOG1tCYaHNViu85+jH/jVEn/ZfuUOa?= =?us-ascii?Q?oU49jjQ7GoTKISkl8zHNxLXTh4RSdvajIskMunS8P2BJXotNBQoeLQf1e4fx?= =?us-ascii?Q?dnoYiv11a2ZTVCjzhaba9MyzE?= X-Microsoft-Exchange-Diagnostics: 1; BLUPR0701MB2035; 6:o/ev+A8xuzykVBaH5u77i+LNIeDnXYqwNngLC1t4Ocxj3x8EJ3ET+rIbJwnJ0jZH3r5rHNTZcvJP3Vk/EPRZ3qMMWu1gUk92qR/wZaaib93Gfpuj2QvZFDJgPoBXBuKzOFhh7NyqlOn5uQU/63k5oeWftBKOjmjhOZRJv8itXrne5XxqBHbLPvJcn8A6hGk2lh1XXqWZMbcBnWq1WApCaheAlz2VnVUlhSmay42lyq3MA6dFJd+6/LxN5EPG6BGPe3/XiwZYw/ZhZe+nfq25QhB0snSeZmWq0Tdufqg/LPwLqMvL4kh4HCJbFqmky7XNCwXf3L+bhE6SYhJ3sW0KxA==; 5:njGBdynWuv5RE1rBF3pPjJzSKIXRKhweUc7oiOv9bx5JrSfm8UIzCpRaRpLgbywA9M3HFx118zlasT/bpR0F4p+Tw84UZUFu5jw3Q2svAPAMbFTNIWfDPfiqmCuMMpQX/AMjoudCdBd/VDkZtt347A==; 24:uCNL3yP7j3I6nrhMloE9e7FuaV4Lm008YmE2GI0/hNbKEHz8boa6gQcW43y5ZaJLxAG9sHdGXHeTdnuGRhb0b6toEW8nVPW8vXm34Pn2D4o=; 7:VP2Oe+4I4QMrW49MCbkNr5bQLJ6k2RJjzxgyBetzoXbuXp8h4/Fd01bpZZqYiB+VlmFpOHISgO6QGtZ9POxzO2F7YMo8cseIzqeDYCt6aKTQrew8w3RmxscxIaeTAg4/NL2NnICBiBdm+VfAbctNNF2zOYMqgrrEKswWUsuXaQMb0Yzi83IISJZE1Kg7Df+88OdHB5HpzAaPHLBVYvKI76xPoVOepohG62twT+QtsKE= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Oct 2017 08:56:03.8645 (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: BLUPR0701MB2035 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 adds only the establishment and termination of the ll2 connection that handles unaligned MPA packets. Signed-off-by: Michal Kalderon Signed-off-by: Ariel Elior --- drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 65 +++++++++++++++++++++++++++++ drivers/net/ethernet/qlogic/qed/qed_iwarp.h | 1 + 2 files changed, 66 insertions(+) diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c index 8fc9c811..f413621 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c +++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c @@ -1713,6 +1713,19 @@ int qed_iwarp_reject(void *rdma_cxt, struct qed_iwarp_reject_in *iparams) return 0; } +/* fpdu can be fragmented over maximum 3 bds: header, partial mpa, unaligned */ +#define QED_IWARP_MAX_BDS_PER_FPDU 3 +static void +qed_iwarp_ll2_comp_mpa_pkt(void *cxt, struct qed_ll2_comp_rx_data *data) +{ + struct qed_iwarp_info *iwarp_info; + struct qed_hwfn *p_hwfn = cxt; + + iwarp_info = &p_hwfn->p_rdma_info->iwarp; + qed_iwarp_ll2_post_rx(p_hwfn, data->cookie, + iwarp_info->ll2_mpa_handle); +} + static void qed_iwarp_ll2_comp_syn_pkt(void *cxt, struct qed_ll2_comp_rx_data *data) { @@ -1877,6 +1890,13 @@ static void qed_iwarp_ll2_rel_tx_pkt(void *cxt, u8 connection_handle, kfree(buffer); } +void +qed_iwarp_ll2_slowpath(void *cxt, + u8 connection_handle, + u32 opaque_data_0, u32 opaque_data_1) +{ +} + static int qed_iwarp_ll2_stop(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) { struct qed_iwarp_info *iwarp_info = &p_hwfn->p_rdma_info->iwarp; @@ -1902,6 +1922,16 @@ static int qed_iwarp_ll2_stop(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) iwarp_info->ll2_ooo_handle = QED_IWARP_HANDLE_INVAL; } + if (iwarp_info->ll2_mpa_handle != QED_IWARP_HANDLE_INVAL) { + rc = qed_ll2_terminate_connection(p_hwfn, + iwarp_info->ll2_mpa_handle); + if (rc) + DP_INFO(p_hwfn, "Failed to terminate mpa connection\n"); + + qed_ll2_release_connection(p_hwfn, iwarp_info->ll2_mpa_handle); + iwarp_info->ll2_mpa_handle = QED_IWARP_HANDLE_INVAL; + } + qed_llh_remove_mac_filter(p_hwfn, p_ptt, p_hwfn->p_rdma_info->iwarp.mac_addr); return rc; @@ -1953,12 +1983,14 @@ static int qed_iwarp_ll2_stop(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) struct qed_iwarp_info *iwarp_info; struct qed_ll2_acquire_data data; struct qed_ll2_cbs cbs; + u32 mpa_buff_size; u16 n_ooo_bufs; int rc = 0; iwarp_info = &p_hwfn->p_rdma_info->iwarp; iwarp_info->ll2_syn_handle = QED_IWARP_HANDLE_INVAL; iwarp_info->ll2_ooo_handle = QED_IWARP_HANDLE_INVAL; + iwarp_info->ll2_mpa_handle = QED_IWARP_HANDLE_INVAL; iwarp_info->max_mtu = params->max_mtu; @@ -2029,6 +2061,39 @@ static int qed_iwarp_ll2_stop(struct qed_hwfn *p_hwfn, struct qed_ptt *p_ptt) if (rc) goto err; + /* Start Unaligned MPA connection */ + cbs.rx_comp_cb = qed_iwarp_ll2_comp_mpa_pkt; + cbs.slowpath_cb = qed_iwarp_ll2_slowpath; + + memset(&data, 0, sizeof(data)); + data.input.conn_type = QED_LL2_TYPE_IWARP; + data.input.mtu = params->max_mtu; + /* FW requires that once a packet arrives OOO, it must have at + * least 2 rx buffers available on the unaligned connection + * for handling the case that it is a partial fpdu. + */ + data.input.rx_num_desc = n_ooo_bufs * 2; + data.input.tx_num_desc = data.input.rx_num_desc; + data.input.tx_max_bds_per_packet = QED_IWARP_MAX_BDS_PER_FPDU; + data.p_connection_handle = &iwarp_info->ll2_mpa_handle; + data.input.secondary_queue = true; + data.cbs = &cbs; + + rc = qed_ll2_acquire_connection(p_hwfn, &data); + if (rc) + goto err; + + rc = qed_ll2_establish_connection(p_hwfn, iwarp_info->ll2_mpa_handle); + if (rc) + goto err; + + mpa_buff_size = QED_IWARP_MAX_BUF_SIZE(params->max_mtu); + rc = qed_iwarp_ll2_alloc_buffers(p_hwfn, + data.input.rx_num_desc, + mpa_buff_size, + iwarp_info->ll2_mpa_handle); + if (rc) + goto err; return rc; err: qed_iwarp_ll2_stop(p_hwfn, p_ptt); diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.h b/drivers/net/ethernet/qlogic/qed/qed_iwarp.h index 9e2bfde..9d33a1f 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.h +++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.h @@ -73,6 +73,7 @@ struct qed_iwarp_info { u8 tcp_flags; u8 ll2_syn_handle; u8 ll2_ooo_handle; + u8 ll2_mpa_handle; u8 peer2peer; enum mpa_negotiation_mode mpa_rev; enum mpa_rtr_type rtr_type;