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>
diff --git a/tools/ebpf/rss.bpf.c b/tools/ebpf/rss.bpf.c
index 7743443..c989cb3 100644
--- a/tools/ebpf/rss.bpf.c
+++ b/tools/ebpf/rss.bpf.c
@@ -547,27 +547,23 @@
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";