Wi-Fi 7 - MLO - Phase 1.0
- 1 General
- 2 Northbound API
- 2.1 OVSDB
- 2.1.1 Wifi_VIF_Config
- 2.1.1.1 Additional meaning
- 2.1.2 Wifi_VIF_State
- 2.1.2.1 Added
- 2.1.3 Wifi_Associated_Clients
- 2.1.4 Wifi_VIF_Neighbors
- 2.1.1 Wifi_VIF_Config
- 2.2 MQTT
- 2.1 OVSDB
- 3 Southbound API
- 4 Requirements
General
The first phase of MLO support in OpenSync introduces an abstraction layer for remote (SDN) control (OVSDB Schema) and telemetry reporting (Protocol buffer messages through MQTT) associated to Multi Link Operation.
MLO is an integral and mandatory part of Wi-Fi 7 (11be) specification. It allows aggregating multiple bands/APs as single links at protocol level allowing for increased throughput capacity and decreased (improved) latency.
Initial MLO support in OpenSync is by design very restrictive in runtime configuration to allow lowest common denominator support.
MLO is supported only with OWM. WM2 is not supported.
This should be considered as a technology preview.
Northbound API
OVSDB
Wifi_VIF_Config
Additional meaning
enabled
- for interfaces that aremode
=sta
this implicitly defines whether a given link is also intended to be used for MLO setup. If multiple VIFs that share the samemld_addr
are enabled then a MLO association shall be done as soon as possible with as little VIFs as possible. Additional VIF links can be added through a re-setup after they get discovered. The MLO non-AP STA can be setup initially with a single link only if other affiliated VIFs are incapable of finding a matching link.
Wifi_VIF_State
Added
mld_addr
- the MLD address that given VIF is part of. This is non-configurable at runtime. This is considered a system property. If empty, the VIF is not part of an MLD.mld_if_name
- this is system dependent. If the data path will be routed through a different network device in the system, then this shall be reported here. This is required to properly configure bridging rules.
Wifi_Associated_Clients
Added
mld_addr
- the MLD address that belongs to the associated client. If empty, the link is not part of an MLD and is a regular non-MLO association. If non-empty it signals the client is Wi-Fi 7, uses MLO and this particular row is one of the affiliated links of the MLD client. A client may have 1 or more links (ie. rows). Each link (row) will have a differentmac_addr
, but the samemld_addr
.
Notes
MLO clients will appear >1 in the Wifi_Associated_Clients. Each MLO link will show up as separate entry (row) in the table and will be tied up by the
mld_addr
column.
Wifi_VIF_Neighbors
mld_addr
- the MLD address that the given Neighbor entry is part of. If empty, the neighbor is not part of an MLD and is a regular non-MLD AP.
MQTT
Client
Added
mld_address
- a string, format ofaa:bb:cc:dd:ee:ff
that denotes the client’s MLD address, if Wi-Fi 7 MLO association took place. Multiple reports with differentmac_address
can appear sharing the samemld_address
.
Notes
MLO clients will advertise their statistics in separate Client messages per link (and will be part of separate band reports). The
mld_address
will tie up the separate link reports.
BSClient
Added
mld_address
- a string, format ofaa:bb:cc:dd:ee:ff
that denotes the client’s MLD address, if Wi-Fi 7 MLO association took place. Multiple reports with differentmac_address
can appear sharing the samemld_address
.
Notes
MLO clients will advertise their statistics in separate BSClient messages per link (and will be part of separate band reports). The
mld_address
will tie up the separate link reports.
Southbound API
osw_drv modules are expected to report additional data in reports:
osw_drv_vif_state_ap
struct osw_drv_mld_state mld
- see below
osw_drv_vif_state_sta
struct osw_drv_mld_state mld
- see below
osw_drv_vif_state_sta_link
struct osw_hwaddr mld_addr
- Signals given STA iftype VIF link association is part of an MLD. If00:00:00:00:00:00
is reported then the link is not part of an MLD.
osw_drv_sta_state
struct osw_hwaddr mld_addr
- Signals given STA link association is part of an MLD. If00:00:00:00:00:00
is reported then the link is not part of an MLD.
struct osw_drv_mld_state
- shared structure to de-duplicate and represent similar datastruct osw_hwaddr addr
- Signals what MLD address given entity (that usesstruct osw_drv_mld_state
) is part of.00:00:00:00:00:00
if not part of an MLD.struct osw_ifname if_name
- Signals where datapath will be redirected by the system to. Possible values could be:""
(empty) if datapath is not re-routed in any way and the systemif_name of one of the VIFs that are part of the MLD
In other words, multiple VIFs that are part of the same MLD can report that one of them was elected for datapath processing.
some special if_name of a bond-style VIF
Requirements
QSDK 12.0 for QCA is required
Patch required: https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-next.git/commit/?id=a6e4f85d3820d00694ed10f581f4c650445dbcda
Without this patch MLD reporting from kernel to userspace is broken.
Feature flags required:
prov_mld
- enables MLD VIF provisioning. System integrator are urged to consider this as a reference, not a production ready solution.use_owm
- enables OWM and disables WM2. OWM is required for MLO operation.