Currently, channel rx time is not being updated to user space as
part of link stats. Instead channel tx_time is being overwritten
with the same value. Due to this user space is not getting channel
rx_time in the link stats.
Update channel rx time in the channel link stats.
Update representation of tx_time and rx_time in the ll_stats debugfs
output to align with other stats.
Change-Id: I850adb11169eb24c81f1e31a4ff498f4e20ab9c6
CRs-Fixed: 2765485
qcacld-2.0 to qcacld-3.0 propagation
The probe rsp ie will not updated after beacon updated.
This will cause the probe rsp ie not appear in probe rsp
tags even the ie appears in beacon.
Put the updating of probe/asso rsp ahead of beacon updated.
Change-Id: If55f72ce788f4e0f162bb0c13fcff7b2129bf423
CRs-Fixed: 2648396
Replace QDF_MAC_ADDR_STR/ARRAY with QDF_FULL_MAC_FMT/REF.
Only in kernel and driver logs, use QDF_MAC_ADDR_FMT
for all debugfs, sysfs, ioctl, unit test code use QDF_FULL_MAC_FMT
Change-Id: I8cd0c065dad94e4700a009b951b10ee699568813
CRs-Fixed: 2763159
Fix NULL pointer dereference of mlme_priv while using
the macro GET_CM_ROAM_TX_OPS_FROM_VDEV. Also replace this
macro GET_CM_ROAM_TX_OPS_FROM_VDEV with inline function to comply
with the linux coding style “Generally, inline functions are
preferable to macros resembling functions”
Change-Id: Ifc9ba37e3d260b027ba79457f00382374f3b78ac
CRs-Fixed: 2764891
lim_cmp_ssid() calls qdf_mem_cmp() and a return value of 0
means the memory to be compared are equal.
In lim_chk_ssid(), checking against != true is thus not
proper to ensure memory are equal. Thus check against
0 to ensure requested SSID matches our own SSID configured.
Change-Id: I31651e7fba47ae6eb22dc034c4479114343e8652
CRs-Fixed: 2765570
A race condition can happen when roaming state machine
transition takes place in the following sequence:
1) FW indicates 'roam_synch' event to driver, and driver in
turn, advances its roaming state machine to
'WLAN_ROAM_SYNCH_IN_PROG', in wlan scheduler context;
2) HDD layer starts to do 'disconnect'(could be due to NUD
failure), and thus needs to stop roaming scan offload in
the following sequence:
2.1) Post a RSO stop cmd to FW, via the scheduler thread;
2.2) Advance the roaming state machine to a new state of
'WLAN_ROAM_RSO_STOPPED';
2.3) Check if:
>> the roaming state machine is still in a state of
'WLAN_ROAM_SYNCH_IN_PROG'
>> the neighbor roaming state is in any of the states
below:
eCSR_NEIGHBOR_ROAM_STATE_REASSOCIATING;
eCSR_NEIGHBOR_ROAM_STATE_PREAUTHENTICATING;
eCSR_NEIGHBOR_ROAM_STATE_PREAUTH_DONE;
Here, if any of the conditions becomes true, then
HDD will wait for 4 sec to let the roam_synch handler
finish its job, otherwise the wait will not happen.
2.4) Disconnect the current vdev and advance the roaming
state machine to 'WLAN_ROAM_DEINIT';
In a corner case, race condition can happen in the following
sequence:
>> thread 1), which executes in wlan scheduler context, starts
to run first, and thus roaming state machine advances to
'WLAN_ROAM_SYNCH_IN_PROG', but then gets preempted before
starting to parse the assoc resp frame attached in the
roam_synch event;
>> thread 2) starts to run and posts RSO stop cmd, but the req
msg cannot be handled right away due to scheduler thread
is actively running with other tasks, so it gets queued at
step 2.1);
>> thread 2) continues to run, and simply advances the roaming
state machine to 'WLAN_ROAM_RSO_STOPPED' at 2.2), and then
it will find out none of the conditions listed in 2.3) is
true, so it choses NOT to wait for 'roam_synch' handler to
finish;
>> thread 2) reaches to step 2.4) without waiting at 2.3), and
roaming state machine advances to 'WLAN_ROAM_DEINIT';
>> thread 1) continues to run and starts to parse the assoc
resp frame indicated by FW, and finds that the roaming state
machine NOT in 'WLAN_ROAM_SYNCH_IN_PROG', and thus goes to
the wrong way to treat the buffer in a different manner,
causing a invalid pointer access here.
Fix the racing condition by checking if the roaming state machine
is in 'WLAN_ROAM_SYNCH_IN_PROG' before advancing the same to
'WLAN_ROAM_RSO_STOPPED' in function wlan_hdd_wait_for_roaming().
Change-Id: I202ccb371e9e70a76ef35938c700b60c91b7d3cb
CRs-Fixed: 2761880
Currently there is only SETANTENNAMODE ioctl command to configure
number of chains to firmware.
Add support to configure the number of chains over the nl vendor
command QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_TX_CHAINS and
QCA_WLAN_VENDOR_ATTR_CONFIG_NUM_RX_CHAINS.
This new interface will configure the number of chains per vdev
dynamically.
Change-Id: Iff22d886529f6d8fb205d668eba8928039620a20
CRs-Fixed: 2756647
Issue: Driver supports WAPI AKM suites but doesn't advertise
WAPI_PSK_AKM_SUITE and WAPI_CERT_AKM_SUITE due to which
WAPI may not be visible to Settings
Fix: Advertise WPAI AKM suites to avoid any incompatibilty issue
between driver and supplicant.
Change-Id: I59569837f699adba270f73ceb4fc5dc12c349d26
CRs-Fixed: 2759876
In order to improve the Genoa DBS KPI, need to
increase the IPA tx complete ring size from
1024 to 2048. And the tx buffer count also will
increase from 1023(1024-1) to 2047(2048-1) according.
But in fact, as for wlan fw, it just only reserve
1500(1100 for 5G, 400 for 2.4G) tx desc for packets
from IPA, so some tx buffer will not used here,
which will waste memory. So to save some memory,
export CONFIG_LIMIT_IPA_TX_BUFFER for platform
configuration to limit the max IPA tx buffer count
Change-Id: Id5d4c5a220b588747f3d1981627f6253d7c3305b
OCV capability i.e. 0x4000 bit in RSN capability is set to 1 to
indicate that the STA supports operating channel validation by
including Operating Channel Information (OCI) in RSNA exchanges
and validates the information when received from another STA that
indicated this capability.
OCV support implicitly depends on PMF capability, AP's with no PMF
support disassociate STA if STA sets OCV bit in RSN capability of
assoc request. Hence if AP doesn't support PMF, do not set OCV
support bit i.e. 0x4000 in RSN capability of assoc request.
Change-Id: I4a331cab9dfaebe3a6b8ff8656888a333355f4a6
CRs-Fixed: 2763169
Increase max sae auth frame retry count to 3 since total SAE auth
timeout is 5s.
Change-Id: I5902cc3411f713eaeed5ef7754fe7fe8e590b459
CRs-Fixed: 2765211
get_wmi_unified_hdl_from_psoc() is called to get wmi handle from psoc,
but it may return null. Thus, add a null check before setting qmi stats.
Change-Id: Id9ef8f450ebcbbd2f8d8b078adb0a78ac638efb6
CRs-Fixed: 2764885
Currently, driver sends DOT11F_EID_VHTCAPS for 2.4g band without validating
gEnableVhtFor24GHzBand ini which may cause different phy modes in host and
fw because host modifies phy mode based on gEnableVhtFor24GHzBand ini but
doesn't consider gEnableVhtFor24GHzBand while sending vht ie to fw.
Fix: Populate and send vht ie based on gEnableVhtFor24GHzBand for 2.4g band
to avoid phy mode mismatch between host and fw.
Change-Id: I54622304635ee803bcfd5ba49dfb3e25b28a39de
CRs-Fixed: 2725164
Add RSO logic to send roam trigger from target if along with
some optimization to move old logic in ROAM_OFFLOAD_V1.
Change-Id: I38e7fb4f8873328097df7e3a25d6c709f8d69b33
CRs-Fixed: 2765155
When sap is started, a dead loop for beacon template updating
can happen due to the following conditions:
1) before vdev start happens for sap, he_ops will be retrieved
from the ie buffer imposed by upper layer, and bss color
initial setup will also be retrieved here and then updated
to session->he_op;
2) and it happens at least in some cases, that session->he_op.
bss_col_disabled will be set to true, but due to there is
actually no bss color changing really happening here, no
new color will be setup here;
3) later when sap is running and starts to do beaconing, it
will start to check if session->he_op.bss_col_disabled is
setup to true, and if yes, new beacon template will be
issued to fw;
4) later on, fw finishes the beacon template setup and sends
a notification to driver in beacon tx success event, and
driver will go back to steps 3) to check
session->he_op.bss_col_disabled again;
If no real bss color change happens here, step 3) and 4) will
loop forever.
Fix the above dead loop by introducing check of
session->he_bss_color_change.new_color before driver code starts
to inspect the bss color change countdown value and updating
beacon template to fw.
Change-Id: I4a32ce9f547e988087c769ad8fab2973582ce6e4
CRs-Fixed: 2764896
In some instances, AP does not respond to probe req
causing join timeout at STA and no connection.
To solve this,send multiple probe requests(every 200ms)
to AP until join failure timeout(1 sec) expiry,
if single bssid case retry same bss again
(configurable via ini, max allowed tries 2).
Change-Id: I7a7eeedcc24db1a74cd186ff957c638a39cdea6d
CRs-Fixed: 2763815
During the driver initialization if there is any issue,
in the error path the shutdown notifiers are not getting freed.
To resolve the issue purge the shutdown notifier before the
stop modules.
Change-Id: I51b20e5cddf558bb366b46f0650ac65754f23dcd
CRs-Fixed: 2761406
Beacon stats are supported for both STA and P2P client devices,
with the changes to move the sysfs creation on interface this is
regressed.
Add the support back for beacon stats creation for p2p.
Change-Id: Ia329752cc5d4f0a338395d9416b8d444417ea567
CRs-Fixed: 2764053
Uevent callback from the platform driver could be called
in the interrupt context. Logging in the interrupt context
could result in thread taking more time resulting in
other system issues. Hence reduce the loglevel so that log
would be sent to the logging thread instead of console.
Change-Id: Ia07325d5bc00603c5b6cf1e0f98256997526edec
CRs-Fixed: 2756175
Check if NAN SRD operation is enabled in the ini
"etsi13_srd_chan_in_master_mode" and send the same to firmware
for all SRD channels.
Change-Id: I2aa8fd34c67b2061963b62a34d29c73740af3a76
CRs-Fixed: 2748455
Currently the driver enables the SRD channels
support for both P2P_GO and SAP if the SRD master
mode is enabled.
Have individual ini values to enable/disable
the SRD channel for each op-mode as required.
Change-Id: If6e66996ed19dacbde7f71a6702f378a7e9a273c
CRs-Fixed: 2748446
scenario:
(1) thread A is doing hdd_stop_adapter() and the caller outside of
hdd_stop_adapter will acquire the rtnl lock, dp_vdev_detach_wifi3()
in hdd_stop_adpater() will notify DP thread B flush stack GRO frames
and wait DP thread B response/set vdev delete event.
(2) but if DP thread B is under processing RX frames and do local
ARP check for ARP request, it will wait and try to acquire rtnl
lock as well, dead lock happened. Until thread A wait vdev delete
event timeout and corressponding net_dev/hdd_adapter is freed, then
DP thread B get chance to acquire rtnl lock but hdd_adapter/net_dev
has been freed, hit panic.
Use rtnl_trylock() instead of rtnl_lock() in hdd_is_arp_local(),
if rtnl_trylock() failed, assume this is local ARP and return,
else do the local ARP checking same as before.
Change-Id: Ic6724b68f6e09e9d139c430396e4c76bf483d033
CRs-Fixed: 2760979
The ini ratemask_type and ratemask_set can be used to limit
the maximum phy rate. The ratemask_type is used to select
the phy mode and the ratemask_set to select desired NSS and MCS.
It can be used to optimize link performance.
Change-Id: Ia5c9f3a80eb93710bdcf53dabc4a45e554753b01
CRs-Fixed: 2758859
Host add support to process frequency if user sends frequency in
place of channel number in driver commands i.e. REASSOC,
SENDACTIONFRAME, FASTREASSOC.
Change-Id: I6e6d15a237d9bb1a973e9f42772c2f02e32fc585
CRs-Fixed: 2760074
In LFR3 Handoff failure case, data path peer teardown is not
done prior to cdp peer delete and this causes bug_on to be
triggered during cdp peer delete.
Fix is to invoke wma_remove_peer() in vdev stop response path
with ho_failed flag set.
Change-Id: I112b2e8fe1792a967c48138113766b649ee1ba26
CRs-Fixed: 2760180
The 2nd parameter to qdf_scnprintf() represents size of the buffer.
If 'size' bytes is written in to the output buffer then for the next
subsequent qdf_scnprintf() 'size' bytes must be substracted from the
size of the output buffer.
The problem in this code is, 2nd parameter is mentioned as PAGE_SIZE,
but instead it should be PAGE_SIZE - size.
Change-Id: I82c6b4a279eb912c693a4f026c2f672902ce3f76
CRs-Fixed: 2760078
Add user configuration support to configure dot11 modes for
different vdev types.
Change-Id: I338d9d76f000195d1798bbc8b3b7ff1fb33ee305
CRs-Fixed: 2760240
Currently driver does the pdev close on set band failure at
the time of load which results in driver load failure.
To avoid above issue, do not close pdev and continue the
driver load smoothly.
Change-Id: I0977336b57126b299bd40dd6c18d9009b52454dc
CRs-Fixed: 2756716