ixgbe: Enable support for VF API version 1.1 in the PF.
authorAlexander Duyck <alexander.h.duyck@intel.com>
Fri, 20 Jul 2012 08:09:37 +0000 (08:09 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Tue, 23 Oct 2012 04:15:17 +0000 (21:15 -0700)
This change switches on the last few bits for us enabling version 1.1 VF
support in the PF.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Tested-by: Robert Garrett <RobertX.Garrett@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_sriov.c

index 8bf467b94d124297fccc1332505d26a5edd30032..96876b7442b12a0d85fc9c974043d5e2d1ad7a43 100644 (file)
@@ -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: