From patchwork Sun Dec 18 09:02:48 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9479243 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 7527860830 for ; Sun, 18 Dec 2016 09:04:02 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 61EE62845B for ; Sun, 18 Dec 2016 09:04:02 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 569F3284A4; Sun, 18 Dec 2016 09:04:02 +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 336032845B for ; Sun, 18 Dec 2016 09:04:01 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1759942AbcLRJEA (ORCPT ); Sun, 18 Dec 2016 04:04:00 -0500 Received: from mail-dm3nam03on0065.outbound.protection.outlook.com ([104.47.41.65]:64793 "EHLO NAM03-DM3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1759748AbcLRJD5 (ORCPT ); Sun, 18 Dec 2016 04:03:57 -0500 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=FzNJZVEzMji0K3xRbfHCuWJ4kHcsh/QVqwkh+ZIl2ug=; b=b7MEbSDyc94ej5AZLYLDLXuWwZI48AfUC74MA+UpYTckktxrHy9rELoooBc2rh73O7Vw9wDu/pidbvhkAgiVKcwuogMHoMPdRjUaeLkg5Xz7Vsjo+/Mq+Zu9XZWHEQRaEfb5JvelpuXRU7Zh4ihVLBRAt0E719Xo4+JpQdMHYoY= Received: from MWHPR07CA0023.namprd07.prod.outlook.com (10.172.94.33) by SN1PR0701MB2094.namprd07.prod.outlook.com (10.163.132.29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14; Sun, 18 Dec 2016 09:03:53 +0000 Received: from BN1BFFO11FD038.protection.gbl (2a01:111:f400:7c10::1:179) by MWHPR07CA0023.outlook.office365.com (2603:10b6:300:dc::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.789.14 via Frontend Transport; Sun, 18 Dec 2016 09:03:53 +0000 Authentication-Results: spf=none (sender IP is 50.232.66.26) smtp.mailfrom=cavium.com; linux-iscsi.org; dkim=none (message not signed) header.d=none; linux-iscsi.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 BN1BFFO11FD038.mail.protection.outlook.com (10.58.144.101) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.789.10 via Frontend Transport; Sun, 18 Dec 2016 09:03:52 +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.309.2; Sun, 18 Dec 2016 01:03:19 -0800 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 uBI935Wg023002; Sun, 18 Dec 2016 01:03:05 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBI93523023001; Sun, 18 Dec 2016 01:03:05 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH 8/9] qla2xxx: Add T10-DIF opcode/type in qla_tgt_cmd Date: Sun, 18 Dec 2016 01:02:48 -0800 Message-ID: <1482051769-22941-9-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482051769-22941-1-git-send-email-himanshu.madhani@cavium.com> References: <1482051769-22941-1-git-send-email-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)(7916002)(39450400003)(2980300002)(428002)(189002)(199003)(48376002)(189998001)(36756003)(5660300001)(356003)(69596002)(50226002)(8936002)(33646002)(305945005)(6666003)(5003940100001)(2950100002)(4720700003)(4326007)(50466002)(2906002)(86362001)(81166006)(76176999)(81156014)(106466001)(107886002)(5001770100001)(38730400001)(39060400001)(42186005)(101416001)(2201001)(575784001)(80596001)(626004)(4001430100002)(105586002)(47776003)(92566002)(8676002)(50986999)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB2094; 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; BN1BFFO11FD038; 1:JmCOUXT+htkoHZYrzInuKcpywBgyaoTxqbpMQDmz0p/udqTaBhZLtLj3szZGECKcqUZ+7vtqKaGlpcWak6BuHGz2c6Wu5lXcZUoFASOcEK2ygPR1e+Dd7u/YONvXRMVYXitfIs5gmJ9A2GJPR/XIlPcdQW5nXpKWU/dsjbWw8q69C4cAHf9NwsSvMEq0FrgcBwYBJh+oT+JS7/MypYBZbktqTrX1P6aBzHNEIoX2DjWX0ZOx8vvkevaH5b0QKgyt2jNnfh0Hm5RUe0luwYqVludV/zyfpndbQlkK84IRh32vs1B4rJGO08yaxN/UtOVpFh+ygoTk8cQglI0mtpKwqnWzs1LQZblYuZxYvcLIb2d1vVeWPziINp0ZIKU1+HS1rn77MKTQOUvD3EkpFhuMTOqxlPLLyna32q3IaEhWBzZZEJAdcjcmL7mXNSC1JmnAMuprl4+w7BauDAEyB8bVMp9pUeLu5v+75wenyB4uTL/ehaFn7U+mebiT0sqs1U5b5yNrAF8S/z7cqHJMlZ15Yy2ltF8GU9acF5A1XiJg6lB4tNs+1biO/vCyI1TYdHIV X-MS-Office365-Filtering-Correlation-Id: 5ed88294-94d7-429f-d896-08d42724ca0a X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR0701MB2094; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2094; 3:L8+VDxOdAVNj0gRkO7RkpVObcOVpBE2BHUZjIZU+l3iyuneA7O/aes+uhl1hnQu6KhlLslUByVDd3/AsVojnyXm1V6iLUxoadTN7ld59uXcNlm42RjHL8wt7mXukocYNImIndJhwcFZRIKgUSQUnd8Apx4kHj/nZ+z9ohODIgtiOYOkbTkObz8Vhd/tGjRfudFAslVNQa+4cEGrmhlWGxige8diHbF8KRR6jthnGngLSzmMIRN0Uo12+FaZePWpNtGl0DImWuflToup2P09QSJKibh++RJfAQQXsP2oQcWEh3A2DP840FHbuqVv2EZjboabCfdpxIvxX0PM58amktAAVMX1G77Mv49xY4cu61BrTNFwj8+LK2ChfI70nXckw; 25:WL4afRqPFZS3uD+aVoYRfPYrsH5Z8hX7fqY8OOXgSgAFSi4PM9IB+hKLU1HnXvjIk7BUMV4yA3+hu/ovHeXH3tJSqnXdX48d3ZU1qNdF85E3iaGezUBL1IhVZ/LUg20s7QadFu3aPv/n3667JGo7XBkufGKomQ39qdVtfHF7dNM2FUcMwivjflhzFLmU0q8dYNn1CN9ybJ3EoahozG8JA5Pn4bx079QgW5xUmXiBq0wc5dD+aywkwsqzWpQF/MyQJMj4S7sLtVeHFBzQAajqpw5MB02rPfHCnhnXP7vPkIU9tysua3e3vcyIxmWKfviKrKUMR9qH15T6wvuyVmVeDNwfbyAjshcF8y2xxSUC/25JR4tck3mcJBvpMX3enqHHDJkoe2ovlbVmGlN1BlgBb9X/mkrzNSC5fXLPYmPhkuokLLIibDibhqNIzGTrCyDC/ZRFwLFcAUzqUBfKO1AxFQ== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2094; 31:/ZihPHD1xsQVs9aqPBvZnt/KhPvfkiFzsxU4PjCtKUzlL6mfYyXOnWl/Lf61GIPzl15mQf+UKGGJ+LRXKNW7OdEm/9uwsNF4+suxdV0jY0P29tLAqCDyybJpJJtq+xOROv1plOvVwWwHNaSu0gajnvIj9iDDd1DkDD14pVwHJwQ59eDp944FAjvESTf6Ouim354YGiLl+1bqo/n6NJr0ybsa3F8QsHJRCF0RALbrNBSDf2ATY8aqvj8kZDOXiJQc1cJXro99arUpXHTGRI2M6A==; 20:uBtbRNskxWMCS6buUCbdxRchXhy0lSSRMwv5LodHPvcuwBd2kDQwZCF3O/37xYYpq3S3TpzbM92CDlnu/r5X2XEHAFVI6KYYRh/Urqh6kqsjm7/Tr93+T8BQrVJVDVHTPv/nRSHW3f0tQy8r929MaK05SSq9MwbFkTmo8ao2DK/dHJPB9uH+nWwKFyAVE5j5bu/PMrLbAn2Xcp+SC5Ua4ztjCvaqRKy49EJ6ecxvUM+HJmEl1U9LcskRFXiSxGwsEqyYgFaS1EsJirZeX8YldEGcoiNvtAffkfTEiLvcFrLDGRHMovX6fGdq+Yd66y++No+LAWAMWKLVef20KM3QFZXI/4V0hRNGy57CxBa6RNmpJXl2Q8EV+l4LOftwr1MSz1vTXfa6bt8+MIljZZAOKbsYb1n9YI/kyzZ+7Urslt801yggM5oDPVwyofrRNWcEVLLQk67CK524FxRQMEN7ETbt3R1vg3uyMWMJB7/zuPl4Q3Vx9PRnOGGnNlKsD+S1 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13015025)(13024025)(13023025)(13017025)(5005006)(8121501046)(13018025)(10201501046)(3002001)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(6072148); SRVR:SN1PR0701MB2094; BCL:0; PCL:0; RULEID:; SRVR:SN1PR0701MB2094; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2094; 4:crGJX2oVQAwNLn23jyJoqgpPABzE6ZL+Jr/01KNTm7YVG3y45CkOYJ5+YEoIg68UZZGi/k7qr9gVW0+aPWuAts7v8joETXN9HF4/Bg+1H+Y/Of5qH3XtopJCVNoQwg/dFvLyoGMfEtdFocwdX+ksGfBaWumHS+6C293jf6IZIqw28cWXRrV88S9dDRFEcmrJw2S48ZAXRa9Y6zvyg+Huo3ttM+279Nsm+LODKEtfD7VfYxwoZ3sjToALwvZ5qRdxFPpedRo70jDqzHq6HPNwC+cwe+VWPkfhozmnS6ZBORmipPtBo5prBwwFX3iUPdj7IfkKTVTSPloYvyFt51Xv9OHRyt/Xiomrh+bvFYttacyWbEIuwKyOzoZt9U6iW836cysloOq2RP/JmAUNTIKSU2RxLz68pNjDa3wn8rLgvEElcahyY9I0c/XIir3dtPSR3g5HyaA+fPbYNShjHz+vU/63+BiwsGi8FJEv8P7/5vXRm+beziNJu6HAZDzmL+Lk3MTmFS/MRvYOBDSnpXqoBAQJ/Lj6pDatEKTLawcGMRoGdw64qtZywpalmSUUkLdIX3YUVsH9o3oo4IeWV+UNFddb2UrJ8alkl4dknQGtJccUq/IltSF5NaLylefCjXTm93i/esjY7YJz/UKBNvSjHz18Z5/m0Obft7xcUxkK8UI= X-Forefront-PRVS: 01604FB62B X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0701MB2094; 23:ubOviTrhmyYls+d5GUCZtfYiWaj0LdzmZ33EiwX?= =?us-ascii?Q?ApiRmc42PIMF0BsduFNMlUBvN2oLoHQIGYi7RgTlFywRv267zlHjr1xpUJce?= =?us-ascii?Q?xBhXj3TRVA8WIcWvlc/AWvV4RGYh4d/i9nBCKRh3PIRCrK+Nvguui5iTbMYs?= =?us-ascii?Q?7j6CD4FqQqoYeAm3TbfhulViEq7SebdlCDQ64GhdnLynfhv5kT5igaB18PSj?= =?us-ascii?Q?qZW8tfBEjqwgOD3AmOcnO5GGjeSGM/XYHFWPt/uER3EJ2bqjF5ykdB+uCsqG?= =?us-ascii?Q?+elGYlZz15CNQ14RDNs3t4LcnZqV7UH2XXFYDmfLSvGT+l1iVwcfsLwj/Eyw?= =?us-ascii?Q?HunXuvbra/1v6PYGxyUQLzLFfyXmPKp1PapTydJiQbGO2Yfn9N6QVld9nXXY?= =?us-ascii?Q?oRcJwvoz+Iw2X6lUZupiekKaeOD7mCFNi26/y1oC671sIMi2mD9usGtpYENg?= =?us-ascii?Q?lwo2lU4ZjcHIrQ8lzYb9RmTUK2rHFHViR0Gyown/1Hzr2+gWhKA+ov5Ptt8I?= =?us-ascii?Q?KUAqjXa4qVrUO5R+WKXcI1FGG4Qmw9JA1EaBZHYVb5SHu2KSyrRexmDYronm?= =?us-ascii?Q?0dIy7U+s05/hubgWvXjnPfZ3bA3Pu2wsqKV4mer6F9AvOmcAN2PCw+0h+2Gj?= =?us-ascii?Q?vqr7fdwZ5wWiJtZApQy6+gm63s9zBqBHlgOAo3AuaoqsnENnyMv2HjSVB32I?= =?us-ascii?Q?s9KO5cHuI5hp++VEoDX/F+djxIk5P4MewZnaxYjOSNuJcDS4vzaXtwV1nebm?= =?us-ascii?Q?ZMijig5fcxL1CoPvDuGffs0Fo89WdsNV33PC0Y3t3dIbS6Rf3wVPPMBnjiAq?= =?us-ascii?Q?8kN+rRLoDrfwxYrA8Xt6iH/aZ48VO0WCOrOwxzyc7xnMZj3tQdDjf2xFKnXF?= =?us-ascii?Q?UdFO3zStGWbUHwPNlqxQpiqW+1Oc/ICT6HOisLQBhSeskOzkWIuF4489wY2P?= =?us-ascii?Q?AJRlku7YQOPpFbr8i/+QdULwDvHAhCYzI6LiTSFuf8XAydvMscCryhhalg+8?= =?us-ascii?Q?bYTZEj2u5FVnD4Uj2Cdk+ID2F2WtVaWSd0iCxxA+jioNErBOQjPBGWXqL/lM?= =?us-ascii?Q?Z9jKSedxxSdrsRtTdklGtyYEgVVZul/uK+BjfAqxd8VU5f1Cy80HOsKp5+IW?= =?us-ascii?Q?PZyRxpuF//9J+lxQtDULPn+ZhNVJfPUqh?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2094; 6:BZYMj5/6AXWU8fpKUi0Mmd8DwzknUU72b3ThwtCgbOnENw7kCA2xaR1KpMYaQVF83yCCmue2ONItBNABe7H+MtAESVHZDKTjAD+TNBqVDBXnkK5EiATqS1osjDzi87Fs5VYTBO6hj2M+nXi09kHPBzBumNuQ/SycLpFbhKBF5JDERg5Cx7anw2lmklO4KGYZ4e8TUwb5hQyCelpA6Xo7jv0SxaK8b4xfFENI1FJ19vLOCivh1tfUzHKVFC7SmpCA0lbOmov7EXO/oc0ZUXItQpOjmJk3K82kzYGXhGpMBzq9Ij6dd5mWX46TTxKvd+/JtFdUeAvqoypyVF3W3lFXiQtxsgPlXYRK2L5cvYmurLQt/t4qy3MIhUStq38FF/vpq2Y67JGIW2sIPqkTb6WgoqXntZRFgeNaLN6zl/JEzmM=; 5:g0IsvXEckrDU6HuOmJm7BuugP5O9AtMBoTrPulfeC0uiSS8R4nGPcfjQa/CSAZVXaRHJ+jN3kwfcqIXCJHeuusnvtBNY0srXPtM9ukD0bF4obABrdNh5n5i2oOef8HIWDY52+qSJXO132C+BwYibfg==; 24:f42zRU5mT/kZjK3rBJLyNx2ROGwro5iDvJTfaP8t4XJ6c1bV1kfCSCAn8QS7y8q6NhyCHow1sy0b66gR0SJbck0OTRPT1aloD0QvSLEIWqM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2094; 7:8DtFLIav3AP9d8d/Csqp4DzX/fGTco6j2cUouDVkwIuek6x9zkgX1Kyrz8rDis+QrSUfAFH4to8hlwH+0KcDauJzJoQAgQF7wuU5l+ShMqaiCAPzkZ0/moW+3KuriqlOUsZltH2pbyCJZqBs5Q4QFGCfAl0Qjig+b7uQho9mRTVwzKGkKxfmGdFysKEuUI9xhyP6s8hLRrPXxEnj80XN9CFeuNCWQSqIAW4yN1fmK7GMr+KZ6CrqRZy4fBq0OBQHOQZn0oWTjbTypzd5CQo+ztUkjyl/xBmBrArcWCudlOSM7giszISxHyoB7cw//tAFmhaMlj3xpT2DQBL0RQ0lkDGoKXoPXJX9t1Ils0jB2daRtMhBhc0LqHbeiLiOfdahKKPR8FToS/z9SqZJfPBChN3t4uwdSDxOOLLrQ3sRf486BESpgpV4+DwWhivld5xv5CG9oXWvwTsE42zwSEo7Ig== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Dec 2016 09:03:52.4508 (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: SN1PR0701MB2094 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: Quinn Tran Add T10-DIF/PI protection opcode/type field to qla_tgt_cmd. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_target.c | 126 ++++++++++++++++---------------------- drivers/scsi/qla2xxx/qla_target.h | 4 ++ 2 files changed, 58 insertions(+), 72 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 14092472..c0d847a 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -1791,7 +1791,7 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) prm->cmd->sg_mapped = 1; - if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) { + if (cmd->prot_op == TARGET_PROT_NORMAL) { /* * If greater than four sg entries then we need to allocate * the continuation entries @@ -1802,8 +1802,8 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) prm->tgt->datasegs_per_cont); } else { /* DIF */ - if ((cmd->se_cmd.prot_op == TARGET_PROT_DIN_INSERT) || - (cmd->se_cmd.prot_op == TARGET_PROT_DOUT_STRIP)) { + if ((cmd->prot_op == TARGET_PROT_DIN_INSERT) || + (cmd->prot_op == TARGET_PROT_DOUT_STRIP)) { prm->seg_cnt = DIV_ROUND_UP(cmd->bufflen, cmd->blk_sz); prm->tot_dsds = prm->seg_cnt; } else @@ -1817,8 +1817,8 @@ static int qlt_pci_map_calc_cnt(struct qla_tgt_prm *prm) if (unlikely(prm->prot_seg_cnt == 0)) goto out_err; - if ((cmd->se_cmd.prot_op == TARGET_PROT_DIN_INSERT) || - (cmd->se_cmd.prot_op == TARGET_PROT_DOUT_STRIP)) { + if ((cmd->prot_op == TARGET_PROT_DIN_INSERT) || + (cmd->prot_op == TARGET_PROT_DOUT_STRIP)) { /* Dif Bundling not support here */ prm->prot_seg_cnt = DIV_ROUND_UP(cmd->bufflen, cmd->blk_sz); @@ -2329,7 +2329,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, /* diff */ static inline int -qlt_hba_err_chk_enabled(struct se_cmd *se_cmd) +qlt_hba_err_chk_enabled(struct qla_tgt_cmd *cmd) { /* * Uncomment when corresponding SCSI changes are done. @@ -2338,17 +2338,17 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, return 0; * */ - switch (se_cmd->prot_op) { + switch (cmd->prot_op) { case TARGET_PROT_DOUT_INSERT: case TARGET_PROT_DIN_STRIP: - if (ql2xenablehba_err_chk >= 1) - return 1; - break; + if (ql2xenablehba_err_chk >= 1) + return 1; + break; case TARGET_PROT_DOUT_PASS: case TARGET_PROT_DIN_PASS: - if (ql2xenablehba_err_chk >= 2) - return 1; - break; + if (ql2xenablehba_err_chk >= 2) + return 1; + break; case TARGET_PROT_DIN_INSERT: case TARGET_PROT_DOUT_STRIP: return 1; @@ -2363,8 +2363,9 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, * */ static inline void -qlt_set_t10dif_tags(struct se_cmd *se_cmd, struct crc_context *ctx) +qlt_set_t10dif_tags(struct qla_tgt_cmd *cmd, struct crc_context *ctx) { + struct se_cmd *se_cmd = &cmd->se_cmd; uint32_t lba = 0xffffffff & se_cmd->t_task_lba; /* wait til Mode Sense/Select cmd, modepage Ah, subpage 2 @@ -2375,7 +2376,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, ctx->app_tag_mask[0] = 0x0; ctx->app_tag_mask[1] = 0x0; - switch (se_cmd->prot_type) { + switch (cmd->prot_type) { case TARGET_DIF_TYPE0_PROT: /* * No check for ql2xenablehba_err_chk, as it would be an @@ -2383,7 +2384,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, */ ctx->ref_tag = cpu_to_le32(lba); - if (!qlt_hba_err_chk_enabled(se_cmd)) + if (!qlt_hba_err_chk_enabled(cmd)) break; /* enable ALL bytes of the ref tag */ @@ -2399,7 +2400,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, case TARGET_DIF_TYPE1_PROT: ctx->ref_tag = cpu_to_le32(lba); - if (!qlt_hba_err_chk_enabled(se_cmd)) + if (!qlt_hba_err_chk_enabled(cmd)) break; /* enable ALL bytes of the ref tag */ @@ -2415,7 +2416,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, case TARGET_DIF_TYPE2_PROT: ctx->ref_tag = cpu_to_le32(lba); - if (!qlt_hba_err_chk_enabled(se_cmd)) + if (!qlt_hba_err_chk_enabled(cmd)) break; /* enable ALL bytes of the ref tag */ @@ -2492,18 +2493,18 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, break; } - if (!qlt_hba_err_chk_enabled(se_cmd)) + if (!qlt_hba_err_chk_enabled(cmd)) fw_prot_opts |= 0x10; /* Disable Guard tag checking */ /* HBA error checking enabled */ else if (IS_PI_UNINIT_CAPABLE(ha)) { - if ((se_cmd->prot_type == TARGET_DIF_TYPE1_PROT) || - (se_cmd->prot_type == TARGET_DIF_TYPE2_PROT)) + if ((cmd->prot_type == TARGET_DIF_TYPE1_PROT) || + (cmd->prot_type == TARGET_DIF_TYPE2_PROT)) fw_prot_opts |= PO_DIS_VALD_APP_ESC; - else if (se_cmd->prot_type == TARGET_DIF_TYPE3_PROT) + else if (cmd->prot_type == TARGET_DIF_TYPE3_PROT) fw_prot_opts |= PO_DIS_VALD_APP_REF_ESC; } - switch (se_cmd->prot_op) { + switch (cmd->prot_op) { case TARGET_PROT_DIN_INSERT: case TARGET_PROT_DOUT_INSERT: fw_prot_opts |= PO_MODE_DIF_INSERT; @@ -2588,7 +2589,7 @@ static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, /* Set handle */ crc_ctx_pkt->handle = pkt->handle; - qlt_set_t10dif_tags(se_cmd, crc_ctx_pkt); + qlt_set_t10dif_tags(cmd, crc_ctx_pkt); pkt->crc_context_address[0] = cpu_to_le32(LSD(crc_ctx_dma)); pkt->crc_context_address[1] = cpu_to_le32(MSD(crc_ctx_dma)); @@ -2715,7 +2716,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, if (unlikely(res)) goto out_unmap_unlock; - if (cmd->se_cmd.prot_op && (xmit_type & QLA_TGT_XMIT_DATA)) + if (cmd->prot_op && (xmit_type & QLA_TGT_XMIT_DATA)) res = qlt_build_ctio_crc2_pkt(&prm, vha); else res = qlt_24xx_build_ctio_pkt(&prm, vha); @@ -2731,7 +2732,7 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, cpu_to_le16(CTIO7_FLAGS_DATA_IN | CTIO7_FLAGS_STATUS_MODE_0); - if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) + if (cmd->prot_op == TARGET_PROT_NORMAL) qlt_load_data_segments(&prm, vha); if (prm.add_status_pkt == 0) { @@ -2856,7 +2857,7 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) res = qlt_check_reserve_free_req(vha, prm.req_cnt); if (res != 0) goto out_unlock_free_unmap; - if (cmd->se_cmd.prot_op) + if (cmd->prot_op) res = qlt_build_ctio_crc2_pkt(&prm, vha); else res = qlt_24xx_build_ctio_pkt(&prm, vha); @@ -2870,7 +2871,7 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) pkt->u.status0.flags |= cpu_to_le16(CTIO7_FLAGS_DATA_OUT | CTIO7_FLAGS_STATUS_MODE_0); - if (cmd->se_cmd.prot_op == TARGET_PROT_NORMAL) + if (cmd->prot_op == TARGET_PROT_NORMAL) qlt_load_data_segments(&prm, vha); cmd->state = QLA_TGT_STATE_NEED_DATA; @@ -2902,40 +2903,38 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) { uint8_t *ap = &sts->actual_dif[0]; uint8_t *ep = &sts->expected_dif[0]; - uint32_t e_ref_tag, a_ref_tag; - uint16_t e_app_tag, a_app_tag; - uint16_t e_guard, a_guard; uint64_t lba = cmd->lba; - a_guard = be16_to_cpu(*(uint16_t *)(ap + 0)); - a_app_tag = be16_to_cpu(*(uint16_t *)(ap + 2)); - a_ref_tag = be32_to_cpu(*(uint32_t *)(ap + 4)); + cmd->a_guard = be16_to_cpu(*(uint16_t *)(ap + 0)); + cmd->a_app_tag = be16_to_cpu(*(uint16_t *)(ap + 2)); + cmd->a_ref_tag = be32_to_cpu(*(uint32_t *)(ap + 4)); - e_guard = be16_to_cpu(*(uint16_t *)(ep + 0)); - e_app_tag = be16_to_cpu(*(uint16_t *)(ep + 2)); - e_ref_tag = be32_to_cpu(*(uint32_t *)(ep + 4)); + cmd->e_guard = be16_to_cpu(*(uint16_t *)(ep + 0)); + cmd->e_app_tag = be16_to_cpu(*(uint16_t *)(ep + 2)); + cmd->e_ref_tag = be32_to_cpu(*(uint32_t *)(ep + 4)); ql_dbg(ql_dbg_tgt, vha, 0xe075, "iocb(s) %p Returned STATUS.\n", sts); ql_dbg(ql_dbg_tgt, vha, 0xf075, "dif check TGT cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x]\n", - cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, - a_ref_tag, e_ref_tag, a_app_tag, e_app_tag, a_guard, e_guard); + cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, cmd->a_ref_tag, + cmd->e_ref_tag, cmd->a_app_tag, cmd->e_app_tag, cmd->a_guard, + cmd->e_guard); /* * Ignore sector if: * For type 3: ref & app tag is all 'f's * For type 0,1,2: app tag is all 'f's */ - if ((a_app_tag == 0xffff) && - ((cmd->se_cmd.prot_type != TARGET_DIF_TYPE3_PROT) || - (a_ref_tag == 0xffffffff))) { + if ((cmd->a_app_tag == 0xffff) && + ((cmd->prot_type != TARGET_DIF_TYPE3_PROT) || + (cmd->a_ref_tag == 0xffffffff))) { uint32_t blocks_done; /* 2TB boundary case covered automatically with this */ - blocks_done = e_ref_tag - (uint32_t)lba + 1; - cmd->se_cmd.bad_sector = e_ref_tag; + blocks_done = cmd->e_ref_tag - (uint32_t)lba + 1; + cmd->se_cmd.bad_sector = cmd->e_ref_tag; cmd->se_cmd.pi_err = 0; ql_dbg(ql_dbg_tgt, vha, 0xf074, "need to return scsi good\n"); @@ -2962,64 +2961,47 @@ int qlt_rdy_to_xfer(struct qla_tgt_cmd *cmd) if (k != blocks_done) { ql_log(ql_log_warn, vha, 0xf076, "unexpected tag values tag:lba=%u:%llu)\n", - e_ref_tag, (unsigned long long)lba); + cmd->e_ref_tag, (unsigned long long)lba); goto out; } - -#if 0 - struct sd_dif_tuple *spt; - /* TODO: - * This section came from initiator. Is it valid here? - * should ulp be override with actual val??? - */ - spt = page_address(sg_page(sg)) + sg->offset; - spt += j; - - spt->app_tag = 0xffff; - if (cmd->se_cmd.prot_type == SCSI_PROT_DIF_TYPE3) - spt->ref_tag = 0xffffffff; -#endif } return 0; } /* check guard */ - if (e_guard != a_guard) { + if (cmd->e_guard != cmd->a_guard) { cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_GUARD_CHECK_FAILED; cmd->se_cmd.bad_sector = cmd->lba; - ql_log(ql_log_warn, vha, 0xe076, "Guard ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, - a_ref_tag, e_ref_tag, a_app_tag, e_app_tag, - a_guard, e_guard, cmd); + cmd->a_ref_tag, cmd->e_ref_tag, cmd->a_app_tag, cmd->e_app_tag, + cmd->a_guard, cmd->e_guard, cmd); goto out; } /* check ref tag */ - if (e_ref_tag != a_ref_tag) { + if (cmd->e_ref_tag != cmd->a_ref_tag) { cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_REF_TAG_CHECK_FAILED; - cmd->se_cmd.bad_sector = e_ref_tag; - + cmd->se_cmd.bad_sector = cmd->e_ref_tag; ql_log(ql_log_warn, vha, 0xe077, "Ref Tag ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, - a_ref_tag, e_ref_tag, a_app_tag, e_app_tag, - a_guard, e_guard, cmd); + cmd->a_ref_tag, cmd->e_ref_tag, cmd->a_app_tag, cmd->e_app_tag, + cmd->a_guard, cmd->e_guard, cmd); goto out; } /* check appl tag */ - if (e_app_tag != a_app_tag) { + if (cmd->e_app_tag != cmd->a_app_tag) { cmd->se_cmd.pi_err = TCM_LOGICAL_BLOCK_APP_TAG_CHECK_FAILED; cmd->se_cmd.bad_sector = cmd->lba; - ql_log(ql_log_warn, vha, 0xe078, "App Tag ERR: cdb 0x%x lba 0x%llx: [Actual|Expected] Ref Tag[0x%x|0x%x], App Tag [0x%x|0x%x], Guard [0x%x|0x%x] cmd=%p\n", cmd->atio.u.isp24.fcp_cmnd.cdb[0], lba, - a_ref_tag, e_ref_tag, a_app_tag, e_app_tag, - a_guard, e_guard, cmd); + cmd->a_ref_tag, cmd->e_ref_tag, cmd->a_app_tag, cmd->e_app_tag, + cmd->a_guard, cmd->e_guard, cmd); goto out; } out: diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index ea8be78..df04663 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -1020,8 +1020,12 @@ struct qla_tgt_cmd { uint32_t prot_sg_cnt; uint32_t blk_sz; struct crc_context *ctx; + uint32_t prot_op; + uint32_t prot_type; uint8_t *cdb; uint64_t lba; + uint32_t a_ref_tag, e_ref_tag; + uint16_t a_guard, e_guard, a_app_tag, e_app_tag; uint64_t jiffies_at_alloc; uint64_t jiffies_at_free;