Na urządzeniach z Androidem 13 lub nowszym Android obsługuje standard Wi-Fi 7 (IEEE 802.11be). Na tej stronie opisujemy funkcje Wi-Fi 7 na Androidzie, w tym podstawowe i wielopasmowe działanie (MLO).
Podstawowe funkcje Wi-Fi 7
W tej sekcji opisujemy podstawowe funkcje Wi-Fi 7 dostępne w Androidzie 13 i nowszych wersjach.
Obsługa Wi-Fi 7 na urządzeniu
Platforma Androida zawiera interfejs API WifiManager#isWifiStandardSupported(int standard)
, który aplikacje mogą wywoływać z argumentem ScanResults.WIFI_STANDARD_11BE
, aby sprawdzić, czy urządzenie obsługuje Wi-Fi 7.
Gdy ten interfejs API zostanie wywołany, moduł Wi-Fi sprawdzi, czy config_wifi11beSupportOverride
nakładka konfiguracji jest używana jako zastąpienie, i wykona te czynności:
- Jeśli nakładka jest ustawiona na
true
, zakłada się, że urządzenie obsługuje Wi-Fi 7, niezależnie od odpowiedzi z nl80211. To zastąpienie jest przydatne tylko dla producentów urządzeń, którzy nie mają sterowników zwracających obsługę Wi-Fi 7. - Jeśli nakładka jest ustawiona na
false
(wartość domyślna), moduł Wi-Fi korzysta z informacji z nl80211. Moduł Wi-Fi wysyła żądanie informacji do wificond, który wywołuje polecenie nl80211NL80211_CMD_GET_WIPHY
. Jeśli atrybutNL80211_BAND_IFTYPE_ATTR_EHT_CAP_PHY
znajduje się w odpowiedzi sterownika, zakłada się, że urządzenie obsługuje Wi-Fi 7.
Obsługa skanowanych punktów dostępu Wi-Fi 7
Platforma Androida zawiera interfejs API int ScanResult#getWifiStandard()
, który aplikacje mogą wywoływać, aby sprawdzić, czy zeskanowany punkt dostępu obsługuje Wi-Fi 7. Jeśli punkt dostępu obsługuje Wi-Fi 7, interfejs API zwraca wartość ScanResults.WIFI_STANDARD_11BE
.
Aby aplikacje mogły korzystać z tego interfejsu API, urządzenie nie musi obsługiwać Wi-Fi 7.
Gdy ten interfejs API zostanie wywołany, moduł Wi-Fi sprawdzi, czy EHT Capability IE
znajduje się w wynikach skanowania łączności. Jeśli w wynikach skanowania znajduje się EHT Capability IE
, oznacza to, że zeskanowany punkt dostępu obsługuje Wi-Fi 7.
Klasa AOSP WifiTracker
wyświetla te informacje w interfejsie użytkownika, gdy działa w trybie szczegółowym.
Tryb połączenia STA
Platforma Androida zawiera interfejs API int WifiInfo#getWifiStandard()
, z którego aplikacje mogą korzystać, aby sprawdzić, czy bieżący tryb połączenia stacji (STA) to Wi-Fi 7. Tryb połączenia STA to Wi-Fi 7, gdy zarówno urządzenie, jak i połączony punkt dostępu obsługują Wi-Fi 7. Jeśli tryb połączenia to Wi-Fi 7, interfejs API zwraca ScanResults.WIFI_STANDARD_11BE
.
Gdy wywoływana jest funkcja getWifiStandard
, moduł Wi-Fi określa tryb, wywołując interfejs API HAL ISupplicantStaIface#getConnectionCapabilities()
. Implementacja tego interfejsu HAL API w warstwie wpa_supplicant
AIDL sprawdza, czy EHT Capability IE
znajduje się zarówno w AssocReq
, jak i w AssocRsp
podczas konfiguracji połączenia.
Wybór sieci
W Androidzie 13 wybór sieci opiera się na kilku parametrach, które określają, z którym punktem dostępu należy się połączyć. Jednym z parametrów jest szacowana przepustowość punktu dostępu, która jest szacowana za pomocą bloku ThroughputPredictor
. Blok ThroughputPredictor
korzysta z parametrów PHY urządzenia i zeskanowanego punktu dostępu.
W Androidzie 13 ThroughputPredictor
do obliczeń wykorzystuje te funkcje interfejsu API:
- Obsługa Wi-Fi 7 (802.11be)
- Obsługa szerokości kanału 320 MHz
Uwzględnienie tych możliwości w logice ThroughputPredictor
zwiększa szanse na wybór punktów dostępu obsługujących Wi-Fi 7, gdy urządzenie może korzystać z tych funkcji.
Określanie odległości na podstawie Wi-Fi RTT
Android zapewnia obsługę interfejsu API dla preambuły EHT i szerokości kanału 320 MHz w przypadku Wi-Fi RTT. Umożliwia to obsługę funkcji związanych z Wi-Fi 7 w zakresie RTT, gdy jest ona obsługiwana przez chip.
Interfejsy API HAL
Te interfejsy HAL API obsługują funkcje Wi-Fi 7 w zakresie pomiarów odległości opartych na RTT:
EHT
: stała w przypadkuenum RttPreamble
ienum WifiRatePreamble
WIDTH_320
: Stała wenum WifiChannelWidthInMhz
BW_320MHz
: Stała wenum RttBw
Interfejsy API
Aplikacje mogą używać tych interfejsów API do określania odległości na podstawie RTT w Wi-Fi 7:
ScanResult#PREAMBLE_EHT
ResponderConfig#PREAMBLE_EHT
(SystemApi)
Programowy AP
Android obsługuje Wi-Fi 7 w trybie Soft AP i zapewnia te funkcje:
Uruchomienie punktu dostępu Soft AP
Android obsługuje uruchamianie punktu dostępu w trybie Wi-Fi 7.
Jest to regulowane przez konfigurację nakładki config_wifiSoftapIeee80211beSupported
.
Moduł Wi-Fi używa nakładki config_wifiSoftapIeee80211beSupported
, aby ustawić wartość logiczną HwModeParams#enable80211BE
w wywołaniu interfejsu API IHostApd#addAccessPoint()
. W warstwie AIDL hostapd ta wartość jest używana do ustawiania parametrów hostapd.conf
.
Interfejsy API HAL
Wartość logiczna enable80211BE
w HwModeParams
w warstwie HAL hostapd obsługuje uruchamianie punktu dostępu w trybie Wi-Fi 7.
Raportowanie informacji o programowym punkcie dostępu
Android obsługuje interfejs API, który umożliwia uwzględnianie w raportowanych informacjach o programowym punkcie dostępu informacji o Wi-Fi 7 i szerokości kanału 320 MHz.
Interfejsy API HAL
Stała WIFI_STANDARD_11BE
w interfejsie AIDL Generation.aidl
w hostapd HAL, która jest używana w ApInfo
zgłaszanym w wywołaniu zwrotnym IHostapdCallback#onApInstanceInfoChanged()
, obsługuje raportowanie informacji o programowym punkcie dostępu.
Interfejsy API
Aplikacje mogą używać tych metod (interfejsów API systemu) w SoftApInfo
do raportowania informacji o programowym punkcie dostępu.
SoftApInfo#getWifiStandard()
: zwraca wartośćScanResults.WIFI_STANDARD_11BE
jeśli punkt dostępu jest uruchomiony w trybie Wi-Fi 7.SoftApInfo#getBandwidth()
: ZwracaSoftApInfo#CHANNEL_WIDTH_320MHZ
wartość, jeśli używana jest szerokość kanału 320 MHz.
Funkcje MLO Wi-Fi 7
Działanie w wielu pasmach (MLO) to główna funkcja specyfikacji Wi-Fi 7 (802.11be). MLO to obowiązkowa funkcja w przypadku urządzeń wielolinkowych (MLD) działających w standardzie Wi-Fi 7, zarówno w trybie współbieżnym, jak i niewspółbieżnym.
Rysunek 1. Diagram MLO.
Jak pokazano na rysunku 1, zarówno AP-MLD, jak i STA-MLD mają wiele instancji AP lub STA działających na każdym połączeniu. Każde połączenie ma osobny adres MAC punktu dostępu lub stacji. Punkt dostępu lub stacja ma też adres MAC MLD, który identyfikuje urządzenie.
Reprezentacja linku MLO
Klasa
android.net.wifi.MloLink
reprezentuje link MLO. Ta klasa zawiera te parametry:
int getLinkId()
: identyfikator linku reklamowany przez AP MLD.MacAddress getApMacAddress()
: Adres MAC punktu dostępu. Identyfikator BSSID instancji punktu dostępu dla tego linku.MacAddress getStaMacAddress()
: Adres MAC stacji. Lokalnie przypisany adres MAC instancji STA w połączeniu.int getChannel()
: połącz kanał. Numer kanału linku.int getBand()
: bransoleta z ogniw. Pas linku.int getState()
: stan połączenia. Może mieć jeden z tych stanów:MLO_LINK_STATE_INVALID
: nieprawidłowy. Używane w przypadku inicjowania i błędów.MLO_LINK_STATE_UNASSOCIATED
: niepowiązane. Link nie jest powiązany z punktem dostępu.MLO_LINK_STATE_IDLE
: bezczynny. Link jest powiązany, ale nieaktywny (nie jest do niego przypisany identyfikator ruchu).MLO_LINK_STATE_ACTIVE
: aktywny. Link jest powiązany i aktywny (co najmniej 1 identyfikator TID jest przypisany do linku). Aktywne połączenie może być w trybie oszczędzania energii, ponieważ platforma nie monitoruje stanu zasilania połączenia.
Zeskanowane informacje o MLO punktu dostępu Wi-Fi 7
Aplikacje mogą pobierać parametry MLO dla urządzenia MLD z Wi-Fi 7, gdy moduł Wi-Fi odbierze obiekt ScanResult
z urządzenia AP-MLD. AOSP WifiTracker
wyświetla parametry MLO, gdy
działa w trybie szczegółowym.
Moduł Wi-Fi zbiera informacje o MLO w ten sposób:
- Analizuje element informacyjny (IE) z wieloma linkami zawarty w sygnałach beacon lub odpowiedziach na sondowanie, aby odczytać adres MAC MLD punktu dostępu i bieżący identyfikator linku.
- Analizuje element informacyjny (IE) skróconego raportu o sąsiadach (RNR) zawarty w sygnałach beacon lub odpowiedziach na sondowanie, aby odczytać listę informacji o powiązanych linkach.
Interfejsy API
Aby uzyskać informacje o zeskanowanych punktach dostępu MLO, aplikacje mogą korzystać z tych interfejsów API:
ScanResult#BSSID
: Adres MAC instancji punktu dostępu (w przypadku linku, na którym otrzymano wynik skanowania).MacAddress ScanResult#getApMldMacAddress()
: Zwraca adres MAC MLD punktu dostępu.int ScanResult#getApMloLinkId()
: zwraca identyfikator linku, na którym otrzymano ScanResult.List<MloLink> ScanResult#getAffiliatedMloLinks()
: Zwraca listę obiektówMloLink
dla wszystkich linków reklamowanych przez AP-MLD, w tym linku, na którym otrzymano ScanResult.
Informacje o połączonym punkcie dostępu Wi-Fi 7 z MLO
Gdy urządzenie połączy się z punktem dostępu Wi-Fi 7 AP-MLD, platforma zbierze parametry MLO połączenia z obiektu WifiInfo
. Obiekt AOSP
WifiTracker
wyświetla te informacje w trybie szczegółowym.
Gdy urządzenie połączy się z AP-MLD, moduł Wi-Fi skopiuje informacje MLO z obiektu ScanResult
otrzymanego z AP. Moduł wywołuje następnie ISupplicantStaIface#getConnectionMloLinksInfo()
interfejs API HALISupplicantStaIface#getConnectionMloLinksInfo()
, aby odczytać adresy MAC każdego łącza dla punktu dostępu i stacji, a także zaktualizować stan powiązanych łączy.
Interfejsy API
Aby uzyskać informacje o połączeniu MLO, aplikacje mogą korzystać z tych interfejsów API:
WifiInfo#getBSSID()
: zwraca adres MAC instancji punktu dostępu (w przypadku połączenia, z którym jest powiązane urządzenie).MacAddress WifiInfo#getApMldMacAddress()
: Zwraca adres MAC MLD punktu dostępu.int WifiInfo#getApMloLinkId()
: Zwraca identyfikator połączenia, z którym STA jest powiązany z AP.List<MloLink> WifiInfo#getAffiliatedMloLinks()
: zwraca listę obiektówMloLink
dla wszystkich linków reklamowanych przez AP-MLD, w tym powiązany link. O adresy MAC punktu dostępu i stacji można wysyłać zapytania w każdym obiekcieMloLink
.
Skanowanie AP-MLD
Oprogramowanie dostawcy przekazuje do platformy Wi-Fi wyniki skanowania każdego sygnału beacon lub odpowiedzi na sondę, które otrzyma. Oznacza to, że platforma Wi-Fi:
- Może otrzymywać wiele obiektów
ScanResults
z tego samego AP-MLD (ponieważ punkt dostępu może mieć wiele linków sygnalizacyjnych). - Może otrzymać tylko częściowy zestaw wyników skanowania linków punktu dostępu w przypadku punktu dostępu MLD, ponieważ niektóre z tych sygnałów linków mogą nie być odbierane przez oprogramowanie sprzętowe.
Oprogramowanie dostawcy raportuje tylko wyniki skanowania otrzymane drogą radiową i nie może tworzyć (sztucznie syntetyzować) wyników skanowania na podstawie reklamowanych linków przez AP-MLD.
Oprogramowanie dostawcy musi zawierać podstawowy wariant wielokrotnego połączenia i elementy informacyjne RNR otrzymane z instancji AP w zgłoszonych wynikach skanowania. Jeśli w wynikach skanowania brakuje szczegółów dotyczących powiązanego punktu dostępu, oprogramowanie dostawcy może wysyłać żądania sondowania z wieloma linkami (ramka żądania sondowania zawierająca element żądania sondowania z wieloma linkami), aby w ramce odpowiedzi uwzględnić pełny lub częściowy zestaw funkcji, parametrów i elementów operacyjnych punktu dostępu z docelowym punktem dostępu MLD.
Oprogramowanie dostawcy może w razie potrzeby wywoływać sondowanie ML (za pomocą wariantu żądania sondy ML IE w ramce żądania sondy).
Powiązanie sieci AP-MLD
Gdy urządzenie dołączy do sieci AP-MLD, oprogramowanie dostawcy używa wybranego połączenia AP (połączonego połączenia) do sygnalizacji. Oprogramowanie dostawcy może powiązać się ze wszystkimi lub niektórymi linkami obsługiwanymi przez urządzenie.
Po udanym powiązaniu sterownik zgłasza
ISupplicantStaIfaceCallback#onStateChanged()
identyfikator BSSID połączenia z punktem dostępu MLD. Kierowca wybiera link do AP-MLD, pod warunkiem że wyniki skanowania zostały zgłoszone do platformy.
Ocena sieci
W przypadku urządzeń z Androidem 14 lub nowszym wybór sieci Wi-Fi na Androidzie obsługuje Wi-Fi 7 MLO. Oznacza to, że Android wybiera najlepszą sieć Wi-Fi dla urządzenia na podstawie liczby połączeń dostępnych dla MLO.
Aby obsługiwać MLO, algorytm wyboru sieci korzysta z tych funkcji MLO z układu Wi-Fi:
- Maksymalna liczba linków do wyników wyszukiwania w lokalnych wynikach wyszukiwania
- Maksymalna liczba linków do powiązania
- Jednoczesne kombinacje pasm
Rysunek 2. Wybór sieci MLO.
Maksymalna liczba linków do wyników wyszukiwania w lokalnych wynikach wyszukiwania
Jednoczesna transmisja i odbiór (STR) to schemat rywalizacji o medium Wi-Fi w przypadku działania w wielu połączeniach. Izolacja sygnału między różnymi połączeniami jest wystarczająca, aby połączenia mogły działać niezależnie i umożliwiać jednoczesne przesyłanie i odbieranie danych w różnych połączeniach. STR różni się od starszych STA z pojedynczym połączeniem (SL) i starszych STA z dwupasmowym jednoczesnym połączeniem (DBDC). STA powiązane z STA MLD mają wspólny numer seryjny (SN) nadajnika i wspólną przestrzeń do transmisji danych przydzieloną do różnych połączeń, jeśli wiele połączeń ma tę samą kategorię dostępu (AC).
Maksymalna liczba używanych połączeń STR może być inna niż maksymalna liczba radii obsługiwanych przez układ. W przykładzie na rysunku 2 maksymalna liczba linków STR wynosi 2.
Maksymalną liczbę połączeń STR i maksymalną liczbę połączeń asocjacji obsługują te interfejsy AIDL HAL:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Maksymalna liczba linków do powiązania
Wiele połączeń może działać na jednym radiu przy użyciu schematu rywalizacji, czyli ulepszonego połączenia wielolinkowego z jednym radiem (eMLSR). Urządzenie z wieloma połączeniami używa eMLSR w przypadku zestawu połączeń, jeśli może odbierać określone podstawowe ramki sterujące i jednocześnie przeprowadzać ocenę czystości kanału (CCA) w tym zestawie połączeń. Jednak urządzenie MLD przesyła lub odbiera dane tylko na jednym połączeniu (wybranym dynamicznie w każdym okresie możliwości transmisji (TXOP)).
Stacja MLD może zmaksymalizować liczbę połączeń, aby zapewnić większą niezawodność, większą przepustowość i krótszy czas oczekiwania (w porównaniu ze stacją starszego typu z jednym połączeniem), działając jednocześnie w trybach STR i eMLSR, jeśli jest to obsługiwane przez układ. Na ilustracji 2 maksymalna liczba linków do powiązania wynosi 3.
Maksymalną liczbę linków do powiązania obsługują te interfejsy AIDL HAL:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/WifiChipCapabilities.aidl
Jednoczesne kombinacje pasm
Framework wysyła do układu zapytanie o dozwolone kombinacje radiowe (za pomocą interfejsu IWifiChip.aidl
AIDL), które mogą działać jednocześnie. Na podstawie tych informacji platforma określa możliwe kombinacje pasm działających jednocześnie. Poniżej znajdziesz przykładową listę kombinacji pasm (GHz) działających jednocześnie:
- 2.4
- 5
- 6
- 2,4 x 5
- 2,4 x 6
- 5 x 6
Równoczesne kombinacje radiowe obsługuje ten interfejs AIDL HAL:
hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
Wybór sieci
Podczas wyboru sieci (MLO) lista kandydatów jest grupowana według członków o tym samym adresie MAC MLD. Maksymalny przewidywany wynik przepustowości wielu połączeń jest obliczany dla każdej grupy na podstawie maksymalnej liczby połączeń STR i jednoczesnych kombinacji pasm obsługiwanych przez układ. Jeśli kandydat obsługuje wiele połączeń, a chip obsługuje STR, przewidywany wynik przepustowości jest zastępowany przewidywanym wynikiem przepustowości dla wielu połączeń. Zwiększa to szanse kandydatów MLO podczas wyboru sieci.
Podczas dołączania do sieci AP-MLD platforma wybiera identyfikator SSID na podstawie informacji otrzymanych w obiekcie ScanResults
zgłoszonych przez oprogramowanie dostawcy. Po wybraniu identyfikatora SSID przez platformę oprogramowanie dostawcy jest odpowiedzialne za wybór identyfikatora BSSID dla najlepszego punktu dostępu (lub łącza do punktu dostępu), który będzie używany do powiązania.
Obsługa adresu MAC urządzenia STA
W tej sekcji opisano sposób obsługi adresów MAC STA urządzeń (adresów MAC MLD i adresów MAC STA dla poszczególnych połączeń).
Adres MAC MLD
Adresem MAC MLD urządzenia zarządza platforma Wi-Fi. Adres MAC MLD jest obsługiwany w taki sam sposób, jak adres MAC urządzenia bez MLD.
W zależności od wyboru użytkownika może to być randomizowany adres MAC lub adres MAC przypisany do sprzętu. Adres MAC MLD jest ustawiany przez platformę za pomocą interfejsu IWifiStaIface#setMacAddress()
HAL API.
Adres MAC stacji Per-Link
Oprogramowanie dostawcy zarządza adresami MAC instancji STA (dla każdego połączenia). Gdy urządzenie połączy się z punktem dostępu, oprogramowanie dostawcy przypisuje adres MAC instancji do każdego połączonego łącza.
Oprogramowanie dostawcy przypisuje adresy MAC do poszczególnych połączeń na podstawie swojego algorytmu. Algorytm musi być powtarzalny i zależny od tych czynników:
- Adres MAC STA-MLD ustawiony przez platformę Wi-Fi.
- Identyfikator linku (otrzymany z AP)
Oznacza to, że jeśli platforma ponownie używa tego samego adresu MAC MLD, dostawca musi ponownie użyć tych samych powiązanych adresów MAC dla poszczególnych instancji i odwrotnie. Gwarantuje to, że gdy adres STA-MLD wygenerowany przez platformę jest trwały w przypadku identyfikatora SSID, adresy MAC poszczególnych stacji STA również są trwałe.
Poniżej znajduje się przykładowy algorytm przypisywania adresów MAC STA do poszczególnych połączeń (dostawcy mogą wdrożyć dowolny algorytm, który spełnia kryteria algorytmu):
- Oktet 0: sprawdź, czy ustawiony jest bit lokalnie administrowany
- Oktawy 1–4: takie same jak adres MAC STA-MLD
- Bajt 5: Per-STA = (STA-MLD + link ID + 1) MOD (256)
Obsługa wielu linków
Oprogramowanie sprzętowe dostawcy może przełączać połączenia i zarządzać stanem oszczędzania energii połączeń w celu aktywowania lub dezaktywowania bez interwencji struktury Wi-Fi.
Platforma Wi-Fi nie oczekuje powiadomienia, gdy stan połączenia ulegnie zmianie.
Zarządzanie stanem oszczędzania energii
Stan oszczędzania energii jest domyślnie włączony w ramach Wi-Fi. W stanie oszczędzania energii oprogramowanie sprzętowe dostawcy zarządza stanem oszczędzania energii poszczególnych połączeń na podstawie wzorców ruchu i decyzji o aktywacji lub dezaktywacji połączeń.
Platforma Wi-Fi może jednak wymusić wyłączenie trybu oszczędzania energii, wywołując interfejs API ISupplicantStaIface::setPowerSave(false)
HAL. Jeśli stan oszczędzania energii zostanie wyłączony przez platformę, oprogramowanie sprzętowe dostawcy musi utrzymywać co najmniej jedno aktywne połączenie (oszczędzanie energii wyłączone). W tym stanie oprogramowanie sprzętowe decyduje, które połączenie zostanie ustawione.
Ścieżka danych
Opisuje implementację oprogramowania sprzętowego dostawcy do obsługi ruchu wychodzącego i przychodzącego.
Ruch wychodzący
Oprogramowanie sprzętowe kieruje ruch wychodzący do co najmniej jednego łącza na podstawie wewnętrznej implementacji. Oprogramowanie sprzętowe dostawcy decyduje, kiedy przeprowadzić równoważenie obciążenia, duplikowanie lub agregację ruchu na podstawie wzorców ruchu. Zalecamy duplikowanie ruchu przez oprogramowanie sprzętowe na wiele połączeń w tych przypadkach:
- Gdy tryb niskiego opóźnienia jest ustawiony za pomocą
IWifiChip#setLatencyMode()
interfejsu HAL API. - Gdy występuje ruch o priorytecie użytkownika 6 i 7.
Ruch w dół
Oprogramowanie musi zastąpić (docelowy) adres MAC per-STA w nagłówku MAC adresem MAC MLD-STA, a (źródłowy) adres MAC per-AP w nagłówku MAC adresem MAC MLD-AP. Oprogramowanie musi wykonać tę zamianę adresu MAC przed przekazaniem go przez filtr APF, ponieważ polecenia filtra APF mają filtry oparte na adresach MAC MLD. W przypadku wszystkich linków AP-MLD obowiązuje jeden filtr APF.
Równoczesność
Scenariusze współbieżności, w których radio jest używane w nowym interfejsie, muszą mieć priorytet przed przypisywaniem wielu radi do połączeń tego samego interfejsu. Scenariusze współbieżności muszą mieć też wyższy priorytet niż MLO, niezależnie od tego, który z nich pojawił się jako pierwszy. Korzystanie z wielu linków w przypadku jednego interfejsu jest oportunistyczne, co oznacza, że wiele linków jest używanych tylko wtedy, gdy:
- MLO jest wymagane na podstawie decyzji oprogramowania sprzętowego dotyczącej równoważenia obciążenia, agregacji lub duplikacji.
- MLO jest dostępny, co oznacza, że radio nie jest wymagane przez inny interfejs.
Mapowanie identyfikatora TID na link
W przypadku urządzeń z Androidem 14 lub nowszym, gdy punkt dostępu Wi-Fi 7 ogłosi tymczasowe wyłączenie jednego z połączeń za pomocą elementu mapowania TID na połączenie przesyłanego w ramkach sygnału, odpowiedzi na sondowanie i odpowiedzi na powiązanie, stacja Wi-Fi 7 kontynuuje połączenie z punktem dostępu za pomocą pozostałych skonfigurowanych połączeń bez wykonywania kolejnego powiązania.
W przypadku urządzeń z Androidem 13 lub starszym platforma Wi-Fi nie obsługuje otrzymywania powiadomień o zmianie stanu połączenia z powodu mapowania identyfikatora TID na połączenie, nawet jeśli powiązane połączenie nie jest połączone z identyfikatorem TID.
AIDL HAL
Aplikacja Wi-Fi powiadamia platformę Wi-Fi o zmianach w mapowaniu identyfikatora TID na link za pomocą tych interfejsów 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
Interfejsy API
Aplikacje mogą uzyskiwać informacje o zmianach w mapowaniu identyfikatorów TID na linki za pomocą tych interfejsów API:
ConnectivityManager.NetworkCallback.onCapabilitiesChanged()
: wywołanie zwrotne sieci wywoływane przez platformę, gdy nastąpi zmiana mapowania identyfikatora TID na link.WifiInfo#getAssociatedMloLinks()
: zwraca powiązane linki MLO.MloLink#getState()
: Zwraca stan połączenia:MLO_LINK_STATE_ACTIVE
lubMLO_LINK_STATE_IDLE
.
Możliwości negocjacji mapowania identyfikatora TID na link
Na urządzeniach z Androidem 14 lub nowszym dostępne są te interfejsy API, które umożliwiają uzyskanie możliwości negocjacji mapowania identyfikatora TID na link dla stacji i punktu dostępu.
Możliwości układu
Te interfejsy obsługują funkcję chipa w przypadku negocjacji mapowania identyfikatora TID na link:
AIDL HAL
Interfejs AIDL do negocjacji mapowania identyfikatora TID na link znajduje się w FeatureSetMask
w hardware/interfaces/wifi/aidl/android/hardware/wifi/IWifiChip.aidl
. Funkcja
T2LM_NEGOTIATION = 1 << 8
wskazuje, że chip obsługuje
mapowanie TID na link.
Interfejsy API
WifiManager.isTidToLinkMappingNegotiationSupported()
: zwraca element, który obsługuje negocjacje mapowania identyfikatora TID na link.
Funkcja AP
Te interfejsy obsługują funkcję AP w przypadku negocjacji mapowania TID na link:
AIDL HAL
Framework wysyła do klienta zapytanie o możliwości punktu dostępu wraz z aktualnymi możliwościami połączenia.
apTidToLinkMapNegotiationSupported
: sprawdza, czy punkt dostępu obsługuje możliwość negocjowania mapy identyfikator transakcji – link.
Interfejsy API
WifiInfo.isApTidToLinkMappingNegotiationSupported()
: zwraca informację, czy punkt dostępu obsługuje negocjacje mapowania identyfikatora TID na link.
Statystyki warstwy łącza
Statystyki warstwy łącza obejmują szczegóły dotyczące łącza Wi-Fi, takie jak RSSI, różne liczniki pakietów TX i RX oraz statystyki radiowe. Platforma Wi-Fi okresowo sprawdza statystyki warstwy łącza i RSSI, aby wybrać najlepszą sieć lub ocenić jakość połączonej sieci. W przypadku urządzeń z Androidem 14 lub nowszym statystyki warstwy łącza obejmują obsługę wielu połączeń. Aby obsługiwać Wi-Fi 7, Android obsługuje MLO zarówno w statystykach warstwy łącza, jak i w sondowaniu sygnału.
Statystyki dotyczące konkretnych połączeń znajdują się w tych interfejsach AIDL warstwy połączenia:
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerIfaceStats.aidl
hardware/interfaces/wifi/aidl/android/hardware/wifi/StaLinkLayerLinkStats.aidl
Interfejs API systemu android.net.wifi.WifiManager#addOnWifiUsabilityStatsListener()
nasłuchuje wszystkich statystyk warstwy łącza. Platforma okresowo wywołuje ten interfejs API, aby aktualizować statystyki użyteczności Wi-Fi.
W android.net.wifi.WifiUsabilityStatsEntry
dostępne są te interfejsy API dotyczące linków:
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)
Aby wysyłać zapytania o dostępne identyfikatory linków, aplikacje mogą wywoływać metodę
android.net.wifi.WifiUsabilityStatsEntry#getLinkIds()
.
Interfejsy API w android.net.wifi.WifiUsabilityStatsEntry
w przypadku pojedynczego linku (nie MLO) zwracają zagregowane statystyki połączeń MLO. Oto kryteria agregacji:
Te zagregowane statystyki pakietów korzystają z sumy statystyk poszczególnych połączeń:
public long getTotalTxSuccess() public long getTotalTxRetries() public long getTotalTxBad() public long getTotalRxSuccess() public int getRxLinkSpeedMbps()
Te statystyki korzystają z danych z połączenia o najwyższym wskaźniku RSSI:
public int getRssi() public int getLinkSpeedMbps() public long getTotalBeaconRx() public int getTimeSliceDutyCycleInPercent() public ContentionTimeStats getContentionTimeStats(@WmeAccessCategory int ac) public List<RateStats> getRateStats()
Statystyki warstwy łącza w Androidzie 13
W przypadku urządzeń z Androidem 13 statystyki warstwy łącza nie uwzględniają korzystania z wielu połączeń w przypadku jednego interfejsu. Aby obsługiwać MLO, oprogramowanie dostawcy musi stosować tę logikę agregacji podczas raportowania LinkLayerStats
za pomocą interfejsu HAL API IWifi# getLinkLayerStats_1_6()
. Najlepsze połączenie to połączenie o najwyższym wskaźniku RSSI.
StaLinkLayerStats.iface.beaconRx
: Zgłoś liczbę sygnałów dla najlepszego linku użytego w interfejsie.StaLinkLayerStats.iface.avgRssiMgmt
: ZgłośavgRssiMgmt
najlepszy link używany w interfejsie.StaLinkLayerStats.iface.wmeXxPktStats
(Xx = Vo, Vi, Be,Bk): Report the aggregated packet stats (total) over the links of the interface.StaLinkLayerStats.iface.wmeXxContentionTimeStats
(Xx = Vo, Vi, Be,Bk): raportuje statystyki czasu rywalizacji dla najlepszego łącza używanego na interfejsie (statystyki najkrótszego czasu rywalizacji).
Ponowna konfiguracja połączenia MLO
Gdy jeden z linków punktu dostępu Wi-Fi 7 zostanie ponownie wykorzystany, punkt dostępu może ogłosić usunięcie linku za pomocą rekonfiguracji linku MLO. Stacje mogą utrzymywać bezproblemową łączność z punktem dostępu bez ponownego łączenia na pozostałych połączeniach.
Interfejs AIDL, znajdujący się w programie żądającym Wi-Fi w ISupplicantStaIfaceCallback.aidl
,onMloLinksInfoChanged
obsługuje ponowną konfigurację połączenia (usunięcie połączenia przez punkt dostępu).
Gdy platforma Wi-Fi przetworzy usunięcie połączenia, jego stan zostanie ustawiony na MLO_LINK_STATE_UNASSOCIATED
.
Framework wywołuje wtedy
ConnectivityManager.NetworkCallback#onCapabilitiesChanged()
w przypadku zmiany stanu linku.
Metoda WifiInfo#getAffiliatedMloLinks
zwraca powiązane linki MLO. Metoda MloLink#getState
zwraca stan połączenia. Jeśli link zostanie usunięty, zwrócony stan linku to MLO_LINK_STATE_UNASSOCIATED
.
Strategia Chip MLO
MLO umożliwia urządzeniom wysyłanie i odbieranie danych na wielu połączeniach Wi-Fi w tym samym czasie, co może zwiększyć wydajność aplikacji o specyficznych wymaganiach, takich jak niskie opóźnienie, duża przepustowość i niskie zużycie energii. Producenci układów scalonych mogą opracowywać algorytmy korzystania z dostępnych połączeń.
Aplikacje z uprawnieniami mogą modyfikować te algorytmy za pomocą metody setMloMode
w Wifimanager
i ustawiać te tryby:
MLO_MODE_DEFAULT = 0
MLO_MODE_LOW_LATENCY = 1
MLO_MODE_HIGH_THROUGHPUT = 2
MLO_MODE_LOW_POWER = 3
Platforma używa
setMloMode
w IWifiChip
interfejsie AIDL
do ustawiania trybu MLO.