| Message ID | 20260512084729.1338557-5-michal.swiatkowski@linux.intel.com |
|---|---|
| State | Under Review |
| Delegated to: | Anthony Nguyen |
| Headers | show |
| Series | return value of skb_checksum_help() | expand |
> -----Original Message----- > From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of > Michal Swiatkowski > Sent: Tuesday, May 12, 2026 1:47 AM > To: intel-wired-lan@lists.osuosl.org > Cc: netdev@vger.kernel.org; Michal Swiatkowski > <michal.swiatkowski@linux.intel.com>; Loktionov, Aleksandr > <aleksandr.loktionov@intel.com> > Subject: [Intel-wired-lan] [PATCH iwl-next v2 4/4] idpf: 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> > --- > 2.49.0 Tested-by: Samuel Salin <Samuel.salin@intel.com>
diff --git a/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c index e3ddf18dcbf5..dde986706a37 100644 --- a/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c +++ b/drivers/net/ethernet/intel/idpf/idpf_singleq_txrx.c @@ -78,12 +78,7 @@ static int idpf_tx_singleq_csum(struct sk_buff *skb, l4.hdr = skb_inner_network_header(skb); break; default: - if (is_tso) - return -1; - - skb_checksum_help(skb); - - return 0; + goto checksum_sw_fb; } off->tx_flags |= IDPF_TX_FLAGS_TUNNEL; @@ -138,7 +133,7 @@ static int idpf_tx_singleq_csum(struct sk_buff *skb, sizeof(*ip.v6), &l4_proto, &frag_off); } else { - return -1; + goto checksum_sw_fb; } /* compute inner L3 header size */ @@ -163,12 +158,7 @@ static int idpf_tx_singleq_csum(struct sk_buff *skb, l4_len = sizeof(struct sctphdr) >> 2; break; default: - if (is_tso) - return -1; - - skb_checksum_help(skb); - - return 0; + goto checksum_sw_fb; } offset |= l4_len << IDPF_TX_DESC_LEN_L4_LEN_S; @@ -176,6 +166,12 @@ static int idpf_tx_singleq_csum(struct sk_buff *skb, off->hdr_offsets |= offset; return 1; + +checksum_sw_fb: + if (is_tso) + return -1; + + return skb_checksum_help(skb); } /**