Path: blob/master/include/target/iscsi/iscsi_transport.h
26285 views
/* SPDX-License-Identifier: GPL-2.0 */1#include "iscsi_target_core.h" /* struct iscsit_cmd */23struct sockaddr_storage;45struct iscsit_transport {6#define ISCSIT_TRANSPORT_NAME 167char name[ISCSIT_TRANSPORT_NAME];8int transport_type;9bool rdma_shutdown;10int priv_size;11struct module *owner;12struct list_head t_node;13int (*iscsit_setup_np)(struct iscsi_np *, struct sockaddr_storage *);14int (*iscsit_accept_np)(struct iscsi_np *, struct iscsit_conn *);15void (*iscsit_free_np)(struct iscsi_np *);16void (*iscsit_wait_conn)(struct iscsit_conn *);17void (*iscsit_free_conn)(struct iscsit_conn *);18int (*iscsit_get_login_rx)(struct iscsit_conn *, struct iscsi_login *);19int (*iscsit_put_login_tx)(struct iscsit_conn *, struct iscsi_login *, u32);20int (*iscsit_immediate_queue)(struct iscsit_conn *, struct iscsit_cmd *, int);21int (*iscsit_response_queue)(struct iscsit_conn *, struct iscsit_cmd *, int);22int (*iscsit_get_dataout)(struct iscsit_conn *, struct iscsit_cmd *, bool);23int (*iscsit_queue_data_in)(struct iscsit_conn *, struct iscsit_cmd *);24int (*iscsit_queue_status)(struct iscsit_conn *, struct iscsit_cmd *);25void (*iscsit_aborted_task)(struct iscsit_conn *, struct iscsit_cmd *);26int (*iscsit_xmit_pdu)(struct iscsit_conn *, struct iscsit_cmd *,27struct iscsi_datain_req *, const void *, u32);28void (*iscsit_unmap_cmd)(struct iscsit_conn *, struct iscsit_cmd *);29void (*iscsit_get_rx_pdu)(struct iscsit_conn *);30int (*iscsit_validate_params)(struct iscsit_conn *);31void (*iscsit_get_r2t_ttt)(struct iscsit_conn *, struct iscsit_cmd *,32struct iscsi_r2t *);33enum target_prot_op (*iscsit_get_sup_prot_ops)(struct iscsit_conn *);34};3536static inline void *iscsit_priv_cmd(struct iscsit_cmd *cmd)37{38return (void *)(cmd + 1);39}4041/*42* From iscsi_target_transport.c43*/4445extern void iscsit_register_transport(struct iscsit_transport *);46extern void iscsit_unregister_transport(struct iscsit_transport *);47extern struct iscsit_transport *iscsit_get_transport(int);48extern void iscsit_put_transport(struct iscsit_transport *);4950/*51* From iscsi_target.c52*/53extern int iscsit_setup_scsi_cmd(struct iscsit_conn *, struct iscsit_cmd *,54unsigned char *);55extern void iscsit_set_unsolicited_dataout(struct iscsit_cmd *);56extern int iscsit_process_scsi_cmd(struct iscsit_conn *, struct iscsit_cmd *,57struct iscsi_scsi_req *);58extern int59__iscsit_check_dataout_hdr(struct iscsit_conn *, void *,60struct iscsit_cmd *, u32, bool *);61extern int62iscsit_check_dataout_hdr(struct iscsit_conn *conn, void *buf,63struct iscsit_cmd **out_cmd);64extern int iscsit_check_dataout_payload(struct iscsit_cmd *, struct iscsi_data *,65bool);66extern int iscsit_setup_nop_out(struct iscsit_conn *, struct iscsit_cmd *,67struct iscsi_nopout *);68extern int iscsit_process_nop_out(struct iscsit_conn *, struct iscsit_cmd *,69struct iscsi_nopout *);70extern int iscsit_handle_logout_cmd(struct iscsit_conn *, struct iscsit_cmd *,71unsigned char *);72extern int iscsit_handle_task_mgt_cmd(struct iscsit_conn *, struct iscsit_cmd *,73unsigned char *);74extern int iscsit_setup_text_cmd(struct iscsit_conn *, struct iscsit_cmd *,75struct iscsi_text *);76extern int iscsit_process_text_cmd(struct iscsit_conn *, struct iscsit_cmd *,77struct iscsi_text *);78extern void iscsit_build_rsp_pdu(struct iscsit_cmd *, struct iscsit_conn *,79bool, struct iscsi_scsi_rsp *);80extern void iscsit_build_nopin_rsp(struct iscsit_cmd *, struct iscsit_conn *,81struct iscsi_nopin *, bool);82extern void iscsit_build_task_mgt_rsp(struct iscsit_cmd *, struct iscsit_conn *,83struct iscsi_tm_rsp *);84extern int iscsit_build_text_rsp(struct iscsit_cmd *, struct iscsit_conn *,85struct iscsi_text_rsp *,86enum iscsit_transport_type);87extern void iscsit_build_reject(struct iscsit_cmd *, struct iscsit_conn *,88struct iscsi_reject *);89extern int iscsit_build_logout_rsp(struct iscsit_cmd *, struct iscsit_conn *,90struct iscsi_logout_rsp *);91extern int iscsit_logout_post_handler(struct iscsit_cmd *, struct iscsit_conn *);92extern int iscsit_queue_rsp(struct iscsit_conn *, struct iscsit_cmd *);93extern void iscsit_aborted_task(struct iscsit_conn *, struct iscsit_cmd *);94extern int iscsit_add_reject(struct iscsit_conn *, u8, unsigned char *);95extern int iscsit_reject_cmd(struct iscsit_cmd *, u8, unsigned char *);96extern int iscsit_handle_snack(struct iscsit_conn *, unsigned char *);97extern void iscsit_build_datain_pdu(struct iscsit_cmd *, struct iscsit_conn *,98struct iscsi_datain *,99struct iscsi_data_rsp *, bool);100extern int iscsit_build_r2ts_for_cmd(struct iscsit_conn *, struct iscsit_cmd *,101bool);102extern int iscsit_immediate_queue(struct iscsit_conn *, struct iscsit_cmd *, int);103extern int iscsit_response_queue(struct iscsit_conn *, struct iscsit_cmd *, int);104/*105* From iscsi_target_device.c106*/107extern void iscsit_increment_maxcmdsn(struct iscsit_cmd *, struct iscsit_session *);108/*109* From iscsi_target_erl0.c110*/111extern void iscsit_cause_connection_reinstatement(struct iscsit_conn *, int);112/*113* From iscsi_target_erl1.c114*/115extern void iscsit_stop_dataout_timer(struct iscsit_cmd *);116117/*118* From iscsi_target_tmr.c119*/120extern int iscsit_tmr_post_handler(struct iscsit_cmd *, struct iscsit_conn *);121122/*123* From iscsi_target_util.c124*/125extern struct iscsit_cmd *iscsit_allocate_cmd(struct iscsit_conn *, int);126extern int iscsit_sequence_cmd(struct iscsit_conn *, struct iscsit_cmd *,127unsigned char *, __be32);128extern void iscsit_release_cmd(struct iscsit_cmd *);129extern void iscsit_free_cmd(struct iscsit_cmd *, bool);130extern void iscsit_add_cmd_to_immediate_queue(struct iscsit_cmd *,131struct iscsit_conn *, u8);132extern struct iscsit_cmd *133iscsit_find_cmd_from_itt_or_dump(struct iscsit_conn *conn,134itt_t init_task_tag, u32 length);135136/*137* From iscsi_target_nego.c138*/139extern int iscsi_target_check_login_request(struct iscsit_conn *,140struct iscsi_login *);141142/*143* From iscsi_target_login.c144*/145extern __printf(2, 3) int iscsi_change_param_sprintf(146struct iscsit_conn *, const char *, ...);147148/*149* From iscsi_target_parameters.c150*/151extern struct iscsi_param *iscsi_find_param_from_key(152char *, struct iscsi_param_list *);153154155