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