forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-01-31 f70575805708cabdedea7498aaa3f710fde4d920
kernel/drivers/scsi/qla2xxx/qla_nvme.h
....@@ -1,21 +1,17 @@
1
+/* SPDX-License-Identifier: GPL-2.0-only */
12 /*
23 * QLogic Fibre Channel HBA Driver
34 * Copyright (c) 2003-2017 QLogic Corporation
4
- *
5
- * See LICENSE.qla2xxx for copyright and licensing details.
65 */
76 #ifndef __QLA_NVME_H
87 #define __QLA_NVME_H
98
10
-#include <linux/blk-mq.h>
119 #include <uapi/scsi/fc/fc_fs.h>
1210 #include <uapi/scsi/fc/fc_els.h>
1311 #include <linux/nvme-fc-driver.h>
1412
1513 #include "qla_def.h"
16
-
17
-/* default dev loss time (seconds) before transport tears down ctrl */
18
-#define NVME_FC_DEV_LOSS_TMO 30
14
+#include "qla_dsd.h"
1915
2016 #define NVME_ATIO_CMD_OFF 32
2117 #define NVME_FIRST_PACKET_CMDLEN (64 - NVME_ATIO_CMD_OFF)
....@@ -33,10 +29,10 @@
3329 struct work_struct ls_work;
3430 struct work_struct abort_work;
3531 int comp_status;
32
+ spinlock_t cmd_lock;
3633 };
3734
3835 struct qla_nvme_rport {
39
- struct list_head list;
4036 struct fc_port *fcport;
4137 };
4238
....@@ -48,32 +44,32 @@
4844 uint8_t entry_status; /* Entry Status. */
4945
5046 uint32_t handle; /* System handle. */
51
- uint16_t nport_handle; /* N_PORT handle. */
52
- uint16_t timeout; /* Command timeout. */
47
+ __le16 nport_handle; /* N_PORT handle. */
48
+ __le16 timeout; /* Command timeout. */
5349
54
- uint16_t dseg_count; /* Data segment count. */
55
- uint16_t nvme_rsp_dsd_len; /* NVMe RSP DSD length */
50
+ __le16 dseg_count; /* Data segment count. */
51
+ __le16 nvme_rsp_dsd_len; /* NVMe RSP DSD length */
5652
5753 uint64_t rsvd;
5854
59
- uint16_t control_flags; /* Control Flags */
60
-#define CF_NVME_ENABLE BIT_9
55
+ __le16 control_flags; /* Control Flags */
56
+#define CF_ADMIN_ASYNC_EVENT BIT_13
57
+#define CF_NVME_FIRST_BURST_ENABLE BIT_11
6158 #define CF_DIF_SEG_DESCR_ENABLE BIT_3
6259 #define CF_DATA_SEG_DESCR_ENABLE BIT_2
6360 #define CF_READ_DATA BIT_1
6461 #define CF_WRITE_DATA BIT_0
6562
66
- uint16_t nvme_cmnd_dseg_len; /* Data segment length. */
67
- uint32_t nvme_cmnd_dseg_address[2]; /* Data segment address. */
68
- uint32_t nvme_rsp_dseg_address[2]; /* Data segment address. */
63
+ __le16 nvme_cmnd_dseg_len; /* Data segment length. */
64
+ __le64 nvme_cmnd_dseg_address __packed;/* Data segment address. */
65
+ __le64 nvme_rsp_dseg_address __packed; /* Data segment address. */
6966
70
- uint32_t byte_count; /* Total byte count. */
67
+ __le32 byte_count; /* Total byte count. */
7168
7269 uint8_t port_id[3]; /* PortID of destination port. */
7370 uint8_t vp_index;
7471
75
- uint32_t nvme_data_dseg_address[2]; /* Data segment address. */
76
- uint32_t nvme_data_dseg_len; /* Data segment length. */
72
+ struct dsd64 nvme_dsd;
7773 };
7874
7975 #define PT_LS4_REQUEST 0x89 /* Link Service pass-through IOCB (request) */
....@@ -83,60 +79,57 @@
8379 uint8_t sys_define;
8480 uint8_t entry_status;
8581 uint32_t handle;
86
- uint16_t status;
87
- uint16_t nport_handle;
88
- uint16_t tx_dseg_count;
82
+ __le16 status;
83
+ __le16 nport_handle;
84
+ __le16 tx_dseg_count;
8985 uint8_t vp_index;
9086 uint8_t rsvd;
91
- uint16_t timeout;
92
- uint16_t control_flags;
87
+ __le16 timeout;
88
+ __le16 control_flags;
9389 #define CF_LS4_SHIFT 13
9490 #define CF_LS4_ORIGINATOR 0
9591 #define CF_LS4_RESPONDER 1
9692 #define CF_LS4_RESPONDER_TERM 2
9793
98
- uint16_t rx_dseg_count;
99
- uint16_t rsvd2;
100
- uint32_t exchange_address;
101
- uint32_t rsvd3;
102
- uint32_t rx_byte_count;
103
- uint32_t tx_byte_count;
104
- uint32_t dseg0_address[2];
105
- uint32_t dseg0_len;
106
- uint32_t dseg1_address[2];
107
- uint32_t dseg1_len;
94
+ __le16 rx_dseg_count;
95
+ __le16 rsvd2;
96
+ __le32 exchange_address;
97
+ __le32 rsvd3;
98
+ __le32 rx_byte_count;
99
+ __le32 tx_byte_count;
100
+ struct dsd64 dsd[2];
108101 };
109102
110103 #define PT_LS4_UNSOL 0x56 /* pass-up unsolicited rec FC-NVMe request */
111104 struct pt_ls4_rx_unsol {
112105 uint8_t entry_type;
113106 uint8_t entry_count;
114
- uint16_t rsvd0;
115
- uint16_t rsvd1;
107
+ __le16 rsvd0;
108
+ __le16 rsvd1;
116109 uint8_t vp_index;
117110 uint8_t rsvd2;
118
- uint16_t rsvd3;
119
- uint16_t nport_handle;
120
- uint16_t frame_size;
121
- uint16_t rsvd4;
122
- uint32_t exchange_address;
111
+ __le16 rsvd3;
112
+ __le16 nport_handle;
113
+ __le16 frame_size;
114
+ __le16 rsvd4;
115
+ __le32 exchange_address;
123116 uint8_t d_id[3];
124117 uint8_t r_ctl;
125
- uint8_t s_id[3];
118
+ be_id_t s_id;
126119 uint8_t cs_ctl;
127120 uint8_t f_ctl[3];
128121 uint8_t type;
129
- uint16_t seq_cnt;
122
+ __le16 seq_cnt;
130123 uint8_t df_ctl;
131124 uint8_t seq_id;
132
- uint16_t rx_id;
133
- uint16_t ox_id;
134
- uint32_t param;
135
- uint32_t desc0;
125
+ __le16 rx_id;
126
+ __le16 ox_id;
127
+ __le32 param;
128
+ __le32 desc0;
136129 #define PT_LS4_PAYLOAD_OFFSET 0x2c
137130 #define PT_LS4_FIRST_PACKET_LEN 20
138
- uint32_t desc_len;
139
- uint32_t payload[3];
131
+ __le32 desc_len;
132
+ __le32 payload[3];
140133 };
141134
142135 /*
....@@ -145,8 +138,7 @@
145138 int qla_nvme_register_hba(struct scsi_qla_host *);
146139 int qla_nvme_register_remote(struct scsi_qla_host *, struct fc_port *);
147140 void qla_nvme_delete(struct scsi_qla_host *);
148
-void qla_nvme_abort(struct qla_hw_data *, struct srb *sp, int res);
149141 void qla24xx_nvme_ls4_iocb(struct scsi_qla_host *, struct pt_ls4_request *,
150142 struct req_que *);
151
-void qla24xx_async_gffid_sp_done(void *, int);
143
+void qla24xx_async_gffid_sp_done(struct srb *sp, int);
152144 #endif