mlx5dv_create_steering_anchor / mlx5dv_destroy_steering_anchor(3) mlx5dv_create_steering_anchor / mlx5dv_destroy_steering_anchor(3)

mlx5dv_create_steering_anchor - Creates a steering anchor

mlx5dv_destroy_steering_anchor - Destroys a steering anchor

#include <infiniband/mlx5dv.h>
struct mlx5dv_steering_anchor *
mlx5dv_create_steering_anchor(struct ibv_context *context,
                              struct mlx5dv_steering_anchor_attr *attr);
int mlx5dv_destroy_steering_anchor(struct mlx5dv_steering_anchor *sa);

A user can take packets into a user-configured sandbox and do packet processing at the end of which a steering pipeline decision is made on what to do with the packet.

A steering anchor allows the user to reinject the packet back into the kernel for additional processing.

mlx5dv_create_steering_anchor() Creates an anchor which will allow injecting the packet back into the kernel steering pipeline.

mlx5dv_destroy_steering_anchor() Destroys a steering anchor.

The device context to associate the steering anchor with.

Anchor attributes specify the priority and flow table type to which the anchor will point.

struct mlx5dv_steering_anchor_attr {
        enum mlx5dv_flow_table_type ft_type;
        uint16_t priority;
        uint64_t comp_mask;
The flow table type to which the anchor will point.
The priority inside ft_type to which the created anchor will point.
Reserved for future extension, must be 0 now.

struct mlx5dv_steering_anchor {
    uint32_t id;
The flow table ID to use as the destination when creating the flow table entry.

mlx5dv_create_steering_anchor() returns a pointer to a new mlx5dv_steering_anchor on success. On error NULL is returned and errno is set.

mlx5dv_destroy_steering_anchor() returns 0 on success and errno value on error.

Mark Bloch <>