Message ID | 1433449442-31420-6-git-send-email-catherine.sullivan@intel.com |
---|---|
State | Accepted |
Delegated to: | Jeff Kirsher |
Headers | show |
> -----Original Message----- > From: Intel-wired-lan [mailto:intel-wired-lan-bounces@lists.osuosl.org] On > Behalf Of Catherine Sullivan > Sent: Thursday, June 04, 2015 1:24 PM > To: intel-wired-lan@lists.osuosl.org > Subject: [Intel-wired-lan] [intel-wired-lan][net-next PATCH 5/8] i40evf: > support virtual channel API version 1.1 > > From: Mitch Williams <mitch.a.williams@intel.com> > > Store off the PF's API version, then use it to determine whether or not to > send it our capabilities. Change the version checking to allow for PF drivers > with lower API versions than our current version, so we can still talk to PF > drivers over the 1.0 API. > > Signed-off-by: Mitch Williams <mitch.a.williams@intel.com> > Change-ID: I8edc55d1229c7decf0ed3f285a63032694007c2e > --- > drivers/net/ethernet/intel/i40evf/i40evf_main.c | 6 ++++++ > drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c | 7 +++++-- > 2 files changed, 11 insertions(+), 2 deletions(-) > Tested-By: Jim young <james.m.young@intel.com> Actually not testable on net-next kernel as I cannot find a API 1.0 i40e driver that will build on the 4.1.0rc7 kernel (kcompat issues) This patch does not break current i40e driver operation so I am letting it pass.
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index e2b7bf6..0d0ad3d 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c @@ -2130,6 +2130,12 @@ static void i40evf_init_task(struct work_struct *work) if (err) { if (err == I40E_ERR_ADMIN_QUEUE_NO_WORK) err = i40evf_send_api_ver(adapter); + else + dev_err(&pdev->dev, "Unsupported PF API version %d.%d, expected %d.%d\n", + adapter->pf_version.major, + adapter->pf_version.minor, + I40E_VIRTCHNL_VERSION_MAJOR, + I40E_VIRTCHNL_VERSION_MINOR); goto err; } err = i40evf_send_vf_config_msg(adapter); diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c index a37d56b..52c6959 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_virtchnl.c @@ -125,8 +125,11 @@ int i40evf_verify_api_ver(struct i40evf_adapter *adapter) } pf_vvi = (struct i40e_virtchnl_version_info *)event.msg_buf; - if ((pf_vvi->major != I40E_VIRTCHNL_VERSION_MAJOR) || - (pf_vvi->minor != I40E_VIRTCHNL_VERSION_MINOR)) + adapter->pf_version = *pf_vvi; + + if ((pf_vvi->major > I40E_VIRTCHNL_VERSION_MAJOR) || + ((pf_vvi->major == I40E_VIRTCHNL_VERSION_MAJOR) && + (pf_vvi->minor > I40E_VIRTCHNL_VERSION_MINOR))) err = -EIO; out_alloc: