diff options
author | Kashyap, Desai <kashyap.desai@lsi.com> | 2010-04-05 04:48:34 -0400 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-04-11 14:41:50 -0400 |
commit | 38c2911449b19664e0dc46132a7b4cb249ff5e06 (patch) | |
tree | da6bbf3f397a0f6c443dc9b20d4ccef67aa56204 /drivers/scsi/mpt2sas/mpt2sas_base.h | |
parent | 78d4e5a07dca7374dd9db40b3346d727b65eb794 (diff) |
[SCSI] mpt2sas: sanity added to remove duplicate port from topology
There are few special cases which needs to be handled deleting old port.
CASE1: In topology you need cascaded expanders. Through sysfs just make sure
topology is up. Erase the manufacturing image of the cascaded expander and
reset the board. In some cases Adapter will receive Exapnder Add event
before expander delete. In such a case, driver needs to delete duplicate
port before adding new port.
CASE2: Enable Device Missing delay of HBA through lsiutils. If expander or
end device is hotswapped with different device before DMD timer expires,
driver will get device add for new device first and then device deletion
event for the original devices will arrive later at DMD timer expires. In
this case also driver need to delete duplicate port before adding port for
new device.
Added new function which will make sure when new port is
added, that its not claiming the same phy resources already in use by
another port. If it does, then it will delete the other port before adding
the new port.
Signed-off-by: Kashyap Desai <kashyap.desai@lsi.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/mpt2sas/mpt2sas_base.h')
-rw-r--r-- | drivers/scsi/mpt2sas/mpt2sas_base.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/scsi/mpt2sas/mpt2sas_base.h b/drivers/scsi/mpt2sas/mpt2sas_base.h index 2616bb1597b0..454a74a3ec50 100644 --- a/drivers/scsi/mpt2sas/mpt2sas_base.h +++ b/drivers/scsi/mpt2sas/mpt2sas_base.h | |||
@@ -366,6 +366,7 @@ struct _sas_port { | |||
366 | * @phy_id: unique phy id | 366 | * @phy_id: unique phy id |
367 | * @handle: device handle for this phy | 367 | * @handle: device handle for this phy |
368 | * @attached_handle: device handle for attached device | 368 | * @attached_handle: device handle for attached device |
369 | * @phy_belongs_to_port: port has been created for this phy | ||
369 | */ | 370 | */ |
370 | struct _sas_phy { | 371 | struct _sas_phy { |
371 | struct list_head port_siblings; | 372 | struct list_head port_siblings; |
@@ -375,6 +376,7 @@ struct _sas_phy { | |||
375 | u8 phy_id; | 376 | u8 phy_id; |
376 | u16 handle; | 377 | u16 handle; |
377 | u16 attached_handle; | 378 | u16 attached_handle; |
379 | u8 phy_belongs_to_port; | ||
378 | }; | 380 | }; |
379 | 381 | ||
380 | /** | 382 | /** |