From patchwork Fri Jan 20 06:27:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9527499 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 1086860113 for ; Fri, 20 Jan 2017 06:29:27 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id F3CBA2867A for ; Fri, 20 Jan 2017 06:29:26 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id E8AA32867E; Fri, 20 Jan 2017 06:29:26 +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 282A72867A for ; Fri, 20 Jan 2017 06:29:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751415AbdATG3Z (ORCPT ); Fri, 20 Jan 2017 01:29:25 -0500 Received: from mail-sn1nam01on0046.outbound.protection.outlook.com ([104.47.32.46]:27104 "EHLO NAM01-SN1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751339AbdATG2x (ORCPT ); Fri, 20 Jan 2017 01:28:53 -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=7+DHN7tZo15LAs8+GHZB6TL0bn6G/0AIk3XQ/o+PqoI=; b=W/KQSdsUyjUJXCbee5tWz7CG0R8XnItryggg0Wz6YKuSp9mYRCqK6+HY3TVASnFjkWoLv4nPMNujqH1NuzJEKAwadPI6gbCnd4go2jUrEx/ctdusFIkSFcZYNaElKPAOA74n3to4/jmLcCpRGbnsx6sx21Er3ycyKB/f5wR6lbk= Received: from BLUPR07CA094.namprd07.prod.outlook.com (10.160.24.49) by BY2PR0701MB2085.namprd07.prod.outlook.com (10.163.156.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Fri, 20 Jan 2017 06:28:17 +0000 Received: from BN1BFFO11FD046.protection.gbl (2a01:111:f400:7c10::1:188) by BLUPR07CA094.outlook.office365.com (2a01:111:e400:8ae::49) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.845.12 via Frontend Transport; Fri, 20 Jan 2017 06:28:17 +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 BN1BFFO11FD046.mail.protection.outlook.com (10.58.145.1) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.803.8 via Frontend Transport; Fri, 20 Jan 2017 06:28:17 +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; Thu, 19 Jan 2017 22:28:09 -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 v0K6S944001297; Thu, 19 Jan 2017 22:28:09 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v0K6S9u6001296; Thu, 19 Jan 2017 22:28:09 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH v4 03/12] qla2xxx: Make trace flags more readable. Date: Thu, 19 Jan 2017 22:27:55 -0800 Message-ID: <1484893684-1255-4-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1484893684-1255-1-git-send-email-himanshu.madhani@cavium.com> References: <1484893684-1255-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:CAL; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(2980300002)(428002)(199003)(189002)(305945005)(106466001)(54906002)(105586002)(4720700003)(2201001)(86362001)(81156014)(81166006)(5003940100001)(189998001)(8676002)(2950100002)(42186005)(6666003)(33646002)(50986999)(5001770100001)(76176999)(26826002)(101416001)(50466002)(107886002)(356003)(8936002)(50226002)(5660300001)(47776003)(48376002)(39060400001)(69596002)(4326007)(80596001)(4001430100002)(38730400001)(2906002)(626004)(92566002)(36756003)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:BY2PR0701MB2085; 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; BN1BFFO11FD046; 1:pcMOiCPJHGR6W1QifAEkg6npadGU3R/gK1AUJEqluZwhy8GskLwCXxwxHpmv9Pab5tH6NMLrTgdR19Sv7CFg9OSlFnlp6SXE0YNbd2UawOQQmac2vDmnbr8/goqxaF6AnevcaLtLULEKzA2zr2ANOjiNR5AVi3f8PsNmdRc615TkWMVDgXzgKtWZG5GsranSoXUkXkrN/IES2oj8UewzmdAM8Ozud7IG0UmxY1m2GZJmofz6VWjSRJ8OElX9sHdgo27FMvRmG6dR4Jg8uOfHVrs8Vgpo0e85xslbwQFynjzTgV3Y3RdlEf2dbzwd3ozef6M9Er2WPkzyWZLEzWUb6qN9wHXkhWheeiG3bqibFwYylRJ9CkD6FiEjuJKLrajO26oj+ydAqR7aFgsiYGFhD5AnN7z2Dfbf0auuv16Dsuv8GMYXb281elclRLXeUB55baJKCNZx5qbpn/anPyU+YPcO10eHn2IIAOrdAoUh4zZP5yzK5XSG+hL/LMhPEjF+ X-MS-Office365-Filtering-Correlation-Id: 26de7683-22c0-4698-1f1f-08d440fd8554 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:BY2PR0701MB2085; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 3:oSkHi1onBZ6xq9m5L/OALYJpf5WauTxQ0f80NLT/1xjLb8rOazBupPPsFCUtXY/VPjT9MsYVw6j8e/va1+iIGNuoKAISH/MaJbh8uFR6VEMYS5IgC8Ogyyh9njN1Zvvn8NFS0lKuKrBOHJbZxUvvy06c9sovE0iALxpdOkNvdqk3ngP2FdLLjg5j5SJcgQwtYcahx81NXyUmC0jqRjPeF6Msaspe+lrNg8zKFEL0fb8SiVVVBVEFBAQdYfZnqZLYfQzFQ99Z1Ki/7iAvJDDgggnnk+4F7oB5ZUU/M68mAF/5VD/ofdDJmng8x0qre3qSxcgg5ZmsOrNYkJ44OwkbR38PIsChtQ4e6Ia6myGyaNs= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 25:aFdSVi95sDu6RhC8zOCPCrmLrMgijVP2NRfVhvngmwKwDjS27C8C+uiVENDC9GjLD1IRqlsA76TyMzn2wk+SflfpLawQcBwsS/m7v6/T9BA+Yam7aiVyso/W006rRs+GJCD1buAPZJTme2WFzBOpmRkP/VYoyS4dzRWn4qN9Zm9aSN8Gk4M27wGGE7Bd7qRfYmckts3leLxPFWm/qkHA3UYpBKhscgcWZG7TYDelR4Zyrf4QsngmLDTBHL5k3/yGnFwWwhkK4AFmaYaYuUtFib37pIsNV4tHdg260CWkohl5J5FkPM8q+w4Qp5FNaD3CeAJxYljMA2Pljv7oJM2EYCfKK2qmk8+1CEhe+OCC9KV4T4xfaZoFFDBhsATkNN3UYOQHV0Rx/2TdLlITJJjqgxCXNYnDhHhF6ctFVYbLutfvOwUQZG0WXUvBu4Mt9+iUZI0C4gm4Kyfy2XEzy15hPa7WbZQO63CudpV2+1uNEzwuGqG3JoEHZ+9rtC9yz68ljREFm2SQ86dGRaExxKK5XVoViQ+QYGC+zlrPVxmBJk7K/E/Mz/+70Xb6vp3qQDUFyjQM7xZ7lUMVvRzzi0aiJMQAm2n0C835GO5QkWfUlBA7umKjjHXQC/KZ3zZj8J30IiYo3LO20G2XjYRWEO0XTbAW7L0iPe9WLu3m0jLLZN9tBplFjO3XvKNCoxx+W1xZWyxiHTvQzMprxFVx+jC/XPRLQKuF1hq+ct72gquqqk16mAbqGPs4HYDzt5JFPzwyod9GntXeLLRrB2uUkePH27WThX1vDXQZ2kh5mPvOdZlPcvv+rdu+6LCsxJyyilGj1QGv8tGE0BJzmhxG91JufZBBwjjxKjnsmhBJYcMPhUY= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 31:G36mkQXZLnckvbzrgD8jvZhOL3y1vOYhP1q7x4NRe4q6gvgqJlMrcGXznQPdbJcKGtcFI84efInRTXnslSKykb3GfXfoT+R3vfu/ISSZG+WPMzLf6P8Xox3nlQ1bdJM8rcaMEjlBZGnCxsIaPS2eE93iCkgkB4vwbTDJY3ppKcxq3A+cHg89Vclu0s5Zr9KyrfKK7X3JukFZuAI/BOr0tBIER0duHDRjD2QcoUV0er8IfiX3rHBEFKYGbubzy2EDmNCenOShLFo9Z3m9IyhARg==; 20:efnhIf8/hvui0It5Dl8p+jrq7h3Xh9Ydz/I+AoYL8rGgTu3GgjIhs2ffFt2On/1o5V7TaHe77vQj+lBCZ6XqpZ7hh5gP5hWHJtlfZW5FrPjMjUbRXYbYI/KGcoAi7l5h2em10F9mRmd/oR6Z8/6C9ybui4vOPqn7DHK1BXxhxKeLyw3ovQrgDwySBB5CIMIQ3QMviOUCCaNAcH+xRGunSGj4zIGpEsDOvH7OHZg/vxSQUvwLRrfcrQoAnXQ+YwrerZSzleG88wGlgmBKYZe01V48gPVo8nGINZmYXJ/9yETRXLRTK+mPuPtNFhweCFBPHUSQ5z4k3LUkVibQ/3F8zQVWloA6BgJd8wnlYkEdj3RcAxjawSQIHIYkyoMrajUFUmwmQ++wabouV5bsJxYhGwEIOPFKWc7+xKtO6bhcouNkNKjrW/LFxABXtnXiTLT6DDfesx+zUmyCPabNx5vYQeO9seLqJBS9Zp3SuUCFRSt29tJlSq6l2L81kCIrpGtv X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(13023025)(13013025)(13021025)(5005006)(8121501046)(3002001)(10201501046)(6041248)(20161123555025)(20161123562025)(20161123564025)(20161123560025)(6072148); SRVR:BY2PR0701MB2085; BCL:0; PCL:0; RULEID:; SRVR:BY2PR0701MB2085; X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 4:5a0JrH2fjjPDnL6S3Pze9p4XzIktKuAZ9Q7/lr+m7uDtbNtxM/eF+d31ZB5oxjkjtWpmInL8DIiKoaGiQv5bYTwcEZ87fnjQfkLw/NzSBDAE7Q/pDo+5MbJtKBxV6k7FC2zvhvCa2olBEnFt39XeNuk6LEPmeS2qW9oEia0eDxgpFhIHgCJN9EeiQVePy5l4ZEcTAVI37jhjx7o7Aa32/vhf+2ttZeMKFMiDDy3W0ptzQr79Dvk+wM2c/r9wnE8YCv2k1iJBua7fbkaPEFFiYumEZH9wyv5xrrnC0knscYfrLyDoaWeSIIyTobGySzw5RMzT8whWlhx0GfBW7O0pq4mMfz4ltAGnoKsLynMfBrppxmyJh7yLQ1CXjUH7IIeqb7OoR3Tkzi26O29BTX5Q6abBXHacLYI6CdzWKW8AGt2F8lnR70LqsOfwGesxlLRmA+gpL6JBu7BiqAM+FDhTTUUIj5TwBjlSLCjAoullH+8/MXBbqVwYUNtVtFT+MJ/zrVlmpk/eVWOoiHL3h4TzdST5GdKNO/ngCPYeuRQb3ZxSM0z2kpaOcQNe/82McwrJiAzbojIaArStZQhPqEFAgH912olftc6KpzwUZVEH4uT0dwDR0eVUcd0/Lk4OyRMv X-Forefront-PRVS: 01930B2BA8 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; BY2PR0701MB2085; 23:Gl4dseu3wViL71qbzhP14k8MFDt+0ecqPI3AplH?= =?us-ascii?Q?RmiRlrwpvIuyiiG1YNosNSK2eEfxyrXBYjGPtkk33rzyU8k0wAPjMPbxi4XG?= =?us-ascii?Q?9JRzX33iCqCS8Hi7EeW5E+bmzz8OA8/OCWB17+kSqTBoj82AizEI9kdqDCsS?= =?us-ascii?Q?dImJKoMweipkeNc9Eo8R32OVThfyMg43F0Si/2J06g1L8s+nuO1AjGGu8i6V?= =?us-ascii?Q?K827nYJHz7Wm/mSxelg/zC8zKSC+69bzAJssJHIk5XQVRUB/Q7XglyV49tjj?= =?us-ascii?Q?zvCFX59tUnlidklNbjfytF+hftlySb9d/7b+huKO4CbfubcO5DryXtuaFk41?= =?us-ascii?Q?GJXs/0Oo6U4RxH68GlXI5a5eSjvvt3ybrdpe9IRL+uEGLS40pkYpGHOnOvYG?= =?us-ascii?Q?r6bSXnY4INUNhxSM3be550Np/CmlWE1RVbNjFn7cbGCL8kwLhx1YMT8RYSyG?= =?us-ascii?Q?D9S6vDCSKFoQsuztQRAozKQ14BTwqB/FQMyT8JQd2ow9gY7UvTNwH7kCXTfL?= =?us-ascii?Q?TJxDGeTa3i0565IHUxYPRjzPhOsIqQLE9NLSuKvyRaXwfYCJH9hgP/KzlwiV?= =?us-ascii?Q?zG+tjLDE8++eupB8AIKJWH47MCZxh7K7tqJqLa9uZWTQeiXJT2kcbfOzBjXS?= =?us-ascii?Q?0oVeGA1xdjJGtHvujW79tx8OhRc4as1z6zRoz/lbFqHsnPeAzMxy7XAMzHL3?= =?us-ascii?Q?gio9IPivVM+47ZfFEv+p0BUqOCtGrEZL68BXJ7FnRh61ZCNE6a6RxTIQrhiE?= =?us-ascii?Q?z2HUDHKN6MWkCODWipEKzLdcO8RuKqPuYxcCHLRC0JQiaWFNiF5MSyxZ9gTS?= =?us-ascii?Q?Z0wjyGB+u9BKRnIre2lye+OY0q7lDFSZMl97n/Npk8yMi5/j3cncIJNvOuQZ?= =?us-ascii?Q?fh6xQBJWa3S4J1A6ouTLcFKceneiqTqREpw0JZ7jBvsVfCOowBlV1fz/WfM1?= =?us-ascii?Q?RzMkR648gLUNw08NNiFOw2xpMiBaYzIVgWZqEV+eVSyeDXm7mv0T+iPe8ycX?= =?us-ascii?Q?DmPvYv6z+1qUmv+uexHOnr+9Nt+GHlI+Fwv797Q6X/olw8swABk/mohe2jls?= =?us-ascii?Q?UAtsIBNSHAu7HuygizUelUjO9E4VzKssmb1uzcn4oykxUO17Mo/NhRFQ0M9Z?= =?us-ascii?Q?BkJWlBxLZwzMhIkQ/ApJfnG1CFawdbgzYduYM/0Jasb87gDKGhLRLRw=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 6:8vYf6yTdqe+QvezPuUGjPQjXtCCd9FaJ9EImkndG1aV6FhutU6NrckolQYZDVf7GM6xnRsw+scEbLxF46G2rBJ1ydD1BBc1U6LZTT+lDZUeQkqv3CUAYNHaqPpd7W4uz5luxC9ZrSJ2wIwvp2KqTdo1lIovizLv4WsKWmzAzFWtVdyVpQn6XjEKK0iPJuZ5vkYcOsx7rgWyl8vCACMNYE2QUHKgnIpO8e51m9oQN5PnyLXZn4YRGcNZHL4RsTXS/nLayVbTq09w0CkvOc/lVRsWmhN5AseoYiLsZiVVdwBCPdybi17C1wn4F4ZvTJGdx9VFbVW0VQ0Y183QW0tx/Wr3AjcthcU6OlwLFsfu6oy9idBzTLmtb7S+jm2D3LkznGzFJKvfiZaM7Us9uCpM2EvRv3cXj+TFGTdoALPRhdiw=; 5:iEDvt2J4TCDT6iVCkMBCh0+OqxC/Qji4hImpvRT8JkdTcIZGihZGul2mEvXO9V7ntd5OvDGQUHKEAgLWDhrlMAATiE7IsJBHoUP6wRVvmlTbS5hS35qpnYtSJTNzkF+pJkDYFq6brsyH+8Yghhqi/nZ2qYugSUIszZsmvAKWcZA=; 24:DExJeidBoijc7lHFXesl47hmyi7ElkJi/NWbM0MYkUv6orT30+rHEud+QuwSp5E3YjcznmUoVfS9YuU0YO3FnB+Hul/plqUZaA31Yw2sRBk= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; BY2PR0701MB2085; 7:CpWQ+jwbEdthUQpqeXOSJ5l8my0gIR39iCo3VAdwRGUAJHmujXAS4OF6WICdRy2/EqdAY7oQy3p2t2aadrBmWF1MHwq9bXQJ0Rm7IM5b0hMxenatGjIkROs5XTOaB3iK5ArFNCaGvqaZWz+09SVbFm1zxrnChWqA3KzXTOiYAJMT5HLGjQ3voSir2AxGMXQkeW5QbI4WHiiocSig96grVlFG6Qu+23h0MOu1A/eqyowRd3svZ2ivi3kr9oMEt641fLTo0xHCFtuBgjY1aCEDiCYhepADZa5gQTERF6tY6EVrRmiscE1h3mibe8q4+4/SnzVvKtfggFsddABiuZJheByVONCP95sS+wsZAxp0no/H7xyVR9qYRJjQOiyuPKysTHOvEVat0ACYhilUuBKA1KlOmSygPLL1M5s1CjOmmr6hWwKrsOgX+/W/JPIQfB8eSLpEBzY6ManKWGMTsXTnOQ== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Jan 2017 06:28:17.0280 (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: BY2PR0701MB2085 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 Trace flags are useful during debugging crash dumps using crash utility. These trace flags makes it easier to understand various states a command has successfully completed. Signed-off-by: Quinn Tran Signed-off-by: Himanshu Madhani --- drivers/scsi/qla2xxx/qla_target.c | 28 +++++++++---------- drivers/scsi/qla2xxx/qla_target.h | 55 +++++++++++++++++--------------------- drivers/scsi/qla2xxx/tcm_qla2xxx.c | 43 ++++++++++++++--------------- 3 files changed, 59 insertions(+), 67 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c index 39e6a02..1bd9cac 100644 --- a/drivers/scsi/qla2xxx/qla_target.c +++ b/drivers/scsi/qla2xxx/qla_target.c @@ -3294,7 +3294,7 @@ int qlt_abort_cmd(struct qla_tgt_cmd *cmd) return EIO; } cmd->aborted = 1; - cmd->cmd_flags |= BIT_6; + cmd->trc_flags |= TRC_ABORT; spin_unlock_irqrestore(&cmd->cmd_lock, flags); qlt_send_term_exchange(vha, cmd, &cmd->atio, 0, 1); @@ -3342,7 +3342,7 @@ static int qlt_prepare_srr_ctio(struct scsi_qla_host *vha, struct qla_tgt_srr_imm *imm; tgt->ctio_srr_id++; - cmd->cmd_flags |= BIT_15; + 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); @@ -3525,7 +3525,7 @@ static struct qla_tgt_cmd *qlt_ctio_to_cmd(struct scsi_qla_host *vha, dump_stack(); } - cmd->cmd_flags |= BIT_17; + cmd->trc_flags |= TRC_FLUSH; ha->tgt.tgt_ops->free_cmd(cmd); } @@ -3691,7 +3691,7 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, uint32_t handle, */ if ((cmd->state != QLA_TGT_STATE_NEED_DATA) && (!cmd->aborted)) { - cmd->cmd_flags |= BIT_13; + cmd->trc_flags |= TRC_CTIO_ERR; if (qlt_term_ctio_exchange(vha, ctio, cmd, status)) return; } @@ -3699,7 +3699,7 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, uint32_t handle, skip_term: if (cmd->state == QLA_TGT_STATE_PROCESSED) { - cmd->cmd_flags |= BIT_12; + cmd->trc_flags |= TRC_CTIO_DONE; } else if (cmd->state == QLA_TGT_STATE_NEED_DATA) { cmd->state = QLA_TGT_STATE_DATA_IN; @@ -3709,11 +3709,11 @@ static void qlt_do_ctio_completion(struct scsi_qla_host *vha, uint32_t handle, ha->tgt.tgt_ops->handle_data(cmd); return; } else if (cmd->aborted) { - cmd->cmd_flags |= BIT_18; + cmd->trc_flags |= TRC_CTIO_ABORTED; ql_dbg(ql_dbg_tgt_mgt, vha, 0xf01e, "Aborted command %p (tag %lld) finished\n", cmd, se_cmd->tag); } else { - cmd->cmd_flags |= BIT_19; + cmd->trc_flags |= TRC_CTIO_STRANGE; ql_dbg(ql_dbg_tgt_mgt, vha, 0xf05c, "qla_target(%d): A command in state (%d) should " "not return a CTIO complete\n", vha->vp_idx, cmd->state); @@ -3778,7 +3778,7 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) int ret, fcp_task_attr, data_dir, bidi = 0; cmd->cmd_in_wq = 0; - cmd->cmd_flags |= BIT_1; + cmd->trc_flags |= TRC_DO_WORK; if (tgt->tgt_stop) goto out_term; @@ -3830,7 +3830,7 @@ static void __qlt_do_work(struct qla_tgt_cmd *cmd) * cmd has not sent to target yet, so pass NULL as the second * argument to qlt_send_term_exchange() and free the memory here. */ - cmd->cmd_flags |= BIT_2; + cmd->trc_flags |= TRC_DO_WORK_ERR; spin_lock_irqsave(&ha->hardware_lock, flags); qlt_send_term_exchange(vha, NULL, &cmd->atio, 1, 0); @@ -3881,7 +3881,7 @@ static struct qla_tgt_cmd *qlt_get_tag(scsi_qla_host_t *vha, cmd->loop_id = sess->loop_id; cmd->conf_compl_supported = sess->conf_compl_supported; - cmd->cmd_flags = 0; + cmd->trc_flags = 0; cmd->jiffies_at_alloc = get_jiffies_64(); cmd->reset_count = vha->hw->chip_reset; @@ -4017,7 +4017,7 @@ static int qlt_handle_cmd_for_atio(struct scsi_qla_host *vha, } cmd->cmd_in_wq = 1; - cmd->cmd_flags |= BIT_0; + cmd->trc_flags |= TRC_NEW_CMD; cmd->se_cmd.cpuid = ha->msix_count ? ha->tgt.rspq_vector_cpuid : WORK_CPU_UNBOUND; @@ -4709,7 +4709,7 @@ static void qlt_handle_srr(struct scsi_qla_host *vha, 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->cmd_flags |= BIT_8; + cmd->trc_flags |= TRC_SRR_XRDY; qlt_rdy_to_xfer(cmd); } } else { @@ -4728,7 +4728,7 @@ static void qlt_handle_srr(struct scsi_qla_host *vha, /* Transmit response in case of status and data-in cases */ if (resp) { - cmd->cmd_flags |= BIT_7; + cmd->trc_flags |= TRC_SRR_RSP; qlt_xmit_response(cmd, xmit_type, se_cmd->scsi_status); } @@ -4744,7 +4744,7 @@ static void qlt_handle_srr(struct scsi_qla_host *vha, cmd->state = QLA_TGT_STATE_DATA_IN; dump_stack(); } else { - cmd->cmd_flags |= BIT_9; + cmd->trc_flags |= TRC_SRR_TERM; qlt_send_term_exchange(vha, cmd, &cmd->atio, 1, 0); } spin_unlock_irqrestore(&ha->hardware_lock, flags); diff --git a/drivers/scsi/qla2xxx/qla_target.h b/drivers/scsi/qla2xxx/qla_target.h index 14f2e24..5d00529 100644 --- a/drivers/scsi/qla2xxx/qla_target.h +++ b/drivers/scsi/qla2xxx/qla_target.h @@ -965,35 +965,28 @@ struct qla_tgt_sess { qlt_plogi_ack_t *plogi_link[QLT_PLOGI_LINK_MAX]; }; -typedef enum { - /* - * BIT_0 - Atio Arrival / schedule to work - * BIT_1 - qlt_do_work - * BIT_2 - qlt_do work failed - * BIT_3 - xfer rdy/tcm_qla2xxx_write_pending - * BIT_4 - read respond/tcm_qla2xx_queue_data_in - * BIT_5 - status respond / tcm_qla2xx_queue_status - * BIT_6 - tcm request to abort/Term exchange. - * pre_xmit_response->qlt_send_term_exchange - * BIT_7 - SRR received (qlt_handle_srr->qlt_xmit_response) - * BIT_8 - SRR received (qlt_handle_srr->qlt_rdy_to_xfer) - * BIT_9 - SRR received (qla_handle_srr->qlt_send_term_exchange) - * BIT_10 - Data in - hanlde_data->tcm_qla2xxx_handle_data - - * BIT_12 - good completion - qlt_ctio_do_completion -->free_cmd - * BIT_13 - Bad completion - - * qlt_ctio_do_completion --> qlt_term_ctio_exchange - * BIT_14 - Back end data received/sent. - * BIT_15 - SRR prepare ctio - * BIT_16 - complete free - * BIT_17 - flush - qlt_abort_cmd_on_host_reset - * BIT_18 - completion w/abort status - * BIT_19 - completion w/unknown status - * BIT_20 - tcm_qla2xxx_free_cmd - */ - CMD_FLAG_DATA_WORK = BIT_11, - CMD_FLAG_DATA_WORK_FREE = BIT_21, -} cmd_flags_t; +enum trace_flags { + TRC_NEW_CMD = BIT_0, + TRC_DO_WORK = BIT_1, + TRC_DO_WORK_ERR = BIT_2, + TRC_XFR_RDY = BIT_3, + TRC_XMIT_DATA = BIT_4, + TRC_XMIT_STATUS = BIT_5, + TRC_SRR_RSP = BIT_6, + TRC_SRR_XRDY = BIT_7, + TRC_SRR_TERM = BIT_8, + TRC_SRR_CTIO = BIT_9, + TRC_FLUSH = BIT_10, + TRC_CTIO_ERR = BIT_11, + TRC_CTIO_DONE = BIT_12, + TRC_CTIO_ABORTED = BIT_13, + TRC_CTIO_STRANGE= BIT_14, + TRC_CMD_DONE = BIT_15, + TRC_CMD_CHK_STOP = BIT_16, + TRC_CMD_FREE = BIT_17, + TRC_DATA_IN = BIT_18, + TRC_ABORT = BIT_19, +}; struct qla_tgt_cmd { struct se_cmd se_cmd; @@ -1016,6 +1009,8 @@ struct qla_tgt_cmd { unsigned int cmd_sent_to_fw:1; unsigned int cmd_in_wq:1; unsigned int aborted:1; + unsigned int data_work:1; + unsigned int data_work_free:1; struct scatterlist *sg; /* cmd data buffer SG vector */ int sg_cnt; /* SG segments count */ @@ -1040,7 +1035,7 @@ struct qla_tgt_cmd { uint64_t jiffies_at_alloc; uint64_t jiffies_at_free; - cmd_flags_t cmd_flags; + enum trace_flags trc_flags; }; struct qla_tgt_sess_work_param { diff --git a/drivers/scsi/qla2xxx/tcm_qla2xxx.c b/drivers/scsi/qla2xxx/tcm_qla2xxx.c index 1bec6ab..af4a198 100644 --- a/drivers/scsi/qla2xxx/tcm_qla2xxx.c +++ b/drivers/scsi/qla2xxx/tcm_qla2xxx.c @@ -282,10 +282,10 @@ static void tcm_qla2xxx_complete_free(struct work_struct *work) cmd->cmd_in_wq = 0; - WARN_ON(cmd->cmd_flags & BIT_16); + WARN_ON(cmd->trc_flags & TRC_CMD_FREE); cmd->vha->tgt_counters.qla_core_ret_sta_ctio++; - cmd->cmd_flags |= BIT_16; + cmd->trc_flags |= TRC_CMD_FREE; transport_generic_free_cmd(&cmd->se_cmd, 0); } @@ -299,8 +299,8 @@ static void tcm_qla2xxx_free_cmd(struct qla_tgt_cmd *cmd) cmd->vha->tgt_counters.core_qla_free_cmd++; cmd->cmd_in_wq = 1; - BUG_ON(cmd->cmd_flags & BIT_20); - cmd->cmd_flags |= BIT_20; + WARN_ON(cmd->trc_flags & TRC_CMD_DONE); + cmd->trc_flags |= TRC_CMD_DONE; INIT_WORK(&cmd->work, tcm_qla2xxx_complete_free); queue_work_on(smp_processor_id(), tcm_qla2xxx_free_wq, &cmd->work); @@ -315,7 +315,7 @@ static int tcm_qla2xxx_check_stop_free(struct se_cmd *se_cmd) if ((se_cmd->se_cmd_flags & SCF_SCSI_TMR_CDB) == 0) { cmd = container_of(se_cmd, struct qla_tgt_cmd, se_cmd); - cmd->cmd_flags |= BIT_14; + cmd->trc_flags |= TRC_CMD_CHK_STOP; } return target_put_sess_cmd(se_cmd); @@ -377,7 +377,7 @@ static int tcm_qla2xxx_write_pending(struct se_cmd *se_cmd) cmd->se_cmd.se_cmd_flags); return 0; } - cmd->cmd_flags |= BIT_3; + cmd->trc_flags |= TRC_XFR_RDY; cmd->bufflen = se_cmd->data_length; cmd->dma_data_direction = target_reverse_dma_direction(se_cmd); @@ -493,9 +493,9 @@ static void tcm_qla2xxx_handle_data_work(struct work_struct *work) cmd->cmd_in_wq = 0; spin_lock_irqsave(&cmd->cmd_lock, flags); - cmd->cmd_flags |= CMD_FLAG_DATA_WORK; + cmd->data_work = 1; if (cmd->aborted) { - cmd->cmd_flags |= CMD_FLAG_DATA_WORK_FREE; + cmd->data_work_free = 1; spin_unlock_irqrestore(&cmd->cmd_lock, flags); tcm_qla2xxx_free_cmd(cmd); @@ -532,7 +532,7 @@ static void tcm_qla2xxx_handle_data_work(struct work_struct *work) */ static void tcm_qla2xxx_handle_data(struct qla_tgt_cmd *cmd) { - cmd->cmd_flags |= BIT_10; + cmd->trc_flags |= TRC_DATA_IN; cmd->cmd_in_wq = 1; INIT_WORK(&cmd->work, tcm_qla2xxx_handle_data_work); queue_work_on(smp_processor_id(), tcm_qla2xxx_free_wq, &cmd->work); @@ -627,7 +627,7 @@ static int tcm_qla2xxx_queue_data_in(struct se_cmd *se_cmd) return 0; } - cmd->cmd_flags |= BIT_4; + cmd->trc_flags |= TRC_XMIT_DATA; cmd->bufflen = se_cmd->data_length; cmd->dma_data_direction = target_reverse_dma_direction(se_cmd); @@ -658,11 +658,11 @@ static int tcm_qla2xxx_queue_status(struct se_cmd *se_cmd) cmd->sg_cnt = 0; cmd->offset = 0; cmd->dma_data_direction = target_reverse_dma_direction(se_cmd); - if (cmd->cmd_flags & BIT_5) { - pr_crit("Bit_5 already set for cmd = %p.\n", cmd); + if (cmd->trc_flags & TRC_XMIT_STATUS) { + pr_crit("Multiple calls for status = %p.\n", cmd); dump_stack(); } - cmd->cmd_flags |= BIT_5; + cmd->trc_flags |= TRC_XMIT_STATUS; if (se_cmd->data_direction == DMA_FROM_DEVICE) { /* @@ -718,10 +718,7 @@ static void tcm_qla2xxx_queue_tm_rsp(struct se_cmd *se_cmd) qlt_xmit_tm_rsp(mcmd); } - -#define DATA_WORK_NOT_FREE(_flags) \ - (( _flags & (CMD_FLAG_DATA_WORK|CMD_FLAG_DATA_WORK_FREE)) == \ - CMD_FLAG_DATA_WORK) +#define DATA_WORK_NOT_FREE(_cmd) (_cmd->data_work && !_cmd->data_work_free) static void tcm_qla2xxx_aborted_task(struct se_cmd *se_cmd) { struct qla_tgt_cmd *cmd = container_of(se_cmd, @@ -733,13 +730,13 @@ static void tcm_qla2xxx_aborted_task(struct se_cmd *se_cmd) spin_lock_irqsave(&cmd->cmd_lock, flags); if ((cmd->state == QLA_TGT_STATE_NEW)|| - ((cmd->state == QLA_TGT_STATE_DATA_IN) && - DATA_WORK_NOT_FREE(cmd->cmd_flags)) ) { - - cmd->cmd_flags |= CMD_FLAG_DATA_WORK_FREE; + ((cmd->state == QLA_TGT_STATE_DATA_IN) && + DATA_WORK_NOT_FREE(cmd))) { + cmd->data_work_free = 1; spin_unlock_irqrestore(&cmd->cmd_lock, flags); - /* Cmd have not reached firmware. - * Use this trigger to free it. */ + /* + * cmd has not reached fw, Use this trigger to free it. + */ tcm_qla2xxx_free_cmd(cmd); return; }