QoS depends on knowing how much data can be enqueued at any time. This is called your "upstream bandwidth" or "upload bandwidth" allocation, and it is capped by your ISP, usually using a setting in your modem. Unfortunately, modems do not generally report this data directly to the router, so the router has to guess at upstream allocation. Some routers do this well, some do not. Some modems will queue the packets, thereby fooling the router into thinking that the modem can take more than the capped bandwidth
PERFECT QoS: In an ideal setting, 100% of the upstream bandwidth is used, all the time, and any packets are queued locally and discarded (if necesary) before hitting the modem when they reach their TTL (Time To Live, an indication of how long to continue attempting to deliver the packet).
QoS Upstream Too High: If your router thinks it has more upstream bandwidth than it really has, QoS becomes useless, as the router is stuffing more data into the pipe than the pipe can handle. Since the modem itself doesn't know which packets are important, it starts delaying and dropping packets at random, including ones you think are important.
QoS Upstream Too Low: If your router thinks it has less upstream bandwidth than it really has, QoS becomes a limiting factor on your network, since the router is artifically limiting your upstream to some figure below what your connection is actually capable of.
If your AUTO setting on your router does not work well, but your router has a MANUAL setting, here's what you want to do:
1. Go to http://www.dslreports.com/stest
on an IDLE connection, with QoS turned completely OFF and nothing else on your network trying to use the Internet at all (or your computer hooked directly to your modem). Run the Speed Test a couple of times, and write down the tested upstream bandwidth. Run this test several times, at different times of day.
2. Enter about 90-95% of the LOWEST number you get on your tests into the "upstream bandwidth" field on your router. At whatever time of day is the worst for your upload bandwidth, start a large upload (start BitTorrent, or a large FTP upload, or whatever), and test the connection using testyourvoip.com or an outbound VoIP call. And adjust this number upward until you start seeing loss on your upload results, then lower the number back down to the highest setting that gives you good results.
One criticism of this approach is that you are artifically limiting your bandwidth to the "lowest common denominator", particlularly on Internet connections that have good upstream bandwidth some of the time, and poor bandwidth at others, since you are telling your router NEVER to use any more than the LEAST of your tested bandwidth. That is absolutely, 100% correct. But if your router cannot get good numbers, then you HAVE to set it manually, and you'll get better useability out of an underused connection that works consistently than a connection that gets overused from time to time. (ie. when available bandwidth drops if you set the number too high, your VoIP line will start acting up again).