patches for DPDK stable branches
 help / color / Atom feed
* [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue
@ 2020-03-19  7:48 Junyu Jiang
  2020-03-26  2:00 ` Yang, Qiming
                   ` (4 more replies)
  0 siblings, 5 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-03-19  7:48 UTC (permalink / raw)
  To: dev; +Cc: Qiming Yang, Qi Zhang, Junyu Jiang, stable

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


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue
  2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
@ 2020-03-26  2:00 ` Yang, Qiming
  2020-03-26  6:35 ` [dpdk-stable] [PATCH v2] " Junyu Jiang
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Yang, Qiming @ 2020-03-26  2:00 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Zhang, Qi Z, stable

Hi, Junyu
Comments inline.
And I have a proposal, why we don't put ice_rss_init into ice_dev_init, so the rss rule will not recovery.

Qiming

> -----Original Message-----
> From: Jiang, JunyuX <junyux.jiang@intel.com>
> Sent: Thursday, March 19, 2020 15:48
> To: dev@dpdk.org
> Cc: Yang, Qiming <qiming.yang@intel.com>; Zhang, Qi Z
> <qi.z.zhang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> stable@dpdk.org
> Subject: [PATCH] net/ice: fix RSS advanced rule invalid issue
> 
> This patch added a restore function of RSS advanced rule to fix the rule

I think it should be 'for RSS advanced rule'

> invalid when after running port stop and port start.

Delete 'when'

> 
> 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;

Why not an enum for the algorithm?

> +	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);

Please use the same function as PF, like DEV_TO_PF

> +	struct ice_vsi *vsi = pf->main_vsi;
> +	struct rte_flow *p_flow;
> +	struct ice_hash_flow_cfg *filter_ptr;

What's the ptr means?

> +	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


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dpdk-stable] [PATCH v2] net/ice: fix RSS advanced rule invalid issue
  2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
  2020-03-26  2:00 ` Yang, Qiming
@ 2020-03-26  6:35 ` " Junyu Jiang
  2020-03-26  6:57 ` Junyu Jiang
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-03-26  6:35 UTC (permalink / raw)
  To: dev; +Cc: Qi Zhang, Qiming Yang, Junyu Jiang, stable

This patch added a restore function for RSS advanced rule to fix
the rule invalid 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


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dpdk-stable] [PATCH v2] net/ice: fix RSS advanced rule invalid issue
  2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
  2020-03-26  2:00 ` Yang, Qiming
  2020-03-26  6:35 ` [dpdk-stable] [PATCH v2] " Junyu Jiang
@ 2020-03-26  6:57 ` Junyu Jiang
  2020-03-26  8:57   ` Yang, Qiming
  2020-04-01  6:29 ` [dpdk-stable] [PATCH v3] " Junyu Jiang
  2020-04-01  8:26 ` [dpdk-stable] [PATCH v4] " Junyu Jiang
  4 siblings, 1 reply; 9+ messages in thread
From: Junyu Jiang @ 2020-03-26  6:57 UTC (permalink / raw)
  To: dev; +Cc: Qi Zhang, Qiming Yang, Junyu Jiang, stable

This patch added a restore function for RSS advanced rule to fix
the rule invalid 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..c2ee37c59 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_DEV_PRIVATE_TO_HW(dev->data->dev_private);
+	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


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v2] net/ice: fix RSS advanced rule invalid issue
  2020-03-26  6:57 ` Junyu Jiang
@ 2020-03-26  8:57   ` Yang, Qiming
  0 siblings, 0 replies; 9+ messages in thread
From: Yang, Qiming @ 2020-03-26  8:57 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Zhang, Qi Z, stable

Hi, Junyu
NACKed.
I still keep my point of view, I think no need to enable a restore function.
Beside, 'ptr' = rss rule? I don't get your point, please don't define a various with a no meaning name.

Hi, Qi
What do you think about move the 'ice_rss_init' into 'ice_dev_init' ?

Qiming

> -----Original Message-----
> From: Jiang, JunyuX <junyux.jiang@intel.com>
> Sent: Thursday, March 26, 2020 14:57
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> stable@dpdk.org
> Subject: [PATCH v2] net/ice: fix RSS advanced rule invalid issue
> 
> This patch added a restore function for RSS advanced rule to fix the rule
> invalid 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..c2ee37c59 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_DEV_PRIVATE_TO_HW(dev->data-
> >dev_private);
> +	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


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dpdk-stable] [PATCH v3] net/ice: fix RSS advanced rule invalid issue
  2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
                   ` (2 preceding siblings ...)
  2020-03-26  6:57 ` Junyu Jiang
@ 2020-04-01  6:29 ` " Junyu Jiang
  2020-04-01  8:26 ` [dpdk-stable] [PATCH v4] " Junyu Jiang
  4 siblings, 0 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-04-01  6:29 UTC (permalink / raw)
  To: dev; +Cc: Qi Zhang, Qiming Yang, Junyu Jiang, stable

This patch moved the ice_init_rss into ice_dev_configure to fix RSS
advanced rule invalid 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 | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 85ef83e92..1d94d2a41 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -155,6 +155,7 @@ static int ice_dev_udp_tunnel_port_add(struct rte_eth_dev *dev,
 			struct rte_eth_udp_tunnel *udp_tunnel);
 static int ice_dev_udp_tunnel_port_del(struct rte_eth_dev *dev,
 			struct rte_eth_udp_tunnel *udp_tunnel);
+static int ice_init_rss(struct ice_pf *pf);
 
 static const struct rte_pci_id pci_id_ice_map[] = {
 	{ RTE_PCI_DEVICE(ICE_INTEL_VENDOR_ID, ICE_DEV_ID_E810C_BACKPLANE) },
@@ -2451,6 +2452,8 @@ ice_dev_configure(struct rte_eth_dev *dev)
 {
 	struct ice_adapter *ad =
 		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	int ret;
 
 	/* Initialize to TRUE. If any of Rx queues doesn't meet the
 	 * bulk allocation or vector Rx preconditions we will reset it.
@@ -2461,6 +2464,10 @@ ice_dev_configure(struct rte_eth_dev *dev)
 	if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
 		dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
 
+	ret = ice_init_rss(pf);
+	if (ret)
+		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
+
 	return 0;
 }
 
@@ -2797,12 +2804,6 @@ ice_dev_start(struct rte_eth_dev *dev)
 		}
 	}
 
-	ret = ice_init_rss(pf);
-	if (ret) {
-		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
-		goto rx_err;
-	}
-
 	ice_set_rx_function(dev);
 	ice_set_tx_function(dev);
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* [dpdk-stable] [PATCH v4] net/ice: fix RSS advanced rule invalid issue
  2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
                   ` (3 preceding siblings ...)
  2020-04-01  6:29 ` [dpdk-stable] [PATCH v3] " Junyu Jiang
@ 2020-04-01  8:26 ` " Junyu Jiang
  2020-04-01  9:03   ` Yang, Qiming
  2020-04-02  2:53   ` [dpdk-stable] [dpdk-dev] " He, Zhiwei
  4 siblings, 2 replies; 9+ messages in thread
From: Junyu Jiang @ 2020-04-01  8:26 UTC (permalink / raw)
  To: dev; +Cc: Qi Zhang, Qiming Yang, Junyu Jiang, stable

This patch moved the RSS initialization from dev start to dev configure
to fix RSS advanced rule invalid 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 | 48 ++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
index 85ef83e92..4cfdbd838 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2446,24 +2446,6 @@ ice_dev_uninit(struct rte_eth_dev *dev)
 	return 0;
 }
 
-static int
-ice_dev_configure(struct rte_eth_dev *dev)
-{
-	struct ice_adapter *ad =
-		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
-
-	/* Initialize to TRUE. If any of Rx queues doesn't meet the
-	 * bulk allocation or vector Rx preconditions we will reset it.
-	 */
-	ad->rx_bulk_alloc_allowed = true;
-	ad->tx_simple_allowed = true;
-
-	if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
-		dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
-
-	return 0;
-}
-
 static int ice_init_rss(struct ice_pf *pf)
 {
 	struct ice_hw *hw = ICE_PF_TO_HW(pf);
@@ -2594,6 +2576,30 @@ static int ice_init_rss(struct ice_pf *pf)
 	return 0;
 }
 
+static int
+ice_dev_configure(struct rte_eth_dev *dev)
+{
+	struct ice_adapter *ad =
+		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	int ret;
+
+	/* Initialize to TRUE. If any of Rx queues doesn't meet the
+	 * bulk allocation or vector Rx preconditions we will reset it.
+	 */
+	ad->rx_bulk_alloc_allowed = true;
+	ad->tx_simple_allowed = true;
+
+	if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+		dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+
+	ret = ice_init_rss(pf);
+	if (ret)
+		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
+
+	return ret;
+}
+
 static void
 __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect,
 		       int base_queue, int nb_queue)
@@ -2797,12 +2803,6 @@ ice_dev_start(struct rte_eth_dev *dev)
 		}
 	}
 
-	ret = ice_init_rss(pf);
-	if (ret) {
-		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
-		goto rx_err;
-	}
-
 	ice_set_rx_function(dev);
 	ice_set_tx_function(dev);
 
-- 
2.17.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [PATCH v4] net/ice: fix RSS advanced rule invalid issue
  2020-04-01  8:26 ` [dpdk-stable] [PATCH v4] " Junyu Jiang
@ 2020-04-01  9:03   ` Yang, Qiming
  2020-04-02  2:53   ` [dpdk-stable] [dpdk-dev] " He, Zhiwei
  1 sibling, 0 replies; 9+ messages in thread
From: Yang, Qiming @ 2020-04-01  9:03 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Zhang, Qi Z, stable

Nacked

> -----Original Message-----
> From: Jiang, JunyuX <junyux.jiang@intel.com>
> Sent: Wednesday, April 1, 2020 16:27
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming
> <qiming.yang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>;
> stable@dpdk.org
> Subject: [PATCH v4] net/ice: fix RSS advanced rule invalid issue
> 
> This patch moved the RSS initialization from dev start to dev configure to fix
> RSS advanced rule invalid 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 | 48 ++++++++++++++++++------------------
>  1 file changed, 24 insertions(+), 24 deletions(-)
> 
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
> index 85ef83e92..4cfdbd838 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -2446,24 +2446,6 @@ ice_dev_uninit(struct rte_eth_dev *dev)
>  	return 0;
>  }
> 
> -static int
> -ice_dev_configure(struct rte_eth_dev *dev) -{
> -	struct ice_adapter *ad =
> -		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> -
> -	/* Initialize to TRUE. If any of Rx queues doesn't meet the
> -	 * bulk allocation or vector Rx preconditions we will reset it.
> -	 */
> -	ad->rx_bulk_alloc_allowed = true;
> -	ad->tx_simple_allowed = true;
> -
> -	if (dev->data->dev_conf.rxmode.mq_mode &
> ETH_MQ_RX_RSS_FLAG)
> -		dev->data->dev_conf.rxmode.offloads |=
> DEV_RX_OFFLOAD_RSS_HASH;
> -
> -	return 0;

Why you delete the original logical?!

> -}
> -
>  static int ice_init_rss(struct ice_pf *pf)  {
>  	struct ice_hw *hw = ICE_PF_TO_HW(pf);
> @@ -2594,6 +2576,30 @@ static int ice_init_rss(struct ice_pf *pf)
>  	return 0;
>  }
> 
> +static int
> +ice_dev_configure(struct rte_eth_dev *dev) {
> +	struct ice_adapter *ad =
> +		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> +	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data-
> >dev_private);
> +	int ret;
> +
> +	/* Initialize to TRUE. If any of Rx queues doesn't meet the
> +	 * bulk allocation or vector Rx preconditions we will reset it.
> +	 */
> +	ad->rx_bulk_alloc_allowed = true;
> +	ad->tx_simple_allowed = true;
> +
> +	if (dev->data->dev_conf.rxmode.mq_mode &
> ETH_MQ_RX_RSS_FLAG)
> +		dev->data->dev_conf.rxmode.offloads |=
> DEV_RX_OFFLOAD_RSS_HASH;
> +
> +	ret = ice_init_rss(pf);
> +	if (ret)
> +		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
> +
> +	return ret;
> +}
> +
>  static void
>  __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect,
>  		       int base_queue, int nb_queue)
> @@ -2797,12 +2803,6 @@ ice_dev_start(struct rte_eth_dev *dev)
>  		}
>  	}
> 
> -	ret = ice_init_rss(pf);
> -	if (ret) {
> -		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
> -		goto rx_err;
> -	}
> -
>  	ice_set_rx_function(dev);
>  	ice_set_tx_function(dev);
> 
> --
> 2.17.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

* Re: [dpdk-stable] [dpdk-dev] [PATCH v4] net/ice: fix RSS advanced rule invalid issue
  2020-04-01  8:26 ` [dpdk-stable] [PATCH v4] " Junyu Jiang
  2020-04-01  9:03   ` Yang, Qiming
@ 2020-04-02  2:53   ` " He, Zhiwei
  1 sibling, 0 replies; 9+ messages in thread
From: He, Zhiwei @ 2020-04-02  2:53 UTC (permalink / raw)
  To: Jiang, JunyuX, dev; +Cc: Zhang, Qi Z, Yang, Qiming, Jiang, JunyuX, stable

The [PATCH v4] net/ice: fix RSS advanced rule invalid issue patch test -by Zhiwei.he <Zhiwei.he@intel.com>

-----Original Message-----
From: dev <dev-bounces@dpdk.org> On Behalf Of Junyu Jiang
Sent: Wednesday, April 1, 2020 4:27 PM
To: dev@dpdk.org
Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Yang, Qiming <qiming.yang@intel.com>; Jiang, JunyuX <junyux.jiang@intel.com>; stable@dpdk.org
Subject: [dpdk-dev] [PATCH v4] net/ice: fix RSS advanced rule invalid issue

This patch moved the RSS initialization from dev start to dev configure to fix RSS advanced rule invalid 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 | 48 ++++++++++++++++++------------------
 1 file changed, 24 insertions(+), 24 deletions(-)

diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c index 85ef83e92..4cfdbd838 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -2446,24 +2446,6 @@ ice_dev_uninit(struct rte_eth_dev *dev)
 	return 0;
 }
 
-static int
-ice_dev_configure(struct rte_eth_dev *dev) -{
-	struct ice_adapter *ad =
-		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
-
-	/* Initialize to TRUE. If any of Rx queues doesn't meet the
-	 * bulk allocation or vector Rx preconditions we will reset it.
-	 */
-	ad->rx_bulk_alloc_allowed = true;
-	ad->tx_simple_allowed = true;
-
-	if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
-		dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
-
-	return 0;
-}
-
 static int ice_init_rss(struct ice_pf *pf)  {
 	struct ice_hw *hw = ICE_PF_TO_HW(pf);
@@ -2594,6 +2576,30 @@ static int ice_init_rss(struct ice_pf *pf)
 	return 0;
 }
 
+static int
+ice_dev_configure(struct rte_eth_dev *dev) {
+	struct ice_adapter *ad =
+		ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
+	struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
+	int ret;
+
+	/* Initialize to TRUE. If any of Rx queues doesn't meet the
+	 * bulk allocation or vector Rx preconditions we will reset it.
+	 */
+	ad->rx_bulk_alloc_allowed = true;
+	ad->tx_simple_allowed = true;
+
+	if (dev->data->dev_conf.rxmode.mq_mode & ETH_MQ_RX_RSS_FLAG)
+		dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_RSS_HASH;
+
+	ret = ice_init_rss(pf);
+	if (ret)
+		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
+
+	return ret;
+}
+
 static void
 __vsi_queues_bind_intr(struct ice_vsi *vsi, uint16_t msix_vect,
 		       int base_queue, int nb_queue)
@@ -2797,12 +2803,6 @@ ice_dev_start(struct rte_eth_dev *dev)
 		}
 	}
 
-	ret = ice_init_rss(pf);
-	if (ret) {
-		PMD_DRV_LOG(ERR, "Failed to enable rss for PF");
-		goto rx_err;
-	}
-
 	ice_set_rx_function(dev);
 	ice_set_tx_function(dev);
 
--
2.17.1


^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, back to index

Thread overview: 9+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-19  7:48 [dpdk-stable] [PATCH] net/ice: fix RSS advanced rule invalid issue Junyu Jiang
2020-03-26  2:00 ` Yang, Qiming
2020-03-26  6:35 ` [dpdk-stable] [PATCH v2] " Junyu Jiang
2020-03-26  6:57 ` Junyu Jiang
2020-03-26  8:57   ` Yang, Qiming
2020-04-01  6:29 ` [dpdk-stable] [PATCH v3] " Junyu Jiang
2020-04-01  8:26 ` [dpdk-stable] [PATCH v4] " Junyu Jiang
2020-04-01  9:03   ` Yang, Qiming
2020-04-02  2:53   ` [dpdk-stable] [dpdk-dev] " He, Zhiwei

patches for DPDK stable branches

Archives are clonable:
	git clone --mirror http://inbox.dpdk.org/stable/0 stable/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 stable stable/ http://inbox.dpdk.org/stable \
		stable@dpdk.org
	public-inbox-index stable


Newsgroup available over NNTP:
	nntp://inbox.dpdk.org/inbox.dpdk.stable


AGPL code for this site: git clone https://public-inbox.org/ public-inbox