mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-14 10:26:45 +07:00
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: Alexander Duyck <aduyck@mirantis.com> Tested-by: Andrew Bowers <andrewx.bowers@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
This commit is contained in:
parent
529f1f652e
commit
fad57330b6
@ -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,
|
|||||||
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,
|
|||||||
* 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,
|
|||||||
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,
|
|||||||
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,
|
|||||||
* 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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user