Commit fad57330 authored by Alexander Duyck's avatar Alexander Duyck Committed by Jeff Kirsher

i40e/i40evf: Clean-up Rx packet checksum handling

This is mostly a minor clean-up for the Rx checksum path in order to avoid
some of the unnecessary conditional checks that were being applied.
Signed-off-by: default avatarAlexander Duyck <aduyck@mirantis.com>
Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
parent 529f1f65
...@@ -1389,13 +1389,7 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -1389,13 +1389,7 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
u16 rx_ptype) u16 rx_ptype)
{ {
struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(rx_ptype); struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(rx_ptype);
bool ipv4 = false, ipv6 = false; bool ipv4, ipv6, ipv4_tunnel, ipv6_tunnel;
bool ipv4_tunnel, ipv6_tunnel;
ipv4_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
ipv6_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
skb->ip_summed = CHECKSUM_NONE; skb->ip_summed = CHECKSUM_NONE;
...@@ -1411,12 +1405,10 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -1411,12 +1405,10 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
if (!(decoded.known && decoded.outer_ip)) if (!(decoded.known && decoded.outer_ip))
return; return;
if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && ipv4 = (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP) &&
decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV4) (decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV4);
ipv4 = true; ipv6 = (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP) &&
else if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && (decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV6);
decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV6)
ipv6 = true;
if (ipv4 && if (ipv4 &&
(rx_error & (BIT(I40E_RX_DESC_ERROR_IPE_SHIFT) | (rx_error & (BIT(I40E_RX_DESC_ERROR_IPE_SHIFT) |
...@@ -1447,6 +1439,11 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -1447,6 +1439,11 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
* inner checksum report CHECKSUM_UNNECESSARY. * inner checksum report CHECKSUM_UNNECESSARY.
*/ */
ipv4_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
ipv6_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY;
skb->csum_level = ipv4_tunnel || ipv6_tunnel; skb->csum_level = ipv4_tunnel || ipv6_tunnel;
......
...@@ -861,13 +861,7 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -861,13 +861,7 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
u16 rx_ptype) u16 rx_ptype)
{ {
struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(rx_ptype); struct i40e_rx_ptype_decoded decoded = decode_rx_desc_ptype(rx_ptype);
bool ipv4 = false, ipv6 = false; bool ipv4, ipv6, ipv4_tunnel, ipv6_tunnel;
bool ipv4_tunnel, ipv6_tunnel;
ipv4_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
ipv6_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
skb->ip_summed = CHECKSUM_NONE; skb->ip_summed = CHECKSUM_NONE;
...@@ -883,12 +877,10 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -883,12 +877,10 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
if (!(decoded.known && decoded.outer_ip)) if (!(decoded.known && decoded.outer_ip))
return; return;
if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && ipv4 = (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP) &&
decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV4) (decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV4);
ipv4 = true; ipv6 = (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP) &&
else if (decoded.outer_ip == I40E_RX_PTYPE_OUTER_IP && (decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV6);
decoded.outer_ip_ver == I40E_RX_PTYPE_OUTER_IPV6)
ipv6 = true;
if (ipv4 && if (ipv4 &&
(rx_error & (BIT(I40E_RX_DESC_ERROR_IPE_SHIFT) | (rx_error & (BIT(I40E_RX_DESC_ERROR_IPE_SHIFT) |
...@@ -919,6 +911,11 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi, ...@@ -919,6 +911,11 @@ static inline void i40e_rx_checksum(struct i40e_vsi *vsi,
* inner checksum report CHECKSUM_UNNECESSARY. * inner checksum report CHECKSUM_UNNECESSARY.
*/ */
ipv4_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT4_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT4_MACVLAN_IPV6_ICMP_PAY4);
ipv6_tunnel = (rx_ptype >= I40E_RX_PTYPE_GRENAT6_MAC_PAY3) &&
(rx_ptype <= I40E_RX_PTYPE_GRENAT6_MACVLAN_IPV6_ICMP_PAY4);
skb->ip_summed = CHECKSUM_UNNECESSARY; skb->ip_summed = CHECKSUM_UNNECESSARY;
skb->csum_level = ipv4_tunnel || ipv6_tunnel; skb->csum_level = ipv4_tunnel || ipv6_tunnel;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment