13f993063SNicholas Bellinger #include <linux/module.h> 23f993063SNicholas Bellinger #include <linux/list.h> 33f993063SNicholas Bellinger #include "../../../drivers/target/iscsi/iscsi_target_core.h" 43f993063SNicholas Bellinger 53f993063SNicholas Bellinger struct iscsit_transport { 63f993063SNicholas Bellinger #define ISCSIT_TRANSPORT_NAME 16 73f993063SNicholas Bellinger char name[ISCSIT_TRANSPORT_NAME]; 83f993063SNicholas Bellinger int transport_type; 93f993063SNicholas Bellinger struct module *owner; 103f993063SNicholas Bellinger struct list_head t_node; 113f993063SNicholas Bellinger int (*iscsit_setup_np)(struct iscsi_np *, struct __kernel_sockaddr_storage *); 123f993063SNicholas Bellinger int (*iscsit_accept_np)(struct iscsi_np *, struct iscsi_conn *); 133f993063SNicholas Bellinger void (*iscsit_free_np)(struct iscsi_np *); 143f993063SNicholas Bellinger void (*iscsit_free_conn)(struct iscsi_conn *); 153f993063SNicholas Bellinger struct iscsi_cmd *(*iscsit_alloc_cmd)(struct iscsi_conn *, gfp_t); 163f993063SNicholas Bellinger int (*iscsit_get_login_rx)(struct iscsi_conn *, struct iscsi_login *); 173f993063SNicholas Bellinger int (*iscsit_put_login_tx)(struct iscsi_conn *, struct iscsi_login *, u32); 183f993063SNicholas Bellinger int (*iscsit_immediate_queue)(struct iscsi_conn *, struct iscsi_cmd *, int); 193f993063SNicholas Bellinger int (*iscsit_response_queue)(struct iscsi_conn *, struct iscsi_cmd *, int); 203f993063SNicholas Bellinger int (*iscsit_get_dataout)(struct iscsi_conn *, struct iscsi_cmd *, bool); 213f993063SNicholas Bellinger int (*iscsit_queue_data_in)(struct iscsi_conn *, struct iscsi_cmd *); 223f993063SNicholas Bellinger int (*iscsit_queue_status)(struct iscsi_conn *, struct iscsi_cmd *); 233f993063SNicholas Bellinger }; 243f993063SNicholas Bellinger 253f993063SNicholas Bellinger /* 263f993063SNicholas Bellinger * From iscsi_target_transport.c 273f993063SNicholas Bellinger */ 283f993063SNicholas Bellinger 293f993063SNicholas Bellinger extern int iscsit_register_transport(struct iscsit_transport *); 303f993063SNicholas Bellinger extern void iscsit_unregister_transport(struct iscsit_transport *); 313f993063SNicholas Bellinger extern struct iscsit_transport *iscsit_get_transport(int); 323f993063SNicholas Bellinger extern void iscsit_put_transport(struct iscsit_transport *); 333f993063SNicholas Bellinger 343f993063SNicholas Bellinger /* 353f993063SNicholas Bellinger * From iscsi_target.c 363f993063SNicholas Bellinger */ 373f993063SNicholas Bellinger extern int iscsit_add_reject_from_cmd(u8, int, int, unsigned char *, 383f993063SNicholas Bellinger struct iscsi_cmd *); 393f993063SNicholas Bellinger extern int iscsit_setup_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *, 403f993063SNicholas Bellinger unsigned char *); 413f993063SNicholas Bellinger extern void iscsit_set_unsoliticed_dataout(struct iscsi_cmd *); 423f993063SNicholas Bellinger extern int iscsit_process_scsi_cmd(struct iscsi_conn *, struct iscsi_cmd *, 433f993063SNicholas Bellinger struct iscsi_scsi_req *); 443f993063SNicholas Bellinger extern int iscsit_check_dataout_hdr(struct iscsi_conn *, unsigned char *, 453f993063SNicholas Bellinger struct iscsi_cmd **); 463f993063SNicholas Bellinger extern int iscsit_check_dataout_payload(struct iscsi_cmd *, struct iscsi_data *, 473f993063SNicholas Bellinger bool); 483f993063SNicholas Bellinger extern int iscsit_handle_nop_out(struct iscsi_conn *, struct iscsi_cmd *, 493f993063SNicholas Bellinger unsigned char *); 503f993063SNicholas Bellinger extern int iscsit_handle_logout_cmd(struct iscsi_conn *, struct iscsi_cmd *, 513f993063SNicholas Bellinger unsigned char *); 523f993063SNicholas Bellinger extern int iscsit_handle_task_mgt_cmd(struct iscsi_conn *, struct iscsi_cmd *, 533f993063SNicholas Bellinger unsigned char *); 543f993063SNicholas Bellinger extern void iscsit_build_rsp_pdu(struct iscsi_cmd *, struct iscsi_conn *, 553f993063SNicholas Bellinger bool, struct iscsi_scsi_rsp *); 563f993063SNicholas Bellinger extern void iscsit_build_nopin_rsp(struct iscsi_cmd *, struct iscsi_conn *, 573f993063SNicholas Bellinger struct iscsi_nopin *, bool); 583f993063SNicholas Bellinger extern void iscsit_build_task_mgt_rsp(struct iscsi_cmd *, struct iscsi_conn *, 593f993063SNicholas Bellinger struct iscsi_tm_rsp *); 603f993063SNicholas Bellinger extern void iscsit_build_reject(struct iscsi_cmd *, struct iscsi_conn *, 613f993063SNicholas Bellinger struct iscsi_reject *); 623f993063SNicholas Bellinger extern int iscsit_build_logout_rsp(struct iscsi_cmd *, struct iscsi_conn *, 633f993063SNicholas Bellinger struct iscsi_logout_rsp *); 643f993063SNicholas Bellinger extern int iscsit_logout_post_handler(struct iscsi_cmd *, struct iscsi_conn *); 653f993063SNicholas Bellinger /* 663f993063SNicholas Bellinger * From iscsi_target_device.c 673f993063SNicholas Bellinger */ 683f993063SNicholas Bellinger extern void iscsit_increment_maxcmdsn(struct iscsi_cmd *, struct iscsi_session *); 693f993063SNicholas Bellinger /* 703f993063SNicholas Bellinger * From iscsi_target_erl1.c 713f993063SNicholas Bellinger */ 723f993063SNicholas Bellinger extern void iscsit_stop_dataout_timer(struct iscsi_cmd *); 733f993063SNicholas Bellinger 743f993063SNicholas Bellinger /* 753f993063SNicholas Bellinger * From iscsi_target_tmr.c 763f993063SNicholas Bellinger */ 773f993063SNicholas Bellinger extern int iscsit_tmr_post_handler(struct iscsi_cmd *, struct iscsi_conn *); 783f993063SNicholas Bellinger 793f993063SNicholas Bellinger /* 803f993063SNicholas Bellinger * From iscsi_target_util.c 813f993063SNicholas Bellinger */ 823f993063SNicholas Bellinger extern struct iscsi_cmd *iscsit_allocate_cmd(struct iscsi_conn *, gfp_t); 833f993063SNicholas Bellinger extern int iscsit_sequence_cmd(struct iscsi_conn *, struct iscsi_cmd *, __be32); 84