From 3fc472dd394c08bb05265bbdce964ec257229c10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maciej=20=C5=BBenczykowski?= Date: Wed, 18 May 2022 09:05:07 +0000 Subject: [PATCH] dscp_policy - use a more efficient v6_equal() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is meant to optimize dscp_policy bpf verifier time at boot. Bug: 230585250 Test: TreeHugger Signed-off-by: Maciej Żenczykowski Change-Id: I1ecd61db80919e2fa1fcbac00348f10a80b77620 --- bpf_progs/dscp_policy.h | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/bpf_progs/dscp_policy.h b/bpf_progs/dscp_policy.h index 777c4fff77..1637f7ae32 100644 --- a/bpf_progs/dscp_policy.h +++ b/bpf_progs/dscp_policy.h @@ -26,12 +26,11 @@ #define STRUCT_SIZE(name, size) _Static_assert(sizeof(name) == (size), "Incorrect struct size.") -#ifndef v6_equal -#define v6_equal(a, b) (a.s6_addr32[0] == b.s6_addr32[0] && \ - a.s6_addr32[1] == b.s6_addr32[1] && \ - a.s6_addr32[2] == b.s6_addr32[2] && \ - a.s6_addr32[3] == b.s6_addr32[3]) -#endif +#define v6_equal(a, b) \ + (((a.s6_addr32[0] ^ b.s6_addr32[0]) | \ + (a.s6_addr32[1] ^ b.s6_addr32[1]) | \ + (a.s6_addr32[2] ^ b.s6_addr32[2]) | \ + (a.s6_addr32[3] ^ b.s6_addr32[3])) == 0) // TODO: these are already defined in packages/modules/Connectivity/bpf_progs/bpf_net_helpers.h. // smove to common location in future.