Will give a description for sas command process in PMC expander fw. Just for study recoreding.
1.Initialization and register the ISR(sas_pack_isr) function:
tx_application_define()--->sxp_mod_post_create_init--->sas_init()--->sas_portctl_init()
--->pack_init()--->cicint_int_set(): register the pack device driver ISR: -->sas_pack_isr
2.ISR(sas_pack_isr) process:
Interrupt happened--->receive isr msg--->sas_msg_send()--->sas_thread_entry()
--->sas_portctl_process_pack_events()--->sas_ssp_link.frame_rx_fnptr()==sas_ssp_link_event_frame_rx_hndl
--->ssptransport_vtable_ptr->frame_rx_fnptr==sas_ssptarg_transport_frame_received()
--->ssptarg_nexus_init(STE_SCSI_MESSAGE_TYPE_CMD)--->send to ste_mbx_info(ssptarg_mbx_info = ste_parms_ptr->config.ste_mbx_info)
--->ste_main()--->process_message()--->ste_process_scsi_msg()--->process_cmd_msg()--->ste_cmd_process_cmd_msg()--->
process_send_diagnostic_cmd()--->STE_SCSI_MESSAGE_TYPE_DATA_OUT sender:ste_mbx_info,recipient:scsi_mbx_info--->sas_thread_entry()
--->sas_ssptarg_transport_rx_data_out()--->send to ste thread--->process_data_out_msg()--->ste_cmd_process_data_out_msg()
--->process_send_diagnostic_data_out()--->STE_SES_MSG_TYPE_SEND_DIAG:send to ses thread--->ses_msg_queue_process()
--->ses_send_diag_process()
本文详细解析了PMC展开FW中SAS命令处理流程,从初始化和注册ISR开始,通过TX_APPLICATION_DEFINE到STE_MAIN,最终实现命令消息的发送和接收。
1394

被折叠的 条评论
为什么被折叠?



