hdd_roam_register_sta() picks the right mac address for
register peer. If it's called with peer mac address, it registers
that mac address and if it's called with broadcast mac address, it
picks adapter mac address which is self mac address.
In case of NDI, it's called with broadcast mac address. Peer
registration(cdp_peer_register) happens fine by picking adapter
mac address but tries to update peer state by picking broadcast
address. This fails and results in blocking/dropping the Tx data.
Authenticate the mac address registered to avoid this.
Change-Id: I8413585ca9c585eabed8e58755fac49eb5d9788d
CRs-Fixed: 2966158
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
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 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
Add new api sme_switch_channel(), which posts eWNI_SME_CSA_REQ
with specified parameters; set lim_handle_csa_offload_msg as the
handler for this new message.
Change-Id: Id015ac5f9f3674ff06d110f7a0dccd85364b3d86
CRs-Fixed: 2960191
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
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
Init htcinfo structure variables to 0 to avoid issues
due to any newly added uninitialized variables in the future.
Change-Id: Ie4cf5c99c09f56ee1fc898397bcd3ccf4b678638
CRs-Fixed: 2962285
wlan_twt_concurrency_update() calls the flush work internally.
So when the caller calls wlan_twt_concurrency_update api in
schedular context, flush work will block the schedular thread for
4 sec(twt enable/disable timeout value is 4sec). Because of this
the other request will be block till this time.
As part of fix, remove flush work and reduce twt enable/disable
timeout to 1 sec
Change-Id: I8f16da44b21cf54fcf2256aaef53371431e64aac
CRs-Fixed: 2963695
qdf_freq_t is by default defined as uint32_t, but hdd_ctx->
unsafe_channel_list is defined as uin16_t because cnss interface
is defined as uint16_t, so can't pass hdd_ctx->unsafe_channel_list
to ucfg_policy_mgr_init_chan_avoidance() which expect qdf_freq_t
list.
Convert hdd_ctx->unsafe_channel_list to qdf_freq_t list and pass
it to ucfg_policy_mgr_init_chan_avoidance().
Change-Id: I0207827e3cbaa82526e97d2826d90d396148c84a
CRs-Fixed: 2964178
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
Currently driver issues ll_stats command without considering
that there could be previously allocated memory which is not
freed because of timeout.
FW can send radio stats with multiple events and for the first
event host allocates memory in wma and processes all the events
with this memory, there is a possibility that host receives first
event and gets timed out, time out host frees the allocated
memory. Now if host receives remaining events it will again
allocate memory and processes these events and will set
nr_received as 1. Now if host issue new ll_stats request to FW,
in response processing it don't allocates new memory and just
appends new stats and increaments nr_received when nr_received
becomes equal to number of radios, it calls the hdd callback
and completes the request and frees the memory, after that host
receives the next event of this request and will allocates the
memory similar to above process and this event will be completed
as part of the response of the next ll_stats request, similar to
above process. This scenario will always have memory for one
radio stats response as non-freed which leads to memleak
issues.
To addrerss above issue, before sending any new ll_stats request
to FW, free the memory allocated for previous event.
Change-Id: I4bfd5bcb62416c243aa6023382070cbd993655c7
CRs-Fixed: 2961638
In monitor mode in case of restart failure,
event WLAN_VDEV_SM_EV_START_REQ_FAIL is used to move the vdev SM
to init state. But this event will not be handled in
WLAN_VDEV_SS_START_RESTART_PROGRESS and thus the vdev stop/down
won't be sent for the vdev.
Use event WLAN_VDEV_SM_EV_RESTART_REQ_FAIL for restart failure
to send vdev stop/down.
Change-Id: I2db459136955b8dc2213c0251284a08a8f57aa57
CRs-Fixed: 2964875
Define A_OFFSETOF macro to fix compilation
errors.
A_OFFSETOF macro is mapped to macro offsetof()
defined in stddef.h.
Change-Id: I766826d610fcb6a06775f07bcd8a041ee29be89b
CRs-Fixed: 2967130
Validate fw capability to handle big data command before sending
big data stats request to fw.
Change-Id: Id7df4c3ac36e25761938758472ea9281c174a8c9
CRs-Fixed: 2937523
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
The 6GHz HE capability macros were backported from kernel version 5.8
into 5.4, so change the check for kernel version to simply check for
the macro definition itself.
Change-Id: I86a9dfa964356ba65bd21ffef802042d442356bc
CRs-fixed: 2960286
If the 11BE feature is enabled, 320MHz is added to the channel width
enum. This causes a compilation error in switch cases that do not handle
this case. Add the 320 case to the switch statement.
Change-Id: I6cf4f1395f9f8eb2fc14029dc371742362befa80
CRs-fixed: 2961456
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
Without this change, wlansap_set_channel_change_with_csa() only allows
parameters with new frequency. Enhance it to support width only change.
Change-Id: I5855db5d43cbb8bc63ff70f2bd792b447cd88809
CRs-Fixed: 2960232