summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorDekel Peled <dekelp@mellanox.com>2019-07-22 14:52:02 +0000
committerFerruh Yigit <ferruh.yigit@intel.com>2019-07-23 14:31:36 +0200
commit3075bd23e3b84199283cf6600484466addfe525f (patch)
tree6dc33f2c8e2779b347c7c04c25fa87522e4beb9a /drivers
parent62d6f70f30f4eaeb533b37b539ffebd2398e0cfe (diff)
downloaddpdk-3075bd23e3b84199283cf6600484466addfe525f.zip
dpdk-3075bd23e3b84199283cf6600484466addfe525f.tar.gz
dpdk-3075bd23e3b84199283cf6600484466addfe525f.tar.xz
net/mlx5: add glue for create action via DevX
Add compile option HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR, and matching dest_tir flag in device configuration structure. Add glue function pointer dv_create_flow_action_dest_devx_tir, and function mlx5_glue_dv_create_flow_action_dest_devx_tir(), to invoke API mlx5dv_dr_action_create_dest_devx_tir(); Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Matan Azrad <matan@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/mlx5/Makefile5
-rw-r--r--drivers/net/mlx5/meson.build2
-rw-r--r--drivers/net/mlx5/mlx5.c3
-rw-r--r--drivers/net/mlx5/mlx5.h1
-rw-r--r--drivers/net/mlx5/mlx5_glue.c14
-rw-r--r--drivers/net/mlx5/mlx5_glue.h1
6 files changed, 26 insertions, 0 deletions
diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
index 76d40b1..dbb2a4e 100644
--- a/drivers/net/mlx5/Makefile
+++ b/drivers/net/mlx5/Makefile
@@ -178,6 +178,11 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
func mlx5dv_devx_obj_query_async \
$(AUTOCONF_OUTPUT)
$Q sh -- '$<' '$@' \
+ HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR \
+ infiniband/mlx5dv.h \
+ func mlx5dv_dr_action_create_dest_devx_tir \
+ $(AUTOCONF_OUTPUT)
+ $Q sh -- '$<' '$@' \
HAVE_ETHTOOL_LINK_MODE_25G \
/usr/include/linux/ethtool.h \
enum ETHTOOL_LINK_MODE_25000baseCR_Full_BIT \
diff --git a/drivers/net/mlx5/meson.build b/drivers/net/mlx5/meson.build
index ed42641..62b41ca 100644
--- a/drivers/net/mlx5/meson.build
+++ b/drivers/net/mlx5/meson.build
@@ -124,6 +124,8 @@ if build
'MLX5DV_FLOW_ACTION_COUNTERS_DEVX' ],
[ 'HAVE_IBV_DEVX_ASYNC', 'infiniband/mlx5dv.h',
'mlx5dv_devx_obj_query_async' ],
+ [ 'HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR', 'infiniband/mlx5dv.h',
+ 'mlx5dv_dr_action_create_dest_devx_tir' ],
[ 'HAVE_MLX5DV_DR', 'infiniband/mlx5dv.h',
'MLX5DV_DR_DOMAIN_TYPE_NIC_RX' ],
[ 'HAVE_MLX5DV_DR_ESWITCH', 'infiniband/mlx5dv.h',
diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
index a843499..19e1f41 100644
--- a/drivers/net/mlx5/mlx5.c
+++ b/drivers/net/mlx5/mlx5.c
@@ -1423,6 +1423,9 @@ mlx5_dev_spawn(struct rte_device *dpdk_dev,
if (!sh)
return NULL;
config.devx = sh->devx;
+#ifdef HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR
+ config.dest_tir = 1;
+#endif
#ifdef HAVE_IBV_MLX5_MOD_SWP
dv_attr.comp_mask |= MLX5DV_CONTEXT_MASK_SWP;
#endif
diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
index 738c55b..7041bbc 100644
--- a/drivers/net/mlx5/mlx5.h
+++ b/drivers/net/mlx5/mlx5.h
@@ -236,6 +236,7 @@ struct mlx5_dev_config {
unsigned int dv_flow_en:1; /* Enable DV flow. */
unsigned int swp:1; /* Tx generic tunnel checksum and TSO offload. */
unsigned int devx:1; /* Whether devx interface is available or not. */
+ unsigned int dest_tir:1; /* Whether advanced DR API is available. */
struct {
unsigned int enabled:1; /* Whether MPRQ is enabled. */
unsigned int stride_num_n; /* Number of strides. */
diff --git a/drivers/net/mlx5/mlx5_glue.c b/drivers/net/mlx5/mlx5_glue.c
index 05474a0..50c369a 100644
--- a/drivers/net/mlx5/mlx5_glue.c
+++ b/drivers/net/mlx5/mlx5_glue.c
@@ -628,6 +628,18 @@ mlx5_glue_dv_create_flow_action_dest_ibv_qp(void *qp)
}
static void *
+mlx5_glue_dv_create_flow_action_dest_devx_tir(void *tir)
+{
+#ifdef HAVE_MLX5DV_DR_ACTION_DEST_DEVX_TIR
+ return mlx5dv_dr_action_create_dest_devx_tir(tir);
+#else
+ (void)tir;
+ errno = ENOTSUP;
+ return NULL;
+#endif
+}
+
+static void *
mlx5_glue_dv_create_flow_action_modify_header
(struct ibv_context *ctx,
enum mlx5dv_flow_table_type ft_type,
@@ -1020,6 +1032,8 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue){
mlx5_glue_dv_create_flow_action_counter,
.dv_create_flow_action_dest_ibv_qp =
mlx5_glue_dv_create_flow_action_dest_ibv_qp,
+ .dv_create_flow_action_dest_devx_tir =
+ mlx5_glue_dv_create_flow_action_dest_devx_tir,
.dv_create_flow_action_modify_header =
mlx5_glue_dv_create_flow_action_modify_header,
.dv_create_flow_action_packet_reformat =
diff --git a/drivers/net/mlx5/mlx5_glue.h b/drivers/net/mlx5/mlx5_glue.h
index d5c7523..f8e2b9a 100644
--- a/drivers/net/mlx5/mlx5_glue.h
+++ b/drivers/net/mlx5/mlx5_glue.h
@@ -187,6 +187,7 @@ struct mlx5_glue {
size_t num_actions, void *actions[]);
void *(*dv_create_flow_action_counter)(void *obj, uint32_t offset);
void *(*dv_create_flow_action_dest_ibv_qp)(void *qp);
+ void *(*dv_create_flow_action_dest_devx_tir)(void *tir);
void *(*dv_create_flow_action_modify_header)
(struct ibv_context *ctx, enum mlx5dv_flow_table_type ft_type,
void *domain, uint64_t flags, size_t actions_sz,