CHROMIUM: merge-2a6107118 from branch/tag: upstream/main into branch: wpa_supplicant-2.10.0

Conflicts:
    src/common/ieee802_11_defs.h
    wpa_supplicant/bgscan_simple.c
    wpa_supplicant/bssid_ignore.c
    wpa_supplicant/events.c
    wpa_supplicant/scan.c
    wpa_supplicant/wpa_supplicant_i.h

Changelog:
-------------------------------------------------------------
Aditya Kumar Singh (1):
      Fix Multiple BSSID element length calculation

Ainy Kumari (1):
      P2P: Do not skip updating BSS table when frequency is changed

Andrei Otcheretianski (20):
      wpa_supplicant: Add config parameters for MLD testing
      wpa_supplicant: Remove duplicate logic in wpas_ml_element()
      wpa_supplicant: Fix ml_ie_len type in wpa_bss_parse_basic_ml_element()
      AP MLD: Don't include AP MLD ID in Beacon frames
      AP: Avoid setting same MLD and link address
      AP: Get rid of wpa_auth_pmksa_add3()
      wpa_supplicant: Use wpa_msg() in bssid_ignore.c
      tests: Add a unit test for RNR/basic ML element parsing
      tests: Update ML discovery test to also check probe requests
      wpa_supplicant: Remove redundant CONFIG_WNM in wnm_sta.c
      WNM: Skip current connection BSS when disassociate imminent is set
      AP: Fix EHT MCS size validation for received element
      tests: Add more EHT tests with various bandwidths and channels
      AP: Allow hex format for puncturing bitmap
      AP: Publish the correct PSD value in RNR TBTT information field
      Disable _FORTIFY_SOURCE when building with -O0
      AP: Fix compilation warning in hapd_pasn_update_params()
      wpa_supplicant: Don't assign pointer to bool
      RSN: Fix (B)IGTK MLO KDE length print
      Get rid of multiple MIN macros

Baligh Gasmi (1):
      Initialize the variables before using it in channel update

Ben Greear (1):
      bgscan: Allow simple bgscan to do BTM queries

Benjamin Berg (46):
      tests: Disable IPv6 in WNM keep-alive test
      nl80211: Do a roundtrip to reset event supressions
      SME: Drop old disassoc_while_authenticating workaround
      common: Simplify and avoid confusing defragmentation API
      EHT: Define status codes from IEEE P802.11be/D4.0
      MLD: Also mark links as failed after association failure
      MLD: Return status code for links when rejecting association
      MLD: Add a TEST_FAIL to fail one link in an MLD association.
      MLD: Do not consider ignored BSSs for links when parsing RNR info
      nl80211: Add support to parse out link from error reply
      nl80211: Report link specific association failures from the kernel
      MLD: Ignore failed links from association attempt
      AP: Use a struct for Probe Response generation in/out params
      AP: Split Probe Response frame IE generation into a separate function
      AP: Add parsing of ML probe requests
      AP: MLO: Add helper to iterate all links of an AP MLD
      ML: Add basic handling of ML probe requests
      MLD: Use MLD MAC address for deauthentication
      tests: Avoid exception string matching for failures
      tests: Fix some incorrect failure waiting calls
      Share TEST_FAIL/TEST_ALLOC_FAIL/GET_FAIL/GET_ALLOC_FAIL handler
      trace: Use an array of skipped function names
      trace: Share common implementation for TEST_FAIL and TEST_ALLOC_FAIL
      trace: Document function pattern prefixes
      trace: Allow multiple failures in one test
      tests: Allow specifying multiple failure locations
      trace: Add TEST_FAIL_TAG macro to allow more narrow matching
      tests: Add some MLD association tests
      tests: Test driver association ML link rejection flow
      Use the link BSSID to resolve current BSS for whether to roam check
      SME: Remove comment in missing ML links handling
      tests: Strip trailing space from ip output
      tests: Explicitly set address to bind to
      tests: Write services needed for pyrad
      tests: Stop wpa_supplicant AP at end of VHT 80 MHz (US) test
      tests: Flag inside VM using an environment variable
      build: Properly grab the libpcsclite cflags
      tests: Optimize process memory reading using join
      tests: Run kmemleak between tests if available
      mesh: Set the mld_link_id to -1 when adding a station
      nl80211: Pass wiphy events to all affected interfaces
      nl80211: Retrieve maxattr via genl for nl80211
      nl80211: Avoid sending unsupported attributes
      MLD: Read the correct BSSID from the RNR
      MLD: Fail connection if ML Authentication frame could not be parsed
      wpa_supplicant: Do not invalidate PMKSA cache for bssid_* updates

Chaitanya Tata (4):
      Add an option to remove RRM and supported operating class indication
      Add an option to remove Robust AV (SCS, MSCS, QoS Management)
      Add an option to remove WMM-AC
      Fix MBO build with GAS dependency

Chenming Huang (7):
      nl80211: Remove links when stopping AP MLD in hostapd
      nl80211: Specify link ID when sending Management frames
      nl80211: Add link ID when setting BSS attributes for AP MLD
      AP MLD: Handle channel switch event in correct link
      AP MLD: Handle DFS in correct link
      Add QCA vendor attributes for link id for HT-scan/ACS command
      AP MLD: Channel switch for specific link

Chien Wong (1):
      build: bgscan_simple depends on WNM

Daniel Gabay (5):
      bgscan: Fix bgscan_init() stub declaration
      MSCS: Extend MSCS response handling
      MSCS: Process unsolciited MSCS Response frames
      tests: Refactor MSCS
      tests: Extend MSCS testing

Dmitrijs Martinovs (1):
      DFS: Change vht_capab according to user requested bandwidth

Gururaj Pandurangi (1):
      Add QCA vendor attribute for EHT SCS traffic description support

Hu Wang (1):
      nl80211: Add NL80211_ATTR_MLO_LINK_ID for NL80211_CMD_REMAIN_ON_CHANNEL

Ilan Peer (52):
      AP MLD: Make BSS parameter change variable
      AP: Add support for testing ML link removal
      scan: Include AP MLD ID in ML probe request if needed
      scan: MLD: Include SSID in ML probe request
      AP MLD: Use MLD MAC address for SA query and response when needed
      AP: Handle re-association from a non-AP MLD
      tests: Add validation of number of valid and active links for MLO
      tests: Verify link removal (MLO)
      nl80211: Add support for handling MLO removed links
      AP MLD: Do not access WPA authenticator object if not valid
      AP MLD: Do not include empty MLO KDEs
      tests: Test GTK rekey in test_eht_mld_link_removal()
      nl80211: Do not allow off channel when frequency is not specified
      AP MLD: Do not modify flags for link stations
      AP: Always include WPA_STA_AUTHORIZED in station flags mask
      AP: Fix setting MLD Parameters subfield in RNR element
      Remove a spurious tab in hostapd_eid_rnr()
      WNM: Use correct address when configured as AP MLD
      WNM: Allow frames from AP MLD
      AP: Use AP MLD MAC address for terminating MLO association
      AP: When sending Action frames, use the AP MLD MAC address if needed
      WNM: Handle BTM request with Link Removal Imminent field set to 1
      AP: MLD: Extend BSS transition management request for link removal
      tests: Verify BTM request with link removal imminent flow
      AP: Support overriding EHT operation puncturing mask
      tests: Add tests for EHT operation puncturing override
      nl80211: Add link ID to the queue parameters configuration print
      MLD: Add support for disabled APs
      nl80211: Include disabled links indication in association command
      AP: Add testing option to indicate an AP is disabled
      tests: Extend testing coverage for MLD association with disabled links
      AP: Use the MLD MAC address for SAE authentication failures and testing
      tests: Extend MLD SAE test to cover failed authentication
      RRM: Add support for including extended ID elements in beacon report
      AP: Update the HE regulatory information AP types for the 6 GHz band
      AP: Add configuration options for 6 GHz TPE Tx power
      tests: Add a simple configuration test for TX power control on 6 GHz
      AP: Add TPE element for Indoor standard power AP
      AP: Add an additional TPE element when needed
      tests: Extend the HE regulatory test to also exemplify SP AP
      tests: Modify the DSCP-to-TID mapping in QoS mapping tests
      AP MLD: Correctly set the BSS parameters change count in RNR
      AP: Unify code handling deauthentication/disassociation
      AP MLD: Fix station lookup in hostapd_ml_get_assoc_sta()
      AP: Move hostapd_ml_get_assoc_sta() to shared
      AP: Support deauthenticate/disassociate with MLD
      AP MLD: Remove link stations on a new station authentication
      tests: Add MLD tests for deauthentication and disassociation
      AP: Fix a typo in function name
      RRM: Fix the parsing of the Extended Request subelement in beacon req
      tests: Add couple of MBO and RRM tests with MLD
      RRM: Handle scan TSF BSSID matching in context of MLD

Jaap Keuter (3):
      trace: binutils replaces bfd_hostptr_t with uintptr_t
      tests: Drop use of ifconfig, use ip instead
      KaY: Make debug output consistent

Jintao Lin (5):
      dbus: Use current_bss to get correct group BSSID and frequency on client
      Move parse_freq() to be a common helper function
      Fix P2P_GROUP_ADD handling of the persistent group parameters
      dbus: Use PHY parameters from dbus or config for the GroupAdd command
      trace: Fix compilation issue due to using an undefined symbol

Johannes Berg (11):
      tests: Give some operations more time
      ieee802_11_defs: Fix EHT_ML_PRES_BM_PROBE_REQ_AP_MLD_ID
      tests: kernel: Add test for regulatory disconnect in cfg80211
      tests: Query carrier before data test
      tests: Reset WARN_ON_ONCE() state in the kernel
      ctrl_iface: Don't return -1 when dumping BSS information
      ctrl_iface: Fix newline in print_ml()
      tests: ap_vht_40: wait a bit before connectivity check
      tests: P2P: Also wait in go_neg_pbc()
      nl80211: Fix AP MLD MAC address on auth retry
      tests: Add a test for kernel KUnit tests

Jouni Malinen (134):
      OpenSSL: Allow openssl_ciphers override with Suite B config on server
      tests: Suite B 192-bit level RSA failing (no CS match)
      OWE: Optimize transition mode AP scan with owe_only=1 STA configuration
      tests: OWE transition mode disabled on STA and AP using transition mode
      Prefer SAE over PSK in WPA3-Personal transition mode cases
      tests: MBSSID with a single SSID and different AKMs
      MBSSID: Use BIGTK from the transmitted BSS for beacon protection
      tests: MBSSID beacon protection
      tests: Set wpa_s->global for module tests
      dbus: Increase XML buffer size for an interface introspection data
      Ignore missing set_secure_ranging_ctx callback for testing purposes
      tests: Update capability checks to include OpenSSL 3.1 and 3.2
      mesh: Fix PMKSA cache entry addition with external PMKSA management
      test: Mesh PMKSA entry validation with MESH_PMKSA_ADD
      Document Tunnel-Password encoding for passphrase/PSK
      WNM: Define BSS transition management reason values
      tests: bgscan_simple and BTM query
      tests: Make sigma_dut AP SAE tests more robust
      tests: Avoid race condition in RRM beacon report tests
      tests: Wait a bit after radio work start in dpp_listen()
      tests: Wait for CTRL-EVENT-REGDOM-CHANGE before starting AP
      tests: Wait for regdom events in wpas_config_file
      tests: Wait for hostapd event in addition to wpa_supplicant
      tests: Make dpp_two_initiators more robust
      P2P: Recover from successfully requested, but not started, listen
      tests: Clear STA state at the end of ap_ft_reassoc_proto
      tests: Avoid race condition in scan_external_trigger
      tests: Avoid race condition in ap_no_auth_ack
      tests: Fix the regdom wait in wpas_config_file
      tests: Fix wpas_mesh_pmksa_caching_ext to allow lifetime to decrease
      tests: Allow more time for DPP Authentication with chirping iteration
      P2P: Force clearing of p2p-send-action radio work on P2P_STOP_FIND
      tests: Wait for AP/GO event in addition to STA
      tests: DFS channel switch to VHT80/80+80/160
      tests: Skip memory read errors in read_process_memory()
      tests: Work around a race condition in p2p_device_grpform_timeout_go
      tests: Wait for AP to complete connection before testing connectivity
      tests: Race condition in connect_cmd_concurrent_grpform_while_connecting
      tests: Wait for group key handshake before testing Michael MIC failure
      tests: Avoid a race in wpas_ap_lifetime_in_memory*
      tests: Wait longer in sigma_dut_ap_dpp_relay before timing out
      tests: Increase timeout in go_neg_forced_freq_diff_than_bss_freq
      tests: Avoid race condition in ap_pmf_assoc_comeback_wps
      tests: Wait hostapd processing to complete in ap_wpa2_eap_in_bridge
      Fix HE enabling for IBSS and mesh
      WNM: Accept link removal BSS TM Request
      AP MLD: Do not schedule disconnection on BSS TM Request link removal
      tests: Make EAP-IKEv2 protocol tests more robust
      tests: Make p2p_msg_go_neg_both_start more robust
      ACS: Check whether iface->current_mode is NULL before use
      More consistent sta pointer checks in handle_assoc()
      TDLS: Avoid unnecessary copying of the Link Identifier element
      OpenSSL: Check EVP_CIPHER_CTX_set_padding() return value more consistently
      OpenSSL: Check EVP_MAC_update() return value more consistently
      PKCS#1: Do not use pointer value after freeing
      Remove unused assignment from Country element generation
      tests: Avoid race condition in WPS ER tests
      tests: Avoid race condition in autogo_passphrase_len
      Split ap_sta_set_authorized() into two steps
      tests: More robust sigma_dut_dpp_qr_mutual_init_enrollee_pending
      tests: SCS and QoS characteristics
      tests: PASN authentication using driver event as trigger
      tests: Include DPP3 support in the example configuration
      tests: Include Suite B 192-bit support in the example configuration
      tests: Include MACsec in example configuration
      AP MLD: Skip unknown Multi-Link element subelements
      AP MLD: More careful checking of Multi-Link element length fields
      tests: AP MLD protocol testing
      tests: Avoid a race condition in DPP retry validation
      tests: Make p2p_channel_avoid* more robust
      tests: Make dpp_controller_init_through_relay* more robust
      tests: Avoid race condition in owe_transition_mode_ifname_acs
      tests: Make DPP mutual authentication cases more robust
      tests: Fix a typo in an error message
      nl80211: Accept NL80211_CMD_FRAME events in global context
      nl80211: Use socket cb instead of global->nl_cb in send_and_recv()
      nl80211: Use bss->nl_connect unconditionally
      nl80211: Move control port attribute adding into more accurate location
      nl80211: Remove send_and_recv_msgs_owner()
      nl80211: Do not set socket owner for NL80211_CMD_LEAVE_IBSS
      nl80211: Remove send_and_recv_msgs_connect_handle()
      nl80211: Add send_and_recv_cmd() helper
      nl80211: Add send_and_recv_resp() helper
      nl80211: Remove send_and_recv_msgs()
      tests: Make p2p_service_discovery_restart more robust
      tests: Wait for the dpp_init_enrollee_pkex thread to complete
      tests: Do not check TX status in dpp_qr_code_auth_neg_chan
      tests: Make GAS tests more robust and easier to debug
      tests: Make flush_scan_cache() more robust
      tests: Clean up PSK protocol tests to avoid issues
      tests: Add more time for the Presence Announcements to be received
      MBSSID: Element ID values in increasing order in Non-Inheritance element
      PASN: Select the latest available BSS entry for a BSSID
      tests: SAE and sae_password_file in hostapd configuration
      tests: Flush scan cache in ap_wps_and_sae
      nl80211: Fix AP deinit path in error cases
      nl80211: Fix AP deinit path (link removal) in error cases
      tests: Use longer timeout with sigma_dut in DPP reconfiguration steps
      Split hostapd_eid_rnr_iface() into two functions
      HS 2.0: Remove useless debug print in non-Hotspot 2.0 cases
      AP: Share a common helper function for determining length of TPE elements
      AP: A helper function for determining whether the AP is an SP AP
      Update definitions to point to the current IEEE 802.11 standard
      tests: P2P GO starting a persistent group with 80+80 MHz bandwidth
      tests: Try to keep GAS frames within gas_concurrent_scan capture
      tests: Full validation of ACS selecting HT40- channel
      tests: Automatic channel selection for EHT320
      tests: Enable full testing for ACS with VHT160
      Limit throughput estimation for HE 40 MHz based on HT info
      Limit throughput estimation for HE 80/160 MHz based on VHT info
      AP: Fix a regression in indoor 6 GHz AP determination
      AP MLD: Prefer STA entry that has sta->wpa_sm initialized
      AP MLD: Fix Association Response frame ACK handling
      AP MLD: MLD address conversion for hostapd_drv_send_action_addr3_ap()
      nl80211: More detailed debug print for Management frame TX
      Extend pmf_in_use() to be aware of affiliated links on non-AP MLD
      GAS: Accept GAS response using AP MLD MAC address
      tests: GAS/ANQP during MLO association
      tests: DPP responder while ML associated
      Fix compiler warnings on supplicant build with PASN but no FILS
      Introduce ether_addr_equal()
      WPS: Fix authorized MAC removal
      Use ether_addr_equal() to compare whether two MAC addresses are equal
      tests: Skip test cases that need FILS if CONFIG_FILS=y was not used
      tests: Allow more time for dpp_qr_code_no_chan_list_broadcast
      MSCS: Use a define for the MSCS Descriptor element fixed field length
      DPP: Work arouind missing Auth Confirm ACK for testing
      tests: Increase timeout for dpp_qr_code_auth_broadcast
      nl80211: Print kernel version in debug output
      nl80211: Print driver name in debug output
      tests: Make ACS tests more reliable
      tests: Longer association comeback time
      Verify center frequency seg0/seg1 mapping result before use
      tests: Make wpas_ap_wps more robust

Juliusz Sosinowicz (1):
      SAE: prime_len means length in bytes not bits

Jun Yu (1):
      Populate the new beacon hint event to wpa_msg()

Jurijs Soloveckis (3):
      EHT: Fix conditions for including EHT Operation Information field
      EHT: Fix HE Channel Center Freq Seg0/Seg1 for 6 GHz 320 MHz cases
      EHT: Add configuration for the EHT default PE duration

Liangwei Dong (1):
      Add QCA vendor command to query transmit power information

Matthew Wang (2):
      Decrease cross-threshold roam difficulty with bgscan_simple
      Apply a symmetrical bias against moving away from higher bands

Michael-CY Lee (5):
      hostapd: Check the bridge if ioctl SIOCBRADDIF fails
      ACS: Add HT40- support in the 2.4 GHz band
      ACS: Fix not selecting the best channel in the segment
      hostapd: Add eht_bw320_offset configuration option
      ACS: Extend the 320 MHz support

Mikelis Vuls (1):
      EHT: Fix updating center freq segment 0 index for HE and VHT

Nagarajan M (1):
      Add QCA vendor commands for SDWF

Nicolas Escande (1):
      ACS: Add 320 MHz support for EHT

Nirav Shah (1):
      Add QCA vendor command for flow policy configuration

Prasanna JS (1):
      Add EHT mode support for ratemask configuration vendor command

Purushottam Kushwaha (1):
      Define new command in qca_tsf_cmd to get AP channel switch TSF time

Remi Pommarel (1):
      mesh: Add for_each_sta implementation in wpa_auth_callbacks

Sai Pratyusha Magam (2):
      hostapd configuration file update using control interface
      Use sta->vlan_id when needed for VLAN offload

Shiva Sankar Gajula (2):
      SAE passwords from a separate file
      Support VLAN offload with SAE password based selection

Veerendranath Jakkam (1):
      MLD STA: Update SAE PWE derivation in hunting-and-pecking loop case

Vinayak Yadawad (5):
      Fix references to correct driver capability flag for PSK/OWE offloads
      nl80211: Update port authorized indication for MLO address
      nl80211: Use attribute NL80211_ATTR_BSSID to scan for specific BSSID
      Handle PMKSA flush in the driver for SAE/OWE offload cases
      Support all PSK AKMs in case of AP mode PSK offload

mukul sharma (1):
      Add QCA vendor command for reporting firmware page fault informatin

朱海 (1):
      P2P: Fix a logical error of workaround of extended listen failure

BUG=b:320328525
TEST=ran wifi_matfunc, wifi_perf and hwsim tests.
Signed-off-by: Jintao Lin <jintaolin@chromium.org>

Cq-Depend: chromium:5216093
Change-Id: I6365f3df0ae8f86dc532f59b4a7d73d1c6b99700
tree: 01fde4d9ac360bfed43b159a51477bde6cd7d531
  1. doc/
  2. eap_example/
  3. hostapd/
  4. hs20/
  5. radius_example/
  6. src/
  7. tests/
  8. wlantest/
  9. wpa_supplicant/
  10. wpadebug/
  11. wpaspy/
  12. .gitignore
  13. Android.mk
  14. build_release
  15. CONTRIBUTIONS
  16. COPYING
  17. DIR_METADATA
  18. OWNERS
  19. PRESUBMIT.cfg
  20. README
  21. README.md
  22. unblocked_terms.txt
README.md

Contributing to wpa_supplicant in CrOS

This documents how to develop, test, and submit code to wpa_supplicant in ChromeOS.

Build and deploy

This follows the standard ChromeOS development flow:

cros-workon-${BOARD} wpa_supplicant-cros
emerge-${BOARD} wpa_supplicant-cros
cros deploy ${DUT} wpa_supplicant-cros

Note that wpa_supplicant-cros/current and wpa_supplicant-cros/next are identical. This is a vestige of how we used to uprevs, but now that we've converted to automated merges, we no longer regularly use both directories other than for the occasional rollout of a new feature flag. Please develop in wpa_supplicant-cros/current.

To restart wpa_supplicant after deploying:

(DUT) # restart wpasupplicant

Testing

  1. If applicable, implement the appropriate shill hooks (e.g. supplicant_interface_proxy_interface.h) and execute the appropriate shill flow. See go/shill-cheatsheet for shill development tips.
  2. Use the wpa_supplicant command line interface wpa_cli:
sudo -u wpa -g wpa wpa_cli
  1. Use dbus-send:
dbus-send --system --print-reply --dest=fi.w1.wpa_supplicant1 \
	/fi/w1/wpa_supplicant1/Interfaces/0 \
        fi.w1.wpa_supplicant1.Interface.AddNetwork \
	...

or gdbus:

gdbus call --system --dest fi.w1.wpa_supplicant1 --object-path \
	/fi/w1/wpa_supplicant1/Interfaces/0 --method \
	fi.w1.wpa_supplicant1.Interface.AddNetwork \
	...
  1. Use hostap_hwsim
  2. Run matfunc tests

Uploading to Gerrit

We try to follow kernel conventions detailed here. For trivial changes, feel free to send them upstream without internal review (see below for more details). Otherwise, upload them with a WIP: prefix to indicate that you'd like internal feedback first. After getting a +1 from relevant reviewers, you should send the patch upstream. For time-sensitive changes, we allow landing the change as FROMLIST with an UPSTREAM-TASK tag at the end specifying a bug number to track the task of upstreaming the change. Please also add the CrOSWiFi-PendingUpstreamReview hotlist to the task and add the patch to go/cros_supplicant_patches. For other changes, we prefer landing the change as UPSTREAM or BACKPORT to avoid accruing technical debt.

If you‘ve landed your change as FROMLIST, make sure to monitor the hostap mailing list so you can revise your patch if necessary. After it has been accepted upstream, revert the original FROMLIST patch and land it as UPSTREAM (or BACKPORT) to update the change to its latest version if necessary. There’s no need to do this if there is no diff between the UPSTREAM and FROMLIST patches. An easy way to do this is to run the following command:

diff <(git show ${FROMLIST_HASH}) <(git show ${UPSTREAM_HASH})

Note that there will always be diffs, but you can skip relanding as long as these diffs are part of the patch itself. Remember to close the task that was opened to track upstreaming, and remove the patch from go/cros_supplicant_patches.

Contributing upstream

For convenience, we suggest subscribing to the hostap mailing list so that your patches will be automatically posted to the list without approval. Note that DMARC restrictions may prevent subscribing to the mailing list with your @google.com email. Sending changes upstream is fairly similar to the kernel process. Follow those instructions to set up your git configuration and for best practices with respect to patch titling and formatting. Note that our wpa_supplicant repository already contains an upstream/main branch that you can use to make sure the patch applies cleanly upstream. Once you are ready to send your patch(es), you can send them to j@w1.fi (Jouni Malinen, the maintainer) and hostap@lists.infradead.org (the mailing list).