mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
selftests/bpf: Fix expired UDP LRU entries in XDP LB benchmark
populate_lru() zero-initializes atime:
struct real_pos_lru lru = { .pos = real_idx };
connection_table_lookup() treats UDP entries with
cur_time - atime > 30s as expired, so every pre-populated entry
expires immediately. Calibration masks this on the CPU it runs on,
but if validation migrates to another CPU:
[udp-v4-lru-hit] COUNTER FAIL: LRU misses=1, expected 0
Initialize atime from CLOCK_MONOTONIC for UDP flows.
Fixes: a4b5ba8187 ("selftests/bpf: Add XDP load-balancer benchmark driver")
Signed-off-by: Puranjay Mohan <puranjay@kernel.org>
Link: https://lore.kernel.org/r/20260520133338.3392667-3-puranjay@kernel.org
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
fa747e9f84
commit
12e896b979
|
|
@ -563,12 +563,23 @@ static void create_per_cpu_lru_maps(struct xdp_lb_bench *skel)
|
|||
nr_inner_maps = nr_cpus;
|
||||
}
|
||||
|
||||
static __u64 ktime_get_ns(void)
|
||||
{
|
||||
struct timespec ts;
|
||||
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
return (__u64)ts.tv_sec * 1000000000ULL + ts.tv_nsec;
|
||||
}
|
||||
|
||||
static void populate_lru(const struct test_scenario *sc, __u32 real_idx)
|
||||
{
|
||||
struct real_pos_lru lru = { .pos = real_idx };
|
||||
struct flow_key fk;
|
||||
int i, err;
|
||||
|
||||
if (sc->ip_proto == IPPROTO_UDP)
|
||||
lru.atime = ktime_get_ns();
|
||||
|
||||
build_flow_key(&fk, sc);
|
||||
|
||||
/* Insert into every per-CPU inner LRU so the entry is found
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user