Given how low the upload bandwidth is, I'd try SFQ here, without offloads, for comparison.
stig - a portion of cake's design was heavily influenced by our edgerouter experience - cake explicitly peels apart superpackets (GRO) back into packets and interleaves them better with other flows, so offloads can remain *on* all interfaces.
Theoretically. I was unwilling to sink the time and $ into it required to do the ubnt backport - and didn't know how, anyway, til this thread! (it's already in the lede build)
for more details about cake's features, see:
https://www.bufferbloat.net/projects/codel/wiki/CakeTechnical/