| =========================== | 
 | mac80211 subsystem (basics) | 
 | =========================== | 
 |  | 
 | You should read and understand the information contained within this | 
 | part of the book while implementing a mac80211 driver. In some chapters, | 
 | advanced usage is noted, those may be skipped if this isn't needed. | 
 |  | 
 | This part of the book only covers station and monitor mode | 
 | functionality, additional information required to implement the other | 
 | modes is covered in the second part of the book. | 
 |  | 
 | Basic hardware handling | 
 | ======================= | 
 |  | 
 | TBD | 
 |  | 
 | This chapter shall contain information on getting a hw struct allocated | 
 | and registered with mac80211. | 
 |  | 
 | Since it is required to allocate rates/modes before registering a hw | 
 | struct, this chapter shall also contain information on setting up the | 
 | rate/mode structs. | 
 |  | 
 | Additionally, some discussion about the callbacks and the general | 
 | programming model should be in here, including the definition of | 
 | ieee80211_ops which will be referred to a lot. | 
 |  | 
 | Finally, a discussion of hardware capabilities should be done with | 
 | references to other parts of the book. | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_hw | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_hw_flags | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: SET_IEEE80211_DEV | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: SET_IEEE80211_PERM_ADDR | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_ops | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_alloc_hw | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_register_hw | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_unregister_hw | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_free_hw | 
 |  | 
 | PHY configuration | 
 | ================= | 
 |  | 
 | TBD | 
 |  | 
 | This chapter should describe PHY handling including start/stop callbacks | 
 | and the various structures used. | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_conf | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_conf_flags | 
 |  | 
 | Virtual interfaces | 
 | ================== | 
 |  | 
 | TBD | 
 |  | 
 | This chapter should describe virtual interface basics that are relevant | 
 | to the driver (VLANs, MGMT etc are not.) It should explain the use of | 
 | the add_iface/remove_iface callbacks as well as the interface | 
 | configuration callbacks. | 
 |  | 
 | Things related to AP mode should be discussed there. | 
 |  | 
 | Things related to supporting multiple interfaces should be in the | 
 | appropriate chapter, a BIG FAT note should be here about this though and | 
 | the recommendation to allow only a single interface in STA mode at | 
 | first! | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_vif | 
 |  | 
 | Receive and transmit processing | 
 | =============================== | 
 |  | 
 | what should be here | 
 | ------------------- | 
 |  | 
 | TBD | 
 |  | 
 | This should describe the receive and transmit paths in mac80211/the | 
 | drivers as well as transmit status handling. | 
 |  | 
 | Frame format | 
 | ------------ | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :doc: Frame format | 
 |  | 
 | Packet alignment | 
 | ---------------- | 
 |  | 
 | .. kernel-doc:: net/mac80211/rx.c | 
 |    :doc: Packet alignment | 
 |  | 
 | Calling into mac80211 from interrupts | 
 | ------------------------------------- | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :doc: Calling mac80211 from interrupts | 
 |  | 
 | functions/definitions | 
 | --------------------- | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rx_status | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: mac80211_rx_flags | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: mac80211_tx_info_flags | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: mac80211_tx_control_flags | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: mac80211_rate_control_flags | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_rate | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_info | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_info_clear_status | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rx | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rx_ni | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rx_irqsafe | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_status | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_status_ni | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_tx_status_irqsafe | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rts_get | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_rts_duration | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_ctstoself_get | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_ctstoself_duration | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_generic_frame_duration | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_wake_queue | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_stop_queue | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_wake_queues | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_stop_queues | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_queue_stopped | 
 |  | 
 | Frame filtering | 
 | =============== | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :doc: Frame filtering | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_filter_flags | 
 |  | 
 | The mac80211 workqueue | 
 | ====================== | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :doc: mac80211 workqueue | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_queue_work | 
 |  | 
 | .. kernel-doc:: include/net/mac80211.h | 
 |    :functions: ieee80211_queue_delayed_work |