We have an audio over IP app based on the iPhone, and we're currently playing with setting the TOS level and seeing how this is reflected in the 802.11 Qos Control field.
We're doing this simply setsockopt call:
int tos = 0xB8; // VOICE
status = setsockopt(socketFD, IPPROTO_IP, IP_TOS, &tos, sizeof(tos));
if (status == -1)
{
if (errPtr)
*errPtr = [self errnoErrorWithReason:@"Error setting TOS (setsockopt)"];
}
The theory is that this would tag all the packets as VOICE on the WLAN link, but we're ending up with a TID of 5, which indicates VIDEO (at least according to Wireshark).
This is traffic FROM iPhone TO the wireless AP, so there's no in-WAP mapping we can do.
We've been able to set a TOS of 0xC8, and this does result in a VOICE classification, but the rest of the network seems to get confused when a TOS value of C8 ends up in the IP headers.
Anyone know what value we're supposed to use to get VOICE over 802.11, on packets sourcing from the iPhone?