From a2884986b87f26719b14ea0a466fe7b79a7371fe Mon Sep 17 00:00:00 2001 From: Alexander Duyck Date: Fri, 20 Jul 2012 08:09:37 +0000 Subject: [PATCH] --- yaml --- r: 340451 b: refs/heads/master c: bffb3bc95895ee15ad90c66bfd387bc7342c1cee h: refs/heads/master i: 340449: 0f77b9e106dc8c2a932cbe00533360495d3fc397 340447: 4ca7ef594b8f5c7d85acbfa5763ffa585ed0514c v: v3 --- [refs] | 2 +- .../net/ethernet/intel/ixgbe/ixgbe_sriov.c | 29 ++++++++++++++----- 2 files changed, 22 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 34e792ebad83..a343f9db524d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: f591cd9def96f5219078594699bf691a6282f6b2 +refs/heads/master: bffb3bc95895ee15ad90c66bfd387bc7342c1cee diff --git a/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c b/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c index 8bf467b94d12..96876b7442b1 100644 --- a/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c +++ b/trunk/drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c @@ -371,14 +371,26 @@ static s32 ixgbe_set_vf_lpe(struct ixgbe_adapter *adapter, u32 *msgbuf, u32 vf) IXGBE_FCOE_JUMBO_FRAME_SIZE); #endif /* CONFIG_FCOE */ - /* - * If the PF or VF are running w/ jumbo frames enabled we - * need to shut down the VF Rx path as we cannot support - * jumbo frames on legacy VFs - */ - if ((pf_max_frame > ETH_FRAME_LEN) || - (max_frame > (ETH_FRAME_LEN + ETH_FCS_LEN))) - err = -EINVAL; + switch (adapter->vfinfo[vf].vf_api) { + case ixgbe_mbox_api_11: + /* + * Version 1.1 supports jumbo frames on VFs if PF has + * jumbo frames enabled which means legacy VFs are + * disabled + */ + if (pf_max_frame > ETH_FRAME_LEN) + break; + default: + /* + * If the PF or VF are running w/ jumbo frames enabled + * we need to shut down the VF Rx path as we cannot + * support jumbo frames on legacy VFs + */ + if ((pf_max_frame > ETH_FRAME_LEN) || + (max_frame > (ETH_FRAME_LEN + ETH_FCS_LEN))) + err = -EINVAL; + break; + } /* determine VF receive enable location */ vf_shift = vf % 32; @@ -740,6 +752,7 @@ static int ixgbe_negotiate_vf_api(struct ixgbe_adapter *adapter, switch (api) { case ixgbe_mbox_api_10: + case ixgbe_mbox_api_11: adapter->vfinfo[vf].vf_api = api; return 0; default: