On Tue, 23 Jan 2024 15:19:23 +0000 Biju Das wrote: > +static void ravb_rx_csum_gbeth(struct sk_buff *skb) > +{ > + __sum16 csum_ip_hdr, csum_proto; > + u8 *hw_csum; > + > + /* The hardware checksum status is contained in sizeof(__sum16) * 2 = 4 > + * bytes appended to packet data. First 2 bytes is ip header csum and > + * last 2 bytes is protocol csum. > + */ > + if (unlikely(skb->len < sizeof(__sum16) * 2)) > + return; > + > + hw_csum = skb_tail_pointer(skb) - sizeof(__sum16); > + csum_proto = csum_unfold((__force __sum16)get_unaligned_le16(hw_csum)); > + > + hw_csum -= sizeof(__sum16); > + csum_ip_hdr = csum_unfold((__force __sum16)get_unaligned_le16(hw_csum)); > + skb_trim(skb, skb->len - 2 * sizeof(__sum16)); > + > + /* TODO: IPV6 Rx csum */ > + if (skb->protocol == htons(ETH_P_IP) && csum_ip_hdr == TOE_RX_CSUM_OK && > + csum_proto == TOE_RX_CSUM_OK) > + /* Hardware validated our checksum */ > + skb->ip_summed = CHECKSUM_UNNECESSARY; > +} sparse does not seem to be onboard: drivers/net/ethernet/renesas/ravb_main.c:771:20: warning: incorrect type in assignment (different base types) drivers/net/ethernet/renesas/ravb_main.c:771:20: expected restricted __sum16 [usertype] csum_proto drivers/net/ethernet/renesas/ravb_main.c:771:20: got restricted __wsum drivers/net/ethernet/renesas/ravb_main.c:774:21: warning: incorrect type in assignment (different base types) drivers/net/ethernet/renesas/ravb_main.c:774:21: expected restricted __sum16 [usertype] csum_ip_hdr drivers/net/ethernet/renesas/ravb_main.c:774:21: got restricted __wsum -- pw-bot: cr