All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default
@ 2021-08-09 18:53 Tom Herbert
  2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
                   ` (3 more replies)
  0 siblings, 4 replies; 8+ messages in thread
From: Tom Herbert @ 2021-08-09 18:53 UTC (permalink / raw)
  To: netdev, davem, brakmo, ycheng, eric.dumazet, a.e.azimov; +Cc: Tom Herbert

Alexander Azimov performed some nice analysis of the feature in Linux
stack where the IPv6 flow label is changed when the stack detects a
connection is failing. The idea of the algorithm is to try to find a
better path. His reults are quite impressive, and show that this form
of source routing can work effectively.

Alex raised an issue in that if the server endpoint is an IP anycast
address, the connection might break if the flow label changes routing
of packets on the connection. Anycast is known to be susceptible to
route changes, not just those caused be flow label. The concern is that
flow label modulation might increases the chances that anycast
connections might break, especially if the rethink occurs after just
one RTO which is the current behavior.

This patch set makes the rethink behavior granular and configurable.
It allows control of when to do the hash rethink: upon negative advice,
at RTO in SYN state, at RTO when not in SYN state. The behavior can
be configured by sysctl and by a socket option.

This patch set the defautl rethink behavior to be to do a rethink only
on negative advice. This is reverts back to the original behavior of
the hash rethink mechanism. This less aggressive with the intent of
mitigating potentail breakages when anycast addresses are present.
For those users that are benefitting from changing the hash at the
first RTO, they would retain that behavior by setting the sysctl.
*** BLURB HERE ***

Tom Herbert (3):
  txhash: Make rethinking txhash behavior configurable via sysctl
  txhash: Add socket option to control TX hash rethink behavior
  txhash: Change default rethink behavior to be less aggressive

 arch/alpha/include/uapi/asm/socket.h  |  2 ++
 arch/mips/include/uapi/asm/socket.h   |  2 ++
 arch/parisc/include/uapi/asm/socket.h |  2 ++
 arch/sparc/include/uapi/asm/socket.h  |  3 ++-
 include/net/netns/core.h              |  2 ++
 include/net/sock.h                    | 32 +++++++++++++++++++--------
 include/uapi/asm-generic/socket.h     |  2 ++
 include/uapi/linux/socket.h           | 13 +++++++++++
 net/core/net_namespace.c              |  4 ++++
 net/core/sock.c                       | 16 ++++++++++++++
 net/core/sysctl_net_core.c            |  7 ++++++
 net/ipv4/tcp_input.c                  |  2 +-
 net/ipv4/tcp_timer.c                  |  5 ++++-
 13 files changed, 80 insertions(+), 12 deletions(-)

-- 
2.25.1


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

* [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl
  2021-08-09 18:53 [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Tom Herbert
@ 2021-08-09 18:53 ` Tom Herbert
  2021-08-09 20:20   ` kernel test robot
  2021-08-09 20:39   ` kernel test robot
  2021-08-09 18:53 ` [RFC PATCH net-next 2/3] txhash: Add socket option to control TX hash rethink behavior Tom Herbert
                   ` (2 subsequent siblings)
  3 siblings, 2 replies; 8+ messages in thread
From: Tom Herbert @ 2021-08-09 18:53 UTC (permalink / raw)
  To: netdev, davem, brakmo, ycheng, eric.dumazet, a.e.azimov; +Cc: Tom Herbert

Add a per ns sysctl that controls the txhash rethink behavior,
sk_rethink_txhash. This sysctl value is a mask rethink modes that are:
rethink at negative advice, rethink at SYN RTO, and rethink at non-SYN
RTO. A value of zero disables hash rethink. The default mask is set
to rethink with all three modes (retains current default behavior)
---
 include/net/netns/core.h    |  2 ++
 include/net/sock.h          | 26 +++++++++++++++++---------
 include/uapi/linux/socket.h | 13 +++++++++++++
 net/core/net_namespace.c    |  6 ++++++
 net/core/sysctl_net_core.c  |  7 +++++++
 net/ipv4/tcp_input.c        |  2 +-
 net/ipv4/tcp_timer.c        |  5 ++++-
 7 files changed, 50 insertions(+), 11 deletions(-)

diff --git a/include/net/netns/core.h b/include/net/netns/core.h
index 36c2d998a43c..503f43bfc1d3 100644
--- a/include/net/netns/core.h
+++ b/include/net/netns/core.h
@@ -11,6 +11,8 @@ struct netns_core {
 
 	int	sysctl_somaxconn;
 
+	unsigend int sysctl_txrehash_mode;
+
 #ifdef CONFIG_PROC_FS
 	int __percpu *sock_inuse;
 	struct prot_inuse __percpu *prot_inuse;
diff --git a/include/net/sock.h b/include/net/sock.h
index 6e761451c927..6ef5314e8eed 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -577,6 +577,12 @@ static inline bool sk_user_data_is_nocopy(const struct sock *sk)
 			   __tmp | SK_USER_DATA_NOCOPY);		\
 })
 
+static inline
+struct net *sock_net(const struct sock *sk)
+{
+	return read_pnet(&sk->sk_net);
+}
+
 /*
  * SK_CAN_REUSE and SK_NO_REUSE on a socket mean that the socket is OK
  * or not whether his port will be reused by someone else. SK_FORCE_REUSE
@@ -1940,12 +1946,20 @@ static inline void sk_set_txhash(struct sock *sk)
 	WRITE_ONCE(sk->sk_txhash, net_tx_rndhash());
 }
 
-static inline bool sk_rethink_txhash(struct sock *sk)
+static inline bool sk_rethink_txhash(struct sock *sk, unsigned int level)
 {
-	if (sk->sk_txhash) {
+	unsigned int rehash_mode;
+
+	if (!sk->sk_txhash)
+		return false;
+
+	rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
+
+	if (level & rehash_mode) {
 		sk_set_txhash(sk);
 		return true;
 	}
+
 	return false;
 }
 
@@ -1986,7 +2000,7 @@ static inline void __dst_negative_advice(struct sock *sk)
 
 static inline void dst_negative_advice(struct sock *sk)
 {
-	sk_rethink_txhash(sk);
+	sk_rethink_txhash(sk, SOCK_TXREHASH_MODE_NEG_ADVICE);
 	__dst_negative_advice(sk);
 }
 
@@ -2591,12 +2605,6 @@ static inline void sk_eat_skb(struct sock *sk, struct sk_buff *skb)
 	__kfree_skb(skb);
 }
 
-static inline
-struct net *sock_net(const struct sock *sk)
-{
-	return read_pnet(&sk->sk_net);
-}
-
 static inline
 void sock_net_set(struct sock *sk, struct net *net)
 {
diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h
index eb0a9a5b6e71..2c2cef795a9b 100644
--- a/include/uapi/linux/socket.h
+++ b/include/uapi/linux/socket.h
@@ -31,4 +31,17 @@ struct __kernel_sockaddr_storage {
 
 #define SOCK_BUF_LOCK_MASK (SOCK_SNDBUF_LOCK | SOCK_RCVBUF_LOCK)
 
+#define SOCK_TXREHASH_MODE_DISABLE	0
+
+/* Flag bits for individual rehash function modes */
+#define SOCK_TXREHASH_MODE_NEG_ADVICE	0x1
+#define SOCK_TXREHASH_MODE_SYN_RTO	0x2
+#define SOCK_TXREHASH_MODE_RTO		0x4
+
+#define SOCK_TXREHASH_MODE_DEFAULT	-1U
+
+#define SOCK_TXREHASH_MODE_MASK	(SOCK_TXREHASH_MODE_NEG_ADVICE |	\
+				 SOCK_TXREHASH_MODE_SYN_RTO |		\
+				 SOCK_TXREHASH_MODE_RTO)
+
 #endif /* _UAPI_LINUX_SOCKET_H */
diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 9b5a767eddd5..03d3767e6728 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -366,6 +366,12 @@ static __net_init int setup_net(struct net *net, struct user_namespace *user_ns)
 static int __net_init net_defaults_init_net(struct net *net)
 {
 	net->core.sysctl_somaxconn = SOMAXCONN;
+
+	/* Default rethink mode is aggrssive (i.e. rethink on first RTO) */
+	net->core.sysctl_txrehash_mode = SOCK_TXREHASH_MODE_NEG_ADVICE |
+					 SOCK_TXREHASH_MODE_SYN_RTO |
+					 SOCK_TXREHASH_MODE_RTO;
+
 	return 0;
 }
 
diff --git a/net/core/sysctl_net_core.c b/net/core/sysctl_net_core.c
index c8496c1142c9..7e828a892bf5 100644
--- a/net/core/sysctl_net_core.c
+++ b/net/core/sysctl_net_core.c
@@ -592,6 +592,13 @@ static struct ctl_table netns_core_table[] = {
 		.extra1		= SYSCTL_ZERO,
 		.proc_handler	= proc_dointvec_minmax
 	},
+	{
+		.procname	= "txrehash_mode",
+		.data		= &init_net.core.sysctl_txrehash_mode,
+		.maxlen		= sizeof(unsigned int),
+		.mode		= 0644,
+		.proc_handler	= proc_dointvec
+	},
 	{ }
 };
 
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 3f7bd7ae7d7a..08eeb2523393 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -4442,7 +4442,7 @@ static void tcp_rcv_spurious_retrans(struct sock *sk, const struct sk_buff *skb)
 	 * DSACK state and change the txhash to re-route speculatively.
 	 */
 	if (TCP_SKB_CB(skb)->seq == tcp_sk(sk)->duplicate_sack[0].start_seq &&
-	    sk_rethink_txhash(sk))
+	    sk_rethink_txhash(sk, SOCK_TXREHASH_MODE_RTO))
 		NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPDUPLICATEDATAREHASH);
 }
 
diff --git a/net/ipv4/tcp_timer.c b/net/ipv4/tcp_timer.c
index 20cf4a98c69d..53ae43ab5ebe 100644
--- a/net/ipv4/tcp_timer.c
+++ b/net/ipv4/tcp_timer.c
@@ -234,6 +234,7 @@ static int tcp_write_timeout(struct sock *sk)
 	struct tcp_sock *tp = tcp_sk(sk);
 	struct net *net = sock_net(sk);
 	bool expired = false, do_reset;
+	unsigned int rehash_mode;
 	int retry_until;
 
 	if ((1 << sk->sk_state) & (TCPF_SYN_SENT | TCPF_SYN_RECV)) {
@@ -241,6 +242,7 @@ static int tcp_write_timeout(struct sock *sk)
 			__dst_negative_advice(sk);
 		retry_until = icsk->icsk_syn_retries ? : net->ipv4.sysctl_tcp_syn_retries;
 		expired = icsk->icsk_retransmits >= retry_until;
+		rehash_mode = SOCK_TXREHASH_MODE_SYN_RTO;
 	} else {
 		if (retransmits_timed_out(sk, net->ipv4.sysctl_tcp_retries1, 0)) {
 			/* Black hole detection */
@@ -260,6 +262,7 @@ static int tcp_write_timeout(struct sock *sk)
 			if (tcp_out_of_resources(sk, do_reset))
 				return 1;
 		}
+		rehash_mode = SOCK_TXREHASH_MODE_RTO;
 	}
 	if (!expired)
 		expired = retransmits_timed_out(sk, retry_until,
@@ -277,7 +280,7 @@ static int tcp_write_timeout(struct sock *sk)
 		return 1;
 	}
 
-	if (sk_rethink_txhash(sk)) {
+	if (sk_rethink_txhash(sk, rehash_mode)) {
 		tp->timeout_rehash++;
 		__NET_INC_STATS(sock_net(sk), LINUX_MIB_TCPTIMEOUTREHASH);
 	}
-- 
2.25.1


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

* [RFC PATCH net-next 2/3] txhash: Add socket option to control TX hash rethink behavior
  2021-08-09 18:53 [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Tom Herbert
  2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
@ 2021-08-09 18:53 ` Tom Herbert
  2021-08-09 18:53 ` [RFC PATCH net-next 3/3] txhash: Change default rethink behavior to be less aggressive Tom Herbert
  2021-08-09 21:56 ` [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Yuchung Cheng
  3 siblings, 0 replies; 8+ messages in thread
From: Tom Herbert @ 2021-08-09 18:53 UTC (permalink / raw)
  To: netdev, davem, brakmo, ycheng, eric.dumazet, a.e.azimov; +Cc: Tom Herbert

Add the SO_TXREHASH_MODE socket option to control hash rethink behavior
per socket. The setsockopt argument is a mask of rethink modes
(SOCK_TXREHASH_MODE_NEG_ADVICE, SOCK_TXREHASH_MODE_SYN_RTO,
and SOCK_TXREHASH_MODE_RTO). The argument may also be -1U
(SOCK_TXREHASH_MODE_DEFAULT) which indicates that the default system
value should be used (see txrehash_mode sysctl)
---
 arch/alpha/include/uapi/asm/socket.h  |  2 ++
 arch/mips/include/uapi/asm/socket.h   |  2 ++
 arch/parisc/include/uapi/asm/socket.h |  2 ++
 arch/sparc/include/uapi/asm/socket.h  |  3 ++-
 include/net/sock.h                    |  8 +++++++-
 include/uapi/asm-generic/socket.h     |  2 ++
 net/core/sock.c                       | 16 ++++++++++++++++
 7 files changed, 33 insertions(+), 2 deletions(-)

diff --git a/arch/alpha/include/uapi/asm/socket.h b/arch/alpha/include/uapi/asm/socket.h
index 1dd9baf4a6c2..1165cdab5277 100644
--- a/arch/alpha/include/uapi/asm/socket.h
+++ b/arch/alpha/include/uapi/asm/socket.h
@@ -131,6 +131,8 @@
 
 #define SO_BUF_LOCK		72
 
+#define SO_TXREHASH_MODE	73
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/mips/include/uapi/asm/socket.h b/arch/mips/include/uapi/asm/socket.h
index 1eaf6a1ca561..91412f7725bd 100644
--- a/arch/mips/include/uapi/asm/socket.h
+++ b/arch/mips/include/uapi/asm/socket.h
@@ -142,6 +142,8 @@
 
 #define SO_BUF_LOCK		72
 
+#define SO_TXREHASH_MODE	73
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/parisc/include/uapi/asm/socket.h b/arch/parisc/include/uapi/asm/socket.h
index 8baaad52d799..80e0eddc6730 100644
--- a/arch/parisc/include/uapi/asm/socket.h
+++ b/arch/parisc/include/uapi/asm/socket.h
@@ -123,6 +123,8 @@
 
 #define SO_BUF_LOCK		0x4046
 
+#define SO_TXREHASH_MODE	0x4047
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
diff --git a/arch/sparc/include/uapi/asm/socket.h b/arch/sparc/include/uapi/asm/socket.h
index e80ee8641ac3..2fd5679e4116 100644
--- a/arch/sparc/include/uapi/asm/socket.h
+++ b/arch/sparc/include/uapi/asm/socket.h
@@ -124,8 +124,9 @@
 
 #define SO_BUF_LOCK              0x0051
 
-#if !defined(__KERNEL__)
+#define SO_TXREHASH_MODE	 0x0052
 
+#if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64
 #define SO_TIMESTAMP		SO_TIMESTAMP_OLD
diff --git a/include/net/sock.h b/include/net/sock.h
index 6ef5314e8eed..b6ddb5278b8c 100644
--- a/include/net/sock.h
+++ b/include/net/sock.h
@@ -313,6 +313,7 @@ struct bpf_local_storage;
   *	@sk_rcvtimeo: %SO_RCVTIMEO setting
   *	@sk_sndtimeo: %SO_SNDTIMEO setting
   *	@sk_txhash: computed flow hash for use on transmit
+  *	@sk_txrehash_mode: configuration bits for controlling TX hash rethink
   *	@sk_filter: socket filtering instructions
   *	@sk_timer: sock cleanup timer
   *	@sk_stamp: time stamp of last packet received
@@ -462,6 +463,7 @@ struct sock {
 	unsigned int		sk_gso_max_size;
 	gfp_t			sk_allocation;
 	__u32			sk_txhash;
+	unsigned int		sk_txrehash_mode;
 
 	/*
 	 * Because of non atomicity rules, all
@@ -1953,7 +1955,11 @@ static inline bool sk_rethink_txhash(struct sock *sk, unsigned int level)
 	if (!sk->sk_txhash)
 		return false;
 
-	rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
+	if (sk->sk_txrehash_mode == SOCK_TXREHASH_MODE_DEFAULT)
+		rehash_mode =
+			READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
+	else
+		rehash_mode = sk->sk_txrehash_mode;
 
 	if (level & rehash_mode) {
 		sk_set_txhash(sk);
diff --git a/include/uapi/asm-generic/socket.h b/include/uapi/asm-generic/socket.h
index 1f0a2b4864e4..daa775cc4108 100644
--- a/include/uapi/asm-generic/socket.h
+++ b/include/uapi/asm-generic/socket.h
@@ -126,6 +126,8 @@
 
 #define SO_BUF_LOCK		72
 
+#define SO_TXREHASH_MODE	73
+
 #if !defined(__KERNEL__)
 
 #if __BITS_PER_LONG == 64 || (defined(__x86_64__) && defined(__ILP32__))
diff --git a/net/core/sock.c b/net/core/sock.c
index aada649e07e8..946d9e9242c8 100644
--- a/net/core/sock.c
+++ b/net/core/sock.c
@@ -1367,6 +1367,17 @@ int sock_setsockopt(struct socket *sock, int level, int optname,
 					  ~SOCK_BUF_LOCK_MASK);
 		break;
 
+	case SO_TXREHASH_MODE:
+		if (val == SOCK_TXREHASH_MODE_DEFAULT ||
+		    (val & ~SOCK_TXREHASH_MODE_MASK)) {
+			ret = -EINVAL;
+			break;
+		}
+
+		sk->sk_txrehash_mode =  val;
+
+		break;
+
 	default:
 		ret = -ENOPROTOOPT;
 		break;
@@ -1733,6 +1744,10 @@ int sock_getsockopt(struct socket *sock, int level, int optname,
 		v.val = sk->sk_userlocks & SOCK_BUF_LOCK_MASK;
 		break;
 
+	case SO_TXREHASH_MODE:
+		v.val = sk->sk_txrehash_mode;
+		break;
+
 	default:
 		/* We implement the SO_SNDLOWAT etc to not be settable
 		 * (1003.1g 7).
@@ -3158,6 +3173,7 @@ void sock_init_data(struct socket *sock, struct sock *sk)
 	sk->sk_pacing_rate = ~0UL;
 	WRITE_ONCE(sk->sk_pacing_shift, 10);
 	sk->sk_incoming_cpu = -1;
+	sk->sk_txrehash_mode = SOCK_TXREHASH_MODE_DEFAULT;
 
 	sk_rx_queue_clear(sk);
 	/*
-- 
2.25.1


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

* [RFC PATCH net-next 3/3] txhash: Change default rethink behavior to be less aggressive
  2021-08-09 18:53 [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Tom Herbert
  2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
  2021-08-09 18:53 ` [RFC PATCH net-next 2/3] txhash: Add socket option to control TX hash rethink behavior Tom Herbert
@ 2021-08-09 18:53 ` Tom Herbert
  2021-08-09 21:56 ` [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Yuchung Cheng
  3 siblings, 0 replies; 8+ messages in thread
From: Tom Herbert @ 2021-08-09 18:53 UTC (permalink / raw)
  To: netdev, davem, brakmo, ycheng, eric.dumazet, a.e.azimov; +Cc: Tom Herbert

Revert the default rethink behavior to only do a rethink upon negative
advice (at three RTOs with current defaults). This is less aggressive
than the current default which is to rethink the hash at the first
RTO.

The rationale for this change is that IP anycast relies on consistent
routing and changing the hash may affect the routing of the packet
For instance, if the hash is changed then the flow label used for
a TCP connection is changed and so the routing of packets for the
connection may change. If the destination address is anycast, a
route change may direct packets to a different server than doesn't
have state for the connection thereby breaking the connection is broken.
---
 net/core/net_namespace.c | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/net/core/net_namespace.c b/net/core/net_namespace.c
index 03d3767e6728..bf9696dd7106 100644
--- a/net/core/net_namespace.c
+++ b/net/core/net_namespace.c
@@ -367,10 +367,8 @@ static int __net_init net_defaults_init_net(struct net *net)
 {
 	net->core.sysctl_somaxconn = SOMAXCONN;
 
-	/* Default rethink mode is aggrssive (i.e. rethink on first RTO) */
-	net->core.sysctl_txrehash_mode = SOCK_TXREHASH_MODE_NEG_ADVICE |
-					 SOCK_TXREHASH_MODE_SYN_RTO |
-					 SOCK_TXREHASH_MODE_RTO;
+	/* Default rethink mode is negative advice (i.e. not rthink on RTO) */
+	net->core.sysctl_txrehash_mode = SOCK_TXREHASH_MODE_NEG_ADVICE;
 
 	return 0;
 }
-- 
2.25.1


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

* Re: [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl
  2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
@ 2021-08-09 20:20   ` kernel test robot
  2021-08-09 20:39   ` kernel test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-08-09 20:20 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 39675 bytes --]

Hi Tom,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Tom-Herbert/txhash-Make-hash-rethink-configurable-and-change-the-default/20210810-025605
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 2a2b6e3640c43a808dcb5226963e2cc0669294b1
config: x86_64-randconfig-r035-20210809 (attached as .config)
compiler: gcc-9 (Debian 9.3.0-22) 9.3.0
reproduce (this is a W=1 build):
        # https://github.com/0day-ci/linux/commit/c622a47fb5a95eba759d650cba863ff963bb1562
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Tom-Herbert/txhash-Make-hash-rethink-configurable-and-change-the-default/20210810-025605
        git checkout c622a47fb5a95eba759d650cba863ff963bb1562
        # save the attached .config to linux build tree
        mkdir build_dir
        make W=1 O=build_dir ARCH=x86_64 SHELL=/bin/bash net/core/

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

All error/warnings (new ones prefixed by >>):

     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:279:13: note: in definition of macro '__unqual_scalar_typeof'
     279 |   _Generic((x),      \
         |             ^
   include/asm-generic/rwonce.h:50:2: note: in expansion of macro '__READ_ONCE'
      50 |  __READ_ONCE(x);       \
         |  ^~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   In file included from ./arch/x86/include/generated/asm/rwonce.h:1,
                    from include/linux/compiler.h:264,
                    from include/linux/export.h:43,
                    from include/linux/linkage.h:7,
                    from include/linux/kernel.h:8,
                    from include/linux/unaligned/packed_struct.h:4,
                    from include/asm-generic/unaligned.h:9,
                    from ./arch/x86/include/generated/asm/unaligned.h:1,
                    from net/core/sock.c:88:
   include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/asm-generic/rwonce.h:44:72: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                        ^
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   In file included from include/asm-generic/percpu.h:7,
                    from arch/x86/include/asm/percpu.h:390,
                    from arch/x86/include/asm/current.h:6,
                    from arch/x86/include/asm/processor.h:17,
                    from arch/x86/include/asm/timex.h:5,
                    from include/linux/timex.h:65,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/skbuff.h:15,
                    from include/linux/ip.h:16,
                    from include/net/ip.h:22,
                    from include/linux/errqueue.h:6,
                    from net/core/sock.c:91:
   net/core/sock.c: In function 'sock_prot_inuse_add':
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   include/linux/percpu-defs.h:219:47: note: in definition of macro '__verify_pcpu_ptr'
     219 |  const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
         |                                               ^~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   include/linux/percpu-defs.h:376:16: note: in definition of macro '__pcpu_size_call'
     376 |  switch(sizeof(variable)) {     \
         |                ^~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
   In file included from arch/x86/include/asm/current.h:6,
                    from arch/x86/include/asm/processor.h:17,
                    from arch/x86/include/asm/timex.h:5,
                    from include/linux/timex.h:65,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/skbuff.h:15,
                    from include/linux/ip.h:16,
                    from include/net/ip.h:22,
                    from include/linux/errqueue.h:6,
                    from net/core/sock.c:91:
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:130:10: note: in definition of macro 'percpu_add_op'
     130 |   typeof(var) pao_tmp__;     \
         |          ^~~
   include/linux/percpu-defs.h:377:11: note: in expansion of macro 'raw_cpu_add_1'
     377 |   case 1: stem##1(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:235:34: note: in expansion of macro 'percpu_add_op'
     235 | #define raw_cpu_add_1(pcp, val)  percpu_add_op(1, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:377:11: note: in expansion of macro 'raw_cpu_add_1'
     377 |   case 1: stem##1(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:235:34: note: in expansion of macro 'percpu_add_op'
     235 | #define raw_cpu_add_1(pcp, val)  percpu_add_op(1, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:377:11: note: in expansion of macro 'raw_cpu_add_1'
     377 |   case 1: stem##1(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:105:10: note: in definition of macro 'percpu_to_op'
     105 |   typeof(_var) pto_tmp__;     \
         |          ^~~~
   arch/x86/include/asm/percpu.h:235:34: note: in expansion of macro 'percpu_add_op'
     235 | #define raw_cpu_add_1(pcp, val)  percpu_add_op(1, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:377:11: note: in expansion of macro 'raw_cpu_add_1'
     377 |   case 1: stem##1(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:110:20: note: in definition of macro 'percpu_to_op'
     110 |      : [var] "+m" (_var)      \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:235:34: note: in expansion of macro 'percpu_add_op'
     235 | #define raw_cpu_add_1(pcp, val)  percpu_add_op(1, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:377:11: note: in expansion of macro 'raw_cpu_add_1'
     377 |   case 1: stem##1(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:130:10: note: in definition of macro 'percpu_add_op'
     130 |   typeof(var) pao_tmp__;     \
         |          ^~~
   include/linux/percpu-defs.h:378:11: note: in expansion of macro 'raw_cpu_add_2'
     378 |   case 2: stem##2(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:236:34: note: in expansion of macro 'percpu_add_op'
     236 | #define raw_cpu_add_2(pcp, val)  percpu_add_op(2, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:378:11: note: in expansion of macro 'raw_cpu_add_2'
     378 |   case 2: stem##2(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:236:34: note: in expansion of macro 'percpu_add_op'
     236 | #define raw_cpu_add_2(pcp, val)  percpu_add_op(2, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:378:11: note: in expansion of macro 'raw_cpu_add_2'
     378 |   case 2: stem##2(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:105:10: note: in definition of macro 'percpu_to_op'
     105 |   typeof(_var) pto_tmp__;     \
         |          ^~~~
   arch/x86/include/asm/percpu.h:236:34: note: in expansion of macro 'percpu_add_op'
     236 | #define raw_cpu_add_2(pcp, val)  percpu_add_op(2, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:378:11: note: in expansion of macro 'raw_cpu_add_2'
     378 |   case 2: stem##2(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:110:20: note: in definition of macro 'percpu_to_op'
     110 |      : [var] "+m" (_var)      \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:236:34: note: in expansion of macro 'percpu_add_op'
     236 | #define raw_cpu_add_2(pcp, val)  percpu_add_op(2, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:378:11: note: in expansion of macro 'raw_cpu_add_2'
     378 |   case 2: stem##2(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:130:10: note: in definition of macro 'percpu_add_op'
     130 |   typeof(var) pao_tmp__;     \
         |          ^~~
   include/linux/percpu-defs.h:379:11: note: in expansion of macro 'raw_cpu_add_4'
     379 |   case 4: stem##4(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:237:34: note: in expansion of macro 'percpu_add_op'
     237 | #define raw_cpu_add_4(pcp, val)  percpu_add_op(4, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:379:11: note: in expansion of macro 'raw_cpu_add_4'
     379 |   case 4: stem##4(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:237:34: note: in expansion of macro 'percpu_add_op'
     237 | #define raw_cpu_add_4(pcp, val)  percpu_add_op(4, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:379:11: note: in expansion of macro 'raw_cpu_add_4'
     379 |   case 4: stem##4(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:105:10: note: in definition of macro 'percpu_to_op'
     105 |   typeof(_var) pto_tmp__;     \
         |          ^~~~
   arch/x86/include/asm/percpu.h:237:34: note: in expansion of macro 'percpu_add_op'
     237 | #define raw_cpu_add_4(pcp, val)  percpu_add_op(4, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:379:11: note: in expansion of macro 'raw_cpu_add_4'
     379 |   case 4: stem##4(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:110:20: note: in definition of macro 'percpu_to_op'
     110 |      : [var] "+m" (_var)      \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:237:34: note: in expansion of macro 'percpu_add_op'
     237 | #define raw_cpu_add_4(pcp, val)  percpu_add_op(4, , (pcp), val)
         |                                  ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:379:11: note: in expansion of macro 'raw_cpu_add_4'
     379 |   case 4: stem##4(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:130:10: note: in definition of macro 'percpu_add_op'
     130 |   typeof(var) pao_tmp__;     \
         |          ^~~
   include/linux/percpu-defs.h:380:11: note: in expansion of macro 'raw_cpu_add_8'
     380 |   case 8: stem##8(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:317:35: note: in expansion of macro 'percpu_add_op'
     317 | #define raw_cpu_add_8(pcp, val)   percpu_add_op(8, , (pcp), val)
         |                                   ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:380:11: note: in expansion of macro 'raw_cpu_add_8'
     380 |   case 8: stem##8(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
>> net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:117:20: note: in definition of macro 'percpu_unary_op'
     117 |      : [var] "+m" (_var));     \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:317:35: note: in expansion of macro 'percpu_add_op'
     317 | #define raw_cpu_add_8(pcp, val)   percpu_add_op(8, , (pcp), val)
         |                                   ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:380:11: note: in expansion of macro 'raw_cpu_add_8'
     380 |   case 8: stem##8(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
   net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:105:10: note: in definition of macro 'percpu_to_op'
     105 |   typeof(_var) pto_tmp__;     \
         |          ^~~~
   arch/x86/include/asm/percpu.h:317:35: note: in expansion of macro 'percpu_add_op'
     317 | #define raw_cpu_add_8(pcp, val)   percpu_add_op(8, , (pcp), val)
         |                                   ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:380:11: note: in expansion of macro 'raw_cpu_add_8'
     380 |   case 8: stem##8(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
   net/core/sock.c:3442:26: error: 'struct netns_core' has no member named 'prot_inuse'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |                          ^
   arch/x86/include/asm/percpu.h:110:20: note: in definition of macro 'percpu_to_op'
     110 |      : [var] "+m" (_var)      \
         |                    ^~~~
   arch/x86/include/asm/percpu.h:317:35: note: in expansion of macro 'percpu_add_op'
     317 | #define raw_cpu_add_8(pcp, val)   percpu_add_op(8, , (pcp), val)
         |                                   ^~~~~~~~~~~~~
   include/linux/percpu-defs.h:380:11: note: in expansion of macro 'raw_cpu_add_8'
     380 |   case 8: stem##8(variable, __VA_ARGS__);break;  \
         |           ^~~~
   include/linux/percpu-defs.h:422:32: note: in expansion of macro '__pcpu_size_call'
     422 | #define raw_cpu_add(pcp, val)  __pcpu_size_call(raw_cpu_add_, pcp, val)
         |                                ^~~~~~~~~~~~~~~~
   include/linux/percpu-defs.h:458:2: note: in expansion of macro 'raw_cpu_add'
     458 |  raw_cpu_add(pcp, val);      \
         |  ^~~~~~~~~~~
   net/core/sock.c:3442:2: note: in expansion of macro '__this_cpu_add'
    3442 |  __this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
         |  ^~~~~~~~~~~~~~
   In file included from include/asm-generic/percpu.h:7,
                    from arch/x86/include/asm/percpu.h:390,
                    from arch/x86/include/asm/current.h:6,
                    from arch/x86/include/asm/processor.h:17,
                    from arch/x86/include/asm/timex.h:5,
                    from include/linux/timex.h:65,
                    from include/linux/time32.h:13,
                    from include/linux/time.h:60,
                    from include/linux/skbuff.h:15,
                    from include/linux/ip.h:16,
                    from include/net/ip.h:22,
                    from include/linux/errqueue.h:6,
                    from net/core/sock.c:91:
   net/core/sock.c: In function 'sock_prot_inuse_get':
   net/core/sock.c:3452:31: error: 'struct netns_core' has no member named 'prot_inuse'
    3452 |   res += per_cpu_ptr(net->core.prot_inuse, cpu)->val[idx];
         |                               ^
   include/linux/percpu-defs.h:219:47: note: in definition of macro '__verify_pcpu_ptr'
     219 |  const void __percpu *__vpp_verify = (typeof((ptr) + 0))NULL; \
         |                                               ^~~
   net/core/sock.c:3452:10: note: in expansion of macro 'per_cpu_ptr'
    3452 |   res += per_cpu_ptr(net->core.prot_inuse, cpu)->val[idx];
         |          ^~~~~~~~~~~
   In file included from include/linux/compiler_types.h:85,
                    from <command-line>:
   net/core/sock.c:3452:31: error: 'struct netns_core' has no member named 'prot_inuse'
    3452 |   res += per_cpu_ptr(net->core.prot_inuse, cpu)->val[idx];
         |                               ^
   include/linux/compiler-gcc.h:34:34: note: in definition of macro 'RELOC_HIDE'
      34 |  __asm__ ("" : "=r"(__ptr) : "0"(ptr));    \
         |                                  ^~~
   include/linux/percpu-defs.h:236:2: note: in expansion of macro 'SHIFT_PERCPU_PTR'
     236 |  SHIFT_PERCPU_PTR((ptr), per_cpu_offset((cpu)));   \
         |  ^~~~~~~~~~~~~~~~
   net/core/sock.c:3452:10: note: in expansion of macro 'per_cpu_ptr'
    3452 |   res += per_cpu_ptr(net->core.prot_inuse, cpu)->val[idx];
         |          ^~~~~~~~~~~
   net/core/sock.c:3452:31: error: 'struct netns_core' has no member named 'prot_inuse'
..


vim +3442 net/core/sock.c

70ee115942be6c Pavel Emelyanov 2008-03-31  3439  
70ee115942be6c Pavel Emelyanov 2008-03-31  3440  void sock_prot_inuse_add(struct net *net, struct proto *prot, int val)
70ee115942be6c Pavel Emelyanov 2008-03-31  3441  {
08fc7f8140730d Tonghao Zhang   2017-12-14 @3442  	__this_cpu_add(net->core.prot_inuse->val[prot->inuse_idx], val);
70ee115942be6c Pavel Emelyanov 2008-03-31  3443  }
70ee115942be6c Pavel Emelyanov 2008-03-31  3444  EXPORT_SYMBOL_GPL(sock_prot_inuse_add);
70ee115942be6c Pavel Emelyanov 2008-03-31  3445  
70ee115942be6c Pavel Emelyanov 2008-03-31  3446  int sock_prot_inuse_get(struct net *net, struct proto *prot)
70ee115942be6c Pavel Emelyanov 2008-03-31  3447  {
70ee115942be6c Pavel Emelyanov 2008-03-31 @3448  	int cpu, idx = prot->inuse_idx;
70ee115942be6c Pavel Emelyanov 2008-03-31  3449  	int res = 0;
70ee115942be6c Pavel Emelyanov 2008-03-31  3450  
70ee115942be6c Pavel Emelyanov 2008-03-31  3451  	for_each_possible_cpu(cpu)
08fc7f8140730d Tonghao Zhang   2017-12-14  3452  		res += per_cpu_ptr(net->core.prot_inuse, cpu)->val[idx];
70ee115942be6c Pavel Emelyanov 2008-03-31  3453  
70ee115942be6c Pavel Emelyanov 2008-03-31  3454  	return res >= 0 ? res : 0;
70ee115942be6c Pavel Emelyanov 2008-03-31  3455  }
70ee115942be6c Pavel Emelyanov 2008-03-31  3456  EXPORT_SYMBOL_GPL(sock_prot_inuse_get);
70ee115942be6c Pavel Emelyanov 2008-03-31  3457  
648845ab7e2009 Tonghao Zhang   2017-12-14  3458  static void sock_inuse_add(struct net *net, int val)
648845ab7e2009 Tonghao Zhang   2017-12-14  3459  {
648845ab7e2009 Tonghao Zhang   2017-12-14 @3460  	this_cpu_add(*net->core.sock_inuse, val);
648845ab7e2009 Tonghao Zhang   2017-12-14  3461  }
648845ab7e2009 Tonghao Zhang   2017-12-14  3462  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 32371 bytes --]

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

* Re: [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl
  2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
  2021-08-09 20:20   ` kernel test robot
@ 2021-08-09 20:39   ` kernel test robot
  1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2021-08-09 20:39 UTC (permalink / raw)
  To: kbuild-all

[-- Attachment #1: Type: text/plain, Size: 31073 bytes --]

Hi Tom,

[FYI, it's a private test report for your RFC patch.]
[auto build test ERROR on net-next/master]

url:    https://github.com/0day-ci/linux/commits/Tom-Herbert/txhash-Make-hash-rethink-configurable-and-change-the-default/20210810-025605
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 2a2b6e3640c43a808dcb5226963e2cc0669294b1
config: alpha-randconfig-r033-20210809 (attached as .config)
compiler: alpha-linux-gcc (GCC) 10.3.0
reproduce (this is a W=1 build):
        wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
        chmod +x ~/bin/make.cross
        # https://github.com/0day-ci/linux/commit/c622a47fb5a95eba759d650cba863ff963bb1562
        git remote add linux-review https://github.com/0day-ci/linux
        git fetch --no-tags linux-review Tom-Herbert/txhash-Make-hash-rethink-configurable-and-change-the-default/20210810-025605
        git checkout c622a47fb5a95eba759d650cba863ff963bb1562
        # save the attached .config to linux build tree
        mkdir build_dir
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-10.3.0 make.cross O=build_dir ARCH=alpha SHELL=/bin/bash kernel/bpf/

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

All errors (new ones prefixed by >>):

   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/linux/if_vlan.h:10,
                    from include/linux/filter.h:21,
                    from kernel/bpf/core.c:21:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
   kernel/bpf/core.c:1358:12: warning: no previous prototype for 'bpf_probe_read_kernel' [-Wmissing-prototypes]
    1358 | u64 __weak bpf_probe_read_kernel(void *dst, u32 size, const void *unsafe_ptr)
         |            ^~~~~~~~~~~~~~~~~~~~~
--
   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/trace/events/xdp.h:8,
                    from include/linux/bpf_trace.h:5,
                    from kernel/bpf/syscall.c:5:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
--
   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/linux/if_vlan.h:10,
                    from include/linux/filter.h:21,
                    from include/linux/bpf_verifier.h:9,
                    from kernel/bpf/verifier.c:12:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
   In file included from include/linux/bpf_verifier.h:9,
                    from kernel/bpf/verifier.c:12:
   kernel/bpf/verifier.c: In function 'jit_subprogs':
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'unsigned int (*)(const void *, const struct bpf_insn *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12461:16: note: in expansion of macro 'BPF_CAST_CALL'
   12461 |    insn->imm = BPF_CAST_CALL(func[subprog]->bpf_func) -
         |                ^~~~~~~~~~~~~
   kernel/bpf/verifier.c: In function 'do_misc_fixups':
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'void * (* const)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12942:17: note: in expansion of macro 'BPF_CAST_CALL'
   12942 |     insn->imm = BPF_CAST_CALL(ops->map_lookup_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, void *, void *, u64)' {aka 'int (* const)(struct bpf_map *, void *, void *, long long unsigned int)'} to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12946:17: note: in expansion of macro 'BPF_CAST_CALL'
   12946 |     insn->imm = BPF_CAST_CALL(ops->map_update_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12950:17: note: in expansion of macro 'BPF_CAST_CALL'
   12950 |     insn->imm = BPF_CAST_CALL(ops->map_delete_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, void *, u64)' {aka 'int (* const)(struct bpf_map *, void *, long long unsigned int)'} to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12954:17: note: in expansion of macro 'BPF_CAST_CALL'
   12954 |     insn->imm = BPF_CAST_CALL(ops->map_push_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12958:17: note: in expansion of macro 'BPF_CAST_CALL'
   12958 |     insn->imm = BPF_CAST_CALL(ops->map_pop_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12962:17: note: in expansion of macro 'BPF_CAST_CALL'
   12962 |     insn->imm = BPF_CAST_CALL(ops->map_peek_elem) -
         |                 ^~~~~~~~~~~~~
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'int (* const)(struct bpf_map *, u32,  u64)' {aka 'int (* const)(struct bpf_map *, unsigned int,  long long unsigned int)'} to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   kernel/bpf/verifier.c:12966:17: note: in expansion of macro 'BPF_CAST_CALL'
   12966 |     insn->imm = BPF_CAST_CALL(ops->map_redirect) -
         |                 ^~~~~~~~~~~~~
--
   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/linux/if_vlan.h:10,
                    from include/linux/filter.h:21,
                    from kernel/bpf/hashtab.c:8:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
   In file included from kernel/bpf/hashtab.c:8:
   kernel/bpf/hashtab.c: In function 'htab_map_gen_lookup':
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   include/linux/filter.h:376:14: note: in definition of macro 'BPF_EMIT_CALL'
     376 |   .imm   = ((FUNC) - __bpf_call_base) })
         |              ^~~~
   kernel/bpf/hashtab.c:671:26: note: in expansion of macro 'BPF_CAST_CALL'
     671 |  *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
         |                          ^~~~~~~~~~~~~
   kernel/bpf/hashtab.c: In function 'htab_lru_map_gen_lookup':
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   include/linux/filter.h:376:14: note: in definition of macro 'BPF_EMIT_CALL'
     376 |   .imm   = ((FUNC) - __bpf_call_base) })
         |              ^~~~
   kernel/bpf/hashtab.c:712:26: note: in expansion of macro 'BPF_CAST_CALL'
     712 |  *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
         |                          ^~~~~~~~~~~~~
   kernel/bpf/hashtab.c: In function 'htab_of_map_gen_lookup':
   include/linux/filter.h:368:4: warning: cast between incompatible function types from 'void * (*)(struct bpf_map *, void *)' to 'u64 (*)(u64,  u64,  u64,  u64,  u64)' {aka 'long long unsigned int (*)(long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int,  long long unsigned int)'} [-Wcast-function-type]
     368 |   ((u64 (*)(u64, u64, u64, u64, u64))(x))
         |    ^
   include/linux/filter.h:376:14: note: in definition of macro 'BPF_EMIT_CALL'
     376 |   .imm   = ((FUNC) - __bpf_call_base) })
         |              ^~~~
   kernel/bpf/hashtab.c:2400:26: note: in expansion of macro 'BPF_CAST_CALL'
    2400 |  *insn++ = BPF_EMIT_CALL(BPF_CAST_CALL(__htab_map_lookup_elem));
         |                          ^~~~~~~~~~~~~
--
   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/net/sock.h:46,
                    from include/linux/tcp.h:19,
                    from include/linux/ipv6.h:91,
                    from include/net/ipv6.h:12,
                    from kernel/bpf/lpm_trie.c:15:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
   In file included from <command-line>:
   include/net/sock.h: In function 'sk_rethink_txhash':
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:279:13: note: in definition of macro '__unqual_scalar_typeof'
     279 |   _Generic((x),      \
         |             ^
   include/asm-generic/rwonce.h:50:2: note: in expansion of macro '__READ_ONCE'
      50 |  __READ_ONCE(x);       \
         |  ^~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   In file included from arch/alpha/include/asm/rwonce.h:33,
                    from include/linux/compiler.h:264,
                    from include/linux/kernel.h:11,
                    from include/linux/list.h:9,
                    from include/linux/timer.h:5,
                    from include/linux/workqueue.h:9,
                    from include/linux/bpf.h:9,
                    from kernel/bpf/lpm_trie.c:9:
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/asm-generic/rwonce.h:44:72: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                        ^
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
--
   In file included from include/net/net_namespace.h:16,
                    from include/linux/netdevice.h:37,
                    from include/linux/if_vlan.h:10,
                    from include/linux/filter.h:21,
                    from include/linux/bpf_verifier.h:9,
                    from kernel/bpf/btf.c:19:
>> include/net/netns/core.h:14:2: error: expected specifier-qualifier-list before 'unsigend'
      14 |  unsigend int sysctl_txrehash_mode;
         |  ^~~~~~~~
   In file included from <command-line>:
   include/net/sock.h: In function 'sk_rethink_txhash':
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:21: note: in expansion of macro '__native_word'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |                     ^~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:308:9: note: in definition of macro '__compiletime_assert'
     308 |   if (!(condition))     \
         |         ^~~~~~~~~
   include/linux/compiler_types.h:328:2: note: in expansion of macro '_compiletime_assert'
     328 |  _compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
         |  ^~~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:36:2: note: in expansion of macro 'compiletime_assert'
      36 |  compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long), \
         |  ^~~~~~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:49:2: note: in expansion of macro 'compiletime_assert_rwonce_type'
      49 |  compiletime_assert_rwonce_type(x);    \
         |  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/linux/compiler_types.h:279:13: note: in definition of macro '__unqual_scalar_typeof'
     279 |   _Generic((x),      \
         |             ^
   include/asm-generic/rwonce.h:50:2: note: in expansion of macro '__READ_ONCE'
      50 |  __READ_ONCE(x);       \
         |  ^~~~~~~~~~~
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   In file included from arch/alpha/include/asm/rwonce.h:33,
                    from include/linux/compiler.h:264,
                    from include/linux/ptrace.h:5,
                    from include/uapi/asm-generic/bpf_perf_event.h:4,
                    from ./arch/alpha/include/generated/uapi/asm/bpf_perf_event.h:1,
                    from include/uapi/linux/bpf_perf_event.h:11,
                    from kernel/bpf/btf.c:6:
>> include/net/sock.h:1956:44: error: 'struct netns_core' has no member named 'sysctl_txrehash_mode'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                                            ^
   include/asm-generic/rwonce.h:44:72: note: in definition of macro '__READ_ONCE'
      44 | #define __READ_ONCE(x) (*(const volatile __unqual_scalar_typeof(x) *)&(x))
         |                                                                        ^
   include/net/sock.h:1956:16: note: in expansion of macro 'READ_ONCE'
    1956 |  rehash_mode = READ_ONCE(sock_net(sk)->core.sysctl_txrehash_mode);
         |                ^~~~~~~~~
   kernel/bpf/btf.c: In function 'btf_seq_show':
   kernel/bpf/btf.c:5748:22: warning: function 'btf_seq_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
    5748 |  seq_vprintf((struct seq_file *)show->target, fmt, args);
         |                      ^~~~~~~~
   kernel/bpf/btf.c: In function 'btf_snprintf_show':
   kernel/bpf/btf.c:5785:2: warning: function 'btf_snprintf_show' might be a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
    5785 |  len = vsnprintf(show->target, ssnprintf->len_left, fmt, args);
         |  ^~~


vim +/unsigend +14 include/net/netns/core.h

     7	
     8	struct netns_core {
     9		/* core sysctls */
    10		struct ctl_table_header	*sysctl_hdr;
    11	
    12		int	sysctl_somaxconn;
    13	
  > 14		unsigend int sysctl_txrehash_mode;
    15	

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 33974 bytes --]

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

* Re: [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default
  2021-08-09 18:53 [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Tom Herbert
                   ` (2 preceding siblings ...)
  2021-08-09 18:53 ` [RFC PATCH net-next 3/3] txhash: Change default rethink behavior to be less aggressive Tom Herbert
@ 2021-08-09 21:56 ` Yuchung Cheng
  2021-08-09 21:58   ` Yuchung Cheng
  3 siblings, 1 reply; 8+ messages in thread
From: Yuchung Cheng @ 2021-08-09 21:56 UTC (permalink / raw)
  To: Tom Herbert; +Cc: netdev, davem, brakmo, eric.dumazet, a.e.azimov

On Mon, Aug 9, 2021 at 11:53 AM Tom Herbert <tom@herbertland.com> wrote:
>
> Alexander Azimov performed some nice analysis of the feature in Linux
> stack where the IPv6 flow label is changed when the stack detects a
> connection is failing. The idea of the algorithm is to try to find a
> better path. His reults are quite impressive, and show that this form
> of source routing can work effectively.
>
> Alex raised an issue in that if the server endpoint is an IP anycast
> address, the connection might break if the flow label changes routing
> of packets on the connection. Anycast is known to be susceptible to
> route changes, not just those caused be flow label. The concern is that
> flow label modulation might increases the chances that anycast
> connections might break, especially if the rethink occurs after just
> one RTO which is the current behavior.
>
> This patch set makes the rethink behavior granular and configurable.
> It allows control of when to do the hash rethink: upon negative advice,
> at RTO in SYN state, at RTO when not in SYN state. The behavior can
> be configured by sysctl and by a socket option.
>
> This patch set the defautl rethink behavior to be to do a rethink only
> on negative advice. This is reverts back to the original behavior of
> the hash rethink mechanism. This less aggressive with the intent of
Thanks for offering knobs to the txhash mechanism.

Any reason why reverting the default behavior (that was changed in
2013) is necessary? systems now rely on this RTO tx-rehash to work
around link failures will now have to manually re-enable it. Some
users may have to learn from higher connection failures to eventually
identify this kernel change.

> mitigating potentail breakages when anycast addresses are present.> For those users that are benefitting from changing the hash at the
> first RTO, they would retain that behavior by setting the sysctl.
> *** BLURB HERE ***
>
> Tom Herbert (3):
>   txhash: Make rethinking txhash behavior configurable via sysctl
>   txhash: Add socket option to control TX hash rethink behavior
>   txhash: Change default rethink behavior to be less aggressive
>
>  arch/alpha/include/uapi/asm/socket.h  |  2 ++
>  arch/mips/include/uapi/asm/socket.h   |  2 ++
>  arch/parisc/include/uapi/asm/socket.h |  2 ++
>  arch/sparc/include/uapi/asm/socket.h  |  3 ++-
>  include/net/netns/core.h              |  2 ++
>  include/net/sock.h                    | 32 +++++++++++++++++++--------
>  include/uapi/asm-generic/socket.h     |  2 ++
>  include/uapi/linux/socket.h           | 13 +++++++++++
>  net/core/net_namespace.c              |  4 ++++
>  net/core/sock.c                       | 16 ++++++++++++++
>  net/core/sysctl_net_core.c            |  7 ++++++
>  net/ipv4/tcp_input.c                  |  2 +-
>  net/ipv4/tcp_timer.c                  |  5 ++++-
>  13 files changed, 80 insertions(+), 12 deletions(-)
>
> --
> 2.25.1
>

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

* Re: [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default
  2021-08-09 21:56 ` [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Yuchung Cheng
@ 2021-08-09 21:58   ` Yuchung Cheng
  0 siblings, 0 replies; 8+ messages in thread
From: Yuchung Cheng @ 2021-08-09 21:58 UTC (permalink / raw)
  To: Tom Herbert; +Cc: netdev, davem, brakmo, eric.dumazet, a.e.azimov

On Mon, Aug 9, 2021 at 2:56 PM Yuchung Cheng <ycheng@google.com> wrote:
>
> On Mon, Aug 9, 2021 at 11:53 AM Tom Herbert <tom@herbertland.com> wrote:
> >
> > Alexander Azimov performed some nice analysis of the feature in Linux
> > stack where the IPv6 flow label is changed when the stack detects a
> > connection is failing. The idea of the algorithm is to try to find a
> > better path. His reults are quite impressive, and show that this form
> > of source routing can work effectively.
> >
> > Alex raised an issue in that if the server endpoint is an IP anycast
> > address, the connection might break if the flow label changes routing
> > of packets on the connection. Anycast is known to be susceptible to
> > route changes, not just those caused be flow label. The concern is that
> > flow label modulation might increases the chances that anycast
> > connections might break, especially if the rethink occurs after just
> > one RTO which is the current behavior.
> >
> > This patch set makes the rethink behavior granular and configurable.
> > It allows control of when to do the hash rethink: upon negative advice,
> > at RTO in SYN state, at RTO when not in SYN state. The behavior can
> > be configured by sysctl and by a socket option.
> >
> > This patch set the defautl rethink behavior to be to do a rethink only
> > on negative advice. This is reverts back to the original behavior of
> > the hash rethink mechanism. This less aggressive with the intent of
> Thanks for offering knobs to the txhash mechanism.
>
> Any reason why reverting the default behavior (that was changed in
> 2013) is necessary? systems now rely on this RTO tx-rehash to work
> around link failures will now have to manually re-enable it. Some
> users may have to learn from higher connection failures to eventually
> identify this kernel change.
Just to be clear: I agree we should offer knobs to change the txhash
behavior so the first parts of this set looks good to me. I am only
concerned about the default behavior reversal.

>
> > mitigating potentail breakages when anycast addresses are present.> For those users that are benefitting from changing the hash at the
> > first RTO, they would retain that behavior by setting the sysctl.
> > *** BLURB HERE ***
> >
> > Tom Herbert (3):
> >   txhash: Make rethinking txhash behavior configurable via sysctl
> >   txhash: Add socket option to control TX hash rethink behavior
> >   txhash: Change default rethink behavior to be less aggressive
> >
> >  arch/alpha/include/uapi/asm/socket.h  |  2 ++
> >  arch/mips/include/uapi/asm/socket.h   |  2 ++
> >  arch/parisc/include/uapi/asm/socket.h |  2 ++
> >  arch/sparc/include/uapi/asm/socket.h  |  3 ++-
> >  include/net/netns/core.h              |  2 ++
> >  include/net/sock.h                    | 32 +++++++++++++++++++--------
> >  include/uapi/asm-generic/socket.h     |  2 ++
> >  include/uapi/linux/socket.h           | 13 +++++++++++
> >  net/core/net_namespace.c              |  4 ++++
> >  net/core/sock.c                       | 16 ++++++++++++++
> >  net/core/sysctl_net_core.c            |  7 ++++++
> >  net/ipv4/tcp_input.c                  |  2 +-
> >  net/ipv4/tcp_timer.c                  |  5 ++++-
> >  13 files changed, 80 insertions(+), 12 deletions(-)
> >
> > --
> > 2.25.1
> >

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

end of thread, other threads:[~2021-08-09 21:59 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-08-09 18:53 [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Tom Herbert
2021-08-09 18:53 ` [RFC PATCH net-next 1/3] txhash: Make rethinking txhash behavior configurable via sysctl Tom Herbert
2021-08-09 20:20   ` kernel test robot
2021-08-09 20:39   ` kernel test robot
2021-08-09 18:53 ` [RFC PATCH net-next 2/3] txhash: Add socket option to control TX hash rethink behavior Tom Herbert
2021-08-09 18:53 ` [RFC PATCH net-next 3/3] txhash: Change default rethink behavior to be less aggressive Tom Herbert
2021-08-09 21:56 ` [RFC PATCH net-next 0/3] txhash: Make hash rethink configurable and change the default Yuchung Cheng
2021-08-09 21:58   ` Yuchung Cheng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.