1*d14abf15SRobert Mustacchi #ifndef _LM_SP_REQ_MGR_H 2*d14abf15SRobert Mustacchi #define _LM_SP_REQ_MGR_H 3*d14abf15SRobert Mustacchi 4*d14abf15SRobert Mustacchi #include "listq.h" 5*d14abf15SRobert Mustacchi 6*d14abf15SRobert Mustacchi /******************************************************************************* 7*d14abf15SRobert Mustacchi * slow path request manager data structures 8*d14abf15SRobert Mustacchi ******************************************************************************/ 9*d14abf15SRobert Mustacchi 10*d14abf15SRobert Mustacchi /* Frward declaration */ 11*d14abf15SRobert Mustacchi struct _lm_device_t; 12*d14abf15SRobert Mustacchi 13*d14abf15SRobert Mustacchi typedef struct _lm_sp_req_common_t 14*d14abf15SRobert Mustacchi { 15*d14abf15SRobert Mustacchi s_list_entry_t link; 16*d14abf15SRobert Mustacchi void *req_post_func; 17*d14abf15SRobert Mustacchi void *req_post_ctx; 18*d14abf15SRobert Mustacchi u32_t req_seq_number; 19*d14abf15SRobert Mustacchi } lm_sp_req_common_t; 20*d14abf15SRobert Mustacchi 21*d14abf15SRobert Mustacchi typedef lm_status_t (*req_post_function)( 22*d14abf15SRobert Mustacchi struct _lm_device_t *pdev, 23*d14abf15SRobert Mustacchi void *state_ctx, /* tcp_state / iscsi_state */ 24*d14abf15SRobert Mustacchi lm_sp_req_common_t *sp_req); 25*d14abf15SRobert Mustacchi 26*d14abf15SRobert Mustacchi typedef struct _lm_sp_req_manager_t 27*d14abf15SRobert Mustacchi { 28*d14abf15SRobert Mustacchi s_list_t pending_reqs; 29*d14abf15SRobert Mustacchi u32_t req_seq_number; 30*d14abf15SRobert Mustacchi u8_t blocked; 31*d14abf15SRobert Mustacchi /* ToDo: use instaed of tcpstate.sp_request */ 32*d14abf15SRobert Mustacchi lm_sp_req_common_t * posted_req; 33*d14abf15SRobert Mustacchi void * sp_data_virt_addr; 34*d14abf15SRobert Mustacchi lm_address_t sp_data_phys_addr; 35*d14abf15SRobert Mustacchi } lm_sp_req_manager_t; 36*d14abf15SRobert Mustacchi 37*d14abf15SRobert Mustacchi 38*d14abf15SRobert Mustacchi 39*d14abf15SRobert Mustacchi /******************************************************************************* 40*d14abf15SRobert Mustacchi * slow path request manager prototypes 41*d14abf15SRobert Mustacchi ******************************************************************************/ 42*d14abf15SRobert Mustacchi lm_status_t 43*d14abf15SRobert Mustacchi lm_sp_req_manager_set_sp_data( 44*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 45*d14abf15SRobert Mustacchi IN u32_t cid, 46*d14abf15SRobert Mustacchi IN void *virt_addr, 47*d14abf15SRobert Mustacchi IN lm_address_t phys_addr 48*d14abf15SRobert Mustacchi ); 49*d14abf15SRobert Mustacchi 50*d14abf15SRobert Mustacchi lm_status_t 51*d14abf15SRobert Mustacchi lm_sp_req_manager_init( 52*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 53*d14abf15SRobert Mustacchi IN u32_t cid 54*d14abf15SRobert Mustacchi ); 55*d14abf15SRobert Mustacchi 56*d14abf15SRobert Mustacchi lm_status_t 57*d14abf15SRobert Mustacchi lm_sp_req_manager_shutdown( 58*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 59*d14abf15SRobert Mustacchi IN u32_t cid 60*d14abf15SRobert Mustacchi ); 61*d14abf15SRobert Mustacchi 62*d14abf15SRobert Mustacchi lm_status_t 63*d14abf15SRobert Mustacchi lm_sp_req_manager_post( 64*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 65*d14abf15SRobert Mustacchi IN u32_t cid, 66*d14abf15SRobert Mustacchi IN struct _lm_sp_req_common_t *sp_req 67*d14abf15SRobert Mustacchi ); 68*d14abf15SRobert Mustacchi 69*d14abf15SRobert Mustacchi lm_status_t 70*d14abf15SRobert Mustacchi lm_sp_req_manager_complete( 71*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 72*d14abf15SRobert Mustacchi IN u32_t cid, 73*d14abf15SRobert Mustacchi IN u32_t seq_num, 74*d14abf15SRobert Mustacchi OUT lm_sp_req_common_t **sp_req 75*d14abf15SRobert Mustacchi ); 76*d14abf15SRobert Mustacchi 77*d14abf15SRobert Mustacchi lm_status_t 78*d14abf15SRobert Mustacchi lm_sp_req_manager_block( 79*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 80*d14abf15SRobert Mustacchi IN u32_t cid 81*d14abf15SRobert Mustacchi ); 82*d14abf15SRobert Mustacchi 83*d14abf15SRobert Mustacchi lm_status_t 84*d14abf15SRobert Mustacchi lm_sp_req_manager_unblock( 85*d14abf15SRobert Mustacchi IN struct _lm_device_t *pdev, 86*d14abf15SRobert Mustacchi IN u32_t cid, 87*d14abf15SRobert Mustacchi OUT lm_sp_req_common_t **sp_req 88*d14abf15SRobert Mustacchi ); 89*d14abf15SRobert Mustacchi 90*d14abf15SRobert Mustacchi 91*d14abf15SRobert Mustacchi #endif /* _LM_SP_REQ_MGR_H */ 92