To reduce the ACS time, there is an implementation wherein one
user space process creates sap interface and queues ACS request to driver,
meantime framework initializes various config and starts hostapd
to queue same ACS request to driver. In this scenario, there is a
race condition that hostapd tries to queue ACS request while there is
already one ACS request is in progress. With current implementation,
driver will reject second ACS request and return error to hostapd
leading to sap turn on failure.
This change allows subsequent ACS request if all the attributes
of do_acs vendor command matches with the ongoing ACS request and returns
success to userspace. There is no another ACS scan queued as part of
second ACS request which is same as ongoing ACS request because the result
of ongoing ACS request will act as result of second ACS request as well.
Change-Id: I67d10b09be922745e7ffb46192e00135dbdb9de4
CRs-Fixed: 3295786
If ACS scan is skipped, then ACS request is completed and vendor
event is sent to userspace in same context, so there is no need to set
acs_in_progress when ACS scan is skipped.
Change-Id: Id3d1235e405832ce66a1b8837dc04e94bb3c6b64
CRs-Fixed: 3296939
When roam from SAE legacy to SAE MLO, pre-auth TA is MLD address,
while peer AP expects link address, pre-auth fails.
Parse transmit address field from firmware roam_preauth_start_event and
include it when send NL80211_EXTERNAL_AUTH_START to wpa supplicant for
SAE roaming cases.
If transmit address is all zeros, wpa_supplicant will not do ML sae
auth, use MLD address as TA.
If transmit address is not zeros, wpa_supplicant will do ML sae auth,
use 'transmit address' as TA.
Since self peer is created with mld address, when roam from legacy to
MLO, try to get peer by mld address during pre-auth tx since bss peer
absent, or TX fails for no peer.
Change-Id: I99ed846e94165bfe01e1d1e8c620f035751c7056
CRs-Fixed: 3289987
In SAP due to intrabss forwarding, Tx ring update is going through
when WOW enable command has been sent to FW. This results in crash.
To fix this, set is_tx_pause flag when suspend sequence starts,
which will pause Tx ring HP update.
Change-Id: I81f25b8bfca917c95180c460fd932c0f75094c10
CRs-Fixed: 3295428
Refactor the hdd_vdev_create() API code where the vdev info
related to corresponding adapter is stored.
Introduce a new API to store these values in the adapter.
Change-Id: I61e36c7158c418bcbf94b7f252385af6a67bea8f
CRs-Fixed: 3294674
If session BW is 160 MHz or higher and peer BW is reduced below
160 MHz in assoc response, STA resets HE 160 MHz MCS rates to
0xffff that results in FW assert. To avoid STA crash, add a
check to get reduced peer BW from beacon instead of allowing
160 MHz association.
Change-Id: Ifa2c45e6354129fdc2d3cc50464f9d2dd7edae2a
CRs-Fixed: 3289443
This change fixes the use of uninitialized variable and dereference of
free pointer issue in host driver.
Change-Id: I88359cd383d15f9baa73bc7c3ce9d5fccee2a41e
CRs-Fixed: 3295234
In api sch_set_fixed_beacon_fields(), the channel switch announcement
method selection was based on config "CONFIG_CHANNEL_HOPPING_ALL_BANDS"
due to which peer STA may not be able to switch channel when MTP
is working as SAP and doing channel switching.
Modify the check in order to select the channel switch method based
on nature of peer STA and operating/target frequency.
Change-Id: I3deb09245496d65e6bb3ec27ed7eefd3dcaa27bc
CRs-Fixed: 3293983
Currently, supplicant sends roc request and hostapd sends
vdev start request to host driver. After processing these
request, host driver sends it to firmware.
But for ROC request having long dwell time, firmware can not
handle vdev start req as it waits for ROC request completed
(timeout occurs). This is leads to crash in firmware.
So, to fix this issue, host driver aborts p2p roc request
before starting BSS (sending vdev start request).
Change-Id: I956428cf94015ac6c4ff7063ef9b060146e4377b
CRs-Fixed: 3270079
To protect firmware not downloaded in system suspend, acquire/release
the cnss semaphore cnss_pm_sem. It is complex, and cnss function
cnss_pm_notify may trigger dead lock issue once PM_POST_SUSPEND is
ahead of PM_SUSPEND_PREPARE.
Optimize code to use PM wakelock API to protect firmware downloading.
Change-Id: I533c373b85f554fbcceb562d9f56c6b88e5155bb
CRs-Fixed: 3280247
Currently in the global sme context a device mode is getting set
which is unused, removed curr_device_mode and its corresponding
set function.
Change-Id: I479107b2bbb940171d41f2620165ccbb7f0b7fff
CRs-Fixed: 3294818
Add support for new QCA vendor attribute to configure
the periodic sounding for Tx beamformer functionality.
Change-Id: I27969f0693e5470a2b6dbb5c381e7d66ef80ddad
CRs-Fixed: 3290377
Currently if host driver needs to fill max rates info as part of
get sta stats and if it fails to calculate the max rates info,
it does not fill any rate info and also does not fill other stats
like rssi, because of this user space shows incorrect stats.
To address above issue, fill actual rates info if driver fails to
calculate max rates info and also fill other stats as well.
Change-Id: I386fbc5a0dbe4f2abc6bac202ddfa49edd2c5b99
CRs-Fixed: 3278808
For MLO capable SAP, when channel switch indication happens driver use
the primary vdev.
To support per link channel switch, in case of MLO capable SAP driver
will get link_vdev using link_id in wlan_hdd_cfg80211_get_channel().
Change-Id: I08f618bdd3626efce02a4b88759e45fffd2b85ce
CRs-Fixed: 3290750
DP will record RX rates info of data frame. Sometimes DP
has not received a data frame since assoc or roaming so
that the rates info fail to be updated and remains 0. HDD
will report max rate until a data frame has been received.
Change-Id: Iec26205b992a687ba5586867e5b5a4fa7049ca59
CRs-Fixed: 3292232
VDEV destroy timed out happens in SSR when device
has prior active MLO connection.
The reference for MLO MGR is not released in this
case as FW response for VDEV stop won't be received
during SSR.
Initiate VDEV stop response explicitly for the driver
to deinit MLO context.
Change-Id: I934c7161189fbceb9e0de93aad6f0f9ff45102ac
CRs-Fixed: 3286321
Currently host updates tx retries for get sta info command in
connected case from fw peer stats, based on new requirement,
update these stats from host data path vdev stats.
Change-Id: Ie87cb2018d6b3d5d1f3931f40c41f15116079976
CRs-Fixed: 3292051
Based on the new requirement process tx and rx rate counts
from peer stats response and send these stats to user space
as part of big data stats.
Change-Id: Ie442c0e37fcae8af92796032ff6a042d983c8742
CRs-Fixed: 3289741
Currently the Vdev Ref Leak functionality prints holders of references
every 10 seconds, resulting in only two prints before a device crash.
Fix this by reducing the timeout macro from 10 seconds to 4 seconds.
Change-Id: Icc1046a5678d4b224c2bc715d27fed092836e269
CRs-Fixed: 3292752
Currently Vdev Ref leak functions (eg: wlan_objmgr_print_ref_func_line)
are not being compiled in defconfig due to compilation flags.
Fix this by moving appropriate flags under the CONFIG_CNSS2_DEBUG flag.
Change-Id: I34e69680b3959232be17d1a10cd581903ad1a64a
CRs-Fixed: 3292744
Based on the new requirement, fw fills the tx packet counts per mcs
and rx packet count per mcs index in the peer extd stats event.
Add logic to parse tx packet count per mcs and rx packet count per mcs
from peer extd stats event.
Change-Id: I4cd8c1ed5dd6942022d9f930f8de0bcbcb679eb5
CRs-Fixed: 3289683
During reassociation, cm_check_for_reassoc_hw_mode_change() is called
to check the coming concurrency is supported or not after preauth is
done. For non-DBS chip, due to STA+STA concurrency is not supported
by FW, the connection manager will run into state disconnecting from
roaming and disconnect current connection by sending disassociate frame,
then do new connection again. It's not normal roaming flow in which
disassociate frame should not be seen over the air.
Per the reassociation flow, it will internally delete previous connection
first, so can call policy_mgr_store_and_del_conn_info_by_vdev_id first to
make sure concurrency checking can pass even if a new STA connection is
coming up.
Change-Id: I5f9f3e1151cb5402405042e3e9f2bec95f0b094c
CRs-Fixed: 3246822
Currently, supplicant uses two different ways to delete PMKSA entry,
one uses SSID and cache ID as keywords, another one uses BSSID as
keywords. It causes out of sync between fw and host if driver adds
PMKSA entry with BSSID and supplicant deletes PMKSA entry with SSID
and cache ID.
To resolve this issue, send pmk cmd to fw even the PMKSA entry is
found.
Change-Id: I211da3c86085567592ee9244ae27a4a8189a6626
CRs-Fixed: 3285073