Just want to do a sanity check.
I have setup a queue tree and use mangle rules to create the appropriate packet marks.
I read an interesting wiki article showing a rule that would filter TCP traffic, by port, etc and give it a connection mark, with passthrough enabled. Immediately following it was a rule that filtered traffic by the connection mark and packet marked it with no passthrough.
I saw the advantage in this for performance. It would be quicker to check a packet for its connection mark, rather than other criteria, but the way it was done in the above example, due to top down processing, every packet would be getting filtered by both rules, effectively making even more overhead.
To counter this, I added a second set of packet marking rules at the top of the mangle table that filtered of the connection mark. This way the first packet in a connection would go through the connection mark / packet mark pair, but all subsequent packets would be picked up earlier by the packet mark rule at the top, thus speeding up processing and lowering overhead.