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