1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 #define LPFC_BSG_VENDOR_SET_CT_EVENT 1
30 #define LPFC_BSG_VENDOR_GET_CT_EVENT 2
31 #define LPFC_BSG_VENDOR_SEND_MGMT_RESP 3
32 #define LPFC_BSG_VENDOR_DIAG_MODE 4
33 #define LPFC_BSG_VENDOR_DIAG_RUN_LOOPBACK 5
34 #define LPFC_BSG_VENDOR_GET_MGMT_REV 6
35 #define LPFC_BSG_VENDOR_MBOX 7
36 #define LPFC_BSG_VENDOR_MENLO_CMD 8
37 #define LPFC_BSG_VENDOR_MENLO_DATA 9
38 #define LPFC_BSG_VENDOR_DIAG_MODE_END 10
39 #define LPFC_BSG_VENDOR_LINK_DIAG_TEST 11
40 #define LPFC_BSG_VENDOR_FORCED_LINK_SPEED 14
41 #define LPFC_BSG_VENDOR_RAS_GET_LWPD 16
42 #define LPFC_BSG_VENDOR_RAS_GET_FWLOG 17
43 #define LPFC_BSG_VENDOR_RAS_GET_CONFIG 18
44 #define LPFC_BSG_VENDOR_RAS_SET_CONFIG 19
45 #define LPFC_BSG_VENDOR_GET_TRUNK_INFO 20
46
47 struct set_ct_event {
48 uint32_t command;
49 uint32_t type_mask;
50 uint32_t ev_req_id;
51 uint32_t ev_reg_id;
52 };
53
54 struct get_ct_event {
55 uint32_t command;
56 uint32_t ev_reg_id;
57 uint32_t ev_req_id;
58 };
59
60 struct get_ct_event_reply {
61 uint32_t immed_data;
62 uint32_t type;
63 };
64
65 struct send_mgmt_resp {
66 uint32_t command;
67 uint32_t tag;
68 };
69
70
71 #define DISABLE_LOOP_BACK 0x0
72 #define INTERNAL_LOOP_BACK 0x1
73 #define EXTERNAL_LOOP_BACK 0x2
74
75 struct diag_mode_set {
76 uint32_t command;
77 uint32_t type;
78 uint32_t timeout;
79 uint32_t physical_link;
80 };
81
82 struct sli4_link_diag {
83 uint32_t command;
84 uint32_t timeout;
85 uint32_t test_id;
86 uint32_t loops;
87 uint32_t test_version;
88 uint32_t error_action;
89 };
90
91 struct diag_mode_test {
92 uint32_t command;
93 };
94
95 struct diag_status {
96 uint32_t mbox_status;
97 uint32_t shdr_status;
98 uint32_t shdr_add_status;
99 };
100
101 #define LPFC_WWNN_TYPE 0
102 #define LPFC_WWPN_TYPE 1
103
104 struct get_mgmt_rev {
105 uint32_t command;
106 };
107
108 #define MANAGEMENT_MAJOR_REV 1
109 #define MANAGEMENT_MINOR_REV 1
110
111
112 struct MgmtRevInfo {
113 uint32_t a_Major;
114 uint32_t a_Minor;
115 };
116
117 struct get_mgmt_rev_reply {
118 struct MgmtRevInfo info;
119 };
120
121 #define BSG_MBOX_SIZE 4096
122
123
124 struct dfc_mbox_req {
125 uint32_t command;
126 uint32_t mbOffset;
127 uint32_t inExtWLen;
128 uint32_t outExtWLen;
129 uint32_t extMboxTag;
130 uint32_t extSeqNum;
131 };
132
133
134 struct menlo_command {
135 uint32_t cmd;
136 uint32_t xri;
137 };
138
139 struct menlo_response {
140 uint32_t xri;
141 };
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174 #define bsg_bf_get_le32(name, ptr) \
175 ((le32_to_cpu((ptr)->name##_WORD) >> name##_SHIFT) & name##_MASK)
176 #define bsg_bf_get(name, ptr) \
177 (((ptr)->name##_WORD >> name##_SHIFT) & name##_MASK)
178 #define bsg_bf_set_le32(name, ptr, value) \
179 ((ptr)->name##_WORD = cpu_to_le32(((((value) & \
180 name##_MASK) << name##_SHIFT) | (le32_to_cpu((ptr)->name##_WORD) & \
181 ~(name##_MASK << name##_SHIFT)))))
182 #define bsg_bf_set(name, ptr, value) \
183 ((ptr)->name##_WORD = ((((value) & name##_MASK) << name##_SHIFT) | \
184 ((ptr)->name##_WORD & ~(name##_MASK << name##_SHIFT))))
185
186
187
188
189
190
191
192
193
194
195
196 struct lpfc_sli_config_mse {
197 uint32_t pa_lo;
198 uint32_t pa_hi;
199 uint32_t buf_len;
200 #define lpfc_mbox_sli_config_mse_len_SHIFT 0
201 #define lpfc_mbox_sli_config_mse_len_MASK 0xffffff
202 #define lpfc_mbox_sli_config_mse_len_WORD buf_len
203 };
204
205 struct lpfc_sli_config_hbd {
206 uint32_t buf_len;
207 #define lpfc_mbox_sli_config_ecmn_hbd_len_SHIFT 0
208 #define lpfc_mbox_sli_config_ecmn_hbd_len_MASK 0xffffff
209 #define lpfc_mbox_sli_config_ecmn_hbd_len_WORD buf_len
210 uint32_t pa_lo;
211 uint32_t pa_hi;
212 };
213
214 struct lpfc_sli_config_hdr {
215 uint32_t word1;
216 #define lpfc_mbox_hdr_emb_SHIFT 0
217 #define lpfc_mbox_hdr_emb_MASK 0x00000001
218 #define lpfc_mbox_hdr_emb_WORD word1
219 #define lpfc_mbox_hdr_mse_cnt_SHIFT 3
220 #define lpfc_mbox_hdr_mse_cnt_MASK 0x0000001f
221 #define lpfc_mbox_hdr_mse_cnt_WORD word1
222 uint32_t payload_length;
223 uint32_t tag_lo;
224 uint32_t tag_hi;
225 uint32_t reserved5;
226 };
227
228 struct lpfc_sli_config_emb0_subsys {
229 struct lpfc_sli_config_hdr sli_config_hdr;
230 #define LPFC_MBX_SLI_CONFIG_MAX_MSE 19
231 struct lpfc_sli_config_mse mse[LPFC_MBX_SLI_CONFIG_MAX_MSE];
232 uint32_t padding;
233 uint32_t word64;
234 #define lpfc_emb0_subcmnd_opcode_SHIFT 0
235 #define lpfc_emb0_subcmnd_opcode_MASK 0xff
236 #define lpfc_emb0_subcmnd_opcode_WORD word64
237 #define lpfc_emb0_subcmnd_subsys_SHIFT 8
238 #define lpfc_emb0_subcmnd_subsys_MASK 0xff
239 #define lpfc_emb0_subcmnd_subsys_WORD word64
240
241 #define SLI_CONFIG_SUBSYS_FCOE 0x0C
242 #define FCOE_OPCODE_READ_FCF 0x08
243 #define FCOE_OPCODE_ADD_FCF 0x09
244 #define FCOE_OPCODE_SET_DPORT_MODE 0x27
245 #define FCOE_OPCODE_GET_DPORT_RESULTS 0x28
246 };
247
248 struct lpfc_sli_config_emb1_subsys {
249 struct lpfc_sli_config_hdr sli_config_hdr;
250 uint32_t word6;
251 #define lpfc_emb1_subcmnd_opcode_SHIFT 0
252 #define lpfc_emb1_subcmnd_opcode_MASK 0xff
253 #define lpfc_emb1_subcmnd_opcode_WORD word6
254 #define lpfc_emb1_subcmnd_subsys_SHIFT 8
255 #define lpfc_emb1_subcmnd_subsys_MASK 0xff
256 #define lpfc_emb1_subcmnd_subsys_WORD word6
257
258 #define SLI_CONFIG_SUBSYS_COMN 0x01
259 #define COMN_OPCODE_GET_PROFILE_CONFIG 0xA4
260 #define COMN_OPCODE_READ_OBJECT 0xAB
261 #define COMN_OPCODE_WRITE_OBJECT 0xAC
262 #define COMN_OPCODE_READ_OBJECT_LIST 0xAD
263 #define COMN_OPCODE_DELETE_OBJECT 0xAE
264 #define COMN_OPCODE_GET_CNTL_ADDL_ATTRIBUTES 0x79
265 #define COMN_OPCODE_GET_CNTL_ATTRIBUTES 0x20
266 uint32_t timeout;
267 uint32_t request_length;
268 uint32_t word9;
269 #define lpfc_subcmnd_version_SHIFT 0
270 #define lpfc_subcmnd_version_MASK 0xff
271 #define lpfc_subcmnd_version_WORD word9
272 uint32_t word10;
273 #define lpfc_subcmnd_ask_rd_len_SHIFT 0
274 #define lpfc_subcmnd_ask_rd_len_MASK 0xffffff
275 #define lpfc_subcmnd_ask_rd_len_WORD word10
276 uint32_t rd_offset;
277 uint32_t obj_name[26];
278 uint32_t hbd_count;
279 #define LPFC_MBX_SLI_CONFIG_MAX_HBD 8
280 struct lpfc_sli_config_hbd hbd[LPFC_MBX_SLI_CONFIG_MAX_HBD];
281 };
282
283 struct lpfc_sli_config_mbox {
284 uint32_t word0;
285 #define lpfc_mqe_status_SHIFT 16
286 #define lpfc_mqe_status_MASK 0x0000FFFF
287 #define lpfc_mqe_status_WORD word0
288 #define lpfc_mqe_command_SHIFT 8
289 #define lpfc_mqe_command_MASK 0x000000FF
290 #define lpfc_mqe_command_WORD word0
291 union {
292 struct lpfc_sli_config_emb0_subsys sli_config_emb0_subsys;
293 struct lpfc_sli_config_emb1_subsys sli_config_emb1_subsys;
294 } un;
295 };
296
297 #define LPFC_FORCED_LINK_SPEED_NOT_SUPPORTED 0
298 #define LPFC_FORCED_LINK_SPEED_SUPPORTED 1
299 struct get_forced_link_speed_support {
300 uint32_t command;
301 };
302 struct forced_link_speed_support_reply {
303 uint8_t supported;
304 };
305
306 struct lpfc_bsg_ras_req {
307 uint32_t command;
308 };
309
310 struct lpfc_bsg_get_fwlog_req {
311 uint32_t command;
312 uint32_t read_size;
313 uint32_t read_offset;
314 };
315
316 struct lpfc_bsg_get_ras_lwpd {
317 uint32_t offset;
318 uint32_t wrap_count;
319 };
320
321 struct lpfc_bsg_set_ras_config_req {
322 uint32_t command;
323 uint8_t action;
324 #define LPFC_RASACTION_STOP_LOGGING 0x00
325 #define LPFC_RASACTION_START_LOGGING 0x01
326 uint8_t log_level;
327 };
328
329 struct lpfc_bsg_get_ras_config_reply {
330 uint8_t state;
331 #define LPFC_RASLOG_STATE_STOPPED 0x00
332 #define LPFC_RASLOG_STATE_RUNNING 0x01
333 uint8_t log_level;
334 uint32_t log_buff_sz;
335 };
336
337 struct lpfc_trunk_info {
338 uint32_t word0;
339 #define lpfc_trunk_info_link_status_SHIFT 0
340 #define lpfc_trunk_info_link_status_MASK 1
341 #define lpfc_trunk_info_link_status_WORD word0
342 #define lpfc_trunk_info_trunk_active0_SHIFT 8
343 #define lpfc_trunk_info_trunk_active0_MASK 1
344 #define lpfc_trunk_info_trunk_active0_WORD word0
345 #define lpfc_trunk_info_trunk_active1_SHIFT 9
346 #define lpfc_trunk_info_trunk_active1_MASK 1
347 #define lpfc_trunk_info_trunk_active1_WORD word0
348 #define lpfc_trunk_info_trunk_active2_SHIFT 10
349 #define lpfc_trunk_info_trunk_active2_MASK 1
350 #define lpfc_trunk_info_trunk_active2_WORD word0
351 #define lpfc_trunk_info_trunk_active3_SHIFT 11
352 #define lpfc_trunk_info_trunk_active3_MASK 1
353 #define lpfc_trunk_info_trunk_active3_WORD word0
354 #define lpfc_trunk_info_trunk_config0_SHIFT 12
355 #define lpfc_trunk_info_trunk_config0_MASK 1
356 #define lpfc_trunk_info_trunk_config0_WORD word0
357 #define lpfc_trunk_info_trunk_config1_SHIFT 13
358 #define lpfc_trunk_info_trunk_config1_MASK 1
359 #define lpfc_trunk_info_trunk_config1_WORD word0
360 #define lpfc_trunk_info_trunk_config2_SHIFT 14
361 #define lpfc_trunk_info_trunk_config2_MASK 1
362 #define lpfc_trunk_info_trunk_config2_WORD word0
363 #define lpfc_trunk_info_trunk_config3_SHIFT 15
364 #define lpfc_trunk_info_trunk_config3_MASK 1
365 #define lpfc_trunk_info_trunk_config3_WORD word0
366 uint16_t port_speed;
367 uint16_t logical_speed;
368 uint32_t reserved3;
369 };
370
371 struct get_trunk_info_req {
372 uint32_t command;
373 };
374
375
376 #define SLI_CONFIG_NOT_HANDLED 0
377 #define SLI_CONFIG_HANDLED 1