diff mbox series

[net-next,v6,01/11] tcp: add a dropreason definitions and prepare for cookie check

Message ID 20240219032838.91723-2-kerneljasonxing@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series introduce drop reasons for tcp receive path | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net-next, async
netdev/ynl success Generated files up to date; no warnings/errors; no diff in generated;
netdev/fixes_present success Fixes tag not required for -next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit success Errors and warnings before: 5948 this patch: 5948
netdev/build_tools success Errors and warnings before: 0 this patch: 0
netdev/cc_maintainers success CCed 4 of 4 maintainers
netdev/build_clang success Errors and warnings before: 2074 this patch: 2074
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success No Fixes tag
netdev/build_allmodconfig_warn success Errors and warnings before: 6264 this patch: 6264
netdev/checkpatch success total: 0 errors, 0 warnings, 0 checks, 29 lines checked
netdev/build_clang_rust success No Rust files in patch. Skipping build
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0
netdev/contest pending net-next-2024-02-19--09-00 (tests: 391)

Commit Message

Jason Xing Feb. 19, 2024, 3:28 a.m. UTC
From: Jason Xing <kernelxing@tencent.com>

Only add one drop reason to detect the condition of skb dropped
because of hook points in cookie check for later use.

Signed-off-by: Jason Xing <kernelxing@tencent.com>
--
v6
Link: https://lore.kernel.org/netdev/20240215210922.19969-1-kuniyu@amazon.com/
1. Modify the description NO_SOCKET to extend other two kinds of invalid
socket cases.
What I think about it is we can use it as a general indicator for three kinds of
sockets which are invalid/NULL, like what we did to TCP_FLAGS.
Any better ideas/suggestions are welcome :)

v5
Link: https://lore.kernel.org/netdev/CANn89i+iELpsoea6+C-08m6+=JkneEEM=nAj-28eNtcOCkwQjw@mail.gmail.com/
Link: https://lore.kernel.org/netdev/632c6fd4-e060-4b8e-a80e-5d545a6c6b6c@kernel.org/
1. Use SKB_DROP_REASON_IP_OUTNOROUTES instead of introducing a new one (Eric, David)
2. Reuse SKB_DROP_REASON_NOMEM to handle failure of request socket allocation (Eric)
3. Reuse NO_SOCKET instead of introducing COOKIE_NOCHILD
4. Reuse IP_OUTNOROUTES instead of INVALID_DST (Eric)
5. adjust the title and description.

v4
Link: https://lore.kernel.org/netdev/20240212172302.3f95e454@kernel.org/
1. fix misspelled name in kdoc as Jakub said
---
 include/net/dropreason-core.h | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Kuniyuki Iwashima Feb. 19, 2024, 4:06 a.m. UTC | #1
From: Jason Xing <kerneljasonxing@gmail.com>
Date: Mon, 19 Feb 2024 11:28:28 +0800
> From: Jason Xing <kernelxing@tencent.com>
> 
> Only add one drop reason to detect the condition of skb dropped
> because of hook points in cookie check for later use.
> 
> Signed-off-by: Jason Xing <kernelxing@tencent.com>
> --
> v6
> Link: https://lore.kernel.org/netdev/20240215210922.19969-1-kuniyu@amazon.com/
> 1. Modify the description NO_SOCKET to extend other two kinds of invalid
> socket cases.
> What I think about it is we can use it as a general indicator for three kinds of
> sockets which are invalid/NULL, like what we did to TCP_FLAGS.
> Any better ideas/suggestions are welcome :)
> 
> v5
> Link: https://lore.kernel.org/netdev/CANn89i+iELpsoea6+C-08m6+=JkneEEM=nAj-28eNtcOCkwQjw@mail.gmail.com/
> Link: https://lore.kernel.org/netdev/632c6fd4-e060-4b8e-a80e-5d545a6c6b6c@kernel.org/
> 1. Use SKB_DROP_REASON_IP_OUTNOROUTES instead of introducing a new one (Eric, David)
> 2. Reuse SKB_DROP_REASON_NOMEM to handle failure of request socket allocation (Eric)
> 3. Reuse NO_SOCKET instead of introducing COOKIE_NOCHILD
> 4. Reuse IP_OUTNOROUTES instead of INVALID_DST (Eric)
> 5. adjust the title and description.
> 
> v4
> Link: https://lore.kernel.org/netdev/20240212172302.3f95e454@kernel.org/
> 1. fix misspelled name in kdoc as Jakub said
> ---
>  include/net/dropreason-core.h | 11 ++++++++++-
>  1 file changed, 10 insertions(+), 1 deletion(-)
> 
> diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
> index 6d3a20163260..3c867384dead 100644
> --- a/include/net/dropreason-core.h
> +++ b/include/net/dropreason-core.h
> @@ -54,6 +54,7 @@
>  	FN(NEIGH_QUEUEFULL)		\
>  	FN(NEIGH_DEAD)			\
>  	FN(TC_EGRESS)			\
> +	FN(SECURITY_HOOK)		\
>  	FN(QDISC_DROP)			\
>  	FN(CPU_BACKLOG)			\
>  	FN(XDP)				\
> @@ -105,7 +106,13 @@ enum skb_drop_reason {
>  	SKB_CONSUMED,
>  	/** @SKB_DROP_REASON_NOT_SPECIFIED: drop reason is not specified */
>  	SKB_DROP_REASON_NOT_SPECIFIED,
> -	/** @SKB_DROP_REASON_NO_SOCKET: socket not found */
> +	/**
> +	 * @SKB_DROP_REASON_NO_SOCKET: no invalid socket that can be used.

s/invalid/valid/

Same for 2) and 3) below.


> +	 * Reason could be one of three cases:
> +	 * 1) no established/listening socket found during lookup process
> +	 * 2) no invalid request socket during 3WHS process
> +	 * 3) no invalid child socket during 3WHS process
> +	 */
>  	SKB_DROP_REASON_NO_SOCKET,
>  	/** @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small */
>  	SKB_DROP_REASON_PKT_TOO_SMALL,
Jason Xing Feb. 19, 2024, 4:56 a.m. UTC | #2
On Mon, Feb 19, 2024 at 12:06 PM Kuniyuki Iwashima <kuniyu@amazon.com> wrote:
>
> From: Jason Xing <kerneljasonxing@gmail.com>
> Date: Mon, 19 Feb 2024 11:28:28 +0800
> > From: Jason Xing <kernelxing@tencent.com>
> >
> > Only add one drop reason to detect the condition of skb dropped
> > because of hook points in cookie check for later use.
> >
> > Signed-off-by: Jason Xing <kernelxing@tencent.com>
> > --
> > v6
> > Link: https://lore.kernel.org/netdev/20240215210922.19969-1-kuniyu@amazon.com/
> > 1. Modify the description NO_SOCKET to extend other two kinds of invalid
> > socket cases.
> > What I think about it is we can use it as a general indicator for three kinds of
> > sockets which are invalid/NULL, like what we did to TCP_FLAGS.
> > Any better ideas/suggestions are welcome :)
> >
> > v5
> > Link: https://lore.kernel.org/netdev/CANn89i+iELpsoea6+C-08m6+=JkneEEM=nAj-28eNtcOCkwQjw@mail.gmail.com/
> > Link: https://lore.kernel.org/netdev/632c6fd4-e060-4b8e-a80e-5d545a6c6b6c@kernel.org/
> > 1. Use SKB_DROP_REASON_IP_OUTNOROUTES instead of introducing a new one (Eric, David)
> > 2. Reuse SKB_DROP_REASON_NOMEM to handle failure of request socket allocation (Eric)
> > 3. Reuse NO_SOCKET instead of introducing COOKIE_NOCHILD
> > 4. Reuse IP_OUTNOROUTES instead of INVALID_DST (Eric)
> > 5. adjust the title and description.
> >
> > v4
> > Link: https://lore.kernel.org/netdev/20240212172302.3f95e454@kernel.org/
> > 1. fix misspelled name in kdoc as Jakub said
> > ---
> >  include/net/dropreason-core.h | 11 ++++++++++-
> >  1 file changed, 10 insertions(+), 1 deletion(-)
> >
> > diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
> > index 6d3a20163260..3c867384dead 100644
> > --- a/include/net/dropreason-core.h
> > +++ b/include/net/dropreason-core.h
> > @@ -54,6 +54,7 @@
> >       FN(NEIGH_QUEUEFULL)             \
> >       FN(NEIGH_DEAD)                  \
> >       FN(TC_EGRESS)                   \
> > +     FN(SECURITY_HOOK)               \
> >       FN(QDISC_DROP)                  \
> >       FN(CPU_BACKLOG)                 \
> >       FN(XDP)                         \
> > @@ -105,7 +106,13 @@ enum skb_drop_reason {
> >       SKB_CONSUMED,
> >       /** @SKB_DROP_REASON_NOT_SPECIFIED: drop reason is not specified */
> >       SKB_DROP_REASON_NOT_SPECIFIED,
> > -     /** @SKB_DROP_REASON_NO_SOCKET: socket not found */
> > +     /**
> > +      * @SKB_DROP_REASON_NO_SOCKET: no invalid socket that can be used.
>
> s/invalid/valid/
>
> Same for 2) and 3) below.

Thanks for your check. Will update it :)

>
>
> > +      * Reason could be one of three cases:
> > +      * 1) no established/listening socket found during lookup process
> > +      * 2) no invalid request socket during 3WHS process
> > +      * 3) no invalid child socket during 3WHS process
> > +      */
> >       SKB_DROP_REASON_NO_SOCKET,
> >       /** @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small */
> >       SKB_DROP_REASON_PKT_TOO_SMALL,
diff mbox series

Patch

diff --git a/include/net/dropreason-core.h b/include/net/dropreason-core.h
index 6d3a20163260..3c867384dead 100644
--- a/include/net/dropreason-core.h
+++ b/include/net/dropreason-core.h
@@ -54,6 +54,7 @@ 
 	FN(NEIGH_QUEUEFULL)		\
 	FN(NEIGH_DEAD)			\
 	FN(TC_EGRESS)			\
+	FN(SECURITY_HOOK)		\
 	FN(QDISC_DROP)			\
 	FN(CPU_BACKLOG)			\
 	FN(XDP)				\
@@ -105,7 +106,13 @@  enum skb_drop_reason {
 	SKB_CONSUMED,
 	/** @SKB_DROP_REASON_NOT_SPECIFIED: drop reason is not specified */
 	SKB_DROP_REASON_NOT_SPECIFIED,
-	/** @SKB_DROP_REASON_NO_SOCKET: socket not found */
+	/**
+	 * @SKB_DROP_REASON_NO_SOCKET: no invalid socket that can be used.
+	 * Reason could be one of three cases:
+	 * 1) no established/listening socket found during lookup process
+	 * 2) no invalid request socket during 3WHS process
+	 * 3) no invalid child socket during 3WHS process
+	 */
 	SKB_DROP_REASON_NO_SOCKET,
 	/** @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small */
 	SKB_DROP_REASON_PKT_TOO_SMALL,
@@ -271,6 +278,8 @@  enum skb_drop_reason {
 	SKB_DROP_REASON_NEIGH_DEAD,
 	/** @SKB_DROP_REASON_TC_EGRESS: dropped in TC egress HOOK */
 	SKB_DROP_REASON_TC_EGRESS,
+	/** @SKB_DROP_REASON_SECURITY_HOOK: dropped due to security HOOK */
+	SKB_DROP_REASON_SECURITY_HOOK,
 	/**
 	 * @SKB_DROP_REASON_QDISC_DROP: dropped by qdisc when packet outputting (
 	 * failed to enqueue to current qdisc)