Для устройств под управлением Android 13 или более поздней версии Android поддерживает стандарт Wi-Fi 7 (IEEE 802.11be). На этой странице описаны функции Android Wi-Fi 7, включая базовую и многоканальную работу (MLO).
Базовые функции Wi-Fi 7
В этом разделе описаны базовые функции Wi-Fi 7, включенные в Android 13 и более поздних версий.
Поддержка устройства Wi-Fi 7
Платформа Android включает API WifiManager#isWifiStandardSupported(int standard)
, который приложения могут вызывать с аргументом ScanResults.WIFI_STANDARD_11BE
, чтобы проверить, поддерживает ли устройство Wi-Fi 7.
При вызове этого API модуль Wi-Fi проверяет, используется ли наложение конфигурации config_wifi11beSupportOverride
в качестве переопределения, и выполняет следующие действия:
- Если для наложения установлено значение
true
, предполагается, что устройство поддерживает Wi-Fi 7 независимо от ответа от nl80211. Это переопределение полезно только для производителей устройств, у которых нет драйверов, поддерживающих Wi-Fi 7. - Если для наложения установлено значение
false
(значение по умолчанию), модуль Wi-Fi использует информацию из nl80211. Модуль Wi-Fi запрашивает информацию у wificond, который вызывает команду nl80211NL80211_CMD_GET_WIPHY
. Если в ответе драйвера присутствует атрибутNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY
, предполагается, что устройство поддерживает Wi-Fi 7.
Поддержка сканированной точки доступа Wi-Fi 7
Платформа Android включает API int ScanResult#getWifiStandard()
, который приложения могут вызывать, чтобы проверить, поддерживает ли сканируемая точка доступа (AP) Wi-Fi 7. Если точка доступа поддерживает Wi-FI 7, API возвращает ScanResults.WIFI_STANDARD_11BE
. Устройство не обязательно должно поддерживать Wi-Fi 7, чтобы приложения могли использовать этот API.
При вызове этого API модуль Wi-Fi проверяет, присутствует ли EHT Capability IE
в возвращаемых результатах сканирования подключения. Если EHT Capability IE
присутствует в результатах сканирования, сканируемая точка доступа поддерживает Wi-Fi 7. Класс AOSP WifiTracker
отображает эту информацию о поддержке в пользовательском интерфейсе при работе в подробном режиме.
Режим подключения STA
Платформа Android включает API int WifiInfo#getWifiStandard()
, который приложения могут вызывать, чтобы проверить, является ли режим подключения текущей станции (STA) Wi-Fi 7. Режим подключения STA — Wi-Fi 7, когда и устройство, и подключенное устройство Точка доступа поддерживает Wi-Fi 7. Если режим подключения — Wi-Fi 7, API возвращает ScanResults.WIFI_STANDARD_11BE
.
При вызове getWifiStandard
модуль Wi-Fi определяет режим, вызывая API-интерфейс HAL ISupplicantStaIface#getConnectionCapabilities()
. Реализация этого API HAL на уровне AIDL wpa_supplicant
проверяет, находится ли EHT Capability IE
как в AssocReq
, так и в AssocRsp
во время установки соединения.
Выбор сети
В Android 13 при выборе сети используется несколько параметров, определяющих, к какой точке доступа подключаться. Одним из параметров является предполагаемая пропускная способность точки доступа, которая оценивается с помощью блока ThroughputPredictor
. Блок ThroughputPredictor
использует параметры PHY как устройства, так и сканируемой точки доступа.
В Android 13 ThroughputPredictor
при расчете использует следующие возможности AP:
- Поддержка Wi-Fi 7 (802.11be)
- Поддержка ширины канала 320 МГц
Включение этих возможностей в логику ThroughputPredictor
повышает шансы выбора точек доступа с поддержкой Wi-Fi 7, когда устройство может использовать эти функции.
Определение диапазона на основе Wi-Fi RTT
Android обеспечивает поддержку API для преамбулы EHT и ширины канала 320 МГц для Wi-Fi RTT . Это обеспечивает поддержку возможностей, связанных с Wi-Fi 7, в диапазоне RTT, когда это поддерживается чипом.
HAL API
Следующие API-интерфейсы HAL поддерживают возможности Wi-Fi 7 для определения диапазона на основе RTT:
-
EHT
: константа вenum RttPreamble
иenum WifiRatePreamble
-
WIDTH_320
: константа вenum WifiChannelWidthInMhz
-
BW_320MHz
: константа вenum RttBw
API
Приложения могут использовать следующие API для определения диапазона на основе RTT Wi-Fi 7:
-
ScanResult#PREAMBLE_EHT
-
ResponderConfig#PREAMBLE_EHT
(SystemApi)
Мягкая точка доступа
Android поддерживает Wi-Fi 7 в программной точке доступа и предоставляет следующие функции.
Запустить программную точку доступа
Android поддерживает запуск Soft AP в режиме Wi-Fi 7. Это регулируется конфигурацией наложения config_wifiSoftapIeee80211beSupported
.
Модуль Wi-Fi использует наложение config_wifiSoftapIeee80211beSupported
для установки логического значения HwModeParams#enable80211BE
в вызове API IHostApd#addAccessPoint()
. На уровне AIDL хостаpd это значение используется для установки параметров hostapd.conf
.
HAL API
Логическое значение enable80211BE
в HwModeParams
в HAL hostapd поддерживает запуск программной точки доступа в режиме Wi-Fi 7.
Сообщить информацию о программной точке доступа
Android включает поддержку API для включения информации о ширине канала Wi-Fi 7 и 320 МГц в сообщаемую информацию о программной точке доступа.
HAL API
Константа WIFI_STANDARD_11BE
в интерфейсе Generation.aidl
AIDL в HAL хоста, которая используется в ApInfo
сообщаемом в обратном вызове IHostapdCallback#onApInstanceInfoChanged()
, поддерживает передачу информации о программной точке доступа.
API
Приложения могут использовать следующие методы (системные API) в SoftApInfo
для передачи информации о Soft AP.
-
SoftApInfo#getWifiStandard()
: возвращаетScanResults.WIFI_STANDARD_11BE
, если программная точка доступа запущена в режиме Wi-Fi 7. -
SoftApInfo#getBandwidth()
: ВозвращаетSoftApInfo#CHANNEL_WIDTH_320MHZ
если используется ширина канала 320 МГц.
Возможности MLO Wi-Fi 7
Многоканальная работа (MLO) — основная функция спецификации Wi-Fi 7 (802.11be). MLO является обязательной функцией для многоканальных устройств (MLD), работающих в Wi-Fi 7, как одновременно, так и не одновременно.
Рисунок 1. Диаграмма MLO.
Как показано на рисунке 1, как AP-MLD, так и STA-MLD имеют несколько экземпляров AP или STA, работающих на каждом канале. Каждый канал имеет отдельный MAC-адрес AP или STA. AP или STA также имеют MAC-адрес MLD для идентификации устройства.
Представление ссылки MLO
Класс android.net.wifi.MloLink
представляет ссылку MLO. Этот класс включает в себя следующие параметры:
-
int getLinkId()
: Идентификатор ссылки, объявленный AP MLD. -
MacAddress getApMacAddress()
: MAC-адрес точки доступа. BSSID экземпляра точки доступа для этой ссылки. -
MacAddress getStaMacAddress()
: MAC-адрес STA. Локально назначенный MAC-адрес для экземпляра STA в канале. -
int getChannel()
: Связать канал. Номер канала ссылки. -
int getBand()
: Ссылка на полосу. Полоса ссылки. int getState()
: состояние ссылки. Может быть одним из следующих состояний:-
MLO_LINK_STATE_INVALID
: Недействительно. Используется для инициализации и ошибок. -
MLO_LINK_STATE_UNASSOCIATED
: Не связан. Ссылка не связана с точкой доступа. -
MLO_LINK_STATE_IDLE
: режим ожидания. Ссылка связана, но не активна (ссылка не сопоставлена с идентификатором трафика (TID). -
MLO_LINK_STATE_ACTIVE
: Активно. Ссылка связана и активна (с ссылкой связан хотя бы один TID). Активная ссылка может находиться в режиме энергосбережения, поскольку платформа не отслеживает состояние питания ссылки.
-
Сканированная информация о точке доступа Wi-Fi 7 AP MLO
Приложения могут получить параметры MLO для AP MLD Wi-Fi 7, когда модуль Wi-Fi получает объект ScanResult
от AP-MLD. AOSP WifiTracker
отображает параметры MLO при работе в подробном режиме.
Модуль Wi-Fi собирает информацию MLO, выполняя следующие действия:
- Анализирует многоканальный информационный элемент (IE), включенный в ответ маяка или зонда, для считывания MAC-адреса AP MLD и текущего идентификатора канала.
- Анализирует IE сокращенного отчета о соседях (RNR), включенный в ответ маяка или зонда, для считывания списка информации о дочерних ссылках.
API
Чтобы получить отсканированную информацию AP MLO, приложения могут использовать следующие API:
-
ScanResult#BSSID
: MAC-адрес экземпляра точки доступа (для канала, по которому получен результат сканирования). -
MacAddress ScanResult#getApMldMacAddress()
: возвращает MAC-адрес MLD точки доступа. -
int ScanResult#getApMloLinkId()
: возвращает идентификатор ссылки, по которой был получен ScanResult. -
List<MloLink> ScanResult#getAffiliatedMloLinks()
: возвращает список объектовMloLink
для всех ссылок, объявленных AP-MLD, включая ссылку, по которой был получен ScanResult.
Информация о подключенной точке доступа Wi-Fi 7 AP MLO
Когда устройство подключается к точке доступа Wi-Fi 7 AP-MLD, платформа собирает параметры MLO соединения из объекта WifiInfo
. Объект AOSP WifiTracker
отображает эту информацию при работе в подробном режиме.
Когда устройство подключается к AP-MLD, модуль Wi-Fi копирует информацию MLO из объекта ScanResult
, полученного от точки доступа. Затем модуль вызывает API-интерфейс HAL ISupplicantStaIface#getConnectionMloLinksInfo()
для считывания MAC-адресов каждого канала как для AP, так и для STA, а также для обновления состояния связанных каналов.
API
Чтобы получить информацию о подключении MLO, приложения могут использовать следующие API:
-
WifiInfo#getBSSID()
: возвращает MAC-адрес экземпляра точки доступа (для ссылки, к которой подключено устройство). -
MacAddress WifiInfo#getApMldMacAddress()
: возвращает MAC-адрес MLD точки доступа. -
int WifiInfo#getApMloLinkId()
: возвращает идентификатор ссылки, по которой STA связана с точкой доступа. -
List<MloLink> WifiInfo#getAffiliatedMloLinks()
: возвращает список объектовMloLink
для всех ссылок, рекламируемых AP-MLD, включая связанную ссылку. MAC-адреса AP и STA могут быть запрошены для каждого объектаMloLink
.
AP-MLD сканирование
Программное обеспечение поставщика предоставляет платформе Wi-Fi результаты сканирования для каждого полученного сигнала маяка или зонда. Это означает, что структура Wi-Fi:
- Возможно получение нескольких объектов
ScanResults
от одной и той же точки доступа-MLD (поскольку точка доступа может иметь несколько ссылок маяка). - Может быть получен только частичный набор результатов сканирования для каналов AP AP-MLD, поскольку некоторые из этих сигналов каналов могут быть не получены микропрограммным обеспечением.
Программное обеспечение поставщика сообщает только о результатах сканирования, полученных по беспроводной сети, и не должно создавать (искусственно синтезировать) результаты сканирования на основе объявленных AP-MLD ссылок.
Программное обеспечение поставщика должно включать базовый вариант многоканального и RNR IE, полученные от экземпляров AP, в сообщаемые результаты сканирования. Если в результатах сканирования отсутствуют сведения о аффилированной точке доступа, программное обеспечение поставщика может отправлять многоканальные запросы проверки (кадр запроса проверки, который включает в себя многоканальный элемент запроса проверки), чтобы включить полный или частичный набор возможностей, параметров и элементов операций. точки доступа с целевой AP-MLD в ответном кадре.
При необходимости программное обеспечение поставщика может инициировать ML-зондирование (с использованием IE варианта запроса зонда ML в кадре запроса зонда).
Сетевая ассоциация AP-MLD
Когда устройство присоединяется к сети AP-MLD, программное обеспечение поставщика использует выбранный канал AP (связанный канал) для сигнализации. Программное обеспечение поставщика может связываться со всеми или некоторыми ссылками, поддерживаемыми устройством.
После успешной ассоциации драйвер сообщает ISupplicantStaIfaceCallback#onStateChanged()
с BSSID ссылки для AP-MLD. Затем драйвер выбирает ссылку AP-MLD при условии, что результаты сканирования были переданы в платформу для этой ссылки.
Сетевой скоринг
Для устройств под управлением Android 14 или более поздней версии Android Wi-Fi Network Selection поддерживает Wi-Fi 7 MLO. Это означает, что Android выбирает лучшую сеть Wi-Fi для устройства на основе количества ссылок, доступных для MLO.
Для поддержки MLO алгоритм выбора сети использует следующие возможности MLO чипа Wi-Fi:
- Максимальное количество ссылок STR
- Максимальное количество ассоциативных ссылок
- Одновременные комбинации диапазонов
Рисунок 2. Выбор сети MLO.
Максимальное количество ссылок STR
Одновременная передача и прием (STR) — это схема конкуренции за среду Wi-Fi для многоканальной работы. Изоляция сигнала между различными каналами достаточна для того, чтобы каналы могли работать независимо и могли одновременно передавать и принимать данные в разных каналах. STR отличается от устаревшей одноканальной (SL) STA и устаревшей двухдиапазонной двухпараллельной (DBDC) STA. STA, связанные с STA MLD, совместно используют общий порядковый номер передатчика (SN) и общее пространство для передачи данных, выделенное различным каналам, если передача по нескольким каналам имеет одну и ту же категорию доступа (AC).
Максимальное количество используемых каналов STR может отличаться от максимального количества радиомодулей, поддерживаемых чипом. В примере на рисунке 2 максимальное количество ссылок STR равно 2.
Следующие интерфейсы AIDL HAL поддерживают максимальное количество ссылок STR и максимальное количество возможностей подсчета ссылок ассоциации:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Максимальное количество ассоциативных ссылок
Несколько каналов могут работать на одном радиомодуле с использованием схемы конкуренции Enhanced Multi-Link Single Radio (eMLSR). Многоканальное устройство использует eMLSR для набора каналов, если оно может получать определенные базовые контрольные кадры и одновременно выполнять оценку свободного канала (CCA) для набора каналов. Однако MLD передает или принимает данные только по одному каналу (каналу, выбираемому динамически в каждом периоде возможности передачи (TXOP)) одновременно.
Станция MLD может максимизировать количество ассоциативных каналов для повышения надежности, лучшей пропускной способности и меньшей задержки (по сравнению с устаревшей станцией с одним каналом), одновременно работая в режимах STR и eMLSR, если они поддерживаются чипом. На рисунке 2 максимальное количество ассоциативных ссылок равно 3.
Следующие интерфейсы AIDL HAL поддерживают максимальное количество ассоциативных каналов:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Одновременные комбинации диапазонов
Платформа запрашивает чип, чтобы получить разрешенные комбинации радиосвязи (через интерфейс AIDL IWifiChip.aidl
), которые могут работать одновременно. На основе этой информации система выводит возможные одновременные комбинации диапазонов. Ниже приведен пример списка одновременных комбинаций диапазонов (ГГц):
- 2.4
- 5
- 6
- 2,4 х 5
- 2,4 х 6
- 5 х 6
Следующий интерфейс AIDL HAL поддерживает одновременные комбинации радиосвязи:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
Выбор сети
Во время выбора сети (MLO) список кандидатов группируется по участникам с одинаковым MAC-адресом MLD. Максимальный прогнозируемый показатель пропускной способности многоканальной сети рассчитывается для каждой группы на основе максимального количества каналов STR и одновременных комбинаций полос, поддерживаемых чипом. Если кандидат поддерживает многоканальную работу и чип поддерживает STR, прогнозируемая оценка пропускной способности заменяется прогнозируемой оценкой многоканальной пропускной способности. Это дает преимущество кандидатам в MLO при выборе сети.
При присоединении к сети AP-MLD платформа выполняет выбор SSID на основе информации, полученной в объекте ScanResults
, сообщенной программным обеспечением поставщика. После выбора SSID платформой программное обеспечение поставщика отвечает за выбор BSSID для лучшей точки доступа (или канала точки доступа), которая будет использоваться для ассоциации.
Обработка MAC-адреса STA устройства
В этом разделе описывается, как обрабатываются MAC-адреса STA устройства (MAC-адреса MLD и MAC-адреса STA для каждого канала).
MAC-адрес МЛД
Платформа Wi-Fi управляет MAC-адресом MLD устройства. MAC-адрес MLD обрабатывается так же, как устройство, не поддерживающее MLD, обрабатывает свой собственный MAC-адрес. MAC-адрес может быть случайным MAC-адресом или MAC-адресом, предоставленным аппаратным обеспечением, по выбору пользователя. MAC-адрес MLD устанавливается платформой с помощью API HAL IWifiStaIface#setMacAddress()
.
MAC-адрес STA для каждого канала
Программное обеспечение поставщика управляет MAC-адресами экземпляров STA (для каждого канала). Когда устройство подключается к точке доступа, программное обеспечение поставщика назначает MAC-адрес экземпляра для каждого связанного канала.
Программное обеспечение поставщика назначает MAC-адреса для каждого канала на основе своего алгоритма. Алгоритм должен быть повторяемым и зависеть от следующих факторов:
- MAC-адрес STA-MLD, установленный платформой Wi-Fi.
- Идентификатор ссылки (полученный от точки доступа)
Это означает, что если платформа повторно использует один и тот же MAC-адрес MLD, поставщик должен повторно использовать одни и те же связанные MAC-адреса для каждого экземпляра, и наоборот. Это гарантирует, что, когда сгенерированный платформой адрес STA-MLD является постоянным для SSID, MAC-адреса для каждой STA также являются постоянными.
Ниже приведен пример алгоритма назначения MAC-адреса STA для каждого канала (поставщики могут реализовать любой алгоритм, соответствующий критериям алгоритма):
- Октет 0: убедитесь, что установлен локально администрируемый бит.
- Октет 1–4: то же, что MAC-адрес STA-MLD.
- Октет 5: Per-STA = (STA-MLD + идентификатор канала + 1) MOD (256)
Многоканальная обработка
Прошивка поставщика может выполнять переключение каналов и управлять состоянием энергосбережения каналов для активации или деактивации без участия системы Wi-Fi.
Платформа Wi-Fi не ожидает уведомления при изменении состояния соединения.
Управление режимом энергосбережения
Состояние энергосбережения включено по умолчанию в платформе Wi-Fi. В состоянии энергосбережения встроенное ПО поставщика управляет состоянием энергосбережения отдельных каналов на основе структуры трафика и решений об активации или деактивации канала.
Однако платформа Wi-Fi может принудительно отключить состояние энергосбережения, вызвав API-интерфейс ISupplicantStaIface::setPowerSave(false)
HAL. Если состояние энергосбережения отключено платформой, прошивка поставщика должна поддерживать активным хотя бы одно соединение (энергосбережение отключено). В этом состоянии реализация прошивки решает, какая ссылка установлена.
Путь к данным
Здесь описывается реализация встроенного ПО поставщика для обработки восходящего и загружаемого трафика.
Восходящий трафик
Микропрограмма направляет трафик восходящей линии связи на один (или несколько) каналов на основе своей внутренней реализации. Прошивка поставщика решает, когда выполнять балансировку нагрузки, дублирование или агрегацию трафика на основе шаблонов трафика. Мы рекомендуем прошивку дублировать трафик по нескольким ссылкам в следующих случаях:
- Когда режим с низкой задержкой установлен через API HAL
IWifiChip#setLatencyMode()
. - При наличии трафика с приоритетом пользователя 6 и 7.
Нисходящий трафик
Микропрограммное обеспечение должно заменить MAC-адрес (назначения) для каждой STA в MAC-заголовке на MAC-адрес MLD-STA и MAC-адрес (источника) для каждой AP заголовка MAC на MAC-адрес MLD-AP. Микропрограмма должна выполнить эту замену MAC-адреса перед прохождением через фильтр APF, поскольку команды фильтра APF имеют фильтры, основанные на MAC-адресах MLD. Для всех каналов AP-MLD существует один фильтр APF.
Параллелизм
Сценарии параллелизма, в которых радио используется для нового интерфейса, должны иметь приоритет над выделением нескольких радиомодулей для каналов одного и того же интерфейса. Сценарии параллелизма также должны иметь приоритет над MLO, независимо от того, какой из них был первым. Использование нескольких ссылок для одного интерфейса является оппортунистическим, то есть несколько ссылок используются только в следующих случаях:
- MLO требуется в зависимости от решения встроенного ПО для балансировки нагрузки, агрегации или дублирования.
- Доступен MLO, что означает, что для другого интерфейса радио не требуется.
Сопоставление TID с каналом
Для устройств под управлением Android 14 или более поздней версии, когда точка доступа Wi-Fi 7 объявляет о временном отключении одного из каналов с помощью элемента сопоставления TID-канала, передаваемого в кадрах маяка, ответа на запрос и ответа ассоциации, Wi-Fi 7 станция продолжает соединение с точкой доступа, используя оставшиеся настроенные каналы, без выполнения другой ассоциации.
Для устройств под управлением Android 13 или более ранней версии платформа Wi-Fi не поддерживает получение уведомлений об изменении состояния ссылки из-за сопоставления TID со ссылкой, даже если связанная ссылка не связана с TID.
АЙДЛ ХАЛ
Запрашивающая сторона Wi-Fi уведомляет структуру Wi-Fi об изменениях сопоставления TID-канала через следующие интерфейсы AIDL:
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIfaceCallback.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/ISupplicantStaIface.aidl
hardware/interfaces/wifi/supplicant/aidl/android/hardware/wifi/supplicant/MloLinksInfo.aidl
API
Приложения могут получать информацию об изменениях сопоставления TID со ссылками, используя следующие API:
-
ConnectivityManager.NetworkCallback.onCapabilitiesChanged()
: обратный вызов сети, инициируемый платформой при изменении сопоставления TID-канала. -
WifiInfo#getAssociatedMloLinks()
: возвращает связанные ссылки MLO. -
MloLink#getState()
: возвращает состояние ссылки,MLO_LINK_STATE_ACTIVE
илиMLO_LINK_STATE_IDLE
.
Возможности согласования сопоставления TID-канала
Для устройств под управлением Android 14 или более поздней версии доступны следующие API-интерфейсы, позволяющие получить возможности согласования карты TID-канала для станции и точки доступа.
Возможности чипа
Следующие интерфейсы поддерживают возможности чипа для согласования сопоставления TID с каналом.
АЙДЛ ХАЛ
Интерфейс AIDL для согласования сопоставления TID с каналом находится в FeatureSetMask
в hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
. Возможность T2LM_NEGOTIATION = 1 << 8
указывает, что чип поддерживает сопоставление TID с каналом. API
-
WifiManager.isTidToLinkMappingNegotiationSupported()
: возвращает чип, который поддерживает согласование сопоставления TID и канала.
Возможности точки доступа
Следующие интерфейсы поддерживают возможность AP для согласования сопоставления TID с каналом.
АЙДЛ ХАЛ
Платформа запрашивает возможности точки доступа у соискателя вместе с текущей возможностью соединения.
-
apTidToLinkMapNegotiationSupported
: проверяет, поддерживает ли точка доступа возможность согласования карты TID-канала.
API
-
WifiInfo.isApTidToLinkMappingNegotiationSupported()
: Возвращает информацию о том, поддерживает ли точка доступа согласование сопоставления TID и канала.
Статистика связного уровня
Статистика канального уровня включает в себя подробные сведения о канале Wi-Fi, такие как RSSI, различные счетчики пакетов TX и RX, а также статистику радиосвязи. Платформа Wi-Fi периодически опрашивает статистику канального уровня и RSSI, чтобы выбрать лучшую сеть или оценить качество подключенной сети. Для устройств под управлением Android 14 или более поздней версии статистика канального уровня включает поддержку нескольких ссылок. Для поддержки Wi-Fi 7 Android поддерживает MLO как в статистике канального уровня, так и при опросе сигнала.
Статистика, специфичная для канала, находится в следующих интерфейсах AIDL канального уровня:
-
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerIfaceStats.aidl
-
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerLinkStats.aidl
Системный API android.net.wifi.WifiManager#addOnWifiUsabilityStatsListener()
прослушивает всю статистику канального уровня. Платформа периодически вызывает этот API для обновления статистики удобства использования Wi-Fi.
Следующие API-интерфейсы для конкретных ссылок доступны в android.net.wifi.WifiUsabilityStatsEntry
.
int getRssi(int linkId)
int getLinkState(int linkId)
int getRadioId(int linkId)
int getTxLinkSpeedMbps(int linkId)
long getTotalTxSuccess(int linkId)
long getTotalTxRetries(int linkId)
long getTotalTxBad(int linkId)
long getTotalRxSuccess(int linkId)
long getTotalBeaconRx(int linkId)
int getRxLinkSpeedMbps(int linkId)
int getTimeSliceDutyCycleInPercent(int linkId)
ContentionTimeStats getContentionTimeStats(int linkId, @WmeAccessCategory int ac)
List<RateStats> getRateStats(int linkId)
Чтобы запросить доступные идентификаторы ссылок, приложения могут вызвать метод android.net.wifi.WifiUsabilityStatsEntry#getLinkIds()
.
API в android.net.wifi.WifiUsabilityStatsEntry
для одного канала (не MLO) возвращают агрегированную статистику для соединений MLO. Ниже приведены критерии агрегирования:
Следующая агрегированная статистика пакетов использует сумму статистики по каждому каналу:
public long getTotalTxSuccess() public long getTotalTxRetries() public long getTotalTxBad() public long getTotalRxSuccess() public int getRxLinkSpeedMbps()
В следующей статистике используются данные из канала с самым высоким RSSI:
public int getRssi() public int getLinkSpeedMbps() public long getTotalBeaconRx() public int getTimeSliceDutyCycleInPercent() public ContentionTimeStats getContentionTimeStats(@WmeAccessCategory int ac) public List<RateStats> getRateStats()
Статистика канального уровня в Android 13
Для устройств под управлением Android 13 статистика канального уровня не учитывает использование нескольких ссылок для одного интерфейса. Для поддержки MLO программное обеспечение поставщика должно применять следующую логику агрегирования при составлении отчетов LinkLayerStats
через API HAL IWifi# getLinkLayerStats_1_6()
. Лучшая ссылка — это ссылка с самым высоким RSSI.
-
StaLinkLayerStats.iface.beaconRx
: сообщите количество маяков для лучшей ссылки, используемой для интерфейса. -
StaLinkLayerStats.iface.avgRssiMgmt
: сообщитеavgRssiMgmt
о лучшей ссылке, используемой для интерфейса. -
StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo, Vi, Be,Bk): отчет об агрегированной статистике пакетов (всего) по каналам интерфейса. -
StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo, Vi, Be,Bk): отчет о статистике времени конфликтов для лучшей ссылки, используемой в интерфейсе (наименьшая статистика времени конфликтов).
Реконфигурация канала MLO
Когда одно из каналов точки доступа Wi-Fi 7 переназначается, точка доступа может объявить об удалении канала посредством реконфигурации канала MLO. Станции могут поддерживать бесперебойное соединение с точкой доступа без повторной ассоциации на остальных каналах.
Интерфейс AIDL onMloLinksInfoChanged
, расположенный в соискателе Wi-Fi по адресу ISupplicantStaIfaceCallback.aidl
, поддерживает реконфигурацию канала (удаление ссылки AP).
Когда платформа Wi-Fi обрабатывает удаление ссылки, состояние ссылки устанавливается на MLO_LINK_STATE_UNASSOCIATED
. Затем платформа запускает ConnectivityManager.NetworkCallback#onCapabilitiesChanged()
для изменения состояния канала.
Метод WifiInfo#getAffiliatedMloLinks
возвращает дочерние ссылки MLO. Метод MloLink#getState
возвращает состояние ссылки. Если ссылка удалена, возвращается состояние ссылки MLO_LINK_STATE_UNASSOCIATED
.
Стратегия чипа MLO
MLO позволяет устройствам отправлять и получать данные по нескольким каналам Wi-Fi одновременно, что может повысить производительность приложений, к которым предъявляются особые требования, такие как низкая задержка, высокая пропускная способность и низкое энергопотребление. Производители чипов могут разработать алгоритмы использования доступных ссылок.
Привилегированные приложения могут изменять эти алгоритмы с помощью метода setMloMode
в Wifimanager
и устанавливать следующие режимы:
-
MLO_MODE_DEFAULT = 0
-
MLO_MODE_LOW_LATENCY = 1
-
MLO_MODE_HIGH_THROUGHPUT = 2
-
MLO_MODE_LOW_POWER = 3
Платформа использует setMloMode
в интерфейсе IWifiChip
AIDL для установки режима MLO.