These APIs can be used to send data request to firmware over QMI
as well as receive response from firmware.
Change-Id: I186d4c53e846af028b5ea75079027217af1580b4
CRs-fixed: 2517225
CFG_VENDOR_ROAM_SCORE_ALGORITHM is added to specify the
preferred roam score algorithm.
With value 1, the new V2 roam score algorithm will be used.
With this roam score Algorithm, AP score will be calculated
based on below equation:
AP Score = (RSSIfactor * rssiweight(0.65)) +
(CUfactor * cuweight(0.35))
This algorithm value will be sent to firmware over the
WMI_AP_PROFILE command.
Change-Id: I5e7857108a9623fdf3e698cb842dbc22c21f61a1
CRs-Fixed: 2513571
As a part of 802.11ax amendment, 6GHz band operation is added.
Since the 6 GHz channel numbers are overlapping with existing 2.4GHz
and 5GHz channel numbers, use frequency to identify unique channel
operation instead of channel number. Channel frequency is unique across
bands.
As a part of above requirement frequency attribute is added to the
struct sSirMacChanInfo, in driver some APIs directly copies this
structure info considering as every member of the structure as uint8_t,
as frequency is uint32_t this breaks above asumption and results into
corrupt info and gives undefined behaviour.
To address above issue, use the structure members individually and
give the information by member-by-member copy.
Change-Id: Ied6ad30d8a0800211f99371969ddd192ff40545c
CRs-Fixed: 2537975
In rrm_fill_beacon_ies(), the len is the total length of
IE + 2 bytes for element ID (1 byte) and length of the
IE(1 byte). Length is defined of type uint8_t and can have
only values upto 255. When the IE content length is 254,
adding 2 bytes to this will cause the len to overflow
resulting in continuous loop in rrm_fill_beacon_ies.
Change the len type to uint16_t to avoid integer overflow.
Change-Id: Id6a6bcce150f778e24316ccc5fb51c6e2a95fc5e
CRs-Fixed: 2537774
In SSR case the mlme_vdev_obj_destroy_handler for the vdev may
get called after the dp soc is uninitialized and thus the
cdp_vdev_detach will not get called to free dp vdev.
Thus free dp vdev before sending the vdev delete and
for force cleanup due to ssr try to free it before detaching
dp soc.
Change-Id: I6f1f95a4f8bbc4cb316e8fd59f6411a6c0c2c099
CRs-Fixed: 2538481
On passing vdev as argument to "wlan_vdev_get_dp_handle", it returns
"dp_handle". "wlan_vdev_get_dp_handle" has BUG_ON check for NULL vdev,
so VDEV NULL check is added before calling "wlan_vdev_get_dp_handle".
Change-Id: I68ffab078fb35d47e1e771215de610290455b7d7
CRs-Fixed: 2538435
Currently as part of cfg80211 wlan stats command after fetching the
stats runtime sync suspend is issued which puts the link in low
power state with out waiting for link inactivity timeout. This leads
to throughput degradation in case of rx direction as in rx processing
data path extends the timer by marking last busy to avoid immediate
runtime suspend. But runtime sync suspend does not take in to account
of the link idle timeout value before suspending the link. So in this
change before issuing runtime sync suspend check the duration since
last busy mark by data path rx process. If the duration is less than
run time delay just do runtime put.
Change-Id: I4e071ddda1c6a815f29d5b44b95e699a212b59d6
CRs-Fixed: 2511423
During SSR, DP RX threads need to be resumed so that they can be later
shutdown by posting RX_SHUTDOWN_EVENT to the threads. DP Threads
shutdown procedure waits on a completion event, which is completed by
the threads. In case the threads are not up, the caller may
be stuck waiting for DP threads to shutdown.
Check state before DP RX thread suspend/resume to avoid repetitive
suspend/resume requests.
Change-Id: Idb689e0dae7cf487e0bea45ef2dade369ae2f9f6
CRs-Fixed: 2529673
Merge from 2517936 & 2490501.
SMMU fault is observed for WDI 1.0 MCC TX when SMMU is enabled.
Issue is that dma_addr passed from IPA driver is iova of IPA
domain. WLAN driver directly uses the iova to do transmission.
Since iova is not mapped in WLAN domain, SMMU fault occurs.
Fix is to map skb to WLAN domain for TX when SMMU is enabled.
After doing DMA map, an offset of frag_header and ipa_header
is added to the iova and skb->cb is updated with the new iova.
After TX completion, skb DMA unmap is done but with the iova
of the above offset included, which leads to unmapped iova error.
Fix is to recalculate the iova and update skb->cb with new iova,
which has frag_header and ipa_header length removed.
Change-Id: Ib0112d6a3de6dc9af43e5c48a49085c7d4f41a9b
CRs-Fixed: 2534845
Do not send assoc indication to hostapd until tx is completed over the
air. This ensures on receiving assoc resp tx status, M1 is triggered
from hostapd.
Otherwise, race condition happens between assoc response and M1 packet.
Change-Id: I1da7d5b2abcc35dc39fd8e3d8b834e1481d369f3
CRs-Fixed: 2507446
Currently the bitmap of action frames that can wake up the host
during suspend is sent via the wmi command
WMI_WOW_SET_ACTION_WAKE_UP_CMDID. This bitmap doesn't include
RRM action frames so currently the host doesn't wake up for rrm
action frames when in suspend mode.
Selectively enable wake up for rrm action frames during runtime PM
alone. Don't enable host wake up during normal suspend as it will
consume more power.
Change-Id: I097596118c2888fc9ea24802e4dbe69d02c5c5f7
CRs-Fixed: 2507185
Driver caches the assoc request received from an SAE STA if it's
received before getting external auth(SAE) status from hostapd.
Station might retry the assoc frame(ex: if it doesn't get assoc
response within a specific interval) and the cached assoc request
is overwritten with new assoc request, but the cached assoc
request is not freed. Free the same to avoid memleaks.
Change-Id: I576f3b8b05d17afc66481419d1b5bdc0765c84aa
CRs-Fixed: 2535425
Linux coding style doesn't allow camel case notations. So
rename limTimers to be in compliance.
Change-Id: I83807e8e5318cfad300365780f8cf9dc29037312
CRs-Fixed: 2482564
When the QCA_SUPPORT_TXRX_DRIVER_TCP_DEL_ACK feature is enabled
along with ptp feature, the req_tx_comp is not sent to the fw in
the htt header.
Since the driver expects tx completion from fw, the descriptors
are not freed.
Fix this by setting tx_comp_req appropriately.
CRs-Fixed: 2520686
Change-Id: I3960fb67fa5864b461d74cd3a683032e15cc460c
After sanity check in lim_set_ch_phy_mode the channel width is
updated but is not copied to des_chan.
So copy the new channel width to des_chan.
Change-Id: Iffdcabaa3bfe25083e9c4368621f8df71c152806
CRs-Fixed: 2536201
While wlan driver is shutting down and target_if response timer for
vdev is running then, target_if response timers for vdev are flushed.
Change-Id: Idecd5a54c5d824e3dafa992529ca54564bb73c93
CRs-Fixed: 2529278
As a part of vdev convergence, struct wma_tx_rx_node's handle &
rate_flags members are no more unused. These values are derived
from mlme_obj.
So no more used members of struct wma_txrx_node are cleaned.
Change-Id: I0b536c50717edc293ab27e5d520eb490266ba2ce
CRs-Fixed: 2534222
In STA use iface->chanmode which is updated during vdev restart to
set the bss peer channel width.
Also remove the API to set phymode during this as the phymode is
already set during vdev start or restart, so no need to set the
phymode again.
So just check if the new BW is valid for the current phymode
and if so set the BW for the peer.
Change-Id: Ic258703acbab0a97629ff4e1945f6729b3fe517f
CRs-Fixed: 2535576
Cleanup unused params from struct bss_params after moving to
vdev target if for add bss request.
Change-Id: Ib3cf3726b4b4c692a0323669770632f2031d4e9a
CRs-Fixed: 2535156
If AP auth type is WEP eCSR_AUTH_TYPE_SHARED_KEY, auth mode
set to firmware becomes 0:WMI_AUTH_NONE, while firmware expect
2:WMI_AUTH_SHARED, so can't roam to AP of WEP auth mode
eCSR_AUTH_TYPE_SHARED_KEY by LFR3 offload roaming.
Change-Id: Ib674d36fd27d759a6fca443a13d0cf7fec108837
CRs-Fixed: 2534703
When vdev_mgr_start_send is introduced, the Dfs->dfs_curchan
will be filled from mlme "des_chan" by tgt_dfs_set_current_channel.
Set correct channel flags to des_chan so that dfs radar functions
can get correct channel information.
Change-Id: I643acadb97c3924261b45f598a50fa82d9a224e6
CRs-Fixed: 2529996
Use separate band - NL80211_BAND_6GHZ for 6GHz channel
list population. And 6GHz channels are reported only
when CFG80211_6GHZ_BAND_SUPPORTED and CONFIG_BAND_6GHZ
feature flags are defined.
Change-Id: Ieec30b304a7c3e8e856f290afdb4177206aeb2c7
CRs-Fixed: 2524262