diff options
author | Akihiko Odaki <akihiko.odaki@daynix.com> | 2024-04-28 16:01:00 +0900 |
---|---|---|
committer | Jason Wang <jasowang@redhat.com> | 2024-06-04 15:14:26 +0800 |
commit | f5c69e7ab2507553d1a2780e41d924c32dec3c44 (patch) | |
tree | 1b800ee102b784bceb4a1f4bb76f81305f02218d /tools/ebpf | |
parent | 8dc8220e23a6d16415b6a0a46785224e8bc7edd1 (diff) |
ebpf: Refactor tun_rss_steering_prog()
This saves branches and makes later BPF program changes easier.
Signed-off-by: Akihiko Odaki <akihiko.odaki@daynix.com>
Signed-off-by: Jason Wang <jasowang@redhat.com>
Diffstat (limited to 'tools/ebpf')
-rw-r--r-- | tools/ebpf/rss.bpf.c | 26 |
1 files changed, 11 insertions, 15 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 (!config || !toe) { + return 0; + } - if (calculate_rss_hash(skb, config, toe, &hash)) { - __u32 table_idx = hash % config->indirections_len; - __u16 *queue = 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); + queue = bpf_map_lookup_elem(&tap_rss_map_indirection_table, + &table_idx); - if (queue) { - return *queue; - } + if (queue) { + return *queue; } - - return config->default_queue; } - return 0; + return config->default_queue; } char _license[] SEC("license") = "GPL v2"; |