On Wed, Jun 21, 2017 at 11:55:58AM +0000, Shachar Beiser wrote: > Missing room in flow allocation to store the drop specification. > Changing flow without storing the change in rte_flow. > Fixes: 88c77dedfbb0 ("net/mlx5: implement drop action in hardware classifier") > > Signed-off-by: Shachar Beiser <shacha...@mellanox.com> > --- > drivers/net/mlx5/mlx5_flow.c | 8 +++++--- > 1 file changed, 5 insertions(+), 3 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c > index 12893c6..cad3d16 100644 > --- a/drivers/net/mlx5/mlx5_flow.c > +++ b/drivers/net/mlx5/mlx5_flow.c > @@ -580,6 +580,8 @@ struct mlx5_flow_action { > } > if (action->mark && !flow->ibv_attr && !action->drop) > flow->offset += sizeof(struct ibv_exp_flow_spec_action_tag); > + if (!flow->ibv_attr && action->drop) > + flow->offset += sizeof(struct ibv_exp_flow_spec_action_drop); > if (!action->queue && !action->drop) { > rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_HANDLE, > NULL, "no valid action"); > @@ -1011,9 +1013,6 @@ struct mlx5_flow_action { > return NULL; > } > rte_flow->drop = 1; > - rte_flow->ibv_attr = flow->ibv_attr; > - if (!priv->started) > - return rte_flow; > #ifdef HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_DROP > drop = (void *)((uintptr_t)flow->ibv_attr + flow->offset); > *drop = (struct ibv_exp_flow_spec_action_drop){ > @@ -1023,6 +1022,9 @@ struct mlx5_flow_action { > ++flow->ibv_attr->num_of_specs; > flow->offset += sizeof(struct ibv_exp_flow_spec_action_drop); > #endif > + rte_flow->ibv_attr = flow->ibv_attr; > + if (!priv->started) > + return rte_flow; > rte_flow->qp = priv->flow_drop_queue->qp; > rte_flow->ibv_flow = ibv_exp_create_flow(rte_flow->qp, > rte_flow->ibv_attr); > -- > 1.8.3.1
Acked-by: Nelio Laranjeiro <nelio.laranje...@6wind.com> Ferruh, this patch is fixing an issue of a patch only present in your master-net branch, the fixline sha1 will be wrong. Thanks, -- Nélio Laranjeiro 6WIND