-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
upmerge hostap 2.11 #66
Open
krish2718
wants to merge
2,173
commits into
zephyrproject-rtos:main
Choose a base branch
from
krish2718:upmerge_211
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+81,113
−16,060
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
mld_id config is not used anymore. Remove its use from test cases. Signed-off-by: Aditya Kumar Singh <[email protected]>
MLD level information like MLD MAC address, next link ID, etc. was stored in each BSS. However, only the first link BSS assigns values to these members and the other link BSSs store references to the first BSS. However, if the first BSS is disabled, the first BSS reference in all BSS should be updated which is an overhead. Also, this does not seem to scale. Instead, a separate MLD level structure can be maintained which can store all this ML related information. All affiliated link BSSs can keep reference to this MLD structure. This commit adds that MLD level structure. However, assigning values to it and using that instead of BSS level members will be done in subsequent commits. Signed-off-by: Aditya Kumar Singh <[email protected]>
MLD level structure is present to store the MLD level information. Add changes to use the MLD structure instead of link specific struct hostapd_data to get/set the MLD level information. Signed-off-by: Aditya Kumar Singh <[email protected]>
Link ID was assigned when BSS is going through setup and the driver interface init. Later if interface is disabled and enabled again, setup BSS is called which will give a new link ID to it. However, Link ID should be same for a BSS affliated to an AP MLD for the full lifetime of the BSS. Hence, assign the link ID during BSS creation itself. And it will remain until BSS entry is completely freed. Hence, link ID will not change as part of disable/enable. Also, since link ID would be decided now, it will help in creating link level control sockets in a subsequent patch. Signed-off-by: Aditya Kumar Singh <[email protected]>
Currently, whenever a new BSS is created, if it is an EHT BSS it is tied to a corresponding MLD structure. If the structure does not exist already, a new one is created and tied to it. Accordingly, the link ID is assigned as well. However, when the BSS is deleted, the MLD structure is not freed and when it is again created the next time, the link ID is incremented further and the BSS gets a wrong link ID. For example, 2.4 GHz single link AP MLD case: First ADD, link ID 0 would be assigned and MLD interface wlan0 would be created. When REMOVE is issued, the BSS would be deleted but MLD wlan0 will not. When ADD is issued again, the BSS will tie back to MLD wlan0 but this time the link ID will be incremented again and 1 would be assigned. Hence, at subsequent REMOVE/ADD, the link ID keeps on incrementing. Since the link ID remains same for the full lifetime of the BSS and MLD, the next link ID counter cannot be just reset back to 0 when a BSS is deleted. Otherwise, in interleaved link enable/disable case, the link ID would be changed. To overcome this situation, whenever a BSS is deleted, if the MLD is not referenced by any other existing BSS, delete the MLD structure itself. To know how many BSSs are referring a given MLD, introduce a new member refcount in MLD. If the value is 0 it is safe to delete the MLD. Signed-off-by: Aditya Kumar Singh <[email protected]>
Cache the corresponding hostapd_data struct context into the link entry within the driver wrapper. This will be useful for driver events callback processing. Signed-off-by: Aditya Kumar Singh <[email protected]>
This call was added within a conditional CONFIG_IEEE80211AX block even though this can apply without that build option. Move this outside that conditional block. Fixes: b3921db ("nl80211: Add frequency info in start AP command") Signed-off-by: Jouni Malinen <[email protected]>
wpa_driver_nl80211_set_ap() called nl80211_put_freq_params() twice if AP is an AP MLD. It called once while putting the MLO link ID and the other time in the normal flow if frequency info is present. Doing this twice is not required. Call put_freq once during the normal flow only and separately of that, add the link ID for AP MLD. Signed-off-by: Aditya Kumar Singh <[email protected]>
nl80211_remove_links() iterated over all active links in the given BSS and removed all of them. However, at times it is required to remove only one link and not all links. Add a helper function nl80211_remove_link() which will remove just the given link_id from the passed BSS. nl80211_remove_links() will use this and will call this for each of the active links to be removed. Signed-off-by: Aditya Kumar Singh <[email protected]>
Construct the nl80211 remove link command using the per-BSS approach instead of per-driver (drv->first_bss). Signed-off-by: Aditya Kumar Singh <[email protected]>
When the interface was removed, the added links were not removed. While removing the interface, kernel has removed the stale links but hostapd has not. This is wrong since hostapd should remove and do the clean ups properly while removing the interface. Hence, remove the links when interface is removed. Signed-off-by: Aditya Kumar Singh <[email protected]>
Previously, whenever if_remove() was called, the whole interface was deleted. In an AP MLD, all partner BSS use the same driver private context and hence removing the interface when only one of the links goes down should be avoided. Add a helper function to remove a link first whenever if_remove() is called. Later while handling it, if the number of active links goes to 0, if_remove() would be called to clean up the interface. This helper function will be used later when co-hosted AP MLD support is added and as well later during ML reconfiguration support. Signed-off-by: Aditya Kumar Singh <[email protected]>
If one or more BSS from the interface is partnering with BSSs from another interface and if this interface gets disabled, the Beacon frames need to be refreshed for other interfaces. Similar thing should happen when it gets enabled. Add logic to refresh other interface Beacon frames when one of the interfaces is disabled or enabled. Signed-off-by: Aditya Kumar Singh <[email protected]>
Previously, hostapd directly advertised the MLD capabilities received from the driver. Since this information is exchanged during initialization time only, the driver will advertise the maximum supported values. hostapd should parse it and then based on the current situation fill the values accordingly. For example, the maximum number of simultaneous links is supposed to be a value between 0 and 14, which is the number of affiliated APs minus 1. The driver advertises this value as 5 and hostapd, irrespective of the current active links, puts 5 in the frames. Fix this by parsing the value from the driver capabilities and then using the values as per the current situation of the links. The advertised values will be used as the upper limit. Signed-off-by: Aditya Kumar Singh <[email protected]>
Signed-off-by: Aditya Kumar Singh <[email protected]>
When the first link BSS of an interface was de-initialized/disabled, the whole MLD was brought down. All other links were stopped beaconing and links were removed. And if the non-first link BSS was de-initialized/disabled, nothing happened. Even beaconing was not stopped which is wrong. Fix this by properly bringing down the intended link alone from the interface. Signed-off-by: Aditya Kumar Singh <[email protected]>
This functionality can be shared with other files as well. Signed-off-by: Aditya Kumar Singh <[email protected]>
Signed-off-by: Aditya Kumar Singh <[email protected]>
Whenever ap_free_sta() was called, it deleted the whole station entry from the kernel as well. However, with MLD stations, there is a requirement to delete only the link station. Add support to remove the link station alone from an MLD station. If the link going to be removed is the association link, the whole station entry will be removed. Signed-off-by: Aditya Kumar Singh <[email protected]>
The first link BSS was always disabled last. However, now the first BSS can be dynamically adjusted. Hence, remove such restriction. Signed-off-by: Aditya Kumar Singh <[email protected]>
The OpenSSL 3.0 (or newer) version of omac1_aes_vector() did not free the EVP_MAC. This resulted in a memory leak that shows up in a bit strange way in valgrind reports and because of that, was not caught during automated testing. Fixes: 0c61f62 ("OpenSSL: Implement CMAC using the EVP_MAC API") Signed-off-by: Jouni Malinen <[email protected]>
This test could have failed if scan results from a previously executed test case were still the in the driver cache. Signed-off-by: Jouni Malinen <[email protected]>
Try to find the BSS entry that contains the most likely current information for the target BSS. This is mainly needed to avoid some unusual behavior with APs changing their Beacon frame information in a manner that shows up in automated testing, but this might help with some more dynamic real world uses as well, so better do the BSS entry search for the newest entry. Signed-off-by: Jouni Malinen <[email protected]>
This reverts commit bffd2b3. Revert this commit to fix a regression when setting up P2P Group Owner on some old device. Signed-off-by: Jouni Malinen <[email protected]>
These can cause unexpected test failures, so dump the pending monitor socket events more frequently in some cases where event throttling is seen. Signed-off-by: Jouni Malinen <[email protected]>
Add a new attribute QCA_WLAN_VENDOR_ATTR_AVOID_FREQUENCY_IFINDEX for QCA_NL80211_VENDOR_SUBCMD_AVOID_FREQUENCY_EXT subcommand to apply rules for avoid frequencies on a specific netdev. This is a 32-bit unsigned optional attribute. Signed-off-by: Purushottam Kushwaha <[email protected]>
Add affiliated link addresses for non-AP MLDs in the STA* control interface commands. Signed-off-by: Chenming Huang <[email protected]>
Add the Extended Capabilities element for a non-TX BSS into the non-TX BSSID profile subelement in the Multiple BSSID element if the non-TX BSS has different extended capabilities than the TX BSS. Signed-off-by: Jouni Malinen <[email protected]>
Verify that the Extended Capabilities element for the TX BSS shows beacon protection disabled and the Extended Capabilities element for the non-TX BSS (within the Multiple BSSID element) shows it enabled. Signed-off-by: Jouni Malinen <[email protected]>
PTKSA cache API is included in libpasn.so used by external modules, e.g., Wi-Fi Aware. To avoid dependency on CONFIG_PTKSA_CACHE define for the external modules at compile time, remove PTKSA cache static inline functions from the header file and add wrapper function stubs. Signed-off-by: Jouni Malinen <[email protected]>
The test assumes that STA will try to reconnect with the same SAE group after the first authentication attempt is rejected due to unsupported group. Since this behaviour is fixed in the previous patch, configure two different groups to trigger the second authentication attempt. Signed-off-by: Andrei Otcheretianski <[email protected]>
Using just sta_find() won't work for any link addresses but the assoc link, use sta_find_mlo() instead. Signed-off-by: Johannes Berg <[email protected]>
In the case that the AP MLD is disabled and enabled again, flush the wpa_supplicant BSS table before reconnecting as otherwise the previous AP MLD BSSs would be in the BSS table and the wpa_supplicant would try to connect to them. Signed-off-by: Ilan Peer <[email protected]>
Instead of checking the latest scan results every second indefinitely, add more latency between the checks in case the driver does not update the time stamp value (i.e., does not report new Beacon frames during an association). Signed-off-by: Jouni Malinen <[email protected]>
Clear scan results at the beginning of the test case to avoid incorrect behavior if there are multiple entries for the same BSS. In addition, use a bit longer wait for receiving an updated Beacon frame in scan results. Signed-off-by: Jouni Malinen <[email protected]>
When the first link is deleted and there are still remaining links, drv->ctx should be updated to the new default link on the bss. Otherwise, drv->ctx points to the address that has already been freed and makes hostapd crash. Fixes: d2b62b3 ("AP MLD: Support link removal before removing interface") Signed-off-by: Michael-CY Lee <[email protected]>
The 'req_instance' parameter in transmit command should be 'req_instance_id'. Fixes: e3f9ab3 ("NAN: USD in wpa_supplicant") Signed-off-by: Chien Wong <[email protected]>
The Wi-Fi Aware Specification v4.0 only defines unsolicited transmissions only, solicited transmissions only and both unsolicited and solicited transmissions publish. The other possibility is undefined so we should reject it. Signed-off-by: Chien Wong <[email protected]>
Signed-off-by: Chien Wong <[email protected]>
The USD passive subscriber and solicited transmission only publisher require receiving multicast NAN action frames in order to work. Currently, we are not requesting to receive multicast when registering NAN action frames. As a result, USD passive subscribe or solicited only publish may not work. The NL80211_ATTR_RECEIVE_MULTICAST attribute corresponds to wiphy ext feature NL80211_EXT_FEATURE_MULTICAST_REGISTRATIONS, which requires driver support and only a few drivers in the kernel tree support it. Namely ath9k, ath9k_htc, ath10k and hwsim. We should fall back to register non multicast action frames if the driver has no support. It was confirmed that ath9k_htc starts to work after the changes. Note that even without requesting to receive multicast Action frames, some drivers would still upload them. For example, rtl8192cu and hwsim. This is why test cases like test_nan_usd_match would not fail. Tested-on: TP-LINK TL-WN821N v3(AR7010+AR9287, ath9k_htc) Signed-off-by: Chien Wong <[email protected]>
I've run into a case where I can bring a 2.4 GHz AP up without it being in a bridge while I used the 'bridge=' config option. This happens when the HT scan needed for 40 MHz operation failed to start from the get go because another dev on the same phy was already in a scan. At the end the AP is up and running but not added into any bridge. Upon looking at the code, it seems that some hardware fails to issue a scan while in AP and thus we have a fallback that switches the interface from AP to STA before retrying another scan (it will change it back to AP later on when finished). As we cannot have a (non-WDS) STA in a bridge, during that procedure, we also remove/add the AP/STA from/to the bridge as needed. However, in wpa_driver_nl80211_scan() we do not set drv->ap_scan_as_station until the end of the switch-to-sta & retry-scan-start block. This means that when the recursive call to wpa_driver_nl80211_scan() fails (the hardware is busy in my case) we restore the interface to AP with wpa_driver_nl80211_set_mode() but that will not add it back to the bridge. Problem. To fix this lets always set drv->ap_scan_as_station before calling wpa_driver_nl80211_set_mode(). In case wpa_driver_nl80211_set_mode() or wpa_driver_nl80211_scan() fails lets call nl80211_restore_ap_mode() that will set the mode back to AP but also handle the bridge thing as needed. Signed-off-by: Nicolas Escande <[email protected]>
Reduce the number of unwanted SAE commit retries in synchronization error cases when Sync > dot11RSNASAESync in mesh cases by discarding received SAE commit messages for 10 seconds after a sync error has been detected. Signed-off-by: Jouni Malinen <[email protected]>
Going through five extra rounds of SAE commit messages in cases where SAE peers are somehow unsynchronized feels unnecessary much to do by default, so drop the default value to 3. Signed-off-by: Jouni Malinen <[email protected]>
Signed-off-by: Jouni Malinen <[email protected]>
This is needed to add the WDS interface for a STA with stricter implementation checks. Signed-off-by: Jouni Malinen <[email protected]>
When multi_ap is active, hostapd creates an AP-VLAN interface for 4addr stations, even though wds_sta is not configured. A check should be added to determine if wds_sta is active before re-enabling the WDS mode by creating an AP-VLAN for 4addr stations. Signed-off-by: Baligh Gasmi <[email protected]>
During CSA with DFS channels, disable, enable interface is a part of the algorithm. When interface was enabled old operating class before switch and new channel were used causing mismatch in configured_fixed_chan_to_freq() function. Example of log when switch from channel 157 to 108 was triggered: "Could not convert op_class 124 channel 108 to operating frequency" Fixes: bb781c7 ("AP: Populate iface->freq before starting AP") Signed-off-by: Marek Kwaczynski <[email protected]>
Add test to validate CSA between non DFS channel and DFS channel with different operating class. Signed-off-by: Marek Kwaczynski <[email protected]>
Non-AP MLD finds AP MLD's partner links by BSSID from the scan results. However, if the scan results contain BSSs with the same BSSID but different BSS information, the non-AP MLD might assign a wrong BSS to one of the AP MLD's partner links. Avoids the problem by using both BSSID and SSID to find the AP MLD's partner links. Signed-off-by: Michael-CY Lee <[email protected]>
Currently wpa_ft_parse_ies() is setting FTE information to wpa_buf pointer data which is generated after defragmentation. This data will not contain FTE and Fragment element(s) headers. IEEE P802.11be/D5.0 describes the MIC to be calculated on the concatenation of FTE and corresponding Fragment element(s) which implies the element headers are included for each element in the fragmented case. Fix this by correctly populating FTE information when FTE is fragmented. Fixes: 43b5f11 ("Defragmentation of FTE") Signed-off-by: Veerendranath Jakkam <[email protected]>
In the hostapd_cleanup_driver() function, the NULL check for the driver private data (drv_priv) is located within the CONFIG_IEEE80211BE feature flag. As a result, on platforms where CONFIG_IEEE80211BE is not defined, driver->hapd_deinit(drv_priv) is called with drv_priv set to NULL. This leads to a null pointer exception in wpa_driver_nl80211_deinit(). To address this issue, move the NULL check for drv_priv outside the CONFIG_IEEE80211BE build flag. This ensures that the check is performed regardless of the value of CONFIG_IEEE80211BE, preventing the NULL pointer exception. Fixes: df34c2c ("AP MLD: De-initialize/disable link BSS properly") Signed-off-by: Sunil Ravi <[email protected]>
SignalChange should be defined as a property of an interface. Previously, it was incorrectly defined as a property of P2P peers. Fixes: 7a7ce95 ("dbus: Emit more information over D-Bus") Signed-off-by: David Ruth <[email protected]>
Using D-Bus, it is possible to add a valid UPnP service where 'query' and 'response' are specified. In this case, memory for 'query' and 'response' is allocated but not used nor freed. Valgrind complains as follows: 42 bytes in 1 blocks are definitely lost in loss record 32 of 75 at 0x484C214: calloc (vg_replace_malloc.c:1675) by 0x41C673: wpabuf_alloc (wpabuf.c:124) by 0x41C673: wpabuf_alloc_copy (wpabuf.c:162) by 0x54F41A: wpas_dbus_handler_p2p_add_service (dbus_new_handlers_p2p.c:2762) by 0x53B9A2: msg_method_handler (dbus_new_helpers.c:356) by 0x53B9A2: message_handler (dbus_new_helpers.c:412) by 0x4EAB4B8: dbus_connection_dispatch (in /usr/lib64/libdbus-1.so.3.19.13) by 0x5495DF: dispatch_data (dbus_common.c:37) by 0x5495DF: process_watch (dbus_common.c:73) by 0x5495DF: process_watch_read (dbus_common.c:89) by 0x41EE8E: eloop_sock_table_dispatch.part.0 (eloop.c:603) by 0x41FA46: eloop_sock_table_dispatch (eloop.c:597) by 0x41FA46: eloop_run (eloop.c:1233) by 0x56A3CE: wpa_supplicant_run (wpa_supplicant.c:8074) by 0x40DB06: main (main.c:393) 49 bytes in 1 blocks are definitely lost in loss record 37 of 75 at 0x484C214: calloc (vg_replace_malloc.c:1675) by 0x41C673: wpabuf_alloc (wpabuf.c:124) by 0x41C673: wpabuf_alloc_copy (wpabuf.c:162) by 0x54F348: wpas_dbus_handler_p2p_add_service (dbus_new_handlers_p2p.c:2755) by 0x53B9A2: msg_method_handler (dbus_new_helpers.c:356) by 0x53B9A2: message_handler (dbus_new_helpers.c:412) by 0x4EAB4B8: dbus_connection_dispatch (in /usr/lib64/libdbus-1.so.3.19.13) by 0x5495DF: dispatch_data (dbus_common.c:37) by 0x5495DF: process_watch (dbus_common.c:73) by 0x5495DF: process_watch_read (dbus_common.c:89) by 0x41EE8E: eloop_sock_table_dispatch.part.0 (eloop.c:603) by 0x41FA46: eloop_sock_table_dispatch (eloop.c:597) by 0x41FA46: eloop_run (eloop.c:1233) by 0x56A3CE: wpa_supplicant_run (wpa_supplicant.c:8074) by 0x40DB06: main (main.c:393) Fix this ensuring that query and resp are freed both in the error and non-error path of wpas_dbus_handler_p2p_add_service(). Also, add a test in test_dbus.py to verify the correct behavior. Signed-off-by: Davide Caratti <[email protected]>
Update the version number for the build and also add the ChangeLog entries for both hostapd and wpa_supplicant to describe main changes between v2.10 and v2.11. Update the copyright years for the main programs. Signed-off-by: Jouni Malinen <[email protected]>
hostapd/wpa_supplicant 2.11
krish2718
force-pushed
the
upmerge_211
branch
from
November 20, 2024 06:37
0e62b37
to
8c1a832
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Long pending first upmerge of hostap bringing in 2.11 version.