| =========================== | |
| 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 |