diff options
author | Tom Jackson <thomas.p.jackson@intel.com> | 2012-02-24 04:38:49 -0500 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2012-05-17 15:27:12 -0400 |
commit | 944b787d0a469a376f4d6699eb01138823197513 (patch) | |
tree | 4a1a59d80cc22afc85729cea30405b60aef2cfe0 /drivers | |
parent | c79dd80d73017a88a2c2ae46e7d5303cba6a32e0 (diff) |
isci: Don't filter BROADCAST CHANGE primitives
Per the SAS spec, several types of BROADCAST CHANGE primitives
must cause re-discovery of the originating expander.
Only the standard BROADCAST CHANGE primitive was being
sent to the LIBSAS layer. The other BC primitives have been
added to the sci_phy_event_handler()
Signed-off-by: Tom Jackson <thomas.p.jackson@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/scsi/isci/phy.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/scsi/isci/phy.c b/drivers/scsi/isci/phy.c index c685ab04532f..474330fdbe1c 100644 --- a/drivers/scsi/isci/phy.c +++ b/drivers/scsi/isci/phy.c | |||
@@ -875,12 +875,19 @@ enum sci_status sci_phy_event_handler(struct isci_phy *iphy, u32 event_code) | |||
875 | sci_change_state(&iphy->sm, SCI_PHY_STARTING); | 875 | sci_change_state(&iphy->sm, SCI_PHY_STARTING); |
876 | break; | 876 | break; |
877 | case SCU_EVENT_BROADCAST_CHANGE: | 877 | case SCU_EVENT_BROADCAST_CHANGE: |
878 | case SCU_EVENT_BROADCAST_SES: | ||
879 | case SCU_EVENT_BROADCAST_RESERVED0: | ||
880 | case SCU_EVENT_BROADCAST_RESERVED1: | ||
881 | case SCU_EVENT_BROADCAST_EXPANDER: | ||
882 | case SCU_EVENT_BROADCAST_AEN: | ||
878 | /* Broadcast change received. Notify the port. */ | 883 | /* Broadcast change received. Notify the port. */ |
879 | if (phy_get_non_dummy_port(iphy) != NULL) | 884 | if (phy_get_non_dummy_port(iphy) != NULL) |
880 | sci_port_broadcast_change_received(iphy->owning_port, iphy); | 885 | sci_port_broadcast_change_received(iphy->owning_port, iphy); |
881 | else | 886 | else |
882 | iphy->bcn_received_while_port_unassigned = true; | 887 | iphy->bcn_received_while_port_unassigned = true; |
883 | break; | 888 | break; |
889 | case SCU_EVENT_BROADCAST_RESERVED3: | ||
890 | case SCU_EVENT_BROADCAST_RESERVED4: | ||
884 | default: | 891 | default: |
885 | phy_event_warn(iphy, state, event_code); | 892 | phy_event_warn(iphy, state, event_code); |
886 | return SCI_FAILURE_INVALID_STATE; | 893 | return SCI_FAILURE_INVALID_STATE; |