rolf wroteYou could probably win from prioritizing small packets. ACK packets are small packets, and they're the packets you send back to the server to acknowledge receiving the data. Prioritizing outgoing ACK packets can make a real difference on connection quality when you have downloads.
As I said before, but you seem to have ignored my answer, I think your solution is in marking small packets using the firewall (iptables), then using that mark in tc to give them priority.
I'm not sure it works, it's been a long time since I used iptables and tc, and my experience was on desktop/server linux, not OpenWrt.
PS: you're putting Whatsapp and Viber in the same bag. Viber is a VOIP software, and I bet it's packets arent small at all. You should probably decide on one thing you want, voice, or text chat.
thank you for your answer, i meant the text chat part of viber and not the whole application. as for marking small packets, what you said is important about ack packets, so prioritizing small packet isn't a solution, i will try by destination and port, this is the best solution so far.