Message ID | 20240930160845.8520-5-paul@pbarker.dev (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | Extend GbEth checksum offload support to VLAN/IPv6 packets | expand |
On 9/30/24 19:08, Paul Barker wrote: > From: Paul Barker <paul.barker.ct@bp.renesas.com> > > We can merge the two if conditions on skb_is_nonlinear(). Since > skb_frag_size_sub() and skb_trim() do not free memory, it is still safe > to access the trimmed bytes at the end of the packet after these calls. > > Signed-off-by: Paul Barker <paul.barker.ct@bp.renesas.com> Reviewed-by: Sergey Shtylyov <s.shtylyov@omp.ru> [...] MBR, Sergey
diff --git a/drivers/net/ethernet/renesas/ravb_main.c b/drivers/net/ethernet/renesas/ravb_main.c index f3913c164161..1dd2152734b0 100644 --- a/drivers/net/ethernet/renesas/ravb_main.c +++ b/drivers/net/ethernet/renesas/ravb_main.c @@ -769,18 +769,15 @@ static void ravb_rx_csum_gbeth(struct sk_buff *skb) last_frag = &shinfo->frags[shinfo->nr_frags - 1]; hw_csum = skb_frag_address(last_frag) + skb_frag_size(last_frag); + skb_frag_size_sub(last_frag, 2 * sizeof(__sum16)); } else { hw_csum = skb_tail_pointer(skb); + skb_trim(skb, skb->len - 2 * sizeof(__sum16)); } hw_csum -= sizeof(__sum16); csum_proto = csum_unfold((__force __sum16)get_unaligned_le16(hw_csum)); - if (skb_is_nonlinear(skb)) - skb_frag_size_sub(last_frag, 2 * sizeof(__sum16)); - else - skb_trim(skb, skb->len - 2 * sizeof(__sum16)); - if (!csum_proto) skb->ip_summed = CHECKSUM_UNNECESSARY; }