Commit da4541b6 authored by Seokmann Ju's avatar Seokmann Ju Committed by James Bottomley

[SCSI] qla2xxx: Access the proper 'physical' port in FC-transport callbacks.

 For following fc_host specific attributes, vports rely on the pport.
 So, this patch changed way to access the data for those attributes so that
 they can access pport's.
 - get_host_speed (speed)
 - get_host_port_state (port_state)
 - get_host_port_type (port_type)
 - get_fc_host_stats

Also, added PORT_SPEED_8GB case in the speed attribute for 8Gb HBAs.
Signed-Off-by: default avatarSeokmann Ju <seokmann.ju@qlogic.com>
Signed-off-by: default avatarAndrew Vasquez <andrew.vasquez@qlogic.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@HansenPartnership.com>
parent 99363ef8
...@@ -848,7 +848,7 @@ qla2x00_get_host_port_id(struct Scsi_Host *shost) ...@@ -848,7 +848,7 @@ qla2x00_get_host_port_id(struct Scsi_Host *shost)
static void static void
qla2x00_get_host_speed(struct Scsi_Host *shost) qla2x00_get_host_speed(struct Scsi_Host *shost)
{ {
scsi_qla_host_t *ha = shost_priv(shost); scsi_qla_host_t *ha = to_qla_parent(shost_priv(shost));
uint32_t speed = 0; uint32_t speed = 0;
switch (ha->link_data_rate) { switch (ha->link_data_rate) {
...@@ -861,6 +861,9 @@ qla2x00_get_host_speed(struct Scsi_Host *shost) ...@@ -861,6 +861,9 @@ qla2x00_get_host_speed(struct Scsi_Host *shost)
case PORT_SPEED_4GB: case PORT_SPEED_4GB:
speed = 4; speed = 4;
break; break;
case PORT_SPEED_8GB:
speed = 8;
break;
} }
fc_host_speed(shost) = speed; fc_host_speed(shost) = speed;
} }
...@@ -868,7 +871,7 @@ qla2x00_get_host_speed(struct Scsi_Host *shost) ...@@ -868,7 +871,7 @@ qla2x00_get_host_speed(struct Scsi_Host *shost)
static void static void
qla2x00_get_host_port_type(struct Scsi_Host *shost) qla2x00_get_host_port_type(struct Scsi_Host *shost)
{ {
scsi_qla_host_t *ha = shost_priv(shost); scsi_qla_host_t *ha = to_qla_parent(shost_priv(shost));
uint32_t port_type = FC_PORTTYPE_UNKNOWN; uint32_t port_type = FC_PORTTYPE_UNKNOWN;
switch (ha->current_topology) { switch (ha->current_topology) {
...@@ -978,7 +981,7 @@ qla2x00_issue_lip(struct Scsi_Host *shost) ...@@ -978,7 +981,7 @@ qla2x00_issue_lip(struct Scsi_Host *shost)
static struct fc_host_statistics * static struct fc_host_statistics *
qla2x00_get_fc_host_stats(struct Scsi_Host *shost) qla2x00_get_fc_host_stats(struct Scsi_Host *shost)
{ {
scsi_qla_host_t *ha = shost_priv(shost); scsi_qla_host_t *ha = to_qla_parent(shost_priv(shost));
int rval; int rval;
struct link_statistics *stats; struct link_statistics *stats;
dma_addr_t stats_dma; dma_addr_t stats_dma;
...@@ -1062,7 +1065,7 @@ qla2x00_get_host_fabric_name(struct Scsi_Host *shost) ...@@ -1062,7 +1065,7 @@ qla2x00_get_host_fabric_name(struct Scsi_Host *shost)
static void static void
qla2x00_get_host_port_state(struct Scsi_Host *shost) qla2x00_get_host_port_state(struct Scsi_Host *shost)
{ {
scsi_qla_host_t *ha = shost_priv(shost); scsi_qla_host_t *ha = to_qla_parent(shost_priv(shost));
if (!ha->flags.online) if (!ha->flags.online)
fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE; fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE;
......
...@@ -2041,8 +2041,6 @@ typedef struct vport_params { ...@@ -2041,8 +2041,6 @@ typedef struct vport_params {
#define VP_RET_CODE_NO_MEM 5 #define VP_RET_CODE_NO_MEM 5
#define VP_RET_CODE_NOT_FOUND 6 #define VP_RET_CODE_NOT_FOUND 6
#define to_qla_parent(x) (((x)->parent) ? (x)->parent : (x))
/* /*
* ISP operations * ISP operations
*/ */
......
...@@ -119,6 +119,13 @@ static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *ha) ...@@ -119,6 +119,13 @@ static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *ha)
qla2x00_get_firmware_state(ha, &fw_state); qla2x00_get_firmware_state(ha, &fw_state);
} }
static __inline__ scsi_qla_host_t * to_qla_parent(scsi_qla_host_t *);
static __inline__ scsi_qla_host_t *
to_qla_parent(scsi_qla_host_t *ha)
{
return ha->parent ? ha->parent : ha;
}
/** /**
* qla2x00_issue_marker() - Issue a Marker IOCB if necessary. * qla2x00_issue_marker() - Issue a Marker IOCB if necessary.
* @ha: HA context * @ha: HA context
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment