net/mlx5: add VLAN push/pop DR commands to glue
This commit adds the mlx5dv VLAN push and pop commands to mlx5_glue interface. Signed-off-by: Moti Haimovsky <motih@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com>
This commit is contained in:
parent
e4fcdcd6f7
commit
400d985eb5
@ -163,6 +163,11 @@ mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
|
||||
infiniband/mlx5dv.h \
|
||||
enum MLX5DV_DR_DOMAIN_TYPE_FDB \
|
||||
$(AUTOCONF_OUTPUT)
|
||||
$Q sh -- '$<' '$@' \
|
||||
HAVE_MLX5DV_DR_VLAN \
|
||||
infiniband/mlx5dv.h \
|
||||
func mlx5dv_dr_action_create_push_vlan \
|
||||
$(AUTOCONF_OUTPUT)
|
||||
$Q sh -- '$<' '$@' \
|
||||
HAVE_IBV_DEVX_OBJ \
|
||||
infiniband/mlx5dv.h \
|
||||
|
@ -130,6 +130,8 @@ if build
|
||||
'MLX5DV_DR_DOMAIN_TYPE_NIC_RX' ],
|
||||
[ 'HAVE_MLX5DV_DR_ESWITCH', 'infiniband/mlx5dv.h',
|
||||
'MLX5DV_DR_DOMAIN_TYPE_FDB' ],
|
||||
[ 'HAVE_MLX5DV_DR_VLAN', 'infiniband/mlx5dv.h',
|
||||
'mlx5dv_dr_action_create_push_vlan' ],
|
||||
[ 'HAVE_SUPPORTED_40000baseKR4_Full', 'linux/ethtool.h',
|
||||
'SUPPORTED_40000baseKR4_Full' ],
|
||||
[ 'HAVE_SUPPORTED_40000baseCR4_Full', 'linux/ethtool.h',
|
||||
|
@ -414,6 +414,31 @@ mlx5_glue_dr_create_flow_action_drop(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
static void *
|
||||
mlx5_glue_dr_create_flow_action_push_vlan(struct mlx5dv_dr_domain *domain,
|
||||
rte_be32_t vlan_tag)
|
||||
{
|
||||
#ifdef HAVE_MLX5DV_DR_VLAN
|
||||
return mlx5dv_dr_action_create_push_vlan(domain, vlan_tag);
|
||||
#else
|
||||
(void)domain;
|
||||
(void)vlan_tag;
|
||||
errno = ENOTSUP;
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void *
|
||||
mlx5_glue_dr_create_flow_action_pop_vlan(void)
|
||||
{
|
||||
#ifdef HAVE_MLX5DV_DR_VLAN
|
||||
return mlx5dv_dr_action_create_pop_vlan();
|
||||
#else
|
||||
errno = ENOTSUP;
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
static void *
|
||||
mlx5_glue_dr_create_flow_tbl(void *domain, uint32_t level)
|
||||
{
|
||||
@ -1016,6 +1041,10 @@ const struct mlx5_glue *mlx5_glue = &(const struct mlx5_glue){
|
||||
mlx5_glue_dr_create_flow_action_dest_vport,
|
||||
.dr_create_flow_action_drop =
|
||||
mlx5_glue_dr_create_flow_action_drop,
|
||||
.dr_create_flow_action_push_vlan =
|
||||
mlx5_glue_dr_create_flow_action_push_vlan,
|
||||
.dr_create_flow_action_pop_vlan =
|
||||
mlx5_glue_dr_create_flow_action_pop_vlan,
|
||||
.dr_create_flow_tbl = mlx5_glue_dr_create_flow_tbl,
|
||||
.dr_destroy_flow_tbl = mlx5_glue_dr_destroy_flow_tbl,
|
||||
.dr_create_domain = mlx5_glue_dr_create_domain,
|
||||
|
@ -9,6 +9,8 @@
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
|
||||
#include "rte_byteorder.h"
|
||||
|
||||
/* Verbs headers do not support -pedantic. */
|
||||
#ifdef PEDANTIC
|
||||
#pragma GCC diagnostic ignored "-Wpedantic"
|
||||
@ -156,6 +158,10 @@ struct mlx5_glue {
|
||||
void *(*dr_create_flow_action_dest_flow_tbl)(void *tbl);
|
||||
void *(*dr_create_flow_action_dest_vport)(void *domain, uint32_t vport);
|
||||
void *(*dr_create_flow_action_drop)();
|
||||
void *(*dr_create_flow_action_push_vlan)
|
||||
(struct mlx5dv_dr_domain *domain,
|
||||
rte_be32_t vlan_tag);
|
||||
void *(*dr_create_flow_action_pop_vlan)();
|
||||
void *(*dr_create_flow_tbl)(void *domain, uint32_t level);
|
||||
int (*dr_destroy_flow_tbl)(void *tbl);
|
||||
void *(*dr_create_domain)(struct ibv_context *ctx,
|
||||
|
Loading…
Reference in New Issue
Block a user