xref: /linux/drivers/scsi/ibmvscsi/ibmvfc-nvme.h (revision 35748ddd3b2c91555bd86b8cf88edc90e7317e57)
1848c7085STyrel Datwyler /* SPDX-License-Identifier: GPL-2.0-or-later */
2848c7085STyrel Datwyler 
3848c7085STyrel Datwyler /*
4848c7085STyrel Datwyler  * ibmvfc-nvme.h -- IBM Power Virtual Fibre Channel NVMeoF HBA driver
5848c7085STyrel Datwyler  *
6848c7085STyrel Datwyler  * Written By: Tyrel Datwyler <tyreld@linux.ibm.com>, IBM Corporation
7848c7085STyrel Datwyler  *
8848c7085STyrel Datwyler  * Copyright (C) IBM Corporation, 2026
9848c7085STyrel Datwyler  */
10848c7085STyrel Datwyler 
11848c7085STyrel Datwyler #ifndef _IBMVFC_NVME_H
12848c7085STyrel Datwyler #define _IBMVFC_NVME_H
13848c7085STyrel Datwyler 
1413b7fdf3STyrel Datwyler #include <scsi/fc/fc_fs.h>
1513b7fdf3STyrel Datwyler #include <scsi/fc/fc_els.h>
16848c7085STyrel Datwyler #include <linux/nvme-fc-driver.h>
17*7088e1c8STyrel Datwyler #include <linux/nvme.h>
18*7088e1c8STyrel Datwyler #include <linux/nvme-fc.h>
19848c7085STyrel Datwyler 
20848c7085STyrel Datwyler #include "ibmvfc.h"
21848c7085STyrel Datwyler 
22848c7085STyrel Datwyler #define IBMVFC_NVME		0
23848c7085STyrel Datwyler #define IBMVFC_NVME_HW_QUEUES	8
24848c7085STyrel Datwyler #define IBMVFC_MAX_NVME_QUEUES	16
25848c7085STyrel Datwyler #define IBMVFC_NVME_CHANNELS	8
26848c7085STyrel Datwyler 
27*7088e1c8STyrel Datwyler #define IBMVFC_FC4_LS_TIMEOUT	15
28*7088e1c8STyrel Datwyler #define IBMVFC_FC4_LS_CANCEL_TIMEOUT	45
29*7088e1c8STyrel Datwyler #define IBMVFC_FC4_LS_PLUS_CANCEL_TIMEOUT	\
30*7088e1c8STyrel Datwyler 	(IBMVFC_FC4_LS_TIMEOUT + IBMVFC_FC4_LS_CANCEL_TIMEOUT)
31*7088e1c8STyrel Datwyler 
3228ec8670STyrel Datwyler extern unsigned int ibmvfc_debug;
3328ec8670STyrel Datwyler 
34848c7085STyrel Datwyler struct ibmvfc_host;
35848c7085STyrel Datwyler struct ibmvfc_target;
36*7088e1c8STyrel Datwyler struct ibmvfc_queue;
37848c7085STyrel Datwyler 
3886e49535STyrel Datwyler struct ibmvfc_nvme_qhandle {
3986e49535STyrel Datwyler 	unsigned int qidx;
4086e49535STyrel Datwyler 	u16 cpu_id;
4186e49535STyrel Datwyler 	unsigned long index;
4286e49535STyrel Datwyler 	struct ibmvfc_queue *queue;
4386e49535STyrel Datwyler };
4486e49535STyrel Datwyler 
45848c7085STyrel Datwyler int ibmvfc_nvme_register_remoteport(struct ibmvfc_target *tgt);
46848c7085STyrel Datwyler void ibmvfc_nvme_unregister_remoteport(struct ibmvfc_target *tgt);
47848c7085STyrel Datwyler int ibmvfc_nvme_register(struct ibmvfc_host *vhost);
48848c7085STyrel Datwyler void ibmvfc_nvme_unregister(struct ibmvfc_host *vhost);
49848c7085STyrel Datwyler #endif
50