|
@@ -68,6 +68,8 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
68
|
68
|
#define HERMON_HCR_READ_MCG 0x0025
|
69
|
69
|
#define HERMON_HCR_WRITE_MCG 0x0026
|
70
|
70
|
#define HERMON_HCR_MGID_HASH 0x0027
|
|
71
|
+#define HERMON_HCR_MOD_STAT_CFG 0x0034
|
|
72
|
+#define HERMON_HCR_QUERY_PORT 0x0043
|
71
|
73
|
#define HERMON_HCR_SENSE_PORT 0x004d
|
72
|
74
|
#define HERMON_HCR_RUN_FW 0x0ff6
|
73
|
75
|
#define HERMON_HCR_DISABLE_LAM 0x0ff7
|
|
@@ -86,7 +88,9 @@ FILE_LICENCE ( GPL2_OR_LATER );
|
86
|
88
|
#define HERMON_ST_MLX 0x07
|
87
|
89
|
|
88
|
90
|
/* Port types */
|
|
91
|
+#define HERMON_PORT_TYPE_UNKNOWN 0
|
89
|
92
|
#define HERMON_PORT_TYPE_IB 1
|
|
93
|
+#define HERMON_PORT_TYPE_ETH 2
|
90
|
94
|
|
91
|
95
|
/* MTUs */
|
92
|
96
|
#define HERMON_MTU_2048 0x04
|
|
@@ -191,16 +195,18 @@ struct hermonprm_event_mask_st {
|
191
|
195
|
|
192
|
196
|
struct hermonprm_port_state_change_event_st {
|
193
|
197
|
pseudo_bit_t reserved[0x00020];
|
|
198
|
+/* -------------- */
|
194
|
199
|
struct hermonprm_port_state_change_st data;
|
195
|
200
|
} __attribute__ (( packed ));
|
196
|
201
|
|
197
|
202
|
struct hermonprm_sense_port_st {
|
198
|
|
- pseudo_bit_t port_type[0x00020];
|
|
203
|
+ pseudo_bit_t reserved0[0x00020];
|
199
|
204
|
/* -------------- */
|
200
|
|
- pseudo_bit_t reserved[0x00020];
|
|
205
|
+ pseudo_bit_t port_type[0x00002];
|
|
206
|
+ pseudo_bit_t reserved1[0x00018];
|
201
|
207
|
} __attribute__ (( packed ));
|
202
|
208
|
|
203
|
|
-struct hermonprm_set_port_st {
|
|
209
|
+struct hermonprm_set_port_ib_st {
|
204
|
210
|
pseudo_bit_t rqk[0x00001];
|
205
|
211
|
pseudo_bit_t rcm[0x00001];
|
206
|
212
|
pseudo_bit_t reserved0[0x00002];
|
|
@@ -242,6 +248,134 @@ struct hermonprm_set_port_st {
|
242
|
248
|
pseudo_bit_t max_pkey[0x00010];
|
243
|
249
|
} __attribute__ (( packed ));
|
244
|
250
|
|
|
251
|
+struct hermonprm_query_port_cap_st {
|
|
252
|
+ pseudo_bit_t eth_mtu[0x00010];
|
|
253
|
+ pseudo_bit_t ib_mtu[0x00004];
|
|
254
|
+ pseudo_bit_t reserved0[0x00004];
|
|
255
|
+ pseudo_bit_t ib[0x00001];
|
|
256
|
+ pseudo_bit_t eth[0x00001];
|
|
257
|
+ pseudo_bit_t reserved1[0x00005];
|
|
258
|
+ pseudo_bit_t link_state[0x00001];
|
|
259
|
+/* -------------- */
|
|
260
|
+ pseudo_bit_t log_max_pkey[0x00004];
|
|
261
|
+ pseudo_bit_t log_max_gid[0x00004];
|
|
262
|
+ pseudo_bit_t ib_port_width[0x00004];
|
|
263
|
+ pseudo_bit_t reserved2[0x00004];
|
|
264
|
+ pseudo_bit_t eth_link_speed[0x00004];
|
|
265
|
+ pseudo_bit_t reserved3[0x00004];
|
|
266
|
+ pseudo_bit_t ib_link_speed[0x00004];
|
|
267
|
+ pseudo_bit_t reserved4[0x00004];
|
|
268
|
+/* -------------- */
|
|
269
|
+ pseudo_bit_t max_vl_ib[0x00004];
|
|
270
|
+ pseudo_bit_t reserved5[0x00004];
|
|
271
|
+ pseudo_bit_t log_max_mac[0x00004];
|
|
272
|
+ pseudo_bit_t log_max_vlan[0x00004];
|
|
273
|
+ pseudo_bit_t reserved6[0x00010];
|
|
274
|
+/* -------------- */
|
|
275
|
+ pseudo_bit_t reserved7[0x00020];
|
|
276
|
+/* -------------- */
|
|
277
|
+ pseudo_bit_t mac_47_32[0x00010];
|
|
278
|
+ pseudo_bit_t reserved8[0x00010];
|
|
279
|
+/* -------------- */
|
|
280
|
+ pseudo_bit_t mac_31_0[0x00020];
|
|
281
|
+/* -------------- */
|
|
282
|
+ pseudo_bit_t vendor_oui[0x00018];
|
|
283
|
+ pseudo_bit_t transceiver_type[0x00008];
|
|
284
|
+/* -------------- */
|
|
285
|
+ pseudo_bit_t reserved9[0x00010];
|
|
286
|
+ pseudo_bit_t wavelength[0x00010];
|
|
287
|
+/* -------------- */
|
|
288
|
+ pseudo_bit_t transceiver_code_hi[0x00020];
|
|
289
|
+/* -------------- */
|
|
290
|
+ pseudo_bit_t transceiver_code_lo[0x00020];
|
|
291
|
+/* -------------- */
|
|
292
|
+ pseudo_bit_t reserved10[0x000c0];
|
|
293
|
+} __attribute__ (( packed ));
|
|
294
|
+
|
|
295
|
+struct hermonprm_set_port_general_context_st {
|
|
296
|
+ pseudo_bit_t v_mtu[0x00001];
|
|
297
|
+ pseudo_bit_t v_pprx[0x00001];
|
|
298
|
+ pseudo_bit_t v_pptx[0x00001];
|
|
299
|
+ pseudo_bit_t reserved0[0x0001d];
|
|
300
|
+/* -------------- */
|
|
301
|
+ pseudo_bit_t mtu[0x00010];
|
|
302
|
+ pseudo_bit_t reserved1[0x00010];
|
|
303
|
+/* -------------- */
|
|
304
|
+ pseudo_bit_t reserved2[0x00010];
|
|
305
|
+ pseudo_bit_t pfctx[0x00008];
|
|
306
|
+ pseudo_bit_t reserved3[0x00007];
|
|
307
|
+ pseudo_bit_t pptx[0x00001];
|
|
308
|
+/* -------------- */
|
|
309
|
+ pseudo_bit_t reserved4[0x00010];
|
|
310
|
+ pseudo_bit_t pfcrx[0x00008];
|
|
311
|
+ pseudo_bit_t reserved5[0x00007];
|
|
312
|
+ pseudo_bit_t pprx[0x00001];
|
|
313
|
+/* -------------- */
|
|
314
|
+} __attribute__ (( packed ));
|
|
315
|
+
|
|
316
|
+struct hermonprm_set_port_rqp_calc_st {
|
|
317
|
+ pseudo_bit_t base_qpn[0x00018];
|
|
318
|
+ pseudo_bit_t reserved0[0x00008];
|
|
319
|
+/* -------------- */
|
|
320
|
+ pseudo_bit_t n_p[0x00002];
|
|
321
|
+ pseudo_bit_t reserved1[0x00006];
|
|
322
|
+ pseudo_bit_t n_v[0x00003];
|
|
323
|
+ pseudo_bit_t reserved2[0x00005];
|
|
324
|
+ pseudo_bit_t n_m[0x00004];
|
|
325
|
+ pseudo_bit_t reserved3[0x0000c];
|
|
326
|
+/* -------------- */
|
|
327
|
+ pseudo_bit_t mac_miss_index[0x00008];
|
|
328
|
+ pseudo_bit_t reserved4[0x00018];
|
|
329
|
+/* -------------- */
|
|
330
|
+ pseudo_bit_t vlan_miss_index[0x00007];
|
|
331
|
+ pseudo_bit_t reserved5[0x00008];
|
|
332
|
+ pseudo_bit_t intra_miss[0x00001];
|
|
333
|
+ pseudo_bit_t no_vlan_index[0x00007];
|
|
334
|
+ pseudo_bit_t reserved6[0x00008];
|
|
335
|
+ pseudo_bit_t intra_no_vlan[0x00001];
|
|
336
|
+/* -------------- */
|
|
337
|
+ pseudo_bit_t no_vlan_prio[0x00003];
|
|
338
|
+ pseudo_bit_t reserved7[0x0001d];
|
|
339
|
+/* -------------- */
|
|
340
|
+ pseudo_bit_t promisc_qpn[0x00018];
|
|
341
|
+ pseudo_bit_t reserved8[0x00007];
|
|
342
|
+ pseudo_bit_t en_uc_promisc[0x00001];
|
|
343
|
+/* -------------- */
|
|
344
|
+ pseudo_bit_t def_mcast_qpn[0x00018];
|
|
345
|
+ pseudo_bit_t reserved9[0x00005];
|
|
346
|
+ pseudo_bit_t mc_by_vlan[0x00001];
|
|
347
|
+ pseudo_bit_t mc_promisc_mode[0x00002];
|
|
348
|
+/* -------------- */
|
|
349
|
+ pseudo_bit_t reserved10[0x00020];
|
|
350
|
+/* -------------- */
|
|
351
|
+} __attribute__ (( packed ));
|
|
352
|
+
|
|
353
|
+struct hermonprm_set_port_mac_table_st {
|
|
354
|
+ pseudo_bit_t mac_h[0x00010];
|
|
355
|
+ pseudo_bit_t reserved0[0x0000f];
|
|
356
|
+ pseudo_bit_t v[0x00001];
|
|
357
|
+/* -------------- */
|
|
358
|
+ pseudo_bit_t mac_l[0x00020];
|
|
359
|
+/* -------------- */
|
|
360
|
+} __attribute__ (( packed ));
|
|
361
|
+
|
|
362
|
+struct hermonprm_set_port_vlan_st {
|
|
363
|
+ pseudo_bit_t vlan_id[0x0000c];
|
|
364
|
+ pseudo_bit_t reserved0[0x00012];
|
|
365
|
+ pseudo_bit_t intra[0x00001];
|
|
366
|
+ pseudo_bit_t v[0x00001];
|
|
367
|
+/* -------------- */
|
|
368
|
+} __attribute__ (( packed ));
|
|
369
|
+
|
|
370
|
+struct hermonprm_mod_stat_cfg_pf_net_boot_st {
|
|
371
|
+ pseudo_bit_t reserved1[0x0001c];
|
|
372
|
+ pseudo_bit_t pf_net_boot[0x00001];
|
|
373
|
+ pseudo_bit_t reserved2[0x00002];
|
|
374
|
+ pseudo_bit_t pf_net_boot_m[0x00001];
|
|
375
|
+/* -------------- */
|
|
376
|
+ pseudo_bit_t reserved0[0x00020];
|
|
377
|
+} __attribute__ (( packed ));
|
|
378
|
+
|
245
|
379
|
/*
|
246
|
380
|
* Wrapper structures for hardware datatypes
|
247
|
381
|
*
|
|
@@ -260,6 +394,7 @@ struct MLX_DECLARE_STRUCT ( hermonprm_init_hca );
|
260
|
394
|
struct MLX_DECLARE_STRUCT ( hermonprm_mad_ifc );
|
261
|
395
|
struct MLX_DECLARE_STRUCT ( hermonprm_mcg_entry );
|
262
|
396
|
struct MLX_DECLARE_STRUCT ( hermonprm_mgm_hash );
|
|
397
|
+struct MLX_DECLARE_STRUCT ( hermonprm_mod_stat_cfg_pf_net_boot );
|
263
|
398
|
struct MLX_DECLARE_STRUCT ( hermonprm_mpt );
|
264
|
399
|
struct MLX_DECLARE_STRUCT ( hermonprm_mtt );
|
265
|
400
|
struct MLX_DECLARE_STRUCT ( hermonprm_port_state_change_event );
|
|
@@ -267,11 +402,16 @@ struct MLX_DECLARE_STRUCT ( hermonprm_qp_db_record );
|
267
|
402
|
struct MLX_DECLARE_STRUCT ( hermonprm_qp_ee_state_transitions );
|
268
|
403
|
struct MLX_DECLARE_STRUCT ( hermonprm_query_dev_cap );
|
269
|
404
|
struct MLX_DECLARE_STRUCT ( hermonprm_query_fw );
|
|
405
|
+struct MLX_DECLARE_STRUCT ( hermonprm_query_port_cap );
|
270
|
406
|
struct MLX_DECLARE_STRUCT ( hermonprm_queue_pair_ee_context_entry );
|
271
|
407
|
struct MLX_DECLARE_STRUCT ( hermonprm_scalar_parameter );
|
272
|
408
|
struct MLX_DECLARE_STRUCT ( hermonprm_sense_port );
|
273
|
409
|
struct MLX_DECLARE_STRUCT ( hermonprm_send_db_register );
|
274
|
|
-struct MLX_DECLARE_STRUCT ( hermonprm_set_port );
|
|
410
|
+struct MLX_DECLARE_STRUCT ( hermonprm_set_port_ib );
|
|
411
|
+struct MLX_DECLARE_STRUCT ( hermonprm_set_port_general_context );
|
|
412
|
+struct MLX_DECLARE_STRUCT ( hermonprm_set_port_mac_table );
|
|
413
|
+struct MLX_DECLARE_STRUCT ( hermonprm_set_port_rqp_calc );
|
|
414
|
+struct MLX_DECLARE_STRUCT ( hermonprm_set_port_vlan );
|
275
|
415
|
struct MLX_DECLARE_STRUCT ( hermonprm_ud_address_vector );
|
276
|
416
|
struct MLX_DECLARE_STRUCT ( hermonprm_virtual_physical_mapping );
|
277
|
417
|
struct MLX_DECLARE_STRUCT ( hermonprm_wqe_segment_ctrl_mlx );
|
|
@@ -336,6 +476,14 @@ union hermonprm_mad {
|
336
|
476
|
union ib_mad mad;
|
337
|
477
|
} __attribute__ (( packed ));
|
338
|
478
|
|
|
479
|
+union hermonprm_set_port {
|
|
480
|
+ struct hermonprm_set_port_ib ib;
|
|
481
|
+ struct hermonprm_set_port_general_context general;
|
|
482
|
+ struct hermonprm_set_port_rqp_calc rqp_calc;
|
|
483
|
+ struct hermonprm_set_port_mac_table mac_table[128];
|
|
484
|
+ struct hermonprm_set_port_vlan vlan;
|
|
485
|
+} __attribute__ (( packed ));
|
|
486
|
+
|
339
|
487
|
/*
|
340
|
488
|
* iPXE-specific definitions
|
341
|
489
|
*
|