From patchwork Mon Oct 9 09:37:52 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Kalderon, Michal" X-Patchwork-Id: 9992457 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 E969860223 for ; Mon, 9 Oct 2017 09:39:51 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id DB55F2877B for ; Mon, 9 Oct 2017 09:39:51 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D02EC28786; Mon, 9 Oct 2017 09:39:51 +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 283FC2877B for ; Mon, 9 Oct 2017 09:39:51 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751068AbdJIJjn (ORCPT ); Mon, 9 Oct 2017 05:39:43 -0400 Received: from mail-dm3nam03on0081.outbound.protection.outlook.com ([104.47.41.81]:52736 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1753949AbdJIJjR (ORCPT ); Mon, 9 Oct 2017 05:39:17 -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=S+uJLfRqh4xBDEbeBWqrK+Wzyy4BG1Zk/pzRqlU/8Uw=; b=LGhhukahSnKWvczz++mfe2OOLmo3OSjStkuK9q3czU4ZpAjpzrWFFofOYU4xi5Ycgws2KulPPkFwtzi8rBGEmrohX8aTSNBN/+zZa/YS2R3q2yowVli1i/WC3qxKG/TpBgRJMjCznhzeN0WXOxRkdqE0Zfgoh8n/lUJFiS4DGNk= Received: from DM5PR07CA0036.namprd07.prod.outlook.com (2603:10b6:3:16::22) by MWHPR0701MB3817.namprd07.prod.outlook.com (2603:10b6:301:7f::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Mon, 9 Oct 2017 09:39:15 +0000 Received: from BL2FFO11FD056.protection.gbl (2a01:111:f400:7c09::130) by DM5PR07CA0036.outlook.office365.com (2603:10b6:3:16::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.56.11 via Frontend Transport; Mon, 9 Oct 2017 09:39:14 +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 BL2FFO11FD056.mail.protection.outlook.com (10.173.161.184) 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; Mon, 9 Oct 2017 09:39:14 +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, 9 Oct 2017 02:39:12 -0700 From: Michal Kalderon To: CC: , , , Michal Kalderon , "Ariel Elior" Subject: [PATCH v3 net-next 10/12] qed: Add support for freeing two ll2 buffers for corner cases Date: Mon, 9 Oct 2017 12:37:52 +0300 Message-ID: <1507541874-18344-11-git-send-email-Michal.Kalderon@cavium.com> X-Mailer: git-send-email 1.9.3 In-Reply-To: <1507541874-18344-1-git-send-email-Michal.Kalderon@cavium.com> References: <1507541874-18344-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)(346002)(376002)(2980300002)(428002)(199003)(189002)(8936002)(16586007)(316002)(107886003)(6916009)(81166006)(76176999)(50986999)(2950100002)(81156014)(4326008)(189998001)(50466002)(5660300001)(8676002)(86362001)(69596002)(105586002)(305945005)(106466001)(48376002)(356003)(5003940100001)(104016004)(6666003)(2351001)(77096006)(50226002)(36756003)(47776003)(2906002)(101416001)(478600001)(54906003)(72206003); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR0701MB3817; 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; BL2FFO11FD056; 1:lTdVQXHC2/RgQfiMFqqP6azN4Ogww4dNXWwHLPSooWmN3mOUyBnGF0cy2M+Im6VMswDYWFcm16v8OtpOR/gAxlKM6nAZ3RIrVCj2mDuw/DcY7Ea6sL6w7IMMVGAhkfJe X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: e7624678-25d3-42d6-13e9-08d50ef99ae7 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR0701MB3817; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3817; 3:KcylVs2gG9zHPEcks6//LvH1MgrlT2U4eWmzZqhm0lQKK9nsuaKxozzJh4cXQ65GwTvoFzPD1jnWhngU/2HtOEWeO3K5gRk5IDFGZmQ1tR9KbxO9CZ2m2IBZtSJEL+CIOLYKmTQMSeO6fCQVx2b5ExeEw2uVIPxorCWObjCsLzPuIg5IL3vufVFrA6AucgX+DUtjTq0NCA/Ntxa0f7zE/lkVDfpVisKGMp8ITXcfG4FyjVtY7LnIzCqm656+q8UlAM4w7mVWfiz8nJ7F1stWsk23UYqJup27DVJhJQr0UQP0YtPxokB4JFr+YSPtLQ054McrEddUlzG1BSlkYqSKSlhbot7MwsDXDTGY6nDwpJY=; 25:SOo4sKv8y7ZudJa41u8JI41ovAfaySE3Xr+ACeBTpFj5nrTNjaeFgZzIvVxxzPS3XazAZRUHC40MEqP9V6r88LeL2+o31heRlo0SJs/C5uTaMiM/SX+5vEySWKPTAulKCpsmWSdXI0dn7PpcIM/PXi1CTFRp7WS03xcAySSryKxXiASCA6p0v7OGhnYjlnps0/YWs9EG4TdHOTF5o+8aC7mw6gbVDEB+jP6+itTbMgozvSPqP3sBwI8YvCPw28mzNuOQJcKny77MIyDw7DElCt6nBR+3vh+c1CZ0cRroi1KuNbKxVFdsZHqo2yQ3lueDOOKrtQ8P0uoIyi2bk4m4ng== X-MS-TrafficTypeDiagnostic: MWHPR0701MB3817: X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3817; 31:lvGY2ZQkN90AGUc7T7SOmxJuxSx7vKYHTxgvF58cKKz6OVdsRiLtUpwxIm9K4+iABIGKburxaeZpYoPhyQNzgOEm6kWwQkEdJudTCVLlb/FwoMHP4c/qw8+8Woj7Y8NehxJ5bXk38dbivKPa+S8vsnL1WznxMKozn9EAOcY0Mfzej5R+6V8cXLo8SVj0sD9hvQcenYxuUgBfDBl9uoGZ56hCMD92SDAhJT4y8gXyBpU=; 20:11u3PacjQuWXxLBsUj5MuRFS/SLYRT8KlLlNL0pt5wrrEZ1wBg+fX7XhGRZdkzkFl7CfKIuIHflv8rH+9x0T+Q3wvT8Bmib0YGrxGWlfQahpiVCOh+wy1OOjWq2N7ty5hrOeOuVUz4cbVtUyconbpFYb0ePHE1q8vE5LahcOmr9St31UFqwoN56Ne7yHbWjgI77ARS2u+HZ8kUEjg+sA1kOZ2CiRIV5698+9qAkEbvWgCffJH9uU9saFyH+21JTy3Jcedajq3qJ9LztcupbYhm65QUjgtX7C2Sad+w/zMDk1ZDKx3FOROlYqW0Sixt75jsoCyUyGPY0EV1LYz9+ol8jc93aO1vo3mLpoZT43teGMJXu8E5uUsRVDJUOl4snjZjUTQu1ZV2sCh/TVnf8QgrGWifQ3IxqsvaRROv8nitWJSq8/cxs6+tBIk9i6XYK1tHgDS9FJHWeN2MmaMxBVfYTGQHnI8+xDKcwUYZEcP+L2tL/nSIhPhHvUG7NrxCyt 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)(10201501046)(100000703101)(100105400095)(3002001)(93006095)(93001095)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123564025)(20161123558100)(20161123562025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR0701MB3817; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR0701MB3817; X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3817; 4:8vQwviZylM5xPW5ogrUvjH2dcpU6rmwgSUA90nj0czLfM0qOOJ8+n9ILIN2LsSo6WbZPOy9mDdRFqa82MPNo2dIGyVQk5Nyfj8Ot1hGBV0P4CDy7ts4HYO2PDA7itf+DFY3j/bA9l7pzyDSk7x1nNjWen1uaN0ZV223HVnjSCW7MI2+mOE9E2xwfub8x0EASFuyy55qQWCq4hXXBu2Z9zENZF+C0NarctoPl0z7ErlAKhYNOvTGt4FY26rYdlBTD X-Forefront-PRVS: 045584D28C X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; MWHPR0701MB3817; 23:u3hI7oMFsuC8p3QF4EPiT3lfexSDqIlMEq1jE4d?= =?us-ascii?Q?2JYRjbqdcTDLIF0+t+xJCJ3FKfK4HqfbQP77MpJghgxlXQY4z72+dGyc4GzS?= =?us-ascii?Q?iB/1N5RrhKMVu+X/pfchbtu9//6K8xNGvDBXIl0SSfSiV0e7graCMBIg2oxB?= =?us-ascii?Q?LnXTrv7wYiUD10f6gmbuPR9nuqjFKprIBM2MeasI5VrpC+BkDx4qFHRhdEDJ?= =?us-ascii?Q?FQml7dyg2RLto+PY3iB2eIUjmdr76zzBQ+S7xrKfEgCk4TxxWEsaILSudfbD?= =?us-ascii?Q?PkK4DID5+xKTweQPlwo0BKsghSqFiGI1RZzMKUcS44LRT0Ynnwmx7NWxgXG5?= =?us-ascii?Q?UTNjYHbuHp7W37bsornWRCFPafJbqJAUG76BbMV1W5RK7kvprLt1wEhReA/7?= =?us-ascii?Q?EhySL3/+m765w84woTFFLeONLmsOqCjtROoMh1I5kM+8pTHlRn741sRtPtiY?= =?us-ascii?Q?HXO6nwaQrpFbk5oWs6W49DNMyxQx1+b2aXA3V4X9DwA3jOrQFPaL974Gf1GC?= =?us-ascii?Q?0E3cmjIuKAycJF6VxW+zygKw/klputM/DENxcuS5WdzRc9Gfpbv9zzo5yYjA?= =?us-ascii?Q?IvmH0OMuWPRW8Czg0i+Cp2Rs0DkVGlEtX/p5xlcpBSJV2Ay0kpafH+lFcR/V?= =?us-ascii?Q?pd0FInnm0FPCg/ZWZy+7lV74K7PEdgNiKXkbRZW7cq3B8KJ9bEjHEDJiJcOE?= =?us-ascii?Q?u34c4er28fllW2K0dl2hKRJ/nYVV4clfy/VxT45X3fjKSNjZ+kS5M6nL/tuQ?= =?us-ascii?Q?euXVipL+oOz7TS3drXAToo1ne/nzg1j5w34zzMyttSVDm9QrymGi9negr9Gb?= =?us-ascii?Q?vIKn7/T1Fg2hrtRCfG1i/j7OMkgSGFkVLzosq2csuN8bHeWsY2nDG6fxxLWL?= =?us-ascii?Q?m0GC0elEeGfovuRhn1yGVsq8uBhia+1IHNYmfwGgJDDovkjfXuHQdoldxqli?= =?us-ascii?Q?faOopnzMZ8sxJyJ484kd/Kle5L74Ou47bwr7F3LKqsQuXxxDPxXKuP/VEw+3?= =?us-ascii?Q?seyQswdzvZ+TQ5jSCS2jFK56a?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR0701MB3817; 6:G0YgsrK3laB2KBTx+Y71+6OW8Vz2Lgartar2yKGFzFFEfvEP2guPWqahYvU3Ss0bLrVbHHlstckeTyPomAstuLT35iQ/gQSDnhhZwMchBMLbN6nHLNRxo//fl1/If8fFPqlcQURrFPG93pEmQTyB2vlZU1BnHeCaOvqsOOrBzdmaOLdMUmxJER1zcAjmxVT2ERYCG6ObNugPlN+igVFFhQL0xI3tHiLYDdmwww1WaMjJcNxo1Wy4moqjiDBi4bRLzX/B6ZN+FjDWlY+/lENl4vCK5c/WrZfqlrnX0nUXaVp9KsIo5yfI5JgNwxHMqp6TeMDOPJUlzydD9NibshrPtw==; 5:YXyjBBPTvgSj99dqx1fdsu8UvIuypyVERJR7TZU6fXmuPEJTan5Xyn6jbDW/fQtx32XT6/ryStcC4mvnzgtqmgq52MpSPzcZhPo9DOqqnIRmOulmoHEk1F3rufR2STfK0Z/fuUtvtVpSTGDt+KV6IA==; 24:gHnStBal4F/L931Ov0RDPYix9gM/tYa73sm9qEUqc4+qXsWEXNXlKaZR77Q8058SNpsGaNKWeqjACRDexMRo88xWfQpETfeulD9lY1LvBSo=; 7:1ajHa+3fVOiJOixEYrlRvyg5ODo8oi7SwOgfhEBD9n+NLBknBzrb8azcVNpKVfyla5zTgY3f72wBz+ehhLmLAgtNNQK/AQdNmXOBgj/kDXWVw9HxIpKa+/DblrfZFn8B1LlR6VCBUeudCar/+Zwge/Fbu602bOb6zKFgnm66aloT/nS0DOphPltmp8dPdyNiBSVfwznEA/YAGjtL+nMrFOrvcho3Szno7be2zqO3Q7U= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 09 Oct 2017 09:39:14.7842 (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: MWHPR0701MB3817 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 When posting a packet on the ll2 tx, we can provide a cookie that will be returned upon tx completion. This cookie is the ll2 iwarp buffer which is then reposted to the rx ring. Part of the unaligned mpa flow is determining when a buffer can be reposted. Each buffer needs to be sent only once as a cookie for on the tx ring. In packed fpdu case, only the last packet will be sent with the buffer, meaning we need to handle the case that a cookie can be NULL on tx complete. In addition, when a fpdu splits over two buffers, but there are no more fpdus on the second buffer, two buffers need to be provided as a cookie. To avoid changing the ll2 interface to provide two cookies, we introduce a piggy buf pointer, relevant for iWARP only, that holds a pointer to a second buffer that needs to be released during tx completion. Signed-off-by: Michal Kalderon Signed-off-by: Ariel Elior --- drivers/net/ethernet/qlogic/qed/qed_iwarp.c | 25 +++++++++++++++++++++++++ drivers/net/ethernet/qlogic/qed/qed_iwarp.h | 1 + 2 files changed, 26 insertions(+) diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c index 83b147f..8b17369 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.c +++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.c @@ -1846,6 +1846,12 @@ enum qed_iwarp_mpa_pkt_type { /* vlan overload with enum iwarp_ll2_tx_queues */ tx_pkt.vlan = IWARP_LL2_ALIGNED_TX_QUEUE; + /* special case of unaligned packet and not packed, need to send + * both buffers as cookie to release. + */ + if (tcp_payload_size == fpdu->incomplete_bytes) + fpdu->mpa_buf->piggy_buf = buf; + ll2_handle = p_hwfn->p_rdma_info->iwarp.ll2_mpa_handle; /* Set first fragment to header */ @@ -2195,9 +2201,19 @@ static void qed_iwarp_ll2_comp_tx_pkt(void *cxt, u8 connection_handle, bool b_last_fragment, bool b_last_packet) { struct qed_iwarp_ll2_buff *buffer = cookie; + struct qed_iwarp_ll2_buff *piggy; struct qed_hwfn *p_hwfn = cxt; + if (!buffer) /* can happen in packed mpa unaligned... */ + return; + /* this was originally an rx packet, post it back */ + piggy = buffer->piggy_buf; + if (piggy) { + buffer->piggy_buf = NULL; + qed_iwarp_ll2_post_rx(p_hwfn, piggy, connection_handle); + } + qed_iwarp_ll2_post_rx(p_hwfn, buffer, connection_handle); if (connection_handle == p_hwfn->p_rdma_info->iwarp.ll2_mpa_handle) @@ -2216,6 +2232,15 @@ static void qed_iwarp_ll2_rel_tx_pkt(void *cxt, u8 connection_handle, if (!buffer) return; + if (buffer->piggy_buf) { + dma_free_coherent(&p_hwfn->cdev->pdev->dev, + buffer->piggy_buf->buff_size, + buffer->piggy_buf->data, + buffer->piggy_buf->data_phys_addr); + + kfree(buffer->piggy_buf); + } + dma_free_coherent(&p_hwfn->cdev->pdev->dev, buffer->buff_size, buffer->data, buffer->data_phys_addr); diff --git a/drivers/net/ethernet/qlogic/qed/qed_iwarp.h b/drivers/net/ethernet/qlogic/qed/qed_iwarp.h index 858755c..58db51a 100644 --- a/drivers/net/ethernet/qlogic/qed/qed_iwarp.h +++ b/drivers/net/ethernet/qlogic/qed/qed_iwarp.h @@ -55,6 +55,7 @@ enum qed_iwarp_qp_state { #define QED_IWARP_HANDLE_INVAL (0xff) struct qed_iwarp_ll2_buff { + struct qed_iwarp_ll2_buff *piggy_buf; void *data; dma_addr_t data_phys_addr; u32 buff_size;