[DESIGN RFC v3] AP Architecture for Wi-Fi-8 Multi-AP Coordination (MAPC)

Abhishek Rajkapur Suryawanshi abhishek.suryawanshi at oss.qualcomm.com
Mon Jan 12 10:52:52 PST 2026


Hello Everyone,

This RFC presents a high-level design proposal for Multi-AP Coordination
framework in IEEE 802.11bn (Wi-Fi 8).

The design is based on IEEE 802.11bn-D1.1 (as of Dec 2025) and may be
updated based on future draft updates.

We hope to gather feedback on the proposed architecture and subsystem
integration strategy. This document does not include implementation
patches or code and is intended solely for design-level discussion.

==============================
Table of Contents
==============================
(1) Introduction & Scope
(2) Background
(3) Proposal
    (3.1) Control Path

==============================
(1) Introduction & Scope
==============================
The IEEE 802.11bn specification has introduced the concept of
Multi-AP Coordination (MAPC) framework which includes set of
schemes (such as Co-BF, Co-SR, Co-TDMA, Co-RTWT and Co-CR) and
procedure in which APs operating their BSSs on the same primary
20 MHz channel coordinate to reduce interference and to improve
network performance, such as medium utilization efficiency,
communication reliability, and latency.

The scope of this RFC is as follows:
1. Enable MAPC framework support across hostapd, mac80211,
   cfg80211 and WLAN-drivers up to 802.11bn-D1.1
2. Focus on AP-side support
   - Capability exchange
   - Feature-specific negotiation
   - MAPC context management
3. Focus on WiFi based inter-AP coordination
   Multi-AP coordination over wired connections will be
   added later, based on specification updates

The following sub-features of the MAPC framework will be deferred
to subsequent versions of this RFC, as the specification is still
evaluating options for MAPC frame handling in multi-cohosted VAP
and MBSSID scenarios:
   - MAPC security

Patches will be proposed in the subsequent version of the RFC once
we have achieved general consensus on the architecture.

==============================
(2) Background
==============================
The MAPC framework operates in three phases:
    - Phase 1 Discovery
      AP advertise MAPC capabilities and common parameters using
      Public Action MAPC Discovery Request/Response frames
      (Ref.IEEE 802.11bn-D1.1, 9.6.7.65 to 9.6.7.66).

    - Phase 2 Negotiation
      AP establish, update, or teardown scheme-specific agreements
      (e.g., Co-BF, Co-SR, Co-TDMA, Co-RTWT, Co-CR) using individually
      addressed MAPC Negotiation Request/Response frames
      (Ref. IEEE 802.11bn-D1.1, 9.6.7.68 to 9.6.7.69).

      - APID Assignment
        When establishing the first MAPC agreement the AP assigns
        an APID to the peer AP (Ref. IEEE 802.11bn-D1.1, 9.4.1.8).
        APIDs share the AID pool(1 to 2006) with non-AP STAs.
        APIDs remain valid while any agreement exists.

    - Phase 3 Operations
      Feature specific frame exchange with peer AP for the established
      agreement.

=============================
(3) Proposal
=============================
(3.1) Control Path (MAPC)
      The MAPC control path is handled in user space by hostapd. The kernel
      layers (cfg80211 and mac80211) pass the required information to the
      WLAN driver.

Figure 1: Proposed Subsystem Integration for MAPC
-----------------------------------------------------
+---------------------------------------------------------------+
|                           hostapd                             |
|                                                               |
|   +----------------------+    +----------------------+        |
|   |   MAPC Discovery     |    |   MAPC Negotiation   |        |
|   +----------------------+    +----------------------+        |
|                                                               |
|   +----------------------+    +----------------------+        |
|   |   MAPC Peer Mgmt     |    |    MAPC Security     |        |
|   +----------------------+    +----------------------+        |
|                                                               |
|                 +----------------------+                      |
|                 |       NL80211        |                      |
|                 +----------------------+                      |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
|                          cfg80211                             |
|                                                               |
|                 +----------------------+                      |
|                 |       NL80211        |                      |
|                 +----------------------+                      |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
|                          mac80211                             |
|                                                               |
|                 +----------------------+                      |
|                 |    MAPC Peer Mgmt    |                      |
|                 +----------------------+                      |
+---------------------------------------------------------------+
+---------------------------------------------------------------+
|                WLAN Driver (e.g., ath12k)                     |
|                                                               |
|   +----------------------+    +---------------------------+   |
|   |   MAPC Peer Mgmt     |    | MAPC Policy Config Mgmt   |   |
|   +----------------------+    +---------------------------+   |
|                                                               |
|                 +---------------------------+                 |
|                 | MAPC Event Gen/Notify     |                 |
|                 +---------------------------+                 |
+---------------------------------------------------------------+

      (A) Hostapd
          - Protocol Parsing & MAPC context management:
            hostapd handles the transmission and reception of MAPC
            Discovery and MAPC Negotiation public action frames with
            neighboring APs.

            - MAPC discovery:
              - After BSS setup, hostapd may initiate MAPC Discovery
                exchanges with neighboring APs.
              - On receiving a MAPC Discovery frame from a peer AP,
                hostapd:
                - Extracts MAPC capabilities, common parameters and
                  (if present) Per Scheme Profiles.
                - Creates a MAPC peer in hostapd and triggers peer
                  creation in the kernel using NL80211_CMD_NEW_STATION
                  with NL80211_ATTR_MAPC_PEER, marking the station as a
                  MAPC peer.

Figure 2: MAPC Discovery Sequence
-----------------------------------------------------
+--------------------------------------------------------------------+
|                        UHR AP-1                                    |
|  +---------+       +---------+       +---------+       +---------+ | +---------+
|  |         |       |         |       |         |       |         | | |         |
|  | hostapd |       | cfg80211|       | mac80211|       |  wlan   | | |  UHR    |
|  |         |       |         |       |         |       | driver  | | |  AP-2   |
|  +----+----+       +----+----+       +----+----+       +----+----+ | +----+----+
|       |                 |                 |                 |      |      |
|  +----+---------------+ |                 |                 |      |      |
|  | init hostapd & HW  | |                 |                 |      |      |
|  | MAPC support update| |                 |                 |      |      |
|  +----+---------------+ |  MAPC Discovery |                 |      |      |
|       |                 |    Request      |                 |      |      |
|       |                 |(MAPC capability)|                 |      |      |
|       +-----------------+-----------------+-----------------+------|------>
|       |                 |  MAPC Discovery |                 |      |      |
|       |                 |    Response     |                 |      |      |
|       |                 |(MAPC capability)|                 |      |      |
|       <-----------------+-----------------+-----------------+------|------+
|       |                 |                 |                 |      |      |
|  +----+---------------+ |                 |                 |      |      |
|  |alloc sta_info store| |                 |                 |      |      |
|  |MAPC capa & params  | |                 |                 |      |      |
|  +----+---------------+ |                 |                 |      |      |
|       |                 |                 |                 |      |      |
|       nl80211_new_station()               |                 |      |      |
|       +----------------->                 |                 |      |      |
|       |(attr MAPC_PEER) |                 |                 |      |      |
|       |                 |                 |                 |      |      |
|       |                 |rdev_add_station()                 |      |      |
|       |                 +----------------->                 |      |      |
|       |                 |                 |                 |      |      |
|       |                 |            +-----------------+    |      |      |
|       |                 |            | alloc mapc sta  |    |      |      |
|       |                 |            |     object      |    |      |      |
|       |                 |            +-----------------+    |      |      |
|       |                 |                 |                 |      |      |
|       |                 |                 +----------------->      |      |
|       |                 |                 |                 |      |      |
|       |                 |                 |     +-----------------+|      |
|       |                 |                 |     | alloc mapc sta  ||      |
|       |                 |                 |     |     object      ||      |
|       |                 |                 |     +-----------------+|      |
|       |                 |                 |                 |      |      |
|       v                 v                 v                 v      |      v
+--------------------------------------------------------------------+

            - MAPC Negotiation:
              - hostapd initiates and responds to MAPC Negotiation
                exchanges for one or more schemes. When a negotiation
                completes successfully:
                - hostapd programs the APID and per-scheme parameters
                  into the kernel via NL80211_CMD_SET_STATION.
                - When all MAPC agreements with a peer AP are removed,
                  hostapd deletes the MAPC peer from the kernel using
                  NL80211_CMD_DEL_STATION

Figure 3: MAPC Negotiation Sequence (ESTABLISHMENT/UPDATE)
---------------------------------------------------------
+--------------------------------------------------------------------+            
|                           UHR AP-1                                 |            
|  +---------+       +---------+       +---------+       +---------+ | +---------+
|  |         |       |         |       |         |       |         | | |         |
|  | hostapd |       | cfg80211|       | mac80211|       |  wlan   | | |  UHR    |
|  |         |       |         |       |         |       | driver  | | |  AP-2   |
|  +----+----+       +----+----+       +----+----+       +----+----+ | +----+----+
|       |                 |                 |                 |      |      |     
|       |                 |                 |  +--------------+-----+|      |     
|       |                 |                 |  | Notify hostapd to  ||      |     
|       |                 |                 |  |    Trigger MAPC    ||      |     
|       |                 |                 |  |    Negotiation     ||      |     
|       |                 |                 |  +--------------+-----+|      |     
|       |  NL80211_CMD_MAPC_NEGOTIATION_TRIGGER(scheme-id,action)    |      |     
|       <-----------------+-----------------+-----------------+      |      |     
|  +----+---------------+ |                 |                 |      |      |     
|  |parse scheme-id &   | |                 |                 |      |      |     
|  |action. Init MAPC   | |MAPC Negotiation |                 |      |      |     
|  |    Negotiation     | |     Request     |                 |      |      |     
|  +----+---------------+(scheme params & APID1               |      |      |     
|       |              Optype:ESTABLISHMENT/UPDATE)           |      |      |     
|       +-----------------+-----------------+-----------------+------+------>     
|       |                 |MAPC Negotiation |                 |      |      |     
|       |                 |    Response     |                 |      |      |     
|       |                (scheme params & APID2               |      |      |     
|       |              Optype:ACCEPT/REJECT/ALTERNATE)        |      |      |     
|       <-----------------+-----------------+-----------------+------+------+     
|  +----+---------------+ |                 |                 |      |      |     
|  |store APID & scheme | |                 |                 |      |      |     
|  |params.             | |                 |                 |      |      |     
|  +----+---------------+ |                 |                 |      |      |     
|       |                 |                 |                 |      |      |     
|      nl80211_set_station()                |                 |      |      |     
|       +----------------->                 |                 |      |      |     
|       |  (MAPC scheme   |                 |                 |      |      |     
|       |   info & APID)  |rdev_set_station()                 |      |      |     
|       |                 +----------------->                 |      |      |     
|       |                 |                 +----------------->      |      |     
|       |                 |                 |                 |      |      |     
|       |                 |                 |        +--------------+|      |     
|       |                 |                 |        | MAPC Policy  ||      |     
|       |                 |                 |        | config set   ||      |     
|       |                 |                 |        +--------------+|      |     
|       |                 |                 |                 |      |      |     
|       v                 v                 v                 v      |      v     
+--------------------------------------------------------------------+            

            [NOTE] MAPC Negotiation AGREEMENT_UPDATE does not modify
                   the APID assigned during AGRREMENT_ESTABLISHMENT

Figure 4: MAPC Negotiation Sequence (TEARDOWN)
-----------------------------------------------------
+--------------------------------------------------------------------+
|                        UHR AP-1                                    |
|  +---------+       +---------+       +---------+       +---------+ | +---------+
|  |         |       |         |       |         |       |         | | |         |
|  | hostapd |       | cfg80211|       | mac80211|       |  wlan   | | |   UHR   |
|  |         |       |         |       |         |       | driver  | | |   AP-2  |
|  +----+----+       +----+----+       +----+----+       +----+----+ | +----+----+
|       |                 |                 |                 |      |      |
|       |                 |                 | +---------------+-----+|      |
|       |                 |                 | |Notify hostapd to    ||      |
|       |                 |                 | |Trigger MAPC         ||      |
|       |                 |                 | |Negotiation(Teardown)||      |
|       |                 |                 | +---------------+-----+|      |
|       |  NL80211_CMD_MAPC_NEGOTIATION_TRIGGER(scheme-id,action)    |      |
|       <-----------------+-----------------+-----------------+      |      |
|  +----+----------------+|                 |                 |      |      |
|  |parse scheme-id &    ||                 |                 |      |      |
|  |action. Init MAPC    ||                 |                 |      |      |
|  |Negotiation(Teardown)||                 |                 |      |      |
|  +----+----------------+|MAPC Negotiation |                 |      |      |
|       |                 |     Request     |                 |      |      |
|       |                 |(Optype:TEARDOWN)|                 |      |      |
|       +-----------------+-----------------+-----------------+------+------>
|       |                 |MAPC Negotiation |                 |      |      |
|       |                 |    Response     |                 |      |      |
|       |                 | (Optype:ACCEPT) |                 |      |      |
|       <-----------------+-----------------+-----------------+------+------+
|  +----+----------------+|                 |                 |      |      |
|  |If agreement count   ||                 |                 |      |      |
|  |is zero for MAPC peer||                 |                 |      |      |
|  |then initiate MAPC   ||                 |                 |      |      |
|  |peer delete          ||                 |                 |      |      |
|  +----+----------------+|                 |                 |      |      |
|       |                 |                 |                 |      |      |
|      nl80211_del_station()                |                 |      |      |
|       +----------------->                 |                 |      |      |
|       |                 |                 |                 |      |      |
|       |                 |rdev_del_station()                 |      |      |
|       |                 +----------------->                 |      |      |
|       |                 |                 +----------------->      |      |
|       |                 |                 |                 |      |      |
|       |                 |                 |        +--------------+|      |
|       |                 |                 |        |  MAPC peer   ||      |
|       |                 |                 |        |  clean-up    ||      |
|       |                 |                 |        +--------+-----+|      |
|       |                 |                 |                 |      |      |
|       |                 |                 |                 |      |      |
|       |                 |                 |                 |      |      |
+-------v-----------------v-----------------v-----------------v------+      v

            [NOTE] The MAPC peer concept is necessary because the
                   specification defines protected-dual variants of
                   the MAPC Negotiation Request and Response frames.
                   When secured MAPC negotiation is required, each
                   coordinating AP must maintain a separate MPASN derived
                   security context for every neighboring AP.

      (B) cfg80211
          cfg80211 handles the following commands and notifications for MAPC
          - NL80211_CMD_NEW_STATION: to create a MAPC station for an MAPC
            peer, marked by NL80211_ATTR_MAPC_PEER.
          - NL80211_CMD_SET_STATION: to set APID and per scheme parameters.
          - NL80211_CMD_DEL_STATION: to delete MAPC stations
          - NL80211_CMD_GET_STATION: to retrieve MAPC station information

          New notifications from cfg80211 to user space:
          - NL80211_CMD_MAPC_NEGOTIATION_TRIGGER
            Direction: kernel to user space.
            Source: cfg80211 on behalf of the WLAN driver/firmware.
            Purpose: Provide a hint to hostapd that MAPC Negotiation
            Request should be triggered on this interface. For each 
            MAPC scheme, the driver/firmware may request establishment,
            update, or teardown of an agreement. hostapd is expected
            to apply policy and iterate over the locally known MAPC
            peers for this interface.

            Attributes:
            - NL80211_ATTR_MAPC_SCHEMES (nested)
              Contains one or more per-scheme MAPC negotiation hints. Each
              nested entry includes:
              - NL80211_ATTR_MAPC_SCHEME_TYPE
                Identifies the MAPC scheme (e.g., Co-BF, Co-SR, Co-TDMA,
				Co-RTWT, Co-CR).
              - NL80211_ATTR_MAPC_ACTION
                Requested negotiation action for this scheme:
                - NL80211_MAPC_ACTION_ESTABLISH: establish new agreement(s).
                - NL80211_MAPC_ACTION_UPDATE: update existing agreement(s).
                - NL80211_MAPC_ACTION_TEARDOWN: teardown existing agreement(s).

      (C) mac80211
          Two design options are considered for representing MAPC peers in
          mac80211:

          Option-A(Preferred): Reuse existing station management infra
          - Allocate standard station objects (struct sta_info / struct
            ieee80211_sta) to represent MAPC peers, and call the WLAN driver.
          - Use a subset of the existing mac80211 station states (NOTEXIST,
            NONE, AUTH) to represent a MAPC stations.
          - Receive MAPC parameters from cfg80211 and forward them to the
            WLAN driver (for example, via existing station update paths).
          - Use NL80211_ATTR_MAPC_PEER to mark a station as a MAPC station,
            so that data path features (e.g., rate control, aggregation,
            buffering) can be bypassed.
          Pros:
          - Minimal changes to existing mac80211 data structures and state
            machine.
          - Reuses existing add_station / sta_state transitions and driver
            callbacks.
          Cons:
          - Overloads the full station infra for control only usage.

          Option-B: Define lightweight MAPC peer/station management
          infra
          In this option, mac80211 defines a lightweight MAPC station
          management infra, decoupled from normal data-path stations:
          - MAPC requesting and responding APs exchange only management/control
            frames. Most datapath related fields in the existing sta_info/
            ieee80211_sta structures are not applicable.
          - Defines a lightweight MAPC station object
            (e.g., struct ieee80211_mapc_sta)to hold MAPC peer context,
            including:
            - Peer MAC address (BSSID), APID, MAPC security context. MAPC
              capabilities and common parameters.
            - A separate MAPC station list is maintained in mac80211 to track
              all MAPC stations.

          New mac80211 to driver callbacks to be introduced, for example:
          - add_mapc_station() create a MAPC peer/station in the
            driver.
          - change_mapc_station() update APID and scheme parameters for an
            existing MAPC peer/station.
          - del_mapc_station() delete a MAPC peer/station in the driver
          Pros:
          - Clean separation between datapath stations and MAPC control only
            stations.
          Cons:
          - Requires new data structures and callbacks in mac80211 and WLAN
            driver.
          - Slightly larger implementation versus Option A.

      (D) WLAN Driver
          - The WLAN driver maps MAPC stations from mac80211 into driver
            peers and programs scheme specific parameters for Phase 3
            operations.
          - MAPC station/peer creation and deletion:
            For Option A:
            - Reuse standard station callbacks (add_station, change_station,
              remove_station) and treat the MAPC peers as control-only
              (no data-path handling).

            For Option B:
            - Implement the new MAPC-specific callbacks (add_mapc_station,
              change_mapc_station, del_mapc_station) to manage MAPC peers.
            - Event reporting:
              - Inform mac80211/cfg80211 that MAPC negotiation should be
                establish, update or torn down with
                NL80211_CMD_MAPC_NEGOTIATION_TRIGGER.

Regards,
Abhishek



More information about the ath12k mailing list