Enable PM QoS support for 5.x kernel by adopting dev PM QoS APIs to
request device structures for CPUs and then requesting QoS on those CPU
devices.
Change-Id: I9c7565b44a72145e11178fe360f413ff578142cf
CRs-Fixed: 2734025
After SAP switches the channel, policy manager needs to check if
the host needs to change HW mode. SAP state machine updates channel
change event to hdd to indicate SAP channel switch. Hence move logic
to change HW mode from start bss success event to channel change
event case in sap event callback.
Problem scenario:
1. DUT is in Single MAC mode by default.
2. SAP is up on Channel-1. So SAP is on MAC-0.
3. Host sets Policy Mgr Hw mode = DBS.
4. STA comes up on Channel-36. As host is in DBS mode, STA came up
on MAC-1.
5. SAP does CSA to Channel-36 (STA’s channel). So SAP moves from
MAC-1 to MAC-0.
6. Host sets Policy Mgr HW mode = Single MAC (As both VDEVs are on
same band).
7. Now, SAP does CSA to Channel-11. As Policy Manager Hw mode is still
Single MAC, SAP is still on MAC-0. So now STA (Channel-36) & SAP
(Channel-1) are in MAC-0 doing MCC.
Fix:
After SAP switches channel, policy manager checks and changes HW mode
change in hdd sap event callback.
Change-Id: If7964057592d85a11dd77197c889a4ed77ed039a
CRs-Fixed: 2719810
For qca6750, register hif shutdown notifier to update the
firmware recovery state in case of SSR
Change-Id: Ie6d6e9c909df292c62f89612c08b583321703cfc
CRs-Fixed: 2688921
When dcs happened for three times in five minutes, then do
restart(start/stop) SAP operation, when SAP is started again,
dcs may happen again quickly, if total four times dcs happened
in five minutes, dcs_disable_timer will be started due to dcs
happened frequency control policy, it will disable wlan
interference detection for 30 minutes and dcs interference
detection won't work for 30 minutes, it's unreasonable. After
SAP restart, dcs happened times should be calculated from zero.
Fix is to reset im stats and freq ctrl params when stop ap.
Change-Id: I0322a268a031b677a4e263cd6c5c6c0627315719
CRs-Fixed: 2738099
Current implementation uses wlan_reg_set_channel_params_for_freq API to
get operating channel information. But this API provides maximum possible
bw for an existing channel, which is not connected.From get_channel
callback, kernel expects information of the connected channel. This is
causing kernel to trigger disconnect STA after 1 minute.
To resolve this, update channel information from the object manger
which will contain connected channel information.
Change-Id: Ibd718003b4defc0e607b5b06abf86479913db538
CRs-Fixed: 2719246
Currently, the INI param wlanLoggingToConsole is used to enable
or disable WLAN logging to console. It will enable/disable console
logs for all log levels i.e. FATAL/ERROR/WARN/INFO. There is no
provision to enable/disable console logs for specific log level.
To address this, change wlanLoggingToConsole INI as bitmap with each
bit representing a log level. Enable/disable console logs based on
this bitmap.
Change-Id: I139ed15e37eb27fcfedcae70d78344e9f978f837
CRs-Fixed: 2734699
Enhance BLM infra to include source,
reason for blacklist, original timeout,
received time for better debug.
Change-Id: Ia705a967a08412824063275f5073c338dabde539
CRs-Fixed: 2744402
Function hdd_update_wiphy_he_cap() was added to populate 11ax
related HE phy capabilities into the wiphy structure, but it
was wrongly enclosed by the 6GHz related conditional macros.
Enable the above function for compilation when 11ax is
supported or when kernel 4.19 or later is used.
NOTE: The kernel side support for HE phy capability was
introduced by:
commit <c4cbaf7973a794839af080f13748335976cf3f3f>
cfg80211: Add support for HE
in kernel 4.19, and should be back-ported if any
older kernel intends to support 11ax.
Change-Id: I6fe303ce381528be4246bf4761f6483a2f82995f
CRs-Fixed: 2731627
Module is saved in specified memory location when loading. In some
third platform, after rmmod/insmod wlan.ko for a while, wlan.ko may
fail to load due to memory fragmentation.
Split wlan.ko into wlan_resident.ko and wlan.ko. Keep wlan_resident.ko
in kernel all the while and trigger insmod/rmmod only on wlan.ko.
wlan_resident.ko contains all the module realization while wlan.ko
only contains module init/exit.
Change-Id: Iaeb6d810293cc000de8d6ec1df5cd985cef0c317
CRs-Fixed: 2727941
Dynamic rx aggregation feature depends on the context
id which is obtained from the packet context block.
This context id is invalid when this feature is not
enabled, and hence can lead to out of array access/write
leading to memory corruption.
Fix this issue by not using the context id when the dynamic
rx aggregation feature is not enabled.
Change-Id: Ie551217409b0f5aa2f704f9c617949e0d42a74d0
CRs-Fixed: 2742653
In scenarios where p2p is going to be the first connection,
while performing group negotiation, pass up the allowed non-pcl
channels with valid weight so that supplicant can include these
channels as well during negotiation.
Passing interface mode to policy_mgr_get_valid_chan_weights and
populating the channel list based on policy_mgr_is_concurrency_allowed
api for the given mode and assign WEIGHT_OF_NON_PCL_CHANNELS for all
allowed channels.
Change-Id: I8ff08163e6490642f9c2ebd9ca08f1275a2bb1b8
CRs-Fixed: 2734756
Set the user power save configuration setting in NL power save
command handler.
Change-Id: I8f4d1955071af08a5c0511a4c01c46d79e70e1b0
CRs-Fixed: 2743237
It will enable periodic capture of tsf and qtime pair.
The qtime will be used as reference for determining
instantaneous tsf.
The 'cat tsf’ command to fetch tsf will print the tsf
at that instant as well along with qtime and host time.
CRs-Fixed: 2736030
Change-Id: I11eb70d4ae710ef2bf50ebee708801fa67d0396c
Issue: Currently host supports WLAN_AKM_SUITE_FT_8021X_SHA384,
RSN_AUTH_KEY_MGMT_CCKM and RSN_AUTH_KEY_MGMT_OSEN AKM
in sta mode but doesn't advertise these akm suites which
may cause issue for FT_8021X_SHA384, RSN_AUTH_KEY_MGMT_CCKM
and RSN_AUTH_KEY_MGMT_OSEN supported connection.
Fix: update wiphy->iftype_akm_suites and advertise missing akm
suites.
Change-Id: I43762c38e15746f50f897a6026b1b96fd571ec4d
CRs-Fixed: 2713183
Since there is common API to get spectral version, so use ucfg API to
get spectral version directly and remove unused codes.
Change-Id: Icfd4c68a035166dcaa32478128107249df2c4c95
CRs-Fixed: 2575839
Currently, bus bw timer is not stopped if STA disconnection is
timed out. Due to this hdd_bus_bandwidth_deinit fails.
Force stop the bus bw timer during hdd_wlan_stop_modules to avoid
hdd_bus_bandwidth_deinit to fail.
Change-Id: Idcdf011383838f1dc061f3e0f32ada97e617a8c9
CRs-Fixed: 2739304
In DUT sta mode, when tcp/udp stream between sta and PC ethernet at same
subnet, dst mac addr of each tx skb is not bssid, but ethernet mac of the
PC. Since only self peer and bssid peer are created on DUT, the ethernet
mac addr of the PC can't be found from peer list at all by
ol_txrx_peer_find_hash_find_get_ref, ol_txrx_peer_get_ref_by_addr and
ol_txrx_get_vdev_by_peer_addr return NULL. For each tx skb, 2 txrx log
will print and be saved to storage by cnss_diag, throughput is impacted
and LEGACY_TX_FLOW_CONTROL doesn't work too.
Fix: In sta mode, use connected bssid to find dp peer and vdev.
Log sample:
18769633: [soft_i][0x650c858e][08:11:05.109017]wlan: [0:IH:TXRX] PDEV
not found for peer_addr:a0:36:9f:21:18:88
18769633: [soft_i][0x650c85b3][08:11:05.109019]wlan: [0:IH:TXRX]
ol_txrx_get_tx_resource: Invalid peer address: a0:36:9f:21:18:88
Change-Id: Ib87bbe5cbb1c8d0aa31d06b32dc98d9b3b9456b3
CRs-Fixed: 2715377
Add support to enable or disable GRO per adapter at
runtime based on the ingress qdisc registered for the
net device. Disable GRO when ingress qdisc is configured
and enable GRO when there is no ingress qdisc configured.
Change-Id: Ie9ced2c92d176c040bc44da4cee93db55c6a335a
CRs-Fixed: 2739414
It starts spectral scan without vdev object, and uses the first vdev
as current vdev. which cause vdev mismatch in some platform. So pass
vdev object when starting spectral scan.
Change-Id: I7571d2f3716079969de872372779aa28d60c82ce
CRs-Fixed: 2716454
Add new channel 177 to wiphy struct ieee80211_channel
hdd_etsi13_srd_ch and rename the struct to
hdd_5dot9_ghz_ch.
Add a new ini fcc_5dot9_ghz_chan_in_master_mode to
enable/disable new 5.9 GHz channels 169, 173 and 177
in master mode.
Change-Id: I68dc3be18277ca0e416a579327f406279458899e
CRs-Fixed: 2693707
Replace enum band_info with reg_wifi_band in APIs to set phy mode
for support of 6GHz.
Change-Id: I834a8ae61270a6e8ee43d15beb0825c21c5a6d06
CRs-Fixed: 2733417
Host driver uses reference count get and put implementation to
synchronize sta_info access. But it is very difficult to debug issues
where these reference count get and put are not used properly.
To address this, add a debug infra to identify the API where sta_info
ref count get and put handling is incorrect.
Change-Id: If384798f353ee66e149b4caabdc359379c69d072
CRs-Fixed: 2733933
Currently, when SAP is being restarted on a phymode change,
the logic will run unconditionally. Add a check to see if SAP
is up first before attempting to restart it.
Change-Id: I7c02b3c62d265c6e4989901bc108d53689425f0c
CRs-fixed: 2734308
Currently, NDI adapter is not restarted when SSR happens. Start the
adapter as part of recovery so that it creates NDI vdev.
Change-Id: Ifa159b53e7e9571404f1d9cecd62755fe5e8c600
CRs-Fixed: 2707460
Currently, host driver sends NAN disable request to firmware and
firmware sends NAN disable indication as a response. Host driver
forwards this indication to framework. But when SSR happens,
driver needs to send this NAN disable indication to framework
as firmware lost the NAN context. This allows framework to
initiate NAN again. Send the NAN disable indication with success
status code to framework after recovery.
Change-Id: Ic2139e159f0c1d9c1fb5c39597ce18e0787e809b
CRs-Fixed: 2735047
Register STA tx completion callback with dp as part of
vdev registration to update successful ack stats.
Change-Id: I27f36336f0e37d43cc2cdff204c0217667a48b13
CRs-Fixed: 2682020
After SSR host reinits and as a part of start all adapters host
starts monitor mode and sets the channel. To set the channel for
monitor mode, host send vdev start command to fw, at the same time
host checks for interfaces down during SSR. If the monitor mode is
down during SSR, host stops monitor mode adapter and sends vdev
delete command to fw. As a result, fw doesn't respond to vdev start
command and host receives only vdev delete response. Thus vdev
response timer timeout and host triggers self recovery.
Hence do not set monitor mode channel if monitor interfaces is down
during SSR.
Change-Id: Ia381de3e0797e597158f028d7bded5fc33019150
CRs-Fixed: 2733706
Crash is seen when the mode change and shutdown happens in
parallel. Mode change is the driver trans and shutdown is a
psoc trans. If mode change is going on and shutdown req comes
then shutddown trans is rejected. Currently driver crashes
whenever psoc trans is rejected.
Avoid BUG_ON when the psoc trans is rejected.
CRs-Fixed: 2732103
Change-Id: Iad1ab4f188702ed581e3b41c1cdef1c495015048
Currently there is no way to know if an stainfo is
already detached and driver can detach stainfo
again which may lead to put sta ref count twice in
some race condition.
In current scenario SAP receives the deauth from station,
disconnects the station and puts the sta reference taken
against station attach.
In parallel to the deauth from station if SAP gets the
disconnect from user space, it gets the sta reference
and moves ahead with the disconnect process, in this
process again does detach and does the put sta ref
taken as part of the sta attach, in this way it puts the
sta info twice.
To address above issue add logic to check if stainfo is
already detached or not, if sta info is not already
detached, detach the sta info and do the put ref.
Change-Id: I00c75c4d850931fb2a347d740002c21fae50785a
CRs-Fixed: 2735151
Currently, the pm_qos request and cpu mask is updated in bus bandwidth
work handler. In low-latency mode also, cpu mask and pm qos request is
updated. In cases when low latency mode is enabled and cpu mask is set
to all, the bus bandwidth work handler may overwrite the settings done
in LLM mode.
To resolve this issue, add a condition to check if llm_enabled is set
while updating the pm qos request.
Change-Id: I42c131c943128702de95f545c99e35978586d417
CRs-Fixed: 2733979
MSCS enables the establishment of classification using layer 2 and/or
layer 3 signaling to classify incoming individually addressed MSDUs
into streams. The MSCS Descriptor element defines information about
the parameters used to classify streams.
Host gets MSCS IE in set IE user request. Host adds the support to set
MSCS ie in assoc req.
Change-Id: I9c458326ffba3bad58ba27a611f5753afcf0531a
CRs-Fixed: 2732722
When we receive a packet from the network stack for
transmission, we make a copy of this skb and free the
shared skb before trying to trasnmit it.
Currently the mac address used for tdls operations is
taken as a pointer to the original skb, which gets freed
after the skb_unshare.
Copy the mac address into a local stack memory instead
of using a pointer to the skb data to avoid the
use-after-free condition.
Change-Id: I9f0e6260476d5a41b7209a6a599f50a548b953b5
CRs-Fixed: 2733445
Roam invoke is done by driver if reconnect to same bssid is
received or driver FASTREASSOC command is received from the
supplicant. If roaming module is not initialized at firmware,
then still we send roam invoke to firmware and firmware sends
roam invoke failure as part of which disconnection occurs.
Check if roaming module is initialized at firmware, else return
failure for the reassociation request from userspace.
Send failure only if the kernel version is greater than 4.9,
since the fix to handle reassociation failure is available from
this version.
Change-Id: I0feae326be751e50f7327c91739cd7dddab500e9
CRs-Fixed: 2724686
Rename file name and modify function names to keep it inline
with sysfs attribute name 'dp_trace'
Change-Id: Id4e366bea50d1bda95ee02cd7edd02691d0f70c6
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'stats'
Change-Id: Iffc390d4865977f9eff72a6a4bcf708c014f482e
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'range_ext'
Change-Id: Icf7ebbbcf1b8b219e64d1c9b98f1946069f91322
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'wlan_dbg'
Change-Id: I7d0e7b67afa701abd64efb62012c218ee4ab158d
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'fw_mode_config'
Change-Id: Ia389fa8807bbd0e58de58c503d9f3bbbef9ec707
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'scan_config'
Change-Id: I6621cbe5571541d073072ef9e0348d771fd3bc4a
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'radar'
Change-Id: If13effc45323f5a286d8aeb7a8e27848cb3e618b
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'tx_stbc'
Change-Id: I274c1405fab7385202431b48d65603c38783222b
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'tdls_peers'
Change-Id: If6aa504dccd22ce0ccff11f3d73ffb1eedb5895c
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'sta_info'
Change-Id: Ibb13c1496ea1dd5bc3b024b99414ac8d72db3be6
CRs-Fixed: 2731064
Rename file name and modify function names to keep it inline
with sysfs attribute name 'temperature'
Change-Id: I8f31d59be9954d3ffe1ff7c11d16dd24b9e2644d
CRs-Fixed: 2731064