diff options
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40evf_main.c')
-rw-r--r-- | drivers/net/ethernet/intel/i40evf/i40evf_main.c | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/drivers/net/ethernet/intel/i40evf/i40evf_main.c b/drivers/net/ethernet/intel/i40evf/i40evf_main.c index 41369a30dfb8..3396fe32cc6d 100644 --- a/drivers/net/ethernet/intel/i40evf/i40evf_main.c +++ b/drivers/net/ethernet/intel/i40evf/i40evf_main.c | |||
@@ -2337,9 +2337,24 @@ int i40evf_process_config(struct i40evf_adapter *adapter) | |||
2337 | NETIF_F_IPV6_CSUM | | 2337 | NETIF_F_IPV6_CSUM | |
2338 | NETIF_F_TSO | | 2338 | NETIF_F_TSO | |
2339 | NETIF_F_TSO6 | | 2339 | NETIF_F_TSO6 | |
2340 | NETIF_F_TSO_ECN | | ||
2341 | NETIF_F_GSO_GRE | | ||
2342 | NETIF_F_GSO_UDP_TUNNEL | | ||
2340 | NETIF_F_RXCSUM | | 2343 | NETIF_F_RXCSUM | |
2341 | NETIF_F_GRO; | 2344 | NETIF_F_GRO; |
2342 | 2345 | ||
2346 | netdev->hw_enc_features |= NETIF_F_IP_CSUM | | ||
2347 | NETIF_F_IPV6_CSUM | | ||
2348 | NETIF_F_TSO | | ||
2349 | NETIF_F_TSO6 | | ||
2350 | NETIF_F_TSO_ECN | | ||
2351 | NETIF_F_GSO_GRE | | ||
2352 | NETIF_F_GSO_UDP_TUNNEL | | ||
2353 | NETIF_F_GSO_UDP_TUNNEL_CSUM; | ||
2354 | |||
2355 | if (adapter->flags & I40EVF_FLAG_OUTER_UDP_CSUM_CAPABLE) | ||
2356 | netdev->features |= NETIF_F_GSO_UDP_TUNNEL_CSUM; | ||
2357 | |||
2343 | /* copy netdev features into list of user selectable features */ | 2358 | /* copy netdev features into list of user selectable features */ |
2344 | netdev->hw_features |= netdev->features; | 2359 | netdev->hw_features |= netdev->features; |
2345 | netdev->hw_features &= ~NETIF_F_RXCSUM; | 2360 | netdev->hw_features &= ~NETIF_F_RXCSUM; |
@@ -2478,6 +2493,10 @@ static void i40evf_init_task(struct work_struct *work) | |||
2478 | default: | 2493 | default: |
2479 | goto err_alloc; | 2494 | goto err_alloc; |
2480 | } | 2495 | } |
2496 | |||
2497 | if (hw->mac.type == I40E_MAC_X722_VF) | ||
2498 | adapter->flags |= I40EVF_FLAG_OUTER_UDP_CSUM_CAPABLE; | ||
2499 | |||
2481 | if (i40evf_process_config(adapter)) | 2500 | if (i40evf_process_config(adapter)) |
2482 | goto err_alloc; | 2501 | goto err_alloc; |
2483 | adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; | 2502 | adapter->current_op = I40E_VIRTCHNL_OP_UNKNOWN; |
@@ -2519,10 +2538,6 @@ static void i40evf_init_task(struct work_struct *work) | |||
2519 | goto err_sw_init; | 2538 | goto err_sw_init; |
2520 | i40evf_map_rings_to_vectors(adapter); | 2539 | i40evf_map_rings_to_vectors(adapter); |
2521 | if (adapter->vf_res->vf_offload_flags & | 2540 | if (adapter->vf_res->vf_offload_flags & |
2522 | I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) | ||
2523 | adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE; | ||
2524 | |||
2525 | if (adapter->vf_res->vf_offload_flags & | ||
2526 | I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) | 2541 | I40E_VIRTCHNL_VF_OFFLOAD_WB_ON_ITR) |
2527 | adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE; | 2542 | adapter->flags |= I40EVF_FLAG_WB_ON_ITR_CAPABLE; |
2528 | 2543 | ||