[SCSI] mvsas: fix expander link error
[deliverable/linux.git] / drivers / scsi / mvsas / mv_sas.c
index f2ac01fd09c002f3ddcba591ef889db247805053..ab2a71fd0fde91cb405061561553eaadec1bdac9 100644 (file)
@@ -396,7 +396,7 @@ static int mvs_task_prep_smp(struct mvs_info *mvi,
        /* generate open address frame hdr (first 12 bytes) */
        /* initiator, SMP, ftype 1h */
        buf_oaf[0] = (1 << 7) | (PROTOCOL_SMP << 4) | 0x01;
-       buf_oaf[1] = dev->linkrate & 0xf;
+       buf_oaf[1] = min(sas_port->linkrate, dev->linkrate) & 0xf;
        *(u16 *)(buf_oaf + 2) = 0xFFFF;         /* SAS SPEC */
        memcpy(buf_oaf + 4, dev->sas_addr, SAS_ADDR_SIZE);
 
@@ -541,7 +541,7 @@ static int mvs_task_prep_ata(struct mvs_info *mvi,
        /* generate open address frame hdr (first 12 bytes) */
        /* initiator, STP, ftype 1h */
        buf_oaf[0] = (1 << 7) | (PROTOCOL_STP << 4) | 0x1;
-       buf_oaf[1] = dev->linkrate & 0xf;
+       buf_oaf[1] = min(sas_port->linkrate, dev->linkrate) & 0xf;
        *(u16 *)(buf_oaf + 2) = cpu_to_be16(mvi_dev->device_id + 1);
        memcpy(buf_oaf + 4, dev->sas_addr, SAS_ADDR_SIZE);
 
@@ -649,7 +649,7 @@ static int mvs_task_prep_ssp(struct mvs_info *mvi,
        /* generate open address frame hdr (first 12 bytes) */
        /* initiator, SSP, ftype 1h */
        buf_oaf[0] = (1 << 7) | (PROTOCOL_SSP << 4) | 0x1;
-       buf_oaf[1] = dev->linkrate & 0xf;
+       buf_oaf[1] = min(sas_port->linkrate, dev->linkrate) & 0xf;
        *(u16 *)(buf_oaf + 2) = cpu_to_be16(mvi_dev->device_id + 1);
        memcpy(buf_oaf + 4, dev->sas_addr, SAS_ADDR_SIZE);
 
This page took 0.039045 seconds and 5 git commands to generate.