162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 262306a36Sopenharmony_ci#ifndef ISCSI_TARGET_UTIL_H 362306a36Sopenharmony_ci#define ISCSI_TARGET_UTIL_H 462306a36Sopenharmony_ci 562306a36Sopenharmony_ci#include <linux/types.h> 662306a36Sopenharmony_ci#include <scsi/iscsi_proto.h> /* itt_t */ 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci#define MARKER_SIZE 8 962306a36Sopenharmony_ci 1062306a36Sopenharmony_cistruct iscsit_cmd; 1162306a36Sopenharmony_cistruct iscsit_conn; 1262306a36Sopenharmony_cistruct iscsi_conn_recovery; 1362306a36Sopenharmony_cistruct iscsit_session; 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ciextern int iscsit_add_r2t_to_list(struct iscsit_cmd *, u32, u32, int, u32); 1662306a36Sopenharmony_ciextern struct iscsi_r2t *iscsit_get_r2t_for_eos(struct iscsit_cmd *, u32, u32); 1762306a36Sopenharmony_ciextern struct iscsi_r2t *iscsit_get_r2t_from_list(struct iscsit_cmd *); 1862306a36Sopenharmony_ciextern void iscsit_free_r2t(struct iscsi_r2t *, struct iscsit_cmd *); 1962306a36Sopenharmony_ciextern void iscsit_free_r2ts_from_list(struct iscsit_cmd *); 2062306a36Sopenharmony_ciextern struct iscsit_cmd *iscsit_alloc_cmd(struct iscsit_conn *, gfp_t); 2162306a36Sopenharmony_ciextern struct iscsit_cmd *iscsit_allocate_cmd(struct iscsit_conn *, int); 2262306a36Sopenharmony_ciextern struct iscsi_seq *iscsit_get_seq_holder_for_datain(struct iscsit_cmd *, u32); 2362306a36Sopenharmony_ciextern struct iscsi_seq *iscsit_get_seq_holder_for_r2t(struct iscsit_cmd *); 2462306a36Sopenharmony_ciextern struct iscsi_r2t *iscsit_get_holder_for_r2tsn(struct iscsit_cmd *, u32); 2562306a36Sopenharmony_ciextern int iscsit_sequence_cmd(struct iscsit_conn *conn, struct iscsit_cmd *cmd, 2662306a36Sopenharmony_ci unsigned char * ,__be32 cmdsn); 2762306a36Sopenharmony_ciextern int iscsit_check_unsolicited_dataout(struct iscsit_cmd *, unsigned char *); 2862306a36Sopenharmony_ciextern struct iscsit_cmd *iscsit_find_cmd_from_itt_or_dump(struct iscsit_conn *, 2962306a36Sopenharmony_ci itt_t, u32); 3062306a36Sopenharmony_ciextern struct iscsit_cmd *iscsit_find_cmd_from_ttt(struct iscsit_conn *, u32); 3162306a36Sopenharmony_ciextern int iscsit_find_cmd_for_recovery(struct iscsit_session *, struct iscsit_cmd **, 3262306a36Sopenharmony_ci struct iscsi_conn_recovery **, itt_t); 3362306a36Sopenharmony_ciextern void iscsit_add_cmd_to_immediate_queue(struct iscsit_cmd *, struct iscsit_conn *, u8); 3462306a36Sopenharmony_ciextern struct iscsi_queue_req *iscsit_get_cmd_from_immediate_queue(struct iscsit_conn *); 3562306a36Sopenharmony_ciextern int iscsit_add_cmd_to_response_queue(struct iscsit_cmd *, struct iscsit_conn *, u8); 3662306a36Sopenharmony_ciextern struct iscsi_queue_req *iscsit_get_cmd_from_response_queue(struct iscsit_conn *); 3762306a36Sopenharmony_ciextern void iscsit_remove_cmd_from_tx_queues(struct iscsit_cmd *, struct iscsit_conn *); 3862306a36Sopenharmony_ciextern bool iscsit_conn_all_queues_empty(struct iscsit_conn *); 3962306a36Sopenharmony_ciextern void iscsit_free_queue_reqs_for_conn(struct iscsit_conn *); 4062306a36Sopenharmony_ciextern void iscsit_release_cmd(struct iscsit_cmd *); 4162306a36Sopenharmony_ciextern void __iscsit_free_cmd(struct iscsit_cmd *, bool); 4262306a36Sopenharmony_ciextern void iscsit_free_cmd(struct iscsit_cmd *, bool); 4362306a36Sopenharmony_ciextern bool iscsit_check_session_usage_count(struct iscsit_session *sess, bool can_sleep); 4462306a36Sopenharmony_ciextern void iscsit_dec_session_usage_count(struct iscsit_session *); 4562306a36Sopenharmony_ciextern void iscsit_inc_session_usage_count(struct iscsit_session *); 4662306a36Sopenharmony_ciextern struct iscsit_conn *iscsit_get_conn_from_cid(struct iscsit_session *, u16); 4762306a36Sopenharmony_ciextern struct iscsit_conn *iscsit_get_conn_from_cid_rcfr(struct iscsit_session *, u16); 4862306a36Sopenharmony_ciextern void iscsit_check_conn_usage_count(struct iscsit_conn *); 4962306a36Sopenharmony_ciextern void iscsit_dec_conn_usage_count(struct iscsit_conn *); 5062306a36Sopenharmony_ciextern void iscsit_inc_conn_usage_count(struct iscsit_conn *); 5162306a36Sopenharmony_ciextern void iscsit_handle_nopin_response_timeout(struct timer_list *t); 5262306a36Sopenharmony_ciextern void iscsit_mod_nopin_response_timer(struct iscsit_conn *); 5362306a36Sopenharmony_ciextern void iscsit_start_nopin_response_timer(struct iscsit_conn *); 5462306a36Sopenharmony_ciextern void iscsit_stop_nopin_response_timer(struct iscsit_conn *); 5562306a36Sopenharmony_ciextern void iscsit_handle_nopin_timeout(struct timer_list *t); 5662306a36Sopenharmony_ciextern void __iscsit_start_nopin_timer(struct iscsit_conn *); 5762306a36Sopenharmony_ciextern void iscsit_start_nopin_timer(struct iscsit_conn *); 5862306a36Sopenharmony_ciextern void iscsit_stop_nopin_timer(struct iscsit_conn *); 5962306a36Sopenharmony_ciextern void iscsit_login_timeout(struct timer_list *t); 6062306a36Sopenharmony_ciextern void iscsit_start_login_timer(struct iscsit_conn *, struct task_struct *kthr); 6162306a36Sopenharmony_ciextern void iscsit_stop_login_timer(struct iscsit_conn *); 6262306a36Sopenharmony_ciextern int iscsit_set_login_timer_kworker(struct iscsit_conn *, struct task_struct *kthr); 6362306a36Sopenharmony_ciextern int iscsit_send_tx_data(struct iscsit_cmd *, struct iscsit_conn *, int); 6462306a36Sopenharmony_ciextern int iscsit_fe_sendpage_sg(struct iscsit_cmd *, struct iscsit_conn *); 6562306a36Sopenharmony_ciextern int iscsit_tx_login_rsp(struct iscsit_conn *, u8, u8); 6662306a36Sopenharmony_ciextern void iscsit_print_session_params(struct iscsit_session *); 6762306a36Sopenharmony_ciextern int iscsit_print_dev_to_proc(char *, char **, off_t, int); 6862306a36Sopenharmony_ciextern int iscsit_print_sessions_to_proc(char *, char **, off_t, int); 6962306a36Sopenharmony_ciextern int iscsit_print_tpg_to_proc(char *, char **, off_t, int); 7062306a36Sopenharmony_ciextern int rx_data(struct iscsit_conn *, struct kvec *, int, int); 7162306a36Sopenharmony_ciextern int tx_data(struct iscsit_conn *, struct kvec *, int, int); 7262306a36Sopenharmony_ciextern void iscsit_collect_login_stats(struct iscsit_conn *, u8, u8); 7362306a36Sopenharmony_ciextern struct iscsi_tiqn *iscsit_snmp_get_tiqn(struct iscsit_conn *); 7462306a36Sopenharmony_ciextern void iscsit_fill_cxn_timeout_err_stats(struct iscsit_session *); 7562306a36Sopenharmony_ci 7662306a36Sopenharmony_ci#endif /*** ISCSI_TARGET_UTIL_H ***/ 77