[SCSI] lpfc 8.3.20: Implement the FC and SLI async event handlers
Implement the FC and SLI async event handlers: - Updated MQ_CREATE_EXT mailbox structure to include fc and SLI async events. - Added the SLI trailer code. - Split physical field into type and number to reflect latest SLI spec. - Changed lpfc_acqe_fcoe to lpfc_acqe_fip to reflect latest Spec changes. - Added lpfc_acqe_fc_la structure for FC link attention async events. - Added lpfc_acqe_sli structure for sli async events. - Added lpfc_sli4_async_fc_evt routine to handle fc la async events. - Added lpfc_sli4_async_sli routine to handle sli async events. - Moved LPFC_TRAILER_CODE_FC to be handled by its own handler function. Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com> Signed-off-by: James Smart <james.smart@emulex.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:

committed by
James Bottomley

parent
be858b65cf
commit
70f3c07336
@@ -1134,12 +1134,18 @@ struct lpfc_mbx_mq_create_ext {
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_link_SHIFT LPFC_TRAILER_CODE_LINK
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_link_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_link_WORD async_evt_bmap
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fcfste_SHIFT LPFC_TRAILER_CODE_FCOE
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fcfste_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fcfste_WORD async_evt_bmap
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fip_SHIFT LPFC_TRAILER_CODE_FCOE
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fip_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fip_WORD async_evt_bmap
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_group5_SHIFT LPFC_TRAILER_CODE_GRP5
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_group5_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_group5_WORD async_evt_bmap
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fc_SHIFT LPFC_TRAILER_CODE_FC
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fc_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_fc_WORD async_evt_bmap
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_sli_SHIFT LPFC_TRAILER_CODE_SLI
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_sli_MASK 0x00000001
|
||||
#define lpfc_mbx_mq_create_ext_async_evt_sli_WORD async_evt_bmap
|
||||
struct mq_context context;
|
||||
struct dma_address page[LPFC_MAX_MQ_PAGE];
|
||||
} request;
|
||||
@@ -1393,7 +1399,7 @@ struct lpfc_mbx_query_fw_cfg {
|
||||
#define lpfc_function_mode_dal_WORD function_mode
|
||||
#define lpfc_function_mode_lro_SHIFT 9
|
||||
#define lpfc_function_mode_lro_MASK 0x00000001
|
||||
#define lpfc_function_mode_lro_WORD function_mode9
|
||||
#define lpfc_function_mode_lro_WORD function_mode
|
||||
#define lpfc_function_mode_flex10_SHIFT 10
|
||||
#define lpfc_function_mode_flex10_MASK 0x00000001
|
||||
#define lpfc_function_mode_flex10_WORD function_mode
|
||||
@@ -2162,6 +2168,7 @@ struct lpfc_mcqe {
|
||||
#define LPFC_TRAILER_CODE_DCBX 0x3
|
||||
#define LPFC_TRAILER_CODE_GRP5 0x5
|
||||
#define LPFC_TRAILER_CODE_FC 0x10
|
||||
#define LPFC_TRAILER_CODE_SLI 0x11
|
||||
};
|
||||
|
||||
struct lpfc_acqe_link {
|
||||
@@ -2187,11 +2194,12 @@ struct lpfc_acqe_link {
|
||||
#define LPFC_ASYNC_LINK_STATUS_UP 0x1
|
||||
#define LPFC_ASYNC_LINK_STATUS_LOGICAL_DOWN 0x2
|
||||
#define LPFC_ASYNC_LINK_STATUS_LOGICAL_UP 0x3
|
||||
#define lpfc_acqe_link_physical_SHIFT 0
|
||||
#define lpfc_acqe_link_physical_MASK 0x000000FF
|
||||
#define lpfc_acqe_link_physical_WORD word0
|
||||
#define LPFC_ASYNC_LINK_PORT_A 0x0
|
||||
#define LPFC_ASYNC_LINK_PORT_B 0x1
|
||||
#define lpfc_acqe_link_type_SHIFT 6
|
||||
#define lpfc_acqe_link_type_MASK 0x00000003
|
||||
#define lpfc_acqe_link_type_WORD word0
|
||||
#define lpfc_acqe_link_number_SHIFT 0
|
||||
#define lpfc_acqe_link_number_MASK 0x0000003F
|
||||
#define lpfc_acqe_link_number_WORD word0
|
||||
uint32_t word1;
|
||||
#define lpfc_acqe_link_fault_SHIFT 0
|
||||
#define lpfc_acqe_link_fault_MASK 0x000000FF
|
||||
@@ -2199,29 +2207,31 @@ struct lpfc_acqe_link {
|
||||
#define LPFC_ASYNC_LINK_FAULT_NONE 0x0
|
||||
#define LPFC_ASYNC_LINK_FAULT_LOCAL 0x1
|
||||
#define LPFC_ASYNC_LINK_FAULT_REMOTE 0x2
|
||||
#define lpfc_acqe_qos_link_speed_SHIFT 16
|
||||
#define lpfc_acqe_qos_link_speed_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_qos_link_speed_WORD word1
|
||||
#define lpfc_acqe_logical_link_speed_SHIFT 16
|
||||
#define lpfc_acqe_logical_link_speed_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_logical_link_speed_WORD word1
|
||||
uint32_t event_tag;
|
||||
uint32_t trailer;
|
||||
#define LPFC_LINK_EVENT_TYPE_PHYSICAL 0x0
|
||||
#define LPFC_LINK_EVENT_TYPE_VIRTUAL 0x1
|
||||
};
|
||||
|
||||
struct lpfc_acqe_fcoe {
|
||||
struct lpfc_acqe_fip {
|
||||
uint32_t index;
|
||||
uint32_t word1;
|
||||
#define lpfc_acqe_fcoe_fcf_count_SHIFT 0
|
||||
#define lpfc_acqe_fcoe_fcf_count_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_fcoe_fcf_count_WORD word1
|
||||
#define lpfc_acqe_fcoe_event_type_SHIFT 16
|
||||
#define lpfc_acqe_fcoe_event_type_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_fcoe_event_type_WORD word1
|
||||
#define LPFC_FCOE_EVENT_TYPE_NEW_FCF 0x1
|
||||
#define LPFC_FCOE_EVENT_TYPE_FCF_TABLE_FULL 0x2
|
||||
#define LPFC_FCOE_EVENT_TYPE_FCF_DEAD 0x3
|
||||
#define LPFC_FCOE_EVENT_TYPE_CVL 0x4
|
||||
#define LPFC_FCOE_EVENT_TYPE_FCF_PARAM_MOD 0x5
|
||||
#define lpfc_acqe_fip_fcf_count_SHIFT 0
|
||||
#define lpfc_acqe_fip_fcf_count_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_fip_fcf_count_WORD word1
|
||||
#define lpfc_acqe_fip_event_type_SHIFT 16
|
||||
#define lpfc_acqe_fip_event_type_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_fip_event_type_WORD word1
|
||||
uint32_t event_tag;
|
||||
uint32_t trailer;
|
||||
#define LPFC_FIP_EVENT_TYPE_NEW_FCF 0x1
|
||||
#define LPFC_FIP_EVENT_TYPE_FCF_TABLE_FULL 0x2
|
||||
#define LPFC_FIP_EVENT_TYPE_FCF_DEAD 0x3
|
||||
#define LPFC_FIP_EVENT_TYPE_CVL 0x4
|
||||
#define LPFC_FIP_EVENT_TYPE_FCF_PARAM_MOD 0x5
|
||||
};
|
||||
|
||||
struct lpfc_acqe_dcbx {
|
||||
@@ -2233,9 +2243,12 @@ struct lpfc_acqe_dcbx {
|
||||
|
||||
struct lpfc_acqe_grp5 {
|
||||
uint32_t word0;
|
||||
#define lpfc_acqe_grp5_pport_SHIFT 0
|
||||
#define lpfc_acqe_grp5_pport_MASK 0x000000FF
|
||||
#define lpfc_acqe_grp5_pport_WORD word0
|
||||
#define lpfc_acqe_grp5_type_SHIFT 6
|
||||
#define lpfc_acqe_grp5_type_MASK 0x00000003
|
||||
#define lpfc_acqe_grp5_type_WORD word0
|
||||
#define lpfc_acqe_grp5_number_SHIFT 0
|
||||
#define lpfc_acqe_grp5_number_MASK 0x0000003F
|
||||
#define lpfc_acqe_grp5_number_WORD word0
|
||||
uint32_t word1;
|
||||
#define lpfc_acqe_grp5_llink_spd_SHIFT 16
|
||||
#define lpfc_acqe_grp5_llink_spd_MASK 0x0000FFFF
|
||||
@@ -2244,6 +2257,68 @@ struct lpfc_acqe_grp5 {
|
||||
uint32_t trailer;
|
||||
};
|
||||
|
||||
struct lpfc_acqe_fc_la {
|
||||
uint32_t word0;
|
||||
#define lpfc_acqe_fc_la_speed_SHIFT 24
|
||||
#define lpfc_acqe_fc_la_speed_MASK 0x000000FF
|
||||
#define lpfc_acqe_fc_la_speed_WORD word0
|
||||
#define LPFC_FC_LA_SPEED_UNKOWN 0x0
|
||||
#define LPFC_FC_LA_SPEED_1G 0x1
|
||||
#define LPFC_FC_LA_SPEED_2G 0x2
|
||||
#define LPFC_FC_LA_SPEED_4G 0x4
|
||||
#define LPFC_FC_LA_SPEED_8G 0x8
|
||||
#define LPFC_FC_LA_SPEED_10G 0xA
|
||||
#define LPFC_FC_LA_SPEED_16G 0x10
|
||||
#define lpfc_acqe_fc_la_topology_SHIFT 16
|
||||
#define lpfc_acqe_fc_la_topology_MASK 0x000000FF
|
||||
#define lpfc_acqe_fc_la_topology_WORD word0
|
||||
#define LPFC_FC_LA_TOP_UNKOWN 0x0
|
||||
#define LPFC_FC_LA_TOP_P2P 0x1
|
||||
#define LPFC_FC_LA_TOP_FCAL 0x2
|
||||
#define LPFC_FC_LA_TOP_INTERNAL_LOOP 0x3
|
||||
#define LPFC_FC_LA_TOP_SERDES_LOOP 0x4
|
||||
#define lpfc_acqe_fc_la_att_type_SHIFT 8
|
||||
#define lpfc_acqe_fc_la_att_type_MASK 0x000000FF
|
||||
#define lpfc_acqe_fc_la_att_type_WORD word0
|
||||
#define LPFC_FC_LA_TYPE_LINK_UP 0x1
|
||||
#define LPFC_FC_LA_TYPE_LINK_DOWN 0x2
|
||||
#define LPFC_FC_LA_TYPE_NO_HARD_ALPA 0x3
|
||||
#define lpfc_acqe_fc_la_port_type_SHIFT 6
|
||||
#define lpfc_acqe_fc_la_port_type_MASK 0x00000003
|
||||
#define lpfc_acqe_fc_la_port_type_WORD word0
|
||||
#define LPFC_LINK_TYPE_ETHERNET 0x0
|
||||
#define LPFC_LINK_TYPE_FC 0x1
|
||||
#define lpfc_acqe_fc_la_port_number_SHIFT 0
|
||||
#define lpfc_acqe_fc_la_port_number_MASK 0x0000003F
|
||||
#define lpfc_acqe_fc_la_port_number_WORD word0
|
||||
uint32_t word1;
|
||||
#define lpfc_acqe_fc_la_llink_spd_SHIFT 16
|
||||
#define lpfc_acqe_fc_la_llink_spd_MASK 0x0000FFFF
|
||||
#define lpfc_acqe_fc_la_llink_spd_WORD word1
|
||||
#define lpfc_acqe_fc_la_fault_SHIFT 0
|
||||
#define lpfc_acqe_fc_la_fault_MASK 0x000000FF
|
||||
#define lpfc_acqe_fc_la_fault_WORD word1
|
||||
#define LPFC_FC_LA_FAULT_NONE 0x0
|
||||
#define LPFC_FC_LA_FAULT_LOCAL 0x1
|
||||
#define LPFC_FC_LA_FAULT_REMOTE 0x2
|
||||
uint32_t event_tag;
|
||||
uint32_t trailer;
|
||||
#define LPFC_FC_LA_EVENT_TYPE_FC_LINK 0x1
|
||||
#define LPFC_FC_LA_EVENT_TYPE_SHARED_LINK 0x2
|
||||
};
|
||||
|
||||
struct lpfc_acqe_sli {
|
||||
uint32_t event_data1;
|
||||
uint32_t event_data2;
|
||||
uint32_t reserved;
|
||||
uint32_t trailer;
|
||||
#define LPFC_SLI_EVENT_TYPE_PORT_ERROR 0x1
|
||||
#define LPFC_SLI_EVENT_TYPE_OVER_TEMP 0x2
|
||||
#define LPFC_SLI_EVENT_TYPE_NORM_TEMP 0x3
|
||||
#define LPFC_SLI_EVENT_TYPE_NVLOG_POST 0x4
|
||||
#define LPFC_SLI_EVENT_TYPE_DIAG_DUMP 0x5
|
||||
};
|
||||
|
||||
/*
|
||||
* Define the bootstrap mailbox (bmbx) region used to communicate
|
||||
* mailbox command between the host and port. The mailbox consists
|
||||
|
Reference in New Issue
Block a user