]> git.karo-electronics.de Git - mv-sheeva.git/commitdiff
[SCSI] mptfusion: Support SAS2.0 Devices with SAS1.0 Controllers
authorKashyap, Desai <kashyap.desai@lsi.com>
Thu, 10 Feb 2011 06:20:39 +0000 (11:50 +0530)
committerJames Bottomley <James.Bottomley@suse.de>
Sat, 12 Feb 2011 19:57:28 +0000 (13:57 -0600)
SAS1.0 Controller was not able to detect SAS2.0 Expanders due to Link
RATE detection was limited to 1.5 Gbps and 3.0 Gbps for SAS1
controllers. Added detection for 6.0 Gbps link.  Now, user can mix-up
6.0 Gpbs links with SAS1.0 controller.

e.g SAS1.0 HBA <----> SAS2.0 Expander <------> SAS2.0 Expander <--------> SAS1.0 Drive.

Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
drivers/message/fusion/lsi/mpi_cnfg.h
drivers/message/fusion/lsi/mpi_ioc.h
drivers/message/fusion/mptbase.c
drivers/message/fusion/mptsas.c

index 013c7d88194845e170077ea3cc4f2607f3363a4b..22027e7946f7bf16c4cba748a065a9b92a78ed51 100644 (file)
@@ -2593,6 +2593,7 @@ typedef struct _CONFIG_PAGE_SAS_IO_UNIT_0
 #define MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE              (0x03)
 #define MPI_SAS_IOUNIT0_RATE_1_5                            (0x08)
 #define MPI_SAS_IOUNIT0_RATE_3_0                            (0x09)
+#define MPI_SAS_IOUNIT0_RATE_6_0                            (0x0A)
 
 /* see mpi_sas.h for values for SAS IO Unit Page 0 ControllerPhyDeviceInfo values */
 
index 8faa4fab7b89d89df0cacab602fd7e00d49ffdff..fd6222882a0e8e3fa18b7d2f91fc3164f0291ba9 100644 (file)
@@ -841,6 +841,7 @@ typedef struct _EVENT_DATA_SAS_PHY_LINK_STATUS
 #define MPI_EVENT_SAS_PLS_LR_RATE_SATA_OOB_COMPLETE         (0x03)
 #define MPI_EVENT_SAS_PLS_LR_RATE_1_5                       (0x08)
 #define MPI_EVENT_SAS_PLS_LR_RATE_3_0                       (0x09)
+#define MPI_EVENT_SAS_PLS_LR_RATE_6_0                       (0x0A)
 
 /* SAS Discovery Event data */
 
index 3358c0af346659392e84438c5effa1bbabb18e84..ec8080c980810a639900cbca6d8ce891a1690aef 100644 (file)
@@ -7418,7 +7418,12 @@ mpt_display_event_info(MPT_ADAPTER *ioc, EventNotificationReply_t *pEventReply)
                case MPI_EVENT_SAS_PLS_LR_RATE_3_0:
                        snprintf(evStr, EVENT_DESCR_STR_SZ,
                           "SAS PHY Link Status: Phy=%d:"
-                          " Rate 3.0 Gpbs",PhyNumber);
+                          " Rate 3.0 Gbps", PhyNumber);
+                       break;
+               case MPI_EVENT_SAS_PLS_LR_RATE_6_0:
+                       snprintf(evStr, EVENT_DESCR_STR_SZ,
+                          "SAS PHY Link Status: Phy=%d:"
+                          " Rate 6.0 Gbps", PhyNumber);
                        break;
                default:
                        snprintf(evStr, EVENT_DESCR_STR_SZ,
index 8aefb1829fcd4f2a7514a4eb9d3299cca4fc0bc3..518cfcaaaa4e2bff6cc4603010721b57be8b50eb 100644 (file)
@@ -3063,6 +3063,9 @@ static int mptsas_probe_one_phy(struct device *dev,
        case MPI_SAS_IOUNIT0_RATE_3_0:
                phy->negotiated_linkrate = SAS_LINK_RATE_3_0_GBPS;
                break;
+       case MPI_SAS_IOUNIT0_RATE_6_0:
+               phy->negotiated_linkrate = SAS_LINK_RATE_6_0_GBPS;
+               break;
        case MPI_SAS_IOUNIT0_RATE_SATA_OOB_COMPLETE:
        case MPI_SAS_IOUNIT0_RATE_UNKNOWN:
        default:
@@ -3691,7 +3694,8 @@ mptsas_send_link_status_event(struct fw_event_work *fw_event)
        }
 
        if (link_rate == MPI_SAS_IOUNIT0_RATE_1_5 ||
-           link_rate == MPI_SAS_IOUNIT0_RATE_3_0) {
+           link_rate == MPI_SAS_IOUNIT0_RATE_3_0 ||
+           link_rate == MPI_SAS_IOUNIT0_RATE_6_0) {
 
                if (!port_info) {
                        if (ioc->old_sas_discovery_protocal) {