]> Git Repo - linux.git/blob - drivers/infiniband/hw/efa/efa_admin_cmds_defs.h
net: ipa: adjust GSI register addresses
[linux.git] / drivers / infiniband / hw / efa / efa_admin_cmds_defs.h
1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
2 /*
3  * Copyright 2018-2020 Amazon.com, Inc. or its affiliates. All rights reserved.
4  */
5
6 #ifndef _EFA_ADMIN_CMDS_H_
7 #define _EFA_ADMIN_CMDS_H_
8
9 #define EFA_ADMIN_API_VERSION_MAJOR          0
10 #define EFA_ADMIN_API_VERSION_MINOR          1
11
12 /* EFA admin queue opcodes */
13 enum efa_admin_aq_opcode {
14         EFA_ADMIN_CREATE_QP                         = 1,
15         EFA_ADMIN_MODIFY_QP                         = 2,
16         EFA_ADMIN_QUERY_QP                          = 3,
17         EFA_ADMIN_DESTROY_QP                        = 4,
18         EFA_ADMIN_CREATE_AH                         = 5,
19         EFA_ADMIN_DESTROY_AH                        = 6,
20         EFA_ADMIN_REG_MR                            = 7,
21         EFA_ADMIN_DEREG_MR                          = 8,
22         EFA_ADMIN_CREATE_CQ                         = 9,
23         EFA_ADMIN_DESTROY_CQ                        = 10,
24         EFA_ADMIN_GET_FEATURE                       = 11,
25         EFA_ADMIN_SET_FEATURE                       = 12,
26         EFA_ADMIN_GET_STATS                         = 13,
27         EFA_ADMIN_ALLOC_PD                          = 14,
28         EFA_ADMIN_DEALLOC_PD                        = 15,
29         EFA_ADMIN_ALLOC_UAR                         = 16,
30         EFA_ADMIN_DEALLOC_UAR                       = 17,
31         EFA_ADMIN_MAX_OPCODE                        = 17,
32 };
33
34 enum efa_admin_aq_feature_id {
35         EFA_ADMIN_DEVICE_ATTR                       = 1,
36         EFA_ADMIN_AENQ_CONFIG                       = 2,
37         EFA_ADMIN_NETWORK_ATTR                      = 3,
38         EFA_ADMIN_QUEUE_ATTR                        = 4,
39         EFA_ADMIN_HW_HINTS                          = 5,
40         EFA_ADMIN_HOST_INFO                         = 6,
41 };
42
43 /* QP transport type */
44 enum efa_admin_qp_type {
45         /* Unreliable Datagram */
46         EFA_ADMIN_QP_TYPE_UD                        = 1,
47         /* Scalable Reliable Datagram */
48         EFA_ADMIN_QP_TYPE_SRD                       = 2,
49 };
50
51 /* QP state */
52 enum efa_admin_qp_state {
53         EFA_ADMIN_QP_STATE_RESET                    = 0,
54         EFA_ADMIN_QP_STATE_INIT                     = 1,
55         EFA_ADMIN_QP_STATE_RTR                      = 2,
56         EFA_ADMIN_QP_STATE_RTS                      = 3,
57         EFA_ADMIN_QP_STATE_SQD                      = 4,
58         EFA_ADMIN_QP_STATE_SQE                      = 5,
59         EFA_ADMIN_QP_STATE_ERR                      = 6,
60 };
61
62 enum efa_admin_get_stats_type {
63         EFA_ADMIN_GET_STATS_TYPE_BASIC              = 0,
64         EFA_ADMIN_GET_STATS_TYPE_MESSAGES           = 1,
65         EFA_ADMIN_GET_STATS_TYPE_RDMA_READ          = 2,
66 };
67
68 enum efa_admin_get_stats_scope {
69         EFA_ADMIN_GET_STATS_SCOPE_ALL               = 0,
70         EFA_ADMIN_GET_STATS_SCOPE_QUEUE             = 1,
71 };
72
73 /*
74  * QP allocation sizes, converted by fabric QueuePair (QP) create command
75  * from QP capabilities.
76  */
77 struct efa_admin_qp_alloc_size {
78         /* Send descriptor ring size in bytes */
79         u32 send_queue_ring_size;
80
81         /* Max number of WQEs that can be outstanding on send queue. */
82         u32 send_queue_depth;
83
84         /*
85          * Recv descriptor ring size in bytes, sufficient for user-provided
86          * number of WQEs
87          */
88         u32 recv_queue_ring_size;
89
90         /* Max number of WQEs that can be outstanding on recv queue */
91         u32 recv_queue_depth;
92 };
93
94 struct efa_admin_create_qp_cmd {
95         /* Common Admin Queue descriptor */
96         struct efa_admin_aq_common_desc aq_common_desc;
97
98         /* Protection Domain associated with this QP */
99         u16 pd;
100
101         /* QP type */
102         u8 qp_type;
103
104         /*
105          * 0 : sq_virt - If set, SQ ring base address is
106          *    virtual (IOVA returned by MR registration)
107          * 1 : rq_virt - If set, RQ ring base address is
108          *    virtual (IOVA returned by MR registration)
109          * 7:2 : reserved - MBZ
110          */
111         u8 flags;
112
113         /*
114          * Send queue (SQ) ring base physical address. This field is not
115          * used if this is a Low Latency Queue(LLQ).
116          */
117         u64 sq_base_addr;
118
119         /* Receive queue (RQ) ring base address. */
120         u64 rq_base_addr;
121
122         /* Index of CQ to be associated with Send Queue completions */
123         u32 send_cq_idx;
124
125         /* Index of CQ to be associated with Recv Queue completions */
126         u32 recv_cq_idx;
127
128         /*
129          * Memory registration key for the SQ ring, used only when not in
130          * LLQ mode and base address is virtual
131          */
132         u32 sq_l_key;
133
134         /*
135          * Memory registration key for the RQ ring, used only when base
136          * address is virtual
137          */
138         u32 rq_l_key;
139
140         /* Requested QP allocation sizes */
141         struct efa_admin_qp_alloc_size qp_alloc_size;
142
143         /* UAR number */
144         u16 uar;
145
146         /* MBZ */
147         u16 reserved;
148
149         /* MBZ */
150         u32 reserved2;
151 };
152
153 struct efa_admin_create_qp_resp {
154         /* Common Admin Queue completion descriptor */
155         struct efa_admin_acq_common_desc acq_common_desc;
156
157         /*
158          * Opaque handle to be used for consequent admin operations on the
159          * QP
160          */
161         u32 qp_handle;
162
163         /*
164          * QP number in the given EFA virtual device. Least-significant bits
165          *    (as needed according to max_qp) carry unique QP ID
166          */
167         u16 qp_num;
168
169         /* MBZ */
170         u16 reserved;
171
172         /* Index of sub-CQ for Send Queue completions */
173         u16 send_sub_cq_idx;
174
175         /* Index of sub-CQ for Receive Queue completions */
176         u16 recv_sub_cq_idx;
177
178         /* SQ doorbell address, as offset to PCIe DB BAR */
179         u32 sq_db_offset;
180
181         /* RQ doorbell address, as offset to PCIe DB BAR */
182         u32 rq_db_offset;
183
184         /*
185          * low latency send queue ring base address as an offset to PCIe
186          * MMIO LLQ_MEM BAR
187          */
188         u32 llq_descriptors_offset;
189 };
190
191 struct efa_admin_modify_qp_cmd {
192         /* Common Admin Queue descriptor */
193         struct efa_admin_aq_common_desc aq_common_desc;
194
195         /*
196          * Mask indicating which fields should be updated
197          * 0 : qp_state
198          * 1 : cur_qp_state
199          * 2 : qkey
200          * 3 : sq_psn
201          * 4 : sq_drained_async_notify
202          * 5 : rnr_retry
203          * 31:6 : reserved
204          */
205         u32 modify_mask;
206
207         /* QP handle returned by create_qp command */
208         u32 qp_handle;
209
210         /* QP state */
211         u32 qp_state;
212
213         /* Override current QP state (before applying the transition) */
214         u32 cur_qp_state;
215
216         /* QKey */
217         u32 qkey;
218
219         /* SQ PSN */
220         u32 sq_psn;
221
222         /* Enable async notification when SQ is drained */
223         u8 sq_drained_async_notify;
224
225         /* Number of RNR retries (valid only for SRD QPs) */
226         u8 rnr_retry;
227
228         /* MBZ */
229         u16 reserved2;
230 };
231
232 struct efa_admin_modify_qp_resp {
233         /* Common Admin Queue completion descriptor */
234         struct efa_admin_acq_common_desc acq_common_desc;
235 };
236
237 struct efa_admin_query_qp_cmd {
238         /* Common Admin Queue descriptor */
239         struct efa_admin_aq_common_desc aq_common_desc;
240
241         /* QP handle returned by create_qp command */
242         u32 qp_handle;
243 };
244
245 struct efa_admin_query_qp_resp {
246         /* Common Admin Queue completion descriptor */
247         struct efa_admin_acq_common_desc acq_common_desc;
248
249         /* QP state */
250         u32 qp_state;
251
252         /* QKey */
253         u32 qkey;
254
255         /* SQ PSN */
256         u32 sq_psn;
257
258         /* Indicates that draining is in progress */
259         u8 sq_draining;
260
261         /* Number of RNR retries (valid only for SRD QPs) */
262         u8 rnr_retry;
263
264         /* MBZ */
265         u16 reserved2;
266 };
267
268 struct efa_admin_destroy_qp_cmd {
269         /* Common Admin Queue descriptor */
270         struct efa_admin_aq_common_desc aq_common_desc;
271
272         /* QP handle returned by create_qp command */
273         u32 qp_handle;
274 };
275
276 struct efa_admin_destroy_qp_resp {
277         /* Common Admin Queue completion descriptor */
278         struct efa_admin_acq_common_desc acq_common_desc;
279 };
280
281 /*
282  * Create Address Handle command parameters. Must not be called more than
283  * once for the same destination
284  */
285 struct efa_admin_create_ah_cmd {
286         /* Common Admin Queue descriptor */
287         struct efa_admin_aq_common_desc aq_common_desc;
288
289         /* Destination address in network byte order */
290         u8 dest_addr[16];
291
292         /* PD number */
293         u16 pd;
294
295         /* MBZ */
296         u16 reserved;
297 };
298
299 struct efa_admin_create_ah_resp {
300         /* Common Admin Queue completion descriptor */
301         struct efa_admin_acq_common_desc acq_common_desc;
302
303         /* Target interface address handle (opaque) */
304         u16 ah;
305
306         /* MBZ */
307         u16 reserved;
308 };
309
310 struct efa_admin_destroy_ah_cmd {
311         /* Common Admin Queue descriptor */
312         struct efa_admin_aq_common_desc aq_common_desc;
313
314         /* Target interface address handle (opaque) */
315         u16 ah;
316
317         /* PD number */
318         u16 pd;
319 };
320
321 struct efa_admin_destroy_ah_resp {
322         /* Common Admin Queue completion descriptor */
323         struct efa_admin_acq_common_desc acq_common_desc;
324 };
325
326 /*
327  * Registration of MemoryRegion, required for QP working with Virtual
328  * Addresses. In standard verbs semantics, region length is limited to 2GB
329  * space, but EFA offers larger MR support for large memory space, to ease
330  * on users working with very large datasets (i.e. full GPU memory mapping).
331  */
332 struct efa_admin_reg_mr_cmd {
333         /* Common Admin Queue descriptor */
334         struct efa_admin_aq_common_desc aq_common_desc;
335
336         /* Protection Domain */
337         u16 pd;
338
339         /* MBZ */
340         u16 reserved16_w1;
341
342         /* Physical Buffer List, each element is page-aligned. */
343         union {
344                 /*
345                  * Inline array of guest-physical page addresses of user
346                  * memory pages (optimization for short region
347                  * registrations)
348                  */
349                 u64 inline_pbl_array[4];
350
351                 /* points to PBL (direct or indirect, chained if needed) */
352                 struct efa_admin_ctrl_buff_info pbl;
353         } pbl;
354
355         /* Memory region length, in bytes. */
356         u64 mr_length;
357
358         /*
359          * flags and page size
360          * 4:0 : phys_page_size_shift - page size is (1 <<
361          *    phys_page_size_shift). Page size is used for
362          *    building the Virtual to Physical address mapping
363          * 6:5 : reserved - MBZ
364          * 7 : mem_addr_phy_mode_en - Enable bit for physical
365          *    memory registration (no translation), can be used
366          *    only by privileged clients. If set, PBL must
367          *    contain a single entry.
368          */
369         u8 flags;
370
371         /*
372          * permissions
373          * 0 : local_write_enable - Local write permissions:
374          *    must be set for RQ buffers and buffers posted for
375          *    RDMA Read requests
376          * 1 : reserved1 - MBZ
377          * 2 : remote_read_enable - Remote read permissions:
378          *    must be set to enable RDMA read from the region
379          * 7:3 : reserved2 - MBZ
380          */
381         u8 permissions;
382
383         /* MBZ */
384         u16 reserved16_w5;
385
386         /* number of pages in PBL (redundant, could be calculated) */
387         u32 page_num;
388
389         /*
390          * IO Virtual Address associated with this MR. If
391          * mem_addr_phy_mode_en is set, contains the physical address of
392          * the region.
393          */
394         u64 iova;
395 };
396
397 struct efa_admin_reg_mr_resp {
398         /* Common Admin Queue completion descriptor */
399         struct efa_admin_acq_common_desc acq_common_desc;
400
401         /*
402          * L_Key, to be used in conjunction with local buffer references in
403          * SQ and RQ WQE, or with virtual RQ/CQ rings
404          */
405         u32 l_key;
406
407         /*
408          * R_Key, to be used in RDMA messages to refer to remotely accessed
409          * memory region
410          */
411         u32 r_key;
412 };
413
414 struct efa_admin_dereg_mr_cmd {
415         /* Common Admin Queue descriptor */
416         struct efa_admin_aq_common_desc aq_common_desc;
417
418         /* L_Key, memory region's l_key */
419         u32 l_key;
420 };
421
422 struct efa_admin_dereg_mr_resp {
423         /* Common Admin Queue completion descriptor */
424         struct efa_admin_acq_common_desc acq_common_desc;
425 };
426
427 struct efa_admin_create_cq_cmd {
428         struct efa_admin_aq_common_desc aq_common_desc;
429
430         /*
431          * 4:0 : reserved5 - MBZ
432          * 5 : interrupt_mode_enabled - if set, cq operates
433          *    in interrupt mode (i.e. CQ events and MSI-X are
434          *    generated), otherwise - polling
435          * 6 : virt - If set, ring base address is virtual
436          *    (IOVA returned by MR registration)
437          * 7 : reserved6 - MBZ
438          */
439         u8 cq_caps_1;
440
441         /*
442          * 4:0 : cq_entry_size_words - size of CQ entry in
443          *    32-bit words, valid values: 4, 8.
444          * 7:5 : reserved7 - MBZ
445          */
446         u8 cq_caps_2;
447
448         /* completion queue depth in # of entries. must be power of 2 */
449         u16 cq_depth;
450
451         /* msix vector assigned to this cq */
452         u32 msix_vector_idx;
453
454         /*
455          * CQ ring base address, virtual or physical depending on 'virt'
456          * flag
457          */
458         struct efa_common_mem_addr cq_ba;
459
460         /*
461          * Memory registration key for the ring, used only when base
462          * address is virtual
463          */
464         u32 l_key;
465
466         /*
467          * number of sub cqs - must be equal to sub_cqs_per_cq of queue
468          *    attributes.
469          */
470         u16 num_sub_cqs;
471
472         /* UAR number */
473         u16 uar;
474 };
475
476 struct efa_admin_create_cq_resp {
477         struct efa_admin_acq_common_desc acq_common_desc;
478
479         u16 cq_idx;
480
481         /* actual cq depth in number of entries */
482         u16 cq_actual_depth;
483 };
484
485 struct efa_admin_destroy_cq_cmd {
486         struct efa_admin_aq_common_desc aq_common_desc;
487
488         u16 cq_idx;
489
490         /* MBZ */
491         u16 reserved1;
492 };
493
494 struct efa_admin_destroy_cq_resp {
495         struct efa_admin_acq_common_desc acq_common_desc;
496 };
497
498 /*
499  * EFA AQ Get Statistics command. Extended statistics are placed in control
500  * buffer pointed by AQ entry
501  */
502 struct efa_admin_aq_get_stats_cmd {
503         struct efa_admin_aq_common_desc aq_common_descriptor;
504
505         union {
506                 /* command specific inline data */
507                 u32 inline_data_w1[3];
508
509                 struct efa_admin_ctrl_buff_info control_buffer;
510         } u;
511
512         /* stats type as defined in enum efa_admin_get_stats_type */
513         u8 type;
514
515         /* stats scope defined in enum efa_admin_get_stats_scope */
516         u8 scope;
517
518         u16 scope_modifier;
519 };
520
521 struct efa_admin_basic_stats {
522         u64 tx_bytes;
523
524         u64 tx_pkts;
525
526         u64 rx_bytes;
527
528         u64 rx_pkts;
529
530         u64 rx_drops;
531 };
532
533 struct efa_admin_messages_stats {
534         u64 send_bytes;
535
536         u64 send_wrs;
537
538         u64 recv_bytes;
539
540         u64 recv_wrs;
541 };
542
543 struct efa_admin_rdma_read_stats {
544         u64 read_wrs;
545
546         u64 read_bytes;
547
548         u64 read_wr_err;
549
550         u64 read_resp_bytes;
551 };
552
553 struct efa_admin_acq_get_stats_resp {
554         struct efa_admin_acq_common_desc acq_common_desc;
555
556         union {
557                 struct efa_admin_basic_stats basic_stats;
558
559                 struct efa_admin_messages_stats messages_stats;
560
561                 struct efa_admin_rdma_read_stats rdma_read_stats;
562         } u;
563 };
564
565 struct efa_admin_get_set_feature_common_desc {
566         /*
567          * 1:0 : select - 0x1 - current value; 0x3 - default
568          *    value
569          * 7:3 : reserved3 - MBZ
570          */
571         u8 flags;
572
573         /* as appears in efa_admin_aq_feature_id */
574         u8 feature_id;
575
576         /* MBZ */
577         u16 reserved16;
578 };
579
580 struct efa_admin_feature_device_attr_desc {
581         /* Bitmap of efa_admin_aq_feature_id */
582         u64 supported_features;
583
584         /* Bitmap of supported page sizes in MR registrations */
585         u64 page_size_cap;
586
587         u32 fw_version;
588
589         u32 admin_api_version;
590
591         u32 device_version;
592
593         /* Bar used for SQ and RQ doorbells */
594         u16 db_bar;
595
596         /* Indicates how many bits are used on physical address access */
597         u8 phys_addr_width;
598
599         /* Indicates how many bits are used on virtual address access */
600         u8 virt_addr_width;
601
602         /*
603          * 0 : rdma_read - If set, RDMA Read is supported on
604          *    TX queues
605          * 1 : rnr_retry - If set, RNR retry is supported on
606          *    modify QP command
607          * 31:2 : reserved - MBZ
608          */
609         u32 device_caps;
610
611         /* Max RDMA transfer size in bytes */
612         u32 max_rdma_size;
613 };
614
615 struct efa_admin_feature_queue_attr_desc {
616         /* The maximum number of queue pairs supported */
617         u32 max_qp;
618
619         /* Maximum number of WQEs per Send Queue */
620         u32 max_sq_depth;
621
622         /* Maximum size of data that can be sent inline in a Send WQE */
623         u32 inline_buf_size;
624
625         /* Maximum number of buffer descriptors per Recv Queue */
626         u32 max_rq_depth;
627
628         /* The maximum number of completion queues supported per VF */
629         u32 max_cq;
630
631         /* Maximum number of CQEs per Completion Queue */
632         u32 max_cq_depth;
633
634         /* Number of sub-CQs to be created for each CQ */
635         u16 sub_cqs_per_cq;
636
637         /* Minimum number of WQEs per SQ */
638         u16 min_sq_depth;
639
640         /* Maximum number of SGEs (buffers) allowed for a single send WQE */
641         u16 max_wr_send_sges;
642
643         /* Maximum number of SGEs allowed for a single recv WQE */
644         u16 max_wr_recv_sges;
645
646         /* The maximum number of memory regions supported */
647         u32 max_mr;
648
649         /* The maximum number of pages can be registered */
650         u32 max_mr_pages;
651
652         /* The maximum number of protection domains supported */
653         u32 max_pd;
654
655         /* The maximum number of address handles supported */
656         u32 max_ah;
657
658         /* The maximum size of LLQ in bytes */
659         u32 max_llq_size;
660
661         /* Maximum number of SGEs for a single RDMA read WQE */
662         u16 max_wr_rdma_sges;
663
664         /*
665          * Maximum number of bytes that can be written to SQ between two
666          * consecutive doorbells (in units of 64B). Driver must ensure that only
667          * complete WQEs are written to queue before issuing a doorbell.
668          * Examples: max_tx_batch=16 and WQE size = 64B, means up to 16 WQEs can
669          * be written to SQ between two consecutive doorbells. max_tx_batch=11
670          * and WQE size = 128B, means up to 5 WQEs can be written to SQ between
671          * two consecutive doorbells. Zero means unlimited.
672          */
673         u16 max_tx_batch;
674 };
675
676 struct efa_admin_feature_aenq_desc {
677         /* bitmask for AENQ groups the device can report */
678         u32 supported_groups;
679
680         /* bitmask for AENQ groups to report */
681         u32 enabled_groups;
682 };
683
684 struct efa_admin_feature_network_attr_desc {
685         /* Raw address data in network byte order */
686         u8 addr[16];
687
688         /* max packet payload size in bytes */
689         u32 mtu;
690 };
691
692 /*
693  * When hint value is 0, hints capabilities are not supported or driver
694  * should use its own predefined value
695  */
696 struct efa_admin_hw_hints {
697         /* value in ms */
698         u16 mmio_read_timeout;
699
700         /* value in ms */
701         u16 driver_watchdog_timeout;
702
703         /* value in ms */
704         u16 admin_completion_timeout;
705
706         /* poll interval in ms */
707         u16 poll_interval;
708 };
709
710 struct efa_admin_get_feature_cmd {
711         struct efa_admin_aq_common_desc aq_common_descriptor;
712
713         struct efa_admin_ctrl_buff_info control_buffer;
714
715         struct efa_admin_get_set_feature_common_desc feature_common;
716
717         u32 raw[11];
718 };
719
720 struct efa_admin_get_feature_resp {
721         struct efa_admin_acq_common_desc acq_common_desc;
722
723         union {
724                 u32 raw[14];
725
726                 struct efa_admin_feature_device_attr_desc device_attr;
727
728                 struct efa_admin_feature_aenq_desc aenq;
729
730                 struct efa_admin_feature_network_attr_desc network_attr;
731
732                 struct efa_admin_feature_queue_attr_desc queue_attr;
733
734                 struct efa_admin_hw_hints hw_hints;
735         } u;
736 };
737
738 struct efa_admin_set_feature_cmd {
739         struct efa_admin_aq_common_desc aq_common_descriptor;
740
741         struct efa_admin_ctrl_buff_info control_buffer;
742
743         struct efa_admin_get_set_feature_common_desc feature_common;
744
745         union {
746                 u32 raw[11];
747
748                 /* AENQ configuration */
749                 struct efa_admin_feature_aenq_desc aenq;
750         } u;
751 };
752
753 struct efa_admin_set_feature_resp {
754         struct efa_admin_acq_common_desc acq_common_desc;
755
756         union {
757                 u32 raw[14];
758         } u;
759 };
760
761 struct efa_admin_alloc_pd_cmd {
762         struct efa_admin_aq_common_desc aq_common_descriptor;
763 };
764
765 struct efa_admin_alloc_pd_resp {
766         struct efa_admin_acq_common_desc acq_common_desc;
767
768         /* PD number */
769         u16 pd;
770
771         /* MBZ */
772         u16 reserved;
773 };
774
775 struct efa_admin_dealloc_pd_cmd {
776         struct efa_admin_aq_common_desc aq_common_descriptor;
777
778         /* PD number */
779         u16 pd;
780
781         /* MBZ */
782         u16 reserved;
783 };
784
785 struct efa_admin_dealloc_pd_resp {
786         struct efa_admin_acq_common_desc acq_common_desc;
787 };
788
789 struct efa_admin_alloc_uar_cmd {
790         struct efa_admin_aq_common_desc aq_common_descriptor;
791 };
792
793 struct efa_admin_alloc_uar_resp {
794         struct efa_admin_acq_common_desc acq_common_desc;
795
796         /* UAR number */
797         u16 uar;
798
799         /* MBZ */
800         u16 reserved;
801 };
802
803 struct efa_admin_dealloc_uar_cmd {
804         struct efa_admin_aq_common_desc aq_common_descriptor;
805
806         /* UAR number */
807         u16 uar;
808
809         /* MBZ */
810         u16 reserved;
811 };
812
813 struct efa_admin_dealloc_uar_resp {
814         struct efa_admin_acq_common_desc acq_common_desc;
815 };
816
817 /* asynchronous event notification groups */
818 enum efa_admin_aenq_group {
819         EFA_ADMIN_FATAL_ERROR                       = 1,
820         EFA_ADMIN_WARNING                           = 2,
821         EFA_ADMIN_NOTIFICATION                      = 3,
822         EFA_ADMIN_KEEP_ALIVE                        = 4,
823         EFA_ADMIN_AENQ_GROUPS_NUM                   = 5,
824 };
825
826 enum efa_admin_aenq_notification_syndrom {
827         EFA_ADMIN_SUSPEND                           = 0,
828         EFA_ADMIN_RESUME                            = 1,
829         EFA_ADMIN_UPDATE_HINTS                      = 2,
830 };
831
832 struct efa_admin_mmio_req_read_less_resp {
833         u16 req_id;
834
835         u16 reg_off;
836
837         /* value is valid when poll is cleared */
838         u32 reg_val;
839 };
840
841 enum efa_admin_os_type {
842         EFA_ADMIN_OS_LINUX                          = 0,
843 };
844
845 struct efa_admin_host_info {
846         /* OS distribution string format */
847         u8 os_dist_str[128];
848
849         /* Defined in enum efa_admin_os_type */
850         u32 os_type;
851
852         /* Kernel version string format */
853         u8 kernel_ver_str[32];
854
855         /* Kernel version numeric format */
856         u32 kernel_ver;
857
858         /*
859          * 7:0 : driver_module_type
860          * 15:8 : driver_sub_minor
861          * 23:16 : driver_minor
862          * 31:24 : driver_major
863          */
864         u32 driver_ver;
865
866         /*
867          * Device's Bus, Device and Function
868          * 2:0 : function
869          * 7:3 : device
870          * 15:8 : bus
871          */
872         u16 bdf;
873
874         /*
875          * Spec version
876          * 7:0 : spec_minor
877          * 15:8 : spec_major
878          */
879         u16 spec_ver;
880
881         /*
882          * 0 : intree - Intree driver
883          * 1 : gdr - GPUDirect RDMA supported
884          * 31:2 : reserved2
885          */
886         u32 flags;
887 };
888
889 /* create_qp_cmd */
890 #define EFA_ADMIN_CREATE_QP_CMD_SQ_VIRT_MASK                BIT(0)
891 #define EFA_ADMIN_CREATE_QP_CMD_RQ_VIRT_MASK                BIT(1)
892
893 /* modify_qp_cmd */
894 #define EFA_ADMIN_MODIFY_QP_CMD_QP_STATE_MASK               BIT(0)
895 #define EFA_ADMIN_MODIFY_QP_CMD_CUR_QP_STATE_MASK           BIT(1)
896 #define EFA_ADMIN_MODIFY_QP_CMD_QKEY_MASK                   BIT(2)
897 #define EFA_ADMIN_MODIFY_QP_CMD_SQ_PSN_MASK                 BIT(3)
898 #define EFA_ADMIN_MODIFY_QP_CMD_SQ_DRAINED_ASYNC_NOTIFY_MASK BIT(4)
899 #define EFA_ADMIN_MODIFY_QP_CMD_RNR_RETRY_MASK              BIT(5)
900
901 /* reg_mr_cmd */
902 #define EFA_ADMIN_REG_MR_CMD_PHYS_PAGE_SIZE_SHIFT_MASK      GENMASK(4, 0)
903 #define EFA_ADMIN_REG_MR_CMD_MEM_ADDR_PHY_MODE_EN_MASK      BIT(7)
904 #define EFA_ADMIN_REG_MR_CMD_LOCAL_WRITE_ENABLE_MASK        BIT(0)
905 #define EFA_ADMIN_REG_MR_CMD_REMOTE_READ_ENABLE_MASK        BIT(2)
906
907 /* create_cq_cmd */
908 #define EFA_ADMIN_CREATE_CQ_CMD_INTERRUPT_MODE_ENABLED_MASK BIT(5)
909 #define EFA_ADMIN_CREATE_CQ_CMD_VIRT_MASK                   BIT(6)
910 #define EFA_ADMIN_CREATE_CQ_CMD_CQ_ENTRY_SIZE_WORDS_MASK    GENMASK(4, 0)
911
912 /* get_set_feature_common_desc */
913 #define EFA_ADMIN_GET_SET_FEATURE_COMMON_DESC_SELECT_MASK   GENMASK(1, 0)
914
915 /* feature_device_attr_desc */
916 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_RDMA_READ_MASK   BIT(0)
917 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_RNR_RETRY_MASK   BIT(1)
918
919 /* host_info */
920 #define EFA_ADMIN_HOST_INFO_DRIVER_MODULE_TYPE_MASK         GENMASK(7, 0)
921 #define EFA_ADMIN_HOST_INFO_DRIVER_SUB_MINOR_MASK           GENMASK(15, 8)
922 #define EFA_ADMIN_HOST_INFO_DRIVER_MINOR_MASK               GENMASK(23, 16)
923 #define EFA_ADMIN_HOST_INFO_DRIVER_MAJOR_MASK               GENMASK(31, 24)
924 #define EFA_ADMIN_HOST_INFO_FUNCTION_MASK                   GENMASK(2, 0)
925 #define EFA_ADMIN_HOST_INFO_DEVICE_MASK                     GENMASK(7, 3)
926 #define EFA_ADMIN_HOST_INFO_BUS_MASK                        GENMASK(15, 8)
927 #define EFA_ADMIN_HOST_INFO_SPEC_MINOR_MASK                 GENMASK(7, 0)
928 #define EFA_ADMIN_HOST_INFO_SPEC_MAJOR_MASK                 GENMASK(15, 8)
929 #define EFA_ADMIN_HOST_INFO_INTREE_MASK                     BIT(0)
930 #define EFA_ADMIN_HOST_INFO_GDR_MASK                        BIT(1)
931
932 #endif /* _EFA_ADMIN_CMDS_H_ */
This page took 0.085318 seconds and 4 git commands to generate.