skb_checksum_help() can fail. Pass its return value back to the caller.

Commonize this software path in goto.

Reviewed-by: Aleksandr Loktionov <[email protected]>
Signed-off-by: Michal Swiatkowski <[email protected]>
---
 drivers/net/ethernet/intel/iavf/iavf_txrx.c | 17 ++++++++---------
 1 file changed, 8 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/intel/iavf/iavf_txrx.c 
b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
index ab46a49bb5e0..c5d4486c0396 100644
--- a/drivers/net/ethernet/intel/iavf/iavf_txrx.c
+++ b/drivers/net/ethernet/intel/iavf/iavf_txrx.c
@@ -1909,11 +1909,7 @@ static int iavf_tx_enable_csum(struct sk_buff *skb, u32 
*tx_flags,
                        l4.hdr = skb_inner_network_header(skb);
                        break;
                default:
-                       if (*tx_flags & IAVF_TX_FLAGS_TSO)
-                               return -1;
-
-                       skb_checksum_help(skb);
-                       return 0;
+                       goto checksum_sw_fb;
                }
 
                /* compute outer L3 header size */
@@ -1990,16 +1986,19 @@ static int iavf_tx_enable_csum(struct sk_buff *skb, u32 
*tx_flags,
                          IAVF_TX_DESC_LENGTH_L4_FC_LEN_SHIFT;
                break;
        default:
-               if (*tx_flags & IAVF_TX_FLAGS_TSO)
-                       return -1;
-               skb_checksum_help(skb);
-               return 0;
+               goto checksum_sw_fb;
        }
 
        *td_cmd |= cmd;
        *td_offset |= offset;
 
        return 1;
+
+checksum_sw_fb:
+       if (*tx_flags & IAVF_TX_FLAGS_TSO)
+               return -1;
+
+       return skb_checksum_help(skb);
 }
 
 /**
-- 
2.49.0

Reply via email to