[dpdk-dev,v2,27/32] net/i40e: change version number to support Linux VF

Message ID 1481081535-37448-28-git-send-email-wenzhuo.lu@intel.com (mailing list archive)
State Superseded, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
checkpatch/checkpatch success coding style OK

Commit Message

Wenzhuo Lu Dec. 7, 2016, 3:32 a.m. UTC
  i40e PF host only support to work with DPDK VF driver, Linux
VF driver is not supported. This change will enhance in version
number returned.

Current version info returned won't be able to be recognized
by Linux VF driver, change to values that both DPDK VF and Linux
driver can recognize.

The expense is original DPDK host specific feature like
CFG_VLAN_PVID and CONFIG_VSI_QUEUES_EXT will not available.

DPDK VF also can't identify host driver by version number returned.
It always assume talking with Linux PF.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
---
 drivers/net/i40e/i40e_pf.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)
  

Comments

Ferruh Yigit Dec. 7, 2016, 3:13 p.m. UTC | #1
On 12/7/2016 3:32 AM, Wenzhuo Lu wrote:
> i40e PF host only support to work with DPDK VF driver, Linux
> VF driver is not supported. This change will enhance in version
> number returned.
> 
> Current version info returned won't be able to be recognized
> by Linux VF driver, change to values that both DPDK VF and Linux
> driver can recognize.
> 
> The expense is original DPDK host specific feature like
> CFG_VLAN_PVID and CONFIG_VSI_QUEUES_EXT will not available.
> 
> DPDK VF also can't identify host driver by version number returned.
> It always assume talking with Linux PF.

I guess you mention from following code [1], should it be also updated
to prevent it giving wrong information:

[1] i40e_ethdev_vf.c
        if (vf->version_major == I40E_DPDK_VERSION_MAJOR)
                PMD_DRV_LOG(INFO, "Peer is DPDK PF host");
        else if ((vf->version_major == I40E_VIRTCHNL_VERSION_MAJOR) &&
                (vf->version_minor <= I40E_VIRTCHNL_VERSION_MINOR))
                PMD_DRV_LOG(INFO, "Peer is Linux PF host");
        else {

> 
> Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
> ---

<...>
  
Chen, Jing D Dec. 8, 2016, 9:14 a.m. UTC | #2
Hi, Ferruh,

> -----Original Message-----
> From: Yigit, Ferruh
> Sent: Wednesday, December 07, 2016 11:14 PM
> To: Lu, Wenzhuo <wenzhuo.lu@intel.com>; dev@dpdk.org
> Cc: Chen, Jing D <jing.d.chen@intel.com>
> Subject: Re: [dpdk-dev] [PATCH v2 27/32] net/i40e: change version number to
> support Linux VF
> 
> On 12/7/2016 3:32 AM, Wenzhuo Lu wrote:
> > i40e PF host only support to work with DPDK VF driver, Linux
> > VF driver is not supported. This change will enhance in version
> > number returned.
> >
> > Current version info returned won't be able to be recognized
> > by Linux VF driver, change to values that both DPDK VF and Linux
> > driver can recognize.
> >
> > The expense is original DPDK host specific feature like
> > CFG_VLAN_PVID and CONFIG_VSI_QUEUES_EXT will not available.
> >
> > DPDK VF also can't identify host driver by version number returned.
> > It always assume talking with Linux PF.
> 
> I guess you mention from following code [1], should it be also updated
> to prevent it giving wrong information:

I'd like to update it into some docs.

> 
> [1] i40e_ethdev_vf.c
>         if (vf->version_major == I40E_DPDK_VERSION_MAJOR)
>                 PMD_DRV_LOG(INFO, "Peer is DPDK PF host");
>         else if ((vf->version_major == I40E_VIRTCHNL_VERSION_MAJOR) &&
>                 (vf->version_minor <= I40E_VIRTCHNL_VERSION_MINOR))
>                 PMD_DRV_LOG(INFO, "Peer is Linux PF host");
>         else {
> 
> >
> > Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
> > ---
> 
> <...>
  

Patch

diff --git a/drivers/net/i40e/i40e_pf.c b/drivers/net/i40e/i40e_pf.c
index 2bc3355..0f582ed 100644
--- a/drivers/net/i40e/i40e_pf.c
+++ b/drivers/net/i40e/i40e_pf.c
@@ -279,8 +279,19 @@ 
 {
 	struct i40e_virtchnl_version_info info;
 
-	info.major = I40E_DPDK_VERSION_MAJOR;
-	info.minor = I40E_DPDK_VERSION_MINOR;
+	/* Respond like a Linux PF host in order to support both DPDK VF and
+	 * Linux VF driver. The expense is original DPDK host specific feature
+	 * like CFG_VLAN_PVID and CONFIG_VSI_QUEUES_EXT will not available.
+	 *
+	 * DPDK VF also can't identify host driver by version number returned.
+	 * It always assume talking with Linux PF.
+	 *
+	 * TODO:
+	 * Discuss with Linux driver maintainer if possible to carry more info
+	 * in this function to identify it's Linux or DPDK host.
+	 */
+	info.major = I40E_VIRTCHNL_VERSION_MAJOR;
+	info.minor = I40E_VIRTCHNL_VERSION_MINOR_NO_VF_CAPS;
 
 	if (b_op)
 		i40e_pf_host_send_msg_to_vf(vf, I40E_VIRTCHNL_OP_VERSION,