[PATCH RFC wireless-next 0/7] wifi: introduce generic QoS Management framework
Aishwarya R
aishwarya.r at oss.qualcomm.com
Wed Oct 14 22:54:34 PDT 2026
This series implements the generic QoS Management (QM) control-path
framework proposed in:
[DESIGN RFC] wifi: Robust AV streaming Design Proposal for AP [1]
The RFC discusses support for IEEE 802.11 Robust AV Streaming protocols,
specifically Stream Classification Service (SCS) and Mirrored Stream
Classification Service (MSCS), and proposes a generic userspace-to-driver
interface for exchanging QoS Management requests and responses.
The protocol procedures used by this series are specified in 11.25.2 and
11.25.3, IEEE Std 802.11-2024. The SCS Descriptor and MSCS Descriptor
elements are specified in 9.4.2.120 and 9.4.2.242, IEEE Std 802.11-2024,
respectively. The TCLAS element and TCLAS Processing element are specified
in 9.4.2.29 and 9.4.2.31, IEEE Std 802.11-2024. The QoS Characteristics
element is specified in 9.4.2.326, IEEE Std 802.11be-2024.
SCS and MSCS both follow a common request/response model where a non-AP STA
negotiates traffic classification and QoS treatment with the AP using QoS
Management action frames. While the descriptors used by the protocols
differ, both share request operations and per-descriptor status reporting.
SCS uses TCLAS elements and QoS characteristics, while MSCS uses a TCLAS
mask together with its user-priority fields.
Rather than introducing protocol-specific nl80211 commands and driver
interfaces, this series adds a generic QoS Management framework that can be
reused by current and future Robust AV Streaming protocols.
The framework provides:
* IEEE 802.11 definitions for QoS Management protocols, request types and
status codes.
* A new NL80211_CMD_QOS_MGMT command and generic nested attributes
capable of representing SCS and MSCS descriptors.
* cfg80211 request and response structures together with a driver
callback for QoS Management transactions.
* Parsing, validation and response handling in nl80211. Responses are
initialized with the request descriptor IDs and a declined status
before the driver callback, so an unhandled descriptor cannot be
reported as successful.
* mac80211 forwarding support and RCU-protected per-station state
tracking for successful QoS Management transactions.
* map SCS-marked packets to negotiated TIDs and apply MSCS priority
limiting during TX queue selection.
The MSCS packet mark retains the original uplink priority and applies the
priority limit only during transmit queue selection. This avoids
rechecking a previously limited priority against the original bitmap.
SCS descriptors carry either TCLAS elements alone (legacy SCS) or a QoS
Characteristics element (IEEE 802.11be SCS). mac80211 handles legacy SCS
by mapping packets to the negotiated TID during transmit queue selection.
When a QoS Characteristics element is present, mac80211 forwards the full
descriptor to the driver via the qos_mgmt callback, allowing the driver to
apply hardware-specific scheduling or offload.
This series is complementary to Felix's proposal [2]. It deliberately keeps
protocol-specific flow classification out of mac80211.
For SCS, userspace and netfilter can classify flows and carry the resulting
metadata through conntrack and skb marks. For MSCS, mac80211 uses the
received user priority and the negotiated MSCS bitmap.
The corresponding packet-marking model is implemented by the QSDK hostapd
nftables integration [3][4]. It exposes a rule-management interface and
installs per-interface netdev egress chains that can match MAC, IP and
transport-layer fields and write packet marks. This is an implementation
reference for the userspace/netfilter integration; it is not currently
part of upstream hostapd. The netdev RFC describes the corresponding
packet-path support for using this metadata before transmit queue
selection [5].
This model avoids duplicating SCS TCLAS and flow-classification logic in
mac80211 while allowing userspace and netfilter to evolve
classification policies independently. It also keeps the mac80211
data path small and allows drivers to implement hardware-specific
handling or offload where appropriate.
For intra-BSS forwarding, the QoS Management mark may not be preserved
if the AP nftables configuration restores skb->mark from conntrack
unconditionally and the intra-BSS flow is not tracked. Per-station peer
isolation routes STA-to-STA traffic through the full bridge path, ensuring
conntrack sees the flow and the QoS mark is intact at transmit queue
selection.
[1] https://lore.kernel.org/r/20250624205716.1052329-1-quic_rchoodam@quicinc.com/
[2] https://lore.kernel.org/linux-wireless/cover.3af9ba310d9145a9dfd653b5a886feaba98e8884.1788338716.git-series.nbd@nbd.name/
[3] https://git.codelinaro.org/clo/qsdk/oss/src/network/services/hostapd/-/blob/win.wlan_host_opensource.4.0.r39/src/ap/nft.h
[4] https://git.codelinaro.org/clo/qsdk/oss/src/network/services/hostapd/-/blob/win.wlan_host_opensource.4.0.r39/src/ap/nft.c
[5] https://lore.kernel.org/netfilter-devel/20261006085844.2694120-1-hari.chandrakanthan@oss.qualcomm.com/
Aishwarya R (7):
wifi: nl80211: add QoS Management UAPI
wifi: cfg80211: add QoS Management data structures
wifi: nl80211: implement QoS Management request parsing and response
wifi: mac80211: forward QoS Management configuration to drivers
wifi: mac80211: track QoS Management station state
wifi: mac80211: map SCS packets to configured TIDs
wifi: mac80211: add MSCS packet classification
include/linux/ieee80211.h | 1 +
include/net/cfg80211.h | 220 +++++++++++
include/net/mac80211.h | 7 +
include/uapi/linux/nl80211.h | 344 +++++++++++++++++
net/mac80211/cfg.c | 13 +
net/mac80211/driver-ops.h | 28 ++
net/mac80211/ieee80211_i.h | 18 +
net/mac80211/mlme.c | 165 ++++++++
net/mac80211/rx.c | 29 ++
net/mac80211/sta_info.c | 7 +
net/mac80211/sta_info.h | 21 +
net/mac80211/trace.h | 24 ++
net/mac80211/wme.c | 47 +++
net/wireless/nl80211.c | 730 +++++++++++++++++++++++++++++++++++
net/wireless/rdev-ops.h | 17 +
net/wireless/trace.h | 20 +
16 files changed, 1691 insertions(+)
base-commit: a4190accbf7e05496754004bb701fb3e7d04e57f
--
2.34.1
More information about the ath12k
mailing list