Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

net: add sk_drops_skbadd() helper

Existing sk_drops_add() helper is renamed to sk_drops_skbadd().

Add sk_drops_add() and convert sk_drops_inc() to use it.

Signed-off-by: Eric Dumazet <edumazet@google.com>
Reviewed-by: Kuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250826125031.1578842-3-edumazet@google.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>

authored by

Eric Dumazet and committed by
Paolo Abeni
cb4d5a6e f86f42ed

+16 -11
+1 -1
include/linux/skmsg.h
··· 315 315 316 316 static inline void sock_drop(struct sock *sk, struct sk_buff *skb) 317 317 { 318 - sk_drops_add(sk, skb); 318 + sk_drops_skbadd(sk, skb); 319 319 kfree_skb(skb); 320 320 } 321 321
+8 -3
include/net/sock.h
··· 2682 2682 #define sock_skb_cb_check_size(size) \ 2683 2683 BUILD_BUG_ON((size) > SOCK_SKB_CB_OFFSET) 2684 2684 2685 + static inline void sk_drops_add(struct sock *sk, int segs) 2686 + { 2687 + atomic_add(segs, &sk->sk_drops); 2688 + } 2689 + 2685 2690 static inline void sk_drops_inc(struct sock *sk) 2686 2691 { 2687 - atomic_inc(&sk->sk_drops); 2692 + sk_drops_add(sk, 1); 2688 2693 } 2689 2694 2690 2695 static inline int sk_drops_read(const struct sock *sk) ··· 2709 2704 sk_drops_read(sk) : 0; 2710 2705 } 2711 2706 2712 - static inline void sk_drops_add(struct sock *sk, const struct sk_buff *skb) 2707 + static inline void sk_drops_skbadd(struct sock *sk, const struct sk_buff *skb) 2713 2708 { 2714 2709 int segs = max_t(u16, 1, skb_shinfo(skb)->gso_segs); 2715 2710 2716 - atomic_add(segs, &sk->sk_drops); 2711 + sk_drops_add(sk, segs); 2717 2712 } 2718 2713 2719 2714 static inline ktime_t sock_read_timestamp(struct sock *sk)
+1 -1
include/net/udp.h
··· 627 627 return segs; 628 628 629 629 drop: 630 - atomic_add(drop_count, &sk->sk_drops); 630 + sk_drops_add(sk, drop_count); 631 631 SNMP_ADD_STATS(__UDPX_MIB(sk, ipv4), UDP_MIB_INERRORS, drop_count); 632 632 kfree_skb(skb); 633 633 return NULL;
+1 -1
net/ipv4/tcp_input.c
··· 4830 4830 noinline_for_tracing static void 4831 4831 tcp_drop_reason(struct sock *sk, struct sk_buff *skb, enum skb_drop_reason reason) 4832 4832 { 4833 - sk_drops_add(sk, skb); 4833 + sk_drops_skbadd(sk, skb); 4834 4834 sk_skb_reason_drop(sk, skb, reason); 4835 4835 } 4836 4836
+2 -2
net/ipv4/tcp_ipv4.c
··· 2254 2254 &iph->saddr, &iph->daddr, 2255 2255 AF_INET, dif, sdif); 2256 2256 if (unlikely(drop_reason)) { 2257 - sk_drops_add(sk, skb); 2257 + sk_drops_skbadd(sk, skb); 2258 2258 reqsk_put(req); 2259 2259 goto discard_it; 2260 2260 } ··· 2399 2399 return 0; 2400 2400 2401 2401 discard_and_relse: 2402 - sk_drops_add(sk, skb); 2402 + sk_drops_skbadd(sk, skb); 2403 2403 if (refcounted) 2404 2404 sock_put(sk); 2405 2405 goto discard_it;
+2 -2
net/ipv6/tcp_ipv6.c
··· 1809 1809 &hdr->saddr, &hdr->daddr, 1810 1810 AF_INET6, dif, sdif); 1811 1811 if (drop_reason) { 1812 - sk_drops_add(sk, skb); 1812 + sk_drops_skbadd(sk, skb); 1813 1813 reqsk_put(req); 1814 1814 goto discard_it; 1815 1815 } ··· 1948 1948 return 0; 1949 1949 1950 1950 discard_and_relse: 1951 - sk_drops_add(sk, skb); 1951 + sk_drops_skbadd(sk, skb); 1952 1952 if (refcounted) 1953 1953 sock_put(sk); 1954 1954 goto discard_it;
+1 -1
net/mptcp/protocol.c
··· 137 137 138 138 static void mptcp_drop(struct sock *sk, struct sk_buff *skb) 139 139 { 140 - sk_drops_add(sk, skb); 140 + sk_drops_skbadd(sk, skb); 141 141 __kfree_skb(skb); 142 142 } 143 143