]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/commitdiff
i40evf: Update feature flags to reflect newly enabled features
authorAlexander Duyck <aduyck@mirantis.com>
Mon, 25 Jan 2016 05:17:57 +0000 (21:17 -0800)
committerTim Gardner <tim.gardner@canonical.com>
Wed, 6 Apr 2016 09:20:51 +0000 (10:20 +0100)
BugLink: http://bugs.launchpad.net/bugs/1547674
Recent changes should have enabled support for IPv6 based tunnels and
support for TSO with outer UDP checksums.  As such we can update the
feature flags to reflect that.

In addition we can clean-up the flags that aren't needed such as SCTP and
RXCSUM since having the bits there doesn't add any value.

I also found one spot where we were setting the same flag twice.  It looks
like it was probably a git merge error that resulted in the line being
duplicated.  As such I have dropped it in this patch.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Acked-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
(cherry picked from net-next commit f608e6a60fc85e4f261daab5e7aac6225e2120d6)
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
drivers/net/ethernet/intel/i40evf/i40evf_main.c

index f1d912cfb3f7fe74f699f67c163ffa46b04ed4a5..06f0546ad106857973d093b39fba6bbd6a17e377 100644 (file)
@@ -2337,9 +2337,24 @@ int i40evf_process_config(struct i40evf_adapter *adapter)
                            NETIF_F_IPV6_CSUM |
                            NETIF_F_TSO |
                            NETIF_F_TSO6 |
+                           NETIF_F_TSO_ECN |
+                           NETIF_F_GSO_GRE            |
+                           NETIF_F_GSO_UDP_TUNNEL |
                            NETIF_F_RXCSUM |
                            NETIF_F_GRO;
 
+       netdev->hw_enc_features |= NETIF_F_IP_CSUM             |
+                                  NETIF_F_IPV6_CSUM           |
+                                  NETIF_F_TSO                 |
+                                  NETIF_F_TSO6                |
+                                  NETIF_F_TSO_ECN             |
+                                  NETIF_F_GSO_GRE             |
+                                  NETIF_F_GSO_UDP_TUNNEL      |
+                                  NETIF_F_GSO_UDP_TUNNEL_CSUM;
+
+       if (adapter->flags & I40EVF_FLAG_OUTER_UDP_CSUM_CAPABLE)
+               netdev->features |= NETIF_F_GSO_UDP_TUNNEL_CSUM;
+
        /* copy netdev features into list of user selectable features */
        netdev->hw_features |= netdev->features;
        netdev->hw_features &= ~NETIF_F_RXCSUM;
@@ -2478,6 +2493,10 @@ static void i40evf_init_task(struct work_struct *work)
        default:
                goto err_alloc;
        }
+
+       if (hw->mac.type == I40E_MAC_X722_VF)
+               adapter->flags |= I40EVF_FLAG_OUTER_UDP_CSUM_CAPABLE;
+
        if (i40evf_process_config(adapter))
                goto err_alloc;
        adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN;
@@ -2518,10 +2537,6 @@ static void i40evf_init_task(struct work_struct *work)
        if (err)
                goto err_sw_init;
        i40evf_map_rings_to_vectors(adapter);
-       if (adapter->vf_res->vf_offload_flags &
-                   I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
-               adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE;
-
        if (adapter->vf_res->vf_offload_flags &
            I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR)
                adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE;