linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next 0/3] reorganize the code of the enum skb_drop_reason
@ 2022-05-27  7:15 menglong8.dong
  2022-05-27  7:15 ` [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file menglong8.dong
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: menglong8.dong @ 2022-05-27  7:15 UTC (permalink / raw)
  To: kuba
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

From: Menglong Dong <imagedong@tencent.com>

The code of skb_drop_reason is a little wild, let's reorganize them.
Three things and three patches:

1) Move the enum 'skb_drop_reason' and related function to the standalone
   header 'dropreason.h', as Jakub Kicinski suggested, as the skb drop
   reasons are getting more and more.

2) use auto-generation to generate the header that convert enum
   skb_drop_reason to string.

3) make the comment of skb drop reasons kernel-doc style.

Menglong Dong (3):
  net: skb: move enum skb_drop_reason to standalone header file
  net: skb: use auto-generation to convert skb drop reason to string
  net: dropreason: reformat the comment fo skb drop reasons

 include/linux/dropreason.h | 195 +++++++++++++++++++++++++++++++++++++
 include/linux/skbuff.h     | 179 +---------------------------------
 include/trace/events/skb.h |  89 +----------------
 net/core/.gitignore        |   1 +
 net/core/Makefile          |  14 +++
 net/core/drop_monitor.c    |  13 ---
 net/core/skbuff.c          |  12 +++
 7 files changed, 224 insertions(+), 279 deletions(-)
 create mode 100644 include/linux/dropreason.h
 create mode 100644 net/core/.gitignore

-- 
2.36.1


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

* [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file
  2022-05-27  7:15 [PATCH net-next 0/3] reorganize the code of the enum skb_drop_reason menglong8.dong
@ 2022-05-27  7:15 ` menglong8.dong
  2022-05-28  1:08   ` Jakub Kicinski
  2022-05-27  7:15 ` [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string menglong8.dong
  2022-05-27  7:15 ` [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons menglong8.dong
  2 siblings, 1 reply; 10+ messages in thread
From: menglong8.dong @ 2022-05-27  7:15 UTC (permalink / raw)
  To: kuba
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

From: Menglong Dong <imagedong@tencent.com>

As the skb drop reasons are getting more and more, move the enum
'skb_drop_reason' and related function to the standalone header
'dropreason.h', as Jakub Kicinski suggested.

Signed-off-by: Menglong Dong <imagedong@tencent.com>
---
 include/linux/dropreason.h | 184 +++++++++++++++++++++++++++++++++++++
 include/linux/skbuff.h     | 179 +-----------------------------------
 2 files changed, 185 insertions(+), 178 deletions(-)
 create mode 100644 include/linux/dropreason.h

diff --git a/include/linux/dropreason.h b/include/linux/dropreason.h
new file mode 100644
index 000000000000..ecd18b7b1364
--- /dev/null
+++ b/include/linux/dropreason.h
@@ -0,0 +1,184 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
+#ifndef _LINUX_DROPREASON_H
+#define _LINUX_DROPREASON_H
+
+/* The reason of skb drop, which is used in kfree_skb_reason().
+ * en...maybe they should be splited by group?
+ *
+ * Each item here should also be in 'TRACE_SKB_DROP_REASON', which is
+ * used to translate the reason to string.
+ */
+enum skb_drop_reason {
+	SKB_NOT_DROPPED_YET = 0,
+	SKB_DROP_REASON_NOT_SPECIFIED,	/* drop reason is not specified */
+	SKB_DROP_REASON_NO_SOCKET,	/* socket not found */
+	SKB_DROP_REASON_PKT_TOO_SMALL,	/* packet size is too small */
+	SKB_DROP_REASON_TCP_CSUM,	/* TCP checksum error */
+	SKB_DROP_REASON_SOCKET_FILTER,	/* dropped by socket filter */
+	SKB_DROP_REASON_UDP_CSUM,	/* UDP checksum error */
+	SKB_DROP_REASON_NETFILTER_DROP,	/* dropped by netfilter */
+	SKB_DROP_REASON_OTHERHOST,	/* packet don't belong to current
+					 * host (interface is in promisc
+					 * mode)
+					 */
+	SKB_DROP_REASON_IP_CSUM,	/* IP checksum error */
+	SKB_DROP_REASON_IP_INHDR,	/* there is something wrong with
+					 * IP header (see
+					 * IPSTATS_MIB_INHDRERRORS)
+					 */
+	SKB_DROP_REASON_IP_RPFILTER,	/* IP rpfilter validate failed.
+					 * see the document for rp_filter
+					 * in ip-sysctl.rst for more
+					 * information
+					 */
+	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST, /* destination address of L2
+						  * is multicast, but L3 is
+						  * unicast.
+						  */
+	SKB_DROP_REASON_XFRM_POLICY,	/* xfrm policy check failed */
+	SKB_DROP_REASON_IP_NOPROTO,	/* no support for IP protocol */
+	SKB_DROP_REASON_SOCKET_RCVBUFF,	/* socket receive buff is full */
+	SKB_DROP_REASON_PROTO_MEM,	/* proto memory limition, such as
+					 * udp packet drop out of
+					 * udp_memory_allocated.
+					 */
+	SKB_DROP_REASON_TCP_MD5NOTFOUND,	/* no MD5 hash and one
+						 * expected, corresponding
+						 * to LINUX_MIB_TCPMD5NOTFOUND
+						 */
+	SKB_DROP_REASON_TCP_MD5UNEXPECTED,	/* MD5 hash and we're not
+						 * expecting one, corresponding
+						 * to LINUX_MIB_TCPMD5UNEXPECTED
+						 */
+	SKB_DROP_REASON_TCP_MD5FAILURE,	/* MD5 hash and its wrong,
+					 * corresponding to
+					 * LINUX_MIB_TCPMD5FAILURE
+					 */
+	SKB_DROP_REASON_SOCKET_BACKLOG,	/* failed to add skb to socket
+					 * backlog (see
+					 * LINUX_MIB_TCPBACKLOGDROP)
+					 */
+	SKB_DROP_REASON_TCP_FLAGS,	/* TCP flags invalid */
+	SKB_DROP_REASON_TCP_ZEROWINDOW,	/* TCP receive window size is zero,
+					 * see LINUX_MIB_TCPZEROWINDOWDROP
+					 */
+	SKB_DROP_REASON_TCP_OLD_DATA,	/* the TCP data reveived is already
+					 * received before (spurious retrans
+					 * may happened), see
+					 * LINUX_MIB_DELAYEDACKLOST
+					 */
+	SKB_DROP_REASON_TCP_OVERWINDOW,	/* the TCP data is out of window,
+					 * the seq of the first byte exceed
+					 * the right edges of receive
+					 * window
+					 */
+	SKB_DROP_REASON_TCP_OFOMERGE,	/* the data of skb is already in
+					 * the ofo queue, corresponding to
+					 * LINUX_MIB_TCPOFOMERGE
+					 */
+	SKB_DROP_REASON_TCP_RFC7323_PAWS, /* PAWS check, corresponding to
+					   * LINUX_MIB_PAWSESTABREJECTED
+					   */
+	SKB_DROP_REASON_TCP_INVALID_SEQUENCE, /* Not acceptable SEQ field */
+	SKB_DROP_REASON_TCP_RESET,	/* Invalid RST packet */
+	SKB_DROP_REASON_TCP_INVALID_SYN, /* Incoming packet has unexpected SYN flag */
+	SKB_DROP_REASON_TCP_CLOSE,	/* TCP socket in CLOSE state */
+	SKB_DROP_REASON_TCP_FASTOPEN,	/* dropped by FASTOPEN request socket */
+	SKB_DROP_REASON_TCP_OLD_ACK,	/* TCP ACK is old, but in window */
+	SKB_DROP_REASON_TCP_TOO_OLD_ACK, /* TCP ACK is too old */
+	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA, /* TCP ACK for data we haven't sent yet */
+	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE, /* pruned from TCP OFO queue */
+	SKB_DROP_REASON_TCP_OFO_DROP,	/* data already in receive queue */
+	SKB_DROP_REASON_IP_OUTNOROUTES,	/* route lookup failed */
+	SKB_DROP_REASON_BPF_CGROUP_EGRESS,	/* dropped by
+						 * BPF_PROG_TYPE_CGROUP_SKB
+						 * eBPF program
+						 */
+	SKB_DROP_REASON_IPV6DISABLED,	/* IPv6 is disabled on the device */
+	SKB_DROP_REASON_NEIGH_CREATEFAIL,	/* failed to create neigh
+						 * entry
+						 */
+	SKB_DROP_REASON_NEIGH_FAILED,	/* neigh entry in failed state */
+	SKB_DROP_REASON_NEIGH_QUEUEFULL,	/* arp_queue for neigh
+						 * entry is full
+						 */
+	SKB_DROP_REASON_NEIGH_DEAD,	/* neigh entry is dead */
+	SKB_DROP_REASON_TC_EGRESS,	/* dropped in TC egress HOOK */
+	SKB_DROP_REASON_QDISC_DROP,	/* dropped by qdisc when packet
+					 * outputting (failed to enqueue to
+					 * current qdisc)
+					 */
+	SKB_DROP_REASON_CPU_BACKLOG,	/* failed to enqueue the skb to
+					 * the per CPU backlog queue. This
+					 * can be caused by backlog queue
+					 * full (see netdev_max_backlog in
+					 * net.rst) or RPS flow limit
+					 */
+	SKB_DROP_REASON_XDP,		/* dropped by XDP in input path */
+	SKB_DROP_REASON_TC_INGRESS,	/* dropped in TC ingress HOOK */
+	SKB_DROP_REASON_UNHANDLED_PROTO,	/* protocol not implemented
+						 * or not supported
+						 */
+	SKB_DROP_REASON_SKB_CSUM,	/* sk_buff checksum computation
+					 * error
+					 */
+	SKB_DROP_REASON_SKB_GSO_SEG,	/* gso segmentation error */
+	SKB_DROP_REASON_SKB_UCOPY_FAULT,	/* failed to copy data from
+						 * user space, e.g., via
+						 * zerocopy_sg_from_iter()
+						 * or skb_orphan_frags_rx()
+						 */
+	SKB_DROP_REASON_DEV_HDR,	/* device driver specific
+					 * header/metadata is invalid
+					 */
+	/* the device is not ready to xmit/recv due to any of its data
+	 * structure that is not up/ready/initialized, e.g., the IFF_UP is
+	 * not set, or driver specific tun->tfiles[txq] is not initialized
+	 */
+	SKB_DROP_REASON_DEV_READY,
+	SKB_DROP_REASON_FULL_RING,	/* ring buffer is full */
+	SKB_DROP_REASON_NOMEM,		/* error due to OOM */
+	SKB_DROP_REASON_HDR_TRUNC,      /* failed to trunc/extract the header
+					 * from networking data, e.g., failed
+					 * to pull the protocol header from
+					 * frags via pskb_may_pull()
+					 */
+	SKB_DROP_REASON_TAP_FILTER,     /* dropped by (ebpf) filter directly
+					 * attached to tun/tap, e.g., via
+					 * TUNSETFILTEREBPF
+					 */
+	SKB_DROP_REASON_TAP_TXFILTER,	/* dropped by tx filter implemented
+					 * at tun/tap, e.g., check_filter()
+					 */
+	SKB_DROP_REASON_ICMP_CSUM,	/* ICMP checksum error */
+	SKB_DROP_REASON_INVALID_PROTO,	/* the packet doesn't follow RFC
+					 * 2211, such as a broadcasts
+					 * ICMP_TIMESTAMP
+					 */
+	SKB_DROP_REASON_IP_INADDRERRORS,	/* host unreachable, corresponding
+						 * to IPSTATS_MIB_INADDRERRORS
+						 */
+	SKB_DROP_REASON_IP_INNOROUTES,	/* network unreachable, corresponding
+					 * to IPSTATS_MIB_INADDRERRORS
+					 */
+	SKB_DROP_REASON_PKT_TOO_BIG,	/* packet size is too big (maybe exceed
+					 * the MTU)
+					 */
+	SKB_DROP_REASON_MAX,
+};
+
+#define SKB_DR_INIT(name, reason)				\
+	enum skb_drop_reason name = SKB_DROP_REASON_##reason
+#define SKB_DR(name)						\
+	SKB_DR_INIT(name, NOT_SPECIFIED)
+#define SKB_DR_SET(name, reason)				\
+	(name = SKB_DROP_REASON_##reason)
+#define SKB_DR_OR(name, reason)					\
+	do {							\
+		if (name == SKB_DROP_REASON_NOT_SPECIFIED ||	\
+		    name == SKB_NOT_DROPPED_YET)		\
+			SKB_DR_SET(name, reason);		\
+	} while (0)
+
+#endif
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index da96f0d3e753..13265152b2d4 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -43,6 +43,7 @@
 #include <linux/netfilter/nf_conntrack_common.h>
 #endif
 #include <net/net_debug.h>
+#include <linux/dropreason.h>
 
 /**
  * DOC: skb checksums
@@ -337,184 +338,6 @@ struct sk_buff_head {
 
 struct sk_buff;
 
-/* The reason of skb drop, which is used in kfree_skb_reason().
- * en...maybe they should be splited by group?
- *
- * Each item here should also be in 'TRACE_SKB_DROP_REASON', which is
- * used to translate the reason to string.
- */
-enum skb_drop_reason {
-	SKB_NOT_DROPPED_YET = 0,
-	SKB_DROP_REASON_NOT_SPECIFIED,	/* drop reason is not specified */
-	SKB_DROP_REASON_NO_SOCKET,	/* socket not found */
-	SKB_DROP_REASON_PKT_TOO_SMALL,	/* packet size is too small */
-	SKB_DROP_REASON_TCP_CSUM,	/* TCP checksum error */
-	SKB_DROP_REASON_SOCKET_FILTER,	/* dropped by socket filter */
-	SKB_DROP_REASON_UDP_CSUM,	/* UDP checksum error */
-	SKB_DROP_REASON_NETFILTER_DROP,	/* dropped by netfilter */
-	SKB_DROP_REASON_OTHERHOST,	/* packet don't belong to current
-					 * host (interface is in promisc
-					 * mode)
-					 */
-	SKB_DROP_REASON_IP_CSUM,	/* IP checksum error */
-	SKB_DROP_REASON_IP_INHDR,	/* there is something wrong with
-					 * IP header (see
-					 * IPSTATS_MIB_INHDRERRORS)
-					 */
-	SKB_DROP_REASON_IP_RPFILTER,	/* IP rpfilter validate failed.
-					 * see the document for rp_filter
-					 * in ip-sysctl.rst for more
-					 * information
-					 */
-	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST, /* destination address of L2
-						  * is multicast, but L3 is
-						  * unicast.
-						  */
-	SKB_DROP_REASON_XFRM_POLICY,	/* xfrm policy check failed */
-	SKB_DROP_REASON_IP_NOPROTO,	/* no support for IP protocol */
-	SKB_DROP_REASON_SOCKET_RCVBUFF,	/* socket receive buff is full */
-	SKB_DROP_REASON_PROTO_MEM,	/* proto memory limition, such as
-					 * udp packet drop out of
-					 * udp_memory_allocated.
-					 */
-	SKB_DROP_REASON_TCP_MD5NOTFOUND,	/* no MD5 hash and one
-						 * expected, corresponding
-						 * to LINUX_MIB_TCPMD5NOTFOUND
-						 */
-	SKB_DROP_REASON_TCP_MD5UNEXPECTED,	/* MD5 hash and we're not
-						 * expecting one, corresponding
-						 * to LINUX_MIB_TCPMD5UNEXPECTED
-						 */
-	SKB_DROP_REASON_TCP_MD5FAILURE,	/* MD5 hash and its wrong,
-					 * corresponding to
-					 * LINUX_MIB_TCPMD5FAILURE
-					 */
-	SKB_DROP_REASON_SOCKET_BACKLOG,	/* failed to add skb to socket
-					 * backlog (see
-					 * LINUX_MIB_TCPBACKLOGDROP)
-					 */
-	SKB_DROP_REASON_TCP_FLAGS,	/* TCP flags invalid */
-	SKB_DROP_REASON_TCP_ZEROWINDOW,	/* TCP receive window size is zero,
-					 * see LINUX_MIB_TCPZEROWINDOWDROP
-					 */
-	SKB_DROP_REASON_TCP_OLD_DATA,	/* the TCP data reveived is already
-					 * received before (spurious retrans
-					 * may happened), see
-					 * LINUX_MIB_DELAYEDACKLOST
-					 */
-	SKB_DROP_REASON_TCP_OVERWINDOW,	/* the TCP data is out of window,
-					 * the seq of the first byte exceed
-					 * the right edges of receive
-					 * window
-					 */
-	SKB_DROP_REASON_TCP_OFOMERGE,	/* the data of skb is already in
-					 * the ofo queue, corresponding to
-					 * LINUX_MIB_TCPOFOMERGE
-					 */
-	SKB_DROP_REASON_TCP_RFC7323_PAWS, /* PAWS check, corresponding to
-					   * LINUX_MIB_PAWSESTABREJECTED
-					   */
-	SKB_DROP_REASON_TCP_INVALID_SEQUENCE, /* Not acceptable SEQ field */
-	SKB_DROP_REASON_TCP_RESET,	/* Invalid RST packet */
-	SKB_DROP_REASON_TCP_INVALID_SYN, /* Incoming packet has unexpected SYN flag */
-	SKB_DROP_REASON_TCP_CLOSE,	/* TCP socket in CLOSE state */
-	SKB_DROP_REASON_TCP_FASTOPEN,	/* dropped by FASTOPEN request socket */
-	SKB_DROP_REASON_TCP_OLD_ACK,	/* TCP ACK is old, but in window */
-	SKB_DROP_REASON_TCP_TOO_OLD_ACK, /* TCP ACK is too old */
-	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA, /* TCP ACK for data we haven't sent yet */
-	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE, /* pruned from TCP OFO queue */
-	SKB_DROP_REASON_TCP_OFO_DROP,	/* data already in receive queue */
-	SKB_DROP_REASON_IP_OUTNOROUTES,	/* route lookup failed */
-	SKB_DROP_REASON_BPF_CGROUP_EGRESS,	/* dropped by
-						 * BPF_PROG_TYPE_CGROUP_SKB
-						 * eBPF program
-						 */
-	SKB_DROP_REASON_IPV6DISABLED,	/* IPv6 is disabled on the device */
-	SKB_DROP_REASON_NEIGH_CREATEFAIL,	/* failed to create neigh
-						 * entry
-						 */
-	SKB_DROP_REASON_NEIGH_FAILED,	/* neigh entry in failed state */
-	SKB_DROP_REASON_NEIGH_QUEUEFULL,	/* arp_queue for neigh
-						 * entry is full
-						 */
-	SKB_DROP_REASON_NEIGH_DEAD,	/* neigh entry is dead */
-	SKB_DROP_REASON_TC_EGRESS,	/* dropped in TC egress HOOK */
-	SKB_DROP_REASON_QDISC_DROP,	/* dropped by qdisc when packet
-					 * outputting (failed to enqueue to
-					 * current qdisc)
-					 */
-	SKB_DROP_REASON_CPU_BACKLOG,	/* failed to enqueue the skb to
-					 * the per CPU backlog queue. This
-					 * can be caused by backlog queue
-					 * full (see netdev_max_backlog in
-					 * net.rst) or RPS flow limit
-					 */
-	SKB_DROP_REASON_XDP,		/* dropped by XDP in input path */
-	SKB_DROP_REASON_TC_INGRESS,	/* dropped in TC ingress HOOK */
-	SKB_DROP_REASON_UNHANDLED_PROTO,	/* protocol not implemented
-						 * or not supported
-						 */
-	SKB_DROP_REASON_SKB_CSUM,	/* sk_buff checksum computation
-					 * error
-					 */
-	SKB_DROP_REASON_SKB_GSO_SEG,	/* gso segmentation error */
-	SKB_DROP_REASON_SKB_UCOPY_FAULT,	/* failed to copy data from
-						 * user space, e.g., via
-						 * zerocopy_sg_from_iter()
-						 * or skb_orphan_frags_rx()
-						 */
-	SKB_DROP_REASON_DEV_HDR,	/* device driver specific
-					 * header/metadata is invalid
-					 */
-	/* the device is not ready to xmit/recv due to any of its data
-	 * structure that is not up/ready/initialized, e.g., the IFF_UP is
-	 * not set, or driver specific tun->tfiles[txq] is not initialized
-	 */
-	SKB_DROP_REASON_DEV_READY,
-	SKB_DROP_REASON_FULL_RING,	/* ring buffer is full */
-	SKB_DROP_REASON_NOMEM,		/* error due to OOM */
-	SKB_DROP_REASON_HDR_TRUNC,      /* failed to trunc/extract the header
-					 * from networking data, e.g., failed
-					 * to pull the protocol header from
-					 * frags via pskb_may_pull()
-					 */
-	SKB_DROP_REASON_TAP_FILTER,     /* dropped by (ebpf) filter directly
-					 * attached to tun/tap, e.g., via
-					 * TUNSETFILTEREBPF
-					 */
-	SKB_DROP_REASON_TAP_TXFILTER,	/* dropped by tx filter implemented
-					 * at tun/tap, e.g., check_filter()
-					 */
-	SKB_DROP_REASON_ICMP_CSUM,	/* ICMP checksum error */
-	SKB_DROP_REASON_INVALID_PROTO,	/* the packet doesn't follow RFC
-					 * 2211, such as a broadcasts
-					 * ICMP_TIMESTAMP
-					 */
-	SKB_DROP_REASON_IP_INADDRERRORS,	/* host unreachable, corresponding
-						 * to IPSTATS_MIB_INADDRERRORS
-						 */
-	SKB_DROP_REASON_IP_INNOROUTES,	/* network unreachable, corresponding
-					 * to IPSTATS_MIB_INADDRERRORS
-					 */
-	SKB_DROP_REASON_PKT_TOO_BIG,	/* packet size is too big (maybe exceed
-					 * the MTU)
-					 */
-	SKB_DROP_REASON_MAX,
-};
-
-#define SKB_DR_INIT(name, reason)				\
-	enum skb_drop_reason name = SKB_DROP_REASON_##reason
-#define SKB_DR(name)						\
-	SKB_DR_INIT(name, NOT_SPECIFIED)
-#define SKB_DR_SET(name, reason)				\
-	(name = SKB_DROP_REASON_##reason)
-#define SKB_DR_OR(name, reason)					\
-	do {							\
-		if (name == SKB_DROP_REASON_NOT_SPECIFIED ||	\
-		    name == SKB_NOT_DROPPED_YET)		\
-			SKB_DR_SET(name, reason);		\
-	} while (0)
-
 /* To allow 64K frame to be packed as single skb without frag_list we
  * require 64K/PAGE_SIZE pages plus 1 additional page to allow for
  * buffers which do not start on a page boundary.
-- 
2.36.1


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

* [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string
  2022-05-27  7:15 [PATCH net-next 0/3] reorganize the code of the enum skb_drop_reason menglong8.dong
  2022-05-27  7:15 ` [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file menglong8.dong
@ 2022-05-27  7:15 ` menglong8.dong
  2022-05-27 14:03   ` kernel test robot
  2022-05-28  1:14   ` Jakub Kicinski
  2022-05-27  7:15 ` [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons menglong8.dong
  2 siblings, 2 replies; 10+ messages in thread
From: menglong8.dong @ 2022-05-27  7:15 UTC (permalink / raw)
  To: kuba
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

From: Menglong Dong <imagedong@tencent.com>

It is annoying to add new skb drop reasons to 'enum skb_drop_reason'
and TRACE_SKB_DROP_REASON in trace/event/skb.h, and it's easy to forget
to add the new reasons we added to TRACE_SKB_DROP_REASON.

TRACE_SKB_DROP_REASON is used to convert drop reason of type number
to string. For now, the string we passed to user space is exactly the
same as the name in 'enum skb_drop_reason' with a 'SKB_DROP_REASON_'
prefix. Therefore, we can use 'auto-generation' to generate these
drop reasons to string at build time.

The new header 'dropreason_str.h' will be generated, and the
__DEFINE_SKB_DROP_REASON() in it can do the converting job. Meanwhile,
we use a global array to store these string, which can be used both
in drop_monitor and 'kfree_skb' tracepoint.

Signed-off-by: Menglong Dong <imagedong@tencent.com>
---
 include/linux/dropreason.h |  2 +
 include/trace/events/skb.h | 89 +-------------------------------------
 net/core/.gitignore        |  1 +
 net/core/Makefile          | 14 ++++++
 net/core/drop_monitor.c    | 13 ------
 net/core/skbuff.c          | 12 +++++
 6 files changed, 30 insertions(+), 101 deletions(-)
 create mode 100644 net/core/.gitignore

diff --git a/include/linux/dropreason.h b/include/linux/dropreason.h
index ecd18b7b1364..013ff0f2543e 100644
--- a/include/linux/dropreason.h
+++ b/include/linux/dropreason.h
@@ -181,4 +181,6 @@ enum skb_drop_reason {
 			SKB_DR_SET(name, reason);		\
 	} while (0)
 
+extern const char * const drop_reasons[];
+
 #endif
diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h
index a477bf907498..45264e4bb254 100644
--- a/include/trace/events/skb.h
+++ b/include/trace/events/skb.h
@@ -9,92 +9,6 @@
 #include <linux/netdevice.h>
 #include <linux/tracepoint.h>
 
-#define TRACE_SKB_DROP_REASON					\
-	EM(SKB_DROP_REASON_NOT_SPECIFIED, NOT_SPECIFIED)	\
-	EM(SKB_DROP_REASON_NO_SOCKET, NO_SOCKET)		\
-	EM(SKB_DROP_REASON_PKT_TOO_SMALL, PKT_TOO_SMALL)	\
-	EM(SKB_DROP_REASON_TCP_CSUM, TCP_CSUM)			\
-	EM(SKB_DROP_REASON_SOCKET_FILTER, SOCKET_FILTER)	\
-	EM(SKB_DROP_REASON_UDP_CSUM, UDP_CSUM)			\
-	EM(SKB_DROP_REASON_NETFILTER_DROP, NETFILTER_DROP)	\
-	EM(SKB_DROP_REASON_OTHERHOST, OTHERHOST)		\
-	EM(SKB_DROP_REASON_IP_CSUM, IP_CSUM)			\
-	EM(SKB_DROP_REASON_IP_INHDR, IP_INHDR)			\
-	EM(SKB_DROP_REASON_IP_RPFILTER, IP_RPFILTER)		\
-	EM(SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,		\
-	   UNICAST_IN_L2_MULTICAST)				\
-	EM(SKB_DROP_REASON_XFRM_POLICY, XFRM_POLICY)		\
-	EM(SKB_DROP_REASON_IP_NOPROTO, IP_NOPROTO)		\
-	EM(SKB_DROP_REASON_SOCKET_RCVBUFF, SOCKET_RCVBUFF)	\
-	EM(SKB_DROP_REASON_PROTO_MEM, PROTO_MEM)		\
-	EM(SKB_DROP_REASON_TCP_MD5NOTFOUND, TCP_MD5NOTFOUND)	\
-	EM(SKB_DROP_REASON_TCP_MD5UNEXPECTED,			\
-	   TCP_MD5UNEXPECTED)					\
-	EM(SKB_DROP_REASON_TCP_MD5FAILURE, TCP_MD5FAILURE)	\
-	EM(SKB_DROP_REASON_SOCKET_BACKLOG, SOCKET_BACKLOG)	\
-	EM(SKB_DROP_REASON_TCP_FLAGS, TCP_FLAGS)		\
-	EM(SKB_DROP_REASON_TCP_ZEROWINDOW, TCP_ZEROWINDOW)	\
-	EM(SKB_DROP_REASON_TCP_OLD_DATA, TCP_OLD_DATA)		\
-	EM(SKB_DROP_REASON_TCP_OVERWINDOW, TCP_OVERWINDOW)	\
-	EM(SKB_DROP_REASON_TCP_OFOMERGE, TCP_OFOMERGE)		\
-	EM(SKB_DROP_REASON_TCP_OFO_DROP, TCP_OFO_DROP)		\
-	EM(SKB_DROP_REASON_TCP_RFC7323_PAWS, TCP_RFC7323_PAWS)	\
-	EM(SKB_DROP_REASON_TCP_INVALID_SEQUENCE,		\
-	   TCP_INVALID_SEQUENCE)				\
-	EM(SKB_DROP_REASON_TCP_RESET, TCP_RESET)		\
-	EM(SKB_DROP_REASON_TCP_INVALID_SYN, TCP_INVALID_SYN)	\
-	EM(SKB_DROP_REASON_TCP_CLOSE, TCP_CLOSE)		\
-	EM(SKB_DROP_REASON_TCP_FASTOPEN, TCP_FASTOPEN)		\
-	EM(SKB_DROP_REASON_TCP_OLD_ACK, TCP_OLD_ACK)		\
-	EM(SKB_DROP_REASON_TCP_TOO_OLD_ACK, TCP_TOO_OLD_ACK)	\
-	EM(SKB_DROP_REASON_TCP_ACK_UNSENT_DATA,			\
-	   TCP_ACK_UNSENT_DATA)					\
-	EM(SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE,			\
-	  TCP_OFO_QUEUE_PRUNE)					\
-	EM(SKB_DROP_REASON_IP_OUTNOROUTES, IP_OUTNOROUTES)	\
-	EM(SKB_DROP_REASON_BPF_CGROUP_EGRESS,			\
-	   BPF_CGROUP_EGRESS)					\
-	EM(SKB_DROP_REASON_IPV6DISABLED, IPV6DISABLED)		\
-	EM(SKB_DROP_REASON_NEIGH_CREATEFAIL, NEIGH_CREATEFAIL)	\
-	EM(SKB_DROP_REASON_NEIGH_FAILED, NEIGH_FAILED)		\
-	EM(SKB_DROP_REASON_NEIGH_QUEUEFULL, NEIGH_QUEUEFULL)	\
-	EM(SKB_DROP_REASON_NEIGH_DEAD, NEIGH_DEAD)		\
-	EM(SKB_DROP_REASON_TC_EGRESS, TC_EGRESS)		\
-	EM(SKB_DROP_REASON_QDISC_DROP, QDISC_DROP)		\
-	EM(SKB_DROP_REASON_CPU_BACKLOG, CPU_BACKLOG)		\
-	EM(SKB_DROP_REASON_XDP, XDP)				\
-	EM(SKB_DROP_REASON_TC_INGRESS, TC_INGRESS)		\
-	EM(SKB_DROP_REASON_UNHANDLED_PROTO, UNHANDLED_PROTO)	\
-	EM(SKB_DROP_REASON_SKB_CSUM, SKB_CSUM)			\
-	EM(SKB_DROP_REASON_SKB_GSO_SEG, SKB_GSO_SEG)		\
-	EM(SKB_DROP_REASON_SKB_UCOPY_FAULT, SKB_UCOPY_FAULT)	\
-	EM(SKB_DROP_REASON_DEV_HDR, DEV_HDR)			\
-	EM(SKB_DROP_REASON_DEV_READY, DEV_READY)		\
-	EM(SKB_DROP_REASON_FULL_RING, FULL_RING)		\
-	EM(SKB_DROP_REASON_NOMEM, NOMEM)			\
-	EM(SKB_DROP_REASON_HDR_TRUNC, HDR_TRUNC)		\
-	EM(SKB_DROP_REASON_TAP_FILTER, TAP_FILTER)		\
-	EM(SKB_DROP_REASON_TAP_TXFILTER, TAP_TXFILTER)		\
-	EM(SKB_DROP_REASON_ICMP_CSUM, ICMP_CSUM)		\
-	EM(SKB_DROP_REASON_INVALID_PROTO, INVALID_PROTO)	\
-	EM(SKB_DROP_REASON_IP_INADDRERRORS, IP_INADDRERRORS)	\
-	EM(SKB_DROP_REASON_IP_INNOROUTES, IP_INNOROUTES)	\
-	EM(SKB_DROP_REASON_PKT_TOO_BIG, PKT_TOO_BIG)		\
-	EMe(SKB_DROP_REASON_MAX, MAX)
-
-#undef EM
-#undef EMe
-
-#define EM(a, b)	TRACE_DEFINE_ENUM(a);
-#define EMe(a, b)	TRACE_DEFINE_ENUM(a);
-
-TRACE_SKB_DROP_REASON
-
-#undef EM
-#undef EMe
-#define EM(a, b)	{ a, #b },
-#define EMe(a, b)	{ a, #b }
-
 /*
  * Tracepoint for free an sk_buff:
  */
@@ -121,8 +35,7 @@ TRACE_EVENT(kfree_skb,
 
 	TP_printk("skbaddr=%p protocol=%u location=%p reason: %s",
 		  __entry->skbaddr, __entry->protocol, __entry->location,
-		  __print_symbolic(__entry->reason,
-				   TRACE_SKB_DROP_REASON))
+		  drop_reasons[__entry->reason])
 );
 
 TRACE_EVENT(consume_skb,
diff --git a/net/core/.gitignore b/net/core/.gitignore
new file mode 100644
index 000000000000..2148db0574dc
--- /dev/null
+++ b/net/core/.gitignore
@@ -0,0 +1 @@
+dropreason_str.h
\ No newline at end of file
diff --git a/net/core/Makefile b/net/core/Makefile
index a8e4f737692b..73b8d5f4fa09 100644
--- a/net/core/Makefile
+++ b/net/core/Makefile
@@ -39,3 +39,17 @@ obj-$(CONFIG_NET_SOCK_MSG) += skmsg.o
 obj-$(CONFIG_BPF_SYSCALL) += sock_map.o
 obj-$(CONFIG_BPF_SYSCALL) += bpf_sk_storage.o
 obj-$(CONFIG_OF)	+= of_net.o
+
+clean-files := dropreason_str.h
+
+quiet_cmd_dropreason_str = GEN     $@
+cmd_dropreason_str = echo '\n\#define __DEFINE_SKB_DROP_REASON(FN) \' > $@;\
+	sed -e '/enum skb_drop_reason {/,/}/!d' $< | \
+	awk -F ',' '/SKB_DROP_REASON_/{printf "	FN(%s) \\\n", substr($$1, 18)}' >> $@;\
+	echo '' >> $@
+
+$(obj)/dropreason_str.h: $(srctree)/include/linux/dropreason.h
+	$(call cmd,dropreason_str)
+
+$(obj)/skbuff.o: $(obj)/dropreason_str.h
+
diff --git a/net/core/drop_monitor.c b/net/core/drop_monitor.c
index 41cac0e4834e..4ad1decce724 100644
--- a/net/core/drop_monitor.c
+++ b/net/core/drop_monitor.c
@@ -48,19 +48,6 @@
 static int trace_state = TRACE_OFF;
 static bool monitor_hw;
 
-#undef EM
-#undef EMe
-
-#define EM(a, b)	[a] = #b,
-#define EMe(a, b)	[a] = #b
-
-/* drop_reasons is used to translate 'enum skb_drop_reason' to string,
- * which is reported to user space.
- */
-static const char * const drop_reasons[] = {
-	TRACE_SKB_DROP_REASON
-};
-
 /* net_dm_mutex
  *
  * An overall lock guarding every operation coming from userspace.
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 1d10bb4adec1..a4f4d3316a03 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -82,6 +82,7 @@
 
 #include "dev.h"
 #include "sock_destructor.h"
+#include "dropreason_str.h"
 
 struct kmem_cache *skbuff_head_cache __ro_after_init;
 static struct kmem_cache *skbuff_fclone_cache __ro_after_init;
@@ -91,6 +92,17 @@ static struct kmem_cache *skbuff_ext_cache __ro_after_init;
 int sysctl_max_skb_frags __read_mostly = MAX_SKB_FRAGS;
 EXPORT_SYMBOL(sysctl_max_skb_frags);
 
+/* drop_reasons is used to translate 'enum skb_drop_reason' to string,
+ * which is reported to user space.
+ */
+const char * const drop_reasons[] = {
+#undef FN
+#define FN(name) [SKB_DROP_REASON_##name] = #name,
+	__DEFINE_SKB_DROP_REASON(FN)
+#undef FN
+};
+EXPORT_SYMBOL(drop_reasons);
+
 /**
  *	skb_panic - private function for out-of-line support
  *	@skb:	buffer
-- 
2.36.1


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

* [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons
  2022-05-27  7:15 [PATCH net-next 0/3] reorganize the code of the enum skb_drop_reason menglong8.dong
  2022-05-27  7:15 ` [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file menglong8.dong
  2022-05-27  7:15 ` [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string menglong8.dong
@ 2022-05-27  7:15 ` menglong8.dong
  2022-05-28  1:19   ` Jakub Kicinski
  2 siblings, 1 reply; 10+ messages in thread
From: menglong8.dong @ 2022-05-27  7:15 UTC (permalink / raw)
  To: kuba
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

From: Menglong Dong <imagedong@tencent.com>

To make the code clear, reformat the comment in dropreason.h to k-doc
style.

Now, the comment can pass the check of kernel-doc without warnning:

$ ./scripts/kernel-doc -v -none include/linux/dropreason.h
include/linux/dropreason.h:7: info: Scanning doc for enum skb_drop_reason

Signed-off-by: Menglong Dong <imagedong@tencent.com>
---
 include/linux/dropreason.h | 323 +++++++++++++++++++------------------
 1 file changed, 166 insertions(+), 157 deletions(-)

diff --git a/include/linux/dropreason.h b/include/linux/dropreason.h
index 013ff0f2543e..bccda6a4d8c2 100644
--- a/include/linux/dropreason.h
+++ b/include/linux/dropreason.h
@@ -3,168 +3,177 @@
 #ifndef _LINUX_DROPREASON_H
 #define _LINUX_DROPREASON_H
 
-/* The reason of skb drop, which is used in kfree_skb_reason().
- * en...maybe they should be splited by group?
+/**
+ * enum skb_drop_reason - the reasons of skb drops
+ * @SKB_NOT_DROPPED_YET: skb is not dropped yet (used for no-drop case)
+ * @SKB_DROP_REASON_NOT_SPECIFIED: drop reason is not specified
+ * @SKB_DROP_REASON_NO_SOCKET: socket not found
+ * @SKB_DROP_REASON_PKT_TOO_SMALL: packet size is too small
+ * @SKB_DROP_REASON_TCP_CSUM: TCP checksum error
+ * @SKB_DROP_REASON_SOCKET_FILTER: dropped by socket filter
+ * @SKB_DROP_REASON_UDP_CSUM: UDP checksum error
+ * @SKB_DROP_REASON_NETFILTER_DROP: dropped by netfilter
+ * @SKB_DROP_REASON_OTHERHOST: packet don't belong to current host
+ *	(interface is in promisc mode)
+ * @SKB_DROP_REASON_IP_CSUM: IP checksum error
+ * @SKB_DROP_REASON_IP_INHDR: there is something wrong with IP header (see
+ *	IPSTATS_MIB_INHDRERRORS)
+ * @SKB_DROP_REASON_IP_RPFILTER: IP rpfilter validate failed. see the
+ *	document for rp_filter in ip-sysctl.rst for more information
+ * @SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST: destination address of L2 is
+ *	multicast, but L3 is unicast.
+ * @SKB_DROP_REASON_XFRM_POLICY: xfrm policy check failed
+ * @SKB_DROP_REASON_IP_NOPROTO: no support for IP protocol
+ * @SKB_DROP_REASON_SOCKET_RCVBUFF: socket receive buff is full
+ * @SKB_DROP_REASON_PROTO_MEM: proto memory limition, such as udp packet
+ *	drop out of udp_memory_allocated.
+ * @SKB_DROP_REASON_TCP_MD5NOTFOUND: no MD5 hash and one expected,
+ *	corresponding to LINUX_MIB_TCPMD5NOTFOUND
+ * @SKB_DROP_REASON_TCP_MD5UNEXPECTED: MD5 hash and we're not expecting
+ *	one, corresponding to LINUX_MIB_TCPMD5UNEXPECTED
+ * @SKB_DROP_REASON_TCP_MD5FAILURE: MD5 hash and its wrong, corresponding
+ *	to LINUX_MIB_TCPMD5FAILURE
+ * @SKB_DROP_REASON_SOCKET_BACKLOG: failed to add skb to socket backlog (
+ *	see LINUX_MIB_TCPBACKLOGDROP)
+ * @SKB_DROP_REASON_TCP_FLAGS: TCP flags invalid
+ * @SKB_DROP_REASON_TCP_ZEROWINDOW: TCP receive window size is zero,
+ *	see LINUX_MIB_TCPZEROWINDOWDROP
+ * @SKB_DROP_REASON_TCP_OLD_DATA: the TCP data reveived is already
+ *	received before (spurious retrans may happened), see
+ *	LINUX_MIB_DELAYEDACKLOST
+ * @SKB_DROP_REASON_TCP_OVERWINDOW: the TCP data is out of window,
+ *	the seq of the first byte exceed the right edges of receive
+ *	window
+ * @SKB_DROP_REASON_TCP_OFOMERGE: the data of skb is already in the ofo
+ *	queue, corresponding to LINUX_MIB_TCPOFOMERGE
+ * @SKB_DROP_REASON_TCP_RFC7323_PAWS: PAWS check, corresponding to
+ *	LINUX_MIB_PAWSESTABREJECTED
+ * @SKB_DROP_REASON_TCP_INVALID_SEQUENCE: Not acceptable SEQ field
+ * @SKB_DROP_REASON_TCP_RESET: Invalid RST packet
+ * @SKB_DROP_REASON_TCP_INVALID_SYN: Incoming packet has unexpected SYN flag
+ * @SKB_DROP_REASON_TCP_CLOSE: TCP socket in CLOSE state
+ * @SKB_DROP_REASON_TCP_FASTOPEN: dropped by FASTOPEN request socket
+ * @SKB_DROP_REASON_TCP_OLD_ACK: TCP ACK is old, but in window
+ * @SKB_DROP_REASON_TCP_TOO_OLD_ACK: TCP ACK is too old
+ * @SKB_DROP_REASON_TCP_ACK_UNSENT_DATA: TCP ACK for data we haven't sent yet
+ * @SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE: pruned from TCP OFO queue
+ * @SKB_DROP_REASON_TCP_OFO_DROP: data already in receive queue
+ * @SKB_DROP_REASON_IP_OUTNOROUTES: route lookup failed
+ * @SKB_DROP_REASON_BPF_CGROUP_EGRESS: dropped by BPF_PROG_TYPE_CGROUP_SKB
+ *	eBPF program
+ * @SKB_DROP_REASON_IPV6DISABLED: IPv6 is disabled on the device
+ * @SKB_DROP_REASON_NEIGH_CREATEFAIL: failed to create neigh entry
+ * @SKB_DROP_REASON_NEIGH_FAILED: neigh entry in failed state
+ * @SKB_DROP_REASON_NEIGH_QUEUEFULL: arp_queue for neigh entry is full
+ * @SKB_DROP_REASON_NEIGH_DEAD: neigh entry is dead
+ * @SKB_DROP_REASON_TC_EGRESS: dropped in TC egress HOOK
+ * @SKB_DROP_REASON_QDISC_DROP: dropped by qdisc when packet outputting (
+ *	failed to enqueue to current qdisc)
+ * @SKB_DROP_REASON_CPU_BACKLOG: failed to enqueue the skb to the per CPU
+ *	backlog queue. This can be caused by backlog queue full (see
+ *	netdev_max_backlog in net.rst) or RPS flow limit
+ * @SKB_DROP_REASON_XDP: dropped by XDP in input path
+ * @SKB_DROP_REASON_TC_INGRESS: dropped in TC ingress HOOK
+ * @SKB_DROP_REASON_UNHANDLED_PROTO: protocol not implemented or not supported
+ * @SKB_DROP_REASON_SKB_CSUM: sk_buff checksum computation error
+ * @SKB_DROP_REASON_SKB_GSO_SEG: gso segmentation error
+ * @SKB_DROP_REASON_SKB_UCOPY_FAULT: failed to copy data from user space,
+ *	e.g., via zerocopy_sg_from_iter() or skb_orphan_frags_rx()
+ * @SKB_DROP_REASON_DEV_HDR: device driver specific header/metadata is invalid
+ * @SKB_DROP_REASON_DEV_READY: the device is not ready to xmit/recv due to
+ *	any of its data structure that is not up/ready/initialized,
+ *	e.g., the IFF_UP is not set, or driver specific tun->tfiles[txq]
+ *	is not initialized
+ * @SKB_DROP_REASON_FULL_RING: ring buffer is full
+ * @SKB_DROP_REASON_NOMEM: error due to OOM
+ * @SKB_DROP_REASON_HDR_TRUNC: failed to trunc/extract the header from
+ *	networking data, e.g., failed to pull the protocol header from
+ *	frags via pskb_may_pull()
+ * @SKB_DROP_REASON_TAP_FILTER: dropped by (ebpf) filter directly attached
+ *	to tun/tap, e.g., via TUNSETFILTEREBPF
+ * @SKB_DROP_REASON_TAP_TXFILTER: dropped by tx filter implemented at
+ *	tun/tap, e.g., check_filter()
+ * @SKB_DROP_REASON_ICMP_CSUM: ICMP checksum error
+ * @SKB_DROP_REASON_INVALID_PROTO: the packet doesn't follow RFC 2211,
+ *	such as a broadcasts ICMP_TIMESTAMP
+ * @SKB_DROP_REASON_IP_INADDRERRORS: host unreachable, corresponding to
+ *	IPSTATS_MIB_INADDRERRORS
+ * @SKB_DROP_REASON_IP_INNOROUTES: network unreachable, corresponding to
+ *	IPSTATS_MIB_INADDRERRORS
+ * @SKB_DROP_REASON_PKT_TOO_BIG: packet size is too big (maybe exceed the
+ *	MTU)
+ * @SKB_DROP_REASON_MAX: the maximum of drop reason, which shouldn't be
+ *	used as a real 'reason'
  *
- * Each item here should also be in 'TRACE_SKB_DROP_REASON', which is
- * used to translate the reason to string.
+ * The reason of skb drop, which is used in kfree_skb_reason().
+ * en...maybe they should be splited by group?
  */
 enum skb_drop_reason {
 	SKB_NOT_DROPPED_YET = 0,
-	SKB_DROP_REASON_NOT_SPECIFIED,	/* drop reason is not specified */
-	SKB_DROP_REASON_NO_SOCKET,	/* socket not found */
-	SKB_DROP_REASON_PKT_TOO_SMALL,	/* packet size is too small */
-	SKB_DROP_REASON_TCP_CSUM,	/* TCP checksum error */
-	SKB_DROP_REASON_SOCKET_FILTER,	/* dropped by socket filter */
-	SKB_DROP_REASON_UDP_CSUM,	/* UDP checksum error */
-	SKB_DROP_REASON_NETFILTER_DROP,	/* dropped by netfilter */
-	SKB_DROP_REASON_OTHERHOST,	/* packet don't belong to current
-					 * host (interface is in promisc
-					 * mode)
-					 */
-	SKB_DROP_REASON_IP_CSUM,	/* IP checksum error */
-	SKB_DROP_REASON_IP_INHDR,	/* there is something wrong with
-					 * IP header (see
-					 * IPSTATS_MIB_INHDRERRORS)
-					 */
-	SKB_DROP_REASON_IP_RPFILTER,	/* IP rpfilter validate failed.
-					 * see the document for rp_filter
-					 * in ip-sysctl.rst for more
-					 * information
-					 */
-	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST, /* destination address of L2
-						  * is multicast, but L3 is
-						  * unicast.
-						  */
-	SKB_DROP_REASON_XFRM_POLICY,	/* xfrm policy check failed */
-	SKB_DROP_REASON_IP_NOPROTO,	/* no support for IP protocol */
-	SKB_DROP_REASON_SOCKET_RCVBUFF,	/* socket receive buff is full */
-	SKB_DROP_REASON_PROTO_MEM,	/* proto memory limition, such as
-					 * udp packet drop out of
-					 * udp_memory_allocated.
-					 */
-	SKB_DROP_REASON_TCP_MD5NOTFOUND,	/* no MD5 hash and one
-						 * expected, corresponding
-						 * to LINUX_MIB_TCPMD5NOTFOUND
-						 */
-	SKB_DROP_REASON_TCP_MD5UNEXPECTED,	/* MD5 hash and we're not
-						 * expecting one, corresponding
-						 * to LINUX_MIB_TCPMD5UNEXPECTED
-						 */
-	SKB_DROP_REASON_TCP_MD5FAILURE,	/* MD5 hash and its wrong,
-					 * corresponding to
-					 * LINUX_MIB_TCPMD5FAILURE
-					 */
-	SKB_DROP_REASON_SOCKET_BACKLOG,	/* failed to add skb to socket
-					 * backlog (see
-					 * LINUX_MIB_TCPBACKLOGDROP)
-					 */
-	SKB_DROP_REASON_TCP_FLAGS,	/* TCP flags invalid */
-	SKB_DROP_REASON_TCP_ZEROWINDOW,	/* TCP receive window size is zero,
-					 * see LINUX_MIB_TCPZEROWINDOWDROP
-					 */
-	SKB_DROP_REASON_TCP_OLD_DATA,	/* the TCP data reveived is already
-					 * received before (spurious retrans
-					 * may happened), see
-					 * LINUX_MIB_DELAYEDACKLOST
-					 */
-	SKB_DROP_REASON_TCP_OVERWINDOW,	/* the TCP data is out of window,
-					 * the seq of the first byte exceed
-					 * the right edges of receive
-					 * window
-					 */
-	SKB_DROP_REASON_TCP_OFOMERGE,	/* the data of skb is already in
-					 * the ofo queue, corresponding to
-					 * LINUX_MIB_TCPOFOMERGE
-					 */
-	SKB_DROP_REASON_TCP_RFC7323_PAWS, /* PAWS check, corresponding to
-					   * LINUX_MIB_PAWSESTABREJECTED
-					   */
-	SKB_DROP_REASON_TCP_INVALID_SEQUENCE, /* Not acceptable SEQ field */
-	SKB_DROP_REASON_TCP_RESET,	/* Invalid RST packet */
-	SKB_DROP_REASON_TCP_INVALID_SYN, /* Incoming packet has unexpected SYN flag */
-	SKB_DROP_REASON_TCP_CLOSE,	/* TCP socket in CLOSE state */
-	SKB_DROP_REASON_TCP_FASTOPEN,	/* dropped by FASTOPEN request socket */
-	SKB_DROP_REASON_TCP_OLD_ACK,	/* TCP ACK is old, but in window */
-	SKB_DROP_REASON_TCP_TOO_OLD_ACK, /* TCP ACK is too old */
-	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA, /* TCP ACK for data we haven't sent yet */
-	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE, /* pruned from TCP OFO queue */
-	SKB_DROP_REASON_TCP_OFO_DROP,	/* data already in receive queue */
-	SKB_DROP_REASON_IP_OUTNOROUTES,	/* route lookup failed */
-	SKB_DROP_REASON_BPF_CGROUP_EGRESS,	/* dropped by
-						 * BPF_PROG_TYPE_CGROUP_SKB
-						 * eBPF program
-						 */
-	SKB_DROP_REASON_IPV6DISABLED,	/* IPv6 is disabled on the device */
-	SKB_DROP_REASON_NEIGH_CREATEFAIL,	/* failed to create neigh
-						 * entry
-						 */
-	SKB_DROP_REASON_NEIGH_FAILED,	/* neigh entry in failed state */
-	SKB_DROP_REASON_NEIGH_QUEUEFULL,	/* arp_queue for neigh
-						 * entry is full
-						 */
-	SKB_DROP_REASON_NEIGH_DEAD,	/* neigh entry is dead */
-	SKB_DROP_REASON_TC_EGRESS,	/* dropped in TC egress HOOK */
-	SKB_DROP_REASON_QDISC_DROP,	/* dropped by qdisc when packet
-					 * outputting (failed to enqueue to
-					 * current qdisc)
-					 */
-	SKB_DROP_REASON_CPU_BACKLOG,	/* failed to enqueue the skb to
-					 * the per CPU backlog queue. This
-					 * can be caused by backlog queue
-					 * full (see netdev_max_backlog in
-					 * net.rst) or RPS flow limit
-					 */
-	SKB_DROP_REASON_XDP,		/* dropped by XDP in input path */
-	SKB_DROP_REASON_TC_INGRESS,	/* dropped in TC ingress HOOK */
-	SKB_DROP_REASON_UNHANDLED_PROTO,	/* protocol not implemented
-						 * or not supported
-						 */
-	SKB_DROP_REASON_SKB_CSUM,	/* sk_buff checksum computation
-					 * error
-					 */
-	SKB_DROP_REASON_SKB_GSO_SEG,	/* gso segmentation error */
-	SKB_DROP_REASON_SKB_UCOPY_FAULT,	/* failed to copy data from
-						 * user space, e.g., via
-						 * zerocopy_sg_from_iter()
-						 * or skb_orphan_frags_rx()
-						 */
-	SKB_DROP_REASON_DEV_HDR,	/* device driver specific
-					 * header/metadata is invalid
-					 */
-	/* the device is not ready to xmit/recv due to any of its data
-	 * structure that is not up/ready/initialized, e.g., the IFF_UP is
-	 * not set, or driver specific tun->tfiles[txq] is not initialized
-	 */
+	SKB_DROP_REASON_NOT_SPECIFIED,
+	SKB_DROP_REASON_NO_SOCKET,
+	SKB_DROP_REASON_PKT_TOO_SMALL,
+	SKB_DROP_REASON_TCP_CSUM,
+	SKB_DROP_REASON_SOCKET_FILTER,
+	SKB_DROP_REASON_UDP_CSUM,
+	SKB_DROP_REASON_NETFILTER_DROP,
+	SKB_DROP_REASON_OTHERHOST,
+	SKB_DROP_REASON_IP_CSUM,
+	SKB_DROP_REASON_IP_INHDR,
+	SKB_DROP_REASON_IP_RPFILTER,
+	SKB_DROP_REASON_UNICAST_IN_L2_MULTICAST,
+	SKB_DROP_REASON_XFRM_POLICY,
+	SKB_DROP_REASON_IP_NOPROTO,
+	SKB_DROP_REASON_SOCKET_RCVBUFF,
+	SKB_DROP_REASON_PROTO_MEM,
+	SKB_DROP_REASON_TCP_MD5NOTFOUND,
+	SKB_DROP_REASON_TCP_MD5UNEXPECTED,
+	SKB_DROP_REASON_TCP_MD5FAILURE,
+	SKB_DROP_REASON_SOCKET_BACKLOG,
+	SKB_DROP_REASON_TCP_FLAGS,
+	SKB_DROP_REASON_TCP_ZEROWINDOW,
+	SKB_DROP_REASON_TCP_OLD_DATA,
+	SKB_DROP_REASON_TCP_OVERWINDOW,
+	SKB_DROP_REASON_TCP_OFOMERGE,
+	SKB_DROP_REASON_TCP_RFC7323_PAWS,
+	SKB_DROP_REASON_TCP_INVALID_SEQUENCE,
+	SKB_DROP_REASON_TCP_RESET,
+	SKB_DROP_REASON_TCP_INVALID_SYN,
+	SKB_DROP_REASON_TCP_CLOSE,
+	SKB_DROP_REASON_TCP_FASTOPEN,
+	SKB_DROP_REASON_TCP_OLD_ACK,
+	SKB_DROP_REASON_TCP_TOO_OLD_ACK,
+	SKB_DROP_REASON_TCP_ACK_UNSENT_DATA,
+	SKB_DROP_REASON_TCP_OFO_QUEUE_PRUNE,
+	SKB_DROP_REASON_TCP_OFO_DROP,
+	SKB_DROP_REASON_IP_OUTNOROUTES,
+	SKB_DROP_REASON_BPF_CGROUP_EGRESS,
+	SKB_DROP_REASON_IPV6DISABLED,
+	SKB_DROP_REASON_NEIGH_CREATEFAIL,
+	SKB_DROP_REASON_NEIGH_FAILED,
+	SKB_DROP_REASON_NEIGH_QUEUEFULL,
+	SKB_DROP_REASON_NEIGH_DEAD,
+	SKB_DROP_REASON_TC_EGRESS,
+	SKB_DROP_REASON_QDISC_DROP,
+	SKB_DROP_REASON_CPU_BACKLOG,
+	SKB_DROP_REASON_XDP,
+	SKB_DROP_REASON_TC_INGRESS,
+	SKB_DROP_REASON_UNHANDLED_PROTO,
+	SKB_DROP_REASON_SKB_CSUM,
+	SKB_DROP_REASON_SKB_GSO_SEG,
+	SKB_DROP_REASON_SKB_UCOPY_FAULT,
+	SKB_DROP_REASON_DEV_HDR,
 	SKB_DROP_REASON_DEV_READY,
-	SKB_DROP_REASON_FULL_RING,	/* ring buffer is full */
-	SKB_DROP_REASON_NOMEM,		/* error due to OOM */
-	SKB_DROP_REASON_HDR_TRUNC,      /* failed to trunc/extract the header
-					 * from networking data, e.g., failed
-					 * to pull the protocol header from
-					 * frags via pskb_may_pull()
-					 */
-	SKB_DROP_REASON_TAP_FILTER,     /* dropped by (ebpf) filter directly
-					 * attached to tun/tap, e.g., via
-					 * TUNSETFILTEREBPF
-					 */
-	SKB_DROP_REASON_TAP_TXFILTER,	/* dropped by tx filter implemented
-					 * at tun/tap, e.g., check_filter()
-					 */
-	SKB_DROP_REASON_ICMP_CSUM,	/* ICMP checksum error */
-	SKB_DROP_REASON_INVALID_PROTO,	/* the packet doesn't follow RFC
-					 * 2211, such as a broadcasts
-					 * ICMP_TIMESTAMP
-					 */
-	SKB_DROP_REASON_IP_INADDRERRORS,	/* host unreachable, corresponding
-						 * to IPSTATS_MIB_INADDRERRORS
-						 */
-	SKB_DROP_REASON_IP_INNOROUTES,	/* network unreachable, corresponding
-					 * to IPSTATS_MIB_INADDRERRORS
-					 */
-	SKB_DROP_REASON_PKT_TOO_BIG,	/* packet size is too big (maybe exceed
-					 * the MTU)
-					 */
+	SKB_DROP_REASON_FULL_RING,
+	SKB_DROP_REASON_NOMEM,
+	SKB_DROP_REASON_HDR_TRUNC,
+	SKB_DROP_REASON_TAP_FILTER,
+	SKB_DROP_REASON_TAP_TXFILTER,
+	SKB_DROP_REASON_ICMP_CSUM,
+	SKB_DROP_REASON_INVALID_PROTO,
+	SKB_DROP_REASON_IP_INADDRERRORS,
+	SKB_DROP_REASON_IP_INNOROUTES,
+	SKB_DROP_REASON_PKT_TOO_BIG,
 	SKB_DROP_REASON_MAX,
 };
 
-- 
2.36.1


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

* Re: [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string
  2022-05-27  7:15 ` [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string menglong8.dong
@ 2022-05-27 14:03   ` kernel test robot
  2022-05-28  1:14   ` Jakub Kicinski
  1 sibling, 0 replies; 10+ messages in thread
From: kernel test robot @ 2022-05-27 14:03 UTC (permalink / raw)
  To: menglong8.dong, kuba
  Cc: kbuild-all, rostedt, mingo, davem, edumazet, pabeni, nhorman,
	ast, daniel, andrii, kafai, songliubraving, yhs, john.fastabend,
	kpsingh, imagedong, dsahern, talalahmad, keescook, linux-kernel,
	netdev, bpf

Hi,

Thank you for the patch! Yet something to improve:

[auto build test ERROR on net-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/menglong8-dong-gmail-com/reorganize-the-code-of-the-enum-skb_drop_reason/20220527-152050
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 7e062cda7d90543ac8c7700fc7c5527d0c0f22ad
config: x86_64-randconfig-a013 (https://download.01.org/0day-ci/archive/20220527/202205272154.7zdeh6A3-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.3.0-1) 11.3.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/0a1ac892edba0134b4891c9e61e06d462f8262a9
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review menglong8-dong-gmail-com/reorganize-the-code-of-the-enum-skb_drop_reason/20220527-152050
        git checkout 0a1ac892edba0134b4891c9e61e06d462f8262a9
        # save the config file
        make W=1 ARCH=x86_64 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   In file included from net/core/skbuff.c:85:
   ./net/core/dropreason_str.h:1:1: error: stray '\' in program
       1 | \n#define __DEFINE_SKB_DROP_REASON(FN) \
         | ^
   ./net/core/dropreason_str.h:1:3: error: stray '#' in program
       1 | \n#define __DEFINE_SKB_DROP_REASON(FN) \
         |   ^
>> ./net/core/dropreason_str.h:1:2: error: unknown type name 'n'
       1 | \n#define __DEFINE_SKB_DROP_REASON(FN) \
         |  ^
>> ./net/core/dropreason_str.h:1:11: error: expected '=', ',', ';', 'asm' or '__attribute__' before '__DEFINE_SKB_DROP_REASON'
       1 | \n#define __DEFINE_SKB_DROP_REASON(FN) \
         |           ^~~~~~~~~~~~~~~~~~~~~~~~
>> net/core/skbuff.c:101:9: error: implicit declaration of function '__DEFINE_SKB_DROP_REASON' [-Werror=implicit-function-declaration]
     101 |         __DEFINE_SKB_DROP_REASON(FN)
         |         ^~~~~~~~~~~~~~~~~~~~~~~~
>> net/core/skbuff.c:101:34: error: 'FN' undeclared here (not in a function)
     101 |         __DEFINE_SKB_DROP_REASON(FN)
         |                                  ^~
   cc1: some warnings being treated as errors

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

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

* Re: [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file
  2022-05-27  7:15 ` [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file menglong8.dong
@ 2022-05-28  1:08   ` Jakub Kicinski
  0 siblings, 0 replies; 10+ messages in thread
From: Jakub Kicinski @ 2022-05-28  1:08 UTC (permalink / raw)
  To: menglong8.dong
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

On Fri, 27 May 2022 15:15:20 +0800 menglong8.dong@gmail.com wrote:
> +++ b/include/linux/dropreason.h

include/net is probably a better location for it

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

* Re: [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string
  2022-05-27  7:15 ` [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string menglong8.dong
  2022-05-27 14:03   ` kernel test robot
@ 2022-05-28  1:14   ` Jakub Kicinski
  2022-05-28  4:26     ` Menglong Dong
  1 sibling, 1 reply; 10+ messages in thread
From: Jakub Kicinski @ 2022-05-28  1:14 UTC (permalink / raw)
  To: menglong8.dong
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

On Fri, 27 May 2022 15:15:21 +0800 menglong8.dong@gmail.com wrote:
> +clean-files := dropreason_str.h
> +
> +quiet_cmd_dropreason_str = GEN     $@
> +cmd_dropreason_str = echo '\n\#define __DEFINE_SKB_DROP_REASON(FN) \' > $@;\

echo -n

> +	sed -e '/enum skb_drop_reason {/,/}/!d' $< | \
> +	awk -F ',' '/SKB_DROP_REASON_/{printf "	FN(%s) \\\n", substr($$1, 18)}' >> $@;\
> +	echo '' >> $@

Trying to figure out when we're in the enum could be more robust
in case more stuff gets added to the header:

 | awk -F ',' '/^enum skb_drop/ { dr=1; } 
               /\}\;/           { dr=0; } 
               /^\tSKB_DROP/    { if (dr) {print $1;}}'

> +$(obj)/dropreason_str.h: $(srctree)/include/linux/dropreason.h
> +	$(call cmd,dropreason_str)
> +
> +$(obj)/skbuff.o: $(obj)/dropreason_str.h

Since we just generate the array directly now should we generate
a source file with it directly instead of generating a header with 
the huge define?

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

* Re: [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons
  2022-05-27  7:15 ` [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons menglong8.dong
@ 2022-05-28  1:19   ` Jakub Kicinski
  2022-05-28  4:32     ` Menglong Dong
  0 siblings, 1 reply; 10+ messages in thread
From: Jakub Kicinski @ 2022-05-28  1:19 UTC (permalink / raw)
  To: menglong8.dong
  Cc: rostedt, mingo, davem, edumazet, pabeni, nhorman, ast, daniel,
	andrii, kafai, songliubraving, yhs, john.fastabend, kpsingh,
	imagedong, dsahern, talalahmad, keescook, linux-kernel, netdev,
	bpf

On Fri, 27 May 2022 15:15:22 +0800 menglong8.dong@gmail.com wrote:
> From: Menglong Dong <imagedong@tencent.com>
> 
> To make the code clear, reformat the comment in dropreason.h to k-doc
> style.
> 
> Now, the comment can pass the check of kernel-doc without warnning:
> 
> $ ./scripts/kernel-doc -v -none include/linux/dropreason.h
> include/linux/dropreason.h:7: info: Scanning doc for enum skb_drop_reason
> 
> Signed-off-by: Menglong Dong <imagedong@tencent.com>

I feel bad for suggesting this after you reformatted all the values 
but could we use inline notation here? With a huge enum like this
there's a lot of scrolling between documentation and the value.

/**
 * enum skb_drop_reason - the reasons of skb drops
 *
 * The reason of skb drop, which is used in kfree_skb_reason().
 * en...maybe they should be splited by group?
 */
 enum skb_drop_reason {
	/**
	 * @SKB_NOT_DROPPED_YET: skb is not dropped yet (used for no-drop case)
	 */
 	SKB_NOT_DROPPED_YET = 0,
	/** @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,
...

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

* Re: [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string
  2022-05-28  1:14   ` Jakub Kicinski
@ 2022-05-28  4:26     ` Menglong Dong
  0 siblings, 0 replies; 10+ messages in thread
From: Menglong Dong @ 2022-05-28  4:26 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Steven Rostedt, Ingo Molnar, David Miller, Eric Dumazet,
	Paolo Abeni, Neil Horman, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Menglong Dong, David Ahern,
	Talal Ahmad, Kees Cook, LKML, netdev, bpf

On Sat, May 28, 2022 at 9:14 AM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Fri, 27 May 2022 15:15:21 +0800 menglong8.dong@gmail.com wrote:
> > +clean-files := dropreason_str.h
> > +
> > +quiet_cmd_dropreason_str = GEN     $@
> > +cmd_dropreason_str = echo '\n\#define __DEFINE_SKB_DROP_REASON(FN) \' > $@;\
>
> echo -n
>
> > +     sed -e '/enum skb_drop_reason {/,/}/!d' $< | \
> > +     awk -F ',' '/SKB_DROP_REASON_/{printf " FN(%s) \\\n", substr($$1, 18)}' >> $@;\
> > +     echo '' >> $@
>
> Trying to figure out when we're in the enum could be more robust
> in case more stuff gets added to the header:
>
>  | awk -F ',' '/^enum skb_drop/ { dr=1; }
>                /\}\;/           { dr=0; }
>                /^\tSKB_DROP/    { if (dr) {print $1;}}'
>
> > +$(obj)/dropreason_str.h: $(srctree)/include/linux/dropreason.h
> > +     $(call cmd,dropreason_str)
> > +
> > +$(obj)/skbuff.o: $(obj)/dropreason_str.h
>
> Since we just generate the array directly now should we generate
> a source file with it directly instead of generating a header with
> the huge define?

This seems to be a good idea, which is able to decouple the
definition of the array with skbuff.c. I'll try this.

Thanks!
Menglong Dong

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

* Re: [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons
  2022-05-28  1:19   ` Jakub Kicinski
@ 2022-05-28  4:32     ` Menglong Dong
  0 siblings, 0 replies; 10+ messages in thread
From: Menglong Dong @ 2022-05-28  4:32 UTC (permalink / raw)
  To: Jakub Kicinski
  Cc: Steven Rostedt, Ingo Molnar, David Miller, Eric Dumazet,
	Paolo Abeni, Neil Horman, Alexei Starovoitov, Daniel Borkmann,
	Andrii Nakryiko, Martin Lau, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, Menglong Dong, David Ahern,
	Talal Ahmad, Kees Cook, LKML, netdev, bpf

On Sat, May 28, 2022 at 9:19 AM Jakub Kicinski <kuba@kernel.org> wrote:
>
> On Fri, 27 May 2022 15:15:22 +0800 menglong8.dong@gmail.com wrote:
> > From: Menglong Dong <imagedong@tencent.com>
> >
> > To make the code clear, reformat the comment in dropreason.h to k-doc
> > style.
> >
> > Now, the comment can pass the check of kernel-doc without warnning:
> >
> > $ ./scripts/kernel-doc -v -none include/linux/dropreason.h
> > include/linux/dropreason.h:7: info: Scanning doc for enum skb_drop_reason
> >
> > Signed-off-by: Menglong Dong <imagedong@tencent.com>
>
> I feel bad for suggesting this after you reformatted all the values
> but could we use inline notation here? With a huge enum like this
> there's a lot of scrolling between documentation and the value.
>
> /**
>  * enum skb_drop_reason - the reasons of skb drops
>  *
>  * The reason of skb drop, which is used in kfree_skb_reason().
>  * en...maybe they should be splited by group?
>  */
>  enum skb_drop_reason {
>         /**
>          * @SKB_NOT_DROPPED_YET: skb is not dropped yet (used for no-drop case)
>          */
>         SKB_NOT_DROPPED_YET = 0,
>         /** @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,
> ...

The inline comment is an option, which I thought of. But I found it
makes the code a little not tidy. Of course, inline comments are
easier to read. Anyway, I'll have a try and make them inline.

Thanks!
Menglong Dong

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

end of thread, other threads:[~2022-05-28  4:32 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-27  7:15 [PATCH net-next 0/3] reorganize the code of the enum skb_drop_reason menglong8.dong
2022-05-27  7:15 ` [PATCH net-next 1/3] net: skb: move enum skb_drop_reason to standalone header file menglong8.dong
2022-05-28  1:08   ` Jakub Kicinski
2022-05-27  7:15 ` [PATCH net-next 2/3] net: skb: use auto-generation to convert skb drop reason to string menglong8.dong
2022-05-27 14:03   ` kernel test robot
2022-05-28  1:14   ` Jakub Kicinski
2022-05-28  4:26     ` Menglong Dong
2022-05-27  7:15 ` [PATCH net-next 3/3] net: dropreason: reformat the comment fo skb drop reasons menglong8.dong
2022-05-28  1:19   ` Jakub Kicinski
2022-05-28  4:32     ` Menglong Dong

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).