How does (software) flow_offloading interact with SQM?

Lots of conflicting info online.

Well software flow offloading (or any accellerator technology for that matter) bypasses various kernel subsystems to achieve higher overall throughput. This conflicts with shapers and queue management to some extent as these need access to all packets of a flow and not just the initial handshake ones.

Is this correct? Can someone give a high level summary of how flow offloading works as opposed to SQM? Can they coexist at all in openWRT?

I did some informal testing and found that SQM (fq_codel) "alongside" software flow offloading (flow_offloading not flow_offloading_hw) raised my downstream from around 120 Mbps to 140 Mbps. However it seemed to come at a cost of 0-15 ms of additional bufferbloat latency vs fq_codel on its own. In addition, I'm still not sure if fq_codel was active whatsoever, based on my reading that they "conflict" with each other. My bufferbloat tests are far better with "both" active than with both disabled - my loaded latency was 200-400ms before enabling them.

No offloading:

Yes offloading:

More reading:

1 Like