net/i40e: fix RSS key pointer initialization error

Message ID 1542272240-24905-1-git-send-email-wei.zhao1@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Qi Zhang
Headers
Series net/i40e: fix RSS key pointer initialization error |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/mellanox-Performance-Testing success Performance Testing PASS
ci/intel-Performance-Testing success Performance Testing PASS

Commit Message

Zhao1, Wei Nov. 15, 2018, 8:57 a.m. UTC
  The assignment should be done after initialization,
or it will be zero.

Fixes: 264b23e3d2c1 ("net/i40e: add parameter check for RSS flow init")

Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
---
 drivers/net/i40e/i40e_ethdev.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)
  

Comments

Zhao1, Wei Nov. 15, 2018, 9:54 a.m. UTC | #1
Send on behalf of Peng, Yuan <yuan.peng@intel.com>

tested-by: Peng, Yuan <yuan.peng@intel.com>

- Tested Branch: master
- Tested Commit: 3e42b6ce06a1901b1ab631df4484ec8f548091c6
- OS: 4.5.5-300.fc24.x86_64
- GCC: gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
- CPU: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
- NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection [8086:10fb] (rev 01)
     Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572] (rev 01)
- Default x86_64-native-linuxapp-gcc configuration
- Prerequisites:
- Total 1 cases, 1 passed, 0 failed

- Case:
./usertools/dpdk-devbind.py -b igb_uio 05:00.0 05:00.1
./x86_64-native-linuxapp-gcc/app/testpmd -c 1ffff -n 4 - -i --nb-cores=8 --rxq=4 --txq=4 --port-topology=chained
testpmd> flow create 0 ingress pattern end actions rss types ipv4-udp end key 67108863 / end
Flow rule #0 created
testpmd> flow flush 0
testpmd> flow create 0 ingress pattern end actions rss types ipv4-udp end / end
Flow rule #0 created



> -----Original Message-----
> From: Zhao1, Wei
> Sent: Thursday, November 15, 2018 4:57 PM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Peng, Yuan <yuan.peng@intel.com>;
> Zhao1, Wei <wei.zhao1@intel.com>
> Subject: [PATCH] net/i40e: fix RSS key pointer initialization error
> 
> The assignment should be done after initialization, or it will be zero.
> 
> Fixes: 264b23e3d2c1 ("net/i40e: add parameter check for RSS flow init")
> 
> Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index 790ecc3..a96d407 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -12554,8 +12554,6 @@ i40e_rss_conf_init(struct i40e_rte_flow_rss_conf
> *out,
>  		return -EINVAL;
>  	if (!in->key && in->key_len)
>  		return -EINVAL;
> -	if (in->key)
> -		out->conf.key = memcpy(out->key, in->key, in->key_len);
>  	out->conf = (struct rte_flow_action_rss){
>  		.func = in->func,
>  		.level = in->level,
> @@ -12565,6 +12563,8 @@ i40e_rss_conf_init(struct i40e_rte_flow_rss_conf
> *out,
>  		.queue = memcpy(out->queue, in->queue,
>  				sizeof(*in->queue) * in->queue_num),
>  	};
> +	if (in->key)
> +		out->conf.key = memcpy(out->key, in->key, in->key_len);
>  	return 0;
>  }
> 
> --
> 2.7.5
  
Qi Zhang Nov. 15, 2018, 6:07 p.m. UTC | #2
> -----Original Message-----
> From: Zhao1, Wei
> Sent: Thursday, November 15, 2018 1:55 AM
> To: dev@dpdk.org
> Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Peng, Yuan <yuan.peng@intel.com>
> Subject: RE: [PATCH] net/i40e: fix RSS key pointer initialization error
> 
> Send on behalf of Peng, Yuan <yuan.peng@intel.com>
> 
> tested-by: Peng, Yuan <yuan.peng@intel.com>

Acked-by: Qi Zhang <qi.z.zhang@intel.com>

Applied to dpdk-next-net-intel.

Thanks
Qi

> 
> - Tested Branch: master
> - Tested Commit: 3e42b6ce06a1901b1ab631df4484ec8f548091c6
> - OS: 4.5.5-300.fc24.x86_64
> - GCC: gcc (GCC) 5.3.1 20151207 (Red Hat 5.3.1-2)
> - CPU: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz
> - NIC: Intel Corporation 82599ES 10-Gigabit SFI/SFP+ Network Connection
> [8086:10fb] (rev 01)
>      Intel Corporation Ethernet Controller X710 for 10GbE SFP+ [8086:1572]
> (rev 01)
> - Default x86_64-native-linuxapp-gcc configuration
> - Prerequisites:
> - Total 1 cases, 1 passed, 0 failed
> 
> - Case:
> ./usertools/dpdk-devbind.py -b igb_uio 05:00.0
> 05:00.1 ./x86_64-native-linuxapp-gcc/app/testpmd -c 1ffff -n 4 - -i
> --nb-cores=8 --rxq=4 --txq=4 --port-topology=chained
> testpmd> flow create 0 ingress pattern end actions rss types ipv4-udp
> testpmd> end key 67108863 / end
> Flow rule #0 created
> testpmd> flow flush 0
> testpmd> flow create 0 ingress pattern end actions rss types ipv4-udp
> testpmd> end / end
> Flow rule #0 created
> 
> 
> 
> > -----Original Message-----
> > From: Zhao1, Wei
> > Sent: Thursday, November 15, 2018 4:57 PM
> > To: dev@dpdk.org
> > Cc: Zhang, Qi Z <qi.z.zhang@intel.com>; Peng, Yuan
> > <yuan.peng@intel.com>; Zhao1, Wei <wei.zhao1@intel.com>
> > Subject: [PATCH] net/i40e: fix RSS key pointer initialization error
> >
> > The assignment should be done after initialization, or it will be zero.
> >
> > Fixes: 264b23e3d2c1 ("net/i40e: add parameter check for RSS flow
> > init")
> >
> > Signed-off-by: Wei Zhao <wei.zhao1@intel.com>
> > ---
> >  drivers/net/i40e/i40e_ethdev.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/net/i40e/i40e_ethdev.c
> > b/drivers/net/i40e/i40e_ethdev.c index 790ecc3..a96d407 100644
> > --- a/drivers/net/i40e/i40e_ethdev.c
> > +++ b/drivers/net/i40e/i40e_ethdev.c
> > @@ -12554,8 +12554,6 @@ i40e_rss_conf_init(struct
> > i40e_rte_flow_rss_conf *out,
> >  		return -EINVAL;
> >  	if (!in->key && in->key_len)
> >  		return -EINVAL;
> > -	if (in->key)
> > -		out->conf.key = memcpy(out->key, in->key, in->key_len);
> >  	out->conf = (struct rte_flow_action_rss){
> >  		.func = in->func,
> >  		.level = in->level,
> > @@ -12565,6 +12563,8 @@ i40e_rss_conf_init(struct
> > i40e_rte_flow_rss_conf *out,
> >  		.queue = memcpy(out->queue, in->queue,
> >  				sizeof(*in->queue) * in->queue_num),
> >  	};
> > +	if (in->key)
> > +		out->conf.key = memcpy(out->key, in->key, in->key_len);
> >  	return 0;
> >  }
> >
> > --
> > 2.7.5
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
index 790ecc3..a96d407 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -12554,8 +12554,6 @@  i40e_rss_conf_init(struct i40e_rte_flow_rss_conf *out,
 		return -EINVAL;
 	if (!in->key && in->key_len)
 		return -EINVAL;
-	if (in->key)
-		out->conf.key = memcpy(out->key, in->key, in->key_len);
 	out->conf = (struct rte_flow_action_rss){
 		.func = in->func,
 		.level = in->level,
@@ -12565,6 +12563,8 @@  i40e_rss_conf_init(struct i40e_rte_flow_rss_conf *out,
 		.queue = memcpy(out->queue, in->queue,
 				sizeof(*in->queue) * in->queue_num),
 	};
+	if (in->key)
+		out->conf.key = memcpy(out->key, in->key, in->key_len);
 	return 0;
 }