TDMA support in FreeBSD
Sam Leffler leveraged the Atheros chipset capabilities to implement a TDMA scheme.
More information is available - http://people.freebsd.org/~sam/FreeBSD_TDMA-20090921.pdf. Here's one example where it was deployed - http://hpwren.ucsd.edu/news/20090516/
Configure a TDMA master. Note that Sam observed some stability issues in 2GHz 20MHz operation on the legacy NICs. The clock rate is different (44MHz for 2GHz operation; 40MHz for 5GHz operation) which may have had something to do with it. It's also possible that some of the different MAC values programmed in based on the clock rate have an effect. In any case, please note that you may see strange issues in 2GHz operation that don't show up in 5GHz operation.
Until A-MSDU is implemented, aggregation will not work and the maximum throughput under 11n operation is approximately 50 megabits/second in each direction.
ifconfig wlan0 create wlandev ath0 wlanmode tdma -ampdu ifconfig wlan0 ssid ADRIAN_TDMA channel 48:ht/40 ifconfig wlan0 tdmaslotcnt 2 tdmaslot 0 tdmaslotlen 2500 ifconfig wlan0 192.168.4.1/24 up
ifconfig wlan0 create wlandev ath0 wlanmode tdma -ampdu ifconfig wlan0 ssid ADRIAN_TDMA ifconfig wlan0 inet 192.168.4.2/24 up
You can use 'athdebug -i athX -o tdma 1' to monitor TDMA specific parameters, including the slot timing offset/drift and some debugging information (such as "transmit override receive" statistics.)
Known good chipsets
This isn't an exhaustive list - it's just what it has so far been tested on. If you can configure it, it should work.
- AR9341 (SoC)
- AR9331 (SoC)
None at this time.
- It would be good to support MCS rates and TX aggregation - to do it cleanly, it may be nice to first get 11n adhoc support as well as A-MSDU support into net80211.
- Supporting multiple slave stations would be nice. Read Sam's TDMA paper for some information about this.
- Map all the data transmit queues to one single hardware transmit queue. The burst time mechanism used to implement the slot time is per-DCU, rather than a global thing. So if multiple QoS levels are transmitting, you'll end up with multiple burst times running and you'll exceed your slot time.
- Add 4-addr support, so it can be used as a bridge.
Figure out how to use it in a classic STA<->AP setup with the AP in bridge mode; that doesn't seem to work right at the moment.