On Thu, Oct 04, 2018 at 01:17:27PM +0300, Yishai Hadas wrote: > +# NAME > +mlx5dv_create_flow - creates a steering flow rule > + > +# SYNOPSIS > + > +```c > +#include <infiniband/mlx5dv.h> > + > +struct ibv_flow * > +mlx5dv_create_flow(struct mlx5dv_flow_matcher *flow_matcher, > + struct mlx5dv_flow_match_parameters *match_value, > + size_t num_actions, > + struct mlx5dv_flow_action_attr actions_attr[]) > +``` > + > + > +# DESCRIPTION > +**mlx5dv_create_flow()** creates a steering flow rule with the ability > +to specify specific driver properties. > + > +# ARGUMENTS > + > +Please see *mlx5dv_create_flow_matcher(3)* for *flow_matcher* and *match_value*. > + > +## num_actions > + Specifies how many actions are passed in *actions_attr* > + > +## actions_attr > +```c > +struct mlx5dv_flow_action_attr { > + enum mlx5dv_flow_action_type type; > + union { > + struct ibv_qp *qp; > + struct ibv_counters *counter; > + struct ibv_flow_action *action; > + uint32_t tag_value; > + }; > +}; > +``` > + > +## type > + MLX5DV_FLOW_ACTION_DEST_IBV_QP > + The QP passed will receive the matched packets. > + MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION > + The flow action to be applied. > + > +## qp > + QP passed, to be used with *type* *MLX5DV_FLOW_ACTION_DEST_IBV_QP*. > + > +## action > + Flow action, to be used with *type* *MLX5DV_FLOW_ACTION_IBV_FLOW_ACTION* > + see *mlx5dv_create_flow_action_modify_header(3)* and *mlx5dv_create_flow_action_packet_reformat(3)*. This is not the right format, the structure members are supposed to be definition lists, not section headers > +# RETURN VALUE > + > +**mlx5dv_create_flow** > +returns a pointer to the created flow rule, or NULL on failure. .. and sets errno Same for the other man page Jason