From f5c69e7ab2507553d1a2780e41d924c32dec3c44 Mon Sep 17 00:00:00 2001 From: Akihiko Odaki Date: Sun, 28 Apr 2024 16:01:00 +0900 Subject: [PATCH] ebpf: Refactor tun_rss_steering_prog() This saves branches and makes later BPF program changes easier. Signed-off-by: Akihiko Odaki Signed-off-by: Jason Wang --- tools/ebpf/rss.bpf.c | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/tools/ebpf/rss.bpf.c b/tools/ebpf/rss.bpf.c index 77434435ac..c989cb3cd8 100644 --- a/tools/ebpf/rss.bpf.c +++ b/tools/ebpf/rss.bpf.c @@ -547,27 +547,23 @@ int tun_rss_steering_prog(struct __sk_buff *skb) config = bpf_map_lookup_elem(&tap_rss_map_configurations, &key); toe = bpf_map_lookup_elem(&tap_rss_map_toeplitz_key, &key); - if (config && toe) { - if (!config->redirect) { - return config->default_queue; - } - - if (calculate_rss_hash(skb, config, toe, &hash)) { - __u32 table_idx = hash % config->indirections_len; - __u16 *queue = 0; - - queue = bpf_map_lookup_elem(&tap_rss_map_indirection_table, - &table_idx); - - if (queue) { - return *queue; - } - } - - return config->default_queue; + if (!config || !toe) { + return 0; } - return 0; + if (config->redirect && calculate_rss_hash(skb, config, toe, &hash)) { + __u32 table_idx = hash % config->indirections_len; + __u16 *queue = 0; + + queue = bpf_map_lookup_elem(&tap_rss_map_indirection_table, + &table_idx); + + if (queue) { + return *queue; + } + } + + return config->default_queue; } char _license[] SEC("license") = "GPL v2";