aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/qla2xxx/qla_os.c
diff options
context:
space:
mode:
authorAndrew Vasquez <andrew.vasquez@qlogic.com>2008-01-17 12:02:17 -0500
committerJames Bottomley <James.Bottomley@HansenPartnership.com>2008-01-23 12:29:32 -0500
commitdf613b96077cee826b14089ae6e75eeabf71faa3 (patch)
tree262f0b96f1dc94da58f837e5446b02da52d80471 /drivers/scsi/qla2xxx/qla_os.c
parent00b6bd25166e2a4bad23c614c10c55993bb2489e (diff)
[SCSI] qla2xxx: Add Fibre Channel Event (FCE) tracing support.
FCE support enables the firmware to record FC extended link services and basic link services frames which have been transmitted and received by the ISP. This allows for a limited view of the FC traffic through the ISP without using a FC analyzer. This can be useful in situations where a physical connection to the FC bus is not possible. The driver exports this information in two ways -- first, via a debugfs node exported for all supported ISPs under: <debugfs_mount_point>/qla2xxx/qla2xxx_<host_no>/fce where a read of the 'fce' file will provide a snapshot of the firmware's FCE buffer; and finally, the FCE buffer will be extracted during a firmware-dump scenario. Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
Diffstat (limited to 'drivers/scsi/qla2xxx/qla_os.c')
-rw-r--r--drivers/scsi/qla2xxx/qla_os.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/drivers/scsi/qla2xxx/qla_os.c b/drivers/scsi/qla2xxx/qla_os.c
index 63938d74a571..8d1408e18efd 100644
--- a/drivers/scsi/qla2xxx/qla_os.c
+++ b/drivers/scsi/qla2xxx/qla_os.c
@@ -1791,6 +1791,8 @@ qla2x00_probe_one(struct pci_dev *pdev, const struct pci_device_id *id)
1791 1791
1792 qla2x00_init_host_attr(ha); 1792 qla2x00_init_host_attr(ha);
1793 1793
1794 qla2x00_dfs_setup(ha);
1795
1794 qla_printk(KERN_INFO, ha, "\n" 1796 qla_printk(KERN_INFO, ha, "\n"
1795 " QLogic Fibre Channel HBA Driver: %s\n" 1797 " QLogic Fibre Channel HBA Driver: %s\n"
1796 " QLogic %s - %s\n" 1798 " QLogic %s - %s\n"
@@ -1822,6 +1824,8 @@ qla2x00_remove_one(struct pci_dev *pdev)
1822 1824
1823 ha = pci_get_drvdata(pdev); 1825 ha = pci_get_drvdata(pdev);
1824 1826
1827 qla2x00_dfs_remove(ha);
1828
1825 qla2x00_free_sysfs_attr(ha); 1829 qla2x00_free_sysfs_attr(ha);
1826 1830
1827 fc_remove_host(ha->host); 1831 fc_remove_host(ha->host);
@@ -1855,6 +1859,9 @@ qla2x00_free_device(scsi_qla_host_t *ha)
1855 kthread_stop(t); 1859 kthread_stop(t);
1856 } 1860 }
1857 1861
1862 if (ha->flags.fce_enabled)
1863 qla2x00_disable_fce_trace(ha, NULL, NULL);
1864
1858 if (ha->eft) 1865 if (ha->eft)
1859 qla2x00_disable_eft_trace(ha); 1866 qla2x00_disable_eft_trace(ha);
1860 1867
@@ -2212,6 +2219,10 @@ qla2x00_mem_free(scsi_qla_host_t *ha)
2212 /* free sp pool */ 2219 /* free sp pool */
2213 qla2x00_free_sp_pool(ha); 2220 qla2x00_free_sp_pool(ha);
2214 2221
2222 if (ha->fce)
2223 dma_free_coherent(&ha->pdev->dev, FCE_SIZE, ha->fce,
2224 ha->fce_dma);
2225
2215 if (ha->fw_dump) { 2226 if (ha->fw_dump) {
2216 if (ha->eft) 2227 if (ha->eft)
2217 dma_free_coherent(&ha->pdev->dev, 2228 dma_free_coherent(&ha->pdev->dev,