From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wr0-f181.google.com (mail-wr0-f181.google.com [209.85.128.181]) by dpdk.org (Postfix) with ESMTP id BE0862B86 for ; Wed, 1 Mar 2017 13:50:17 +0100 (CET) Received: by mail-wr0-f181.google.com with SMTP id l37so29397257wrc.1 for ; Wed, 01 Mar 2017 04:50:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=6wind-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references :in-reply-to:references; bh=uhGbRYJMGU9dIUQr+udg+PVYmea3tfV2sSRyWn132G4=; b=F83AiM04+22p43++4UbZqzpkuwSGzzC7vJTrnRb8hKqb127I2qi/wdA83mcCmHp1TQ 4BYEde0DnleCdLakLdh9EymLw1W23bzSNwiFqMWLcTSrhwDE6ipWFzCaTpPNMHpWGGDK qD2e0N12joq+zHh0eZpDXk8F9QY1w/O8vRqACitAe64WVic5NF0Sfpl+uAAhHUyiccja iJ04prho5zG7pA4zELvQ/E7y8PKmazZGW/bYN1OjLImZHRCpOqQHNvmv1CEWRdRd1i8Z 07859DlLA4+CYvPoMhvoSQS53z2Q+x0q0hP6UUlNReTiOUzTLH9bR+TxUTmrfw+oE5IB l3dA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=uhGbRYJMGU9dIUQr+udg+PVYmea3tfV2sSRyWn132G4=; b=niIQmCyXEPd3ZpQjl5rr6ovutHPK9nbdfftFotfzgX3ovO35oDrhOKvPzpxdcU/zdl sVVm/KYHnvVqBprZdSYnRgTAgKvkULwp6bW9lvNEEbjk9xJTE/1mJBBJv9v8u+PfMZJU chIYMXx2r0cMuq0OwFJcsYqVWKPQjr6XhG1fo1kSn9qbPAjd9RkhauBWCXBmhz6WO9uJ VSi0AXXKtGET/xbIS8+tM1pyhmz/MQgoFKRkB68XmXpdYenmDD3grip1qR60TVqQQrys Inoj2bwyLEtBzNiaaRHiZCuWT//nYY34AKMJTjr5x+8A6Aiy6HdN3C60hFnHl4nuiyZD 1ppQ== X-Gm-Message-State: AMke39npgcsLXbjhMv/sxyUKSlHKZ/SDrYxxP7uqd/wGc13xhQn35X405kmKNL0b4mJKa0wq X-Received: by 10.223.181.129 with SMTP id c1mr7208952wre.147.1488372617371; Wed, 01 Mar 2017 04:50:17 -0800 (PST) Received: from ping.vm.6wind.com (host.78.145.23.62.rev.coltfrance.com. [62.23.145.78]) by smtp.gmail.com with ESMTPSA id l45sm6502268wrc.14.2017.03.01.04.50.16 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Wed, 01 Mar 2017 04:50:16 -0800 (PST) From: Nelio Laranjeiro To: dev@dpdk.org Cc: Adrien Mazarguil Date: Wed, 1 Mar 2017 13:49:45 +0100 Message-Id: <8995ab6d0107cfc12355a4557aa9a47d363f36cb.1488372438.git.nelio.laranjeiro@6wind.com> X-Mailer: git-send-email 2.1.4 In-Reply-To: References: In-Reply-To: References: Subject: [dpdk-dev] [PATCH v2 6/9] net/mlx5: support flag flow action X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 01 Mar 2017 12:50:17 -0000 This action is not terminal in this PMD, it must be followed by a queue action. Signed-off-by: Nelio Laranjeiro --- drivers/net/mlx5/mlx5_flow.c | 5 +++++ drivers/net/mlx5/mlx5_prm.h | 7 ++++--- drivers/net/mlx5/mlx5_rxtx.c | 19 +++++++++++-------- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c index a885f6e..39a96ea 100644 --- a/drivers/net/mlx5/mlx5_flow.c +++ b/drivers/net/mlx5/mlx5_flow.c @@ -146,6 +146,7 @@ static const enum rte_flow_action_type valid_actions[] = { RTE_FLOW_ACTION_TYPE_DROP, RTE_FLOW_ACTION_TYPE_QUEUE, RTE_FLOW_ACTION_TYPE_MARK, + RTE_FLOW_ACTION_TYPE_FLAG, RTE_FLOW_ACTION_TYPE_END, }; @@ -476,6 +477,8 @@ priv_flow_validate(struct priv *priv, return -rte_errno; } action.mark = 1; + } else if (actions->type == RTE_FLOW_ACTION_TYPE_FLAG) { + action.mark = 1; } else { goto exit_action_not_supported; } @@ -1061,6 +1064,8 @@ priv_flow_create(struct priv *priv, if (mark) action.mark_id = mark->id; action.mark = !action.drop; + } else if (actions->type == RTE_FLOW_ACTION_TYPE_FLAG) { + action.mark = 1; } else { rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION, diff --git a/drivers/net/mlx5/mlx5_prm.h b/drivers/net/mlx5/mlx5_prm.h index 33fc386..0a77f5b 100644 --- a/drivers/net/mlx5/mlx5_prm.h +++ b/drivers/net/mlx5/mlx5_prm.h @@ -233,9 +233,11 @@ mlx5_flow_mark_set(uint32_t val) /* * Add one to the user value to differentiate un-marked flows from - * marked flows. + * marked flows, if the ID is equal to MLX5_FLOW_MARK_DEFAULT it + * remains untouched. */ - ++val; + if (val != MLX5_FLOW_MARK_DEFAULT) + ++val; #if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN /* * Mark is 24 bits (minus reserved values) but is stored on a 32 bit @@ -247,7 +249,6 @@ mlx5_flow_mark_set(uint32_t val) #else ret = val; #endif - assert(ret <= MLX5_FLOW_MARK_MAX); return ret; } diff --git a/drivers/net/mlx5/mlx5_rxtx.c b/drivers/net/mlx5/mlx5_rxtx.c index 122847d..58dd7c8 100644 --- a/drivers/net/mlx5/mlx5_rxtx.c +++ b/drivers/net/mlx5/mlx5_rxtx.c @@ -1538,14 +1538,17 @@ mlx5_rx_burst(void *dpdk_rxq, struct rte_mbuf **pkts, uint16_t pkts_n) pkt->hash.rss = rss_hash_res; pkt->ol_flags = PKT_RX_RSS_HASH; } - if (rxq->mark && - ((cqe->sop_drop_qpn != - htonl(MLX5_FLOW_MARK_INVALID)) && - (cqe->sop_drop_qpn != - htonl(MLX5_FLOW_MARK_DEFAULT)))) { - pkt->hash.fdir.hi = - mlx5_flow_mark_get(cqe->sop_drop_qpn); - pkt->ol_flags |= PKT_RX_FDIR | PKT_RX_FDIR_ID; + if (rxq->mark && (cqe->sop_drop_qpn != + htonl(MLX5_FLOW_MARK_INVALID))) { + pkt->ol_flags |= PKT_RX_FDIR; + if (cqe->sop_drop_qpn != + htonl(MLX5_FLOW_MARK_DEFAULT)) { + uint32_t mark = cqe->sop_drop_qpn; + + pkt->ol_flags |= PKT_RX_FDIR_ID; + pkt->hash.fdir.hi = + mlx5_flow_mark_get(mark); + } } if (rxq->csum | rxq->csum_l2tun | rxq->vlan_strip | rxq->crc_present) { -- 2.1.4