#include <linux/blkdev.h>
#include <scsi/scsi_tcq.h>
#include <linux/delay.h>
#include "qedi.h"
#include "qedi_iscsi.h"
#include "qedi_gbl.h"
#include "qedi_fw_iscsi.h"
#include "qedi_fw_scsi.h"
static int send_iscsi_tmf(struct qedi_conn *qedi_conn,
struct iscsi_task *mtask, struct iscsi_task *ctask);
void qedi_iscsi_unmap_sg_list(struct qedi_cmd *cmd)
{ … }
static void qedi_process_logout_resp(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_process_text_resp(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_tmf_resp_work(struct work_struct *work)
{ … }
static void qedi_process_tmf_resp(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_process_login_resp(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_get_rq_bdq_buf(struct qedi_ctx *qedi,
struct iscsi_cqe_unsolicited *cqe,
char *ptr, int len)
{ … }
static void qedi_put_rq_bdq_buf(struct qedi_ctx *qedi,
struct iscsi_cqe_unsolicited *cqe,
int count)
{ … }
static void qedi_unsol_pdu_adjust_bdq(struct qedi_ctx *qedi,
struct iscsi_cqe_unsolicited *cqe,
u32 pdu_len, u32 num_bdqs,
char *bdq_data)
{ … }
static int qedi_process_nopin_mesg(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn, u16 que_idx)
{ … }
static void qedi_process_async_mesg(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn,
u16 que_idx)
{ … }
static void qedi_process_reject_mesg(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn,
uint16_t que_idx)
{ … }
static void qedi_scsi_completion(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct iscsi_conn *conn)
{ … }
static void qedi_mtask_completion(struct qedi_ctx *qedi,
union iscsi_cqe *cqe,
struct iscsi_task *task,
struct qedi_conn *conn, uint16_t que_idx)
{ … }
static void qedi_process_nopin_local_cmpl(struct qedi_ctx *qedi,
struct iscsi_cqe_solicited *cqe,
struct iscsi_task *task,
struct qedi_conn *qedi_conn)
{ … }
static void qedi_process_cmd_cleanup_resp(struct qedi_ctx *qedi,
struct iscsi_cqe_solicited *cqe,
struct iscsi_conn *conn)
{ … }
void qedi_fp_process_cqes(struct qedi_work *work)
{ … }
static void qedi_ring_doorbell(struct qedi_conn *qedi_conn)
{ … }
static u16 qedi_get_wqe_idx(struct qedi_conn *qedi_conn)
{ … }
int qedi_send_iscsi_login(struct qedi_conn *qedi_conn,
struct iscsi_task *task)
{ … }
int qedi_send_iscsi_logout(struct qedi_conn *qedi_conn,
struct iscsi_task *task)
{ … }
int qedi_cleanup_all_io(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
struct iscsi_task *task, bool in_recovery)
{ … }
void qedi_clearsq(struct qedi_ctx *qedi, struct qedi_conn *qedi_conn,
struct iscsi_task *task)
{ … }
static int qedi_wait_for_cleanup_request(struct qedi_ctx *qedi,
struct qedi_conn *qedi_conn,
struct iscsi_task *task,
struct qedi_cmd *qedi_cmd,
struct qedi_work_map *list_work)
{ … }
static void qedi_abort_work(struct work_struct *work)
{ … }
static int send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask,
struct iscsi_task *ctask)
{ … }
int qedi_send_iscsi_tmf(struct qedi_conn *qedi_conn, struct iscsi_task *mtask)
{ … }
int qedi_send_iscsi_text(struct qedi_conn *qedi_conn,
struct iscsi_task *task)
{ … }
int qedi_send_iscsi_nopout(struct qedi_conn *qedi_conn,
struct iscsi_task *task,
char *datap, int data_len, int unsol)
{ … }
static int qedi_split_bd(struct qedi_cmd *cmd, u64 addr, int sg_len,
int bd_index)
{ … }
static int qedi_map_scsi_sg(struct qedi_ctx *qedi, struct qedi_cmd *cmd)
{ … }
static void qedi_iscsi_map_sg_list(struct qedi_cmd *cmd)
{ … }
static void qedi_cpy_scsi_cdb(struct scsi_cmnd *sc, u32 *dstp)
{ … }
void qedi_trace_io(struct qedi_ctx *qedi, struct iscsi_task *task,
u16 tid, int8_t direction)
{ … }
int qedi_iscsi_send_ioreq(struct iscsi_task *task)
{ … }
int qedi_iscsi_cleanup_task(struct iscsi_task *task, bool mark_cmd_node_deleted)
{ … }