# mlx5dv_create_flow_matcher

## NAME



           mlx5dv_create_flow_matcher - creates a matcher to be used with
           _mlx5dv_create_flow(3)_
    


## SYNOPSIS



                  #include <infiniband/mlx5dv.h>
    
                  struct mlx5dv_flow_matcher *
                  mlx5dv_create_flow_matcher(struct ibv_context *context,
                                 struct mlx5dv_flow_matcher_attr *attr)
    


## DESCRIPTION



           **mlx5dv_create_flow_matcher()** creates a flow matcher (mask) to be
           used with _mlx5dv_create_flow(3)_.
    


## ARGUMENTS



           Please see _ibv_open_device(3)_ for _context_.
    
       **attr**
                  struct mlx5dv_flow_matcher_attr {
                      enum ibv_flow_attr_type type;
                      uint32_t flags; /* From enum ibv_flow_flags */
                      uint16_t priority;
                      uint8_t match_criteria_enable; /* Device spec format */
                      struct mlx5dv_flow_match_parameters *match_mask;
                      uint64_t comp_mask;
                      enum mlx5dv_flow_table_type ft_type;
                      uint32_t ib_port;
                  };
    
           _type_   Type of matcher to be created: IBV_FLOW_ATTR_NORMAL: Normal
                  rule according to specification.
    
           _flags_  special flags to control rule: 0: Nothing or zero value
                  means matcher will store ingress flow rules.
                  IBV_FLOW_ATTR_FLAGS_EGRESS: Specified this matcher will
                  store egress flow rules.
    
           _priority_
                  See _ibv_create_flow(3)_.
    
           _match_criteria_enable_
                  What match criteria is configured in _match_mask_ , passed in
                  device spec format.
    
       **match_mask**
                  struct mlx5dv_flow_match_parameters {
                      size_t match_sz;
                      uint64_t match_buf[]; /* Device spec format */
                  };
    
           _match_sz_
                  Size in bytes of _match_buf_.
    
           _match_buf_
                  Set which mask to be used, passed in device spec format.
    
           _comp_mask_
                  MLX5DV_FLOW_MATCHER_MASK_FT_TYPE for _ft_type_
                  MLX5DV_FLOW_MATCHER_MASK_IB_PORT for _ib_port_
    
       **ft_type**
           Specified in which flow table type, the matcher will store the
           flow rules: MLX5DV_FLOW_TABLE_TYPE_NIC_RX: Specified this matcher
           will store ingress flow rules.  MLX5DV_FLOW_TABLE_TYPE_NIC_TX
           Specified this matcher will store egress flow rules.
           MLX5DV_FLOW_TABLE_TYPE_FDB : Specified this matcher will store FDB
           rules.  MLX5DV_FLOW_TABLE_TYPE_RDMA_RX: Specified this matcher
           will store ingress RDMA flow rules.
           MLX5DV_FLOW_TABLE_TYPE_RDMA_TX: Specified this matcher will store
           egress RDMA flow rules.  MLX5DV_FLOW_TABLE_TYPE_RDMA_TRANSPORT_RX:
           Specified this matcher will store RDMA transport domain flow
           rules.  MLX5DV_FLOW_TABLE_TYPE_RDMA_TRANSPORT_TX: Specified this
           matcher will store RDMA transport domain flow rules.
    
       **ib_port**
           Specified to which vport attach the matcher, this is valid and
           required only when creating the steering RDMA transport domain
           flow table: MLX5DV_FLOW_TABLE_TYPE_RDMA_TRANSPORT_RX
           MLX5DV_FLOW_TABLE_TYPE_RDMA_TRANSPORT_TX
    


## RETURN VALUE



           **mlx5dv_create_flow_matcher** returns a pointer to
           _mlx5dv_flow_matcher_ , on error NULL will be returned and errno will
           be set.
    


* * *