aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorKashyap, Desai <kashyap.desai@lsi.com>2009-09-23 07:58:59 -0400
committerJames Bottomley <James.Bottomley@suse.de>2009-10-29 13:03:11 -0400
commit1b01fe3aa58b114b2dc296676023451c6434561e (patch)
tree6e300762006abc6accd43d5403298ded28b6679b /drivers
parent32e0eb569df09a8cb790cf370ee498721d88e5c6 (diff)
[SCSI] mpt2sas: Add Extended Type for Diagnostic Buffer support
Added tests for registry entries of EXBuffSize, EXImmed, and EXType to support the new Extended diag buffer type. Modified code where necessary to handle the new ExtendedType field in the F/W diagnostic Post and Release messages. Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com> Signed-off-by: Eric Moore <Eric.moore@lsi.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_base.c15
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.c18
-rw-r--r--drivers/scsi/mpt2sas/mpt2sas_ctl.h4
3 files changed, 29 insertions, 8 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.c b/drivers/scsi/mpt2sas/mpt2sas_base.c
index 1d2374b5a0a1..935cfc769cb6 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_base.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_base.c
@@ -78,15 +78,16 @@ module_param(msix_disable, int, 0);
78MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)"); 78MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)");
79 79
80/* diag_buffer_enable is bitwise 80/* diag_buffer_enable is bitwise
81 * bit 0 set = MPI2_DIAG_BUF_TYPE_TRACE(1) 81 * bit 0 set = TRACE
82 * bit 1 set = MPI2_DIAG_BUF_TYPE_SNAPSHOT(2) 82 * bit 1 set = SNAPSHOT
83 * bit 2 set = EXTENDED
83 * 84 *
84 * Either bit can be set, or both 85 * Either bit can be set, or both
85 */ 86 */
86static int diag_buffer_enable; 87static int diag_buffer_enable;
87module_param(diag_buffer_enable, int, 0); 88module_param(diag_buffer_enable, int, 0);
88MODULE_PARM_DESC(diag_buffer_enable, " enable diag buffer at driver load " 89MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers "
89 "time (TRACE=1/SNAP=2/default=0)"); 90 "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)");
90 91
91int mpt2sas_fwfault_debug; 92int mpt2sas_fwfault_debug;
92MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " 93MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault "
@@ -1765,6 +1766,12 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
1765 } 1766 }
1766 1767
1767 if (ioc->facts.IOCCapabilities & 1768 if (ioc->facts.IOCCapabilities &
1769 MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER) {
1770 printk(KERN_INFO "%sDiag Extended Buffer", i ? "," : "");
1771 i++;
1772 }
1773
1774 if (ioc->facts.IOCCapabilities &
1768 MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING) { 1775 MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING) {
1769 printk("%sTask Set Full", i ? "," : ""); 1776 printk("%sTask Set Full", i ? "," : "");
1770 i++; 1777 i++;
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.c b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
index 99a332d76f51..8dfc5f6a39b0 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.c
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.c
@@ -1230,7 +1230,7 @@ _ctl_btdh_mapping(void __user *arg)
1230/** 1230/**
1231 * _ctl_diag_capability - return diag buffer capability 1231 * _ctl_diag_capability - return diag buffer capability
1232 * @ioc: per adapter object 1232 * @ioc: per adapter object
1233 * @buffer_type: specifies either TRACE or SNAPSHOT 1233 * @buffer_type: specifies either TRACE, SNAPSHOT, or EXTENDED
1234 * 1234 *
1235 * returns 1 when diag buffer support is enabled in firmware 1235 * returns 1 when diag buffer support is enabled in firmware
1236 */ 1236 */
@@ -1250,6 +1250,10 @@ _ctl_diag_capability(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type)
1250 MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER) 1250 MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER)
1251 rc = 1; 1251 rc = 1;
1252 break; 1252 break;
1253 case MPI2_DIAG_BUF_TYPE_EXTENDED:
1254 if (ioc->facts.IOCCapabilities &
1255 MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER)
1256 rc = 1;
1253 } 1257 }
1254 1258
1255 return rc; 1259 return rc;
@@ -1460,6 +1464,16 @@ mpt2sas_enable_diag_buffer(struct MPT2SAS_ADAPTER *ioc, u8 bits_to_register)
1460 diag_register.unique_id = 0x7075901; 1464 diag_register.unique_id = 0x7075901;
1461 _ctl_diag_register_2(ioc, &diag_register); 1465 _ctl_diag_register_2(ioc, &diag_register);
1462 } 1466 }
1467
1468 if (bits_to_register & 4) {
1469 printk(MPT2SAS_INFO_FMT "registering extended buffer support\n",
1470 ioc->name);
1471 diag_register.buffer_type = MPI2_DIAG_BUF_TYPE_EXTENDED;
1472 /* register for 2MB buffers */
1473 diag_register.requested_buffer_size = 2 * (1024 * 1024);
1474 diag_register.unique_id = 0x7075901;
1475 _ctl_diag_register_2(ioc, &diag_register);
1476 }
1463} 1477}
1464 1478
1465/** 1479/**
@@ -1652,7 +1666,7 @@ _ctl_diag_query(void __user *arg)
1652/** 1666/**
1653 * _ctl_send_release - Diag Release Message 1667 * _ctl_send_release - Diag Release Message
1654 * @ioc: per adapter object 1668 * @ioc: per adapter object
1655 * @buffer_type - specifies either TRACE or SNAPSHOT 1669 * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
1656 * @issue_reset - specifies whether host reset is required. 1670 * @issue_reset - specifies whether host reset is required.
1657 * 1671 *
1658 */ 1672 */
diff --git a/drivers/scsi/mpt2sas/mpt2sas_ctl.h b/drivers/scsi/mpt2sas/mpt2sas_ctl.h
index 211f296dd191..8a5eeb1a5c84 100644
--- a/drivers/scsi/mpt2sas/mpt2sas_ctl.h
+++ b/drivers/scsi/mpt2sas/mpt2sas_ctl.h
@@ -313,7 +313,7 @@ struct mpt2_ioctl_btdh_mapping {
313 * struct mpt2_diag_register - application register with driver 313 * struct mpt2_diag_register - application register with driver
314 * @hdr - generic header 314 * @hdr - generic header
315 * @reserved - 315 * @reserved -
316 * @buffer_type - specifies either TRACE or SNAPSHOT 316 * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
317 * @application_flags - misc flags 317 * @application_flags - misc flags
318 * @diagnostic_flags - specifies flags affecting command processing 318 * @diagnostic_flags - specifies flags affecting command processing
319 * @product_specific - product specific information 319 * @product_specific - product specific information
@@ -352,7 +352,7 @@ struct mpt2_diag_unregister {
352 * struct mpt2_diag_query - query relevant info associated with diag buffers 352 * struct mpt2_diag_query - query relevant info associated with diag buffers
353 * @hdr - generic header 353 * @hdr - generic header
354 * @reserved - 354 * @reserved -
355 * @buffer_type - specifies either TRACE or SNAPSHOT 355 * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
356 * @application_flags - misc flags 356 * @application_flags - misc flags
357 * @diagnostic_flags - specifies flags affecting command processing 357 * @diagnostic_flags - specifies flags affecting command processing
358 * @product_specific - product specific information 358 * @product_specific - product specific information