[dpdk-dev] net/i40e: fix assignment of enum values

Message ID 20170922123625.4896-1-michalx.k.jastrzebski@intel.com (mailing list archive)
State Accepted, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

Michal Jastrzebski Sept. 22, 2017, 12:36 p.m. UTC
  From: Tomasz Kulasek <tomaszx.kulasek@intel.com>

mixed_enums: Mixing enum types enum i40e_vsi_type and enum
             virtchnl_vsi_type for type

Coverity issue 158651
Fixes: a58860f68929 ("net/i40e/base: use new virtchnl header file")
Cc: jingjing.wu@intel.com
Cc: stable@dpdk.org

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
---
 drivers/net/i40e/i40e_ethdev_vf.c | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
  

Comments

Ferruh Yigit Sept. 22, 2017, 4:48 p.m. UTC | #1
On 9/22/2017 1:36 PM, Michal Jastrzebski wrote:
> From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> 
> mixed_enums: Mixing enum types enum i40e_vsi_type and enum
>              virtchnl_vsi_type for type
> 
> Coverity issue 158651
> Fixes: a58860f68929 ("net/i40e/base: use new virtchnl header file")
> Cc: jingjing.wu@intel.com
> Cc: stable@dpdk.org
> 
> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
> ---
>  drivers/net/i40e/i40e_ethdev_vf.c | 10 +++++++++-
>  1 file changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
> index 73c315a..a8d2740 100644
> --- a/drivers/net/i40e/i40e_ethdev_vf.c
> +++ b/drivers/net/i40e/i40e_ethdev_vf.c
> @@ -1295,7 +1295,15 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev,
>  	if (hw->mac.type == I40E_MAC_X722_VF)
>  		vf->flags = I40E_FLAG_RSS_AQ_CAPABLE;
>  	vf->vsi.vsi_id = vf->vsi_res->vsi_id;
> -	vf->vsi.type = (enum i40e_vsi_type)vf->vsi_res->vsi_type;
> +
> +	switch (vf->vsi_res->vsi_type) {
> +	case VIRTCHNL_VSI_SRIOV:
> +		vf->vsi.type = I40E_VSI_SRIOV;
> +		break;
> +	default:
> +		vf->vsi.type = I40E_VSI_TYPE_UNKNOWN;

This changes the behavior.

Previously:
vsi_type == VIRTCHNL_VSI_TYPE_INVALID ?  type = I40E_VSI_MAIN

Now:
vsi_type == VIRTCHNL_VSI_TYPE_INVALID ?  type = I40E_VSI_TYPE_UNKNOWN

> +		break;
> +	}
>  	vf->vsi.nb_qps = vf->vsi_res->num_queue_pairs;
>  	vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
>  
>
  
Jingjing Wu Sept. 23, 2017, 2:05 a.m. UTC | #2
> -----Original Message-----

> From: Yigit, Ferruh

> Sent: Saturday, September 23, 2017 12:48 AM

> To: Jastrzebski, MichalX K <michalx.k.jastrzebski@intel.com>; Wu, Jingjing

> <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>

> Cc: dev@dpdk.org; Jain, Deepak K <deepak.k.jain@intel.com>; Kulasek, TomaszX

> <tomaszx.kulasek@intel.com>; stable@dpdk.org

> Subject: Re: [dpdk-stable] [PATCH] net/i40e: fix assignment of enum values

> 

> On 9/22/2017 1:36 PM, Michal Jastrzebski wrote:

> > From: Tomasz Kulasek <tomaszx.kulasek@intel.com>

> >

> > mixed_enums: Mixing enum types enum i40e_vsi_type and enum

> >              virtchnl_vsi_type for type

> >

> > Coverity issue 158651

> > Fixes: a58860f68929 ("net/i40e/base: use new virtchnl header file")

> > Cc: jingjing.wu@intel.com

> > Cc: stable@dpdk.org

> >

> > Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>

> > ---

> >  drivers/net/i40e/i40e_ethdev_vf.c | 10 +++++++++-

> >  1 file changed, 9 insertions(+), 1 deletion(-)

> >

> > diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c

> > index 73c315a..a8d2740 100644

> > --- a/drivers/net/i40e/i40e_ethdev_vf.c

> > +++ b/drivers/net/i40e/i40e_ethdev_vf.c

> > @@ -1295,7 +1295,15 @@ static int i40evf_dev_xstats_get(struct rte_eth_dev *dev,

> >  	if (hw->mac.type == I40E_MAC_X722_VF)

> >  		vf->flags = I40E_FLAG_RSS_AQ_CAPABLE;

> >  	vf->vsi.vsi_id = vf->vsi_res->vsi_id;

> > -	vf->vsi.type = (enum i40e_vsi_type)vf->vsi_res->vsi_type;

> > +

> > +	switch (vf->vsi_res->vsi_type) {

> > +	case VIRTCHNL_VSI_SRIOV:

> > +		vf->vsi.type = I40E_VSI_SRIOV;

> > +		break;

> > +	default:

> > +		vf->vsi.type = I40E_VSI_TYPE_UNKNOWN;

> 

> This changes the behavior.

> 

> Previously:

> vsi_type == VIRTCHNL_VSI_TYPE_INVALID ?  type = I40E_VSI_MAIN

> 

> Now:

> vsi_type == VIRTCHNL_VSI_TYPE_INVALID ?  type = I40E_VSI_TYPE_UNKNOWN


For vsi_type in VF, only SRIOV type is valid. 
I40E_VSI_MAIN is used for PF Lan vsi, even it doesn't cause error, but 
we need to translate it to correct meaning.

Acked-by: Jingjing Wu <jingjing.wu@intel.com>
  
Ferruh Yigit Sept. 25, 2017, 1:08 p.m. UTC | #3
On 9/23/2017 3:05 AM, Wu, Jingjing wrote:
> 
> 
>> -----Original Message-----
>> From: Yigit, Ferruh
>> Sent: Saturday, September 23, 2017 12:48 AM
>> To: Jastrzebski, MichalX K <michalx.k.jastrzebski@intel.com>; Wu, Jingjing
>> <jingjing.wu@intel.com>; Xing, Beilei <beilei.xing@intel.com>
>> Cc: dev@dpdk.org; Jain, Deepak K <deepak.k.jain@intel.com>; Kulasek, TomaszX
>> <tomaszx.kulasek@intel.com>; stable@dpdk.org
>> Subject: Re: [dpdk-stable] [PATCH] net/i40e: fix assignment of enum values
>>
>> On 9/22/2017 1:36 PM, Michal Jastrzebski wrote:
>>> From: Tomasz Kulasek <tomaszx.kulasek@intel.com>
>>>
>>> mixed_enums: Mixing enum types enum i40e_vsi_type and enum
>>>              virtchnl_vsi_type for type
>>>
>>> Coverity issue 158651
>>> Fixes: a58860f68929 ("net/i40e/base: use new virtchnl header file")
>>> Cc: jingjing.wu@intel.com
>>> Cc: stable@dpdk.org
>>>
>>> Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>

> Acked-by: Jingjing Wu <jingjing.wu@intel.com> 

Applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 73c315a..a8d2740 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -1295,7 +1295,15 @@  static int i40evf_dev_xstats_get(struct rte_eth_dev *dev,
 	if (hw->mac.type == I40E_MAC_X722_VF)
 		vf->flags = I40E_FLAG_RSS_AQ_CAPABLE;
 	vf->vsi.vsi_id = vf->vsi_res->vsi_id;
-	vf->vsi.type = (enum i40e_vsi_type)vf->vsi_res->vsi_type;
+
+	switch (vf->vsi_res->vsi_type) {
+	case VIRTCHNL_VSI_SRIOV:
+		vf->vsi.type = I40E_VSI_SRIOV;
+		break;
+	default:
+		vf->vsi.type = I40E_VSI_TYPE_UNKNOWN;
+		break;
+	}
 	vf->vsi.nb_qps = vf->vsi_res->num_queue_pairs;
 	vf->vsi.adapter = I40E_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);