|
@@ -198,184 +198,6 @@ struct sci_ssp_frame_header {
|
|
|
|
|
|
};
|
|
|
|
|
|
-/**
|
|
|
- * struct smp_response_header - This structure depicts the contents of the SAS
|
|
|
- * SMP DISCOVER RESPONSE frame. For specific information on each of these
|
|
|
- * individual fields please reference the SAS specification Link layer
|
|
|
- * section on address frames.
|
|
|
- *
|
|
|
- *
|
|
|
- */
|
|
|
-struct smp_response_header {
|
|
|
- u8 smp_frame_type; /* byte 0 */
|
|
|
- u8 function; /* byte 1 */
|
|
|
- u8 function_result; /* byte 2 */
|
|
|
- u8 response_length; /* byte 3 */
|
|
|
-};
|
|
|
-
|
|
|
-
|
|
|
-/**
|
|
|
- * struct smp_response_report_general - This structure depicts the SMP Report
|
|
|
- * General for expander devices. It adheres to the SAS-2.1 specification.
|
|
|
- *
|
|
|
- * For specific information on each of these individual fields please reference
|
|
|
- * the SAS specification Application layer section on SMP.
|
|
|
- */
|
|
|
-struct smp_response_report_general {
|
|
|
- u16 expander_change_count; /* byte 4-5 */
|
|
|
- u16 expander_route_indexes; /* byte 6-7 */
|
|
|
-
|
|
|
- u32 reserved_byte8:7; /* byte 8 bit 0-6 */
|
|
|
- u32 long_response:1; /* byte 8 bit 7 */
|
|
|
-
|
|
|
- u32 number_of_phys:8; /* byte 9 */
|
|
|
-
|
|
|
- u32 configurable_route_table:1; /* byte 10 */
|
|
|
- u32 configuring:1;
|
|
|
- u32 configures_others:1;
|
|
|
- u32 open_reject_retry_supported:1;
|
|
|
- u32 stp_continue_awt:1;
|
|
|
- u32 self_configuring:1;
|
|
|
- u32 zone_configuring:1;
|
|
|
- u32 table_to_table_supported:1;
|
|
|
-
|
|
|
- u32 reserved_byte11:8; /* byte 11 */
|
|
|
-
|
|
|
- u32 enclosure_logical_identifier_high; /* byte 12-15 */
|
|
|
- u32 enclosure_logical_identifier_low; /* byte 16-19 */
|
|
|
-
|
|
|
- u32 reserved_byte20_23;
|
|
|
- u32 reserved_byte24_27;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-struct smp_response_report_general_long {
|
|
|
- struct smp_response_report_general sas1_1;
|
|
|
-
|
|
|
- struct {
|
|
|
- u16 reserved1;
|
|
|
- u16 stp_bus_inactivity_time_limit;
|
|
|
- u16 stp_max_connect_time_limit;
|
|
|
- u16 stp_smp_i_t_nexus_loss_time;
|
|
|
-
|
|
|
- u32 zoning_enabled:1;
|
|
|
- u32 zoning_supported:1;
|
|
|
- u32 physicaL_presence_asserted:1;
|
|
|
- u32 zone_locked:1;
|
|
|
- u32 reserved2:1;
|
|
|
- u32 num_zone_groups:3;
|
|
|
- u32 saving_zoning_enabled_supported:3;
|
|
|
- u32 saving_zone_perms_table_supported:1;
|
|
|
- u32 saving_zone_phy_info_supported:1;
|
|
|
- u32 saving_zone_manager_password_supported:1;
|
|
|
- u32 saving:1;
|
|
|
- u32 reserved3:1;
|
|
|
- u32 max_number_routed_sas_addresses:16;
|
|
|
-
|
|
|
- struct sci_sas_address active_zone_manager_sas_address;
|
|
|
-
|
|
|
- u16 zone_lock_inactivity_time_limit;
|
|
|
- u16 reserved4;
|
|
|
-
|
|
|
- u8 reserved5;
|
|
|
- u8 first_enclosure_connector_element_index;
|
|
|
- u8 number_of_enclosure_connector_element_indices;
|
|
|
- u8 reserved6;
|
|
|
-
|
|
|
- u32 reserved7:7;
|
|
|
- u32 reduced_functionality:1;
|
|
|
- u32 time_to_reduce_functionality:8;
|
|
|
- u32 initial_time_to_reduce_functionality:8;
|
|
|
- u8 max_reduced_functionality_time;
|
|
|
-
|
|
|
- u16 last_self_config_status_descriptor_index;
|
|
|
- u16 max_number_of_stored_self_config_status_descriptors;
|
|
|
-
|
|
|
- u16 last_phy_event_list_descriptor_index;
|
|
|
- u16 max_number_of_stored_phy_event_list_descriptors;
|
|
|
- } sas2;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * struct smp_response_report_manufacturer_information - This structure depicts
|
|
|
- * the SMP report manufacturer information for expander devices. It adheres
|
|
|
- * to the SAS-2.1 specification.
|
|
|
- *
|
|
|
- * For specific information on each of these individual fields please reference
|
|
|
- * the SAS specification Application layer section on SMP.
|
|
|
- */
|
|
|
-struct smp_response_report_manufacturer_information {
|
|
|
- u32 expander_change_count:16; /* bytes 4-5 */
|
|
|
- u32 reserved1:16;
|
|
|
-
|
|
|
- u32 sas1_1_format:1;
|
|
|
- u32 reserved2:31;
|
|
|
-
|
|
|
- u8 vendor_id[8];
|
|
|
- u8 product_id[16];
|
|
|
- u8 product_revision_level[4];
|
|
|
- u8 component_vendor_id[8];
|
|
|
- u8 component_id[2];
|
|
|
- u8 component_revision_level;
|
|
|
- u8 reserved3;
|
|
|
- u8 vendor_specific[8];
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * 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
|
|
|
- * these individual fields please reference the SAS specification Link layer
|
|
|
- * section on address frames.
|
|
|
- *
|
|
|
- *
|
|
|
- */
|
|
|
-struct smp_response_report_phy_sata {
|
|
|
- u32 ignored_byte_4_7; /* bytes 4-7 */
|
|
|
-
|
|
|
- u32 affiliations_valid:1;
|
|
|
- u32 affiliations_supported:1;
|
|
|
- u32 reserved_byte11:6; /* byte 11 */
|
|
|
- u32 ignored_byte10:8; /* byte 10 */
|
|
|
- u32 phy_identifier:8; /* byte 9 */
|
|
|
- u32 reserved_byte_8:8; /* byte 8 */
|
|
|
-
|
|
|
- u32 reserved_12_15;
|
|
|
- u32 stp_sas_address[2];
|
|
|
- u8 device_to_host_fis[20];
|
|
|
- u32 reserved_44_47;
|
|
|
- u32 affiliated_stp_initiator_sas_address[2];
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-#define SMP_REQUEST_VENDOR_SPECIFIC_MAX_LENGTH 1016
|
|
|
-struct smp_response_vendor_specific {
|
|
|
- u8 response_bytes[SMP_REQUEST_VENDOR_SPECIFIC_MAX_LENGTH];
|
|
|
-};
|
|
|
-
|
|
|
-union smp_response_body {
|
|
|
- struct smp_response_report_general report_general;
|
|
|
- struct smp_response_report_manufacturer_information report_manufacturer_information;
|
|
|
- struct smp_response_report_phy_sata report_phy_sata;
|
|
|
- struct smp_response_vendor_specific vendor_specific_response;
|
|
|
-};
|
|
|
-
|
|
|
-/**
|
|
|
- * struct smp_response - This structure simply unionizes the existing response
|
|
|
- * structures into a common response type.
|
|
|
- *
|
|
|
- *
|
|
|
- */
|
|
|
-struct smp_response {
|
|
|
- struct smp_response_header header;
|
|
|
-
|
|
|
- union smp_response_body response;
|
|
|
-
|
|
|
-};
|
|
|
-
|
|
|
-#define SMP_FRAME_TYPE_REQUEST 0x40
|
|
|
-#define SMP_FRAME_TYPE_RESPONSE 0x41
|
|
|
|
|
|
#define PHY_OPERATION_NOP 0x00
|
|
|
#define PHY_OPERATION_LINK_RESET 0x01
|