|
@@ -2079,17 +2079,7 @@ qla2x00_configure_local_loop(scsi_qla_host_t *ha)
|
|
|
}
|
|
|
|
|
|
/* Base iIDMA settings on HBA port speed. */
|
|
|
- switch (ha->link_data_rate) {
|
|
|
- case PORT_SPEED_1GB:
|
|
|
- fcport->fp_speed = cpu_to_be16(BIT_15);
|
|
|
- break;
|
|
|
- case PORT_SPEED_2GB:
|
|
|
- fcport->fp_speed = cpu_to_be16(BIT_14);
|
|
|
- break;
|
|
|
- case PORT_SPEED_4GB:
|
|
|
- fcport->fp_speed = cpu_to_be16(BIT_13);
|
|
|
- break;
|
|
|
- }
|
|
|
+ fcport->fp_speed = ha->link_data_rate;
|
|
|
|
|
|
qla2x00_update_fcport(ha, fcport);
|
|
|
|
|
@@ -2130,38 +2120,25 @@ static void
|
|
|
qla2x00_iidma_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
|
|
|
{
|
|
|
#define LS_UNKNOWN 2
|
|
|
- static char *link_speeds[5] = { "1", "2", "?", "4" };
|
|
|
+ static char *link_speeds[5] = { "1", "2", "?", "4", "8" };
|
|
|
int rval;
|
|
|
- uint16_t port_speed, mb[6];
|
|
|
+ uint16_t mb[6];
|
|
|
|
|
|
if (!IS_IIDMA_CAPABLE(ha))
|
|
|
return;
|
|
|
|
|
|
- switch (be16_to_cpu(fcport->fp_speed)) {
|
|
|
- case BIT_15:
|
|
|
- port_speed = PORT_SPEED_1GB;
|
|
|
- break;
|
|
|
- case BIT_14:
|
|
|
- port_speed = PORT_SPEED_2GB;
|
|
|
- break;
|
|
|
- case BIT_13:
|
|
|
- port_speed = PORT_SPEED_4GB;
|
|
|
- break;
|
|
|
- default:
|
|
|
+ if (fcport->fp_speed == PORT_SPEED_UNKNOWN) {
|
|
|
DEBUG2(printk("scsi(%ld): %02x%02x%02x%02x%02x%02x%02x%02x -- "
|
|
|
- "unsupported FM port operating speed (%04x).\n",
|
|
|
+ "unsupported FM port operating speed.\n",
|
|
|
ha->host_no, fcport->port_name[0], fcport->port_name[1],
|
|
|
fcport->port_name[2], fcport->port_name[3],
|
|
|
fcport->port_name[4], fcport->port_name[5],
|
|
|
- fcport->port_name[6], fcport->port_name[7],
|
|
|
- be16_to_cpu(fcport->fp_speed)));
|
|
|
- port_speed = PORT_SPEED_UNKNOWN;
|
|
|
- break;
|
|
|
- }
|
|
|
- if (port_speed == PORT_SPEED_UNKNOWN)
|
|
|
+ fcport->port_name[6], fcport->port_name[7]));
|
|
|
return;
|
|
|
+ }
|
|
|
|
|
|
- rval = qla2x00_set_idma_speed(ha, fcport->loop_id, port_speed, mb);
|
|
|
+ rval = qla2x00_set_idma_speed(ha, fcport->loop_id, fcport->fp_speed,
|
|
|
+ mb);
|
|
|
if (rval != QLA_SUCCESS) {
|
|
|
DEBUG2(printk("scsi(%ld): Unable to adjust iIDMA "
|
|
|
"%02x%02x%02x%02x%02x%02x%02x%02x -- %04x %x %04x %04x.\n",
|
|
@@ -2169,12 +2146,12 @@ qla2x00_iidma_fcport(scsi_qla_host_t *ha, fc_port_t *fcport)
|
|
|
fcport->port_name[2], fcport->port_name[3],
|
|
|
fcport->port_name[4], fcport->port_name[5],
|
|
|
fcport->port_name[6], fcport->port_name[7], rval,
|
|
|
- port_speed, mb[0], mb[1]));
|
|
|
+ fcport->fp_speed, mb[0], mb[1]));
|
|
|
} else {
|
|
|
DEBUG2(qla_printk(KERN_INFO, ha,
|
|
|
"iIDMA adjusted to %s GB/s on "
|
|
|
"%02x%02x%02x%02x%02x%02x%02x%02x.\n",
|
|
|
- link_speeds[port_speed], fcport->port_name[0],
|
|
|
+ link_speeds[fcport->fp_speed], fcport->port_name[0],
|
|
|
fcport->port_name[1], fcport->port_name[2],
|
|
|
fcport->port_name[3], fcport->port_name[4],
|
|
|
fcport->port_name[5], fcport->port_name[6],
|