All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ye Xiaolong <xiaolong.ye@intel.com>
To: Yahui Cao <yahui.cao@intel.com>
Cc: Qiming Yang <qiming.yang@intel.com>,
	Wenzhuo Lu <wenzhuo.lu@intel.com>,
	dev@dpdk.org, Qi Zhang <qi.z.zhang@intel.com>,
	Beilei Xing <beilei.xing@intel.com>
Subject: Re: [dpdk-dev] [dpdk-dev 07/12] net/ice: enable FDIR queue group
Date: Sun, 8 Sep 2019 02:22:29 +0800	[thread overview]
Message-ID: <20190907182229.GD110251@intel.com> (raw)
In-Reply-To: <20190906120058.108073-8-yahui.cao@intel.com>

On 09/06, Yahui Cao wrote:
>FDIR can send packet to a group of queues and distruibte it by RSS.
>
>Signed-off-by: Yahui Cao <yahui.cao@intel.com>
>---
> drivers/net/ice/ice_fdir_filter.c | 65 +++++++++++++++++++++++++++++++
> 1 file changed, 65 insertions(+)
>
>diff --git a/drivers/net/ice/ice_fdir_filter.c b/drivers/net/ice/ice_fdir_filter.c
>index df4d0329c..ebbe1bd6c 100644
>--- a/drivers/net/ice/ice_fdir_filter.c
>+++ b/drivers/net/ice/ice_fdir_filter.c
>@@ -741,6 +741,62 @@ static struct ice_flow_engine ice_fdir_engine = {
> 	.type = ICE_FLOW_ENGINE_FDIR,
> };
> 
>+static int
>+ice_fdir_parse_action_qregion(struct ice_pf *pf,
>+			      struct rte_flow_error *error,
>+			      const struct rte_flow_action *act,
>+			      struct ice_fdir_filter_conf *filter)
>+{
>+	const struct rte_flow_action_rss *rss = act->conf;
>+	uint32_t i;
>+
>+	if (act->type != RTE_FLOW_ACTION_TYPE_RSS) {
>+		rte_flow_error_set(error, EINVAL,
>+				   RTE_FLOW_ERROR_TYPE_ACTION, act,
>+				   "Invalid action.");
>+		return -rte_errno;
>+	}
>+
>+	if (rss->queue_num <= 1) {
>+		rte_flow_error_set(error, EINVAL,
>+				   RTE_FLOW_ERROR_TYPE_ACTION, act,
>+				   "Queue region size can't be 0 or 1.");
>+		return -rte_errno;
>+	}
>+
>+	/* check if queue index for queue region is continuos */

s/continuos/continuous

>+	for (i = 0; i < rss->queue_num - 1; i++) {
>+		if (rss->queue[i + 1] != rss->queue[i] + 1) {
>+			rte_flow_error_set(error, EINVAL,
>+					   RTE_FLOW_ERROR_TYPE_ACTION, act,
>+					   "Invalid queue region indexes.");

Change the error message to "discontinuous queue region." to be more specific?

>+			return -rte_errno;
>+		}
>+	}
>+
>+	if (rss->queue[rss->queue_num - 1] >= pf->dev_data->nb_rx_queues) {
>+		rte_flow_error_set(error, EINVAL,
>+				   RTE_FLOW_ERROR_TYPE_ACTION, act,
>+				   "Invalid queue region indexes.");
>+		return -rte_errno;
>+	}
>+
>+	if (!(rte_is_power_of_2(rss->queue_num) && (rss->queue_num <= 128))) {

Use a macro fro the 128.

>+		rte_flow_error_set(error, EINVAL,
>+				   RTE_FLOW_ERROR_TYPE_ACTION, act,
>+				   "The region sizes should be any of the following values:"

s/sizes/size

>+				   "1, 2, 4, 8, 16, 32, 64, 128 as long as the total number "
>+				   "of queues do not exceed the VSI allocation.");
>+		return -rte_errno;
>+	}
>+
>+	filter->input.q_index = rss->queue[0];
>+	filter->input.q_region = rte_fls_u32(rss->queue_num) - 1;
>+	filter->input.dest_ctl = ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QGROUP;
>+
>+	return 0;
>+}
>+
> static int
> ice_fdir_parse_action(struct ice_adapter *ad,
> 		      const struct rte_flow_action actions[],
>@@ -752,6 +808,7 @@ ice_fdir_parse_action(struct ice_adapter *ad,
> 	const struct rte_flow_action_mark *mark_spec = NULL;
> 	uint32_t dest_num = 0;
> 	uint32_t mark_num = 0;
>+	int ret;
> 
> 	for (; actions->type != RTE_FLOW_ACTION_TYPE_END; actions++) {
> 		switch (actions->type) {
>@@ -785,6 +842,14 @@ ice_fdir_parse_action(struct ice_adapter *ad,
> 				ICE_FLTR_PRGM_DESC_DEST_DIRECT_PKT_QINDEX;
> 			filter->input.q_index = 0;
> 			break;
>+		case RTE_FLOW_ACTION_TYPE_RSS:
>+			dest_num++;
>+
>+			ret = ice_fdir_parse_action_qregion(pf,
>+						error, actions, filter);
>+			if (ret)
>+				return ret;
>+			break;
> 		case RTE_FLOW_ACTION_TYPE_MARK:
> 			mark_num++;
> 
>-- 
>2.17.1
>

  reply	other threads:[~2019-09-07 18:24 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-09-06 12:00 [dpdk-dev] [dpdk-dev 00/12] net/ice: add ice Flow Director driver Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 01/12] net/ice: initialize and set up flow director Yahui Cao
2019-09-07 11:01   ` Ye Xiaolong
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 02/12] net/ice: tear down " Yahui Cao
2019-09-07 11:21   ` Ye Xiaolong
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 03/12] net/ice: enable input set configuration Yahui Cao
2019-09-07 12:32   ` Ye Xiaolong
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 04/12] net/ice: add FDIR create and destroy Yahui Cao
2019-09-07 12:50   ` Ye Xiaolong
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 05/12] net/ice: add FDIR mark action support Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 06/12] net/ice: add hash table for FDIR Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 07/12] net/ice: enable FDIR queue group Yahui Cao
2019-09-07 18:22   ` Ye Xiaolong [this message]
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 08/12] net/ice: add FDIR dst mac support Yahui Cao
2019-09-07 18:25   ` Ye Xiaolong
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 09/12] net/ice: add FDIR counter resource init/release Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 10/12] net/ice: add FDIR counter support for flow id Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 11/12] net/ice: add FDIR counter support for flow shared Yahui Cao
2019-09-06 12:00 ` [dpdk-dev] [dpdk-dev 12/12] net/ice: add FDIR non-word aligned field support Yahui Cao

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=20190907182229.GD110251@intel.com \
    --to=xiaolong.ye@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=wenzhuo.lu@intel.com \
    --cc=yahui.cao@intel.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.