diff options
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.c | 15 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.c | 18 | ||||
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_ctl.h | 4 |
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); | |||
78 | MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)"); | 78 | MODULE_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 | */ |
86 | static int diag_buffer_enable; | 87 | static int diag_buffer_enable; |
87 | module_param(diag_buffer_enable, int, 0); | 88 | module_param(diag_buffer_enable, int, 0); |
88 | MODULE_PARM_DESC(diag_buffer_enable, " enable diag buffer at driver load " | 89 | MODULE_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 | ||
91 | int mpt2sas_fwfault_debug; | 92 | int mpt2sas_fwfault_debug; |
92 | MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " | 93 | MODULE_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 |