netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path
@ 2024-02-13 14:05 Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in " Jason Xing
                   ` (6 more replies)
  0 siblings, 7 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

As title said, we're going to refine the NOT_SPECIFIED reason in the
tcp v4/6 receive fast path.

This serie is another one of the v2 patchset[1] which are here split
into six patches. Besides, this patch is made on top of the previous
serie[2] I submitted some time ago.

[1]
Link: https://lore.kernel.org/all/20240209061213.72152-3-kerneljasonxing@gmail.com/
[2]
Link: https://lore.kernel.org/all/20240212052513.37914-1-kerneljasonxing@gmail.com/

v4:
Link: https://lore.kernel.org/netdev/CANn89iJar+H3XkQ8HpsirH7b-_sbFe9NBUdAAO3pNJK3CKr_bg@mail.gmail.com/
Link: https://lore.kernel.org/netdev/20240213131205.4309-1-kerneljasonxing@gmail.com/
Already got rid of @acceptable in tcp_rcv_state_process(), so I need to
remove *TCP_CONNREQNOTACCEPTABLE related codes which I wrote in the v3
series.

v3:
Link: https://lore.kernel.org/all/CANn89iK40SoyJ8fS2U5kp3pDruo=zfQNPL-ppOF+LYaS9z-MVA@mail.gmail.com/
1. Split that patch into some smaller ones as suggested by Eric.

v2:
Link: https://lore.kernel.org/all/20240204104601.55760-1-kerneljasonxing@gmail.com/
1. change the title of 2/2 patch.
2. fix some warnings checkpatch tool showed before.
3. use return value instead of adding more parameters suggested by Eric.
Jason Xing (6):
  tcp: introduce another three dropreasons in receive path
  tcp: add more specific possible drop reasons in
    tcp_rcv_synsent_state_process()
  tcp: add dropreasons in tcp_rcv_state_process()
  tcp: make the dropreason really work when calling
    tcp_rcv_state_process()
  tcp: make dropreason in tcp_child_process() work
  tcp: get rid of NOT_SEPCIFIED reason in tcp_v4/6_do_rcv

 include/net/dropreason-core.h | 15 ++++++++++++++-
 include/net/tcp.h             |  4 ++--
 net/ipv4/tcp_input.c          | 25 +++++++++++++++++--------
 net/ipv4/tcp_ipv4.c           | 20 ++++++++++++--------
 net/ipv4/tcp_minisocks.c      |  9 +++++----
 net/ipv6/tcp_ipv6.c           | 20 ++++++++++++--------
 6 files changed, 62 insertions(+), 31 deletions(-)

-- 
2.37.3


^ permalink raw reply	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in receive path
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-13 15:49   ` David Ahern
  2024-02-13 14:05 ` [PATCH net-next v4 2/6] tcp: add more specific possible drop reasons in tcp_rcv_synsent_state_process() Jason Xing
                   ` (5 subsequent siblings)
  6 siblings, 1 reply; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

Soon later patches can use these relatively more accurate
reasons to recognise and find out the cause.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 include/net/dropreason-core.h | 15 ++++++++++++++-
 1 file changed, 14 insertions(+), 1 deletion(-)

diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
index 065caba42b0b..19ba900eae0e 100644
--- a/include/net/dropreason-core.h
+++ b/include/net/dropreason-core.h
@@ -31,6 +31,7 @@
 	FN(TCP_AOFAILURE)		\
 	FN(SOCKET_BACKLOG)		\
 	FN(TCP_FLAGS)			\
+	FN(TCP_ABORTONDATA)			\
 	FN(TCP_ZEROWINDOW)		\
 	FN(TCP_OLD_DATA)		\
 	FN(TCP_OVERWINDOW)		\
@@ -38,6 +39,7 @@
 	FN(TCP_RFC7323_PAWS)		\
 	FN(TCP_OLD_SEQUENCE)		\
 	FN(TCP_INVALID_SEQUENCE)	\
+	FN(TCP_INVALID_ACK_SEQUENCE)	\
 	FN(TCP_RESET)			\
 	FN(TCP_INVALID_SYN)		\
 	FN(TCP_CLOSE)			\
@@ -207,6 +209,11 @@ enum skb_drop_reason {
 	SKB_DROP_REASON_SOCKET_BACKLOG,
 	/** @SKB_DROP_REASON_TCP_FLAGS: TCP flags invalid */
 	SKB_DROP_REASON_TCP_FLAGS,
+	/**
+	 * @SKB_DROP_REASON_TCP_ABORTONDATA: abort on data, corresponding to
+	 * LINUX_MIB_TCPABORTONDATA
+	 */
+	SKB_DROP_REASON_TCP_ABORTONDATA,
 	/**
 	 * @SKB_DROP_REASON_TCP_ZEROWINDOW: TCP receive window size is zero,
 	 * see LINUX_MIB_TCPZEROWINDOWDROP
@@ -231,13 +238,19 @@ enum skb_drop_reason {
 	SKB_DROP_REASON_TCP_OFOMERGE,
 	/**
 	 * @SKB_DROP_REASON_TCP_RFC7323_PAWS: PAWS check, corresponding to
-	 * LINUX_MIB_PAWSESTABREJECTED
+	 * LINUX_MIB_PAWSESTABREJECTED, LINUX_MIB_PAWSACTIVEREJECTED
 	 */
 	SKB_DROP_REASON_TCP_RFC7323_PAWS,
 	/** @SKB_DROP_REASON_TCP_OLD_SEQUENCE: Old SEQ field (duplicate packet) */
 	SKB_DROP_REASON_TCP_OLD_SEQUENCE,
 	/** @SKB_DROP_REASON_TCP_INVALID_SEQUENCE: Not acceptable SEQ field */
 	SKB_DROP_REASON_TCP_INVALID_SEQUENCE,
+	/**
+	 * @SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE: Not acceptable ACK SEQ
+	 * field. because of ack sequence is not in the window between snd_una
+	 * and snd_nxt
+	 */
+	SKB_DROP_REASON_TCP_INVALID_ACK_SEQUENCE,
 	/** @SKB_DROP_REASON_TCP_RESET: Invalid RST packet */
 	SKB_DROP_REASON_TCP_RESET,
 	/**
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 2/6] tcp: add more specific possible drop reasons in tcp_rcv_synsent_state_process()
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in " Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 3/6] tcp: add dropreasons in tcp_rcv_state_process() Jason Xing
                   ` (4 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

This patch does two things:
1) add two more new reasons
2) only change the return value(1) to various drop reason values
for the future use

For now, we still cannot trace those two reasons. We'll implement the full
function in the subsequent patch in this serie.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 net/ipv4/tcp_input.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index b1c4462a0798..43194918ab45 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -6361,6 +6361,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
 				inet_csk_reset_xmit_timer(sk,
 						ICSK_TIME_RETRANS,
 						TCP_TIMEOUT_MIN, TCP_RTO_MAX);
+			SKB_DR_SET(reason, TCP_INVALID_ACK_SEQUENCE);
 			goto reset_and_undo;
 		}
 
@@ -6369,6 +6370,7 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
 			     tcp_time_stamp_ts(tp))) {
 			NET_INC_STATS(sock_net(sk),
 					LINUX_MIB_PAWSACTIVEREJECTED);
+			SKB_DR_SET(reason, TCP_RFC7323_PAWS);
 			goto reset_and_undo;
 		}
 
@@ -6572,7 +6574,8 @@ static int tcp_rcv_synsent_state_process(struct sock *sk, struct sk_buff *skb,
 reset_and_undo:
 	tcp_clear_options(&tp->rx_opt);
 	tp->rx_opt.mss_clamp = saved_clamp;
-	return 1;
+	/* we can reuse/return @reason to its caller to handle the exception */
+	return reason;
 }
 
 static void tcp_rcv_synrecv_state_fastopen(struct sock *sk)
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 3/6] tcp: add dropreasons in tcp_rcv_state_process()
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in " Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 2/6] tcp: add more specific possible drop reasons in tcp_rcv_synsent_state_process() Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 4/6] tcp: make the dropreason really work when calling tcp_rcv_state_process() Jason Xing
                   ` (3 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

In this patch, I equipped this function with more dropreasons, but
it still doesn't work yet, which I will do later.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 include/net/tcp.h    |  2 +-
 net/ipv4/tcp_input.c | 20 +++++++++++++-------
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index 58e65af74ad1..e5af9a5b411b 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -348,7 +348,7 @@ void tcp_wfree(struct sk_buff *skb);
 void tcp_write_timer_handler(struct sock *sk);
 void tcp_delack_timer_handler(struct sock *sk);
 int tcp_ioctl(struct sock *sk, int cmd, int *karg);
-int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb);
+enum skb_drop_reason tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb);
 void tcp_rcv_established(struct sock *sk, struct sk_buff *skb);
 void tcp_rcv_space_adjust(struct sock *sk);
 int tcp_twsk_unique(struct sock *sk, struct sock *sktw, void *twp);
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 43194918ab45..4bb0ec22538c 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -6619,7 +6619,8 @@ static void tcp_rcv_synrecv_state_fastopen(struct sock *sk)
  *	address independent.
  */
 
-int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
+enum skb_drop_reason
+tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 {
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct inet_connection_sock *icsk = inet_csk(sk);
@@ -6635,7 +6636,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 
 	case TCP_LISTEN:
 		if (th->ack)
-			return 1;
+			return SKB_DROP_REASON_TCP_FLAGS;
 
 		if (th->rst) {
 			SKB_DR_SET(reason, TCP_RESET);
@@ -6704,8 +6705,13 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 				  FLAG_NO_CHALLENGE_ACK);
 
 	if ((int)reason <= 0) {
-		if (sk->sk_state == TCP_SYN_RECV)
-			return 1;	/* send one RST */
+		if (sk->sk_state == TCP_SYN_RECV) {
+			/* send one RST */
+			if (!reason)
+				return SKB_DROP_REASON_TCP_OLD_ACK;
+			else
+				return -reason;
+		}
 		/* accept old ack during closing */
 		if ((int)reason < 0) {
 			tcp_send_challenge_ack(sk);
@@ -6781,7 +6787,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 		if (READ_ONCE(tp->linger2) < 0) {
 			tcp_done(sk);
 			NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
-			return 1;
+			return SKB_DROP_REASON_TCP_ABORTONDATA;
 		}
 		if (TCP_SKB_CB(skb)->end_seq != TCP_SKB_CB(skb)->seq &&
 		    after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt)) {
@@ -6790,7 +6796,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 				tcp_fastopen_active_disable(sk);
 			tcp_done(sk);
 			NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
-			return 1;
+			return SKB_DROP_REASON_TCP_ABORTONDATA;
 		}
 
 		tmo = tcp_fin_time(sk);
@@ -6855,7 +6861,7 @@ int tcp_rcv_state_process(struct sock *sk, struct sk_buff *skb)
 			    after(TCP_SKB_CB(skb)->end_seq - th->fin, tp->rcv_nxt)) {
 				NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPABORTONDATA);
 				tcp_reset(sk, skb);
-				return 1;
+				return SKB_DROP_REASON_TCP_ABORTONDATA;
 			}
 		}
 		fallthrough;
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 4/6] tcp: make the dropreason really work when calling tcp_rcv_state_process()
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
                   ` (2 preceding siblings ...)
  2024-02-13 14:05 ` [PATCH net-next v4 3/6] tcp: add dropreasons in tcp_rcv_state_process() Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 5/6] tcp: make dropreason in tcp_child_process() work Jason Xing
                   ` (2 subsequent siblings)
  6 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

Update three callers including both ipv4 and ipv6 and let the dropreason
mechanism work in reality.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 include/net/tcp.h        | 2 +-
 net/ipv4/tcp_ipv4.c      | 3 ++-
 net/ipv4/tcp_minisocks.c | 9 +++++----
 net/ipv6/tcp_ipv6.c      | 3 ++-
 4 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/include/net/tcp.h b/include/net/tcp.h
index e5af9a5b411b..1d9b2a766b5e 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -396,7 +396,7 @@ enum tcp_tw_status tcp_timewait_state_process(struct inet_timewait_sock *tw,
 struct sock *tcp_check_req(struct sock *sk, struct sk_buff *skb,
 			   struct request_sock *req, bool fastopen,
 			   bool *lost_race);
-int tcp_child_process(struct sock *parent, struct sock *child,
+enum skb_drop_reason tcp_child_process(struct sock *parent, struct sock *child,
 		      struct sk_buff *skb);
 void tcp_enter_loss(struct sock *sk);
 void tcp_cwnd_reduction(struct sock *sk, int newly_acked_sacked, int newly_lost, int flag);
diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index 0a944e109088..c79e25549972 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1926,7 +1926,8 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
 	} else
 		sock_rps_save_rxhash(sk, skb);
 
-	if (tcp_rcv_state_process(sk, skb)) {
+	reason = tcp_rcv_state_process(sk, skb);
+	if (reason) {
 		rsk = sk;
 		goto reset;
 	}
diff --git a/net/ipv4/tcp_minisocks.c b/net/ipv4/tcp_minisocks.c
index 9e85f2a0bddd..08d5b48540ea 100644
--- a/net/ipv4/tcp_minisocks.c
+++ b/net/ipv4/tcp_minisocks.c
@@ -911,11 +911,12 @@ EXPORT_SYMBOL(tcp_check_req);
  * be created.
  */
 
-int tcp_child_process(struct sock *parent, struct sock *child,
+enum skb_drop_reason
+tcp_child_process(struct sock *parent, struct sock *child,
 		      struct sk_buff *skb)
 	__releases(&((child)->sk_lock.slock))
 {
-	int ret = 0;
+	enum skb_drop_reason reason = SKB_NOT_DROPPED_YET;
 	int state = child->sk_state;
 
 	/* record sk_napi_id and sk_rx_queue_mapping of child. */
@@ -923,7 +924,7 @@ int tcp_child_process(struct sock *parent, struct sock *child,
 
 	tcp_segs_in(tcp_sk(child), skb);
 	if (!sock_owned_by_user(child)) {
-		ret = tcp_rcv_state_process(child, skb);
+		reason = tcp_rcv_state_process(child, skb);
 		/* Wakeup parent, send SIGIO */
 		if (state == TCP_SYN_RECV && child->sk_state != state)
 			parent->sk_data_ready(parent);
@@ -937,6 +938,6 @@ int tcp_child_process(struct sock *parent, struct sock *child,
 
 	bh_unlock_sock(child);
 	sock_put(child);
-	return ret;
+	return reason;
 }
 EXPORT_SYMBOL(tcp_child_process);
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 27639ffcae2f..4924d41fb2b1 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1669,7 +1669,8 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
 	} else
 		sock_rps_save_rxhash(sk, skb);
 
-	if (tcp_rcv_state_process(sk, skb))
+	reason = tcp_rcv_state_process(sk, skb);
+	if (reason)
 		goto reset;
 	if (opt_skb)
 		goto ipv6_pktoptions;
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 5/6] tcp: make dropreason in tcp_child_process() work
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
                   ` (3 preceding siblings ...)
  2024-02-13 14:05 ` [PATCH net-next v4 4/6] tcp: make the dropreason really work when calling tcp_rcv_state_process() Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-13 14:05 ` [PATCH net-next v4 6/6] tcp: get rid of NOT_SEPCIFIED reason in tcp_v4/6_do_rcv Jason Xing
  2024-02-14  2:23 ` [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jakub Kicinski
  6 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

It's time to let it work right now. We've already prepared for this:)

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 net/ipv4/tcp_ipv4.c | 16 ++++++++++------
 net/ipv6/tcp_ipv6.c | 16 ++++++++++------
 2 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index c79e25549972..c886c671fae9 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1917,7 +1917,8 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
 		if (!nsk)
 			return 0;
 		if (nsk != sk) {
-			if (tcp_child_process(sk, nsk, skb)) {
+			reason = tcp_child_process(sk, nsk, skb);
+			if (reason) {
 				rsk = nsk;
 				goto reset;
 			}
@@ -2276,12 +2277,15 @@ int tcp_v4_rcv(struct sk_buff *skb)
 		if (nsk == sk) {
 			reqsk_put(req);
 			tcp_v4_restore_cb(skb);
-		} else if (tcp_child_process(sk, nsk, skb)) {
-			tcp_v4_send_reset(nsk, skb);
-			goto discard_and_relse;
 		} else {
-			sock_put(sk);
-			return 0;
+			drop_reason = tcp_child_process(sk, nsk, skb);
+			if (drop_reason) {
+				tcp_v4_send_reset(nsk, skb);
+				goto discard_and_relse;
+			} else {
+				sock_put(sk);
+				return 0;
+			}
 		}
 	}
 
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 4924d41fb2b1..73fef436dbf6 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1660,7 +1660,8 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
 		}
 
 		if (nsk != sk) {
-			if (tcp_child_process(sk, nsk, skb))
+			reason = tcp_child_process(sk, nsk, skb);
+			if (reason)
 				goto reset;
 			if (opt_skb)
 				__kfree_skb(opt_skb);
@@ -1860,12 +1861,15 @@ INDIRECT_CALLABLE_SCOPE int tcp_v6_rcv(struct sk_buff *skb)
 		if (nsk == sk) {
 			reqsk_put(req);
 			tcp_v6_restore_cb(skb);
-		} else if (tcp_child_process(sk, nsk, skb)) {
-			tcp_v6_send_reset(nsk, skb);
-			goto discard_and_relse;
 		} else {
-			sock_put(sk);
-			return 0;
+			drop_reason = tcp_child_process(sk, nsk, skb);
+			if (drop_reason) {
+				tcp_v6_send_reset(nsk, skb);
+				goto discard_and_relse;
+			} else {
+				sock_put(sk);
+				return 0;
+			}
 		}
 	}
 
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [PATCH net-next v4 6/6] tcp: get rid of NOT_SEPCIFIED reason in tcp_v4/6_do_rcv
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
                   ` (4 preceding siblings ...)
  2024-02-13 14:05 ` [PATCH net-next v4 5/6] tcp: make dropreason in tcp_child_process() work Jason Xing
@ 2024-02-13 14:05 ` Jason Xing
  2024-02-14  2:23 ` [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jakub Kicinski
  6 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 14:05 UTC (permalink / raw)
  To: davem, edumazet, kuba, pabeni, dsahern, kuniyu
  Cc: netdev, kerneljasonxing, Jason Xing

From: Jason Xing <kernelxing@tencent.com>

Finally we can drop this obscure reason in receive path  because
we replaced with many other more accurate reasons before.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
---
 net/ipv4/tcp_ipv4.c | 1 -
 net/ipv6/tcp_ipv6.c | 1 -
 2 files changed, 2 deletions(-)

diff --git a/net/ipv4/tcp_ipv4.c b/net/ipv4/tcp_ipv4.c
index c886c671fae9..82e63f6af34b 100644
--- a/net/ipv4/tcp_ipv4.c
+++ b/net/ipv4/tcp_ipv4.c
@@ -1907,7 +1907,6 @@ int tcp_v4_do_rcv(struct sock *sk, struct sk_buff *skb)
 		return 0;
 	}
 
-	reason = SKB_DROP_REASON_NOT_SPECIFIED;
 	if (tcp_checksum_complete(skb))
 		goto csum_err;
 
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c
index 73fef436dbf6..29a0fe0c8101 100644
--- a/net/ipv6/tcp_ipv6.c
+++ b/net/ipv6/tcp_ipv6.c
@@ -1623,7 +1623,6 @@ int tcp_v6_do_rcv(struct sock *sk, struct sk_buff *skb)
 	if (np->rxopt.all)
 		opt_skb = skb_clone_and_charge_r(skb, sk);
 
-	reason = SKB_DROP_REASON_NOT_SPECIFIED;
 	if (sk->sk_state == TCP_ESTABLISHED) { /* Fast path */
 		struct dst_entry *dst;
 
-- 
2.37.3


^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in receive path
  2024-02-13 14:05 ` [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in " Jason Xing
@ 2024-02-13 15:49   ` David Ahern
  2024-02-13 17:00     ` Jason Xing
  0 siblings, 1 reply; 11+ messages in thread
From: David Ahern @ 2024-02-13 15:49 UTC (permalink / raw)
  To: Jason Xing, davem, edumazet, kuba, pabeni, kuniyu; +Cc: netdev, Jason Xing

On 2/13/24 7:05 AM, Jason Xing wrote:
> diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
> index 065caba42b0b..19ba900eae0e 100644
> --- a/include/net/dropreason-core.h
> +++ b/include/net/dropreason-core.h
> @@ -31,6 +31,7 @@
>  	FN(TCP_AOFAILURE)		\
>  	FN(SOCKET_BACKLOG)		\
>  	FN(TCP_FLAGS)			\
> +	FN(TCP_ABORTONDATA)			\

for readability, how about TCP_ABORT_ON_DATA (yes, I know the MIB entry
is LINUX_MIB_TCPABORTONDATA; we can improve readability with new changes).



^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in receive path
  2024-02-13 15:49   ` David Ahern
@ 2024-02-13 17:00     ` Jason Xing
  0 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-13 17:00 UTC (permalink / raw)
  To: David Ahern; +Cc: davem, edumazet, kuba, pabeni, kuniyu, netdev, Jason Xing

On Tue, Feb 13, 2024 at 11:49 PM David Ahern <dsahern@kernel.org> wrote:
>
> On 2/13/24 7:05 AM, Jason Xing wrote:
> > diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
> > index 065caba42b0b..19ba900eae0e 100644
> > --- a/include/net/dropreason-core.h
> > +++ b/include/net/dropreason-core.h
> > @@ -31,6 +31,7 @@
> >       FN(TCP_AOFAILURE)               \
> >       FN(SOCKET_BACKLOG)              \
> >       FN(TCP_FLAGS)                   \
> > +     FN(TCP_ABORTONDATA)                     \
>
> for readability, how about TCP_ABORT_ON_DATA (yes, I know the MIB entry
> is LINUX_MIB_TCPABORTONDATA; we can improve readability with new changes).

Thanks for the review. Will do it :)

>
>

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path
  2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
                   ` (5 preceding siblings ...)
  2024-02-13 14:05 ` [PATCH net-next v4 6/6] tcp: get rid of NOT_SEPCIFIED reason in tcp_v4/6_do_rcv Jason Xing
@ 2024-02-14  2:23 ` Jakub Kicinski
  2024-02-14 12:38   ` Jason Xing
  6 siblings, 1 reply; 11+ messages in thread
From: Jakub Kicinski @ 2024-02-14  2:23 UTC (permalink / raw)
  To: Jason Xing; +Cc: davem, edumazet, pabeni, dsahern, kuniyu, netdev, Jason Xing

On Tue, 13 Feb 2024 22:05:02 +0800 Jason Xing wrote:
> As title said, we're going to refine the NOT_SPECIFIED reason in the
> tcp v4/6 receive fast path.
> 
> This serie is another one of the v2 patchset[1] which are here split
> into six patches. Besides, this patch is made on top of the previous
> serie[2] I submitted some time ago.

Please do not post two similar sets at the same time.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path
  2024-02-14  2:23 ` [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jakub Kicinski
@ 2024-02-14 12:38   ` Jason Xing
  0 siblings, 0 replies; 11+ messages in thread
From: Jason Xing @ 2024-02-14 12:38 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: davem, edumazet, pabeni, dsahern, kuniyu, netdev, Jason Xing

On Wed, Feb 14, 2024 at 10:23 AM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Tue, 13 Feb 2024 22:05:02 +0800 Jason Xing wrote:
> > As title said, we're going to refine the NOT_SPECIFIED reason in the
> > tcp v4/6 receive fast path.
> >
> > This serie is another one of the v2 patchset[1] which are here split
> > into six patches. Besides, this patch is made on top of the previous
> > serie[2] I submitted some time ago.
>
> Please do not post two similar sets at the same time.

Okay, I will merge them into one series.

Thanks,
Jason

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2024-02-14 12:39 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-13 14:05 [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 1/6] tcp: introduce another three dropreasons in " Jason Xing
2024-02-13 15:49   ` David Ahern
2024-02-13 17:00     ` Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 2/6] tcp: add more specific possible drop reasons in tcp_rcv_synsent_state_process() Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 3/6] tcp: add dropreasons in tcp_rcv_state_process() Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 4/6] tcp: make the dropreason really work when calling tcp_rcv_state_process() Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 5/6] tcp: make dropreason in tcp_child_process() work Jason Xing
2024-02-13 14:05 ` [PATCH net-next v4 6/6] tcp: get rid of NOT_SEPCIFIED reason in tcp_v4/6_do_rcv Jason Xing
2024-02-14  2:23 ` [PATCH net-next v4 0/6] introduce dropreasons in tcp receive path Jakub Kicinski
2024-02-14 12:38   ` Jason Xing

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).