[SCSI] sas: add flag for locally attached PHYs
Add a flag to mark a PHY as attached to the HBA as opposed to beeing on an expander. This is needed because various features are only supported on those. This is a crude hack, the proper fix would be to use different classes for host-attached vs expander phys. I'm looking into that. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
This commit is contained in:
parent
80d904c43b
commit
ac01bbbd3b
|
@ -760,7 +760,7 @@ mptsas_parse_device_info(struct sas_identify *identify,
|
|||
}
|
||||
|
||||
static int mptsas_probe_one_phy(struct device *dev,
|
||||
struct mptsas_phyinfo *phy_info, int index)
|
||||
struct mptsas_phyinfo *phy_info, int index, int local)
|
||||
{
|
||||
struct sas_phy *port;
|
||||
int error;
|
||||
|
@ -853,6 +853,9 @@ static int mptsas_probe_one_phy(struct device *dev,
|
|||
break;
|
||||
}
|
||||
|
||||
if (local)
|
||||
port->local_attached = 1;
|
||||
|
||||
error = sas_phy_add(port);
|
||||
if (error) {
|
||||
sas_phy_free(port);
|
||||
|
@ -918,7 +921,7 @@ mptsas_probe_hba_phys(MPT_ADAPTER *ioc, int *index)
|
|||
}
|
||||
|
||||
mptsas_probe_one_phy(&ioc->sh->shost_gendev,
|
||||
&port_info->phy_info[i], *index);
|
||||
&port_info->phy_info[i], *index, 1);
|
||||
(*index)++;
|
||||
}
|
||||
|
||||
|
@ -989,7 +992,8 @@ mptsas_probe_expander_phys(MPT_ADAPTER *ioc, u32 *handle, int *index)
|
|||
}
|
||||
}
|
||||
|
||||
mptsas_probe_one_phy(parent, &port_info->phy_info[i], *index);
|
||||
mptsas_probe_one_phy(parent, &port_info->phy_info[i],
|
||||
*index, 0);
|
||||
(*index)++;
|
||||
}
|
||||
|
||||
|
|
|
@ -266,6 +266,9 @@ show_sas_phy_##field(struct class_device *cdev, char *buf) \
|
|||
struct sas_internal *i = to_sas_internal(shost->transportt); \
|
||||
int error; \
|
||||
\
|
||||
if (!phy->local_attached) \
|
||||
return -EINVAL; \
|
||||
\
|
||||
error = i->f->get_linkerrors(phy); \
|
||||
if (error) \
|
||||
return error; \
|
||||
|
|
|
@ -56,6 +56,9 @@ struct sas_phy {
|
|||
enum sas_linkrate maximum_linkrate;
|
||||
u8 port_identifier;
|
||||
|
||||
/* internal state */
|
||||
unsigned int local_attached : 1;
|
||||
|
||||
/* link error statistics */
|
||||
u32 invalid_dword_count;
|
||||
u32 running_disparity_error_count;
|
||||
|
|
Loading…
Reference in New Issue