From: "Nélio Laranjeiro" <nelio.laranjeiro@6wind.com>
To: Shachar Beiser <shacharbe@mellanox.com>
Cc: adrien.mazarguil@6wind.com, dev@dpdk.org
Subject: Re: [PATCH] net/mlx5: implement drop action in hardware classifier
Date: Fri, 26 May 2017 08:56:31 +0200 [thread overview]
Message-ID: <20170526065631.GP31330@autoinstall.dev.6wind.com> (raw)
In-Reply-To: <1495717559-13005-1-git-send-email-shacharbe@mellanox.com>
Shachar,
Please see the few comments above,
On Thu, May 25, 2017 at 01:05:58PM +0000, Shachar Beiser wrote:
> The current drop action is implemented as a queue tail drop,
> requiring to instantiate multiple WQs to maintain high drop rate.
> This commit, implements the drop action in hardware classifier.
> This enables to reduce the amount of contexts needed for the drop,
> without affecting the drop rate.
>
> Signed-off-by: Shachar Beiser <shacharbe@mellanox.com>
> ---
> drivers/net/mlx5/Makefile | 5 ++++
> drivers/net/mlx5/mlx5_flow.c | 56 ++++++++++++++++++++++++++++++++++++++++++++
> 2 files changed, 61 insertions(+)
>
> diff --git a/drivers/net/mlx5/Makefile b/drivers/net/mlx5/Makefile
> index c079959..daf8013 100644
> --- a/drivers/net/mlx5/Makefile
> +++ b/drivers/net/mlx5/Makefile
> @@ -101,6 +101,11 @@ mlx5_autoconf.h.new: FORCE
> mlx5_autoconf.h.new: $(RTE_SDK)/buildtools/auto-config-h.sh
> $Q $(RM) -f -- '$@'
> $Q sh -- '$<' '$@' \
> + HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_DROP \
> + infiniband/verbs_exp.h \
> + enum IBV_EXP_FLOW_SPEC_ACTION_DROP \
> + $(AUTOCONF_OUTPUT)
> + $Q sh -- '$<' '$@' \
> HAVE_VERBS_IBV_EXP_CQ_COMPRESSED_CQE \
> infiniband/verbs_exp.h \
> enum IBV_EXP_CQ_COMPRESSED_CQE \
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index adcbe3f..d132d85 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -994,6 +994,12 @@ struct mlx5_flow_action {
> {
> struct rte_flow *rte_flow;
>
> +#ifdef HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_DROP
> +
> + struct ibv_exp_flow_spec_action_drop *drop;
> +
> + unsigned int size = sizeof(struct ibv_exp_flow_spec_action_drop);
> +#endif
Remove those extra lines, it does not respect the file coding style.
> assert(priv->pd);
> assert(priv->ctx);
> rte_flow = rte_calloc(__func__, 1, sizeof(*rte_flow), 0);
> @@ -1007,6 +1013,15 @@ struct mlx5_flow_action {
> rte_flow->qp = priv->flow_drop_queue->qp;
> 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){
> + .type = IBV_EXP_FLOW_SPEC_ACTION_DROP,
> + .size = size,
> + };
> + ++flow->ibv_attr->num_of_specs;
> + flow->offset += sizeof(struct ibv_exp_flow_spec_action_drop);
> +#endif
> rte_flow->ibv_flow = ibv_exp_create_flow(rte_flow->qp,
> rte_flow->ibv_attr);
> if (!rte_flow->ibv_flow) {
> @@ -1370,8 +1385,10 @@ struct rte_flow *
> priv_flow_create_drop_queue(struct priv *priv)
> {
> struct rte_flow_drop *fdq = NULL;
> +#ifndef HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_DROP
> unsigned int i;
>
> +#endif
The empty line should be after the #endif not before.
> assert(priv->pd);
> assert(priv->ctx);
> fdq = rte_calloc(__func__, 1, sizeof(*fdq), 0);
> @@ -1387,6 +1404,7 @@ struct rte_flow *
> WARN("cannot allocate CQ for drop queue");
> goto error;
> }
> +#ifndef HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_DROP
> for (i = 0; i != MLX5_DROP_WQ_N; ++i) {
> fdq->wqs[i] = ibv_exp_create_wq(priv->ctx,
> &(struct ibv_exp_wq_init_attr){
> @@ -1412,6 +1430,31 @@ struct rte_flow *
> WARN("cannot allocate indirection table for drop queue");
> goto error;
> }
> +#else
> + fdq->wqs[0] = ibv_exp_create_wq(priv->ctx,
> + &(struct ibv_exp_wq_init_attr){
> + .wq_type = IBV_EXP_WQT_RQ,
> + .max_recv_wr = 1,
> + .max_recv_sge = 1,
> + .pd = priv->pd,
> + .cq = fdq->cq,
> + });
> + if (!fdq->wqs[0]) {
> + WARN("cannot allocate WQ for drop queue");
> + goto error;
> + }
>From here...
> + fdq->ind_table = ibv_exp_create_rwq_ind_table(priv->ctx,
> + &(struct ibv_exp_rwq_ind_table_init_attr){
> + .pd = priv->pd,
> + .log_ind_tbl_size = 0,
> + .ind_tbl = fdq->wqs,
> + .comp_mask = 0,
> + });
> + if (!fdq->ind_table) {
> + WARN("cannot allocate indirection table for drop queue");
> + goto error;
> + }
> +#endif
>[...]
To this point, the code is copy/paste from the block above, it should
not be present. Please keep the diff as small as possible.
Thanks,
--
Nélio Laranjeiro
6WIND
next parent reply other threads:[~2017-05-26 6:56 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <1495717559-13005-1-git-send-email-shacharbe@mellanox.com>
2017-05-26 6:56 ` Nélio Laranjeiro [this message]
2017-05-28 6:49 [PATCH] net/mlx5: implement drop action in hardware classifier Shachar Beiser
2017-05-28 6:49 ` Shachar Beiser
2017-05-29 13:07 ` Nélio Laranjeiro
2017-05-29 13:35 ` Shachar Beiser
2017-05-29 14:05 ` Nélio Laranjeiro
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170526065631.GP31330@autoinstall.dev.6wind.com \
--to=nelio.laranjeiro@6wind.com \
--cc=adrien.mazarguil@6wind.com \
--cc=dev@dpdk.org \
--cc=shacharbe@mellanox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.