#include "qla_nvme.h"
#include <linux/scatterlist.h>
#include <linux/delay.h>
#include <linux/nvme.h>
#include <linux/nvme-fc.h>
#include <linux/blk-mq-pci.h>
#include <linux/blk-mq.h>
static struct nvme_fc_port_template qla_nvme_fc_transport;
static int qla_nvme_ls_reject_iocb(struct scsi_qla_host *vha,
struct qla_qpair *qp,
struct qla_nvme_lsrjt_pt_arg *a,
bool is_xchg_terminate);
struct qla_nvme_unsol_ctx { … };
int qla_nvme_register_remote(struct scsi_qla_host *vha, struct fc_port *fcport)
{ … }
static int qla_nvme_alloc_queue(struct nvme_fc_local_port *lport,
unsigned int qidx, u16 qsize, void **handle)
{ … }
static void qla_nvme_release_fcp_cmd_kref(struct kref *kref)
{ … }
static void qla_nvme_release_ls_cmd_kref(struct kref *kref)
{ … }
static void qla_nvme_ls_complete(struct work_struct *work)
{ … }
static void qla_nvme_sp_ls_done(srb_t *sp, int res)
{ … }
static void qla_nvme_release_lsrsp_cmd_kref(struct kref *kref)
{ … }
static void qla_nvme_lsrsp_complete(struct work_struct *work)
{ … }
static void qla_nvme_sp_lsrsp_done(srb_t *sp, int res)
{ … }
static void qla_nvme_sp_done(srb_t *sp, int res)
{ … }
static void qla_nvme_abort_work(struct work_struct *work)
{ … }
static int qla_nvme_xmt_ls_rsp(struct nvme_fc_local_port *lport,
struct nvme_fc_remote_port *rport,
struct nvmefc_ls_rsp *fd_resp)
{ … }
static void qla_nvme_ls_abort(struct nvme_fc_local_port *lport,
struct nvme_fc_remote_port *rport, struct nvmefc_ls_req *fd)
{ … }
static int qla_nvme_ls_req(struct nvme_fc_local_port *lport,
struct nvme_fc_remote_port *rport, struct nvmefc_ls_req *fd)
{ … }
static void qla_nvme_fcp_abort(struct nvme_fc_local_port *lport,
struct nvme_fc_remote_port *rport, void *hw_queue_handle,
struct nvmefc_fcp_req *fd)
{ … }
static inline int qla2x00_start_nvme_mq(srb_t *sp)
{ … }
static int qla_nvme_post_cmd(struct nvme_fc_local_port *lport,
struct nvme_fc_remote_port *rport, void *hw_queue_handle,
struct nvmefc_fcp_req *fd)
{ … }
static void qla_nvme_map_queues(struct nvme_fc_local_port *lport,
struct blk_mq_queue_map *map)
{ … }
static void qla_nvme_localport_delete(struct nvme_fc_local_port *lport)
{ … }
static void qla_nvme_remoteport_delete(struct nvme_fc_remote_port *rport)
{ … }
static struct nvme_fc_port_template qla_nvme_fc_transport = …;
void qla_nvme_unregister_remote_port(struct fc_port *fcport)
{ … }
void qla_nvme_delete(struct scsi_qla_host *vha)
{ … }
int qla_nvme_register_hba(struct scsi_qla_host *vha)
{ … }
void qla_nvme_abort_set_option(struct abort_entry_24xx *abt, srb_t *orig_sp)
{ … }
void qla_nvme_abort_process_comp_status(struct abort_entry_24xx *abt, srb_t *orig_sp)
{ … }
inline void qla_wait_nvme_release_cmd_kref(srb_t *orig_sp)
{ … }
static void qla_nvme_fc_format_rjt(void *buf, u8 ls_cmd, u8 reason,
u8 explanation, u8 vendor)
{ … }
static void qla_nvme_lsrjt_pt_iocb(struct scsi_qla_host *vha,
struct pt_ls4_request *lsrjt_iocb,
struct qla_nvme_lsrjt_pt_arg *a)
{ … }
static int
qla_nvme_ls_reject_iocb(struct scsi_qla_host *vha, struct qla_qpair *qp,
struct qla_nvme_lsrjt_pt_arg *a, bool is_xchg_terminate)
{ … }
static void
qla2xxx_process_purls_pkt(struct scsi_qla_host *vha, struct purex_item *item)
{ … }
static scsi_qla_host_t *
qla2xxx_get_vha_from_vp_idx(struct qla_hw_data *ha, uint16_t vp_index)
{ … }
void qla2xxx_process_purls_iocb(void **pkt, struct rsp_que **rsp)
{ … }