linux/drivers/scsi/qla2xxx/qla_nvme.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * QLogic Fibre Channel HBA Driver
 * Copyright (c)  2003-2017 QLogic Corporation
 */
#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)
{}

/* Allocate a queue for NVMe traffic */
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)
{}

/* it assumed that QPair lock is held. */
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)
{}

/* Post a command */
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)
{}

/*
 * qla2xxx_process_purls_pkt() - Pass-up Unsolicited
 * Received FC-NVMe Link Service pkt to nvme_fc_rcv_ls_req().
 * LLDD need to provide memory for response buffer, which
 * will be used to reference the exchange corresponding
 * to the LS when issuing an ls response. LLDD will have to free
 * response buffer in lport->ops->xmt_ls_rsp().
 *
 * @vha: SCSI qla host
 * @item: ptr to purex_item
 */
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)
{}