Commit Graph

5697 Commits

Author SHA1 Message Date
Karthik Kantamneni
d33455d6d4 qcacld-3.0: Call runtime pm sync resume when hif ctx is present
Currently if hif ctx is null hdd driver unload is returned without
proper cleanup where hif ctx is not required. To avoid this call
runtime pm sync resume only when hif ctx is present.

CRs-Fixed: 2619481
Change-Id: I761c96446024a175746ef377e1e31b593b93b616
2020-02-12 20:10:52 -08:00
Mohit Khanna
06cce797ed qcacld-3.0: Register FISA callback functions for delivery
Add FISA RX callback functions for fisa enabled case.

Change-Id: Iadd9a1b4e9763293153b1c8c2f263b0107c00c2c
CRs-Fixed: 2600268
2020-02-12 11:56:53 -08:00
Pragaspathi Thilagaraj
8a4ffccc02 qcacld-3.0: Replace stack alloc for struct tPmkidCacheInfo with heap alloc
Currently the strucutre tPmkidCacheInfo is allocated in stack
and used during pmksa operations. This structure takes up ~100
bytes of memory. This will cause stack corruption in low memory
devices.

Move allocations of structure tPmkidCacheInfo to heap.

Change-Id: Ibcf44bc331a9ef94499071af1899914edd75b3cf
CRs-Fixed: 2616488
2020-02-12 09:54:18 -08:00
Liangwei Dong
8f4c8c140c qcacld-3.0: Fix potential memory leak of stats_event
To free stats_event in the failure case of wlan_hdd_get_station_stats.

Change-Id: I679a6109ec2370f9126b0b3201b1035869cef14e
CRs-Fixed: 2618356
2020-02-12 04:00:51 -08:00
Vulupala Shashank Reddy
6e5c807513 qcacld-3.0: Add INI parameter for packet capture mode support
Add INI parameter for packet capture mode

"packet_capture_mode" - ini to set packet capture mode.

Change-Id: Ie60c142af753c65b44aa0018440e43a215e51a27
CRs-Fixed: 2614578
2020-02-11 18:43:31 -08:00
Ashish Kumar Dhanotiya
6b3041aed2 qcacld-3.0: Fix compilation issue in SAR limits file
There are compilation issues if feature FEATURE_SAR_LIMITS
is disabled.
Fix compilation issues relaterd to feature FEATURE_SAR_LIMITS.

Change-Id: Ifdb7c14ea3e973bc63560eb78edd084a53e28974
CRs-Fixed: 2619492
2020-02-11 11:04:28 -08:00
sheenam monga
e0e91c48d5 qcacld-3.0: vdev validation before sending unit test command
Currently, There is no check to validate vdev in function
wma_form_unit_test_cmd_and_send before sending command to
fw which may lead to fw crash due to invalid vdev id.

Fix is to add validation check for vdev before invoking
wmi_unified_unit_test_cmd and sme_send_unit_test_cmd.

Change-Id: I61db37417f05968365f210515c28eb6184279c77
CRs-Fixed: 2618295
2020-02-11 09:16:30 -08:00
Alan Chen
f32d8e8dcf qcacld-3.0: Add check for eHDD_DOT11_MODE_AUTO before updating umac
Currently, eHDD_DOT11_MODE_AUTO has not been checked, so if gDot11Mode
ini is set to 0, this would fail to update umac with the correct HE
capability. Add an if check for eHDD_DOT11_MODE_AUTO to check if it
has been enabled.

Change-Id: I5d26314f4bcfedcf1e913625ac946118ddb9a983
CRs-Fixed: 2619091
2020-02-11 05:43:07 -08:00
Sourav Mohapatra
6eceafd4cb qcacld-3.0: Clean up logs in STATS path
Clean up logs in STATS request and response path.

Change-Id: I417100c021ef8b776e7bd800ab2df8eebe95d472
CRs-Fixed: 2618311
2020-02-10 13:32:46 -08:00
Ashish Kumar Dhanotiya
b3ae646bf2 qcacld-3.0: Add support for the NAN config items
Currently there is no inis for NAN component:
1. To configure the keep alive period for the
NDI interface.
2. To enable/disable discovery of NAN cluster with
Master Preference (MP) as 0 when a new device is
enabling NAN.

Add ini support to configure above mentioned values.

Change-Id: I47b67eb89fb8849960a9f492d2909e45b96308f3
CRs-Fixed: 2617839
2020-02-10 11:58:46 -08:00
Kiran Kumar Lokere
63faa9b6b0 qcacld-3.0: Rename ioctl ldpc setting for SAP
Rename the ioctl ldpc setting for SAP to use same naming as
STA mode.

Change-Id: Iaebde9cf542637bd82dbc3812b96dec77683cc2c
CRs-Fixed: 2618149
2020-02-10 10:14:50 -08:00
Ashish Kumar Dhanotiya
f6871a8e8c qcacld-3.0: Resolve memleak in hdd_configure_sar index
In hdd configure sar index api if the FW supported version is not
SAR_VERSION_2, in that case there is a mem leak issue as the
memory is allocated for sar_command is before the fw sar version
check and in case of fw sar version check failed, memory allocated
for sar command is not freed.

To resolve above issue, move the version check before the memory
allocation for sar command.

Change-Id: I1d5e6bad63134c89ac456c3247eebad79e8f8c79
CRs-Fixed: 2618648
2020-02-10 08:32:29 -08:00
sheenam monga
65415d12d9 qcacld-3.0: Log optimization for NCHO
Currently there are unnecessary/duplicate logging. Identify and
reduce those logs that are not necessary.

Change-Id: I648b84786f9009d45e54fa67c21c834a1eae1608
CRs-Fixed: 2617648
2020-02-10 08:32:11 -08:00
Sourav Mohapatra
5e4000bde8 qcacld-3.0: Remove validate_context check from wlan_resume
Presently, there is a very narrow race condition that causes
scheduler_thread to remain in a suspended state for undefined period of
time. The race condition occuers between idle_psoc_timeout and
wlan_hdd_cfg80211_resume_wlan.

As a part of idle_psoc_timeout, the driver calls hdd_wlan_stop_modules
that sets the flag "stop_module_in_progress" and checks if driver is in
suspended state. If yes, it resets the flag and returns. But in the case
of a race condition, before this reset and return is carried out,
wlan_hdd_cfg80211_resume_wlan is invoked. The validate_context inside
the resume function fails due to the above mentioned flag being set. As
a result, resume fails and the driver stays in suspended state. This
causes the driver to enter a infinite loop of stop_modules not being
successful.

To close this small window of contention, remove the validate_context
check. hdd_ctx is always guranteed to be valid and also DSC takes
care of synchronizing the operation, thus the check is redundant.

Change-Id: I723f78e4c33bdc531776c46eff2428dbd869493f
CRs-Fixed: 2616177
2020-02-10 02:31:49 -08:00
Alan Chen
a507e41a87 qcacld-3.0: Add module enable check in pm_qos_notify
pm_qos_notify() should do nothing if WiFi module is not enabled.

Change-Id: I8eaf78f2ec547f33921c8337b9b3ae178c1709e1
CRs-Fixed: 2618148
2020-02-08 18:59:47 -08:00
Amruta Kulkarni
fc875ea635 qcacld-3.0: Cleanup for function wlan_reg_is_dfs_ch()
Replace wlan_reg_is_dfs_ch() with wlan_reg_is_dfs_for_freq()

Change-Id: Ifa62248169ad7b8ff1c62cab44c92d99a8db0e45
CRs-Fixed: 2609311
2020-02-08 02:07:03 -08:00
Ashish Kumar Dhanotiya
309af01f1d qcacld-3.0: Configure sar sleep index to FW
Currently there is no SAR index is configured to the FW
before device goes into suspend mode.
with the new requirement, configure the sleep mode index
as sar power limit to the FW before device goes into
suspend mode and configure safety mode index to the FW
on wakeup.

Change-Id: Icedbab047ec3bb252f0ed9c1b2baf04d2726a60e
CRs-Fixed: 2617102
2020-02-07 17:21:36 -08:00
gaurank kathpalia
385977d071 qcacld-3.0: Optimize log in connect path
Optimize log in connect path during phase. Remove duplicate logs
and combine scattered info.

Change-Id: I6f57405669987b35d5c0acb2f0b818e5e61bd7a9
CRs-Fixed: 2617508
2020-02-07 15:42:20 -08:00
Alan Chen
c88bfc6f5a qcacld-3.0: Trigger runtime pm sync resume during driver unload
Runtime PM needs to be sync resumed during driver unload. Hence, call
runtime pm sync resume during driver unload.

Change-Id: I20423871a82f33fcbaa3a64d741022f128785075
CRs-Fixed: 2615676
2020-02-07 10:39:26 -08:00
Ashish Kumar Dhanotiya
4f5c252a82 qcacld-3.0: Add SAR request-response event
Add support SAR request-response event. When
sar_unsolicited_timer expires driver sends
QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS_EVENT event to
user space and expects user space to set sar power limits
with the vendor command
QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS.

Add a request-response event to wait for
QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS vendor command from
user space. If driver does not get
QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS command from user space
for a specified number times, driver configures the sar safety
index to the FW.

Change-Id: Ic2b9e0b7fe06093ce849fb46df7bfce5da409ef6
CRs-Fixed: 2615519
2020-02-07 09:04:10 -08:00
Ashish Kumar Dhanotiya
3d5a742d5c qcacld-3.0: Add SAR unsolicited timer
Add SAR unsolicited timer to the driver. This timer starts
on every data tx (if not already running) and stops on
command QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS.
If this timer expires, a vendor event
QCA_NL80211_VENDOR_SUBCMD_GET_SAR_LIMITS_EVENT is sent to the
user space to issue the QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
command.

Change-Id: Ic30e5ac606d2b6b0cbc9209174adcd5213eac08e
CRs-Fixed: 2615510
2020-02-07 07:33:20 -08:00
Ashish Kumar Dhanotiya
97de5e6d0b qcacld-3.0: Add SAR safety Timer
Add SAR safety timer to the driver. This timer starts
when first QCA_NL80211_VENDOR_SUBCMD_SET_SAR_LIMITS
vendor command is recived. This timer gets
reset on every sar set vendor command.
When this timer expires, configure sar safety index to
the FW and restart the timer.

Change-Id: I0536ab88baf962e1bc2aef39478380534e0e1401
CRs-Fixed: 2615442
2020-02-07 07:33:05 -08:00
Ashish Kumar Dhanotiya
d2fef2cda4 qcacld-3.0: Add ini configs related to SAR safety feature
As part of new requirement add ini configurations
gSarsafetyTimeout, gSarSafetyUnsolicitedTimeout,
gSarSafetyReqResTimeout, gSarSafetyReqResRetry,
gSarSafetyIndex, gSarSafetySleepIndex,
gEnableSarSafety, gConfigSarSafetySleepIndex.

Change-Id: I18df23896b52aa1bbf8e071e27703d4e9e1738f1
CRs-Fixed: 2612843
2020-02-07 04:32:12 -08:00
Sourav Mohapatra
9243462d48 qcacld-3.0: Keep driver synced with proper dot11 mode as per INI
The INI param gDot11Mode is used to indicate the support that the driver
should advertise. Currently the behavior of the driver is out of sync
with the mode supported over the air and the mode provided to the
framework.

In one particular case, the driver sends VHT supported as
true to the framework even though the INI gDot11Mode is set to 11n only.
This results in the frames to be transmitted with 11n capabilities while
the mode advertised is different.

To rectify this, check for the dot11 mode before setting the
corresponding supported bit in the wiphy. The value being advertised
should be the intersection of gDot11Mode INI and the driver and
firmware capability.

Change-Id: Ic2f1558c72fc801df9d7ca6b3a0182619b93cf0d
CRs-Fixed: 2612620
2020-02-07 00:15:45 -08:00
Vevek Venkatesan
656edfa1f8 qcacld-3.0: add support to customize dscp-to-up map table
Add support to customize DSCP-to-UP map table and send the
customized map values to FW to update its corresponding
map table.

Change-Id: Ibe9704a90468c898dd2e60fdf83a271152f654ce
CRs-Fixed: 2616247
2020-02-06 22:44:57 -08:00
Pankaj Singh
074fdebe64 qcacld-3.0: Remove wext handler on mon mode adapter deinit
Wext handlers are not getting deregistered during the
interface down of monitor mode. So. After the idle shutdown
also the user can issue ioctls which can lead to system instability.

Fix is to remove the wext handler as part of adapter deinit.

change-ID: I49ab4b0cfa0125b253bc097f180226f2095d5df1
CRs-Fixed: 2615138
2020-02-06 12:42:33 -08:00
Abhishek Singh
4ec44a7db6 qcacld-3.0: Optimize logs in connect req in HDD and CSR
Remove redundant logs and optimize the logs for connect in
HDD and CSR.

Change-Id: I2d2d63aaaff814d91018e95a30869b81c1349a80
CRs-Fixed: 2615902
2020-02-05 12:31:18 -08:00
Kiran Kumar Lokere
681403ca0d qcacld-3.0: Support for auto rate LDPC configuration
Add support to configure auto rate LDPC setting to FW.

Change-Id: Ic2b707c7e2132f83b4ab8732b8e087742888725e
CRs-Fixed: 2613203
2020-02-04 19:34:07 -08:00
Govind Singh
041cf61139 qcacld-3.0: Add FTM TIME SYNC component
Add support for FTM TIME SYNC feature.

Change-Id: Idd022b3b105febd25b9353d7f7c4a046c9143585
CRs-Fixed: 2615242
2020-02-04 17:17:48 -08:00
Abhishek Singh
48175fd4f7 qcacld-3.0: Optimize logs in scan path
Remove redundant logs and optimize the logs in scan path.

Change-Id: Ie6ff84b1a832a29d5fe01c649be4b8143bd13c94
CRs-Fixed: 2612637
2020-02-04 14:15:54 -08:00
gaurank kathpalia
ac1feea895 qcacld-3.0: Log enhancement in ACS
Enhance logs in ACS module to remove duplicate
prints and keep only useful logs to debug.

Change-Id: I2cf98fb8b4d7a8391617c9ce1baaa5ff6ad42114
CRs-Fixed: 2614609
2020-02-04 09:11:13 -08:00
Vulupala Shashank Reddy
9331f42f3e qcacld-3.0: Add support for packet capture mode
Add support for packet capture mode to monitor packets
on WLAN interface.

Change-Id: I8409479ef7855d51e303028d7e18e6bf89055407
CRs-Fixed: 2611293
2020-02-03 21:41:46 -08:00
Abhishek Ambure
7b4b2ff625 qcacld-3.0: Reset roam configs to default while STA mode init
Reset roam configurations to default while station mode init.

Thus user gets default roam configuration with which STA mode is
initialized.

example: When STA connect to AP, user queries for default roam
scan home away time using following command of wpa_cli.
$wpa_cli
>driver GETSCANHOMEAWAYTIME
<OUTPUT is default value of gRoamScanHomeAwayTime INI>

Change-Id: If525e4a92fee6f4823996c1e1e34b9943fed0432
CRs-Fixed: 2607557
2020-02-01 00:44:09 -08:00
Pankaj Singh
50e40422d1 qcacld-3.0: Add support for WLAN thermal mitigation
As part of new requirement WLAN subsystem needs to perform thermal
mitigation action as per the thermal state of the device. The
wifi hal sends vendor command QCA_NL80211_VENDOR_SUBCMD_THERMAL_CMD
with the thermal level parameter and wlan host performs the required
appropriate action. wlan host driver maps the thermal level to
corresponding duty cycle off percent value and duty cycle value,
send WMI_THERM_THROT_SET_CONF_CMDID cmd to FW.

Make changes to perform vendor command handling, mapping thermal level
to duty cycle value and communicating the thermal information to FW.

change-ID: I77175048c817ab755cdb838018e414ef3ee0b112
CRs-Fixed: 2610395
2020-01-31 12:45:29 -08:00
Abhishek Ambure
f4e994656f qcacld-3.0: Handle ch cnt and number of channels for SETROAMSCANCHANNELS
To set specific channels, user give SETROAMSCANCHANNELS command with
channel count followed by number of channels.
Ex. SETROAMSCANCHANNELS 2 1 11, here 2 is count and 1 & 11 are the
channels.

If channel count is more than the number of channels, driver rejects
SETROAMSCANCHANNELS command and if number of channels are more than
the channel count, driver ignores excess channels in the list.

Change-Id: I276b84b4994bdf25abf36298dc212dcd54ce0dbb
CRs-Fixed: 2609788
2020-01-31 09:57:59 -08:00
Sourav Mohapatra
762ed1e51a qcacld-3.0: Prevent possible OOB access in hdd_sendactionframe
In the function hdd_sendactionframe, the parameters passed include the
payload and the corresponding payload length; payload being generic
pointer. The payload is then typecasted into the destination structure
of type tpSirMacVendorSpecificFrameHdr. If the size of the payload
specified in payload_len is less than the size of the destination
structure, there is possiblility of OOB read while accessing the same.

To prevent this security vulnerability, add a sanity check for the
payload_len against the size of the destination structure.

Change-Id: Ib0e7b7bfcf78412d81f18cf887e5296d80272598
CRs-Fixed: 2517858
2020-01-31 05:36:36 -08:00
Abhinav Kumar
dafd2a637b qcacld-3.0: Add an ini for separate iface support for NAN
Add a new INI parameter "nan_separate_iface_support" to
indicate firmware that the host driver supports separate
interface for NAN Discovery.

Change-Id: I6fb313b02c5f3a05638e85494051fb003b2dd867
CRs-Fixed: 2612006
2020-01-31 00:57:02 -08:00
Alan Chen
1b89e783de qcacld-3.0: Use the hif api for doing PM idle operations
wlan_hdd_pm_qos_notify() is currently directly calling the kernel runtime
pm operation functions. Use the hif api functions to perform these
operations instead.

Change-Id: I8b13a8dd0d5a89f2208b4f319e71b4ffc217ae5c
CRs-Fixed: 2607715
2020-01-30 15:13:12 -08:00
Alan Chen
4ea561fa80 qcacld-3.0: Disable ARP_NS and GTK offload for NaN mode
arp_ns_offload and gtk offload command are being issued for NaN mode
vdev. NaN mode vdev does not support ARP_NS and GTK off load features,
so disable them when in NaN mode.

Change-Id: Iab11c92bb5da4004b62e642342a386f532832509
CRs-Fixed: 2608618
2020-01-30 00:32:33 -08:00
Tushnim Bhattacharyya
36b1a8a769 qcacld-3.0: Use exact values from PCL in GET_PREFERRED_FREQ_LIST
Instead of returning the whole valid channel list, just return the
PCL to QCA_WLAN_VENDOR_ATTR_GET_PREFERRED_FREQ_LIST.

Change-Id: I2be4357f1c25732b9d1098f3d16259217fa46b8e
CRs-Fixed: 2607890
2020-01-29 19:30:26 -08:00
Srinivas Dasari
20bc5c6a43 qcacld-3.0: Reduce excessive logging in NAN/NDP
Driver/firmware may not support NAN in some platforms. But when
framework tries to enable NAN/NDP, driver returns an error and
logs the failure with error level. This is causing excessive
logs in dmesg. Reduce the log level to debug in order to avoid
spamming dmesg.

Change-Id: Ied8f06fadc3b68a9fc3657e31679b71a3807737e
CRs-Fixed: 2608564
2020-01-28 12:44:07 -08:00
Alan Chen
7890bebcbc qcacld-3.0: Add sta connection check in NUD stats
Add check for sta connection during NUD stats request because FW may
assert if NUD stats request is sent to FW when the station is disconnected.

Change-Id: I0521356f677154cd5f4f0ae08b5fcfec2e9cef56
CRs-Fixed: 2610267
2020-01-27 21:59:26 -08:00
Alan Chen
876fa6f2f9 qcacld-3.0: Pass a double pointer to sta_info in hdd_sta_info_detach()
Data abort is happening while accessing unmapped sta_info in
hdd_softap_stop_bss(). When calling hdd_sta_info_detach() through
hdd_softap_deregister_sta(), sta_info is not being set to NULL since
a single value only passes a copy of sta_info, so the actual sta_info
is not actually being set to NULL. To fix this, pass a double pointer to
sta_info instead of a single pointer so that it can be set to NULL.

Change-Id: I96f4c7e1563e53498a86c95263dc62a8d3d68e21
CRs-Fixed: 2610763
2020-01-27 19:05:28 -08:00
Arun Kumar Khandavalli
afcb0553ff qcacld-3.0: Selectively reduce the hdd/osif logs
Reduce loglevel of some logs from info to debug.

Change-Id: Ie90515989a45bc41274bd79afe4c5e407561256b
CRs-Fixed: 2608793
2020-01-27 17:36:34 -08:00
Venkata Sharath Chandra Manchala
0d0ef55749 qcacld-3.0: Provide soc objmgr to hif
Pass soc objmgr from hdd context to hif context
to retrieve INI parameters to be used in hif
layer.

Change-Id: I0ad4573fecba0fc78968145394683057d09da312
CRs-Fixed: 2598759
2020-01-27 15:42:46 -08:00
Yeshwanth Sriram Guntuka
d0e884aedf qcacld-3.0: Add ini support for protocol data pkt diag logging
Add ini support to configure the protocol data packet types
for which diag log is sent to user-space.

Change-Id: I10c83aa4af7099feafa86e2b57dc5fd79d02114c
CRs-Fixed: 2595789
2020-01-27 07:54:21 -08:00
Srikanth Marepalli
6a87278fe7 qcacld-3.0: Add support for pmkid generation for FIPS
Add support to fallback the PMKID generation from firmware to
wpa_supplicant.
In FIPS Enabled case, for roaming Firmware sends PMKID
request to host as firmware is not supposed to do crypto
functionality with FIPS enabled. Once the roam candidate
selection is done in the firmware, it sends the
WMI_ROAM_PMKID_REQUEST_EVENTID. After receiving this event
the host driver triggers an event to wpa_supplicant using
NL80211_CMD_PMKSA_CANDIDATE for PMKID generation. Then
wpa_supplicant responds with PMKID to host using
NL80211_CMD_SET_PMKSA. And host updates the wmi pmk cache
and indicates the firmware via WMI_PDEV_UPDATE_PMK_CACHE_CMDID
wmi command.

Change-Id: I7d33a2b92f97260fa5a7e742b6f877adc7eced55
CRs-Fixed: 2512955
2020-01-27 03:57:30 -08:00
Pragaspathi Thilagaraj
f186fb9bbb qcacld-3.0: Print roaming logs in kmsg
Currently the roam trigger, roam scan , candidates and
roam result related logs are printed at debug level and wouldnot
appear at kmsg. These logs are needed at kmsg for roaming
related debug requirement.

Change-Id: I0d407d04606462c88cf15f3693994f7cf11f6602
CRs-Fixed: 2607349
2020-01-24 13:00:13 -08:00
Abhishek Singh
30769a34c3 qcacld-3.0: Fix wait for disconnect during connect req
Even when vdev is in disconnected state, during connect it tries
to wait for disconnect which lead to 1 sec delay in connect.

So call wait for disconnect only if vdev is not already disconnected.

Change-Id: Ib7a9b4628b0e10f71bdebe4b74a70d648825d9d3
CRs-Fixed: 2609462
2020-01-24 05:09:34 -08:00
gaurank kathpalia
17b132d897 qcacld-3.0: Handle positive RSSI case in stats
The HW is capable to send the RSSI from the range
0-127, and when the driver normalizes it with the
noise margin of -96db, then it may happen that the
net RSSI is still positive if the reported RSSI is
greater than 96 db. If this happens then the GUI
shows 0 signal as it considers this RSSI positive
value to be invalid, though the RSSI was very strong.

Fix is to override the RSSI as 0 if the net RSSI
obtained after normalization is positive.

Change-Id: Id00a2ef3bafe77a033627931ae62cd11f3ba4f27
CRs-Fixed: 2606589
2020-01-24 00:55:52 -08:00