1 /* SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause */
3 * Copyright 2018-2024 Amazon.com, Inc. or its affiliates. All rights reserved.
6 #ifndef _EFA_ADMIN_CMDS_H_
7 #define _EFA_ADMIN_CMDS_H_
9 #define EFA_ADMIN_API_VERSION_MAJOR 0
10 #define EFA_ADMIN_API_VERSION_MINOR 1
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,
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_CREATE_EQ = 18,
32 EFA_ADMIN_DESTROY_EQ = 19,
33 EFA_ADMIN_MAX_OPCODE = 19,
36 enum efa_admin_aq_feature_id {
37 EFA_ADMIN_DEVICE_ATTR = 1,
38 EFA_ADMIN_AENQ_CONFIG = 2,
39 EFA_ADMIN_NETWORK_ATTR = 3,
40 EFA_ADMIN_QUEUE_ATTR = 4,
41 EFA_ADMIN_HW_HINTS = 5,
42 EFA_ADMIN_HOST_INFO = 6,
43 EFA_ADMIN_EVENT_QUEUE_ATTR = 7,
46 /* QP transport type */
47 enum efa_admin_qp_type {
48 /* Unreliable Datagram */
49 EFA_ADMIN_QP_TYPE_UD = 1,
50 /* Scalable Reliable Datagram */
51 EFA_ADMIN_QP_TYPE_SRD = 2,
55 enum efa_admin_qp_state {
56 EFA_ADMIN_QP_STATE_RESET = 0,
57 EFA_ADMIN_QP_STATE_INIT = 1,
58 EFA_ADMIN_QP_STATE_RTR = 2,
59 EFA_ADMIN_QP_STATE_RTS = 3,
60 EFA_ADMIN_QP_STATE_SQD = 4,
61 EFA_ADMIN_QP_STATE_SQE = 5,
62 EFA_ADMIN_QP_STATE_ERR = 6,
65 enum efa_admin_get_stats_type {
66 EFA_ADMIN_GET_STATS_TYPE_BASIC = 0,
67 EFA_ADMIN_GET_STATS_TYPE_MESSAGES = 1,
68 EFA_ADMIN_GET_STATS_TYPE_RDMA_READ = 2,
69 EFA_ADMIN_GET_STATS_TYPE_RDMA_WRITE = 3,
72 enum efa_admin_get_stats_scope {
73 EFA_ADMIN_GET_STATS_SCOPE_ALL = 0,
74 EFA_ADMIN_GET_STATS_SCOPE_QUEUE = 1,
78 * QP allocation sizes, converted by fabric QueuePair (QP) create command
79 * from QP capabilities.
81 struct efa_admin_qp_alloc_size {
82 /* Send descriptor ring size in bytes */
83 u32 send_queue_ring_size;
85 /* Max number of WQEs that can be outstanding on send queue. */
89 * Recv descriptor ring size in bytes, sufficient for user-provided
92 u32 recv_queue_ring_size;
94 /* Max number of WQEs that can be outstanding on recv queue */
98 struct efa_admin_create_qp_cmd {
99 /* Common Admin Queue descriptor */
100 struct efa_admin_aq_common_desc aq_common_desc;
102 /* Protection Domain associated with this QP */
109 * 0 : sq_virt - If set, SQ ring base address is
110 * virtual (IOVA returned by MR registration)
111 * 1 : rq_virt - If set, RQ ring base address is
112 * virtual (IOVA returned by MR registration)
113 * 2 : unsolicited_write_recv - If set, work requests
114 * will not be consumed for incoming RDMA write with
116 * 7:3 : reserved - MBZ
121 * Send queue (SQ) ring base physical address. This field is not
122 * used if this is a Low Latency Queue(LLQ).
126 /* Receive queue (RQ) ring base address. */
129 /* Index of CQ to be associated with Send Queue completions */
132 /* Index of CQ to be associated with Recv Queue completions */
136 * Memory registration key for the SQ ring, used only when not in
137 * LLQ mode and base address is virtual
142 * Memory registration key for the RQ ring, used only when base
147 /* Requested QP allocation sizes */
148 struct efa_admin_qp_alloc_size qp_alloc_size;
160 struct efa_admin_create_qp_resp {
161 /* Common Admin Queue completion descriptor */
162 struct efa_admin_acq_common_desc acq_common_desc;
165 * Opaque handle to be used for consequent admin operations on the
171 * QP number in the given EFA virtual device. Least-significant bits (as
172 * needed according to max_qp) carry unique QP ID
179 /* Index of sub-CQ for Send Queue completions */
182 /* Index of sub-CQ for Receive Queue completions */
185 /* SQ doorbell address, as offset to PCIe DB BAR */
188 /* RQ doorbell address, as offset to PCIe DB BAR */
192 * low latency send queue ring base address as an offset to PCIe
195 u32 llq_descriptors_offset;
198 struct efa_admin_modify_qp_cmd {
199 /* Common Admin Queue descriptor */
200 struct efa_admin_aq_common_desc aq_common_desc;
203 * Mask indicating which fields should be updated
208 * 4 : sq_drained_async_notify
214 /* QP handle returned by create_qp command */
220 /* Override current QP state (before applying the transition) */
229 /* Enable async notification when SQ is drained */
230 u8 sq_drained_async_notify;
232 /* Number of RNR retries (valid only for SRD QPs) */
239 struct efa_admin_modify_qp_resp {
240 /* Common Admin Queue completion descriptor */
241 struct efa_admin_acq_common_desc acq_common_desc;
244 struct efa_admin_query_qp_cmd {
245 /* Common Admin Queue descriptor */
246 struct efa_admin_aq_common_desc aq_common_desc;
248 /* QP handle returned by create_qp command */
252 struct efa_admin_query_qp_resp {
253 /* Common Admin Queue completion descriptor */
254 struct efa_admin_acq_common_desc acq_common_desc;
265 /* Indicates that draining is in progress */
268 /* Number of RNR retries (valid only for SRD QPs) */
275 struct efa_admin_destroy_qp_cmd {
276 /* Common Admin Queue descriptor */
277 struct efa_admin_aq_common_desc aq_common_desc;
279 /* QP handle returned by create_qp command */
283 struct efa_admin_destroy_qp_resp {
284 /* Common Admin Queue completion descriptor */
285 struct efa_admin_acq_common_desc acq_common_desc;
289 * Create Address Handle command parameters. Must not be called more than
290 * once for the same destination
292 struct efa_admin_create_ah_cmd {
293 /* Common Admin Queue descriptor */
294 struct efa_admin_aq_common_desc aq_common_desc;
296 /* Destination address in network byte order */
306 struct efa_admin_create_ah_resp {
307 /* Common Admin Queue completion descriptor */
308 struct efa_admin_acq_common_desc acq_common_desc;
310 /* Target interface address handle (opaque) */
317 struct efa_admin_destroy_ah_cmd {
318 /* Common Admin Queue descriptor */
319 struct efa_admin_aq_common_desc aq_common_desc;
321 /* Target interface address handle (opaque) */
328 struct efa_admin_destroy_ah_resp {
329 /* Common Admin Queue completion descriptor */
330 struct efa_admin_acq_common_desc acq_common_desc;
334 * Registration of MemoryRegion, required for QP working with Virtual
335 * Addresses. In standard verbs semantics, region length is limited to 2GB
336 * space, but EFA offers larger MR support for large memory space, to ease
337 * on users working with very large datasets (i.e. full GPU memory mapping).
339 struct efa_admin_reg_mr_cmd {
340 /* Common Admin Queue descriptor */
341 struct efa_admin_aq_common_desc aq_common_desc;
343 /* Protection Domain */
349 /* Physical Buffer List, each element is page-aligned. */
352 * Inline array of guest-physical page addresses of user
353 * memory pages (optimization for short region
356 u64 inline_pbl_array[4];
358 /* points to PBL (direct or indirect, chained if needed) */
359 struct efa_admin_ctrl_buff_info pbl;
362 /* Memory region length, in bytes. */
366 * flags and page size
367 * 4:0 : phys_page_size_shift - page size is (1 <<
368 * phys_page_size_shift). Page size is used for
369 * building the Virtual to Physical address mapping
370 * 6:5 : reserved - MBZ
371 * 7 : mem_addr_phy_mode_en - Enable bit for physical
372 * memory registration (no translation), can be used
373 * only by privileged clients. If set, PBL must
374 * contain a single entry.
380 * 0 : local_write_enable - Local write permissions:
381 * must be set for RQ buffers and buffers posted for
383 * 1 : remote_write_enable - Remote write
384 * permissions: must be set to enable RDMA write to
386 * 2 : remote_read_enable - Remote read permissions:
387 * must be set to enable RDMA read from the region
388 * 7:3 : reserved2 - MBZ
395 /* number of pages in PBL (redundant, could be calculated) */
399 * IO Virtual Address associated with this MR. If
400 * mem_addr_phy_mode_en is set, contains the physical address of
406 struct efa_admin_reg_mr_resp {
407 /* Common Admin Queue completion descriptor */
408 struct efa_admin_acq_common_desc acq_common_desc;
411 * L_Key, to be used in conjunction with local buffer references in
412 * SQ and RQ WQE, or with virtual RQ/CQ rings
417 * R_Key, to be used in RDMA messages to refer to remotely accessed
423 * Mask indicating which fields have valid values
425 * 1 : rdma_read_ic_id
426 * 2 : rdma_recv_ic_id
431 * Physical interconnect used by the device to reach the MR for receive
437 * Physical interconnect used by the device to reach the MR for RDMA
443 * Physical interconnect used by the device to reach the MR for RDMA
449 struct efa_admin_dereg_mr_cmd {
450 /* Common Admin Queue descriptor */
451 struct efa_admin_aq_common_desc aq_common_desc;
453 /* L_Key, memory region's l_key */
457 struct efa_admin_dereg_mr_resp {
458 /* Common Admin Queue completion descriptor */
459 struct efa_admin_acq_common_desc acq_common_desc;
462 struct efa_admin_create_cq_cmd {
463 struct efa_admin_aq_common_desc aq_common_desc;
466 * 4:0 : reserved5 - MBZ
467 * 5 : interrupt_mode_enabled - if set, cq operates
468 * in interrupt mode (i.e. CQ events and EQ elements
469 * are generated), otherwise - polling
470 * 6 : virt - If set, ring base address is virtual
471 * (IOVA returned by MR registration)
472 * 7 : reserved6 - MBZ
477 * 4:0 : cq_entry_size_words - size of CQ entry in
478 * 32-bit words, valid values: 4, 8.
479 * 5 : set_src_addr - If set, source address will be
480 * filled on RX completions from unknown senders.
481 * Requires 8 words CQ entry size.
482 * 7:6 : reserved7 - MBZ
486 /* completion queue depth in # of entries. must be power of 2 */
489 /* EQ number assigned to this cq */
496 * CQ ring base address, virtual or physical depending on 'virt'
499 struct efa_common_mem_addr cq_ba;
502 * Memory registration key for the ring, used only when base
508 * number of sub cqs - must be equal to sub_cqs_per_cq of queue
517 struct efa_admin_create_cq_resp {
518 struct efa_admin_acq_common_desc acq_common_desc;
522 /* actual cq depth in number of entries */
525 /* CQ doorbell address, as offset to PCIe DB BAR */
529 * 0 : db_valid - If set, doorbell offset is valid.
530 * Always set when interrupts are requested.
535 struct efa_admin_destroy_cq_cmd {
536 struct efa_admin_aq_common_desc aq_common_desc;
544 struct efa_admin_destroy_cq_resp {
545 struct efa_admin_acq_common_desc acq_common_desc;
549 * EFA AQ Get Statistics command. Extended statistics are placed in control
550 * buffer pointed by AQ entry
552 struct efa_admin_aq_get_stats_cmd {
553 struct efa_admin_aq_common_desc aq_common_descriptor;
556 /* command specific inline data */
557 u32 inline_data_w1[3];
559 struct efa_admin_ctrl_buff_info control_buffer;
562 /* stats type as defined in enum efa_admin_get_stats_type */
565 /* stats scope defined in enum efa_admin_get_stats_scope */
571 struct efa_admin_basic_stats {
583 struct efa_admin_messages_stats {
593 struct efa_admin_rdma_read_stats {
603 struct efa_admin_rdma_write_stats {
610 u64 write_recv_bytes;
613 struct efa_admin_acq_get_stats_resp {
614 struct efa_admin_acq_common_desc acq_common_desc;
617 struct efa_admin_basic_stats basic_stats;
619 struct efa_admin_messages_stats messages_stats;
621 struct efa_admin_rdma_read_stats rdma_read_stats;
623 struct efa_admin_rdma_write_stats rdma_write_stats;
627 struct efa_admin_get_set_feature_common_desc {
631 /* as appears in efa_admin_aq_feature_id */
638 struct efa_admin_feature_device_attr_desc {
639 /* Bitmap of efa_admin_aq_feature_id */
640 u64 supported_features;
642 /* Bitmap of supported page sizes in MR registrations */
647 u32 admin_api_version;
651 /* Bar used for SQ and RQ doorbells */
654 /* Indicates how many bits are used on physical address access */
657 /* Indicates how many bits are used on virtual address access */
661 * 0 : rdma_read - If set, RDMA Read is supported on
663 * 1 : rnr_retry - If set, RNR retry is supported on
665 * 2 : data_polling_128 - If set, 128 bytes data
666 * polling is supported
667 * 3 : rdma_write - If set, RDMA Write is supported
669 * 4 : unsolicited_write_recv - If set, unsolicited
670 * write with imm. receive is supported
671 * 31:5 : reserved - MBZ
675 /* Max RDMA transfer size in bytes */
679 struct efa_admin_feature_queue_attr_desc {
680 /* The maximum number of queue pairs supported */
683 /* Maximum number of WQEs per Send Queue */
686 /* Maximum size of data that can be sent inline in a Send WQE */
689 /* Maximum number of buffer descriptors per Recv Queue */
692 /* The maximum number of completion queues supported per VF */
695 /* Maximum number of CQEs per Completion Queue */
698 /* Number of sub-CQs to be created for each CQ */
701 /* Minimum number of WQEs per SQ */
704 /* Maximum number of SGEs (buffers) allowed for a single send WQE */
705 u16 max_wr_send_sges;
707 /* Maximum number of SGEs allowed for a single recv WQE */
708 u16 max_wr_recv_sges;
710 /* The maximum number of memory regions supported */
713 /* The maximum number of pages can be registered */
716 /* The maximum number of protection domains supported */
719 /* The maximum number of address handles supported */
722 /* The maximum size of LLQ in bytes */
725 /* Maximum number of SGEs for a single RDMA read/write WQE */
726 u16 max_wr_rdma_sges;
729 * Maximum number of bytes that can be written to SQ between two
730 * consecutive doorbells (in units of 64B). Driver must ensure that only
731 * complete WQEs are written to queue before issuing a doorbell.
732 * Examples: max_tx_batch=16 and WQE size = 64B, means up to 16 WQEs can
733 * be written to SQ between two consecutive doorbells. max_tx_batch=11
734 * and WQE size = 128B, means up to 5 WQEs can be written to SQ between
735 * two consecutive doorbells. Zero means unlimited.
740 struct efa_admin_event_queue_attr_desc {
741 /* The maximum number of event queues supported */
744 /* Maximum number of EQEs per Event Queue */
747 /* Supported events bitmask */
751 struct efa_admin_feature_aenq_desc {
752 /* bitmask for AENQ groups the device can report */
753 u32 supported_groups;
755 /* bitmask for AENQ groups to report */
759 struct efa_admin_feature_network_attr_desc {
760 /* Raw address data in network byte order */
763 /* max packet payload size in bytes */
768 * When hint value is 0, hints capabilities are not supported or driver
769 * should use its own predefined value
771 struct efa_admin_hw_hints {
773 u16 mmio_read_timeout;
776 u16 driver_watchdog_timeout;
779 u16 admin_completion_timeout;
781 /* poll interval in ms */
785 struct efa_admin_get_feature_cmd {
786 struct efa_admin_aq_common_desc aq_common_descriptor;
788 struct efa_admin_ctrl_buff_info control_buffer;
790 struct efa_admin_get_set_feature_common_desc feature_common;
795 struct efa_admin_get_feature_resp {
796 struct efa_admin_acq_common_desc acq_common_desc;
801 struct efa_admin_feature_device_attr_desc device_attr;
803 struct efa_admin_feature_aenq_desc aenq;
805 struct efa_admin_feature_network_attr_desc network_attr;
807 struct efa_admin_feature_queue_attr_desc queue_attr;
809 struct efa_admin_event_queue_attr_desc event_queue_attr;
811 struct efa_admin_hw_hints hw_hints;
815 struct efa_admin_set_feature_cmd {
816 struct efa_admin_aq_common_desc aq_common_descriptor;
818 struct efa_admin_ctrl_buff_info control_buffer;
820 struct efa_admin_get_set_feature_common_desc feature_common;
825 /* AENQ configuration */
826 struct efa_admin_feature_aenq_desc aenq;
830 struct efa_admin_set_feature_resp {
831 struct efa_admin_acq_common_desc acq_common_desc;
838 struct efa_admin_alloc_pd_cmd {
839 struct efa_admin_aq_common_desc aq_common_descriptor;
842 struct efa_admin_alloc_pd_resp {
843 struct efa_admin_acq_common_desc acq_common_desc;
852 struct efa_admin_dealloc_pd_cmd {
853 struct efa_admin_aq_common_desc aq_common_descriptor;
862 struct efa_admin_dealloc_pd_resp {
863 struct efa_admin_acq_common_desc acq_common_desc;
866 struct efa_admin_alloc_uar_cmd {
867 struct efa_admin_aq_common_desc aq_common_descriptor;
870 struct efa_admin_alloc_uar_resp {
871 struct efa_admin_acq_common_desc acq_common_desc;
880 struct efa_admin_dealloc_uar_cmd {
881 struct efa_admin_aq_common_desc aq_common_descriptor;
890 struct efa_admin_dealloc_uar_resp {
891 struct efa_admin_acq_common_desc acq_common_desc;
894 struct efa_admin_create_eq_cmd {
895 struct efa_admin_aq_common_desc aq_common_descriptor;
897 /* Size of the EQ in entries, must be power of 2 */
900 /* MSI-X table entry index */
904 * 4:0 : entry_size_words - size of EQ entry in
906 * 7:5 : reserved - MBZ
910 /* EQ ring base address */
911 struct efa_common_mem_addr ba;
914 * Enabled events on this EQ
915 * 0 : completion_events - Enable completion events
916 * 31:1 : reserved - MBZ
924 struct efa_admin_create_eq_resp {
925 struct efa_admin_acq_common_desc acq_common_desc;
934 struct efa_admin_destroy_eq_cmd {
935 struct efa_admin_aq_common_desc aq_common_descriptor;
944 struct efa_admin_destroy_eq_resp {
945 struct efa_admin_acq_common_desc acq_common_desc;
948 /* asynchronous event notification groups */
949 enum efa_admin_aenq_group {
950 EFA_ADMIN_FATAL_ERROR = 1,
951 EFA_ADMIN_WARNING = 2,
952 EFA_ADMIN_NOTIFICATION = 3,
953 EFA_ADMIN_KEEP_ALIVE = 4,
954 EFA_ADMIN_AENQ_GROUPS_NUM = 5,
957 struct efa_admin_mmio_req_read_less_resp {
962 /* value is valid when poll is cleared */
966 enum efa_admin_os_type {
967 EFA_ADMIN_OS_LINUX = 0,
970 struct efa_admin_host_info {
971 /* OS distribution string format */
974 /* Defined in enum efa_admin_os_type */
977 /* Kernel version string format */
978 u8 kernel_ver_str[32];
980 /* Kernel version numeric format */
984 * 7:0 : driver_module_type
985 * 15:8 : driver_sub_minor
986 * 23:16 : driver_minor
987 * 31:24 : driver_major
992 * Device's Bus, Device and Function
1007 * 0 : intree - Intree driver
1008 * 1 : gdr - GPUDirect RDMA supported
1015 #define EFA_ADMIN_CREATE_QP_CMD_SQ_VIRT_MASK BIT(0)
1016 #define EFA_ADMIN_CREATE_QP_CMD_RQ_VIRT_MASK BIT(1)
1017 #define EFA_ADMIN_CREATE_QP_CMD_UNSOLICITED_WRITE_RECV_MASK BIT(2)
1020 #define EFA_ADMIN_MODIFY_QP_CMD_QP_STATE_MASK BIT(0)
1021 #define EFA_ADMIN_MODIFY_QP_CMD_CUR_QP_STATE_MASK BIT(1)
1022 #define EFA_ADMIN_MODIFY_QP_CMD_QKEY_MASK BIT(2)
1023 #define EFA_ADMIN_MODIFY_QP_CMD_SQ_PSN_MASK BIT(3)
1024 #define EFA_ADMIN_MODIFY_QP_CMD_SQ_DRAINED_ASYNC_NOTIFY_MASK BIT(4)
1025 #define EFA_ADMIN_MODIFY_QP_CMD_RNR_RETRY_MASK BIT(5)
1028 #define EFA_ADMIN_REG_MR_CMD_PHYS_PAGE_SIZE_SHIFT_MASK GENMASK(4, 0)
1029 #define EFA_ADMIN_REG_MR_CMD_MEM_ADDR_PHY_MODE_EN_MASK BIT(7)
1030 #define EFA_ADMIN_REG_MR_CMD_LOCAL_WRITE_ENABLE_MASK BIT(0)
1031 #define EFA_ADMIN_REG_MR_CMD_REMOTE_WRITE_ENABLE_MASK BIT(1)
1032 #define EFA_ADMIN_REG_MR_CMD_REMOTE_READ_ENABLE_MASK BIT(2)
1035 #define EFA_ADMIN_REG_MR_RESP_RECV_IC_ID_MASK BIT(0)
1036 #define EFA_ADMIN_REG_MR_RESP_RDMA_READ_IC_ID_MASK BIT(1)
1037 #define EFA_ADMIN_REG_MR_RESP_RDMA_RECV_IC_ID_MASK BIT(2)
1040 #define EFA_ADMIN_CREATE_CQ_CMD_INTERRUPT_MODE_ENABLED_MASK BIT(5)
1041 #define EFA_ADMIN_CREATE_CQ_CMD_VIRT_MASK BIT(6)
1042 #define EFA_ADMIN_CREATE_CQ_CMD_CQ_ENTRY_SIZE_WORDS_MASK GENMASK(4, 0)
1043 #define EFA_ADMIN_CREATE_CQ_CMD_SET_SRC_ADDR_MASK BIT(5)
1045 /* create_cq_resp */
1046 #define EFA_ADMIN_CREATE_CQ_RESP_DB_VALID_MASK BIT(0)
1048 /* feature_device_attr_desc */
1049 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_RDMA_READ_MASK BIT(0)
1050 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_RNR_RETRY_MASK BIT(1)
1051 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_DATA_POLLING_128_MASK BIT(2)
1052 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_RDMA_WRITE_MASK BIT(3)
1053 #define EFA_ADMIN_FEATURE_DEVICE_ATTR_DESC_UNSOLICITED_WRITE_RECV_MASK BIT(4)
1056 #define EFA_ADMIN_CREATE_EQ_CMD_ENTRY_SIZE_WORDS_MASK GENMASK(4, 0)
1057 #define EFA_ADMIN_CREATE_EQ_CMD_VIRT_MASK BIT(6)
1058 #define EFA_ADMIN_CREATE_EQ_CMD_COMPLETION_EVENTS_MASK BIT(0)
1061 #define EFA_ADMIN_HOST_INFO_DRIVER_MODULE_TYPE_MASK GENMASK(7, 0)
1062 #define EFA_ADMIN_HOST_INFO_DRIVER_SUB_MINOR_MASK GENMASK(15, 8)
1063 #define EFA_ADMIN_HOST_INFO_DRIVER_MINOR_MASK GENMASK(23, 16)
1064 #define EFA_ADMIN_HOST_INFO_DRIVER_MAJOR_MASK GENMASK(31, 24)
1065 #define EFA_ADMIN_HOST_INFO_FUNCTION_MASK GENMASK(2, 0)
1066 #define EFA_ADMIN_HOST_INFO_DEVICE_MASK GENMASK(7, 3)
1067 #define EFA_ADMIN_HOST_INFO_BUS_MASK GENMASK(15, 8)
1068 #define EFA_ADMIN_HOST_INFO_SPEC_MINOR_MASK GENMASK(7, 0)
1069 #define EFA_ADMIN_HOST_INFO_SPEC_MAJOR_MASK GENMASK(15, 8)
1070 #define EFA_ADMIN_HOST_INFO_INTREE_MASK BIT(0)
1071 #define EFA_ADMIN_HOST_INFO_GDR_MASK BIT(1)
1073 #endif /* _EFA_ADMIN_CMDS_H_ */