Commit cb4d5a6e authored by Eric Dumazet's avatar Eric Dumazet Committed by Paolo Abeni
Browse files

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: default avatarEric Dumazet <edumazet@google.com>
Reviewed-by: default avatarKuniyuki Iwashima <kuniyu@google.com>
Link: https://patch.msgid.link/20250826125031.1578842-3-edumazet@google.com


Signed-off-by: default avatarPaolo Abeni <pabeni@redhat.com>
parent f86f42ed
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -315,7 +315,7 @@ static inline bool sk_psock_test_state(const struct sk_psock *psock,

static inline void sock_drop(struct sock *sk, struct sk_buff *skb)
{
	sk_drops_add(sk, skb);
	sk_drops_skbadd(sk, skb);
	kfree_skb(skb);
}

+8 −3
Original line number Diff line number Diff line
@@ -2682,9 +2682,14 @@ struct sock_skb_cb {
#define sock_skb_cb_check_size(size) \
	BUILD_BUG_ON((size) > SOCK_SKB_CB_OFFSET)

static inline void sk_drops_add(struct sock *sk, int segs)
{
	atomic_add(segs, &sk->sk_drops);
}

static inline void sk_drops_inc(struct sock *sk)
{
	atomic_inc(&sk->sk_drops);
	sk_drops_add(sk, 1);
}

static inline int sk_drops_read(const struct sock *sk)
@@ -2704,11 +2709,11 @@ sock_skb_set_dropcount(const struct sock *sk, struct sk_buff *skb)
						sk_drops_read(sk) : 0;
}

static inline void sk_drops_add(struct sock *sk, const struct sk_buff *skb)
static inline void sk_drops_skbadd(struct sock *sk, const struct sk_buff *skb)
{
	int segs = max_t(u16, 1, skb_shinfo(skb)->gso_segs);

	atomic_add(segs, &sk->sk_drops);
	sk_drops_add(sk, segs);
}

static inline ktime_t sock_read_timestamp(struct sock *sk)
+1 −1
Original line number Diff line number Diff line
@@ -627,7 +627,7 @@ static inline struct sk_buff *udp_rcv_segment(struct sock *sk,
	return segs;

drop:
	atomic_add(drop_count, &sk->sk_drops);
	sk_drops_add(sk, drop_count);
	SNMP_ADD_STATS(__UDPX_MIB(sk, ipv4), UDP_MIB_INERRORS, drop_count);
	kfree_skb(skb);
	return NULL;
+1 −1
Original line number Diff line number Diff line
@@ -4830,7 +4830,7 @@ static bool tcp_ooo_try_coalesce(struct sock *sk,
noinline_for_tracing static void
tcp_drop_reason(struct sock *sk, struct sk_buff *skb, enum skb_drop_reason reason)
{
	sk_drops_add(sk, skb);
	sk_drops_skbadd(sk, skb);
	sk_skb_reason_drop(sk, skb, reason);
}

+2 −2
Original line number Diff line number Diff line
@@ -2254,7 +2254,7 @@ int tcp_v4_rcv(struct sk_buff *skb)
						       &iph->saddr, &iph->daddr,
						       AF_INET, dif, sdif);
		if (unlikely(drop_reason)) {
			sk_drops_add(sk, skb);
			sk_drops_skbadd(sk, skb);
			reqsk_put(req);
			goto discard_it;
		}
@@ -2399,7 +2399,7 @@ int tcp_v4_rcv(struct sk_buff *skb)
	return 0;

discard_and_relse:
	sk_drops_add(sk, skb);
	sk_drops_skbadd(sk, skb);
	if (refcounted)
		sock_put(sk);
	goto discard_it;
Loading