diff options
author | Dan Williams <dan.j.williams@intel.com> | 2011-04-25 14:29:29 -0700 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2011-07-03 04:00:38 -0700 |
commit | 00d680ef84570bc7aea023772d27e85b0052004c (patch) | |
tree | 9fe3aacd53e3e353e0fe7bfbebfdd458bc9025f5 /drivers/scsi/isci/core | |
parent | a1a113b0a1ea437daf099b44f8a39e93a02a3f47 (diff) | |
download | talos-obmc-linux-00d680ef84570bc7aea023772d27e85b0052004c.tar.gz talos-obmc-linux-00d680ef84570bc7aea023772d27e85b0052004c.zip |
isci: kill smp_discover_response
An lldd need never look at the contents of an smp_discover_response frame.
Kill the remaining locations where isci is looking at it:
1/ covering for expanders that do not set the stp_attached bit (already
handled by sas_ex_discover_end_dev)
2/ an overkill method to notifiy the rest of the driver about remote_device
sas addresses
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/scsi/isci/core')
-rw-r--r-- | drivers/scsi/isci/core/intel_sas.h | 197 | ||||
-rw-r--r-- | drivers/scsi/isci/core/scic_sds_smp_request.c | 20 |
2 files changed, 0 insertions, 217 deletions
diff --git a/drivers/scsi/isci/core/intel_sas.h b/drivers/scsi/isci/core/intel_sas.h index d9c9f33a7af5..b57f39c2cfc2 100644 --- a/drivers/scsi/isci/core/intel_sas.h +++ b/drivers/scsi/isci/core/intel_sas.h @@ -628,202 +628,6 @@ struct smp_response_report_manufacturer_information { }; -#define SMP_RESPONSE_DISCOVER_FORMAT_1_1_SIZE 52 -#define SMP_RESPONSE_DISCOVER_FORMAT_2_SIZE 116 - -/** - * struct smp_discover_response_protocols - This structure depicts the discover - * response where the supported protocols by the remote phy are specified. - * - * For specific information on each of these individual fields please reference - * the SAS specification Link layer section on address frames. - */ -struct smp_discover_response_protocols { - union { - struct { - u16 attached_sata_host:1; - u16 attached_smp_initiator:1; - u16 attached_stp_initiator:1; - u16 attached_ssp_initiator:1; - u16 reserved3:4; - u16 attached_sata_device:1; - u16 attached_smp_target:1; - u16 attached_stp_target:1; - u16 attached_ssp_target:1; - u16 reserved4:3; - u16 attached_sata_port_selector:1; - } bits; - - u16 all; - } u; - -}; - -/** - * struct SMP_RESPONSE_DISCOVER_FORMAT - This structure defines the SMP phy - * discover response format. It handles both SAS1.1 and SAS 2 definitions. - * The unions indicate locations where the SAS specification versions differ - * from one another. - * - * - */ -struct smp_response_discover { - - union { - struct { - u8 reserved[2]; - } sas1_1; - - struct { - u16 expander_change_count; - } sas2; - - } u1; - - u8 reserved1[3]; - u8 phy_identifier; - u8 reserved2[2]; - - union { - struct { - u16 reserved1:4; - u16 attached_device_type:3; - u16 reserved2:1; - u16 negotiated_physical_link_rate:4; - u16 reserved3:4; - } sas1_1; - - struct { - u16 attached_reason:4; - u16 attached_device_type:3; - u16 reserved2:1; - u16 negotiated_logical_link_rate:4; - u16 reserved3:4; - } sas2; - - } u2; - - struct smp_discover_response_protocols protocols; - struct sci_sas_address sas_address; - struct sci_sas_address attached_sas_address; - - u8 attached_phy_identifier; - - union { - struct { - u8 reserved; - } sas1_1; - - struct { - u8 attached_break_reply_capable:1; - u8 attached_requested_inside_zpsds:1; - u8 attached_inside_zpsds_persistent:1; - u8 reserved1:5; - } sas2; - - } u3; - - u8 reserved_for_identify[6]; - - u32 hardware_min_physical_link_rate:4; - u32 programmed_min_physical_link_rate:4; - u32 hardware_max_physical_link_rate:4; - u32 programmed_max_physical_link_rate:4; - u32 phy_change_count:8; - u32 partial_pathway_timeout_value:4; - u32 reserved5:3; - u32 virtual_phy:1; - - u32 routing_attribute:4; - u32 reserved6:4; - u32 connector_type:7; - u32 reserved7:1; - u32 connector_element_index:8; - u32 connector_physical_link:8; - - u16 reserved8; - u16 vendor_specific; - - union { - struct { - /** - * In the SAS 1.1 specification this structure ends after 52 bytes. - * As a result, the contents of this field should never have a - * real value. It is undefined. - */ - u8 undefined[SMP_RESPONSE_DISCOVER_FORMAT_2_SIZE - - SMP_RESPONSE_DISCOVER_FORMAT_1_1_SIZE]; - } sas1_1; - - struct { - struct sci_sas_address attached_device_name; - - u32 zoning_enabled:1; - u32 inside_zpsds:1; - u32 zone_group_persistent:1; - u32 reserved1:1; - u32 requested_inside_zpsds:1; - u32 inside_zpsds_persistent:1; - u32 requested_inside_zpsds_changed_by_expander:1; - u32 reserved2:1; - u32 reserved_for_zoning_fields:16; - u32 zone_group:8; - - u8 self_configuration_status; - u8 self_configuration_levels_completed; - u16 reserved_for_self_config_fields; - - struct sci_sas_address self_configuration_sas_address; - - u32 programmed_phy_capabilities; - u32 current_phy_capabilities; - u32 attached_phy_capabilities; - - u32 reserved3; - - u32 reserved4:16; - u32 negotiated_physical_link_rate:4; - u32 reason:4; - u32 hardware_muxing_supported:1; - u32 negotiated_ssc:1; - u32 reserved5:6; - - u32 default_zoning_enabled:1; - u32 reserved6:1; - u32 default_zone_group_persistent:1; - u32 reserved7:1; - u32 default_requested_inside_zpsds:1; - u32 default_inside_zpsds_persistent:1; - u32 reserved8:2; - u32 reserved9:16; - u32 default_zone_group:8; - - u32 saved_zoning_enabled:1; - u32 reserved10:1; - u32 saved_zone_group_persistent:1; - u32 reserved11:1; - u32 saved_requested_inside_zpsds:1; - u32 saved_inside_zpsds_persistent:1; - u32 reserved12:18; - u32 saved_zone_group:8; - - u32 reserved14:2; - u32 shadow_zone_group_persistent:1; - u32 reserved15:1; - u32 shadow_requested_inside_zpsds:1; - u32 shadow_inside_zpsds_persistent:1; - u32 reserved16:18; - u32 shadow_zone_group:8; - - u8 device_slot_number; - u8 device_slot_group_number; - u8 device_slot_group_output_connector[6]; - } sas2; - - } u4; - -}; - /** * struct smp_response_report_phy_sata - This structure depicts the contents of * the SAS SMP REPORT PHY SATA frame. For specific information on each of @@ -857,7 +661,6 @@ struct smp_response_vendor_specific { union smp_response_body { struct smp_response_report_general report_general; struct smp_response_report_manufacturer_information report_manufacturer_information; - struct smp_response_discover discover; struct smp_response_report_phy_sata report_phy_sata; struct smp_response_vendor_specific vendor_specific_response; }; diff --git a/drivers/scsi/isci/core/scic_sds_smp_request.c b/drivers/scsi/isci/core/scic_sds_smp_request.c index 1790f25758d1..d4009e57acaf 100644 --- a/drivers/scsi/isci/core/scic_sds_smp_request.c +++ b/drivers/scsi/isci/core/scic_sds_smp_request.c @@ -339,26 +339,6 @@ static enum sci_status scic_sds_smp_request_await_response_frame_handler( smp_response_buffer, sizeof(union smp_response_body) / sizeof(u32) ); - if (rsp_hdr->function == SMP_FUNCTION_DISCOVER) { - struct smp_response *smp_resp; - - smp_resp = (struct smp_response *)user_smp_buffer; - - /* - * Some expanders only report an attached SATA device, and - * not an STP target. Since the core depends on the STP - * target attribute to correctly build I/O, set the bit now - * if necessary. */ - if (smp_resp->response.discover.protocols.u.bits.attached_sata_device - && !smp_resp->response.discover.protocols.u.bits.attached_stp_target) { - smp_resp->response.discover.protocols.u.bits.attached_stp_target = 1; - - dev_dbg(scic_to_dev(sci_req->owning_controller), - "%s: scic_sds_smp_request_await_response_frame_handler(0x%p) Found SATA dev, setting STP bit.\n", - __func__, sci_req); - } - } - /* * Don't need to copy to user space. User instead will refer to * core request's response buffer. */ |