From patchwork Wed Aug 23 22:05:23 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9918573 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 5BCFB603FA for ; Wed, 23 Aug 2017 22:40:56 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 4D0DA288F8 for ; Wed, 23 Aug 2017 22:40:56 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 3ED3728A9F; Wed, 23 Aug 2017 22:40:56 +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.9 required=2.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_HI 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 BEE0A288F8 for ; Wed, 23 Aug 2017 22:40:55 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751227AbdHWWkz (ORCPT ); Wed, 23 Aug 2017 18:40:55 -0400 Received: from mail-co1nam03on0081.outbound.protection.outlook.com ([104.47.40.81]:27616 "EHLO NAM03-CO1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751177AbdHWWky (ORCPT ); Wed, 23 Aug 2017 18:40:54 -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=1wybsTzY15zXNs9OhyjYXRjY1v2izrd2xBuTauxUW80=; b=RUZaz6C077eL+7MA4I/IPz7cIgdjE8IFOMU89u/PyN0B6t4J9fCvYEINsFB8IuSh1WSHe1mkM8tV0S0DlzvP87+PcZ28Nl/dkuk/byMEABAk1O7apV95NKizccgsLfABhP7kPcufIqS60NrKtkrx6fp7XZpLBg03HM50QL/xSR0= Received: from BY2PR07CA0095.namprd07.prod.outlook.com (10.166.107.48) by CY1PR07MB2523.namprd07.prod.outlook.com (10.167.16.14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1385.9; Wed, 23 Aug 2017 22:40:52 +0000 Received: from BN1BFFO11FD027.protection.gbl (2a01:111:f400:7c10::1:104) by BY2PR07CA0095.outlook.office365.com (2a01:111:e400:7bff::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1362.18 via Frontend Transport; Wed, 23 Aug 2017 22:40:52 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; oracle.com; dkim=none (message not signed) header.d=none; oracle.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 BN1BFFO11FD027.mail.protection.outlook.com (10.58.144.90) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.1341.15 via Frontend Transport; Wed, 23 Aug 2017 22:40:51 +0000 Received: from dut1171.mv.qlogic.com (172.29.51.171) by CAEXCH02.caveonetworks.com (10.17.4.29) with Microsoft SMTP Server id 14.2.347.0; Wed, 23 Aug 2017 15:40:49 -0700 Received: from dut1171.mv.qlogic.com (localhost [127.0.0.1]) by dut1171.mv.qlogic.com (8.14.7/8.14.7) with ESMTP id v7NM5TJu003266; Wed, 23 Aug 2017 15:05:29 -0700 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v7NM5TWd003265; Wed, 23 Aug 2017 15:05:29 -0700 From: Himanshu Madhani To: , CC: , Subject: [PATCH 29/31] qla2xxx: Ability to process multiple SGEs in Command SGL for CT passthrough commands. Date: Wed, 23 Aug 2017 15:05:23 -0700 Message-ID: <20170823220525.3115-30-himanshu.madhani@cavium.com> X-Mailer: git-send-email 2.12.0 In-Reply-To: <20170823220525.3115-1-himanshu.madhani@cavium.com> References: <20170823220525.3115-1-himanshu.madhani@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)(2980300002)(428002)(189002)(199003)(81156014)(5003940100001)(5660300001)(80596001)(69596002)(106466001)(8676002)(86362001)(356003)(105586002)(478600001)(81166006)(1076002)(87636003)(33646002)(2906002)(626005)(4326008)(72206003)(36756003)(305945005)(101416001)(6666003)(50986999)(54906002)(8936002)(76176999)(42186005)(2950100002)(47776003)(50226002)(189998001)(50466002)(48376002); DIR:OUT; SFP:1101; SCL:1; SRVR:CY1PR07MB2523; 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; BN1BFFO11FD027; 1:9/12QXd0CVzMrniK44/kRlxpHzjc7NxjSdgKy2Zfw/ZQQqRcCeq202r2r8slCwBHt+hL/TPOuE39B66ERSkAAYYdkMheFBX5GmtC3IY36QbSMI8alMReSYNiu5rfObZV X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d581d838-23c6-4f95-ac03-08d4ea78025d X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603190)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:CY1PR07MB2523; X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2523; 3:Bml2W7cGYOAF4jU20aG+zeLSepTCkffDxeSrFqNvWPGMfHn2qHo0D1ow9E6IsQc0UByot/CKIENaw17AqwKBt801zLFxN+9fQn7ScNs3x3k1V6ZYa6Dwogwn5ihlJcJvbL5+x/NY19hY3KSuwoDs6t+6/H/YpTQMZKyB6c4YalvzVWaB6+n1BNrNz6teVhylVm0oOmk7ejHQie2lV6D3cPS9CIPmFoGMvywAxQjWW1p6BluwjJan+PkgjmMnQaL6Nz9lXSfiqqZjidh84dBbQCE6plmR48IefWVfJq9xUjKhVuosYlQfeWvMlAstdg9MbRnkJfAxDsCxkIVyGDBN7w==; 25:rr2CqtcN73cOr6oPrZzRZ88zjPFb5H1BYZI/vls02+un/ZbXBLlAAoPIvbMnirtzG+laT9iGvoPYAiYcZ10fK9QEeLNZPDv/nKmqaPZEeVu4Q5TJklz2lFRLKVyrGVGQL9mxorjtZcLfsn0jTrxHJZOb3NVoMOcuGbNPAohwowZzPU4CVr/P15XkXkbRKIxm7jIWpHFr7SbpBj88BtdQnCGwvcgazm4v1e8/7Dh2Ln/bm5RRkf6P4xrgbn0IzPRV82keHirsO7ilMJk3vFFfOB1r8z+7IgGbqSI9sUxgHcpej681I2tupTFTQCs1Cq8Bj1ecu5wnZjNWVCDye4tiPw==; 31:gVleEuX3TtdO8zuQaSTUbqQ8JyubKYKpybcr0oG0i2PkTe8ZogG8HzEDeSxw18486972zf6dWW13QL7Q5fWxxPXI6ur3AprKidDJxoSF07SQ71yQjcx71BVt330g2Up973G/bicAp/ZCPCgbRReaHyAJbqzjtbqY67vrx92lzvLGeLTW3Zmg3pL2hRI64EyPCLJY+raQ4uARZ7+SEQuobby1sRdyLwqNdcNLapALB8g= X-MS-TrafficTypeDiagnostic: CY1PR07MB2523: X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2523; 20:5JtaC+pTw6xyJNbUFSd8jF+L8/IBDzp62JpUXOLSFUMU+eyW5xzbD1nMbxRqb/H5LbwvKLI2eI9+15MdLtgTEWgURhrNiBcgbjF8XEEQpfVq9NxnceqCezJjPSDTEtmqglXOSAXTn20e1MV1Fmv7nDb628z4nspTG3rW+njeRRaWOfJjlH5+GwotxZ/7nquytzbXRyWUyqekAeVWuLRSQm+Vs3UVEJCNG8O7DPaE7jvxtRe8559Xf3vl7lPa1P9c04ZLTdswAki+wHk/jEncPMKhHvXyUqIDeCED9SqtF05ZUfXlamxdeVnDVP8F6bul7FWgjdUR18QWPqAJxclBLc12X1dNG69gCY+1XnryC7fyoMbZAkZYW5pkCz2pachbniUmVv+afzCiAkUQnnOIHjNUwds/z5+pPlqRsIVNsa/eyZ+GIuYV4vEwYaTjKy4zdQNAPrYm5ofFLb7vgzfsJYt1S7WO6H9Xuq/2Xs7jBCFRk1hVzpGvl9Re02CmcI+m; 4:KQBfdEhwn+8agOnQ8ESm1oUapaGK/kd85rzh63aogUDMRyNzIFcSkjqPCI97vC6a+Vwiie5IZ5AtlVy51mTkQgRSgtKuxFR5Waw47crIJIzbF9lYMNotuqFlNQOu8i5uHJyifDH5gk+dz1myPNqb3rxVNycm/JmAlZjGmJ+XXngL0B4kuZw89RsMq0gDaUZaMZ1RdUKl9e0ZsoJu5owo05loE050udo7qDNeMtjINW3hmvb5oM6dEylquVppgiVx 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)(13018025)(5005006)(8121501046)(93006095)(93001095)(100000703101)(100105400095)(3002001)(10201501046)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123564025)(20161123558100)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:CY1PR07MB2523; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:CY1PR07MB2523; X-Forefront-PRVS: 040866B734 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2523; 23:jsjY0Lk1Nl6LJyiQLVcmV6LFgBtNt8/a3yutkAZSoST2E38wJR17jQRdi9uL5b4bJNAZ+Wdp9B723dBz+T+xzo31rPYmQgiD20bYbmrNwFWE0jdk7/3HkekmUm//nhEgyUMyaOZJrJjXN0533fEVuQlqJ8JcKUIHTqMtduyPHNlf1QaAy1BfYXgH5MpjYVEHEYMNhqkWDUgoT1LpAivxLBVVIrsKvVtA8y1KM5po8bBErbxZDTBoaqI7IK2A9LX5VSU8rB3F/ZLADRjDaOODOZ491O83r9QYPV7NazgUmwyLbacGLZMFiMfuQQbwxyZKMki9X2FGFWDuMSp40Rh4hlrNPMigMrgzSRL7DXtHqF0IbsUSrXK4RADT5SMphlH7OwFkahVwDzTul8iuSlkNA1tLS3AMqVGyLPUE2IByBvCxl8wIQv5Cxxq85pce3obdLkFVDOhM0jE1oxw0di0C3YGPt6z/uGjvJGWBotEuo+ZGqWB3NZ7ZirqzkQ+jQ1NNCRxS0JoVuUq/F3LKHZirIqWHs8jUPwHIoW3ed3UdMA/LoV5F8KEQPq1/mXk1wg2CAT5C9gltLtSX5wIgDTYSZAF6Mm9Po/JWNR8JgxIxpQzdJDWKG8uW7BQYATXOL6Ri9gfr/YP+otRp3QU9K8ygwVkC2uH+MEsR3dVAGZg3by8zmt+ccmF2VOZLegixQ2QOL5u/UhctKl7xyIhuRFU1e7Q8Rs8DnbZ6alwToYkZeTfpaF8FWhMRxHxTDdrzTrospqgB7l5QOp4YMglmXpW0edV/eVVvdaLs0X4r6zE/D6KulooIz9F+1LRVnYGWQRqzID0Tqtu34j9EBNUrnk20vwvQVIw+xS/XUXsAAIGEe+T4Szrav68Ijfi23ZJWPnF6u8wMm6zqtKbnVo9NyWGXYxgPD27/1tY4WTgjM4IPl w65HgE2q0y6x+6+nXYgw0I8 X-Microsoft-Exchange-Diagnostics: 1; CY1PR07MB2523; 6:nEnrh+GT6+xPrAm5iEB8ExptPFDEje54JIzR1yzQdPGORP/cnwJUvFPo08jr78XSNB4O1ZVPPGyN6uQygpmTJGUh6khrnqp+CpLgPiJDgZaudMtpZXGP33XwqVA53rSbC72iwKMNGC4ptMfXH0Bo3nusLuu46M99zbmKsCNdjVNBymmhK8qGNRXM7WBYW9oM+axrbXf/BPYq7y9JvjOad1tKFAC/4ahzMHypPqhr9otX3y0hwNs78j7M8YJYQ9BueclPnvOCLnMQBGUE3Bzuhn/cbKsZ/sjrJZmzpoC7Nmf74jbfF5HBelxrz3W5ACeBcUy0p+ddPmwpU2vNiVpc7g==; 5:HsbKh4PH0+j1mk/2vtmmiCd8gvPMgWpzadZvYg4wGg71fmgw0iMa6OI96gM0iJEmbyYUPf+jfpLgPEQD/Ids1KAU3JEPQ3N/qf5Hs/AYJRQJqi6XGRfcN1HuK5cuq4QyFSaS5kp/MTI5tLC70SEdxQ==; 24:wPTUobCmv2eah+A6clqiss4ZMV9dwj/58VdJGZ4L0G1UyEE8g0lWHAJpk3oH3+Yn+vVwfM2PM8gF/P2YmObugp6sXyoyP+HmXDeOKYlgHao=; 7:GD2fwhKYaG5HeOhUimplL8CuRaOQi2LYxwhfZQQkFTAji3xFxSkIZ71nHV8BycRKlYiBjXB+Gm8o6xFIdbM6U1rBW+0GhegtXFUlD8U5XvTyg9/8VQVfSDlj6i1qyFpF6dq+Xd2aAucFZ2dDvsBtTzKNdXcQNYJ2xIpU6ZLupSv8vQOKzgm157hp0tkiLfnDzJ9kLFYX7khx6lhrvAUG3eO3UyTeJEdhCNtxIhXoWhw= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2017 22:40:51.9474 (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: CY1PR07MB2523 Sender: linux-scsi-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-scsi@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP From: Giridhar Malavali Signed-off-by: Giridhar Malavali Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_iocb.c | 55 ++++++++++++++++++++++++++--------------- 1 file changed, 35 insertions(+), 20 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_iocb.c b/drivers/scsi/qla2xxx/qla_iocb.c index a36c485fae50..2f94159186d7 100644 --- a/drivers/scsi/qla2xxx/qla_iocb.c +++ b/drivers/scsi/qla2xxx/qla_iocb.c @@ -2682,12 +2682,12 @@ qla24xx_ct_iocb(srb_t *sp, struct ct_entry_24xx *ct_iocb) uint32_t *cur_dsd; struct scatterlist *sg; int index; - uint16_t tot_dsds; + uint16_t cmd_dsds, rsp_dsds; scsi_qla_host_t *vha = sp->vha; struct qla_hw_data *ha = vha->hw; struct bsg_job *bsg_job = sp->u.bsg_job; - int loop_iterartion = 0; int entry_count = 1; + cont_a64_entry_t *cont_pkt = NULL; ct_iocb->entry_type = CT_IOCB_TYPE; ct_iocb->entry_status = 0; @@ -2698,30 +2698,46 @@ qla24xx_ct_iocb(srb_t *sp, struct ct_entry_24xx *ct_iocb) ct_iocb->vp_index = sp->vha->vp_idx; ct_iocb->comp_status = cpu_to_le16(0); - ct_iocb->cmd_dsd_count = - cpu_to_le16(bsg_job->request_payload.sg_cnt); + cmd_dsds = bsg_job->request_payload.sg_cnt; + rsp_dsds = bsg_job->reply_payload.sg_cnt; + + ct_iocb->cmd_dsd_count = cpu_to_le16(cmd_dsds); ct_iocb->timeout = 0; - ct_iocb->rsp_dsd_count = - cpu_to_le16(bsg_job->reply_payload.sg_cnt); - ct_iocb->rsp_byte_count = - cpu_to_le32(bsg_job->reply_payload.payload_len); + ct_iocb->rsp_dsd_count = cpu_to_le16(rsp_dsds); ct_iocb->cmd_byte_count = cpu_to_le32(bsg_job->request_payload.payload_len); - ct_iocb->dseg_0_address[0] = cpu_to_le32(LSD(sg_dma_address - (bsg_job->request_payload.sg_list))); - ct_iocb->dseg_0_address[1] = cpu_to_le32(MSD(sg_dma_address - (bsg_job->request_payload.sg_list))); - ct_iocb->dseg_0_len = cpu_to_le32(sg_dma_len - (bsg_job->request_payload.sg_list)); - avail_dsds = 1; - cur_dsd = (uint32_t *)ct_iocb->dseg_1_address; + avail_dsds = 2; + cur_dsd = (uint32_t *)ct_iocb->dseg_0_address; index = 0; - tot_dsds = bsg_job->reply_payload.sg_cnt; - for_each_sg(bsg_job->reply_payload.sg_list, sg, tot_dsds, index) { + for_each_sg(bsg_job->request_payload.sg_list, sg, cmd_dsds, index) { + dma_addr_t sle_dma; + + /* Allocate additional continuation packets? */ + if (avail_dsds == 0) { + /* + * Five DSDs are available in the Cont. + * Type 1 IOCB. + */ + cont_pkt = qla2x00_prep_cont_type1_iocb( + vha, ha->req_q_map[0]); + cur_dsd = (uint32_t *) cont_pkt->dseg_0_address; + avail_dsds = 5; + entry_count++; + } + + sle_dma = sg_dma_address(sg); + *cur_dsd++ = cpu_to_le32(LSD(sle_dma)); + *cur_dsd++ = cpu_to_le32(MSD(sle_dma)); + *cur_dsd++ = cpu_to_le32(sg_dma_len(sg)); + avail_dsds--; + } + + index = 0; + + for_each_sg(bsg_job->reply_payload.sg_list, sg, rsp_dsds, index) { dma_addr_t sle_dma; - cont_a64_entry_t *cont_pkt; /* Allocate additional continuation packets? */ if (avail_dsds == 0) { @@ -2740,7 +2756,6 @@ qla24xx_ct_iocb(srb_t *sp, struct ct_entry_24xx *ct_iocb) *cur_dsd++ = cpu_to_le32(LSD(sle_dma)); *cur_dsd++ = cpu_to_le32(MSD(sle_dma)); *cur_dsd++ = cpu_to_le32(sg_dma_len(sg)); - loop_iterartion++; avail_dsds--; } ct_iocb->entry_count = entry_count;