This is an old revision of the document!


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.

You need to ensure HT isn't enabled. Some recent changes to IBSS mode creation ended up modifying how channels are promoted. Specifically, the TDMA code in net80211 uses the IBSS code to do channel creation and as part of that, the master ends up having the 11a channel “promoted” to an 11n HT20 or HT40 channel. The theory here is that the channel be a HT20 or HT40 channel, and any non-11n peer will just negotiate non-11n options. Thus any transmissions to a non-11n peer will use the legacy channel width and rates.

However for TDMA the 11n work hasn't yet been done. Specifically:

  • Aggregate transmission will occur, but as there's no delayed block-ack support, the transmit sequence number window tracking (BAW, or block-ack window) won't function. So things just will not work.
  • The packet duration calculations assume non-HT rates. So even if A-MPDU is disabled, the use of MCS rates will mess things up.

Fixing (b) is easier than (a) and it will result in 11n MCS rates and HT40 channels being used. This will give a boost to the channel bandwidth but not the drastic boost supporting A-MPDU and delayed block-ack would give.

The master:

ifconfig wlan0 create wlandev ath0 wlanmode tdma -ht
ifconfig wlan0 ssid ADRIAN_TDMA channel 48:a
ifconfig wlan0 tdmaslotcnt 2 tdmaslot 0 tdmaslotlen 2500
ifconfig wlan0 192.168.4.1/24 up

The slave:

ifconfig wlan0 create wlandev ath0 wlanmode tdma -ht
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.)

This isn't an exhaustive list. If you can configure it, and it's not an 802.11n chip, it should work.

  • AR5413/AR5414
  • AR5416
  • AR9280

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 delayed-blockack 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.
  • wifi/tdma.1368998788.txt.gz
  • Last modified: 2013/05/19 21:26
  • by AdrianChadd