From patchwork Thu Feb 2 19:42:28 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Madhani, Himanshu" X-Patchwork-Id: 9553151 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 4C4E8604A7 for ; Thu, 2 Feb 2017 19:58:48 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 3EAB628491 for ; Thu, 2 Feb 2017 19:58:48 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 332122849D; Thu, 2 Feb 2017 19:58:48 +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 4344F28497 for ; Thu, 2 Feb 2017 19:58:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751743AbdBBT6n (ORCPT ); Thu, 2 Feb 2017 14:58:43 -0500 Received: from mail-bn3nam01on0058.outbound.protection.outlook.com ([104.47.33.58]:42720 "EHLO NAM01-BN3-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1751727AbdBBT6m (ORCPT ); Thu, 2 Feb 2017 14:58:42 -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=GKWgVGlclOyWE0yL+woLVWt626E4DIt8U4f6xYHwgzU=; b=Q9WiN+Zd+bVtYsOhmOZk9jqgbx+XjSD8Fw8uqikNSfW4i8QOSgmwMmknLz4oiDEhsXC1fdq/ZsH0yX0Fao2EwP+t/5XhL7ccx5xUBIbpEEZfTyOnvsuQZbZElPKj17bdLDDjKaPoNLtio+D90Jpqp6eq8AjmjHSAW8SE1yu8d5U= Received: from SN1PR0701CA0080.namprd07.prod.outlook.com (10.163.126.48) by SN1PR0701MB2093.namprd07.prod.outlook.com (10.163.132.28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.860.13; Thu, 2 Feb 2017 19:43:17 +0000 Received: from BY2FFO11FD003.protection.gbl (2a01:111:f400:7c0c::122) by SN1PR0701CA0080.outlook.office365.com (2a01:111:e400:52fd::48) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.888.16 via Frontend Transport; Thu, 2 Feb 2017 19:43: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 BY2FFO11FD003.mail.protection.outlook.com (10.1.14.125) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA_P384) id 15.1.874.2 via Frontend Transport; Thu, 2 Feb 2017 19:43:16 +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, 2 Feb 2017 11:43:08 -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 v12Jgs35000416; Thu, 2 Feb 2017 11:42:54 -0800 Received: (from root@localhost) by dut1171.mv.qlogic.com (8.14.7/8.14.7/Submit) id v12Jgs0o000415; Thu, 2 Feb 2017 11:42:54 -0800 From: Himanshu Madhani To: , , , CC: , , Subject: [PATCH 05/15] qla2xxx: Add DebugFS node to display Port Database Date: Thu, 2 Feb 2017 11:42:28 -0800 Message-ID: <1486064558-365-6-git-send-email-himanshu.madhani@cavium.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1486064558-365-1-git-send-email-himanshu.madhani@cavium.com> References: <1486064558-365-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)(36756003)(47776003)(69596002)(50466002)(5003940100001)(1691005)(92566002)(105586002)(8936002)(81156014)(305945005)(50226002)(80596001)(54906002)(106466001)(48376002)(81166006)(4001430100002)(8676002)(6666003)(356003)(8656002)(4326007)(4720700003)(86362001)(626004)(107886002)(38730400001)(2950100002)(2201001)(33646002)(76176999)(2906002)(42186005)(5660300001)(189998001)(5001770100001)(50986999)(101416001)(87636001); DIR:OUT; SFP:1101; SCL:1; SRVR:SN1PR0701MB2093; 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; BY2FFO11FD003; 1:hS4UNP+/F4kNCgSVTn6NW+cBpH/ycnwaJXRzAxGxE/HF/48jYfmRgUgfu7dAP15ZA+RpBj7PSblA1dFKtLu8/AODDJZAFMuAJoMIvC6Il8A3bAqg/ZJ/msGPKA+d9SEqUqwkkoLEYLS/VH1hIuMrArq0FOp2NIGGVt97GH/6Riy3+ElGoJOJWtzv4A5LuhYlLCM/Luawzme1mRWpHrxUkLuocS8aR366vKBw0BffwRRxP9bgzYZ9v4+L4wWowIMojZdNoJbA66gAuiJweon67uy8jB3tB1BG/ul+q+POZdAHj0RVZ4ZA2hyAdGUU57AsP46frNefpvnQz/u04iTigRO0NVDYs9mvgZdfxmhKgpviPcnjOGXiEPZda9L8Pg8HzrekvHHRlZ8CYX23zt5mHWYmCJB320lpTnYI5IVcA/aAFfe7T/2nJQxrSVORKd8eDJe7ELo0sSK9oNxgVdLIyVNnl5eE/5IOR2RNSp0VGOr79/Q4DVNf09v1sGcRWCMIUqMZLX5+LQuTD5iOpHOc64a7WqQ6G7LLTWznCSOloE4= X-MS-Office365-Filtering-Correlation-Id: 4fa8e155-b50f-40d8-9109-08d44ba3bc08 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:SN1PR0701MB2093; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2093; 3:AcGC/+0K8p1AxahGJmErU1Qg0Xv7iZq1p/ZbjMT4NOoIWqymQBYBagBwO1/9B/H7ZfbLbvNoe1I0aH5i5gXg50ydoVr2qQ1jFTWlCtH+RhwC65AlKDXk2SeX+jrJFNPqkidy17VpUY2/7IQIqpCuwofUN46+xxhmyhTWS1mY48tpMLaJgrGo9LhuRbWp0Wak9IZgmdPfS9YDALXIafX+46wSQZ+pX4gvrDLYs32wQEeALh4PPjEv5bPt8KMibl66BtSO69zz7hsZITUCq6C/1IZyhU/FdCJVDD+7JRnNhippm8GzmYiO55fcoh6hP5Xcc+1PKOvLlPX310Ya3Fp7vQAMge8dAGVNUVzuRCIiM1AeVic9R9IVcZMS8wYYBGg5; 25:TyK/PqJECY2H/uhf/idI2U0q5tJXNJ1zu6kEwbgjBa3Iy4M/SluNG56pCVXCXITm8gmcgufTUT0XWR6GdYa6bQaGOG8sIjc0XNJT/5Erbvu/U+H+B7Mmpy6GPBLWNAiSQydoRawEnHZcttaAFJNxhysghj/7qUV5e1wifwj7WY5qDePy7zVU2FXM7UJnl9khf2fy9KcLjZcGYWOQZz1Kh81qISFpqfHzOdB/XfcYke8Ake3CjRWg2u2MPdSudysg1saSSVZ0SKQ2itbw1oEJc2wq5gipKsD1uk0Tm3LPBg9Dg7/ZAssc8bK0W1H92V2s3wlpsGnOVzPt+/UpTCKH/fZm9rNgfE+VDu6kXkbYkIe2ZU4RdP0h9jmPYZGJdfMGAAZ4/9yt3joPoiEZveNJ8WbgkFsbrNA23LRvp/i34IXG82WAqbkXum80d6CcaMQd7CcekCdr2zsfsY+avXP+GA== X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2093; 31:SI6VgTgpsyPLde0sPuwcW7XcJuRyXJYVvD/3rr2tboByaypp517JnEHRyvNvIhdKIDTsf9yCXtqZ+fYFDr3IE5MDCrlGe7yihQVgL/xsZz9whkRByb9r6eFHjIAv5CED971opdl4f9aPIWPQowd2eZEQVlLwCfukxTQ66hcWLL5I20reBuMJP+k7SZzI2A6/jDGqPXlc5wLAlUGvYf9t1VYDvTxiuCeYZWPIV4VCVRu6UiuNBE8UB4Bfj2wtDwHtQvLn2W/g1qzssWazzNEVew==; 20:lEODTO7bZKapGJYKYxOZx+q/MqxoNGYAIxYG2MCMbeBoIgrmsBJ3NOk7XOnQ7QR+rAQkihEPtqSnBjS+xRAXHUhzzstJgUCSvLDl5uQRhQtjh9ztOkpnAU576Erc7pusDhXIDkDJLH875YqkpAO6/EEtH0uP9hvnR9A3pqSz2qJJBjSatljfiDRGTuDCWjALoWyo5NscbiXOjtfLPvmD0dce3rjV7IXkgNCTSnQYSni6CBE9oQQBGDcMafUblYKei0vg24/HP8gFdMKhSXg/g9Aj9wMgnHQQRtlJyIFKb6ylvPQhCwWkSUqTb3ssVz56CRv8aDrJCVPE4fWd6rd8H8SswH9k14r6JufwMZRrtMD0NLy5RB1pzbhmIK9FONWe+2XxmdjXHTLBDkUxM02FeeN2w72ilWC66buTvRUEMArmdel7r6NRG5y3OmujnqONPKpnwCyzmTMDWUaeafNP8Tp3Z2IdYbsjtVPhvma1Fxb8pu9+I//McGu2VoRGAeWV X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:; X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(8121501046)(5005006)(13023025)(13017025)(13015025)(13018025)(13024025)(3002001)(10201501046)(6041248)(20161123555025)(20161123558025)(20161123564025)(20161123562025)(20161123560025)(6072148); SRVR:SN1PR0701MB2093; BCL:0; PCL:0; RULEID:; SRVR:SN1PR0701MB2093; X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2093; 4:gRJxprkXX3uJ4pU657DUkR/sm4oNrXt3JvFyoqz/CzK1Ba6keFH4RuF3enTZb0SJT3PC/Erzv0qo4Vcx3NW530UBZXrEmFaMAGUCmmc1uuGM/gkQFJSu0N8rKWW+bMzzFzWpff9R/oa3LJxG2SCxA3ibsiMVY8AVCrHEr/zy6Zem3egQlCZpFHMLNXopO9dWPw3RXRQQ6DvD3GNMQ2LIW/sqi4v0fA5LnGe9BN3oQK6wxthHF65aXQxoy89RaNWEAGjYGhxux8pkwn2+mlPZBc1M+NBPuXs6Hy2+fblBdRvmHpsxCozWwqXk+qf9fK4115UEHdIe66OEk+OQXqhkh1NCWtxEPPgllPRB0zwTC9EhVM9MHWrrzOraTjrvBrk7fqCEOumwpQyz/lkrAq6mWSiHwutEaDjdaJ0SQWE/ywpulei+GVSLh/OQjCmo/2P+NKZk00dFJAylh+b6WKaF575Uai4WHDWWSbqQVosGpSa1448QBcD97CPpK2SOUl4SSvQk/43NN+MZLwtz4Q5RifnKp0+4k65xRTe34g/vtlbJ9EEJjPdLe+o6R2YXIZbGs9q7p1gV2nsltVd/RkUKUXfBaIONdCIhPw0dmBUlMv/DzR5TudgDlRNbw73U5ziYNPImbQI7tuGxqjslQmgEgBBn7mutq8PYjYi9IAhrj18sWplqPTFXrPX1AszO3m4J6jafgJgR1QMc3R/lc8xwOA== X-Forefront-PRVS: 02065A9E77 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; SN1PR0701MB2093; 23:XfnLwPS0wcfYYmE0/dZ3oy39F9rCbxAenPox/43?= =?us-ascii?Q?L3sa+3XxbS/xQKkzOnmRvl3yfbDEFa+W5YfZY4TA7C/5ci5FjQUqyxzl4zQH?= =?us-ascii?Q?uHjf+IKERz3kqahP8lpijS5kila14jMXm2WnYxrknaT8Tf7rdmtY8Md6YxKo?= =?us-ascii?Q?osvsbVAtux7UOqlmrD1nO0mxU6yYl2sRa7AbWVIuY1aoagiotWGartKgsxlS?= =?us-ascii?Q?dyMjeOizisVEOgdeSK6Pge3ZwUOwTdC4i0I303sVWGFBPrw4iMPMW2FXWCB2?= =?us-ascii?Q?yNN0Ic8GbKKXOcrHrODAYOeiRD3gCF+/bJpLAiqyAreqSkw/7hIqDgEPmvHj?= =?us-ascii?Q?2U0jAN1S2L5TsGSQTtba433PQhPW/B2jNZ7zPOUrs5VEj02vXNuzzXdc2ZTy?= =?us-ascii?Q?BYOcq+bS2bM/zXEFYyzWYNWYociuvHrDY7eA5mO3MchLz8JuJRIYQjD0Wtru?= =?us-ascii?Q?QmDxdUpqlBmAKYakdFTNbeq+4qlStSK7YbmYPjgp24fy5sEuvVkD2ojXhi4V?= =?us-ascii?Q?IxQ2I3oqhFkteayWLmg3E/Xui9g5QwtovFidT+8QkJPor1V8Bo8oSUjJXhrZ?= =?us-ascii?Q?79vS7oYoxR9vmo1+J/2qsNGUK6oWEf7PEzhI2JXiMYjU/aPb6Rd3zDFFg9bJ?= =?us-ascii?Q?sGv18E0eiEGNDayYO+BF7k3fE2zUD6ZoS+TG3M0/2jJ0A0p0RTPrSaQUp99X?= =?us-ascii?Q?+UAxJWhpg815Lp4IBb4ziYLSHerijriDrVEG/udCqyRT89ojs69Z++UTWH3K?= =?us-ascii?Q?0InhLXJ9Q3kJSXA5kh0YvWQxbHe0bGhNU5Lk+aTtnb4BrYC6I7y7+ufZkdLi?= =?us-ascii?Q?njV1pxZibRbM8aOblvSodwjcd6YoirZO2ZYDXHAgD1BzFCWkQP4hAj3mB4Wi?= =?us-ascii?Q?/w2h1kZAJ9lDxp0fPQ1tKK83bRgUczbVVUvNsy4Zi75R+7Ue4erFMgAnM3Ts?= =?us-ascii?Q?zUScb7IVoRKonnbpJ9m2Roua4Y6+5Nf/6NmEiSyPRWFLjxp5raa8q/+PYMGb?= =?us-ascii?Q?vspu1kKN2jEumKaPk5ZwQSKBcev+8UziWaML2JL3CAEmzPWY8zppStpjQ9AJ?= =?us-ascii?Q?Bd4+iybM4HyjXpMiTilHrdfa3X1srHQiuctddpd/zorjy0BOl0NxOCb9rnXy?= =?us-ascii?Q?DedRgFcE8tAx7w/8lJ6C5Pwy0aQL+TBDmadLVZI59nPP6yTn5Su1r3A=3D?= =?us-ascii?Q?=3D?= X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2093; 6:xLisYYxUDm9WowBItf7F1WqBJw4oHgJ+5VH7E3YFx/atMqlvhoPG/B80+zgF7Z9uSXgPBa2DoCAP5SRrYuKciP29DX8W1f64B0ea7XQMIkMiabN/zZbuDOgj/4gw7uCCQIs26t5kEM7rz3cSf92TLLzdIHNG2P/KypN0tKe5KOe6UP9Ncz8ZdJnBCggkuPqp26pShVTorjGyH3CeTZsrptSfQPN2xJS2lw8i2dOGf29asnRCwehaUFvd64imzGP+3VMekDzTljUyhJgcw0ogRvn2RY3V89+ZxvJ6BYE1Y3l9aaF+U0giGVRh/WJ2NZAB7ITVQmhf8XB0omAu+fHA8qtQob3C+D3jX0NmMh3pD2U7B5hDnsNTZBZEg88EetmtT2kSo0oEONtqrw3S+qDCxg==; 5:pWyCBWMp1Sy/S1rJzmjpwiXAI7oDNZS4hPAneJqVQJQo2avmEo3ZnkmMBStGBmxN6JKhC+ezYbQ/5XFJli8X7fTLV8h7c7jcApCwlcMl0SjJcxMkM/dERC+oLhX5dDRPHF8kcv9Sp4T5Q6Lve+zeDyFitZOIJob2bNzdplzVHhA=; 24:dLrQcqpxHE0sWcucbIS/ldUmtX89hLDAkoqNfocOGH22DJrtVN57hi8KGy34iSRT1keh0q4agTSlql7Hiqc8Hy7/Ccaxz5gXTrXx4WcWG98= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; SN1PR0701MB2093; 7:no6cm3JZleAXdK5QDNPSkXXovJeCD/Qz5JVQFbVTWJVjsXDo9J0Th6aa3+iLxVJLudOlQtZDZH79ag9316L9aeC+r5ybJ4M8143h8DVgyUVkGYJP/jPYPYQdyJC/6Z1VK9SY2vjbTjnvICXFFq4PCbVmDZTD05TllgC6qGQc8WlnCw0dcoEv7PANAFei8AxtlhkGx5t+zkWYyq1mIc34zQT873/Riex1P1p2njW2MWozgkfO38Zrdd8dWkUfZoMHwmMtORcplYhozykkKOSw3w1MwbX2N+6lqApI8OeOw2u98pscrCoYt4DpZmy8QCM4J0VnzhHXG8UuYRHc+FHAWHDW1OOzqOiJ3aiBTPmv778DhFxR4QvhbqZigF4kq9+iL6dAhwydyJEcrI69nR24ggPbqTmO31iVRLH/3lkjMW7HxIyLvWhLM0fRl9ssug1zInEhl2CidyptC1Pp4HM06+Odzfewkpmtf5gkV+NICNWwUE8y++0l+QL42Sbcfe6QvUdoG1nLTzCAW3LOYjs1Pw== X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2017 19:43:16.9861 (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: SN1PR0701MB2093 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 --- drivers/scsi/qla2xxx/qla_def.h | 2 + drivers/scsi/qla2xxx/qla_dfs.c | 92 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 90 insertions(+), 4 deletions(-) diff --git a/drivers/scsi/qla2xxx/qla_def.h b/drivers/scsi/qla2xxx/qla_def.h index 2825204..46fbef8 100644 --- a/drivers/scsi/qla2xxx/qla_def.h +++ b/drivers/scsi/qla2xxx/qla_def.h @@ -3279,6 +3279,8 @@ struct qlt_hw_data { uint8_t tgt_node_name[WWN_SIZE]; struct dentry *dfs_tgt_sess; + struct dentry *dfs_tgt_port_database; + struct list_head q_full_list; uint32_t num_pend_cmds; uint32_t num_qfull_cmds_alloc; diff --git a/drivers/scsi/qla2xxx/qla_dfs.c b/drivers/scsi/qla2xxx/qla_dfs.c index b48cce6..0fb33e6 100644 --- a/drivers/scsi/qla2xxx/qla_dfs.c +++ b/drivers/scsi/qla2xxx/qla_dfs.c @@ -19,11 +19,11 @@ struct qla_hw_data *ha = vha->hw; unsigned long flags; struct fc_port *sess = NULL; - struct qla_tgt *tgt= vha->vha_tgt.qla_tgt; + struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; - seq_printf(s, "%s\n",vha->host_str); + seq_printf(s, "%s\n", vha->host_str); if (tgt) { - seq_printf(s, "Port ID Port Name Handle\n"); + seq_puts(s, "Port ID Port Name Handle\n"); spin_lock_irqsave(&ha->tgt.sess_lock, flags); list_for_each_entry(sess, &vha->vp_fcports, list) @@ -44,7 +44,6 @@ return single_open(file, qla2x00_dfs_tgt_sess_show, vha); } - static const struct file_operations dfs_tgt_sess_ops = { .open = qla2x00_dfs_tgt_sess_open, .read = seq_read, @@ -53,6 +52,78 @@ }; static int +qla2x00_dfs_tgt_port_database_show(struct seq_file *s, void *unused) +{ + scsi_qla_host_t *vha = s->private; + struct qla_hw_data *ha = vha->hw; + struct gid_list_info *gid_list; + dma_addr_t gid_list_dma; + fc_port_t fc_port; + char *id_iter; + int rc, i; + uint16_t entries, loop_id; + struct qla_tgt *tgt = vha->vha_tgt.qla_tgt; + + seq_printf(s, "%s\n", vha->host_str); + if (tgt) { + gid_list = dma_alloc_coherent(&ha->pdev->dev, + qla2x00_gid_list_size(ha), + &gid_list_dma, GFP_KERNEL); + if (!gid_list) { + ql_dbg(ql_dbg_user, vha, 0x705c, + "DMA allocation failed for %u\n", + qla2x00_gid_list_size(ha)); + return 0; + } + + rc = qla24xx_gidlist_wait(vha, gid_list, gid_list_dma, + &entries); + if (rc != QLA_SUCCESS) + goto out_free_id_list; + + id_iter = (char *)gid_list; + + seq_puts(s, "Port Name Port ID Loop ID\n"); + + for (i = 0; i < entries; i++) { + struct gid_list_info *gid = + (struct gid_list_info *)id_iter; + loop_id = le16_to_cpu(gid->loop_id); + memset(&fc_port, 0, sizeof(fc_port_t)); + + fc_port.loop_id = loop_id; + + rc = qla24xx_gpdb_wait(vha, &fc_port, 0); + seq_printf(s, "%8phC %02x%02x%02x %d\n", + fc_port.port_name, fc_port.d_id.b.domain, + fc_port.d_id.b.area, fc_port.d_id.b.al_pa, + fc_port.loop_id); + id_iter += ha->gid_list_info_size; + } +out_free_id_list: + dma_free_coherent(&ha->pdev->dev, qla2x00_gid_list_size(ha), + gid_list, gid_list_dma); + } + + return 0; +} + +static int +qla2x00_dfs_tgt_port_database_open(struct inode *inode, struct file *file) +{ + scsi_qla_host_t *vha = inode->i_private; + + return single_open(file, qla2x00_dfs_tgt_port_database_show, vha); +} + +static const struct file_operations dfs_tgt_port_database_ops = { + .open = qla2x00_dfs_tgt_port_database_open, + .read = seq_read, + .llseek = seq_lseek, + .release = single_release, +}; + +static int qla_dfs_fw_resource_cnt_show(struct seq_file *s, void *unused) { struct scsi_qla_host *vha = s->private; @@ -281,6 +352,14 @@ goto out; } + ha->tgt.dfs_tgt_port_database = debugfs_create_file("tgt_port_database", + S_IRUSR, ha->dfs_dir, vha, &dfs_tgt_port_database_ops); + if (!ha->tgt.dfs_tgt_port_database) { + ql_log(ql_log_warn, vha, 0xffff, + "Unable to create debugFS tgt_port_database node.\n"); + goto out; + } + ha->dfs_fce = debugfs_create_file("fce", S_IRUSR, ha->dfs_dir, vha, &dfs_fce_ops); if (!ha->dfs_fce) { @@ -311,6 +390,11 @@ ha->tgt.dfs_tgt_sess = NULL; } + if (ha->tgt.dfs_tgt_port_database) { + debugfs_remove(ha->tgt.dfs_tgt_port_database); + ha->tgt.dfs_tgt_port_database = NULL; + } + if (ha->dfs_fw_resource_cnt) { debugfs_remove(ha->dfs_fw_resource_cnt); ha->dfs_fw_resource_cnt = NULL;