Currently host driver processes radio stats events with
scheduler thread without any lock and invokes hdd callback.
In hdd these stats gets handled in user space thread and after
processing stats, user space thread frees the memory allocated
in wma. Since one thread allocates the memory and other
thread frees the memory, this can lead to race conditions where
this memory might not get freed and mem leak can happen.
With this change add locking mechanism to allocate, use and to
free the memory.
Change-Id: I95906133bb2208a258c5cec16f4f01b1321ed0c2
CRs-Fixed: 3020218
Use macro PKTLOG_LEGACY instead of HELIUMPLUS to avoid Rome
PKTLOG setup failure. PKTLOG_LEGACY is used for HELIUM/ROME.
Change-Id: If3476660f19606b84341cce084db3d06d69de4c5
CRs-Fixed: 3028261
When kickout event is received from firmware, the function
wma_is_roam_in_progress is called to check the roaming in
progress using vdev_id .
Vdev_id needs to be checked for valid vdev_id prior to
derefencing it.
Change-Id: Ib56895ad73b5dcefe7a0b9f65089306bf42d78eb
CRs-Fixed: 3020665
Currently, wmi_roam_pmkid_request_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I3fad4e4d7ceeb85c632723e161809bf980d5375f
CRs-Fixed: 3014248
Currently, wmi_roam_auth_offload_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I128db23077d423c5e5ecf27636bc3af35cbbc58f
CRs-Fixed: 3010419
Add support for sending WMI_REQUEST_THERMAL_STATS_CMDID
to request for the thermal stats via vendor cmd:
QCA_WLAN_VENDOR_ATTR_THERMAL_CMD_TYPE_GET_THERMAL_STATS
This vendor cmd can either be used to clear the thermal
stats or to request for the thermal stats.
Added ini gThermalStatsTempOffset, which can
configure thermal temperature offset value for capturing
thermal stats in thermal range such as Thermal STATS
starts capturing from temperature threshold to temperature
threshold + offset.
If this ini is set to 0, then the events are disabled.
Also, add support for the FW event where the requested
thermal stats are sent in FW event
WMI_THERM_THROT_STATS_EVENTID().
The following attributes are sent in the events for every
level:
STATS_MIN_TEMPERATURE
STATS_MAX_TEMPERATURE
STATS_DWELL_TIME
STATS_TEMP_LEVEL_COUNTER
Change-Id: If8acdeec5bde33be346332ccaf39d78d0151203d
CRs-Fixed: 3016818
Currently, wmi_roam_stats_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I5e336b01e1a2183e49b3e6eeb125c7c9fd0fd73c
CRs-Fixed: 3003125
When operating in 6GHz band, don't send the peer legacy rates as it can
cause a rate mismatch and eventually a crash.
Change-Id: Idda718daaa66aeb5a80ed036055317e64f8226a2
CRs-fixed: 3005578
For 11a/g mcs 0, preamble:OFDM 0, nss 1x1:0, channel width:20M, 0,
mcs 0 rate:0.
so (((_pream)) | ((_nss) << 3) | ((_bw) << 5) | ((_rate) << 8)) is 0,
so wmi_rate_stats.rate is 0, rx_mpdu is set to 0.
Fix it by not setting rx_mpdu to 0 when rate is 0.
Change-Id: Ie12660480af42e26c2ea957b6576dbd395730522
CRs-Fixed: 3008693
Currently driver frees the radio stats memory from wma
in error cases, there is a possibility that if hdd gets
time out for the stats request, it tries to free the radio
stats memory and at the same time if wma receives invalid
stats from fw in that case wma also tries to free the radio
stats memory which may lead to double free.
To aoid above issue, do not free the radio stats memory from
wma, in error cases hdd will free this memory after it gets
time out.
Change-Id: I6f6073a1a8e0be1b87efce288b7567e8fc8d69b0
CRs-Fixed: 3013842
ll_stats_set vendor cmd is now only supported for STA mode.
Add support for P2P_GO and P2P_CLI modes since FW supports
LL_STATS for P2P mode as well.
For P2P_GO mode, use WMI_REQUEST_LINK_STATS_CMDID instead
of the club cmd WMI_REQUEST_UNIFIED_LL_GET_STA_CMDID.
Change-Id: I675ff87593e6eb80e1e1fef85ae1f46d24701d63
CRs-Fixed: 3012389
Currently fw is allowed to provide ch_wr_ie len upto 20 bytes.
If fw provides ie len > 20 bytes then driver may lead to
access invalid memory. To find sub element, subelement len is
calculated from total len without any validation. ele may
point to invalid address when subelement which is calculated
from ie len becomes > len.
Fix is to compare ie len provided by fw with max ie len and
validate subelement len and then proceed with subelement.
Change-Id: I1a833c3828e4afc6e37ed27e008663152b6b5d86
CRs-Fixed: 2995818
Do not use the NULL data keep alive method if BSS max idle period
is advertised as NULL packet is not encrypted.
Set the keep alive data method to management if BSS max idle period
is set.
Change-Id: Ib30e8a426e18fe3564fc2de8d48e85fb53840718
CRs-Fixed: 3007868
MLO sta needs mld mac and assoc link information to create bss peer
Get mld address and assoc link info from connection manager and pass
it to bss peer creation
Change-Id: Ie04d4eb01f1a039f068b32b6c53aa3e65c919518
CRs-Fixed: 2987483
Populate EHT MAC and PHY Caps to peer_assoc_params based on D1.0
definitions.
Also refine EHT MAC and PHY Caps logging.
Change-Id: I405ae01a1452e884137e368cceaf13ef2c670530
CRs-Fixed: 3001664
Currently, wmi_roam_scan_chan_list_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I8f59f9ebfe1bbdc7ef37ccc1f10178fe8128e912
CRs-Fixed: 2990376
Currently, wmi_vdev_disconnect_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I2486cc3f63c4b35305b60ac55cd0a622c7185323
CRs-Fixed: 2990373
Currently, wmi_roam_blacklist_event_id data is extracted and
processing is also done in wma. This is not inline with component
model where target_if takes care of data extraction and handover
the extracted data to corresponding component(connection mgr in
this case). Add changes to support the same.
Change-Id: I41d2ef6c228acd8f86f24107c02d11f1a8ac6dea
CRs-Fixed: 2990369
Currently, wmi_roam_event_id data is extracted and processing is
also done in wma. This is not inline with component model where
target_if takes care of data extraction and handover the extracted
data to corresponding component(connection mgr in this case).
Add changes to support the same. As the legacy CSR/LIM is not
yet converged, have a wrapper from connection mgr to wma to call
these legacy APIs.
Change-Id: I0e22bbccfe21200b90771a01f9ee7454f4ecb119
CRs-Fixed: 2990355
wlan_peer_mlme_get_assoc_peer is renamed to wlan_peer_mlme_is_assoc_peer
Relace wlan_peer_mlme_get_assoc_peer with wlan_peer_mlme_is_assoc_peer
Change-Id: I2b3d98a359d2b8e4e7f3f5016be3ca7a7f3f888f
CRs-Fixed: 2999486
Populate EHT PHY and MAC capabilities from target to
tDot11fIEeht_cap structure.
Change-Id: Idf0af3c78afafcd5682760cdfd23bacd3c1dff76
CRs-Fixed: 2998861
For STA+P2P concurrency case, once p2p disconnect, STA max tx power is
updated in F/W too per SAR by design, app can't correct it since reconfig
same max tx power as original is refused by driver.
Fix by not comparing cached max tx power for each vdev in driver when set
max tx power, can set same value as original again to F/W directly.
Change-Id: Ic417946006f07be40aa34f1dc022d7fb5c4aa213
CRs-Fixed: 2996316
Use wlan_cm_is_vdev_roaming() API in wma, instead of
wma->interfaces[vdev_id].roaming_in_progress.
Change-Id: Icb88246b2c45c052a1d42dece4983b1e534fe608
CRs-Fixed: 2993180
Add path to enable the MLO capability flag when sending the peer assoc
command.
Change-Id: I9bfe8472ca0febbd98d3ddb999b4dc4f6c3e10f2
CRs-fixed: 2976191
In case if TWT command (i.e setup, terminate, pause, resume,
nudge) comes from userspace and if the firmware is in below mode
1. scan in progress
2. roam in progress
3. CSA is in progress
4. any other error
then the command needs to be rejected in userspace context
Synchronize the TWT commands so that whenever command goes from
driver to firmware, then driver will receive ack event first
followed by respective event (i.e add dialog, delete dialog,
pause, resume, nudge) with below condition
1. If driver receives the ack event as successful then driver
waits for this ack event, respective event with status of the
TWT action frame over the air is expected.
2. If driver receives the ack event as failure then it will
reject the TWT command request in userspace context.
Change-Id: Ib68b89b74b5e44f28106884efd7412cee49f5bd8
CRs-Fixed: 2987978
As part of uplink delay report feature, send WMI cmd to
enable and disable target automatically sending TSF report
to HOST on a per vdev basis.
Change-Id: I79ef5bff5b91aca311ef16d7207e9dd2fb7ae0f2
CRs-Fixed: 2991975
Add policy mgr connection list validation such as duplication
entry error. Flush the drv log and pause the logging
if error happens so that the issue log can't be overwritten
in stress test.
Change-Id: I037863de0bc5ecb8118c5792b6d73c3e200dd5c6
CRs-Fixed: 2991983
To support uplink delay calculation, FW will report mac_id and
mac_id_valid in TSF report so as to differentiate from legacy
TSF report. Thus save mac_id and mac_id_valid fields in TSF
report so that host can differentiate the TSF report purposes.
Change-Id: If76fd49ff9693a7733389d184a84360c0564216e
CRs-Fixed: 2991959
Legacy mlme need notify assoc request frame to mlo mgr. It should
be sent to mlo mgr in qdf_nbuf_t.
Change-Id: I192503a00346498408971462d3b15cc98efa9919
CRs-Fixed: 2976150
Due to memory limitations, FW only allows SAP clients connected D3 wow
up to 8 clients. Hence, add a wakelock on host. Once the 9th client
joins, hold the wakelock. And release the wakelock when the 9th client
leaves.
Change-Id: I940ab50bfd216452248eed71c1fb02b625354f7b
CRs-Fixed: 2986286
Add new ini item enable_dynamic_pcie_gen_speed_switch for enabling
dynamic PCIe gen speed change.
Change-Id: I7dde4e40e56bf894c7edd0805d09425444648e6b
CRs-Fixed: 2977079
Station sends the BA and upgrades to the next possible BA window
size upon receiving all frames successfully from the current
window. Some IOT APs go out of sync from BA window size of the
station when AP fails to receive the BA sent from station. AP
transmits the frames again with previous window sequence number
and won't be ack'ed by station hardware as BA window has already
moved ahead. So, station deletes the upgraded BA and tries
to fallback.
Ideally, AP is supposed to consider the fact that "the previous
window transmission was successful when station upgrades to next
window size". But some APs take little longer time to
recover/upgrade to next window size. Don't delete the BA
immediately and have some tolerance(3 seconds) as the previous
negotiated BA just got deleted.
Change-Id: I6b277223f02dac521316cec20bd5d958785cc2e9
CRs-Fixed: 2970714
Add DP reason code support for sending DELBA request,
so protocol layer can make decisions for special cases.
Change-Id: I4eeba3513820a98a15682190e40a06ce178d9441
CRs-Fixed: 2983544
Register callback function with dcs component to trigger
channel switch when AWGN interference is detected.
Change-Id: Ifb928b4d2b242eba3bd800207117b7c84a4531d6
CRs-Fixed: 2960240
Extend hdd_config_modulated_dtim() to configure moddtim
dynamically in the both non li offload and li offload mode.
Change-Id: I8669ec618d4aa9cd87c4c234972ca500c98119b6
CRs-Fixed: 2970090
In case of WTC_BTM roam trigger reason, if FW reports rssi
threshold for 5G and 6G AP via wmi_roam_trigger_reason,
Host should print it in kmsg.
If wtc_candi_rssi_ext_present is set (1), It means fw
reports 5g and 6g candidate rssi (new firmware case).
If wtc_candi_rssi_ext_present is clear (0), It means fw
doesn’t report 5g and 6g candidate rssi (old firmware case).
Host use flag "wtc_candi_rssi_ext_present" to keep backward
compatibility.
Change-Id: Idbaac2e9d470525641c152b024b8786d262e600c
CRs-Fixed: 2965025
If the channel-list that AP is asking us to switch is invalid, then
we cannot switch the channel. Just call lim_tear_down_link_with_ap()
to disassociate from AP. We will find better AP.
So, vdev_stop, peer_del, vdev_down will be sent. VDEV_MLME state
is back to init.
But, we didn't clean flag chan_switch_in_progress. When better AP
found, vdev will start. Because flag chan_switch_in_progress is true,
WMI_VDEV_RESTART_REQUEST_CMDID sent. But WMI_VDEV_START_REQUEST_CMDID
is expected. And then WMI_VDEV_RESTART_RESP_EVENT received.
Host will send WMI_PEER_SET_PARAM_CMDID with parameter ID
WMI_PEER_CHWIDTH(4) once WMI_VDEV_RESTART_RESP_EVENT received.
However, FW was already back to INIT state because vdev already down.
PEER state was init state, PEE_CHWIDTH set not allowed.
So, flag chan_switch_in_progress should be clean if vdev_stop sent.
Change-Id: I1b72b2a774b80b3725c7a21ec0d308036d551dcb
CRs-Fixed: 2970123