X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=drivers%2Fcommon%2Fmlx5%2Fmlx5_devx_cmds.h;h=6912dc61d51e509ee29071b47629eadd520c4a1a;hb=55f003d8884c3a05937ef7ef113f698870d71a83;hp=581658b73ae754c26412f9e4edf5f4cd9240daa0;hpb=446c3781c46865de8fc18f738cd44b2ab9f13948;p=dpdk.git diff --git a/drivers/common/mlx5/mlx5_devx_cmds.h b/drivers/common/mlx5/mlx5_devx_cmds.h index 581658b73a..6912dc61d5 100644 --- a/drivers/common/mlx5/mlx5_devx_cmds.h +++ b/drivers/common/mlx5/mlx5_devx_cmds.h @@ -64,12 +64,10 @@ struct mlx5_hca_vdpa_attr { uint32_t log_doorbell_stride:5; uint32_t log_doorbell_bar_size:5; uint32_t max_num_virtio_queues; - uint32_t umem_1_buffer_param_a; - uint32_t umem_1_buffer_param_b; - uint32_t umem_2_buffer_param_a; - uint32_t umem_2_buffer_param_b; - uint32_t umem_3_buffer_param_a; - uint32_t umem_3_buffer_param_b; + struct { + uint32_t a; + uint32_t b; + } umems[3]; uint64_t doorbell_bar_offset; }; @@ -80,6 +78,7 @@ struct mlx5_hca_vdpa_attr { struct mlx5_hca_attr { uint32_t eswitch_manager:1; uint32_t flow_counters_dump:1; + uint32_t log_max_rqt_size:5; uint8_t flow_counter_bulk_alloc_bitmap; uint32_t eth_net_offloads:1; uint32_t eth_virt:1; @@ -190,6 +189,7 @@ struct mlx5_devx_tir_attr { /* RQT attributes structure, used by RQT operations. */ struct mlx5_devx_rqt_attr { + uint8_t rq_type; uint32_t rqt_max_size:16; uint32_t rqt_actual_size:16; uint32_t rq_list[]; @@ -250,6 +250,53 @@ struct mlx5_devx_cq_attr { uint64_t db_addr; }; +/* Virtq attributes structure, used by VIRTQ operations. */ +struct mlx5_devx_virtq_attr { + uint16_t hw_available_index; + uint16_t hw_used_index; + uint16_t q_size; + uint32_t virtio_version_1_0:1; + uint32_t tso_ipv4:1; + uint32_t tso_ipv6:1; + uint32_t tx_csum:1; + uint32_t rx_csum:1; + uint32_t event_mode:3; + uint32_t state:4; + uint32_t dirty_bitmap_dump_enable:1; + uint32_t dirty_bitmap_mkey; + uint32_t dirty_bitmap_size; + uint32_t mkey; + uint32_t qp_id; + uint32_t queue_index; + uint32_t tis_id; + uint64_t dirty_bitmap_addr; + uint64_t type; + uint64_t desc_addr; + uint64_t used_addr; + uint64_t available_addr; + struct { + uint32_t id; + uint32_t size; + uint64_t offset; + } umems[3]; +}; + + +struct mlx5_devx_qp_attr { + uint32_t pd:24; + uint32_t uar_index:24; + uint32_t cqn:24; + uint32_t log_page_size:5; + uint32_t rq_size:17; /* Must be power of 2. */ + uint32_t log_rq_stride:3; + uint32_t sq_size:17; /* Must be power of 2. */ + uint32_t dbr_umem_valid:1; + uint32_t dbr_umem_id; + uint64_t dbr_address; + uint32_t wq_umem_id; + uint64_t wq_umem_offset; +}; + /* mlx5_devx_cmds.c */ struct mlx5_devx_obj *mlx5_devx_cmd_flow_counter_alloc(struct ibv_context *ctx, @@ -288,4 +335,17 @@ int mlx5_devx_cmd_flow_dump(void *fdb_domain, void *rx_domain, void *tx_domain, FILE *file); struct mlx5_devx_obj *mlx5_devx_cmd_create_cq(struct ibv_context *ctx, struct mlx5_devx_cq_attr *attr); +struct mlx5_devx_obj *mlx5_devx_cmd_create_virtq(struct ibv_context *ctx, + struct mlx5_devx_virtq_attr *attr); +int mlx5_devx_cmd_modify_virtq(struct mlx5_devx_obj *virtq_obj, + struct mlx5_devx_virtq_attr *attr); +int mlx5_devx_cmd_query_virtq(struct mlx5_devx_obj *virtq_obj, + struct mlx5_devx_virtq_attr *attr); +struct mlx5_devx_obj *mlx5_devx_cmd_create_qp(struct ibv_context *ctx, + struct mlx5_devx_qp_attr *attr); +int mlx5_devx_cmd_modify_qp_state(struct mlx5_devx_obj *qp, + uint32_t qp_st_mod_op, uint32_t remote_qp_id); +int mlx5_devx_cmd_modify_rqt(struct mlx5_devx_obj *rqt, + struct mlx5_devx_rqt_attr *rqt_attr); + #endif /* RTE_PMD_MLX5_DEVX_CMDS_H_ */