Reorder error checks in ipa_uc_ol_deinit, so it can
return immediately if IPA config is not enabled.
Change-Id: Ibf9f30650ce201eea562baf07b6dd9b83fd8dfff
CRs-Fixed: 2977474
Use the global lock instead of the init_deinit_lock in the ipa_obj to
avoid access the invalid memory with ipa_obj->init_deinit_lock since
the ipa_obj will be freed after driver shutdown.
Change-Id: I98a844456873f60213fae19c237bb08b76b4846c
CRs-Fixed: 2887487
Host use GFP_KERNEL flag in cfg80211_vendor_event() to send CFR data
via NL event to userspace. Host gets CFR data from FW and processes
it in soft_irq context. To avoid host sleep in soft_irq context, call
cfg80211_vendor_event() with GFP_ATOMIC flag.
Change-Id: I9ab5451eb2650fe177638d0bb3974a9c933a1cf9
CRs-Fixed: 2978140
When FEATURE_HAL_DELAYED_REG_WRITE enabled, also enabled
SHADOW_WRITE_DELAY to avoid back to back shadow reg write.
Change-Id: I8d48496814e063ebd441db3520e3a5406c5db13e
CRs-Fixed: 2967202
Country change is a psoc operation and currently driver does
not try to reschedule country change work if it fails to start
this psoc operation and because of which it does not update the
scan channel list to the FW because of which host and FW are
not in sync.
To address this issue, reschedule country change work if it
gets and status of -EAGAIN when it tries to start the country
change psoc operation.
Change-Id: Ib93674b600a5d19fe3091d58e0689e806366659d
CRs-Fixed: 2968772
Currently driver does not subtract the already filled length
from the max available length when it copies the number of
radios to the llstats result buffer which may lead to buffer
overflow.
To address this issue subtract already filled length from the
max available length when driver copies the number of radios.
Change-Id: Ie3b93121df603bd65250f0b0a49bb049d353211d
CRs-Fixed: 2969637
To show the "dual-band" option in "AP Band" in Hotspot, the host
should set the feature flag of CONCURRENT_BAND_SESSIONS in
hardware's capability and sends it to userspace.
The fix is to set the CONCURRENT_BAND_SESSIONS feature flag and
send it to userspace via the QCA_NL80211_VENDOR_SUBCMD_GET_FEATURES
vendor command.
Change-Id: If29c35be4ea86c966624922f0209b1e5c272d405
CRs-Fixed: 2968554
Unlike wpa2, in wpa3 roaming scenario, roaming is not fully
offloaded to FW, EAPOL handshake and key install are done
from host, in current design during assoc completion handler,
it sends STA_CONNECT event to IPA and IPA gets hung waiting
for buffer replenish from FW and FW is waiting for current
thread to return, this causes deadlock, so defer sending
STA_CONNECT event to IPA after EAPOL handshake and key install
for all the secure connections, hence IPA HW is ready to
process the STA_CONNECT event, in this case.
Change-Id: I19961cdd303ccef13621c7a20867ba852342a526
CRs-Fixed: 2958313
EAPOL handshake is done by wpa_supplicant in initial connection
and WPA3 roaming as well. Driver is supposed to wait for EAPOL
handshake/key complete timeout after getting roam sync indication
from firmware. But this wait is skipped with the change
change-id : Ie4f06cfcb066ae245de024b62da586aade783aec.
Add the same check again.
Change-Id: I437c6be15d7c1a3775a177c2da6c581d417c2533
CRs-Fixed: 2963548
Currently, ADDBA window size is calculated based on
self HE capability and peer advertised window size in
lim_process_addba_req(). But HE capability of the peer
is also considered while sending ADDBA response.
In NDI case, peer HE capability is not available and results in a
non-HE window size(64). But there is no need to check peer HE
capability as it advertises the window size in ADDBA request.
Skip the he_cap check for NDI.
Change-Id: I2d1df6f3cba9eac009ba59fcf33db88c907171bb
CRs-Fixed: 2961524
Currently, driver creates the NDI upon userspace request and sends
NDI-create-response to userspace. But internal NDI state is set
after sending this response. This leads to a race condition when
userspace sends NDI delete while driver is still setting driver
internal state for NDI create.
So, send NDI create response to userspace only after completion
of driver internal processing.
Change-Id: Ic651fd4f6dfab17c48c4f65b6e5d49c4d08cbe16
CRs-Fixed: 2966549
Do not drop qos null frames in packet capture. so remove
check for qos null frames in packet capture mode.
Change-Id: Ie3a700cbc5a7e582ea7cfc39ebd62880265f8f7d
CRs-Fixed: 2973279
Provide ucfg api to configure qos null and trigger frames.
Ucfg api will send configuration to FW. Below configuration values
are allowed.
PACKET_CAPTURE_CONFIG_TRIGGER_QOS_DISABLE: disable capture for
trigger and qos frames.
PACKET_CAPTURE_CONFIG_TRIGGER_ENABLE: enable capture for trigger
frames only.
PACKET_CAPTURE_CONFIG_QOS_ENABLE: enable capture for qos frames only.
PACKET_CAPTURE_CONFIG_TRIGGER_QOS_ENABLE: enable capture for both
trigger and qos frames.
The packet capture config old value will be over written by new value.
For example, first if we configure value as
PACKET_CAPTURE_CONFIG_TRIGGER_ENABLE and then if we send config as
PACKET_CAPTURE_CONFIG_QOS_ENABLE then config is enabled only for qos.
Change-Id: I02dcd4372c7194ec3e477694ad0e2c045fe6c942
CRs-Fixed: 2967824
Advertize the DBS capability in the get feature vendor command
if device supports DBS.
Change-Id: Icd8e8de7e188e9c5a3041460e6316cdf2b8ebff1
CRs-Fixed: 2820800
The following vendor cmd can be used to set the
sw retry threshold per vdev for all AC:
Aggresive: QCA_WLAN_VENDOR_ATTR_CONFIG_AGG_RETRY
Non-Aggresive: QCA_WLAN_VENDOR_ATTR_CONFIG_NON_AGG_RETRY
Change-Id: I49d88ae1f3f6142d8a420fd92f6f40bf3aad03e6
CRs-Fixed: 2945913
Reduce the timeout to wait for TDLS mgmt to
complete from 11 seconds to 3 seconds.
Also, Allow Tx data frame if no ack/nack is
received even after 2 seconds for last data
frame.
If last data frame is sent and no ack/nack
is received within 2 seconds, then drop the
new data frame.
Change-Id: If3294908cb1399c3b4c8931b80663671400bf610
CRs-Fixed: 2966308
Currently when gDot11Mode=6 (11n only) is configured in ini and AP
is operating in 11n mode the STA is connecting in HT mode, but when
AP is operating in 11AC/11AX mode then STA is connecting in legacy
mode i.e 11b/g/a. This is due to check which compares phymode of
BSS is 11n or not but failed to check BSS phymode is 11ac/ax.
Due to this there is mismatch in phymode and mode is downgraded
to legacy.
These changes will perform the check and allow STA to connect in
11n.
Change-Id: I8196b44db5a12fbba39ffcf58202fa1863b1c4b4
CRs-Fixed: 2965287
Currently if channel switch is in progress and if deinit
ap comes, channel switch does not gets complete and driver
does not reset channel switch in progress in adapter. Now
if driver receives channel change cb in hdd from regulatory,
it tries to restart the sap according to updated channel list,
but it waits for channels switch in progress to be completed
by taking the netdev reference for SAP adapter and this wait is
of 2 seconds, in this time if del virtual interface comes for
SAP adapter comes in that case it will detect the net dev ref
leak as one net dev ref is taken by country change work.
To address above issue, complete the channel change on deinit
ap mode and also check if SAP is started in country change
work before starting to wait for channel switch in progress.
Change-Id: I349e217a94093b3751310d4f7378fb6585f77743
CRs-Fixed: 2969343
Add INI configuration support to enable/disable BSS color collision
detection offload in STA mode.
Change-Id: I9d8f096813d74242566ccae5f92e872bcaca6295
CRs-Fixed: 2965133
Currently driver initializes the wiphy 6ghz band without
checking the band capability. If FW does not support 6Ghz
then wiphy register is failed as wiphy 6ghz band is initialized
by driver.
To fix this, initialize the wiphy 6ghz band only when host
driver and FW both supports 6Ghz band.
CRs-Fixed: 2968968
Change-Id: I28d660f515d16d0eb4245311b42c69308576ac62
When SME/CSR layer received assoc indication, can't get session id by
bssid in some cornel cases, assoc req is leaked.
Change-Id: I877887fc0e2fe79a4ade53ba4aebc158fe480c28
CRs-Fixed: 2964966
When receiving management frames, there can be excessive error logs.
Change these to debug prints.
Change-Id: I78a281bdc32bee580ed3470406163a77b43fac9b
CRs-fixed: 2968877
When an existing flow is evicted, there is chance that the
REO ID of the newly added flow and the inflight packets of the
evicted flow mismatch. In such cases, check the FSE metadata of
the flow with that of the packet instead of triggering a BUG().
Change-Id: I7412055101fb72f7b28db615672e88837d79e8d3
CRs-Fixed: 2968500
In case of STA + SAP concurrency and STA is on indoor channel.
Dont allow SAP to turn on, irrespective of DBS, MCC or SCC mode
of concurrency, if STA + SAP concurrency not allowed
on indoor channel.
Change-Id: I79582f88e81cb2c95d2da2480d1e3d7a8b86906f
CRs-Fixed: 2967952
Currently host relies on fw for vdev id for ll_stats
response but FW does not send the vdev id in response
of radio stats and peer stats as response of the ll_stats
request. Host needs this vdev id to get the adapter on
which the ll_stats request is received so that is can process
and send the response back to user space.
To address above issue add vdev id in request private
structure and when receives response from the FW, extract
this vdev id from private structure.
Change-Id: I28c411aea852b36cd1a13174e87adfa7972fc077
CRs-Fixed: 2964782
Currently api wlan_hdd_set_channel is using channel number to validate
requested frequency, this function converts center frequency to
channel number and again converts this channel number to frequency
to validate this channel, which may cause issues when 6GHz SAP
tries to come up.
For example if center freq is 6015 and current country is set
to US, with current logic first this frequency is converted to
channel number which comes to be channel number 13 and then this
channel number is converted back to freq and gets validated. As
channel 13 is invalid in US this validation fails even though
freq 6015 is valid frequency in US.
TO address above issue, remove this converion of center freq to
chan num and chan num to freq, instead used center frequency
directly for any kind of validatoin.
Change-Id: Iec86c7f42e3f7e786f89df28f53ca71f67defc24
CRs-Fixed: 2970037
Host driver sends roam invoke command to firmware as part
of supplicant initiated reassociation or nud failure.
In response, firmware sends roam synch indication if
roaming is successful or roam invoke fail or handoff failure
if roaming failed. On sending the roam invoke command, host
driver sets the roam_invoke_in_progress flag to true.
This flag is checked when scan request is received to avoid
scan during roam invoke. If firmware is not able to respond
to the roam invoke event, then the roam_invoke_in_progress
flag is set indefinitely resulting in continuous scan
rejection.
Add a new roam_invoke_timer timer and start this
wakeable timer after roam invoke command is sent to
firmware. On timeout reset the roam invoke in progress flag.
And host ignore the roam invoke response if firmware sends
roam invoke response without roam invoke request.
Change-Id: I5ca4497e06a26c3bec38bf401ae2bf77a6eade5e
CRs-Fixed: 2917870