Commit Graph

1275 Commits

Author SHA1 Message Date
Edayilliam Jayadev
962647ba6c qcacmn: Add "Spectral disable" WMI service bit
Add a new WMI service bit to indicate whether normal
Spectral scan is disabled.

CRs-Fixed: 2840128
Change-Id: I09314afeb5372f83b8356e06f245c83c7acbc85d
2020-12-30 07:06:00 -08:00
Bapiraju Alla
00678d250a qcacmn: Don't consider WMI_MIN_HEAD_ROOM in WMI msg length
Currently, Host driver assumes WMI_MIN_HEAD_ROOM is part of WMI
messages and Validations are done accordingly. But this
WMI_MIN_HEAD_ROOM is not considered in the firmware. Because of
this host may drop valid events.

To avoid this, Don't consider WMI_MIN_HEAD_ROOM while validating WMI
msg length.

Change-Id: I5f1fe12cfae570e636defb8a4a46ec154f988195
CRs-Fixed: 2844982
2020-12-29 15:49:55 -08:00
Nandha Kishore Easwaran
6547f0f671 qcacmn: Swap bytes of key_data in big endian platform
Swap each word of key_data before sending key install command.
This is needed since copy engine swap is enabled for big endian platform
and key needs to be plumbed in network byte order for decoding to happen
correctly.

Handle the swap in wmi layer since all other big endian conversions are
handled in this layer.

Change-Id: Ia6f0d579f3edaf32193c353ea2fe35cc40f55399
2020-12-28 08:56:09 -08:00
Kiran Kumar Lokere
982bf62718 qcacmn: Add support for keepalive with mgmt frame tx
Add support to configure the keep alive packet as management frame
to FW.

Change-Id: Icaf88f30981eeac2b282f35c3a719950e3e0d1df
CRs-Fixed: 2788504
2020-12-23 20:55:55 -08:00
Pragaspathi Thilagaraj
7815fdacc7 qcacmn: Add support for TWT wake duration and interval tolerance values
Add support to configure minimum and maximum wake duration
values, minimum and maximum wake interval values for TWT setup.

Change-Id: I69c328815be511833abce0fcd18649e136027f53
CRs-Fixed: 2827115
2020-12-23 11:35:23 -08:00
Shashikala Prabhu
8c3705336e qcacmn: Add support to send FTM responder/initiator cmd to target
Add support to send FTM responder/initiator support to target.

Change-Id: I6649d90941a7448ff1901a3f1194d8d0620481cc
CRs-Fixed: 2781144
2020-12-21 20:55:11 -08:00
Shashikala Prabhu
9cbe634741 qcacmn: Define callback functions for LCI/LCR command send
Define callback functions to send LCI/LCR commands to  FW.

Change-Id: I4a9d97f65a4d5b3fbeb017e165ef207941af85ee
CRs-Fixed: 2832129
2020-12-20 05:04:54 -08:00
Paul Zhang
59ef5a49a8 qcacmn: Add support for WMI_TWT_NUDGE_DIALOG_CMDID
Add support for WMI_TWT_NUDGE_DIALOG_CMDID and
WMI_TWT_NUDGE_DIALOG_COMPLETE_EVENTID.

Change-Id: I9d4bf1061f6f08479967619ce50d2756c062f55f
CRs-Fixed: 2825138
2020-12-18 01:50:16 -08:00
Liangwei Dong
6e67047de5 qcacmn: Report thermal target shutdown level
Support new firmware thermal level WMI_THERMAL_SHUTDOWN_TGT
to indicate target over heat and need to be shutdown completely.

Change-Id: Icdb8aab9fe7b8914681cc46a4ccb5579781c587d
CRs-Fixed: 2835410
2020-12-17 23:46:06 -08:00
Bapiraju Alla
25509a1510 qcacmn: Request stats over qmi only when target suspend is success
Currently, Stats request commands are sent over qmi right from the
target suspend request is sent to FW. This is leading to a crash in
FW since it is trying to access PCI when it is in suspend state.

To address this, send stats request over QMI only after the ack is
received for the target suspend command.

Change-Id: Id7a79d52740916f66476bf911e571c0ff466c7d3
CRs-Fixed: 2838737
2020-12-17 11:44:33 -08:00
Srinivas Girigowda
7db601e3af qcacmn: Introduce wmi_validate_handle()
Introduce wmi_validate_handle() with the caller function name
embedded in it to validate the WMI handle and log incase
of error. Calling functions can avoid logging in case
wmi_validate_handle() returns -EINVAL. This reduces logging and
thereby memory foot print.

Change-Id: Ie0a6a84ffad6e5cf2da8f547c7209dc77cdf5729
CRs-Fixed: 2838960
2020-12-17 11:44:29 -08:00
Bapiraju Alla
97c6bdfd2a qcacmn: Flush Rx diag event work during idle shutdown
Currently, Rx diag event work is not being flushed during idle shutdown.
This may result in use after free access if the scheduled diag event work
gets the chance to execute after driver modules are closed.

To address this, flush diag events work during idle shutdown.

Change-Id: I348e80d2c86a5e070f0fb67d66b758529fede76c
CRs-Fixed: 2838020
2020-12-16 19:08:29 -08:00
Bapiraju Alla
debcd9c86d qcacmn: Discard QMI events when message with invalid length
Currently QMI message length is not being validated before
handling QMI event. This is resulting in illegal memory access
when QMI message length is invalid.

To address this, discard QMI events with invalid length.

Change-Id: Ia9f04bcb4fa3b365cbbf2be8885a8d30f78f8f10
CRs-Fixed: 2839277
2020-12-16 11:55:50 -08:00
Alan Chen
e940d94d42 qcacmn: Log important resource config during wmi init
FW memory allocation depends upon important resource config sent from
host during wmi init. Hence, log these important resource config parameters
sent during wmi init.

Change-Id: I5e187b905716a5a2c1767bc4b081f54034994653
CRs-Fixed: 2839119
2020-12-16 02:44:47 -08:00
Subrat Dash
6d35309cc7 qcacmn: Capability to configure bcast TWT responder or requestor
The bcast twt functionality may need to be enabled separately
for requestor and responder roles. Enable such configuration
by looking up WMI service bit support from target:
    wmi_service_twt_bcast_req_support
    wmi_service_twt_bcast_resp_support

Change-Id: Ibc91173c23cf69f0d248af27d61c77bee3e8f48a
CRs-Fixed: 2828720
2020-12-14 09:30:00 -08:00
Gururaj Pandurangi
6c3d548d5a qcacmn: Add support to view peer RSSI value in auth/assoc req pkt
Add support to view station's peer RSSI value in auth and assoc request
packet by extracting rssi from probe request and passing it down to
FW in the auth request and assoc request mgmt frames.

Change-Id: I92f714ed815ab8c77f6a6b7df3363dc96f1119bc
CRs-Fixed: 2832982
2020-12-08 07:21:40 -08:00
Abhinav Kumar
7c55b952fa qcacmn: Extract roam message information
Extract btm response and initial roaming stats coming
from FW through WMI_ROAM_STATS_EVENTID event as
wmi_roam_msg_info_tlv_param.

Change-Id: I9a9b768d09a45ba70066cacb4aa420a90a39a76d
Crs-Fixed: 2826323
2020-12-06 23:49:57 -08:00
Shashikala Prabhu
fd0132aa9f qcacmn: Add CSA event handler and extract APIs
Move CSA event handler and CSA extract APIs to common code

Change-Id: Iedfa3bbd8a2b6d9cbfdd9fecd57052b853ed5680
CRs-Fixed: 2826991
2020-12-01 06:50:28 -08:00
Mainak Sen
e66ef5081e qcacmn: WMI support for Tx Mode Select
When MSCS feature is enabled, Host needs to send WMI command to
FW to enable tx mode selection

Change-Id: I84372f2e83f2faa6c90436d927410d1af636246e
2020-11-27 06:48:46 -08:00
Hariharan Basuthkar
ad5cb17aa7 qcacmn: Expand regdomain to include 6Ghz superdomain
The regulatory structure which contains country and regulatory domain,
needs to be expanded to include 6Ghz superdomain.
Make changes in the regulatory component to send the 6G super domain
set by the user, to the target.

Change-Id: I84b96cd74012e33d464d98675158c9cd5eabff4e
CRs-Fixed: 2802131
2020-11-27 04:54:31 -08:00
sheenam monga
3dd0c45165 qcacmn: Add support for CSA offload
Add support for CSA offload to fw in case
of SAP/P2P GO.

Change-Id: I4ffa7c377e8fe50120f5cd20080419bd1b1e4248
CRs-Fixed: 2819499
2020-11-26 04:15:39 -08:00
Bapiraju Alla
e8dfd0b73a qcacmn: Add INI parameter to configure NAN in 6GHz
Currently, there is no INI parameter to control NAN feature in 6GHz
frequency band. Because of this, there is no provision to disable the
NAN in 6GHz when there is no requirement.

To address this, add INI parameter to configure NAN feature in 6GHz.

Change-Id: Ibc653d6241d176f7fb75f18d2886175231ad71cc
CRs-Fixed: 2817925
2020-11-25 14:45:58 -08:00
Bapiraju Alla
197fc297c3 qcacmn: Add log while dropping FW diag events
FW diag events will be dropped when number FW diag events pending for
processing is reached to configured RX_DIAG_WQ_MAX_SIZE value. Add a
log when these diag events a getting dropped for debugging purpose.

Change-Id: Ifc303991bdf274fa7426794eaf71517722e9f386
CRs-Fixed: 2824458
2020-11-24 08:48:59 -08:00
Nandha Kishore Easwaran
a90712e15d qcacmn: Add extra parameters to gpio command
Add extra parameters to gpio wmi command since they
are required for smart antenna config.

Change-Id: I3b363c7b508862ded8aacffb9e0a39328e8b2b94
2020-11-23 06:38:30 -08:00
Bapiraju Alla
b130521bd3 qcacmn: Process FW diag events in a separate worker thread
Currently, FW diag logs, management frames and stats responses are
processed in worker context. Because of this, there is a possible
out of memory scenario when there are huge number of diag events
waiting in work queue.

To address this, process diag events in a separate worker thread and
set the limit for the number of diag events that can be queued in
work queue.

Change-Id: Ie6e5b905a3b591cf724cd6b024bec0612f9e2e0c
CRs-Fixed: 2818013
2020-11-21 00:20:27 -08:00
Debasis Das
e85ef5624f qcacmn: Add resource config flag for VoW
Add support to use resource-config flag to
enable/disable optimization for VoW.

Change-Id: Iff20f09ad3b8f21d49d269ec2eeb3f8b70704c6f
2020-11-18 07:46:34 -08:00
Balaganapathy Palanisamy
0d9dc04d48 qcacmn: Stop wmi sequence check during SOC stop
Skip wmi sequence check during SOC stop and enable after
initializing wmi handle. It is required to skip sequence check
during soc stop as the endpoint flush is preceding CE flush.

CRs-Fixed: 2813341

Change-Id: Ieb821483e9786471d033773dc2365ab456345f83
2020-11-12 10:13:15 -08:00
Nandha Kishore Easwaran
12104fad28 qcacmn: WMI changes for big endian platform
Swap each word of beacon and mgmt frame for big endian platform.
This is needed since copy engine swap is enabled but beacon and mgmt frame
needs to be given in same order to FW in order to get transmitted in the
intended network byte order.

Change-Id: I09290f3beef5f0cde33a5543c2778473b35d232c
2020-11-12 05:40:27 -08:00
Shashikala Prabhu
9cd113574d qcacmn: Add vdev_id to peer_chan_width_switch_params structure
Add vdev_id variable to peer_chan_width_switch_params structure.

Change-Id: I9a2f5598a6e5d946e7e8546c925306b85c910d2f
CRs-Fixed: 2812110
2020-11-10 07:03:28 -08:00
Abhinav Kumar
2bce1a8132 qcacmn: Print roam related info in kmsg
The event WMI_ROAM_STATS_EVENTID is received after
every roam, once the roam synch complete is sent by the host.
This event contains details regarding the btm response.

This helps to debug the scenario when roam failure happen.

Print the info received related to roam scan type & roam status
info into kmsg.

Change-Id: I7c01d482e3152dfbf500dba97001c328f39564de
CRs-Fixed: 2812515
2020-11-06 06:02:00 -08:00
Srinivas Dasari
d7b3042685 qcacmn: 6g scan optimizations based on the ini
Below optimizations can help to improve 6g scan,
1. RNR-only: Consider only 6g RNR(PSC and non-PSC) channels found
   while scanning 2g and 5g bands, as the 6g APs are likely to
   present in RNR channels.
2. Duty cycle: There is a chance to miss the standalone 6g APs as
   they don't advertise RNR IEs. So, instead of optimizing all
   scan requests, we can consider to do a full scan with duty
   cycle(n) where optimization is skipped for every nth full scan.
   The full scan requests 1 to n-1 are going to be optimized as
   per RNR-only policy.
Driver shall maintain a scan count to track the full scans and
decides whether to optimize the scan (scan count 1 to n-1) or
send it as it is(scan count n) to firmware.

Change-Id: I35b31e900b74dbcd7791f4c2fcfe87b3c629758b
CRs-Fixed: 2806409
2020-11-05 16:13:04 -08:00
Srinivas Dasari
da54959f21 qcacmn: Get per channel scan config service capability
Firmware advertises the service capability bit
WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL when it supports per channel
scan config flags. Get this and cache in psoc.

If firmware supports WMI_SERVICE_SCAN_CONFIG_PER_CHANNEL, it uses
the upper-12 bits(bit-20 to bit 32) of channel_list for flags and
lower 20-bits(bit-0 to bit-19) for frequency. If firmware doesn't
support it, then channel_list holds the frequency value only.
Fill the flags and frequency accordingly.

Change-Id: I88a6f29f61e1ecea75bc5574cadcbbfbb7f8b188
CRs-Fixed: 2806405
2020-11-05 16:12:54 -08:00
Aditya Kodukula
74b41a6d6a qcacmn: Add WMI command to enable wow mode logging
Add the WMI command WMI_DBGLOG_MOD_WOW_LOG_LEVEL to enable
debug logs while in wow mode.

Change-Id: Ia1902d989964a5e35f590a075a2de64a9f66d5b7
CRs-Fixed: 2810326
2020-11-05 01:20:46 -08:00
Srinivas Girigowda
1aefc8972b qcacmn: Remove obsolete WMI_LOG(I/E/P/W/D) macros
Remove obsolete WMI_LOG(I/E/P/W/D) macros and
instead use wmi_(err/debug/info/alert/warn).

Change-Id: Ib401c5da873efc7a87323d9857d7f33989c3b29c
CRs-Fixed: 2776741
2020-11-03 13:17:04 -08:00
hqu
fc4c9c5a86 qcacmn: Remove old rso path code [PART 1]
Since new rso ROAM_OFFLOAD_V1 path is enabled, remove
the old rso path code for wmi related files.

Change-Id: Ie519ca7fac2d721f87a4c9bd11507cd83ddfb504
CRs-Fixed: 2810241
2020-11-03 06:23:32 -08:00
aloksing
b5692dc64c qcacmn: Replace WMI_LOGD() with wmi_debug()
Replace WMI_LOGD() with wmi_debug().

Change-Id: Ia5f00e0b54de30e2251e3313b46badbde7a90b40
CRs-Fixed: 2807905
2020-11-02 03:54:22 -08:00
Kai Liu
4be28ba641 qcacmn: Enhance hang info feature
Add bus related info in hif layer in order to get bus status
when hang issue happened.

Change-Id: If922e0892e0f65de778b9696bbc56fc63c25c169
CRs-Fixed: 2801350
2020-10-30 13:03:35 -07:00
Bapiraju Alla
47c0d5465e qcacmn: Validate NDP app info length before accessing NDP app info
Currently, NDP app info length is not being validated with max NDP
app info length. This may result in buffer oveflow wile accessing
NDP app info received from the firmware.

To address this, validate NDP app info length before accessing NDP
app info

Change-Id: Ifddf1afca7ecf2585e8eb450864d9ba127238f6e
CRs-Fixed: 2795961
2020-10-28 13:27:10 -07:00
Gururaj Pandurangi
00d6ce30a3 qcacmn: Add action OUI to disable TWT
Add a new action OUI to disable TWT for certain APs.

Change-Id: I10fe6218d03f45c132268a120bdeb19d58696d9d
CRs-Fixed: 2793128
2020-10-28 09:21:49 -07:00
Christopher Chopp
36627ac5e9 qcacmn: Add WMI Handler for TSF Event
Add handling for WMI TSF Event, including registration,
sending event and extracting response.

Change-Id: Icccf9b5eb7e46bd87caf7a644be903747eac025c
2020-10-26 18:56:43 -07:00
Linux Build Service Account
eb9b6ee897 Merge "qcacmn: Add support for peer create response event" 2020-10-23 12:36:44 -07:00
Naga
457c3d62e8 qcacmn: Add support for peer create response event
Add host data structure and api declarations
corresponding to peer response event and register
WMI_PEER_CREATE_CONF_EVENTID in global wmi event_ids.

Change-Id: I143a4a85d079cc113397348512b0d86f500cae5b
CRs-Fixed: 2797197
2020-10-23 12:13:02 -07:00
Liangwei Dong
bf189853b7 qcacmn: Add host definition for target thermal throttle level
Convert target thermal throttle level to host definition -
enum thermal_throttle_level.

Change-Id: I9914aaf56b781533565cd6a3f8b279ee67215c23
CRs-Fixed: 2786660
2020-10-23 10:03:25 -07:00
Abhishek Ambure
06ac6b2604 qcacmn: Add support to send FILS DISC TX enable/disable to FW
Add support to send WFA test config FILS DISC frames TX
enable/disable to FW.

Change-Id: I5b0abed1b6fe517b12c29269da6456c48b21725c
CRs-Fixed: 2801138
2020-10-23 05:48:10 -07:00
Shashikala Prabhu
31f750cb6f qcacmn: Use FW macro to set BCAST_TWT flag in TWT_enable cmd
Add b_twt_enable variable to enable/disable broadcast TWT in
wmi_twt_enable_param structure and use FW macro in WMI layer
to enable/disable BCAST_TWT in TWT_ENABLE cmd.

Change-Id: I892e922dda14d16019f3f433f885d1eb5b7169fc
CRs-Fixed: 2793360
2020-10-20 00:53:14 -07:00
Bapiraju Alla
bc159feb4e qcacmn: Use wmi msg length to allocate WMI buffer for QMI events
For QMI events, recevid QMI event length is used to allocate wmi buffer
using wmi_buf_alloc. The received QMI event length includes WMI head
room and wmi_buf_alloc also try to reserve WMI head room again.
Because of this, WMI buffer allocation is exceeding max WMI msg length.

To resolve this, use length of the received actual WMI msg to allocate
WMI event buffer using wmi_buf_alloc.

Change-Id: Icd259988c4b1091580a35aaf2c3fabc606e0f2a9
CRs-Fixed: 2786326
2020-10-16 13:46:43 -07:00
Surabhi Vishnoi
e906b00a65 qcacmn: Fix the incorrect check in is_service_enabled_tlv
Many firmware do not send wmi_ext_service bitmap in wmi_ready event
so the ext_service_bitmap will be empty in such cases. So the condition
in the is_service_enabled_tlv to check for wmi_ext_service bitmap
and return false is wrong as wmi_ext_service bitmap support is not
necessity. This condition leads to incorrect behavior in cases when
firmware do not support wmi_ext_service bitmap as is_service_enabled_tlv
returns false for every service.

Fix the above failure by addition of condition check for wmi_ext_service
bitmap only when wmi_ext2_service bitmap is supported by firmware.

Change-Id: I94d0b65e640d44f41d14de889955a6d6330e88b2
CRs-Fixed: 2786491
2020-10-13 08:53:32 -07:00
Balaganapathy Palanisamy
766838ebaa qcacmn: Reset WMI sequence counter after recovery
Reset the WMI sequence counter after FW recovery to avoid
false assert due to CE pending packets freed in htc layer
instead of WMI completion handler.

CRs-Fixed: 2787424
Change-Id: I109ff56655e5fb428aca637e6420efed5943b3f7
2020-10-13 04:13:39 -07:00
Karthik Kantamneni
e26cc77333 qcacmn: Cleanup WMI DIAG over CE7 change
Cleanup changes for WMI DIAG over CE7 code

Change-Id: I4b2718e37ba16d62b585aa26c56213698078e25a
2020-10-13 04:13:36 -07:00
Alan Chen
bc0d7713ed qcacmn: Remove code relating to ocl_cfg
As part of removing gOclCfg ini, remove code used for it that is
no longer needed.

Change-Id: I00c32988cb3b852381be9810377aeefdd22454db
CRs-Fixed: 2791469
2020-10-13 00:08:22 -07:00