bpf: fix bulk flow detaction
authorFelix Fietkau <nbd@nbd.name>
Thu, 18 Nov 2021 22:28:35 +0000 (23:28 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 19 Nov 2021 16:14:55 +0000 (17:14 +0100)
Take number of GSO segments into account

Signed-off-by: Felix Fietkau <nbd@nbd.name>
qosify-bpf.c

index b7e7093960927b7d5d5dcf4fe1baa94bd5b887d6..d59415f3911dca2a74db6a668ea3e83fbd77ad0d 100644 (file)
@@ -283,6 +283,7 @@ check_flow_bulk(struct qosify_flow_config *config, struct __sk_buff *skb,
        bool trigger = false;
        __s32 delta;
        __u32 time;
+       int segs = 1;
 
        if (!config->bulk_trigger_pps)
                return;
@@ -295,7 +296,9 @@ check_flow_bulk(struct qosify_flow_config *config, struct __sk_buff *skb,
        if ((u32)delta > FLOW_TIMEOUT)
                goto reset;
 
-       flow->pkt_count++;
+       if (skb->gso_size && skb->gso_segs)
+               segs = skb->gso_segs;
+       flow->pkt_count += segs;
        if (flow->pkt_count > config->bulk_trigger_pps) {
                flow->bulk_timeout = config->bulk_trigger_timeout + 1;
                trigger = true;