Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   1) ===========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   2) mac80211 subsystem (basics)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   3) ===========================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   4) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   5) You should read and understand the information contained within this
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   6) part of the book while implementing a mac80211 driver. In some chapters,
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   7) advanced usage is noted, those may be skipped if this isn't needed.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   8) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300   9) This part of the book only covers station and monitor mode
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  10) functionality, additional information required to implement the other
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  11) modes is covered in the second part of the book.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  13) Basic hardware handling
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  14) =======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  15) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  16) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  17) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  18) This chapter shall contain information on getting a hw struct allocated
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  19) and registered with mac80211.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  20) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  21) Since it is required to allocate rates/modes before registering a hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  22) struct, this chapter shall also contain information on setting up the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  23) rate/mode structs.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  24) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  25) Additionally, some discussion about the callbacks and the general
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  26) programming model should be in here, including the definition of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  27) ieee80211_ops which will be referred to a lot.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  29) Finally, a discussion of hardware capabilities should be done with
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  30) references to other parts of the book.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  31) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  32) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  33)    :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  34) 	ieee80211_hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  35) 	ieee80211_hw_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  36) 	SET_IEEE80211_DEV
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  37) 	SET_IEEE80211_PERM_ADDR
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  38) 	ieee80211_ops
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  39) 	ieee80211_alloc_hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  40) 	ieee80211_register_hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  41) 	ieee80211_unregister_hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  42) 	ieee80211_free_hw
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  43) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  44) PHY configuration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  45) =================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  46) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  47) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  48) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  49) This chapter should describe PHY handling including start/stop callbacks
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  50) and the various structures used.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  51) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  52) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  53)    :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  54) 	ieee80211_conf
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  55) 	ieee80211_conf_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  56) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  57) Virtual interfaces
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  58) ==================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  59) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  60) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  61) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  62) This chapter should describe virtual interface basics that are relevant
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  63) to the driver (VLANs, MGMT etc are not.) It should explain the use of
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  64) the add_iface/remove_iface callbacks as well as the interface
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  65) configuration callbacks.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  66) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  67) Things related to AP mode should be discussed there.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  68) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  69) Things related to supporting multiple interfaces should be in the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  70) appropriate chapter, a BIG FAT note should be here about this though and
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  71) the recommendation to allow only a single interface in STA mode at
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  72) first!
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  73) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  74) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  75)    :functions: ieee80211_vif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  76) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  77) Receive and transmit processing
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  78) ===============================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  79) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  80) what should be here
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  81) -------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  82) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  83) TBD
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  84) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  85) This should describe the receive and transmit paths in mac80211/the
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  86) drivers as well as transmit status handling.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  87) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  88) Frame format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  89) ------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  90) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  91) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  92)    :doc: Frame format
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  93) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  94) Packet alignment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  95) ----------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  96) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  97) .. kernel-doc:: net/mac80211/rx.c
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  98)    :doc: Packet alignment
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  99) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 100) Calling into mac80211 from interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 101) -------------------------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 102) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 103) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 104)    :doc: Calling mac80211 from interrupts
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 105) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 106) functions/definitions
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 107) ---------------------
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 108) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 109) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 110)    :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 111) 	ieee80211_rx_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 112) 	mac80211_rx_encoding_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 113) 	mac80211_rx_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 114) 	mac80211_tx_info_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 115) 	mac80211_tx_control_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 116) 	mac80211_rate_control_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 117) 	ieee80211_tx_rate
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 118) 	ieee80211_tx_info
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 119) 	ieee80211_tx_info_clear_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 120) 	ieee80211_rx
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 121) 	ieee80211_rx_ni
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 122) 	ieee80211_rx_irqsafe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 123) 	ieee80211_tx_status
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 124) 	ieee80211_tx_status_ni
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 125) 	ieee80211_tx_status_irqsafe
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 126) 	ieee80211_rts_get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 127) 	ieee80211_rts_duration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 128) 	ieee80211_ctstoself_get
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 129) 	ieee80211_ctstoself_duration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 130) 	ieee80211_generic_frame_duration
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 131) 	ieee80211_wake_queue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 132) 	ieee80211_stop_queue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 133) 	ieee80211_wake_queues
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 134) 	ieee80211_stop_queues
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 135) 	ieee80211_queue_stopped
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 136) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 137) Frame filtering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 138) ===============
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 139) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 140) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 141)    :doc: Frame filtering
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 142) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 143) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 144)    :functions: ieee80211_filter_flags
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 145) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 146) The mac80211 workqueue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 147) ======================
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 148) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 149) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 150)    :doc: mac80211 workqueue
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 151) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 152) .. kernel-doc:: include/net/mac80211.h
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 153)    :functions:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 154) 	ieee80211_queue_work
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 155) 	ieee80211_queue_delayed_work