[SCSI] mpt2sas: Add Extended Type for Diagnostic Buffer support
authorKashyap, Desai <kashyap.desai@lsi.com>
Wed, 23 Sep 2009 11:58:59 +0000 (17:28 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Thu, 29 Oct 2009 17:03:11 +0000 (13:03 -0400)
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>
drivers/scsi/mpt2sas/mpt2sas_base.c
drivers/scsi/mpt2sas/mpt2sas_ctl.c
drivers/scsi/mpt2sas/mpt2sas_ctl.h

index 1d2374b..935cfc7 100644 (file)
@@ -78,15 +78,16 @@ module_param(msix_disable, int, 0);
 MODULE_PARM_DESC(msix_disable, " disable msix routed interrupts (default=0)");
 
 /* diag_buffer_enable is bitwise
- * bit 0 set = MPI2_DIAG_BUF_TYPE_TRACE(1)
- * bit 1 set = MPI2_DIAG_BUF_TYPE_SNAPSHOT(2)
+ * bit 0 set = TRACE
+ * bit 1 set = SNAPSHOT
+ * bit 2 set = EXTENDED
  *
  * Either bit can be set, or both
  */
 static int diag_buffer_enable;
 module_param(diag_buffer_enable, int, 0);
-MODULE_PARM_DESC(diag_buffer_enable, " enable diag buffer at driver load "
-    "time (TRACE=1/SNAP=2/default=0)");
+MODULE_PARM_DESC(diag_buffer_enable, " post diag buffers "
+    "(TRACE=1/SNAPSHOT=2/EXTENDED=4/default=0)");
 
 int mpt2sas_fwfault_debug;
 MODULE_PARM_DESC(mpt2sas_fwfault_debug, " enable detection of firmware fault "
@@ -1764,6 +1765,12 @@ _base_display_ioc_capabilities(struct MPT2SAS_ADAPTER *ioc)
                i++;
        }
 
+       if (ioc->facts.IOCCapabilities &
+           MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER) {
+               printk(KERN_INFO "%sDiag Extended Buffer", i ? "," : "");
+               i++;
+       }
+
        if (ioc->facts.IOCCapabilities &
            MPI2_IOCFACTS_CAPABILITY_TASK_SET_FULL_HANDLING) {
                printk("%sTask Set Full", i ? "," : "");
index 99a332d..8dfc5f6 100644 (file)
@@ -1230,7 +1230,7 @@ _ctl_btdh_mapping(void __user *arg)
 /**
  * _ctl_diag_capability - return diag buffer capability
  * @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
  */
@@ -1250,6 +1250,10 @@ _ctl_diag_capability(struct MPT2SAS_ADAPTER *ioc, u8 buffer_type)
                    MPI2_IOCFACTS_CAPABILITY_SNAPSHOT_BUFFER)
                        rc = 1;
                break;
+       case MPI2_DIAG_BUF_TYPE_EXTENDED:
+               if (ioc->facts.IOCCapabilities &
+                   MPI2_IOCFACTS_CAPABILITY_EXTENDED_BUFFER)
+                       rc = 1;
        }
 
        return rc;
@@ -1460,6 +1464,16 @@ mpt2sas_enable_diag_buffer(struct MPT2SAS_ADAPTER *ioc, u8 bits_to_register)
                diag_register.unique_id = 0x7075901;
                _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)
 /**
  * _ctl_send_release - Diag Release Message
  * @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.
  *
  */
index 211f296..8a5eeb1 100644 (file)
@@ -313,7 +313,7 @@ struct mpt2_ioctl_btdh_mapping {
  * struct mpt2_diag_register - application register with driver
  * @hdr - generic header
  * @reserved -
- * @buffer_type - specifies either TRACE or SNAPSHOT
+ * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
  * @application_flags - misc flags
  * @diagnostic_flags - specifies flags affecting command processing
  * @product_specific - product specific information
@@ -352,7 +352,7 @@ struct mpt2_diag_unregister {
  * struct mpt2_diag_query - query relevant info associated with diag buffers
  * @hdr - generic header
  * @reserved -
- * @buffer_type - specifies either TRACE or SNAPSHOT
+ * @buffer_type - specifies either TRACE, SNAPSHOT, or EXTENDED
  * @application_flags - misc flags
  * @diagnostic_flags - specifies flags affecting command processing
  * @product_specific - product specific information