#include "qla_def.h"
#include "qla_target.h"
#include <linux/blkdev.h>
#include <linux/delay.h>
#include <scsi/scsi_tcq.h>
static int qla_start_scsi_type6(srb_t *sp);
static inline uint16_t
qla2x00_get_cmd_direction(srb_t *sp)
{ … }
uint16_t
qla2x00_calc_iocbs_32(uint16_t dsds)
{ … }
uint16_t
qla2x00_calc_iocbs_64(uint16_t dsds)
{ … }
static inline cont_entry_t *
qla2x00_prep_cont_type0_iocb(struct scsi_qla_host *vha)
{ … }
cont_a64_entry_t *
qla2x00_prep_cont_type1_iocb(scsi_qla_host_t *vha, struct req_que *req)
{ … }
inline int
qla24xx_configure_prot_mode(srb_t *sp, uint16_t *fw_prot_opts)
{ … }
void qla2x00_build_scsi_iocbs_32(srb_t *sp, cmd_entry_t *cmd_pkt,
uint16_t tot_dsds)
{ … }
void qla2x00_build_scsi_iocbs_64(srb_t *sp, cmd_entry_t *cmd_pkt,
uint16_t tot_dsds)
{ … }
uint32_t qla2xxx_get_next_handle(struct req_que *req)
{ … }
int
qla2x00_start_scsi(srb_t *sp)
{ … }
void
qla2x00_start_iocbs(struct scsi_qla_host *vha, struct req_que *req)
{ … }
static int
__qla2x00_marker(struct scsi_qla_host *vha, struct qla_qpair *qpair,
uint16_t loop_id, uint64_t lun, uint8_t type)
{ … }
int
qla2x00_marker(struct scsi_qla_host *vha, struct qla_qpair *qpair,
uint16_t loop_id, uint64_t lun, uint8_t type)
{ … }
int qla2x00_issue_marker(scsi_qla_host_t *vha, int ha_locked)
{ … }
static inline int
qla24xx_build_scsi_type_6_iocbs(srb_t *sp, struct cmd_type_6 *cmd_pkt,
uint16_t tot_dsds)
{ … }
static inline uint16_t
qla24xx_calc_dsd_lists(uint16_t dsds)
{ … }
inline void
qla24xx_build_scsi_iocbs(srb_t *sp, struct cmd_type_7 *cmd_pkt,
uint16_t tot_dsds, struct req_que *req)
{ … }
struct fw_dif_context { … };
static inline void
qla24xx_set_t10dif_tags(srb_t *sp, struct fw_dif_context *pkt,
unsigned int protcnt)
{ … }
int
qla24xx_get_one_block_sg(uint32_t blk_sz, struct qla2_sgx *sgx,
uint32_t *partial)
{ … }
int
qla24xx_walk_and_build_sglist_no_difb(struct qla_hw_data *ha, srb_t *sp,
struct dsd64 *dsd, uint16_t tot_dsds, struct qla_tc_param *tc)
{ … }
int
qla24xx_walk_and_build_sglist(struct qla_hw_data *ha, srb_t *sp,
struct dsd64 *dsd, uint16_t tot_dsds, struct qla_tc_param *tc)
{ … }
int
qla24xx_walk_and_build_prot_sglist(struct qla_hw_data *ha, srb_t *sp,
struct dsd64 *cur_dsd, uint16_t tot_dsds, struct qla_tgt_cmd *tc)
{ … }
static inline int
qla24xx_build_scsi_crc_2_iocbs(srb_t *sp, struct cmd_type_crc_2 *cmd_pkt,
uint16_t tot_dsds, uint16_t tot_prot_dsds, uint16_t fw_prot_opts)
{ … }
int
qla24xx_start_scsi(srb_t *sp)
{ … }
int
qla24xx_dif_start_scsi(srb_t *sp)
{ … }
static int
qla2xxx_start_scsi_mq(srb_t *sp)
{ … }
int
qla2xxx_dif_start_scsi_mq(srb_t *sp)
{ … }
void *
__qla2x00_alloc_iocbs(struct qla_qpair *qpair, srb_t *sp)
{ … }
void *
qla2x00_alloc_iocbs_ready(struct qla_qpair *qpair, srb_t *sp)
{ … }
void *
qla2x00_alloc_iocbs(struct scsi_qla_host *vha, srb_t *sp)
{ … }
static void
qla24xx_prli_iocb(srb_t *sp, struct logio_entry_24xx *logio)
{ … }
static void
qla24xx_login_iocb(srb_t *sp, struct logio_entry_24xx *logio)
{ … }
static void
qla2x00_login_iocb(srb_t *sp, struct mbx_entry *mbx)
{ … }
static void
qla24xx_logout_iocb(srb_t *sp, struct logio_entry_24xx *logio)
{ … }
static void
qla2x00_logout_iocb(srb_t *sp, struct mbx_entry *mbx)
{ … }
static void
qla24xx_adisc_iocb(srb_t *sp, struct logio_entry_24xx *logio)
{ … }
static void
qla2x00_adisc_iocb(srb_t *sp, struct mbx_entry *mbx)
{ … }
static void
qla24xx_tm_iocb(srb_t *sp, struct tsk_mgmt_entry *tsk)
{ … }
static void
qla2x00_async_done(struct srb *sp, int res)
{ … }
void
qla2x00_sp_release(struct kref *kref)
{ … }
void
qla2x00_init_async_sp(srb_t *sp, unsigned long tmo,
void (*done)(struct srb *sp, int res))
{ … }
static void qla2x00_els_dcmd_sp_free(srb_t *sp)
{ … }
static void
qla2x00_els_dcmd_iocb_timeout(void *data)
{ … }
static void qla2x00_els_dcmd_sp_done(srb_t *sp, int res)
{ … }
int
qla24xx_els_dcmd_iocb(scsi_qla_host_t *vha, int els_opcode,
port_id_t remote_did)
{ … }
static void
qla24xx_els_logo_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
{ … }
void
qla2x00_els_dcmd2_iocb_timeout(void *data)
{ … }
void qla2x00_els_dcmd2_free(scsi_qla_host_t *vha, struct els_plogi *els_plogi)
{ … }
static void qla2x00_els_dcmd2_sp_done(srb_t *sp, int res)
{ … }
int
qla24xx_els_dcmd2_iocb(scsi_qla_host_t *vha, int els_opcode,
fc_port_t *fcport)
{ … }
void qla_els_pt_iocb(struct scsi_qla_host *vha,
struct els_entry_24xx *els_iocb,
struct qla_els_pt_arg *a)
{ … }
static void
qla24xx_els_iocb(srb_t *sp, struct els_entry_24xx *els_iocb)
{ … }
static void
qla2x00_ct_iocb(srb_t *sp, ms_iocb_entry_t *ct_iocb)
{ … }
static void
qla24xx_ct_iocb(srb_t *sp, struct ct_entry_24xx *ct_iocb)
{ … }
int
qla82xx_start_scsi(srb_t *sp)
{ … }
static void
qla24xx_abort_iocb(srb_t *sp, struct abort_entry_24xx *abt_iocb)
{ … }
static void
qla2x00_mb_iocb(srb_t *sp, struct mbx_24xx_entry *mbx)
{ … }
static void
qla2x00_ctpthru_cmd_iocb(srb_t *sp, struct ct_entry_24xx *ct_pkt)
{ … }
static void qla2x00_send_notify_ack_iocb(srb_t *sp,
struct nack_to_isp *nack)
{ … }
static void
qla_nvme_ls(srb_t *sp, struct pt_ls4_request *cmd_pkt)
{ … }
static void
qla25xx_ctrlvp_iocb(srb_t *sp, struct vp_ctrl_entry_24xx *vce)
{ … }
static void
qla24xx_prlo_iocb(srb_t *sp, struct logio_entry_24xx *logio)
{ … }
static int qla_get_iocbs_resource(struct srb *sp)
{ … }
static void
qla_marker_iocb(srb_t *sp, struct mrk_entry_24xx *mrk)
{ … }
int
qla2x00_start_sp(srb_t *sp)
{ … }
static void
qla25xx_build_bidir_iocb(srb_t *sp, struct scsi_qla_host *vha,
struct cmd_bidir *cmd_pkt, uint32_t tot_dsds)
{ … }
int
qla2x00_start_bidir(srb_t *sp, struct scsi_qla_host *vha, uint32_t tot_dsds)
{ … }
static int
qla_start_scsi_type6(srb_t *sp)
{ … }