156 lines
3.7 KiB
ReStructuredText
156 lines
3.7 KiB
ReStructuredText
|
===========================
|
||
|
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
|
||
|
ieee80211_hw_flags
|
||
|
SET_IEEE80211_DEV
|
||
|
SET_IEEE80211_PERM_ADDR
|
||
|
ieee80211_ops
|
||
|
ieee80211_alloc_hw
|
||
|
ieee80211_register_hw
|
||
|
ieee80211_unregister_hw
|
||
|
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
|
||
|
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
|
||
|
mac80211_rx_encoding_flags
|
||
|
mac80211_rx_flags
|
||
|
mac80211_tx_info_flags
|
||
|
mac80211_tx_control_flags
|
||
|
mac80211_rate_control_flags
|
||
|
ieee80211_tx_rate
|
||
|
ieee80211_tx_info
|
||
|
ieee80211_tx_info_clear_status
|
||
|
ieee80211_rx
|
||
|
ieee80211_rx_ni
|
||
|
ieee80211_rx_irqsafe
|
||
|
ieee80211_tx_status
|
||
|
ieee80211_tx_status_ni
|
||
|
ieee80211_tx_status_irqsafe
|
||
|
ieee80211_rts_get
|
||
|
ieee80211_rts_duration
|
||
|
ieee80211_ctstoself_get
|
||
|
ieee80211_ctstoself_duration
|
||
|
ieee80211_generic_frame_duration
|
||
|
ieee80211_wake_queue
|
||
|
ieee80211_stop_queue
|
||
|
ieee80211_wake_queues
|
||
|
ieee80211_stop_queues
|
||
|
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
|
||
|
ieee80211_queue_delayed_work
|