net/mlx5: prepare Direct Verbs for Direct Rule
[dpdk.git] / drivers / net / mlx5 / mlx5.h
index fe30353..784bf9b 100644 (file)
@@ -59,6 +59,9 @@ enum {
 /* Request types for IPC. */
 enum mlx5_mp_req_type {
        MLX5_MP_REQ_VERBS_CMD_FD = 1,
+       MLX5_MP_REQ_CREATE_MR,
+       MLX5_MP_REQ_START_RXTX,
+       MLX5_MP_REQ_STOP_RXTX,
 };
 
 /* Pameters for IPC. */
@@ -66,6 +69,10 @@ struct mlx5_mp_param {
        enum mlx5_mp_req_type type;
        int port_id;
        int result;
+       RTE_STD_C11
+       union {
+               uintptr_t addr; /* MLX5_MP_REQ_CREATE_MR */
+       } args;
 };
 
 /** Request timeout for IPC. */
@@ -165,6 +172,8 @@ struct mlx5_dev_config {
        unsigned int tx_vec_en:1; /* Tx vector is enabled. */
        unsigned int rx_vec_en:1; /* Rx vector is enabled. */
        unsigned int mpw_hdr_dseg:1; /* Enable DSEGs in the title WQEBB. */
+       unsigned int mr_ext_memseg_en:1;
+       /* Whether memseg should be extended for MR creation. */
        unsigned int l3_vxlan_en:1; /* Enable L3 VXLAN flow creation. */
        unsigned int vf_nl_en:1; /* Enable Netlink requests in VF mode. */
        unsigned int dv_flow_en:1; /* Enable DV flow. */
@@ -300,6 +309,8 @@ struct mlx5_priv {
        LIST_HEAD(matchers, mlx5_flow_dv_matcher) matchers;
        LIST_HEAD(encap_decap, mlx5_flow_dv_encap_decap_resource) encaps_decaps;
        LIST_HEAD(modify_cmd, mlx5_flow_dv_modify_hdr_resource) modify_cmds;
+       LIST_HEAD(tag, mlx5_flow_dv_tag_resource) tags;
+       /* Tags resources cache. */
        uint32_t link_speed_capa; /* Link speed capabilities. */
        struct mlx5_xstats_ctrl xstats_ctrl; /* Extended stats control. */
        struct mlx5_stats_ctrl stats_ctrl; /* Stats control. */
@@ -461,9 +472,14 @@ int mlx5_flow_create_drop_queue(struct rte_eth_dev *dev);
 void mlx5_flow_delete_drop_queue(struct rte_eth_dev *dev);
 
 /* mlx5_mp.c */
+void mlx5_mp_req_start_rxtx(struct rte_eth_dev *dev);
+void mlx5_mp_req_stop_rxtx(struct rte_eth_dev *dev);
+int mlx5_mp_req_mr_create(struct rte_eth_dev *dev, uintptr_t addr);
 int mlx5_mp_req_verbs_cmd_fd(struct rte_eth_dev *dev);
 void mlx5_mp_init_primary(void);
 void mlx5_mp_uninit_primary(void);
+void mlx5_mp_init_secondary(void);
+void mlx5_mp_uninit_secondary(void);
 
 /* mlx5_nl.c */