aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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