# use ul_rcpi measured as an unassociated sta as additional trigger for steering (experimental)
# use ul_rcpi measured as an unassociated sta as additional trigger for steering (experimental)
option bandsteer '0'
option bandsteer '0'
# if 1 then steering from 5g/6g to 2.4g is alowed
# if 1 then steering from 5g/6g to 2.4g is alowed
option diffsnr '8'
option diffsnr '8'
# minimal RSSI diff (dest RSSI - src RSSI) for the BTM to kick in (default 8dB)
# minimal RSSI diff (dest RSSI - src RSSI) for the BTM to kick in (default 8dB)
option rcpi_threshold_2g '70'
option rcpi_threshold_2g '70'
# global default rcpi threshold to trigger steering on 2GHZ band
# global default rcpi threshold to trigger steering on 2GHZ band
option rcpi_threshold_5g '86'
option rcpi_threshold_5g '86'
# global default rcpi threshold to trigger steering on 5GHZ band
# global default rcpi threshold to trigger steering on 5GHZ band
option rcpi_threshold_6g '86'
option rcpi_threshold_6g '86'
# global default rcpi threshold to trigger steering on 6GHZ band
# global default rcpi threshold to trigger steering on 6GHZ band
option report_rcpi_threshold_2g '80'
option report_rcpi_threshold_2g '80'
# global default rcpi threshold to start reporing on 2GHZ band
# global default rcpi threshold to start reporing on 2GHZ band
option report_rcpi_threshold_5g '96'
option report_rcpi_threshold_5g '96'
# global default rcpi threshold to start reporing on 5GHZ band
# global default rcpi threshold to start reporing on 5GHZ band
option report_rcpi_threshold_6g '96'
option report_rcpi_threshold_6g '96'
# global default rcpi threshold to start reporing on 6GHZ band
# global default rcpi threshold to start reporing on 6GHZ band
...
...
```
```
...
@@ -80,7 +80,7 @@ config wifi-radio
...
@@ -80,7 +80,7 @@ config wifi-radio
# mandate steering may be trigerred by controller in handler of the above
# mandate steering may be trigerred by controller in handler of the above
...
...
option rcpi_threshold '86'
option rcpi_threshold '86'
# steer once ul rcpi goes below this threshold, providing there's enough bcn metrics data available
# steer once ul rcpi goes below this threshold, providing there's enough bcn metrics data available
...
...
option include_sta_metric '1'
option include_sta_metric '1'
# additional trigger point on top of the previous two
# additional trigger point on top of the previous two
...
@@ -101,7 +101,7 @@ In case the report_rcpi_threshold is not set explicitly in configuration file it
...
@@ -101,7 +101,7 @@ In case the report_rcpi_threshold is not set explicitly in configuration file it
Controller initiated mandate steering is now working as follows:
Controller initiated mandate steering is now working as follows:
Once the STA – AP rcpi goes below given value, map-agent sends the Associated STA Link Metrics Response to the map-controller. This in turn will cause map-controller to send beacon metrics request for given STA on all operating classes/channels of nodes operating in the mesh and SSID value set to current network. After some time (depends on number of opclass/channel pairs) – the beacon metrics results will be parsed. Once there’s a better (diffsnr of at least 8dB is a default) BSS found for given STA, controller will try to to move STA to that BSS using BTM request.
Once the STA – AP rcpi goes below given value (report_rcpi_threshold), map-agent sends the Associated STA Link Metrics Response to the map-controller. This in turn will cause map-controller to send beacon metrics request for given STA on all operating classes/channels of nodes operating in the mesh and SSID value set to current network. After some time (depends on number of opclass/channel pairs) – the beacon metrics results will be parsed. Once there’s a better (diffsnr of at least 8dB is a default) BSS found for given STA, controller will try to to move STA to that BSS using BTM request.
Depending on the settings there'll be more or less frequent checks done by the controller. - Frequency of the checks depends on the frequency of the associated sta link metrics responses received from the nodes, which depends on the settings as explained earlier (util_threshold, report_rcpi_threshold, rcpi_threshold, include_sta_metric). Controller will check if RCPI goes below the reporting threshold. If so, then controller will request for beacon metrics and/or unassociated STA link metrics for given client. After some time it will then compare current RCPI of that given station with the values obtained in metrics and only try to (BTM) steer that station if there's a better candidate found. - The delta RCPI of at least 8 is required (difference in beacon metrics RCPI of source and target). Additionally the current uplink RCPI will be always compared with rcpi_threshold in the plugin, and steering will not take place if it's above that trigger.
Depending on the settings there'll be more or less frequent checks done by the controller. - Frequency of the checks depends on the frequency of the associated sta link metrics responses received from the nodes, which depends on the settings as explained earlier (util_threshold, report_rcpi_threshold, rcpi_threshold, include_sta_metric). Controller will check if RCPI goes below the reporting threshold. If so, then controller will request for beacon metrics and/or unassociated STA link metrics for given client. After some time it will then compare current RCPI of that given station with the values obtained in metrics and only try to (BTM) steer that station if there's a better candidate found. - The delta RCPI of at least 8 is required (difference in beacon metrics RCPI of source and target). Additionally the current uplink RCPI will be always compared with rcpi_threshold in the plugin, and steering will not take place if it's above that trigger.
...
@@ -156,33 +156,31 @@ This option is also passed down to rcpi plugin. If set then rcpi plugin will all
...
@@ -156,33 +156,31 @@ This option is also passed down to rcpi plugin. If set then rcpi plugin will all
In order to steer the STA one can also use a map-controller UBUS API as follows
In order to steer the STA one can also use a map-controller UBUS API as follows
- agent - alid of the agent node of the source BSSID
- agent - alid of the agent node of the source BSSID
- src_bssid - source BSSID to which the STA is currently connected
- src_bssid - source BSSID to which the STA is currently connected
- sta - MAC address of the STA to be steered
- sta - MAC address of the STA to be steered
- steer_req_mode - true for mandate, false for opportunity (experimental)
- target_agent - the agent to which the sta is to be steered
- target_bssid - target BSSID to which the STA is requested to connect
- target_bssid - the target bssid to which the sta is to be steered
- abridged - abridged bit in Bssinfo of BTM Request
- disassoc_tmo - maps to Diassoc Immenent field and Disassoc Timer in TUs. When not set, Controller doesnot set the Disassoc Immenent field. Otherwise, it holds the Disassoc timer value in TUs
- mbo_reason - MBO Transition Reason Code to be sent if STA is Agile Multiband capable
## Other UBUS commands
## Other UBUS commands
Get independent (from the algorithm) beacon metrics for one opclass/channel pair:
Get independent (from the algorithm) beacon metrics: