summaryrefslogtreecommitdiffstats
path: root/drivers/scsi/bfa/bfad.c
diff options
context:
space:
mode:
authorJing Huang <huangj@brocade.com>2010-07-08 20:02:55 -0700
committerJames Bottomley <James.Bottomley@suse.de>2010-07-27 12:04:32 -0500
commitab2a9ba189e889b3e8990e52e90d2cd9606b2aa1 (patch)
tree0114a0fcb8caf0daee0fa23a8d9b788ad1eef0f2 /drivers/scsi/bfa/bfad.c
parent08a17ced7a78064f4f03de7d68b8cd32581f0510 (diff)
[SCSI] bfa: add debugfs support
- Add debugfs support to obtain firmware trace, driver trace and read/write to registers. - debugfs hierarchy: /sys/kernel/debug/bfa/host# where the host number corresponds to the one under /sys/class/scsi_host/host# - Following are the new debugfs entries added: drvtrc: collect current driver trace fwtrc: collect current firmware trace. fwsave: collect last saved fw trace as a result of firmware crash. regwr: write one word to chip register regrd: read one or more words from chip register. Signed-off-by: Jing Huang <huangj@brocade.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/bfa/bfad.c')
-rw-r--r--drivers/scsi/bfa/bfad.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index a17800e6277..915a29d6c7a 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -57,6 +57,7 @@ static int ipfc_enable = BFA_FALSE;
static int fdmi_enable = BFA_TRUE;
int bfa_lun_queue_depth = BFAD_LUN_QUEUE_DEPTH;
int bfa_linkup_delay = -1;
+int bfa_debugfs_enable = 1;
module_param(os_name, charp, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(os_name, "OS name of the hba host machine");
@@ -106,6 +107,9 @@ MODULE_PARM_DESC(bfa_linkup_delay, "Link up delay, default=30 secs for boot"
module_param(fdmi_enable, int, S_IRUGO | S_IWUSR);
MODULE_PARM_DESC(fdmi_enable, "Enables fdmi registration, default=1,"
" Range[false:0|true:1]");
+module_param(bfa_debugfs_enable, int, S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(bfa_debugfs_enable, "Enables debugfs feature, default=1,"
+ " Range[false:0|true:1]");
/*
* Stores the module parm num_sgpgs value;
@@ -903,6 +907,10 @@ bfad_cfg_pport(struct bfad_s *bfad, enum bfa_port_role role)
bfad->pport.roles |= BFA_PORT_ROLE_FCP_IM;
}
+ /* Setup the debugfs node for this scsi_host */
+ if (bfa_debugfs_enable)
+ bfad_debugfs_init(&bfad->pport);
+
bfad->bfad_flags |= BFAD_CFG_PPORT_DONE;
out:
@@ -912,6 +920,10 @@ out:
void
bfad_uncfg_pport(struct bfad_s *bfad)
{
+ /* Remove the debugfs node for this scsi_host */
+ kfree(bfad->regdata);
+ bfad_debugfs_exit(&bfad->pport);
+
if ((bfad->pport.roles & BFA_PORT_ROLE_FCP_IPFC) && ipfc_enable) {
bfad_ipfc_port_delete(bfad, &bfad->pport);
bfad->pport.roles &= ~BFA_PORT_ROLE_FCP_IPFC;