mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
ice: pass the return value of skb_checksum_help()
skb_checksum_help() can fail. Pass its return value back to the caller. Commonize this software path in goto. Instead of just returning error try calculating software checksum first. There is a check for TSO in checksum_sw_fb. Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com> Signed-off-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com> Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel) Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com> Link: https://patch.msgid.link/20260717185340.3595286-4-anthony.l.nguyen@intel.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
99d0f42b0e
commit
2d19302f62
|
|
@ -1654,7 +1654,7 @@ int ice_tx_csum(struct ice_tx_buf *first, struct ice_tx_offload_params *off)
|
|||
ret = ipv6_skip_exthdr(skb, exthdr - skb->data,
|
||||
&l4_proto, &frag_off);
|
||||
if (ret < 0)
|
||||
return -1;
|
||||
goto checksum_sw_fb;
|
||||
}
|
||||
|
||||
/* define outer transport */
|
||||
|
|
@ -1673,11 +1673,7 @@ int ice_tx_csum(struct ice_tx_buf *first, struct ice_tx_offload_params *off)
|
|||
l4.hdr = skb_inner_network_header(skb);
|
||||
break;
|
||||
default:
|
||||
if (first->tx_flags & ICE_TX_FLAGS_TSO)
|
||||
return -1;
|
||||
|
||||
skb_checksum_help(skb);
|
||||
return 0;
|
||||
goto checksum_sw_fb;
|
||||
}
|
||||
|
||||
/* compute outer L3 header size */
|
||||
|
|
@ -1736,7 +1732,7 @@ int ice_tx_csum(struct ice_tx_buf *first, struct ice_tx_offload_params *off)
|
|||
ipv6_skip_exthdr(skb, exthdr - skb->data, &l4_proto,
|
||||
&frag_off);
|
||||
} else {
|
||||
return -1;
|
||||
goto checksum_sw_fb;
|
||||
}
|
||||
|
||||
/* compute inner L3 header size */
|
||||
|
|
@ -1789,15 +1785,17 @@ int ice_tx_csum(struct ice_tx_buf *first, struct ice_tx_offload_params *off)
|
|||
break;
|
||||
|
||||
default:
|
||||
if (first->tx_flags & ICE_TX_FLAGS_TSO)
|
||||
return -1;
|
||||
skb_checksum_help(skb);
|
||||
return 0;
|
||||
goto checksum_sw_fb;
|
||||
}
|
||||
|
||||
off->td_cmd |= cmd;
|
||||
off->td_offset |= offset;
|
||||
return 1;
|
||||
|
||||
checksum_sw_fb:
|
||||
if (first->tx_flags & ICE_TX_FLAGS_TSO)
|
||||
return -1;
|
||||
return skb_checksum_help(skb);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user