All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junyu Jiang <junyux.jiang@intel.com>
To: dev@dpdk.org
Cc: Qiming Yang <qiming.yang@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,
	Junyu Jiang <junyux.jiang@intel.com>,
	stable@dpdk.org
Subject: [dpdk-dev] [PATCH] net/ice: fix RSS advanced rule invalid issue
Date: Thu, 19 Mar 2020 07:48:25 +0000	[thread overview]
Message-ID: <20200319074825.16035-1-junyux.jiang@intel.com> (raw)

This patch added a restore function of RSS advanced rule to fix
the rule invalid when after running port stop and port start.

Fixes: 5ad3db8d4bdd ("net/ice: enable advanced RSS")
Cc: stable@dpdk.org

Signed-off-by: Junyu Jiang <junyux.jiang@intel.com>
---
 drivers/net/ice/ice_ethdev.c | 47 ++++++++++++++++++++++++++++++++++++
 1 file changed, 47 insertions(+)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 85ef83e92..2dd8120f1 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -47,6 +47,11 @@ struct proto_xtr_ol_flag {
 	bool required;
 };
 
+struct ice_hash_flow_cfg {
+	bool simple_xor;
+	struct ice_rss_cfg rss_cfg;
+};
+
 static struct proto_xtr_ol_flag ice_proto_xtr_ol_flag_params[] = {
 	[PROTO_XTR_VLAN] = {
 		.param = { .name = "ice_dynflag_proto_xtr_vlan" },
@@ -2464,6 +2469,45 @@ ice_dev_configure(struct rte_eth_dev *dev)
 	return 0;
 }
 
+static int
+ice_rss_restore(struct rte_eth_dev *dev)
+{
+	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	struct ice_hw *hw = ICE_PF_TO_HW(pf);
+	struct ice_vsi *vsi = pf->main_vsi;
+	struct rte_flow *p_flow;
+	struct ice_hash_flow_cfg *filter_ptr;
+	struct ice_flow_engine *engine;
+	uint32_t reg;
+	int ret;
+
+	TAILQ_FOREACH(p_flow, &pf->flow_list, node) {
+		engine = p_flow->engine;
+		if (engine->type == ICE_FLOW_ENGINE_HASH) {
+			filter_ptr = (struct ice_hash_flow_cfg *)p_flow->rule;
+			/* Enable registers for simple_xor hash function. */
+			if (filter_ptr->simple_xor == 1) {
+				reg = ICE_READ_REG(hw,
+					VSIQF_HASH_CTL(vsi->vsi_id));
+				reg = (reg & (~VSIQF_HASH_CTL_HASH_SCHEME_M)) |
+					(2 << VSIQF_HASH_CTL_HASH_SCHEME_S);
+				ICE_WRITE_REG(hw,
+					VSIQF_HASH_CTL(vsi->vsi_id), reg);
+			} else {
+				ret = ice_add_rss_cfg(hw, vsi->idx,
+					filter_ptr->rss_cfg.hashed_flds,
+					filter_ptr->rss_cfg.packet_hdr,
+					filter_ptr->rss_cfg.symm);
+				if (ret)
+					PMD_DRV_LOG(ERR,
+						"%s restore rss fail %d",
+						__func__, ret);
+			}
+		}
+	}
+	return 0;
+}
+
 static int ice_init_rss(struct ice_pf *pf)
 {
 	struct ice_hw *hw = ICE_PF_TO_HW(pf);
@@ -2591,6 +2635,9 @@ static int ice_init_rss(struct ice_pf *pf)
 		PMD_DRV_LOG(ERR, "%s PPPoE/PPPoD_SessionID rss flow fail %d",
 				__func__, ret);
 
+	/* restore RSS configuration */
+	ice_rss_restore(dev);
+
 	return 0;
 }
 
-- 
2.17.1


             reply	other threads:[~2020-03-19  7:57 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-03-19  7:48 Junyu Jiang [this message]
2020-03-26  2:00 ` [dpdk-dev] [PATCH] net/ice: fix RSS advanced rule invalid issue Yang, Qiming
2020-03-26  6:35 ` [dpdk-dev] [PATCH v2] " Junyu Jiang
2020-03-26  6:57 ` Junyu Jiang
2020-03-26  8:57   ` Yang, Qiming
2020-04-01  6:29 ` [dpdk-dev] [PATCH v3] " Junyu Jiang
2020-04-01  8:26 ` [dpdk-dev] [PATCH v4] " Junyu Jiang
2020-04-01  9:03   ` Yang, Qiming
2020-04-02  2:53   ` He, Zhiwei
2020-04-07  1:48 ` [dpdk-dev] [PATCH v5] " Junyu Jiang
2020-04-07  2:18   ` He, Zhiwei
2020-04-07  5:13   ` Yang, Qiming
2020-04-08  6:43   ` Ye Xiaolong

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=20200319074825.16035-1-junyux.jiang@intel.com \
    --to=junyux.jiang@intel.com \
    --cc=dev@dpdk.org \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=stable@dpdk.org \
    /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.