RDK Resources
[*RDK Preferred*]
Code Management Facility
RDK Forums
[RDK Conferences]
RDK Support
Archives
Papers & Presentations Archive
...
PlantUML Macro |
---|
@startuml hide footbox skinparam SequenceMessageAlign center participant AGENT as "Core Thread" participant HAL as "WiFi HAL Wrapper" participant HOSTAP as "hostap" participant DRIVER as "WiFi Driver" participant LINUX as "Linux System" group ctrl-plane AGENT -> HAL: wifi_init group Interfaces Enumeration HAL -> LINUX: nl_80211cmd(NL80211_CMD_GET_WIPHY, NLM_F_DUMP, wiphy_dump_handler) LINUX -> HAL: wiphy_dump_handler(NL80211_ATTR_WIPHY = 0, NL80211_ATTR_WIPHY_NAME, NL80211_ATTR_SUPPORTED_COMMANDS) LINUX -> HAL: wiphy_dump_handler(NL80211_ATTR_WIPHY = 1, NL80211_ATTR_WIPHY_NAME, NL80211_ATTR_SUPPORTED_COMMANDS) LINUX -> HAL: wiphy_dump_handler(NL80211_ATTR_WIPHY = 2, NL80211_ATTR_WIPHY_NAME, NL80211_ATTR_SUPPORTED_COMMANDS) end group for each Interface HAL -> LINUX: HAL -> LINUX: nl_80211cmd(NL80211_CMD_GET_WIPHY, NL80211_ATTR_WIPHY = i, wiphy_get_info_handler) LINUX -> HAL: wiphy_get_info_handler(NL80211_ATTR_CIPHER_SUITES, NL80211_ATTR_WIPHY_BANDS) group for each band in NL80211_ATTR_WIPHY_BANDS HAL -> HAL: phy_info_frequencies HAL -> HAL: phy_info_ht_capa HAL -> HAL: phy_info_vht_capa HAL -> HAL: phy_info_rates end group end HAL -> HOSTAP: eloop_init HAL -> HOSTAP: eap_server_register_methods HAL --> AGENT: Success AGENT -> HAL: wifi_getHalCapability HAL <-> DRIVER: get phy device capabilities HAL --> AGENT: Success group for each Radio AGENT -> HAL: wifi_setRadioOperatingParameters(index, radio_param) HAL <-> DRIVER: set radio parameters HAL -> HOSTAP: update_hostap_config_params (update struct hostapd_config for this radio) HAL --> AGENT: Success AGENT -> HAL: wifi_createVAP(radio, vap_map) group for each VAP HAL --> LINUX: create interface group vap_mode_ap HAL -> LINUX: nl80211_cmd(NL80211_CMD_SET_INTERFACE, NL80211_IFTYPE_AP) HAL -> HOSTAP: update_hostap_data (update struct hostapd_data for this interface) HAL -> HOSTAP: update_hostap_bss (update struct hostapd_bss_config for this interface) HAL -> HOSTAP: update_hostap_iface (update struct hostapd_iface for this interface) HAL -> HOSTAP: setup_driver(wpa_drv_ops) HAL -> HOSTAP: drv_init HAL -> HOSTAP: hostapd_setup_bss(hostapd_data) HOSTAP -> HAL: flush HAL -> DRIVER: wifi_drv_flush HOSTAP -> HAL: sta_deauth HAL -> DRIVER: wifi_drv_sta_deauth HOSTAP -> HAL: set_key HAL -> DRIVER: wifi_drv_set_key HOSTAP -> HAL: set_ap HAL -> DRIVER: wifi_drv_set_ap HOSTAP -> HAL: set_operstate HAL -> DRIVER: nl80211_register_mgmt_frames(NL80211_CMD_FRAME, process_mgmt_frame) HAL -> LINUX: bridge_rx(raw socket listen) end group vap_mode_sta HAL -> LINUX: nl80211_cmd(NL80211_CMD_SET_INTERFACE, NL80211_IFTYPE_STA) HAL -> LINUX: nl80211_start_scan(NL80211_CMD_TRIGGER_SCAN) HAL -> LINUX: interface_rx(raw socket listen) end end HAL --> AGENT: Success end AGENT -> HAL: wifi_run HAL -> HOSTAP: eloop_run HOSTAP -> HOSTAP: eloop end @enduml |
Client Authentication
PlantUML Macro |
---|
@startuml
hide footbox
skinparam SequenceMessageAlign center
participant HAL as "WiFi HAL Wrapper"
participant HOSTAP as "hostap"
participant DRIVER as "WiFi Driver"
participant LINUX as "Linux System"
participant STA as "Client Device"
group client authentication (WPA2 and WPA3 handshakes)
group mlme
STA -> DRIVER: Auth Frame
DRIVER -> HAL: process_mgmt_frame(NL80211_ATTR_FRAME, frame = auth)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_RX_MGMT, event.frame = frame)
HOSTAP -> HAL: send_mlme(auth)
HAL -> DRIVER: wifi_drv_send_mlme(auth)
DRIVER -> STA: Auth Frame
STA -> DRIVER: Assoc Req Frame
DRIVER -> HAL: process_mgmt_frame(NL80211_ATTR_FRAME, frame = assoc req)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_RX_MGMT, event.frame = assoc req)
HOSTAP -> HAL: send_mlme(assoc resp)
HAL -> DRIVER: wifi_drv_send_mlme(assoc resp)
DRIVER -> STA: Assoc Resp Frame
DRIVER -> HAL: nl80211_event(NL80211_CMD_FRAME_TX_STATUS)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_TX_STATUS)
end
group non-mlme
STA -> DRIVER: Auth Frame
DRIVER -> STA: Auth Frame
STA -> DRIVER: Assoc Req Frame
DRIVER -> STA: Assoc Resp Frame
DRIVER -> HAL: nl80211_event(NL80211_CMD_NEW_STATION)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_TX_ASSOC)
end
note over HOSTAP
start 802.1x authentication
end note
HOSTAP -> HAL: hapd_send_eapol(EAPOL 1/4)
HAL -> DRIVER: bridge_tx(EAPOL 1/4)
DRIVER -> STA: EAPOL 1/4
STA -> DRIVER: EAPOL 2/4
DRIVER -> HAL: bridge_rx (EAPOL 2/4)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_EAPOL_RX, event.frame = eapol)
HOSTAP -> HAL: hapd_send_eapol(EAPOL 3/4)
HAL -> DRIVER: bridge_tx(EAPOL 3/4)
DRIVER -> STA: EAPOL 3/4
STA -> DRIVER: EAPOL 4/4
DRIVER -> HAL: bridge_rx (EAPOL 4/4)
HAL -> HOSTAP: wpa_supplicant_event(EVENT_EAPOL_RX, event.frame = eapol)
HOSTAP -> HAL: set_key
HAL -> DRIVER: wifi_drv_set_key
HOSTAP -> HAL: set_sta_flags
HAL -> DRIVER: wifi_drv_set_sta_flags
end
@enduml |
Jira | ||||||
---|---|---|---|---|---|---|
|
...