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