linux/include/linux/nvme-fc.h

/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (c) 2016 Avago Technologies.  All rights reserved.
 */

/*
 * This file contains definitions relative to FC-NVME-2 r1.08
 * (T11-2019-00210-v004).
 */

#ifndef _NVME_FC_H
#define _NVME_FC_H

#include <uapi/scsi/fc/fc_fs.h>

#define NVME_CMD_FORMAT_ID
#define NVME_CMD_FC_ID

/* FC-NVME Cmd IU Flags */
enum {};

enum {};

static inline __u8 fccmnd_set_cat_admin(__u8 rsv_cat)
{}

static inline __u8 fccmnd_set_cat_css(__u8 rsv_cat, __u8 css)
{}

struct nvme_fc_cmd_iu {};

#define NVME_FC_SIZEOF_ZEROS_RSP

enum {};

struct nvme_fc_ersp_iu {};


#define FCNVME_NVME_SR_OPCODE
#define FCNVME_NVME_SR_RSP_OPCODE

struct nvme_fc_nvme_sr_iu {};


enum {};

struct nvme_fc_nvme_sr_rsp_iu {};


/* FC-NVME Link Services - LS cmd values (w0 bits 31:24) */
enum {};

/* FC-NVME Link Service Descriptors */
enum {};


/* ********** start of Link Service Descriptors ********** */


/*
 * fills in length of a descriptor. Struture minus descriptor header
 */
static inline __be32 fcnvme_lsdesc_len(size_t sz)
{}

struct fcnvme_ls_rqst_w0 {};

/* FCNVME_LSDESC_RQST */
struct fcnvme_lsdesc_rqst {};

/* FC-NVME LS RJT reason_code values */
enum fcnvme_ls_rjt_reason {};

/* FC-NVME LS RJT reason_explanation values */
enum fcnvme_ls_rjt_explan {};

/* FCNVME_LSDESC_RJT */
struct fcnvme_lsdesc_rjt {};


#define FCNVME_ASSOC_HOSTNQN_LEN
#define FCNVME_ASSOC_SUBNQN_LEN

/* FCNVME_LSDESC_CREATE_ASSOC_CMD */
struct fcnvme_lsdesc_cr_assoc_cmd {};

#define FCNVME_LSDESC_CRA_CMD_DESC_MINLEN

#define FCNVME_LSDESC_CRA_CMD_DESC_MIN_DESCLEN



/* FCNVME_LSDESC_CREATE_CONN_CMD */
struct fcnvme_lsdesc_cr_conn_cmd {};

/* FCNVME_LSDESC_DISCONN_CMD */
struct fcnvme_lsdesc_disconn_cmd {};

/* FCNVME_LSDESC_CONN_ID */
struct fcnvme_lsdesc_conn_id {};

/* FCNVME_LSDESC_ASSOC_ID */
struct fcnvme_lsdesc_assoc_id {};

/* r_ctl values */
enum {};


/* ********** start of Link Services ********** */


/* FCNVME_LS_RJT */
struct fcnvme_ls_rjt {};

/* FCNVME_LS_ACC */
struct fcnvme_ls_acc_hdr {};

/* FCNVME_LS_CREATE_ASSOCIATION */
struct fcnvme_ls_cr_assoc_rqst {};

#define FCNVME_LSDESC_CRA_RQST_MINLEN

#define FCNVME_LSDESC_CRA_RQST_MIN_LISTLEN


struct fcnvme_ls_cr_assoc_acc {};


/* FCNVME_LS_CREATE_CONNECTION */
struct fcnvme_ls_cr_conn_rqst {};

struct fcnvme_ls_cr_conn_acc {};

/* FCNVME_LS_DISCONNECT_ASSOC */
struct fcnvme_ls_disconnect_assoc_rqst {};

struct fcnvme_ls_disconnect_assoc_acc {};


/* FCNVME_LS_DISCONNECT_CONN */
struct fcnvme_ls_disconnect_conn_rqst {};

struct fcnvme_ls_disconnect_conn_acc {};


/*
 * Default R_A_TOV is pulled in from fc_fs.h but needs conversion
 * from ms to seconds for our use.
 */
#define FC_TWO_TIMES_R_A_TOV
#define NVME_FC_LS_TIMEOUT_SEC
#define NVME_FC_TGTOP_TIMEOUT_SEC

/*
 * TRADDR string must be of form "nn-<16hexdigits>:pn-<16hexdigits>"
 * the string is allowed to be specified with or without a "0x" prefix
 * infront of the <16hexdigits>.  Without is considered the "min" string
 * and with is considered the "max" string. The hexdigits may be upper
 * or lower case.
 * Note: FC-NVME-2 standard requires a "0x" prefix.
 */
#define NVME_FC_TRADDR_NNLEN
#define NVME_FC_TRADDR_OXNNLEN
#define NVME_FC_TRADDR_HEXNAMELEN
#define NVME_FC_TRADDR_MINLENGTH
#define NVME_FC_TRADDR_MAXLENGTH
#define NVME_FC_TRADDR_MIN_PN_OFFSET
#define NVME_FC_TRADDR_MAX_PN_OFFSET


#endif /* _NVME_FC_H */