From patchwork Sat Dec 24 04:23:32 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9487871 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 BF7B1604DE for ; Sat, 24 Dec 2016 04:24:12 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id AD66F25F3E for ; Sat, 24 Dec 2016 04:24:12 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id A214927829; Sat, 24 Dec 2016 04:24:12 +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 29D7125F3E for ; Sat, 24 Dec 2016 04:24:11 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S941575AbcLXEYI (ORCPT ); Fri, 23 Dec 2016 23:24:08 -0500 Received: from mail-bn3nam01on0083.outbound.protection.outlook.com ([104.47.33.83]:28864 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1752448AbcLXEX4 (ORCPT ); Fri, 23 Dec 2016 23:23:56 -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=CDTrwvAY8FbC+CovkhiXaa4qIOR0RutbEmQ95r3yihk=; b=i2rsIwk0xHQ4tlOcC7Z2rCsDDJ0wBxzg5NwOpzp3/cZjhvHoTqn7YhB1Yc3bWXAjEtCczokLoJk+gH7jVr9WmPooWuh7YzUE4I4IEdN1Sn+Ar2ihBZ61O32X31QCV8R9D0/hOI07WjlAseOOWaHm1h8jD5S/kZL9/Hr8/2/rFB0= Received: from BN6PR07CA0040.namprd07.prod.outlook.com (10.172.104.26) by SN2PR07MB032.namprd07.prod.outlook.com (10.255.174.42) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11; Sat, 24 Dec 2016 04:23:53 +0000 Received: from BL2FFO11FD012.protection.gbl (2a01:111:f400:7c09::103) by BN6PR07CA0040.outlook.office365.com (2603:10b6:404:a3::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.803.11 via Frontend Transport; Sat, 24 Dec 2016 04:23:51 +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 BL2FFO11FD012.mail.protection.outlook.com (10.173.161.18) 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; Sat, 24 Dec 2016 04:23: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.309.2; Fri, 23 Dec 2016 20:23:40 -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 uBO4NeWs004162; Fri, 23 Dec 2016 20:23:40 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id uBO4NePU004161; Fri, 23 Dec 2016 20:23:40 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH 04/11] qla2xxx: Cleanup SRR code. Date: Fri, 23 Dec 2016 20:23:32 -0800 Message-ID: <1482553419-4117-5-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1482553419-4117-1-git-send-email-himanshu.madhani@cavium.com> References: <1482553419-4117-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)(8936002)(38730400001)(47776003)(106466001)(69596002)(80596001)(5660300001)(50226002)(39060400001)(626004)(2201001)(105586002)(42186005)(86362001)(36756003)(189998001)(101416001)(107886002)(305945005)(2950100002)(6666003)(356003)(5003940100001)(4326007)(48376002)(92566002)(81156014)(8676002)(81166006)(33646002)(2906002)(4001430100002)(5001770100001)(76176999)(50986999)(50466002)(4720700003)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN2PR07MB032; 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; BL2FFO11FD012; 1:ftoyPm8Sb5E8ruGJ+MM+9l13MilqEOp7vPpgUyi1u48Mt/qnbrF1nY4gHgTrLiA/d0KiLHtl5jp/7axTWzABkwBdQ90Jb+bKeUsh242XWihDmGfsBk1OYSbwydzQ33uIAMdQJM6lOtlWLCNMPxdlyhky0nOaRAWyEw7WU14woL6XQYb7CJl/WazBL3Qy7rbzUh+bDzmmJc1uE0+919TKFyqdfbd/8s6asO2viXF01SbNSpf3N7sp9LID4WGLoe5dFprf123sFXzWKFTC7R0qTZUAmit3Jp8jFfwurVFoaY9zl0k9PuAQvEHISP+7iCNCFPXEdgAQBdBbqqs+Xl2PMn/oKc8jTHTPTeFMN/EUDWuyoY6xLMtCZT+pMwzZDJPWc+U4zBWcQYU7PK2GhtzBjxzZK5xyQYVYy7gbmGoyqlRe6LBZSa6X/qRNGpDkqw7gt7CjxoJPg24OPiHBBJezgkK5ws+iq4Me1Zzg7dhrrFXFBN9I9GIPkXoXmsGo0Q70cf3T1OCShhZjOBbTvAO2zTUIQRVI5dx0lpw9JyAWC0B7XsV4n1lzrjm55c1I+QNo X-MS-Office365-Filtering-Correlation-Id: 6c8f9d1d-d5db-45c9-05e0-08d42bb4aa39 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN2PR07MB032; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 3:sSt4bWu9VcvF2iMrhVoMk9LfyfNew9LVjTHtcwWH0WK5qNMPVYS1EnlUertLipiSdrMieR4qcKqUt/mcSqtFRKsOI67QdCPM/09lhTLKRwQmG8K+z00kVxDDbrB3GtiTBCFYSk5r+5/nM7BxoeHhf8gi/apTtqRf+HRirN0cAJv49R6YDdkq//uMSzlnLIDuqZ5e1T5qQm2smU7MYHwJbZBk4lkCipwxVcYzhn6nNiJlDDm1hb7dvU3+WjGfxy1V/0u31k63s3SmxYC2t1p20txgirjCuK0BlAqYYpRkvV1oKR+wo1q7F7cxTmaWYXLVfRRAy9CwCrASY5duBPxtnBP1oVovg0y4onPVNCF8F3w= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 25:pl2rqG3RdSz4yMQ0kHJj7t8/TSJlLwAI9p42lChUVfiFJbjZlhRDo6jkm3390vMMiXCT4qPOwFjL6s6HMii6FOzxkpOFDx5VgRGBXn4O+PsQobzuA+Z0GLOv6wFeugqcA/A4SaSohH8VPDdS69if+jn9BgkVPRKSjEqqbY/hZ6Zs5YJ4Ufkl8JOLDFvudqz/fjhGLlKlYFkt8IpaDcguo1isor3jyuZkYeFsj1D03eTBF+zejfMufehv+r8HqZUUl9osvdGk3qjopq2ciym34+45rdptWm3k78bmbD2WfHBvSYPmCZG3HpIljgqpi90cE4K6NSp6hSkLbvgLkpVGVCUuq41Hi1xPD3snMUyIwgiAG+Cn6OfuNRhj9yQaFvMclGjMcgyjdqXWjnftrHAj07qxxscTj6QzmQfUUnoU3sRgCPedRPFWmg8HCsP+Keh1OuX8+C6pmyRkEvpt28SRh+1YoLzkFGheLL0KNBKgefbmFbTa2pFkGy+u+cpGygUYjUoGEQunQgkZT9CoDKmIO/GzT4GORya3Fh7TgC+c64fDXZ8Nvxv/FFKufFT59kM5FCp1zKstGlkUbV4xSjPS7xt1HicDrK1qu+OS/l3z/oWbK2gsFAVaOiOH+sVRpC9orCFxMlpuuNc+up+jA0iFQka+rnjch/EkYrMIcsNjth2dP4kl2uCnn01wlDrN644PkUfLxIG9fj7yPtZfndzfjxIEyVnVGIQuOadDi3E9PIyAl4hoFks0XeNyfHAhIHcSEh+rTN4sRhQRDqc7JzVJcUPb4cBq2ojyfi5eFN9kN7pkQtbiThxASm4XPXu4AkNmYdTKw7pYGTPj/p9Hsp7YTxke6Tbxnyj+iGTHCYL1JK4= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 31:fD9YttFUM18AZcAuFOdCkYMeTb5ERuIWVzo9okXrLMbJU1J4tnauTzLMvC1xZ+5bHFUgCbJQu4ywzkv06jbNM/ri9ni/qd45y6XcElZ4Tgb1rCK4rt4GaCJdvo1nnqpLpaURc5hn9sE+j241Yh2zTMUuB4288W8VRVn2thPE6MRkaEWFd9a/L+Q3baKIBqZNB2uQs916J3qtQAlZQu8vBklq75kci/hXlu8ib7fYaiwqp2I3D7Q/9MqGM4TFc2lEx1OoxLgER5I0xB+zvgRwWg==; 20:k/IwLGYuZNN4o64r2vo+zxfbZwn8EW/A8aiH/+z01R9ZepjTDqXV9IO+NGYlVDkwDRuCEuRK7YzJBhnz7a4bBX7hZFDX+qhy22FGZP56rcypiMqbK3eC2ZH2EIMqgWdrpRxDP/wrIzU6HKqb3opmJeFODuHB2jHZHQtmXLATAemIZcYPLbyoaiK8qOxQAAgdn87jJNzqh/u5U6IcIvJpiOiZAXlzlFodSBz0AEnFRHk0gz643hSzzPzEmtIeE9YERbaqEW2FwG+TZTGbaCJuulb1qvQzI+3HzTgzAJZEl6fhE/8ZosCnj9saopy83bM4/1OJmUlEwcV3X5PizbLT9mzbTmoRaoxlnR6RLyqVhU6WeVsHr4gMzmEzvvsCEQPqypAtG34fOKE8m1DhMyvE5T7HV5zboaMamZMsi1YX1xzAudtf2rPbYl/ciw3oAe9vgzL+V3/A2OD5+8fUvTK91UF+hSFRoHlyzplw1MKrnOAYF0IxWduIAeYM8t8jQwlO X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13024025)(13023025)(5005006)(8121501046)(13017025)(13018025)(13015025)(10201501046)(3002001)(6041248)(20161123558021)(20161123562025)(20161123555025)(20161123560025)(20161123564025)(6072148); SRVR:SN2PR07MB032; BCL:0; PCL:0; RULEID:; SRVR:SN2PR07MB032; X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 4:GwX1ECPv+TwS0ScByi/HBnzHprjBHYMOiXvahPyUKh674VPlXIhwbsMq6ZP0cepCS8Wi2o38qRWUKdJOLDEReN1oK1psyPJCRt6L401GJkw8PX0OVpDDK96yTH+Y0Szdi6b9ynVYz5eu64lyi1L42Lxk64CaZYt5QairD+O/QPFYxlxwZYPKVwDT3Fd6vMRkXWDwnnwv9xRVwfPmu730gU+aLKjro8hlVaZLhkWsxSQh/+ypHfUa4DFKEvbOGULXIqJJBeaqTVMxwnGWYVk4CO3d/LM8n3EEJ6pxBJt9OwU/exSLFSNSNiY/SR/k5va3aCtCHmRgkW3P40cdoIXzJsBGPEsoPBzGDAMR1f9QAR4QYXqkpnAWmWxvrvty+EglS++jnRnM+JuHOzUbeEF5ehDragkSCGPHfSX0f50x7N6rbIs3F6YBLDdIhAgeDUIzmcaTenP/IEPO4WPS88+rA5dhiQNKhjJQzS2msNxbZbBh9bCtUAhxt98EnbsR4PvauJ/il9XeWpjsrjy/HPd/TdnG48szAM2bd8kBvOe1+vsEuaSVmsOcPYQCDLz54YbvrfXcZ8n29Kboo5nNWvmWJTby2qjeLu/3UzqxETUpq7ks0R+Vj/64w/91NUmJm5fy8x1MuPshyCZSfWxUKB4e7hBheocF9BUzDLk1Sc7TrmJV0SFBaDmLFw4TkPt1u2bdQ32JQCP7qI8qXxh9fdZrzw== X-Forefront-PRVS: 0166B75B74 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN2PR07MB032; 23:HzMTTP8eQEFOdpFeJncFascnR0s3y4YcQFSg1J1+gf?= =?us-ascii?Q?qDX7+S36SZPv8x3n+QM74E1hazBrILmMptAvDiGAy6oxqjXKPfdYghraSQj2?= =?us-ascii?Q?CgeClU+9E2uBMoceWXwOLJcRVXVbRLgkNvyObt83zKA7ZENhoOaFluf0F5K2?= =?us-ascii?Q?fnY3O7w89KEBrOqa7vjtdVAjEpIjytsUqdmW7XZ7tynSRycsGgsaWU8MdA2G?= =?us-ascii?Q?G7yzEX+iIVm5tr/1Y8Kpvae/n95yHCJI2hZC0eo3EarkrRCsZaxXKPfywimV?= =?us-ascii?Q?1CWcCaarxYKUsBM4M8KXO1HbSQfzWcwVkH2nj7zxYL077Mu1tFm9F1ItmEBt?= =?us-ascii?Q?XRh7EOE9E0KSvhAPHVn9s0AZ/ORq6ikOC86OhiCViyUzgEv11fmP7KKCSSgO?= =?us-ascii?Q?p/TNr2otvLzVKi5STGTsnpxwyH5pWkBhWT0Dfonh+BG25HRlkjWOiB+TU9Sy?= =?us-ascii?Q?0f7DkchoM5Bl1IoHztzo4/snj4xyKOcjV+Q/v9v6E4TUbeTpJNYOPZH/72EO?= =?us-ascii?Q?0RiO4oPDYAA9PVKCEfBIxsH6REErQRpgSaVHKPamx1MFUpYzz1pmIGBH5/pJ?= =?us-ascii?Q?4GLg0ndMQW7fITlyeKbdbtC5dgB9ESfpqz3/+KpH6Dbp4hTtNNvwJCzCUNsO?= =?us-ascii?Q?tFfRNsH5o+G3bbmddZQ6nIpOWuwZ6oo3dMb5bxGqQHXbXxulpTCuOhEPRooc?= =?us-ascii?Q?18vvFK7bJNGyFxY5Rp9+S4+WBsyeM3jGfC1dttODNEj+rkbRrqQ4gqRGDDtx?= =?us-ascii?Q?KV+aHa8OxpUbx3RITYn9dDxBe4GP/NIErwMUd9OFjT3aiWUfko2/UJ4DKPCR?= =?us-ascii?Q?b8RzP3K5/uyBZrrMOz03T1di3c1BrUu5GtPpds38YYRu8sOm8w2QEjcnnGL8?= =?us-ascii?Q?Tlx56BBed45XV8a3pYlXXltPFw+0EOiS1tlZLNkqftUHKAieRslrUyMIXWx3?= =?us-ascii?Q?Eff2Xk2iK72Z1iGPePFonNvlnIWMZf90sNBLASKPz0g0z8aM/q/Jfv8t8pNo?= =?us-ascii?Q?g5N9tv5luwSjIS0HpgNQUzDHK20UU1VA+9H/8d9ncV5lqFcNQi1+Le0+Kz0A?= =?us-ascii?Q?/yKw0qCSep5eDX9QSpnw7c/mMydGEy+Zy6aMPuIgFGKbaG9llhv5ZUC7xzPV?= =?us-ascii?Q?yqpIO03oA=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 6:PbSPeOkgVICwYqmeqRMDix5WU9LTOF713DvHFkcrDuftXhPxHfQc1GTJbvLYOWdGopM8/9uiXkQuVMpQ0IEvx8pJf1pns0Hhmq2XBURT4eKSexqzQHiscGEbbOnTN1FRSG/vRL/Czp39YceTxuCPpEZgcIHjp5Mwd+qcBtkQGguQ+x+Vbf2nnBdg45sBV806U30pz6hdFjQSk0ZWpv44HFINL0d7yjkDt9KGxrS23zZIS4uJsc62W/JkzpVje1ZK+Ffqjj1pdR2JjXnkFe/RaZ2wuSPnLUDFbZSxdlkNJqvMAfUCFA0ya3eX58ZC+cCfdDyIVFwqCmnuv/NgTrb/5cyqWuQj6rMzYJcHoR7IacrLDKfr7FE7hUOTSWUtMzPeul0W7iEmeJWbtFbl42HO+eQ5VddohYkPt7+v61g2Y9w=; 5:TAaW3oUFBrUJ21b95sqbLfVrMoeSXS4LthurecBg9vaBNUbpBxKY6V26OHMAQhxHc6T0ML3I1RRwK6o1urGcqIk36RJLU9U6mgW6XXAanCH7iOarPMz36hoasfJ8K7ufgeftogdNUjgrtqqwtpX7JA==; 24:isc8I6DHIj9oDkokn2u1wcYcgYR4bjHbXCw0aS557Trh6tEQeP/Y2XKQ7IMx3I/zkzumg4U60W3cPq7DNeeI+PnRzWdoVitVFoiKa4bq9uM= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN2PR07MB032; 7:sVjKUQ6YaTY9IDyqBC/vDbT670iuWoveCEVjvgwgMugZuR4DA7DFttO6kOyJh+u8WPKmyMjwZu791m+Kd8zUC4h7lSYbIZq0hSPcZFetnUeEzjxQamLS+BWtFMsw23irWuclDZijQrfHbQHLqEVSiPvvQdAX7gDJydVU41UzLhDtIoGJMKNRnmaeXHvdYzwjHG7zMr2PZ747CU1H1jAwHFos+ecULnUPKIMmOGyXb/8K29U4TIQFzdiPNALFiOIfSe4zLavS0BuBLzC1pB2xdcOXZVhruhclE6A8PwxtOPQPH9OEX1byqDve+RjYcvcnBuMSps0MZquLH1m20USYEHn6LIEEqG6OBI3mU+6ITn3W6VBkgEL9ORcMVXjyxpF8GjYKLqCiJo6mZ7PeF1K6SfZv3hep1wJXynvmc6jMQ9TIavJnamJYX8hoLUg83mD/Ga5LczEmlbWvF5hGy9LDNg== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Dec 2016 04:23:51.2621 (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: SN2PR07MB032 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 Signed-off-by: Himanshu Madhani Signed-off-by: Giridhar Malavali Reviewed-by: Christoph Hellwig --- drivers/scsi/qla2xxx/qla_target.c | 641 -------------------------------------- drivers/scsi/qla2xxx/qla_target.h | 21 -- 2 files changed, 662 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index c9e6a8b..8a10f93 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -106,8 +106,6 @@ static int qlt_issue_task_mgmt(struct qla_tgt_sess *sess, uint32_t lun, int fn, void *iocb, int flags); static void qlt_send_term_exchange(struct scsi_qla_host *ha, struct qla_tgt_cmd *cmd, struct atio_from_isp *atio, int ha_locked, int ul_abort); -static void qlt_reject_free_srr_imm(struct scsi_qla_host *ha, - struct qla_tgt_srr_imm *imm, int ha_lock); static void qlt_abort_cmd_on_host_reset(struct scsi_qla_host *vha, struct qla_tgt_cmd *cmd); static void qlt_alloc_qfull_cmd(struct scsi_qla_host *vha, @@ -2183,95 +2181,6 @@ static inline int qlt_need_explicit_conf(struct qla_hw_data *ha, cmd->conf_compl_supported; } -#ifdef CONFIG_QLA_TGT_DEBUG_SRR -/* - * Original taken from the XFS code - */ -static unsigned long qlt_srr_random(void) -{ - static int Inited; - static unsigned long RandomValue; - static DEFINE_SPINLOCK(lock); - /* cycles pseudo-randomly through all values between 1 and 2^31 - 2 */ - register long rv; - register long lo; - register long hi; - unsigned long flags; - - spin_lock_irqsave(&lock, flags); - if (!Inited) { - RandomValue = jiffies; - Inited = 1; - } - rv = RandomValue; - hi = rv / 127773; - lo = rv % 127773; - rv = 16807 * lo - 2836 * hi; - if (rv <= 0) - rv += 2147483647; - RandomValue = rv; - spin_unlock_irqrestore(&lock, flags); - return rv; -} - -static void qlt_check_srr_debug(struct qla_tgt_cmd *cmd, int *xmit_type) -{ -#if 0 /* This is not a real status packets lost, so it won't lead to SRR */ - if ((*xmit_type & QLA_TGT_XMIT_STATUS) && (qlt_srr_random() % 200) - == 50) { - *xmit_type &= ~QLA_TGT_XMIT_STATUS; - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf015, - "Dropping cmd %p (tag %d) status", cmd, se_cmd->tag); - } -#endif - /* - * It's currently not possible to simulate SRRs for FCP_WRITE without - * a physical link layer failure, so don't even try here.. - */ - if (cmd->dma_data_direction != DMA_FROM_DEVICE) - return; - - if (qlt_has_data(cmd) && (cmd->sg_cnt > 1) && - ((qlt_srr_random() % 100) == 20)) { - int i, leave = 0; - unsigned int tot_len = 0; - - while (leave == 0) - leave = qlt_srr_random() % cmd->sg_cnt; - - for (i = 0; i < leave; i++) - tot_len += cmd->sg[i].length; - - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf016, - "Cutting cmd %p (tag %d) buffer" - " tail to len %d, sg_cnt %d (cmd->bufflen %d," - " cmd->sg_cnt %d)", cmd, se_cmd->tag, tot_len, leave, - cmd->bufflen, cmd->sg_cnt); - - cmd->bufflen = tot_len; - cmd->sg_cnt = leave; - } - - if (qlt_has_data(cmd) && ((qlt_srr_random() % 100) == 70)) { - unsigned int offset = qlt_srr_random() % cmd->bufflen; - - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf017, - "Cutting cmd %p (tag %d) buffer head " - "to offset %d (cmd->bufflen %d)", cmd, se_cmd->tag, offset, - cmd->bufflen); - if (offset == 0) - *xmit_type &= ~QLA_TGT_XMIT_DATA; - else if (qlt_set_data_offset(cmd, offset)) { - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf018, - "qlt_set_data_offset() failed (tag %d)", se_cmd->tag); - } - } -} -#else -static inline void qlt_check_srr_debug(struct qla_tgt_cmd *cmd, int *xmit_type) -{} -#endif - static void qlt_24xx_init_ctio_to_isp(struct ctio7_to_24xx *ctio, struct qla_tgt_prm *prm) { @@ -2686,7 +2595,6 @@ int qlt_xmit_response(struct qla_tgt_cmd *cmd, int xmit_type, spin_unlock_irqrestore(&ha->hardware_lock, flags); memset(&prm, 0, sizeof(prm)); - qlt_check_srr_debug(cmd, &xmit_type); ql_dbg(ql_dbg_tgt, cmd->vha, 0xe018, "is_send_status=%d, cmd->bufflen=%d, cmd->sg_cnt=%d, cmd->dma_data_direction=%d se_cmd[%p]\n", @@ -3332,90 +3240,6 @@ void qlt_free_cmd(struct qla_tgt_cmd *cmd) } EXPORT_SYMBOL(qlt_free_cmd); -/* ha->hardware_lock supposed to be held on entry */ -static int qlt_prepare_srr_ctio(struct scsi_qla_host *vha, - struct qla_tgt_cmd *cmd, void *ctio) -{ - struct qla_tgt_srr_ctio *sc; - struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; - struct qla_tgt_srr_imm *imm; - - tgt->ctio_srr_id++; - cmd->trc_flags |= TRC_SRR_CTIO; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf019, - "qla_target(%d): CTIO with SRR status received\n", vha->vp_idx); - - if (!ctio) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf055, - "qla_target(%d): SRR CTIO, but ctio is NULL\n", - vha->vp_idx); - return -EINVAL; - } - - sc = kzalloc(sizeof(*sc), GFP_ATOMIC); - if (sc != NULL) { - sc->cmd = cmd; - /* IRQ is already OFF */ - spin_lock(&tgt->srr_lock); - sc->srr_id = tgt->ctio_srr_id; - list_add_tail(&sc->srr_list_entry, - &tgt->srr_ctio_list); - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01a, - "CTIO SRR %p added (id %d)\n", sc, sc->srr_id); - if (tgt->imm_srr_id == tgt->ctio_srr_id) { - int found = 0; - list_for_each_entry(imm, &tgt->srr_imm_list, - srr_list_entry) { - if (imm->srr_id == sc->srr_id) { - found = 1; - break; - } - } - if (found) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01b, - "Scheduling srr work\n"); - schedule_work(&tgt->srr_work); - } else { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf056, - "qla_target(%d): imm_srr_id " - "== ctio_srr_id (%d), but there is no " - "corresponding SRR IMM, deleting CTIO " - "SRR %p\n", vha->vp_idx, - tgt->ctio_srr_id, sc); - list_del(&sc->srr_list_entry); - spin_unlock(&tgt->srr_lock); - - kfree(sc); - return -EINVAL; - } - } - spin_unlock(&tgt->srr_lock); - } else { - struct qla_tgt_srr_imm *ti; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf057, - "qla_target(%d): Unable to allocate SRR CTIO entry\n", - vha->vp_idx); - spin_lock(&tgt->srr_lock); - list_for_each_entry_safe(imm, ti, &tgt->srr_imm_list, - srr_list_entry) { - if (imm->srr_id == tgt->ctio_srr_id) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01c, - "IMM SRR %p deleted (id %d)\n", - imm, imm->srr_id); - list_del(&imm->srr_list_entry); - qlt_reject_free_srr_imm(vha, imm, 1); - } - } - spin_unlock(&tgt->srr_lock); - - return -ENOMEM; - } - - return 0; -} - /* * ha->hardware_lock supposed to be held on entry. Might drop it, then reaquire */ @@ -3633,16 +3457,6 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, uint32_t handle, } break; } - case CTIO_SRR_RECEIVED: - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf05a, - "qla_target(%d): CTIO with SRR_RECEIVED" - " status %x received (state %x, se_cmd %p)\n", - vha->vp_idx, status, cmd->state, se_cmd); - if (qlt_prepare_srr_ctio(vha, cmd, ctio) != 0) - break; - else - return; - case CTIO_DIF_ERROR: { struct ctio_crc_from_fw *crc = (struct ctio_crc_from_fw *)ctio; @@ -4495,451 +4309,6 @@ static int qlt_24xx_handle_els(struct scsi_qla_host *vha, return res; } -static int qlt_set_data_offset(struct qla_tgt_cmd *cmd, uint32_t offset) -{ -#if 1 - /* - * FIXME: Reject non zero SRR relative offset until we can test - * this code properly. - */ - pr_debug("Rejecting non zero SRR rel_offs: %u\n", offset); - return -1; -#else - struct scatterlist *sg, *sgp, *sg_srr, *sg_srr_start = NULL; - size_t first_offset = 0, rem_offset = offset, tmp = 0; - int i, sg_srr_cnt, bufflen = 0; - - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe023, - "Entering qla_tgt_set_data_offset: cmd: %p, cmd->sg: %p, " - "cmd->sg_cnt: %u, direction: %d\n", - cmd, cmd->sg, cmd->sg_cnt, cmd->dma_data_direction); - - if (!cmd->sg || !cmd->sg_cnt) { - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe055, - "Missing cmd->sg or zero cmd->sg_cnt in" - " qla_tgt_set_data_offset\n"); - return -EINVAL; - } - /* - * Walk the current cmd->sg list until we locate the new sg_srr_start - */ - for_each_sg(cmd->sg, sg, cmd->sg_cnt, i) { - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe024, - "sg[%d]: %p page: %p, length: %d, offset: %d\n", - i, sg, sg_page(sg), sg->length, sg->offset); - - if ((sg->length + tmp) > offset) { - first_offset = rem_offset; - sg_srr_start = sg; - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe025, - "Found matching sg[%d], using %p as sg_srr_start, " - "and using first_offset: %zu\n", i, sg, - first_offset); - break; - } - tmp += sg->length; - rem_offset -= sg->length; - } - - if (!sg_srr_start) { - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe056, - "Unable to locate sg_srr_start for offset: %u\n", offset); - return -EINVAL; - } - sg_srr_cnt = (cmd->sg_cnt - i); - - sg_srr = kzalloc(sizeof(struct scatterlist) * sg_srr_cnt, GFP_KERNEL); - if (!sg_srr) { - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe057, - "Unable to allocate sgp\n"); - return -ENOMEM; - } - sg_init_table(sg_srr, sg_srr_cnt); - sgp = &sg_srr[0]; - /* - * Walk the remaining list for sg_srr_start, mapping to the newly - * allocated sg_srr taking first_offset into account. - */ - for_each_sg(sg_srr_start, sg, sg_srr_cnt, i) { - if (first_offset) { - sg_set_page(sgp, sg_page(sg), - (sg->length - first_offset), first_offset); - first_offset = 0; - } else { - sg_set_page(sgp, sg_page(sg), sg->length, 0); - } - bufflen += sgp->length; - - sgp = sg_next(sgp); - if (!sgp) - break; - } - - cmd->sg = sg_srr; - cmd->sg_cnt = sg_srr_cnt; - cmd->bufflen = bufflen; - cmd->offset += offset; - cmd->free_sg = 1; - - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe026, "New cmd->sg: %p\n", cmd->sg); - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe027, "New cmd->sg_cnt: %u\n", - cmd->sg_cnt); - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe028, "New cmd->bufflen: %u\n", - cmd->bufflen); - ql_dbg(ql_dbg_tgt, cmd->vha, 0xe029, "New cmd->offset: %u\n", - cmd->offset); - - if (cmd->sg_cnt < 0) - BUG(); - - if (cmd->bufflen < 0) - BUG(); - - return 0; -#endif -} - -static inline int qlt_srr_adjust_data(struct qla_tgt_cmd *cmd, - uint32_t srr_rel_offs, int *xmit_type) -{ - int res = 0, rel_offs; - - rel_offs = srr_rel_offs - cmd->offset; - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf027, "srr_rel_offs=%d, rel_offs=%d", - srr_rel_offs, rel_offs); - - *xmit_type = QLA_TGT_XMIT_ALL; - - if (rel_offs < 0) { - ql_dbg(ql_dbg_tgt_mgt, cmd->vha, 0xf062, - "qla_target(%d): SRR rel_offs (%d) < 0", - cmd->vha->vp_idx, rel_offs); - res = -1; - } else if (rel_offs == cmd->bufflen) - *xmit_type = QLA_TGT_XMIT_STATUS; - else if (rel_offs > 0) - res = qlt_set_data_offset(cmd, rel_offs); - - return res; -} - -/* No locks, thread context */ -static void qlt_handle_srr(struct scsi_qla_host *vha, - struct qla_tgt_srr_ctio *sctio, struct qla_tgt_srr_imm *imm) -{ - struct imm_ntfy_from_isp *ntfy = - (struct imm_ntfy_from_isp *)&imm->imm_ntfy; - struct qla_hw_data *ha = vha->hw; - struct qla_tgt_cmd *cmd = sctio->cmd; - struct se_cmd *se_cmd = &cmd->se_cmd; - unsigned long flags; - int xmit_type = 0, resp = 0; - uint32_t offset; - uint16_t srr_ui; - - offset = le32_to_cpu(ntfy->u.isp24.srr_rel_offs); - srr_ui = ntfy->u.isp24.srr_ui; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf028, "SRR cmd %p, srr_ui %x\n", - cmd, srr_ui); - - switch (srr_ui) { - case SRR_IU_STATUS: - spin_lock_irqsave(&ha->hardware_lock, flags); - qlt_send_notify_ack(vha, ntfy, - 0, 0, 0, NOTIFY_ACK_SRR_FLAGS_ACCEPT, 0, 0); - spin_unlock_irqrestore(&ha->hardware_lock, flags); - xmit_type = QLA_TGT_XMIT_STATUS; - resp = 1; - break; - case SRR_IU_DATA_IN: - if (!cmd->sg || !cmd->sg_cnt) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf063, - "Unable to process SRR_IU_DATA_IN due to" - " missing cmd->sg, state: %d\n", cmd->state); - dump_stack(); - goto out_reject; - } - if (se_cmd->scsi_status != 0) { - ql_dbg(ql_dbg_tgt, vha, 0xe02a, - "Rejecting SRR_IU_DATA_IN with non GOOD " - "scsi_status\n"); - goto out_reject; - } - cmd->bufflen = se_cmd->data_length; - - if (qlt_has_data(cmd)) { - if (qlt_srr_adjust_data(cmd, offset, &xmit_type) != 0) - goto out_reject; - spin_lock_irqsave(&ha->hardware_lock, flags); - qlt_send_notify_ack(vha, ntfy, - 0, 0, 0, NOTIFY_ACK_SRR_FLAGS_ACCEPT, 0, 0); - spin_unlock_irqrestore(&ha->hardware_lock, flags); - resp = 1; - } else { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf064, - "qla_target(%d): SRR for in data for cmd without them (tag %lld, SCSI status %d), reject", - vha->vp_idx, se_cmd->tag, - cmd->se_cmd.scsi_status); - goto out_reject; - } - break; - case SRR_IU_DATA_OUT: - if (!cmd->sg || !cmd->sg_cnt) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf065, - "Unable to process SRR_IU_DATA_OUT due to" - " missing cmd->sg\n"); - dump_stack(); - goto out_reject; - } - if (se_cmd->scsi_status != 0) { - ql_dbg(ql_dbg_tgt, vha, 0xe02b, - "Rejecting SRR_IU_DATA_OUT" - " with non GOOD scsi_status\n"); - goto out_reject; - } - cmd->bufflen = se_cmd->data_length; - - if (qlt_has_data(cmd)) { - if (qlt_srr_adjust_data(cmd, offset, &xmit_type) != 0) - goto out_reject; - spin_lock_irqsave(&ha->hardware_lock, flags); - qlt_send_notify_ack(vha, ntfy, - 0, 0, 0, NOTIFY_ACK_SRR_FLAGS_ACCEPT, 0, 0); - spin_unlock_irqrestore(&ha->hardware_lock, flags); - if (xmit_type & QLA_TGT_XMIT_DATA) { - cmd->trc_flags |= TRC_SRR_XRDY; - qlt_rdy_to_xfer(cmd); - } - } else { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf066, - "qla_target(%d): SRR for out data for cmd without them (tag %lld, SCSI status %d), reject", - vha->vp_idx, se_cmd->tag, cmd->se_cmd.scsi_status); - goto out_reject; - } - break; - default: - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf067, - "qla_target(%d): Unknown srr_ui value %x", - vha->vp_idx, srr_ui); - goto out_reject; - } - - /* Transmit response in case of status and data-in cases */ - if (resp) { - cmd->trc_flags |= TRC_SRR_RSP; - qlt_xmit_response(cmd, xmit_type, se_cmd->scsi_status); - } - - return; - -out_reject: - spin_lock_irqsave(&ha->hardware_lock, flags); - qlt_send_notify_ack(vha, ntfy, 0, 0, 0, - NOTIFY_ACK_SRR_FLAGS_REJECT, - NOTIFY_ACK_SRR_REJECT_REASON_UNABLE_TO_PERFORM, - NOTIFY_ACK_SRR_FLAGS_REJECT_EXPL_NO_EXPL); - if (cmd->state == QLA_TGT_STATE_NEED_DATA) { - cmd->state = QLA_TGT_STATE_DATA_IN; - dump_stack(); - } else { - cmd->trc_flags |= TRC_SRR_TERM; - qlt_send_term_exchange(vha, cmd, &cmd->atio, 1, 0); - } - spin_unlock_irqrestore(&ha->hardware_lock, flags); -} - -static void qlt_reject_free_srr_imm(struct scsi_qla_host *vha, - struct qla_tgt_srr_imm *imm, int ha_locked) -{ - struct qla_hw_data *ha = vha->hw; - unsigned long flags = 0; - -#ifndef __CHECKER__ - if (!ha_locked) - spin_lock_irqsave(&ha->hardware_lock, flags); -#endif - - qlt_send_notify_ack(vha, (void *)&imm->imm_ntfy, 0, 0, 0, - NOTIFY_ACK_SRR_FLAGS_REJECT, - NOTIFY_ACK_SRR_REJECT_REASON_UNABLE_TO_PERFORM, - NOTIFY_ACK_SRR_FLAGS_REJECT_EXPL_NO_EXPL); - -#ifndef __CHECKER__ - if (!ha_locked) - spin_unlock_irqrestore(&ha->hardware_lock, flags); -#endif - - kfree(imm); -} - -static void qlt_handle_srr_work(struct work_struct *work) -{ - struct qla_tgt *tgt = container_of(work, struct qla_tgt, srr_work); - struct scsi_qla_host *vha = tgt->vha; - struct qla_tgt_srr_ctio *sctio; - unsigned long flags; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf029, "Entering SRR work (tgt %p)\n", - tgt); - -restart: - spin_lock_irqsave(&tgt->srr_lock, flags); - list_for_each_entry(sctio, &tgt->srr_ctio_list, srr_list_entry) { - struct qla_tgt_srr_imm *imm, *i, *ti; - struct qla_tgt_cmd *cmd; - struct se_cmd *se_cmd; - - imm = NULL; - list_for_each_entry_safe(i, ti, &tgt->srr_imm_list, - srr_list_entry) { - if (i->srr_id == sctio->srr_id) { - list_del(&i->srr_list_entry); - if (imm) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf068, - "qla_target(%d): There must be " - "only one IMM SRR per CTIO SRR " - "(IMM SRR %p, id %d, CTIO %p\n", - vha->vp_idx, i, i->srr_id, sctio); - qlt_reject_free_srr_imm(tgt->vha, i, 0); - } else - imm = i; - } - } - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02a, - "IMM SRR %p, CTIO SRR %p (id %d)\n", imm, sctio, - sctio->srr_id); - - if (imm == NULL) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02b, - "Not found matching IMM for SRR CTIO (id %d)\n", - sctio->srr_id); - continue; - } else - list_del(&sctio->srr_list_entry); - - spin_unlock_irqrestore(&tgt->srr_lock, flags); - - cmd = sctio->cmd; - /* - * Reset qla_tgt_cmd SRR values and SGL pointer+count to follow - * tcm_qla2xxx_write_pending() and tcm_qla2xxx_queue_data_in() - * logic.. - */ - cmd->offset = 0; - if (cmd->free_sg) { - kfree(cmd->sg); - cmd->sg = NULL; - cmd->free_sg = 0; - } - se_cmd = &cmd->se_cmd; - - cmd->sg_cnt = se_cmd->t_data_nents; - cmd->sg = se_cmd->t_data_sg; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02c, - "SRR cmd %p (se_cmd %p, tag %lld, op %x), sg_cnt=%d, offset=%d", - cmd, &cmd->se_cmd, se_cmd->tag, se_cmd->t_task_cdb ? - se_cmd->t_task_cdb[0] : 0, cmd->sg_cnt, cmd->offset); - - qlt_handle_srr(vha, sctio, imm); - - kfree(imm); - kfree(sctio); - goto restart; - } - spin_unlock_irqrestore(&tgt->srr_lock, flags); -} - -/* ha->hardware_lock supposed to be held on entry */ -static void qlt_prepare_srr_imm(struct scsi_qla_host *vha, - struct imm_ntfy_from_isp *iocb) -{ - struct qla_tgt_srr_imm *imm; - struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; - struct qla_tgt_srr_ctio *sctio; - - tgt->imm_srr_id++; - - ql_log(ql_log_warn, vha, 0xf02d, "qla_target(%d): SRR received\n", - vha->vp_idx); - - imm = kzalloc(sizeof(*imm), GFP_ATOMIC); - if (imm != NULL) { - memcpy(&imm->imm_ntfy, iocb, sizeof(imm->imm_ntfy)); - - /* IRQ is already OFF */ - spin_lock(&tgt->srr_lock); - imm->srr_id = tgt->imm_srr_id; - list_add_tail(&imm->srr_list_entry, - &tgt->srr_imm_list); - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02e, - "IMM NTFY SRR %p added (id %d, ui %x)\n", - imm, imm->srr_id, iocb->u.isp24.srr_ui); - if (tgt->imm_srr_id == tgt->ctio_srr_id) { - int found = 0; - list_for_each_entry(sctio, &tgt->srr_ctio_list, - srr_list_entry) { - if (sctio->srr_id == imm->srr_id) { - found = 1; - break; - } - } - if (found) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf02f, "%s", - "Scheduling srr work\n"); - schedule_work(&tgt->srr_work); - } else { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf030, - "qla_target(%d): imm_srr_id " - "== ctio_srr_id (%d), but there is no " - "corresponding SRR CTIO, deleting IMM " - "SRR %p\n", vha->vp_idx, tgt->ctio_srr_id, - imm); - list_del(&imm->srr_list_entry); - - kfree(imm); - - spin_unlock(&tgt->srr_lock); - goto out_reject; - } - } - spin_unlock(&tgt->srr_lock); - } else { - struct qla_tgt_srr_ctio *ts; - - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf069, - "qla_target(%d): Unable to allocate SRR IMM " - "entry, SRR request will be rejected\n", vha->vp_idx); - - /* IRQ is already OFF */ - spin_lock(&tgt->srr_lock); - list_for_each_entry_safe(sctio, ts, &tgt->srr_ctio_list, - srr_list_entry) { - if (sctio->srr_id == tgt->imm_srr_id) { - ql_dbg(ql_dbg_tgt_mgt, vha, 0xf031, - "CTIO SRR %p deleted (id %d)\n", - sctio, sctio->srr_id); - list_del(&sctio->srr_list_entry); - qlt_send_term_exchange(vha, sctio->cmd, - &sctio->cmd->atio, 1, 0); - kfree(sctio); - } - } - spin_unlock(&tgt->srr_lock); - goto out_reject; - } - - return; - -out_reject: - qlt_send_notify_ack(vha, iocb, 0, 0, 0, - NOTIFY_ACK_SRR_FLAGS_REJECT, - NOTIFY_ACK_SRR_REJECT_REASON_UNABLE_TO_PERFORM, - NOTIFY_ACK_SRR_FLAGS_REJECT_EXPL_NO_EXPL); -} - /* * ha->hardware_lock supposed to be held on entry. Might drop it, then reaquire */ @@ -5061,12 +4430,6 @@ static void qlt_handle_imm_notify(struct scsi_qla_host *vha, if (qlt_24xx_handle_els(vha, iocb) == 0) send_notify_ack = 0; break; - - case IMM_NTFY_SRR: - qlt_prepare_srr_imm(vha, iocb); - send_notify_ack = 0; - break; - default: ql_dbg(ql_dbg_tgt_mgt, vha, 0xf06d, "qla_target(%d): Received unknown immediate " @@ -6017,10 +5380,6 @@ int qlt_add_target(struct qla_hw_data *ha, struct scsi_qla_host *base_vha) spin_lock_init(&tgt->sess_work_lock); INIT_WORK(&tgt->sess_work, qlt_sess_work_fn); INIT_LIST_HEAD(&tgt->sess_works_list); - spin_lock_init(&tgt->srr_lock); - INIT_LIST_HEAD(&tgt->srr_ctio_list); - INIT_LIST_HEAD(&tgt->srr_imm_list); - INIT_WORK(&tgt->srr_work, qlt_handle_srr_work); atomic_set(&tgt->tgt_global_resets_count, 0); base_vha->vha_tgt.qla_tgt = tgt; diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index f5fec62..2f311b7 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -890,16 +890,7 @@ struct qla_tgt { int notify_ack_expected; int abts_resp_expected; int modify_lun_expected; - - int ctio_srr_id; - int imm_srr_id; - spinlock_t srr_lock; - struct list_head srr_ctio_list; - struct list_head srr_imm_list; - struct work_struct srr_work; - atomic_t tgt_global_resets_count; - struct list_head tgt_list_entry; }; @@ -1086,18 +1077,6 @@ struct qla_tgt_prm { uint16_t tot_dsds; }; -struct qla_tgt_srr_imm { - struct list_head srr_list_entry; - int srr_id; - struct imm_ntfy_from_isp imm_ntfy; -}; - -struct qla_tgt_srr_ctio { - struct list_head srr_list_entry; - int srr_id; - struct qla_tgt_cmd *cmd; -}; - /* Check for Switch reserved address */ #define IS_SW_RESV_ADDR(_s_id) \ ((_s_id.b.domain == 0xff) && (_s_id.b.area == 0xfc))