All of lore.kernel.org
 help / color / mirror / Atom feed
From: Yongseok Koh <yskoh@mellanox.com>
To: Ori Kam <orika@mellanox.com>
Cc: Shahaf Shuler <shahafs@mellanox.com>,
	Matan Azrad <matan@mellanox.com>,
	Slava Ovsiienko <viacheslavo@mellanox.com>,
	Moti Haimovsky <motih@mellanox.com>,
	"dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v2 6/9] net/mlx5: add transfer attribute to matcher
Date: Thu, 18 Apr 2019 12:19:02 +0000	[thread overview]
Message-ID: <20190418121853.GL31179@mtidpdk.mti.labs.mlnx> (raw)
In-Reply-To: <1555586930-109097-7-git-send-email-orika@mellanox.com>

On Thu, Apr 18, 2019 at 11:28:47AM +0000, Ori Kam wrote:
> In current implementation the DV steering supported only NIC steering.
> This commit adds the transfer attribute in order to create a matcher
> on the FDB tabels.
> 
> Signed-off-by: Ori Kam <orika@mellanox.com>
> ---

Acked-by: Yongseok Koh <yskoh@mellanox.com>

> v2:
> * Address ML comments.
> ---
>  drivers/net/mlx5/mlx5_flow.c    |  1 +
>  drivers/net/mlx5/mlx5_flow.h    |  2 ++
>  drivers/net/mlx5/mlx5_flow_dv.c | 22 ++++++++++++++++++----
>  3 files changed, 21 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index b1effda..8afb966 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -2095,6 +2095,7 @@ uint32_t mlx5_flow_adjust_priority(struct rte_eth_dev *dev, int32_t priority,
>  	flow = rte_calloc(__func__, 1, flow_size, 0);
>  	flow->drv_type = flow_get_drv_type(dev, attr);
>  	flow->ingress = attr->ingress;
> +	flow->transfer = attr->transfer;
>  	assert(flow->drv_type > MLX5_FLOW_TYPE_MIN &&
>  	       flow->drv_type < MLX5_FLOW_TYPE_MAX);
>  	flow->queue = (void *)(flow + 1);
> diff --git a/drivers/net/mlx5/mlx5_flow.h b/drivers/net/mlx5/mlx5_flow.h
> index 85954c2..9d72024 100644
> --- a/drivers/net/mlx5/mlx5_flow.h
> +++ b/drivers/net/mlx5/mlx5_flow.h
> @@ -210,6 +210,7 @@ struct mlx5_flow_dv_matcher {
>  	uint16_t crc; /**< CRC of key. */
>  	uint16_t priority; /**< Priority of matcher. */
>  	uint8_t egress; /**< Egress matcher. */
> +	uint8_t transfer; /**< 1 if the flow is E-Switch flow. */
>  	uint32_t group; /**< The matcher group. */
>  	struct mlx5_flow_dv_match_params mask; /**< Matcher mask. */
>  };
> @@ -382,6 +383,7 @@ struct rte_flow {
>  	struct mlx5_fdir *fdir; /**< Pointer to associated FDIR if any. */
>  	uint8_t ingress; /**< 1 if the flow is ingress. */
>  	uint32_t group; /**< The group index. */
> +	uint8_t transfer; /**< 1 if the flow is E-Switch flow. */
>  };
>  
>  typedef int (*mlx5_flow_validate_t)(struct rte_eth_dev *dev,
> diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
> index e3d9aa2..182abb3 100644
> --- a/drivers/net/mlx5/mlx5_flow_dv.c
> +++ b/drivers/net/mlx5/mlx5_flow_dv.c
> @@ -3192,6 +3192,8 @@ struct field_modify_info modify_tcp[] = {
>   *   Table id to use.
>   * @param[in] egress
>   *   Direction of the table.
> + * @param[in] transfer
> + *   E-Switch or NIC flow.
>   * @param[out] error
>   *   pointer to error structure.
>   *
> @@ -3201,6 +3203,7 @@ struct field_modify_info modify_tcp[] = {
>  static struct mlx5_flow_tbl_resource *
>  flow_dv_tbl_resource_get(struct rte_eth_dev *dev,
>  			 uint32_t table_id, uint8_t egress,
> +			 uint8_t transfer,
>  			 struct rte_flow_error *error)
>  {
>  	struct mlx5_priv *priv = dev->data->dev_private;
> @@ -3208,7 +3211,12 @@ struct field_modify_info modify_tcp[] = {
>  	struct mlx5_flow_tbl_resource *tbl;
>  
>  #ifdef HAVE_MLX5DV_DR
> -	if (egress) {
> +	if (transfer) {
> +		tbl = &sh->fdb_tbl[table_id];
> +		if (!tbl->obj)
> +			tbl->obj = mlx5_glue->dr_create_flow_tbl
> +				(sh->fdb_ns, table_id);
> +	} else if (egress) {
>  		tbl = &sh->tx_tbl[table_id];
>  		if (!tbl->obj)
>  			tbl->obj = mlx5_glue->dr_create_flow_tbl
> @@ -3230,7 +3238,9 @@ struct field_modify_info modify_tcp[] = {
>  #else
>  	(void)error;
>  	(void)tbl;
> -	if (egress)
> +	if (transfer)
> +		return &sh->fdb_tbl[table_id];
> +	else if (egress)
>  		return &sh->tx_tbl[table_id];
>  	else
>  		return &sh->rx_tbl[table_id];
> @@ -3295,6 +3305,7 @@ struct field_modify_info modify_tcp[] = {
>  		    matcher->priority == cache_matcher->priority &&
>  		    matcher->egress == cache_matcher->egress &&
>  		    matcher->group == cache_matcher->group &&
> +		    matcher->transfer == cache_matcher->transfer &&
>  		    !memcmp((const void *)matcher->mask.buf,
>  			    (const void *)cache_matcher->mask.buf,
>  			    cache_matcher->mask.size)) {
> @@ -3316,7 +3327,8 @@ struct field_modify_info modify_tcp[] = {
>  					  RTE_FLOW_ERROR_TYPE_UNSPECIFIED, NULL,
>  					  "cannot allocate matcher memory");
>  	tbl = flow_dv_tbl_resource_get(dev, matcher->group * MLX5_GROUP_FACTOR,
> -				       matcher->egress, error);
> +				       matcher->egress, matcher->transfer,
> +				       error);
>  	if (!tbl) {
>  		rte_free(cache_matcher);
>  		return rte_flow_error_set(error, ENOMEM,
> @@ -3643,7 +3655,8 @@ struct field_modify_info modify_tcp[] = {
>  			jump_data = action->conf;
>  			tbl = flow_dv_tbl_resource_get(dev, jump_data->group *
>  						       MLX5_GROUP_FACTOR,
> -						       attr->egress, error);
> +						       attr->egress,
> +						       attr->transfer, error);
>  			if (!tbl)
>  				return rte_flow_error_set
>  						(error, errno,
> @@ -3871,6 +3884,7 @@ struct field_modify_info modify_tcp[] = {
>  						     matcher.priority);
>  	matcher.egress = attr->egress;
>  	matcher.group = attr->group;
> +	matcher.transfer = attr->transfer;
>  	if (flow_dv_matcher_register(dev, &matcher, dev_flow, error))
>  		return -rte_errno;
>  	return 0;
> -- 
> 1.8.3.1
> 

  reply	other threads:[~2019-04-18 12:19 UTC|newest]

Thread overview: 62+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-14 21:12 [dpdk-dev] [PATCH 0/9] net/mlx5: add Direct Verbs E-Switch support Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 1/9] net/mlx5: fix translate vport function name Ori Kam
2019-04-16 23:47   ` Yongseok Koh
2019-04-14 21:12 ` [dpdk-dev] [PATCH 2/9] net/mlx5: fix menson compilation with Direct Rules Ori Kam
2019-04-17  0:01   ` Yongseok Koh
2019-04-17  0:34     ` Yongseok Koh
2019-04-17  5:18       ` Ori Kam
2019-04-17  5:18     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 3/9] net/mlx5: add Direct Rules configuration support Ori Kam
2019-04-17  1:42   ` Yongseok Koh
2019-04-17  6:19     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 4/9] net/mlx5: add validation for Direct Rule E-Switch Ori Kam
2019-04-17 23:59   ` Yongseok Koh
2019-04-18  4:40     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 5/9] net/mlx5: add port ID item to Direct Verbs Ori Kam
2019-04-18  0:19   ` Yongseok Koh
2019-04-18  4:43     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 6/9] net/mlx5: add transfer attribute to matcher Ori Kam
2019-04-18  0:38   ` Yongseok Koh
2019-04-18  4:57     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 7/9] net/mlx5: add port ID action to Direct Verbs Ori Kam
2019-04-18  0:59   ` Yongseok Koh
2019-04-18  5:06     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 8/9] net/mlx5: add Forward Database table type Ori Kam
2019-04-18  1:16   ` Yongseok Koh
2019-04-18  5:13     ` Ori Kam
2019-04-14 21:12 ` [dpdk-dev] [PATCH 9/9] net/mlx5: add drop action to Direct Verbs E-Switch Ori Kam
2019-04-18  1:28   ` Yongseok Koh
2019-04-18  5:15     ` Ori Kam
2019-04-18 11:28 ` [dpdk-dev] [PATCH v2 0/9] net/mlx5: add Direct Verbs E-Switch support Ori Kam
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 1/9] net/mlx5: fix translate vport function name Ori Kam
2019-04-18 12:06     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 2/9] net/mlx5: fix meson build for Direct Rules Ori Kam
2019-04-18 12:09     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 3/9] net/mlx5: add Direct Rules E-Switch support Ori Kam
2019-04-18 12:11     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 4/9] net/mlx5: add validation for Direct Rule E-Switch Ori Kam
2019-04-18 12:16     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 5/9] net/mlx5: add port ID item to Direct Verbs Ori Kam
2019-04-18 12:17     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 6/9] net/mlx5: add transfer attribute to matcher Ori Kam
2019-04-18 12:19     ` Yongseok Koh [this message]
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 7/9] net/mlx5: add E-Switch port ID action to Direct Verbs Ori Kam
2019-04-18 12:19     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 8/9] net/mlx5: add Forward Database table type Ori Kam
2019-04-18 12:21     ` Yongseok Koh
2019-04-18 11:28   ` [dpdk-dev] [PATCH v2 9/9] net/mlx5: add drop action to Direct Verbs E-Switch Ori Kam
2019-04-18 12:28     ` Yongseok Koh
2019-04-18 13:15 ` [dpdk-dev] [PATCH v3 0/9] net/mlx5: add Direct Verbs E-Switch support Ori Kam
2019-04-18 13:15   ` [dpdk-dev] [PATCH v3 1/9] net/mlx5: fix translate vport function name Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 2/9] net/mlx5: fix meson build for Direct Rules Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 3/9] net/mlx5: add Direct Rules E-Switch support Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 4/9] net/mlx5: add validation for Direct Rule E-Switch Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 5/9] net/mlx5: add port ID item to Direct Verbs Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 6/9] net/mlx5: add transfer attribute to matcher Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 7/9] net/mlx5: add E-Switch port ID action to Direct Verbs Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 8/9] net/mlx5: add Forward Database table type Ori Kam
2019-04-18 13:16   ` [dpdk-dev] [PATCH v3 9/9] net/mlx5: add drop action to Direct Verbs E-Switch Ori Kam
2019-04-18 13:23     ` Yongseok Koh
2019-04-18 13:47       ` Ori Kam
2019-04-18 18:14         ` Shahaf Shuler
2019-04-18 18:55   ` [dpdk-dev] [PATCH v3 0/9] net/mlx5: add Direct Verbs E-Switch support Shahaf Shuler

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=20190418121853.GL31179@mtidpdk.mti.labs.mlnx \
    --to=yskoh@mellanox.com \
    --cc=dev@dpdk.org \
    --cc=matan@mellanox.com \
    --cc=motih@mellanox.com \
    --cc=orika@mellanox.com \
    --cc=shahafs@mellanox.com \
    --cc=viacheslavo@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.