aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/intel/i40evf/i40evf_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/intel/i40evf/i40evf_main.c')
-rw-r--r--drivers/net/ethernet/intel/i40evf/i40evf_main.c23
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