diff --git a/tools/bpf/bpftool/Documentation/bpftool-prog.rst b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
index fe1b38e7e887..abf5f4cd7d3e 100644
--- a/tools/bpf/bpftool/Documentation/bpftool-prog.rst
+++ b/tools/bpf/bpftool/Documentation/bpftool-prog.rst
@@ -48,7 +48,7 @@ PROG COMMANDS
 |		**struct_ops** | **fentry** | **fexit** | **freplace** | **sk_lookup**
 |	}
 |       *ATTACH_TYPE* := {
-|		**msg_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
+|		**msg_verdict** | **skb_verdict** | **stream_verdict** | **stream_parser** | **flow_dissector**
 |	}
 |	*METRICs* := {
 |		**cycles** | **instructions** | **l1d_loads** | **llc_misses**
diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool
index b2e33a2d8524..69d018474537 100644
--- a/tools/bpf/bpftool/bash-completion/bpftool
+++ b/tools/bpf/bpftool/bash-completion/bpftool
@@ -405,7 +405,8 @@ _bpftool()
                             ;;
                         5)
                             local BPFTOOL_PROG_ATTACH_TYPES='msg_verdict \
-                                stream_verdict stream_parser flow_dissector'
+                                skb_verdict stream_verdict stream_parser \
+                                flow_dissector'
                             COMPREPLY=( $( compgen -W \
                                 "$BPFTOOL_PROG_ATTACH_TYPES" -- "$cur" ) )
                             return 0
@@ -708,7 +709,7 @@ _bpftool()
                                 hash_of_maps devmap devmap_hash sockmap cpumap \
                                 xskmap sockhash cgroup_storage reuseport_sockarray \
                                 percpu_cgroup_storage queue stack sk_storage \
-                                struct_ops inode_storage task_storage'
+                                struct_ops inode_storage task_storage ringbuf'
                             COMPREPLY=( $( compgen -W \
                                 "$BPFTOOL_MAP_CREATE_TYPES" -- "$cur" ) )
                             return 0
diff --git a/tools/bpf/bpftool/common.c b/tools/bpf/bpftool/common.c
index 1828bba19020..b47797cac64f 100644
--- a/tools/bpf/bpftool/common.c
+++ b/tools/bpf/bpftool/common.c
@@ -31,42 +31,48 @@
 #endif
 
 const char * const attach_type_name[__MAX_BPF_ATTACH_TYPE] = {
-	[BPF_CGROUP_INET_INGRESS]	= "ingress",
-	[BPF_CGROUP_INET_EGRESS]	= "egress",
-	[BPF_CGROUP_INET_SOCK_CREATE]	= "sock_create",
-	[BPF_CGROUP_INET_SOCK_RELEASE]	= "sock_release",
-	[BPF_CGROUP_SOCK_OPS]		= "sock_ops",
-	[BPF_CGROUP_DEVICE]		= "device",
-	[BPF_CGROUP_INET4_BIND]		= "bind4",
-	[BPF_CGROUP_INET6_BIND]		= "bind6",
-	[BPF_CGROUP_INET4_CONNECT]	= "connect4",
-	[BPF_CGROUP_INET6_CONNECT]	= "connect6",
-	[BPF_CGROUP_INET4_POST_BIND]	= "post_bind4",
-	[BPF_CGROUP_INET6_POST_BIND]	= "post_bind6",
-	[BPF_CGROUP_INET4_GETPEERNAME]	= "getpeername4",
-	[BPF_CGROUP_INET6_GETPEERNAME]	= "getpeername6",
-	[BPF_CGROUP_INET4_GETSOCKNAME]	= "getsockname4",
-	[BPF_CGROUP_INET6_GETSOCKNAME]	= "getsockname6",
-	[BPF_CGROUP_UDP4_SENDMSG]	= "sendmsg4",
-	[BPF_CGROUP_UDP6_SENDMSG]	= "sendmsg6",
-	[BPF_CGROUP_SYSCTL]		= "sysctl",
-	[BPF_CGROUP_UDP4_RECVMSG]	= "recvmsg4",
-	[BPF_CGROUP_UDP6_RECVMSG]	= "recvmsg6",
-	[BPF_CGROUP_GETSOCKOPT]		= "getsockopt",
-	[BPF_CGROUP_SETSOCKOPT]		= "setsockopt",
+	[BPF_CGROUP_INET_INGRESS]		= "ingress",
+	[BPF_CGROUP_INET_EGRESS]		= "egress",
+	[BPF_CGROUP_INET_SOCK_CREATE]		= "sock_create",
+	[BPF_CGROUP_INET_SOCK_RELEASE]		= "sock_release",
+	[BPF_CGROUP_SOCK_OPS]			= "sock_ops",
+	[BPF_CGROUP_DEVICE]			= "device",
+	[BPF_CGROUP_INET4_BIND]			= "bind4",
+	[BPF_CGROUP_INET6_BIND]			= "bind6",
+	[BPF_CGROUP_INET4_CONNECT]		= "connect4",
+	[BPF_CGROUP_INET6_CONNECT]		= "connect6",
+	[BPF_CGROUP_INET4_POST_BIND]		= "post_bind4",
+	[BPF_CGROUP_INET6_POST_BIND]		= "post_bind6",
+	[BPF_CGROUP_INET4_GETPEERNAME]		= "getpeername4",
+	[BPF_CGROUP_INET6_GETPEERNAME]		= "getpeername6",
+	[BPF_CGROUP_INET4_GETSOCKNAME]		= "getsockname4",
+	[BPF_CGROUP_INET6_GETSOCKNAME]		= "getsockname6",
+	[BPF_CGROUP_UDP4_SENDMSG]		= "sendmsg4",
+	[BPF_CGROUP_UDP6_SENDMSG]		= "sendmsg6",
+	[BPF_CGROUP_SYSCTL]			= "sysctl",
+	[BPF_CGROUP_UDP4_RECVMSG]		= "recvmsg4",
+	[BPF_CGROUP_UDP6_RECVMSG]		= "recvmsg6",
+	[BPF_CGROUP_GETSOCKOPT]			= "getsockopt",
+	[BPF_CGROUP_SETSOCKOPT]			= "setsockopt",
 
-	[BPF_SK_SKB_STREAM_PARSER]	= "sk_skb_stream_parser",
-	[BPF_SK_SKB_STREAM_VERDICT]	= "sk_skb_stream_verdict",
-	[BPF_SK_SKB_VERDICT]		= "sk_skb_verdict",
-	[BPF_SK_MSG_VERDICT]		= "sk_msg_verdict",
-	[BPF_LIRC_MODE2]		= "lirc_mode2",
-	[BPF_FLOW_DISSECTOR]		= "flow_dissector",
-	[BPF_TRACE_RAW_TP]		= "raw_tp",
-	[BPF_TRACE_FENTRY]		= "fentry",
-	[BPF_TRACE_FEXIT]		= "fexit",
-	[BPF_MODIFY_RETURN]		= "mod_ret",
-	[BPF_LSM_MAC]			= "lsm_mac",
-	[BPF_SK_LOOKUP]			= "sk_lookup",
+	[BPF_SK_SKB_STREAM_PARSER]		= "sk_skb_stream_parser",
+	[BPF_SK_SKB_STREAM_VERDICT]		= "sk_skb_stream_verdict",
+	[BPF_SK_SKB_VERDICT]			= "sk_skb_verdict",
+	[BPF_SK_MSG_VERDICT]			= "sk_msg_verdict",
+	[BPF_LIRC_MODE2]			= "lirc_mode2",
+	[BPF_FLOW_DISSECTOR]			= "flow_dissector",
+	[BPF_TRACE_RAW_TP]			= "raw_tp",
+	[BPF_TRACE_FENTRY]			= "fentry",
+	[BPF_TRACE_FEXIT]			= "fexit",
+	[BPF_MODIFY_RETURN]			= "mod_ret",
+	[BPF_LSM_MAC]				= "lsm_mac",
+	[BPF_SK_LOOKUP]				= "sk_lookup",
+	[BPF_TRACE_ITER]			= "trace_iter",
+	[BPF_XDP_DEVMAP]			= "xdp_devmap",
+	[BPF_XDP_CPUMAP]			= "xdp_cpumap",
+	[BPF_XDP]				= "xdp",
+	[BPF_SK_REUSEPORT_SELECT]		= "sk_skb_reuseport_select",
+	[BPF_SK_REUSEPORT_SELECT_OR_MIGRATE]	= "sk_skb_reuseport_select_or_migrate",
 };
 
 void p_err(const char *fmt, ...)
diff --git a/tools/bpf/bpftool/prog.c b/tools/bpf/bpftool/prog.c
index cc48726740ad..1ee87225543b 100644
--- a/tools/bpf/bpftool/prog.c
+++ b/tools/bpf/bpftool/prog.c
@@ -2245,8 +2245,8 @@ static int do_help(int argc, char **argv)
 		"                 cgroup/sendmsg6 | cgroup/recvmsg4 | cgroup/recvmsg6 |\n"
 		"                 cgroup/getsockopt | cgroup/setsockopt | cgroup/sock_release |\n"
 		"                 struct_ops | fentry | fexit | freplace | sk_lookup }\n"
-		"       ATTACH_TYPE := { msg_verdict | stream_verdict | stream_parser |\n"
-		"                        flow_dissector }\n"
+		"       ATTACH_TYPE := { msg_verdict | skb_verdict | stream_verdict |\n"
+		"                        stream_parser | flow_dissector }\n"
 		"       METRIC := { cycles | instructions | l1d_loads | llc_misses | itlb_misses | dtlb_misses }\n"
 		"       " HELP_SPEC_OPTIONS "\n"
 		"",
