1MLX5DV_QUERY_DEVICE(3)     Library Functions Manual     MLX5DV_QUERY_DEVICE(3)
2
3
4

NAME

6       mlx5dv_query_device - Query device capabilities specific to mlx5
7

SYNOPSIS

9       #include <infiniband/mlx5dv.h>
10
11       int mlx5dv_query_device(struct ibv_context *ctx_in,
12                               struct mlx5dv_context *attrs_out);
13

DESCRIPTION

15       mlx5dv_query_device()  Query  HW  device-specific  information which is
16       important for data-path, but isn't provided by ibv_query_device(3).
17
18       This function returns version, flags and compatibility mask.  The  ver‐
19       sion  represents  the  format  of the internal hardware structures that
20       mlx5dv.h represents. Additions of new fields to the existed  structures
21       are handled by comp_mask field.
22
23       struct mlx5dv_sw_parsing_caps {
24               uint32_t sw_parsing_offloads; /* Use enum mlx5dv_sw_parsing_offloads */
25               uint32_t supported_qpts;
26       };
27
28       struct mlx5dv_striding_rq_caps {
29               uint32_t min_single_stride_log_num_of_bytes; /* min log size of each stride */
30               uint32_t max_single_stride_log_num_of_bytes; /* max log size of each stride */
31               uint32_t min_single_wqe_log_num_of_strides; /* min log number of strides per WQE */
32               uint32_t max_single_wqe_log_num_of_strides; /* max log number of strides per WQE */
33               uint32_t supported_qpts;
34       };
35
36       struct mlx5dv_context {
37               uint8_t         version;
38               uint64_t        flags;
39               uint64_t        comp_mask; /* Use enum mlx5dv_context_comp_mask */
40               struct mlx5dv_cqe_comp_caps     cqe_comp_caps;
41               struct mlx5dv_sw_parsing_caps sw_parsing_caps;
42               uint32_t  tunnel_offloads_caps;
43               uint32_t        max_dynamic_bfregs /* max blue-flame registers that can be dynamiclly allocated */
44       };
45
46       enum mlx5dv_context_flags {
47               /*
48                * This flag indicates if CQE version 0 or 1 is needed.
49                */
50                MLX5DV_CONTEXT_FLAGS_CQE_V1 = (1 << 0),
51                MLX5DV_CONTEXT_FLAGS_OBSOLETE    =  (1 << 1), /* Obsoleted, don't use */
52                MLX5DV_CONTEXT_FLAGS_MPW_ALLOWED  = (1 << 2), /* Multi packet WQE is allowed */
53                MLX5DV_CONTEXT_FLAGS_ENHANCED_MPW = (1 << 3), /* Enhanced multi packet WQE is supported or not */
54                MLX5DV_CONTEXT_FLAGS_CQE_128B_COMP = (1 << 4), /* Support CQE 128B compression */
55                MLX5DV_CONTEXT_FLAGS_CQE_128B_PAD = (1 << 5), /* Support CQE 128B padding */
56       };
57
58
59       enum mlx5dv_context_comp_mask {
60               MLX5DV_CONTEXT_MASK_CQE_COMPRESION      = 1 << 0,
61               MLX5DV_CONTEXT_MASK_SWP                 = 1 << 1,
62               MLX5DV_CONTEXT_MASK_STRIDING_RQ         = 1 << 2,
63               MLX5DV_CONTEXT_MASK_TUNNEL_OFFLOADS     = 1 << 3,
64               MLX5DV_CONTEXT_MASK_DYN_BFREGS          = 1 << 4,
65               MLX5DV_CONTEXT_MASK_CLOCK_INFO_UPDATE   = 1 << 5,
66       };
67
68
69       enum enum mlx5dv_sw_parsing_offloads {
70               MLX5DV_SW_PARSING         = 1 << 0,
71               MLX5DV_SW_PARSING_CSUM    = 1 << 1,
72               MLX5DV_SW_PARSING_LSO     = 1 << 2,
73       };
74
75
76       enum mlx5dv_tunnel_offloads {
77               MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_VXLAN  = 1 << 0,
78               MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GRE    = 1 << 1,
79               MLX5DV_RAW_PACKET_CAP_TUNNELED_OFFLOAD_GENEVE = 1 << 2,
80       };
81
82
83       enum mlx5dv_flow_action_cap_flags {
84               MLX5DV_FLOW_ACTION_FLAGS_ESP_AES_GCM                = 1 << 0, /* Flow action ESP (with AES_GCM keymat) is supported */
85               MLX5DV_FLOW_ACTION_FLAGS_ESP_AES_GCM_REQ_METADATA   = 1 << 1, /* Flow action ESP always return metadata in the payload */
86               MLX5DV_FLOW_ACTION_FLAGS_ESP_AES_GCM_SPI_STEERING   = 1 << 2, /* ESP (with AESGCM keymat) Supports matching by SPI (rather than hashing against SPI) */
87               MLX5DV_FLOW_ACTION_FLAGS_ESP_AES_GCM_FULL_OFFLOAD   = 1 << 3, /* Flow action ESP supports full offload (with AES_GCM keymat) */
88               MLX5DV_FLOW_ACTION_FLAGS_ESP_AES_GCM_TX_IV_IS_ESN   = 1 << 4, /* Flow action ESP (with AES_GCM keymat), ESN comes implicitly from IV. */
89       };
90
91

RETURN VALUE

93       0  on  success  or  the  value of errno on failure (which indicates the
94       failure reason).
95

NOTES

97        * Compatibility mask (comp_mask) is in/out field.
98

SEE ALSO

100       mlx5dv(7), ibv_query_device(3)
101

AUTHORS

103       Leon Romanovsky <leonro@mellanox.com>
104
105
106
1071.0.0                             2017-02-02            MLX5DV_QUERY_DEVICE(3)
Impressum