mirror of https://gitee.com/openkylin/linux.git
[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: Seokmann Ju <seokmann.ju@qlogic.com> Signed-off-by: Andrew Vasquez <andrew.vasquez@qlogic.com> Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
This commit is contained in:
parent
99363ef81c
commit
da4541b63b
|
@ -848,7 +848,7 @@ qla2x00_get_host_port_id(struct Scsi_Host *shost)
|
|||
static void
|
||||
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;
|
||||
|
||||
switch (ha->link_data_rate) {
|
||||
|
@ -861,6 +861,9 @@ qla2x00_get_host_speed(struct Scsi_Host *shost)
|
|||
case PORT_SPEED_4GB:
|
||||
speed = 4;
|
||||
break;
|
||||
case PORT_SPEED_8GB:
|
||||
speed = 8;
|
||||
break;
|
||||
}
|
||||
fc_host_speed(shost) = speed;
|
||||
}
|
||||
|
@ -868,7 +871,7 @@ qla2x00_get_host_speed(struct Scsi_Host *shost)
|
|||
static void
|
||||
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;
|
||||
|
||||
switch (ha->current_topology) {
|
||||
|
@ -978,7 +981,7 @@ qla2x00_issue_lip(struct Scsi_Host *shost)
|
|||
static struct fc_host_statistics *
|
||||
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;
|
||||
struct link_statistics *stats;
|
||||
dma_addr_t stats_dma;
|
||||
|
@ -1062,7 +1065,7 @@ qla2x00_get_host_fabric_name(struct Scsi_Host *shost)
|
|||
static void
|
||||
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)
|
||||
fc_host_port_state(shost) = FC_PORTSTATE_OFFLINE;
|
||||
|
|
|
@ -2041,8 +2041,6 @@ typedef struct vport_params {
|
|||
#define VP_RET_CODE_NO_MEM 5
|
||||
#define VP_RET_CODE_NOT_FOUND 6
|
||||
|
||||
#define to_qla_parent(x) (((x)->parent) ? (x)->parent : (x))
|
||||
|
||||
/*
|
||||
* ISP operations
|
||||
*/
|
||||
|
|
|
@ -119,6 +119,13 @@ static __inline__ void qla2x00_check_fabric_devices(scsi_qla_host_t *ha)
|
|||
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.
|
||||
* @ha: HA context
|
||||
|
|
Loading…
Reference in New Issue