scsi: smartpqi: Add phy ID support for the physical drives
Display topology using PHY numbers. PHY (both local and remote) numbers corresponding to physical drives are read from BMIC_IDENTIFY_PHYSICAL_DEVICE. Link: https://lore.kernel.org/r/161549383947.25025.16977895345376485056.stgit@brunhilda Reviewed-by: Scott Benesh <scott.benesh@microchip.com> Reviewed-by: Mike McGowen <mike.mcgowen@microchip.com> Reviewed-by: Scott Teel <scott.teel@microchip.com> Reviewed-by: Kevin Barnett <kevin.barnett@microchip.com> Reviewed-by: Martin Wilck <mwilck@suse.com> Signed-off-by: Murthy Bhat <Murthy.Bhat@microchip.com> Signed-off-by: Don Brace <don.brace@microchip.com> Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
This commit is contained in:
parent
a425625277
commit
ec504b23df
@ -1089,6 +1089,7 @@ struct pqi_scsi_dev {
|
||||
u8 phy_connected_dev_type;
|
||||
u8 box[8];
|
||||
u16 phys_connector[8];
|
||||
u8 phy_id;
|
||||
bool raid_bypass_configured; /* RAID bypass configured */
|
||||
bool raid_bypass_enabled; /* RAID bypass enabled */
|
||||
u32 next_bypass_group;
|
||||
|
@ -1434,6 +1434,8 @@ no_buffer:
|
||||
device->volume_offline = volume_offline;
|
||||
}
|
||||
|
||||
#define PQI_DEVICE_PHY_MAP_SUPPORTED 0x10
|
||||
|
||||
static int pqi_get_physical_device_info(struct pqi_ctrl_info *ctrl_info,
|
||||
struct pqi_scsi_dev *device,
|
||||
struct bmic_identify_physical_device *id_phys)
|
||||
@ -1473,6 +1475,13 @@ static int pqi_get_physical_device_info(struct pqi_ctrl_info *ctrl_info,
|
||||
memcpy(&device->page_83_identifier, &id_phys->page_83_identifier,
|
||||
sizeof(device->page_83_identifier));
|
||||
|
||||
if ((id_phys->even_more_flags & PQI_DEVICE_PHY_MAP_SUPPORTED) &&
|
||||
id_phys->phy_count)
|
||||
device->phy_id =
|
||||
id_phys->phy_to_phy_map[device->active_path_index];
|
||||
else
|
||||
device->phy_id = 0xFF;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1839,6 +1848,7 @@ static void pqi_scsi_update_device(struct pqi_scsi_dev *existing_device,
|
||||
existing_device->aio_handle = new_device->aio_handle;
|
||||
existing_device->volume_status = new_device->volume_status;
|
||||
existing_device->active_path_index = new_device->active_path_index;
|
||||
existing_device->phy_id = new_device->phy_id;
|
||||
existing_device->path_map = new_device->path_map;
|
||||
existing_device->bay = new_device->bay;
|
||||
existing_device->box_index = new_device->box_index;
|
||||
|
@ -92,6 +92,7 @@ static int pqi_sas_port_add_rphy(struct pqi_sas_port *pqi_sas_port,
|
||||
|
||||
identify = &rphy->identify;
|
||||
identify->sas_address = pqi_sas_port->sas_address;
|
||||
identify->phy_identifier = pqi_sas_port->device->phy_id;
|
||||
|
||||
if (pqi_sas_port->device &&
|
||||
pqi_sas_port->device->is_expander_smp_device) {
|
||||
|
Loading…
Reference in New Issue
Block a user