I am trying to understand how WME/WMM works in MadWiFi. What I am interested
in finding out is when and how are different ACs used based on traffic. While going
through the code, I saw that different hw queues are set up for different access categories
like WME_AC_(BK/BE/VI/VO) and the corresponding parameters for AIFS and CWmin
and CWmax are setup properly. In the life cycle of a packet arriving from upper layers,
ieee80211_hardstart calls ieee80211_classify to calculate the priority level and hence
the AC for the traffic type.

What I found surprising, or rather discomforting is that ieee80211_classify looks at
only VLAN id and/or IP TOS to determine the AC class. Now from what I observed
from traffic traces and also read on the Internet that IP TOS field is almost never used.
All voice (Gtalk and Skype) and video streaming traffic data arrives from the applications
with the IP TOS field as 0.

So the big question troubling me is that when (if ever) is data actually sent using a different
AC class other than the default WME_AC_BE? What am I missing here (assuming I am not
using VLANs)? Does madwifi never actually use different ACs. Should there be a more
intelligent classification function or is this the responsibility of the applications. Is there some
other way by which the applications communicate to the MAC that the data is high priority?

I would really appreciate  any help in understanding the working of WME capabilities.
Thanks in advance