#include <linux/spinlock.h>
#include <linux/vmalloc.h>
#include "qedf.h"
#include <scsi/scsi_tcq.h>
void qedf_cmd_timer_set(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
unsigned int timer_msec)
{ … }
static void qedf_cmd_timeout(struct work_struct *work)
{ … }
void qedf_cmd_mgr_free(struct qedf_cmd_mgr *cmgr)
{ … }
static void qedf_handle_rrq(struct work_struct *work)
{ … }
struct qedf_cmd_mgr *qedf_cmd_mgr_alloc(struct qedf_ctx *qedf)
{ … }
struct qedf_ioreq *qedf_alloc_cmd(struct qedf_rport *fcport, u8 cmd_type)
{ … }
static void qedf_free_mp_resc(struct qedf_ioreq *io_req)
{ … }
void qedf_release_cmd(struct kref *ref)
{ … }
static int qedf_map_sg(struct qedf_ioreq *io_req)
{ … }
static int qedf_build_bd_list_from_sg(struct qedf_ioreq *io_req)
{ … }
static void qedf_build_fcp_cmnd(struct qedf_ioreq *io_req,
struct fcp_cmnd *fcp_cmnd)
{ … }
static void qedf_init_task(struct qedf_rport *fcport, struct fc_lport *lport,
struct qedf_ioreq *io_req, struct fcoe_task_context *task_ctx,
struct fcoe_wqe *sqe)
{ … }
void qedf_init_mp_task(struct qedf_ioreq *io_req,
struct fcoe_task_context *task_ctx, struct fcoe_wqe *sqe)
{ … }
u16 qedf_get_sqe_idx(struct qedf_rport *fcport)
{ … }
void qedf_ring_doorbell(struct qedf_rport *fcport)
{ … }
static void qedf_trace_io(struct qedf_rport *fcport, struct qedf_ioreq *io_req,
int8_t direction)
{ … }
int qedf_post_io_req(struct qedf_rport *fcport, struct qedf_ioreq *io_req)
{ … }
int
qedf_queuecommand(struct Scsi_Host *host, struct scsi_cmnd *sc_cmd)
{ … }
static void qedf_parse_fcp_rsp(struct qedf_ioreq *io_req,
struct fcoe_cqe_rsp_info *fcp_rsp)
{ … }
static void qedf_unmap_sg_list(struct qedf_ctx *qedf, struct qedf_ioreq *io_req)
{ … }
void qedf_scsi_completion(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
void qedf_scsi_done(struct qedf_ctx *qedf, struct qedf_ioreq *io_req,
int result)
{ … }
void qedf_process_warning_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
void qedf_process_error_detect(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
static void qedf_flush_els_req(struct qedf_ctx *qedf,
struct qedf_ioreq *els_req)
{ … }
void qedf_flush_active_ios(struct qedf_rport *fcport, u64 lun)
{ … }
int qedf_initiate_abts(struct qedf_ioreq *io_req, bool return_scsi_cmd_on_abts)
{ … }
void qedf_process_abts_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
int qedf_init_mp_req(struct qedf_ioreq *io_req)
{ … }
static void qedf_drain_request(struct qedf_ctx *qedf)
{ … }
int qedf_initiate_cleanup(struct qedf_ioreq *io_req,
bool return_scsi_cmd_on_abts)
{ … }
void qedf_process_cleanup_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
static int qedf_execute_tmf(struct qedf_rport *fcport, u64 tm_lun,
uint8_t tm_flags)
{ … }
int qedf_initiate_tmf(struct fc_rport *rport, u64 lun, u8 tm_flags)
{ … }
void qedf_process_tmf_compl(struct qedf_ctx *qedf, struct fcoe_cqe *cqe,
struct qedf_ioreq *io_req)
{ … }
void qedf_process_unsol_compl(struct qedf_ctx *qedf, uint16_t que_idx,
struct fcoe_cqe *cqe)
{ … }