Skip to content

Commit

Permalink
[SCSI] qla2xxx: Add port-speed FC transport attribute.
Browse files Browse the repository at this point in the history
Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
  • Loading branch information
andrew.vasquez@qlogic.com authored and Unknown committed Feb 4, 2006
1 parent 53ea68e commit 0441401
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 2 deletions.
22 changes: 22 additions & 0 deletions drivers/scsi/qla2xxx/qla_attr.c
Original file line number Diff line number Diff line change
Expand Up @@ -425,6 +425,26 @@ qla2x00_get_host_port_id(struct Scsi_Host *shost)
ha->d_id.b.area << 8 | ha->d_id.b.al_pa;
}

static void
qla2x00_get_host_speed(struct Scsi_Host *shost)
{
scsi_qla_host_t *ha = to_qla_host(shost);
uint32_t speed = 0;

switch (ha->link_data_rate) {
case LDR_1GB:
speed = 1;
break;
case LDR_2GB:
speed = 2;
break;
case LDR_4GB:
speed = 4;
break;
}
fc_host_speed(shost) = speed;
}

static void
qla2x00_get_starget_node_name(struct scsi_target *starget)
{
Expand Down Expand Up @@ -520,6 +540,8 @@ struct fc_function_template qla2xxx_transport_functions = {

.get_host_port_id = qla2x00_get_host_port_id,
.show_host_port_id = 1,
.get_host_speed = qla2x00_get_host_speed,
.show_host_speed = 1,

.dd_fcrport_size = sizeof(struct fc_port *),
.show_rport_supported_classes = 1,
Expand Down
4 changes: 4 additions & 0 deletions drivers/scsi/qla2xxx/qla_def.h
Original file line number Diff line number Diff line change
Expand Up @@ -2331,6 +2331,10 @@ typedef struct scsi_qla_host {
uint16_t min_external_loopid; /* First external loop Id */

uint16_t link_data_rate; /* F/W operating speed */
#define LDR_1GB 0
#define LDR_2GB 1
#define LDR_4GB 3
#define LDR_UNKNOWN 0xFFFF

uint8_t current_topology;
uint8_t prev_topology;
Expand Down
4 changes: 2 additions & 2 deletions drivers/scsi/qla2xxx/qla_isr.c
Original file line number Diff line number Diff line change
Expand Up @@ -402,9 +402,9 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
break;

case MBA_LOOP_UP: /* Loop Up Event */
ha->link_data_rate = 0;
if (IS_QLA2100(ha) || IS_QLA2200(ha)) {
link_speed = link_speeds[0];
ha->link_data_rate = LDR_1GB;
} else {
link_speed = link_speeds[LS_UNKNOWN];
if (mb[1] < 5)
Expand Down Expand Up @@ -436,7 +436,7 @@ qla2x00_async_event(scsi_qla_host_t *ha, uint16_t *mb)
}

ha->flags.management_server_logged_in = 0;
ha->link_data_rate = 0;
ha->link_data_rate = LDR_UNKNOWN;
if (ql2xfdmienable)
set_bit(REGISTER_FDMI_NEEDED, &ha->dpc_flags);

Expand Down
1 change: 1 addition & 0 deletions drivers/scsi/qla2xxx/qla_os.c
Original file line number Diff line number Diff line change
Expand Up @@ -1312,6 +1312,7 @@ int qla2x00_probe_one(struct pci_dev *pdev, struct qla_board_info *brd_info)
ha->ports = MAX_BUSES;
ha->init_cb_size = sizeof(init_cb_t);
ha->mgmt_svr_loop_id = MANAGEMENT_SERVER;
ha->link_data_rate = LDR_UNKNOWN;

/* Assign ISP specific operations. */
ha->isp_ops.pci_config = qla2100_pci_config;
Expand Down

0 comments on commit 0441401

Please sign in to comment.