Commit 1b01fe3a authored by Kashyap, Desai's avatar Kashyap, Desai Committed by James Bottomley

[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: default avatarKashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: default avatarEric Moore <Eric.moore@lsi.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@suse.de>
parent 32e0eb56
...@@ -78,15 +78,16 @@ module_param(msix_disable, int, 0); ...@@ -78,15 +78,16 @@ module_param(msix_disable, int, 0);
MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)"); MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)");
/* diag_buffer_enable is bitwise /* diag_buffer_enable is bitwise
* bit 0 set = MPI2_DIAG_BUF_TYPE_TRACE(1) * bit 0 set = TRACE
* bit 1 set = MPI2_DIAG_BUF_TYPE_SNAPSHOT(2) * bit 1 set = SNAPSHOT
* bit 2 set = EXTENDED
* *
* Either bit can be set, or both * Either bit can be set, or both
*/ */
static int diag_buffer_enable; static int diag_buffer_enable;
module_param(diag_buffer_enable, int, 0); module_param(diag_buffer_enable, int, 0);
MODULE_PARM_DESC(diag_buffer_enable, " enable diag buffer at driver load " MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers "
"time (TRACE=1/SNAP=2/default=0)"); "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)");
int mpt2sas_fwfault_debug; int mpt2sas_fwfault_debug;
MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault " MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault "
...@@ -1764,6 +1765,12 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc) ...@@ -1764,6 +1765,12 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
i++; i++;
} }
if (ioc->facts.IOCCapabilities &
MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER) {
printk(KERN_INFO "%sDiag Extended Buffer", i ? "," : "");
i++;
}
if (ioc->facts.IOCCapabilities & if (ioc->facts.IOCCapabilities &
MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING) { MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING) {
printk("%sTask Set Full", i ? "," : ""); printk("%sTask Set Full", i ? "," : "");
......
...@@ -1230,7 +1230,7 @@ _ctl_btdh_mapping(void __user *arg) ...@@ -1230,7 +1230,7 @@ _ctl_btdh_mapping(void __user *arg)
/** /**
* _ctl_diag_capability - return diag buffer capability * _ctl_diag_capability - return diag buffer capability
* @ioc: per adapter object * @ioc: per adapter object
* @buffer_type: specifies either TRACE or SNAPSHOT * @buffer_type: specifies either TRACE, SNAPSHOT, or EXTENDED
* *
* returns 1 when diag buffer support is enabled in firmware * returns 1 when diag buffer support is enabled in firmware
*/ */
...@@ -1250,6 +1250,10 @@ _ctl_diag_capability(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type) ...@@ -1250,6 +1250,10 @@ _ctl_diag_capability(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type)
MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER) MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER)
rc = 1; rc = 1;
break; break;
case MPI2_DIAG_BUF_TYPE_EXTENDED:
if (ioc->facts.IOCCapabilities &
MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER)
rc = 1;
} }
return rc; return rc;
...@@ -1460,6 +1464,16 @@ mpt2sas_enable_diag_buffer(struct MPT2SAS_ADAPTER *ioc, u8 bits_to_register) ...@@ -1460,6 +1464,16 @@ mpt2sas_enable_diag_buffer(struct MPT2SAS_ADAPTER *ioc, u8 bits_to_register)
diag_register.unique_id = 0x7075901; diag_register.unique_id = 0x7075901;
_ctl_diag_register_2(ioc, &diag_register); _ctl_diag_register_2(ioc, &diag_register);
} }
if (bits_to_register & 4) {
printk(MPT2SAS_INFO_FMT "registering extended buffer support\n",
ioc->name);
diag_register.buffer_type = MPI2_DIAG_BUF_TYPE_EXTENDED;
/* register for 2MB buffers */
diag_register.requested_buffer_size = 2 * (1024 * 1024);
diag_register.unique_id = 0x7075901;
_ctl_diag_register_2(ioc, &diag_register);
}
} }
/** /**
...@@ -1652,7 +1666,7 @@ _ctl_diag_query(void __user *arg) ...@@ -1652,7 +1666,7 @@ _ctl_diag_query(void __user *arg)
/** /**
* _ctl_send_release - Diag Release Message * _ctl_send_release - Diag Release Message
* @ioc: per adapter object * @ioc: per adapter object
* @buffer_type - specifies either TRACE or SNAPSHOT * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
* @issue_reset - specifies whether host reset is required. * @issue_reset - specifies whether host reset is required.
* *
*/ */
......
...@@ -313,7 +313,7 @@ struct mpt2_ioctl_btdh_mapping { ...@@ -313,7 +313,7 @@ struct mpt2_ioctl_btdh_mapping {
* struct mpt2_diag_register - application register with driver * struct mpt2_diag_register - application register with driver
* @hdr - generic header * @hdr - generic header
* @reserved - * @reserved -
* @buffer_type - specifies either TRACE or SNAPSHOT * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
* @application_flags - misc flags * @application_flags - misc flags
* @diagnostic_flags - specifies flags affecting command processing * @diagnostic_flags - specifies flags affecting command processing
* @product_specific - product specific information * @product_specific - product specific information
...@@ -352,7 +352,7 @@ struct mpt2_diag_unregister { ...@@ -352,7 +352,7 @@ struct mpt2_diag_unregister {
* struct mpt2_diag_query - query relevant info associated with diag buffers * struct mpt2_diag_query - query relevant info associated with diag buffers
* @hdr - generic header * @hdr - generic header
* @reserved - * @reserved -
* @buffer_type - specifies either TRACE or SNAPSHOT * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
* @application_flags - misc flags * @application_flags - misc flags
* @diagnostic_flags - specifies flags affecting command processing * @diagnostic_flags - specifies flags affecting command processing
* @product_specific - product specific information * @product_specific - product specific information
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment