Commit Graph

660 Commits

Author SHA1 Message Date
Harsh Kumar Bijlani
725ee94dca qcacmn: Fix wifistats issue for WIN
For WIN, a specific raw event handler is used for handling
WMI_CTRL_PATH_STATS_EVENTID received from FW.

As a part of control path stats infrastructure, event handler
for WMI_CTRL_PATH_STATS_EVENTID is different and this results
in wifistats functionality break for WIN side.

Make changes to use WIN specific event handler.

Change-Id: I2ac677c3ca55cd783734d1137c39b8ee1d5dcbf5
CRs-Fixed: 2878466
2021-02-18 07:47:10 -08:00
Gururaj Pandurangi
901a17b4ae qcacmn: Add service bit to support backward compatibility
The host will send TPC power to FW via the new WMI cmd
WMI_VDEV_SET_TPC_POWER_CMDID going forward instead of
WMI_VDEV_PARAM_TX_PWRLIMIT to accommodate 6GHz channels.
But, to support backward compatibility for New Host+old FW
the TPC power will be sent to FW via legacy WMI cmds
WMI_VDEV_SET_PARAM_CMDID (during initial connection) or
WMI_VDEV_PARAM_TX_PWRLIMIT (power value change during RRM
req/bcn processing from connected AP) with the help of a
service bit WMI_SERVICE_EXT_TPC_REG_SUPPORT.

Change-Id: I22e11ff847cd384fac8ea0061e5df42cea0c8de8
CRs-Fixed: 2874245
2021-02-16 23:52:04 -08:00
Karthik Kantamneni
93f7aa1869 qcacmn: Fix DBR srng undefined address passed to F.W
DBR srng details are not sent properly to F.W via WMI_DMA_CFG_REQ
msg, this leads to F.W accessing undefined address.
Fix this by passing DBR srng details properly.

Change-Id: I15b393ad809dc0757e3637558f0bddd05530149d
CRs-Fixed: 2861621
2021-01-25 17:00:49 -08:00
Rajasekaran Kalidoss
89296baefb qcacmn: Add handlers for wmi_pdev_cp_fwstats_eventid
Add common target_if event handler for wmi_pdev_cp_fwstats_eventid
from the control path stats infrastructure of firmware and register
with the wmi.

CRs-Fixed: 2856380
Change-Id: Ia16e34c4dc1e12b817258c5e6d617a8cb560cf5b
2021-01-22 07:36:34 -08:00
Edayilliam Jayadev
6ed59fa1e3 qcacmn: Initialize agile Spectral capability for legacy targets
TLV targets advertises the agile Spectral capability in the
chain mask table of extended service ready event.
For legacy targets, mac phy capabilities, which holds the
chain mask table is null. This leads to a load time crash
for some legacy platforms. To fix this, initialize
agile Spectral as disabled for the targets which doesn't
support extended service ready message.

CRs-Fixed: 2854348
Change-Id: I09a64259b31e3e5eb0441f35dbb9451dec001780
2021-01-22 05:31:40 -08:00
Shiva Krishna Pittala
840f5fa192 qcacmn: Modification of fields in version 2 of Spectral reports
Following fields in the Spectral FFT report have been modified in the HW
in the version 2 of the Spectral report, reflect the same at the Host.
	- fft_radar_check
	- fft_peak_sidx
	- fft_chn_idx
	- fft_base_pwr_db
	- fft_total_gain_db

CRs-Fixed: 2855909
Change-Id: I8dd190cae8da260d1fb639342ca980285bfd3d0e
2021-01-22 01:33:11 -08:00
Jeevan Kukkalli
e1eacc4734 qcacmn: Add peer ext stats enable/disable tx ops
Add function to send peer extended stats enable/disable
command to target.

Change-Id: I82e1a96090f0984f6b6864dbeed9120f3b2ba70a
2021-01-19 01:52:14 -08:00
Pavankumar Nandeshwar
ff041723c7 qcacmn: change qcn9100 to qcn6122 in target_if
Change the name of target type qcn9100
to qcn6122 target_if.

Change-Id: Icfdcd2c8d872b5305687884b7d9186fb85274bd4
CRs-Fixed: 2849577
2021-01-18 21:45:42 -08:00
Adwait Nayak
2a0231fa54 qcacmn: Add dma length sanity check
Add sanity check for CFR payload length in case of QCA5018
before relaying CFR data buffers to user space.

Change-Id: I81f37bebd3b9372606906fc87ce8ee90fe4809a1
CRs-Fixed: 2855173
2021-01-16 12:57:35 -08:00
Adwait Nayak
c2a2145497 qcacmn: Modify number of buffers in Relay FS
Bring down number of sub buffers in Relay FS from
470 to 255. Earlier 470 buffers were introduced to
maintain 2MB uniformity across platform for relayfs.
But, as IPQ5018 is 512M platform and having 255
buffers is sufficient enough to hold CFR data,
we have brought down the number to 255.

This saves 1MB memory.

Change-Id: Ibbd6926c6712b871e8174e44bd24abf703a8e736
CRs-Fixed: 2855173
2021-01-16 12:57:29 -08:00
Lincoln Tran
323288debd qcacmn: Expose WMI command in tgt_if
Expose the API to send WMI_SET_TPC_POWER_CMDID within the target_if
module. Register the callback under tx_ops.

Change-Id: I1d075df717cff997e7ac85884fe587ed298cbb28
CRs-fixed: 2849695
2021-01-15 14:38:44 -08:00
Lincoln Tran
c8d397e920 qcacmn: Implement chan_list processing for new WMI event
Add functions to handle the new WMI event,
WMI_REG_CHAN_LIST_CC_EXT_EVENTID. This includes processing new
data regarding standard power, low power indoor, and very low
power Clients and APs.

Process the regulatory rules from FW to populate the new 6G
channel lists. Fill in the current channel list with the
correct 6G master channel list. Copy other information from
the event into the regulatory private objects as needed.

Change-Id: I0c2001d809e4f0b292bac866780faa2850b1a8b1
CRs-fixed: 2799403
2021-01-12 20:09:53 -08:00
Rajasekaran Kalidoss
caa1764721 qcacmn: Register cp stats legacy ops
Currently there is no support to register both common cp stats
ops and MC specific cp stats ops. Add support to register common
ops and MC/WIN specific cp stats ops.

Change-Id: Ibaee9da8b1ce3185161821f2be751d8bb4bf10e2
CRs-Fixed: 2851235
2021-01-12 17:44:42 -08:00
Deeksha Gupta
21ce9cf146 qcacmn: Prevent link down for SAP on non DFS channel
In SAP on non DFS channel, there are double votes for PCIe
link down and later if there is PCIe link up, this counter
sends D3 WoW case instead of D0 WoW case to firmware.

To fix this, In vdev restart case, if SAP is on non DFS
channel and previously it was on DFS channel then vote
for PCIe link down and if SAP is on DFS channel and
previously it was on non DFS channel then vote for PCIe
link up. Also, the PCIe link down should be needed if
vdev stop response is for DFS channel.

Change-Id: I817ffceb482091b8d9c5441d80abb43b7d0f866b
CRs-Fixed: 2849706
2021-01-09 01:36:51 -08:00
Shwetha G K
42a2faa714 qcacmn: Extract additional info to cfr metadata
Extract agc gain information, CFO & rx_start_ts from
rx status and cfr peer capture event to CFR host metadata

Change-Id: Id896554f1da6920bd3eeced1298b07857d41a68b
2021-01-07 08:17:56 -08:00
Edayilliam Jayadev
9b98e19b51 qcacmn: Add Spectral disabled checks in some APIs
Add Spectral feature disable checks in some APIs
used by other modules.

CRs-Fixed: 2845252
Change-Id: I74d66da2aa85ab0f116ad1a6d2e859f3ee8eeeb9
2020-12-30 07:06:41 -08:00
Edayilliam Jayadev
445c0a42c3 qcacmn: Fix return values of Spectral target APIs
Return type of "target_if_is_spectral_active" and
"target_if_is_spectral_enabled" is bool. Wrong return values
are send for this APIs in case of errors.

CRs-Fixed: 2845250
Change-Id: I2344676a1ada51e041bb5f7acac8aa22847bee5c
2020-12-30 07:06:33 -08:00
Edayilliam Jayadev
80a12b81ed qcacmn: Skip init/deinit/config if Spectral is disabled
If Spectral scan is disabled(agile and normal mode disabled)
skip init/deinit of Spectral module. Also avoid user requests
to configure/start/stop scan. If either agile or normal mode
is disabled block user requests for that mode alone.

CRs-Fixed: 2840335
Change-Id: I81148e5580fe4bf991b97cd086c8e3a9ca78e77d
2020-12-30 07:06:29 -08:00
Edayilliam Jayadev
b3affda43a qcacmn: Add APIs to check Spectral feature is disabled
Add utility APIs to check Spectral scan is disabled for
a given pdev/psoc/mode.

CRs-Fixed: 2840317
Change-Id: I6820cfc056c697434a138ddf9d8d93b5796a4722
2020-12-30 07:06:24 -08:00
Edayilliam Jayadev
3e679f9176 qcacmn: Add APIs to init Spectral feature caps in the upper layer
Add APIs to init Spectral feature caps in the upper layer of the
Spectral module.

CRs-Fixed: 2840249
Change-Id: Idfb34a9eec3a66c6d193be7bb828eeec30548ae7
2020-12-30 07:06:20 -08:00
Edayilliam Jayadev
19aaca7ff9 qcacmn: Add target if APIs to initialize spectral feature caps
Add target if APIs to initialize normal and agile Spectral
feature caps for a pdev.

CRs-Fixed: 2840247
Change-Id: I6c5385c2050007a5ff3f668ab3d6176328294549
2020-12-30 07:06:16 -08:00
Edayilliam Jayadev
dac2af9a3b qcacmn: Add APIs to get Spectral scan capability
Add APIs to check the agile and normal Spectral scan
capability of the target. This information is derived from
the advertisements from halphy via WMI events.

CRs-Fixed: 2840227
Change-Id: I2aae79b3342d8d74a1f4c00e813cae843a71106a
2020-12-30 07:06:12 -08:00
Edayilliam Jayadev
b3e677f722 qcacmn: Add WMI API to Spectral module's interface
Add WMI API "wmi_service_enabled" to Spectral module's
interface.

CRs-Fixed: 2840141
Change-Id: I2cb6363fd37c858f2a84ba1904c89033720d1a0a
2020-12-30 07:06:04 -08:00
Shiva Krishna Pittala
8f4dceb4bc qcacmn: Direct Buf Rx changes to support big-endain platform
Use the hal_srng APIs that handle byte-order conversion of ring pointers
for big-endian platforms.

Change-Id: I2664636d5d2a1abfd7b643ea4c4d63d328a9880f
CRs-Fixed: 2845047
2020-12-28 13:07:06 -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
Shiva Krishna Pittala
ee5f45a176 qcacmn: Read the Direct Buf Rx tail pointer in the Host order
Direct Buf Rx has a source ring to communicate with the target.
The target updates its tail pointer in little-endian format and this update
doesn't go through any byte-order conversion at the target. On a big-endian
Host platform, this tail pointer will be read in reverse order of bytes.
To fix this, convert the tail pointer to the Host order before using it.

Change-Id: Ibcaf3d7507910ea81eeb895772241ab9861ee45a
CRs-Fixed: 2843259
2020-12-22 10:44:16 -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
Shiva Krishna Pittala
8f049e633b qcacmn: Spectral changes to support big-endian Host platforms
WLAN chip components are little-endian based. When such a chip is attached
to a big-endian Host platform, there will be a mismatch in the order of
bytes for the data that is transferred between the Host and target.

Spectral HW module transfers the Spectral report directly to the Host DDR.
This transfer doesn't go through any byte-order conversion at the HW side.
So, to avoid invalid reads at the Host side on a big-endian platform,
convert the Spectral report to the Host byte-order before using it.

Change-Id: I742537f3a95ffca2e12b83535e83e2870ad06b10
CRs-Fixed: 2838371
2020-12-18 13:35:46 -08:00
Pavankumar Nandeshwar
37a9d7cf5c qcacmn: add CFR changes for QCN9100
Add CFR related changes for target type
QCN9100

Change-Id: I44f7a521fb38f883b6e1a6a71e39805a1da69687
2020-12-17 03:05:28 -08:00
suresh velagapudi
e3d67b3edc qcacmn: Sanity Check to avoid NULL pointer dereference
If module is not registered for dbr in any platform it
results into  Null pointer dereference.

Added Sanity check to avoid Null pointer dereference for
cfg80211tool wifi0 g_dbr_ring_status.

Change-Id: I9e68dfc9d58d70693184f53913cd7f2324d788c1
2020-12-09 10:55:31 -08:00
Shiva Krishna Pittala
53b3234b8f qcacmn: Read only the useful 2 bytes of an FFT bin in pack-mode 0
FFT bin is 10-bit wide in Spectral pack-modes 0 and 1. However, HW packs
just one FFT bin in a 32-bit DWORD by adding extra padding bits in
pack-mode 0. Currently, the Host reads the entire 32-bit DWORD to figure
out the FFT bin value. Instead, read the only useful bytes i.e.,
least significant 2 bytes of a DWORD. This approach is efficient,
especially on a Host that implements a byte-swap mechanism on FFT bins on
a big-endian Host.
Also, while dumping FFT bins for debug purpose, print the first 2 bytes of
an FFT bin in pack-modes 0 and 1.

Change-Id: I20ca8c4905671e80251dca07f80ce17801b98f5c
CRs-Fixed: 2831530
2020-12-08 11:16:32 -08:00
Sheenam Monga
0e8f8132c2 qcacmn: Handle CSA_SWITCH_COUNT_STATUS_EVENTID
Currently, host decrements beacon switch count and sends
channel switch frame every time until count becomes 0 this
may introduce sync issue between fw and host.

To avoid sync issue csa switch count is offloaded to fw. fw
will send CSA_SWITCH_COUNT_STATUS_EVENTID once beacon count
becomes 0 and  host will send vdev restart once it recives
CSA_SWITCH_COUNT_STATUS_EVENTID.

Change-Id: I60238e8e83b56ca4c6490f9516d673d14ef9c323
CRs-Fixed: 2831356
2020-12-08 09:21:37 -08:00
Shiva Krishna Pittala
d78db319d7 qcacmn: Direct DMA changes for big endian Host
WLAN chip components are little-endian based. When such a chip is attached
to a big-endian Host platform, there will be a mismatch in the order of
bytes for the data that is transferred between the Host and target.

Direct DMA framework writes 64-bit values to its DMA ring entries.
These DMA ring entries are present in the shared memory between the Host
and the FW and the data transfer doesn't go through any copy engine.
So, to avoid invalid reads at the FW side on a big-endian platform, write
ring entries in little-endian format so that the FW reads them correctly.

Change-Id: I9c9189f914fdda335723c25fc05484487985447c
CRs-Fixed: 2828746
2020-12-07 07:06:43 -08:00
sheenam monga
0d42f3216a qcacmn: Read csa_beacon_template service
check csa_beacon_template service and set
WLAN_SOC_CEXT_CSA_OFFLOAD/25th bit of
soc_fw_ext_caps in psoc if service is
supported by fw.

Change-Id: I8dca74c805cc8696f261e0f791818bca579c80c8
CRs-Fixed: 2826451
2020-12-03 10:52:03 -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
Yu Wang
ca591b0db7 qcacmn: move component 'coex' to qcacld project
'coex' component is MCC specific, move to qcacld project.

CRs-Fixed: 2721763
Change-Id: I271301c28748f6b14afb59e105cc9f418e43a9c4
2020-11-24 22:51:16 -08:00
wadesong
e2d233c757 qcacmn: Fix a KW issue in crypto set function
In function target_if_crypto_set_key(), array pn's size is 16,
while params.key_rsc_ctr's length is 8, so the length of src
buffer(params.key_rsc_ctr in this case) should be used when
copying data to dest buffer(pn).

Change-Id: Ifa9156963c3da0234dbf8755a4d1f7bf3b96d0ff
CRs-Fixed: 2822715
2020-11-21 02:20:23 -08:00
Jhalak Naik
04188da78f qcacmn: Cap the FFT bin values to 255
FFT bin values can span 10 bits for HKv1, HKv2 and Pine.
This change is to cap the values to 8 bits for such case
on these platforms.

Change-Id: I144b00b1ed21a3281f79050bb1ab63bd857e47b1
CRs-Fixed: 2804192
2020-11-18 07:46:30 -08:00
Edayilliam Jayadev
f4001e93ea qcacmn: Remove host assert in Spectral Rx path
In Pine 160/165 MHz following are the expected sequence of events.
    1. Start scan WMI command
    2. FW param WMI event
    3. Direct DMA completion WMI events
If 3 and 2 happens in the reverse order (i.e., host receives a direct
DMA completion event before receiving a FW param WMI event), host assert
will be triggered.

This change removes the assert and drops the Spectral reports till
FW param WMI event is received.

CRs-Fixed: 2812403
Change-Id: I537d0077737baab8d3a8e90bdc4f9138690010bc
2020-11-06 22:50:52 -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
Arun Kumar Khandavalli
d62d1d7186 qcacmn: Add API to get/set target global mode
Add API to get/set the target global mode when the driver
is loaded (or) dynamically switched between modes

Change-Id: I65857ef57a17645da94301e26c0daddc30c5ad79
CRs-Fixed: 2809955
2020-11-05 01:20:50 -08:00
Balaganapathy Palanisamy
1ba65c35d7 qcacmn: Move the resource config command before init command
Move the resource configuration command after initializing
pdev wmi handle and just before wmi init command.

CRs-Fixed: 2801602
Change-Id: I3a476cbbccd5874c79cfa08f1252c728ebc9a5c6
2020-11-02 08:03:41 -08:00
Adwait Nayak
b081974d4d qcacmn: Change return type to QDF_STATUS
Maintain harmony in return type as "QDF_STATUS"
for CFR related APIs.

CRs-Fixed: 2767660
Change-Id: Ie35c104d32452d01d3c05b5059ee1b1bfe535a58
2020-10-28 11:30:14 -07:00
Rakshith Suresh Patkar
4b8e53fb7a qcacmn: Remove QCN9100 from application of fft bin size adjust
fft bin size adjust parameter is no longer applicable for
QCN9100. Remove QCN9100 in the check for setting this paramenter.

Change-Id: Ibff3d2d618e20563add79e65e31a442d8d36ba61
CRs-Fixed: 2804120
2020-10-26 23:37:55 -07:00
Pavankumar Nandeshwar
403a1b89cd qcacmn: Add target type checks in spectral for QCN9100
Add target type checks in spectral for QCN9100
at required places

Change-Id: I21c6c2f3e33245540e754e018098dca9c1fc353f
2020-10-26 23:37:51 -07:00
Wu Gao
9471529a96 qcacmn: Don't reset vdev id if stop spectral scan
Host gets spectral scan data after stopped spectral scan, then it
can't find out current vdev since vdev id is reset when stopping
spectral scan.

Change-Id: I082b784e998a7600c7f8ef14bf67b790942f3a5f
CRs-Fixed: 2779397
2020-10-11 05:06:16 -07:00
Chaoli Zhou
eb134979c1 qcacmn: Add and enable GPIO Component
Add the common GPIO component code for MCC and WIN

Change-Id: Id93629856d42afc433844b568deb2fa63a5b67e6
2020-10-08 15:33:59 -07:00
Visweswara Tanuku
df74860811 qcacmn: Configure TWT AP pdev count for QCA6490
QCA6490 expects twt_ap_pdev_count 2, to bring up twt sap on 2g.
Currently twt_ap_pdev_count is derived from num of radios and is
1 in case of MCC.
Configure twt_ap_pdev_count value equal to number of phy
advertised by firmware in wmi service ready ext event, configure
under flag WLAN_TWT_AP_PDEV_COUNT_NUM_PHY if defined in kbuild

Change-Id: Ib3fa81d140b473daa253e32cde2e11aad1b78b4d
CRs-Fixed: 2786512
2020-10-06 12:03:18 -07:00
Shwetha G K
bc3e92d1d6 qcacmn: Print oneshot/periodic CFR failure stats
Print oneshot/periodic CFR failure stats as well during CFR stop

Change-Id: Id81f0b79fd59e11c8170855aded88af7870162b3
2020-09-28 03:35:03 -07:00
Edayilliam Jayadev
8c77df3b7a qcacmn: Fix synchronisation between process context and tasklet
Spectral parameter state information is accessed in both
process context and tasklet context. Currently
qdf_spin_lock/qdf_spin_unlock is used to protect these data structures.
This can lead to deadlock in the scenario where the process holding the
lock gets preempted by the tasklet. To avoid this use
qdf_spin_lock_bh/qdf_spin_unlock_bh.

CRs-Fixed: 2776902
Change-Id: I6d188e55d5066241b5f38a655f4a587c9edb0b8b
2020-09-18 10:38:10 -07:00