Blob Blame History Raw
From: Akhmat Karakotov <hmukos@yandex-team.ru>
Date: Mon, 31 Jan 2022 16:31:24 +0300
Subject: bpf: Add SO_TXREHASH setsockopt
Patch-mainline: v5.18-rc1
Git-commit: e7b9bfd18476cd3de9a3819235f9221e59abc80a
References: jsc#PED-1377

Add bpf socket option to override rehash behaviour from userspace or from bpf.

Signed-off-by: Akhmat Karakotov <hmukos@yandex-team.ru>
Reviewed-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Shung-Hsi Yu <shung-hsi.yu@suse.com>
---
 net/core/filter.c |   10 ++++++++++
 1 file changed, 10 insertions(+)

--- a/net/core/filter.c
+++ b/net/core/filter.c
@@ -5094,6 +5094,13 @@ static int _bpf_setsockopt(struct sock *
 		case SO_REUSEPORT:
 			sk->sk_reuseport = valbool;
 			break;
+		case SO_TXREHASH:
+			if (val < -1 || val > 1) {
+				ret = -EINVAL;
+				break;
+			}
+			sk->sk_txrehash = (u8)val;
+			break;
 		default:
 			ret = -EINVAL;
 		}
@@ -5272,6 +5279,9 @@ static int _bpf_getsockopt(struct sock *
 		case SO_REUSEPORT:
 			*((int *)optval) = sk->sk_reuseport;
 			break;
+		case SO_TXREHASH:
+			*((int *)optval) = sk->sk_txrehash;
+			break;
 		default:
 			goto err_clear;
 		}