NOTE: this page is for archival only, see the note at the end of the page.

mac80211 driver API notes

I compiled this list rather quickly, and there may be small errors in it; there will surely be omissions, please help. – JohannesBerg 2008-10-07 17:38:06

A driver must (alternatives in order of preference)

  • set the IEEE80211_HW_2GHZ_SHORT_PREAMBLE_INCAPABLE hw flag if it cannot receive short preamble transmissions
  • either honour the IEEE80211_TX_CTL_USE_RTS_CTS flag or implement the set_rts_threshold call
  • either honour the IEEE80211_TX_CTL_USE_CTS_PROTECT flag or honour bss_conf's use_cts_prot value
  • honour bss_conf's use_short_slot or set the IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE hw flag
  • honour bss_conf's basic_rates bitmap to set up the control response frame bitrate (cf. IEEE 802.11-2007 9.6 "Multirate support" paragraph 7)
  • honour IEEE80211_TX_CTL_NO_ACK unless the hardware does based on the multicast bit
  • honour IEEE80211_TX_CTL_ASSIGN_SEQ (we could make this depend on IBSS/AP/MESH modes)
  • honour IEEE80211_TX_CTL_REQ_TX_STATUS or always report TX status
  • honour the radio_enabled value of the hw config
  • not change it's operating mode based on IEEE80211_CONF_RADIOTAP
  • clear/set MAC address filters/control response frame generation based on the interface add/remove callbacks
  • set up beacon access parameters based on the interface mode (ibss/ap)
  • use SET_IEEE80211_DEV and SET_IEEE80211_PERM_ADDR
  • set the wiphy interface modes
  • set one of the IEEE80211_HW_SIGNAL_* hw flags (?)
  • set channel_change_time
  • ...

It also should

  • honour IEEE80211_TX_CTL_SHORT_PREAMBLE or honour bss_conf's use_short_preamble

For QoS/WME, it must

  • support at least four queues
  • support configurable access parameters for those queues
  • ...

For AP mode, it must

  • honour IEEE80211_TX_CTL_SEND_AFTER_DTIM
  • ...

For MESH mode, it must

  • [anything special other than beaconing?]
  • ...

For HT, it must

  • support QoS
  • [need help, Tomas/Ron?]
  • ...

For spectrum management, it must

  • [unfinished]
  • ...

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1