151
152 typedef struct {
153 stmf_data_buf_t *pbuf_stmf_buf;
154 boolean_t pbuf_is_immed;
155 stmf_ic_msg_t *pbuf_immed_msg;
156 } pppt_buf_t;
157
158 typedef enum {
159 PTS_INIT = 0,
160 PTS_ACTIVE,
161 PTS_DONE,
162 PTS_SENT_STATUS,
163 PTS_ABORTED
164 } pppt_task_state_t;
165
166 typedef struct {
167 pppt_sess_t *pt_sess;
168 avl_node_t pt_sess_ln;
169 int pt_refcnt;
170 kmutex_t pt_mutex;
171 kcondvar_t pt_cv;
172 stmf_ic_msgid_t pt_task_id;
173 uint8_t pt_lun_id[16];
174 pppt_task_state_t pt_state;
175 scsi_task_t *pt_stmf_task;
176 pppt_buf_t *pt_immed_data;
177 pppt_buf_t *pt_read_buf;
178 stmf_ic_msgid_t pt_read_xfer_msgid;
179 } pppt_task_t;
180
181 /*
182 * Error statistics
183 */
184 typedef struct {
185 uint64_t es_tgt_reg_svc_disabled;
186 uint64_t es_tgt_reg_duplicate;
187 uint64_t es_tgt_reg_create_fail;
188 uint64_t es_tgt_dereg_svc_disabled;
189 uint64_t es_tgt_dereg_not_found;
190 uint64_t es_sess_destroy_no_session;
191 uint64_t es_sess_lookup_no_session;
279
280 void pppt_msg_rx(stmf_ic_msg_t *msg);
281
282 void pppt_msg_tx_status(stmf_ic_msg_t *orig_msg, stmf_status_t status);
283
284 pppt_tgt_t *pppt_tgt_lookup(scsi_devid_desc_t *tgt_devid);
285
286 pppt_tgt_t *pppt_tgt_lookup_locked(scsi_devid_desc_t *tgt_devid);
287
288 pppt_tgt_t *pppt_tgt_create(stmf_ic_reg_port_msg_t *reg_port,
289 stmf_status_t *errcode);
290
291 void pppt_tgt_async_delete(pppt_tgt_t *tgt);
292
293 void pppt_tgt_destroy(pppt_tgt_t *tgt);
294
295 int pppt_tgt_avl_compare(const void *void_tgt1, const void *void_tgt2);
296
297 void pppt_tgt_sm_ctl(stmf_local_port_t *lport, int cmd, void *arg);
298
299 #ifdef __cplusplus
300 }
301 #endif
302
303 #endif /* _PPPT_H */
|
151
152 typedef struct {
153 stmf_data_buf_t *pbuf_stmf_buf;
154 boolean_t pbuf_is_immed;
155 stmf_ic_msg_t *pbuf_immed_msg;
156 } pppt_buf_t;
157
158 typedef enum {
159 PTS_INIT = 0,
160 PTS_ACTIVE,
161 PTS_DONE,
162 PTS_SENT_STATUS,
163 PTS_ABORTED
164 } pppt_task_state_t;
165
166 typedef struct {
167 pppt_sess_t *pt_sess;
168 avl_node_t pt_sess_ln;
169 int pt_refcnt;
170 kmutex_t pt_mutex;
171 stmf_ic_msgid_t pt_task_id;
172 uint8_t pt_lun_id[16];
173 pppt_task_state_t pt_state;
174 scsi_task_t *pt_stmf_task;
175 pppt_buf_t *pt_immed_data;
176 pppt_buf_t *pt_read_buf;
177 stmf_ic_msgid_t pt_read_xfer_msgid;
178 } pppt_task_t;
179
180 /*
181 * Error statistics
182 */
183 typedef struct {
184 uint64_t es_tgt_reg_svc_disabled;
185 uint64_t es_tgt_reg_duplicate;
186 uint64_t es_tgt_reg_create_fail;
187 uint64_t es_tgt_dereg_svc_disabled;
188 uint64_t es_tgt_dereg_not_found;
189 uint64_t es_sess_destroy_no_session;
190 uint64_t es_sess_lookup_no_session;
278
279 void pppt_msg_rx(stmf_ic_msg_t *msg);
280
281 void pppt_msg_tx_status(stmf_ic_msg_t *orig_msg, stmf_status_t status);
282
283 pppt_tgt_t *pppt_tgt_lookup(scsi_devid_desc_t *tgt_devid);
284
285 pppt_tgt_t *pppt_tgt_lookup_locked(scsi_devid_desc_t *tgt_devid);
286
287 pppt_tgt_t *pppt_tgt_create(stmf_ic_reg_port_msg_t *reg_port,
288 stmf_status_t *errcode);
289
290 void pppt_tgt_async_delete(pppt_tgt_t *tgt);
291
292 void pppt_tgt_destroy(pppt_tgt_t *tgt);
293
294 int pppt_tgt_avl_compare(const void *void_tgt1, const void *void_tgt2);
295
296 void pppt_tgt_sm_ctl(stmf_local_port_t *lport, int cmd, void *arg);
297
298 pppt_status_t pppt_task_hold(pppt_task_t *);
299
300 #ifdef __cplusplus
301 }
302 #endif
303
304 #endif /* _PPPT_H */
|