From 88f1db7dd611c4344b97c5c2fdc65e8710638c16 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Fri, 19 Nov 2021 17:10:54 +0100 Subject: [PATCH] bpf: fix priority flow detection Take number of GSO segments into account Signed-off-by: Felix Fietkau --- qosify-bpf.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/qosify-bpf.c b/qosify-bpf.c index d59415f..d0772e5 100644 --- a/qosify-bpf.c +++ b/qosify-bpf.c @@ -327,11 +327,18 @@ static __always_inline void check_flow_prio(struct qosify_flow_config *config, struct __sk_buff *skb, struct flow_bucket *flow, __u8 *out_val) { + int cur_len = skb->len; + if (flow->bulk_timeout) return; - if (config->prio_max_avg_pkt_len && - ewma(&flow->pkt_len_avg, skb->len) <= config->prio_max_avg_pkt_len) + if (!config->prio_max_avg_pkt_len) + return; + + if (skb->gso_size && skb->gso_segs > 1) + cur_len /= skb->gso_segs; + + if (ewma(&flow->pkt_len_avg, cur_len) <= config->prio_max_avg_pkt_len) *out_val = config->dscp_prio; } -- 2.30.2