diff options
author | Moore, Eric <Eric.Moore@lsil.com> | 2006-03-14 11:14:24 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-03-14 15:35:17 -0500 |
commit | e6b2d76a49f0ee48527691867d8af2b8f9c10452 (patch) | |
tree | 8f35dda5dcf65ccc740761c96924111baf0a8644 /drivers/message/fusion/mptbase.h | |
parent | f44e5461d919a344d44f7ca4f06cf8d169da8454 (diff) |
[SCSI] fusion - expander hotplug suport in mptsas module
This adds support for hot adding and removing
expanders, and its associated attached devices.
When there is a change in topology,
the fusion firmware sends the
MPI_EVENT_SAS_DISCOVERY event to the driver.
The driver will read firmware config pages
to determine what changes took place, and refresh
drivers view of the world stored in ioc->sas_topology.
Here is the details of the action the driver does:
(1) Expander Added : The mptsas_discovery_work
workqueue is called. Config pages read, and
ioc->sas_topology is refreshed. The sas_phy_add()
is called for each phy of the expander. The
expanders attached devices are added via
sas_rphy_add(). Added end devices are handled within
the MPT_ADD_DEVICE logic in mptsas_hotplug_work
workqueue.
(2) Expander Delete : The sas_rphy_delete() will be
called for the top most compenent of the parent that the
expander is attached to. The sas_rphy_delete call
will delete all the children phys, rphys, and end devices.
This is handled from mptsas_discovery_work workqueue.
Signed-off-by: Eric Moore <Eric.Moore@lsil.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/message/fusion/mptbase.h')
-rw-r--r-- | drivers/message/fusion/mptbase.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/message/fusion/mptbase.h b/drivers/message/fusion/mptbase.h index 9b58234add36..892af47cb91c 100644 --- a/drivers/message/fusion/mptbase.h +++ b/drivers/message/fusion/mptbase.h | |||
@@ -619,6 +619,10 @@ typedef struct _MPT_ADAPTER | |||
619 | struct net_device *netdev; | 619 | struct net_device *netdev; |
620 | struct list_head sas_topology; | 620 | struct list_head sas_topology; |
621 | struct mutex sas_topology_mutex; | 621 | struct mutex sas_topology_mutex; |
622 | struct mutex sas_discovery_mutex; | ||
623 | u8 sas_discovery_runtime; | ||
624 | u8 sas_discovery_ignore_events; | ||
625 | int sas_index; /* index refrencing */ | ||
622 | MPT_SAS_MGMT sas_mgmt; | 626 | MPT_SAS_MGMT sas_mgmt; |
623 | int num_ports; | 627 | int num_ports; |
624 | struct work_struct mptscsih_persistTask; | 628 | struct work_struct mptscsih_persistTask; |