Commit Graph

89 Commits

Author SHA1 Message Date
Edayilliam Jayadev
b3a66311cc qcacmn: Add Agile channel width to SAMP message
Add a new member to SAMP structure describing the channel width of
Agile Spectral scan.

Change-Id: Ib27fe9ed63bf8f89c59762150fb58943e6bcf7ea
CRs-Fixed: 2582670
2019-12-12 18:14:27 +05:30
Hariharan Basuthkar
379ebfe4e3 qcacmn: Use channel frequency instead of channel number
1) Add the API wlan_reg_get_5g_bonded_channel_and_state_for_freq
   that returns  the state for a 5G or 6G channel frequency,
   based on the channel width and and state of the bonded channels.

2) In the API target_if_calculate_center_freq, remove the instances
of IEEE channel number, and provide regulatory support, with the
channel frequency based structure - bonded_channel_freq and the API -
wlan_reg_get_5g_bonded_channel_and_state_for_freq.

3) Remove the usage of band_info and replace it with reg_wifi_band within
the target_if of the spectral module.

Change-Id: If5108b55097208d33fafb48968ea8b6dc83011fa
CRs-Fixed: 2571906
2019-12-09 20:38:52 -08:00
Shwetha G K
7887593414 qcacmn: Log Spectral FFT timestamp WAR parametrs
Log Spectral FFT timestamp WAR related parameters

Change-Id: I11e3107f41049e9fb05c3f9f7960279b88392598
CRs-Fixed: 2556803
2019-12-03 04:52:57 -08:00
Shwetha G K
389eae6224 qcacmn: Check discrepancies in Spectral timestamps
If the timestamp field in the current Spectral report is equal to the
timestamp field in the previous report, assert the FW.

Change-Id: Idb32807f0cdd59a2eaab5dd6c1e62567fd5a45d0
CRs-Fixed: 2478593
2019-12-03 03:26:32 -08:00
Shwetha G K
8db4b4ac32 qcacmn: Control path support for Spectral DMA debug
All gen III chipsets use Direct-DMA mechanism to copy Spectral reports to
the Host for further processing. This mechanism involves ring and buffer
management in the Host, FW, and uCode, where improper/incomplete DMA and
improper tail update issues are seen. DBR framework provides support to
debug such issues. Add Spectral control path support to facilitate the
configuration of these debug options.

CRs-Fixed: 2478596 2478595
Change-Id: I094616c4137145389b6984ccab933e5ebd0aa1ab
2019-12-03 03:26:22 -08:00
Shwetha G K
0c000df15e qcacmn: Add poisoning support for Spectral DDMA buffers
All gen III chipsets use DDMA method to copy the spectral reports to
the Host. It is possible that the buffers can be improper/incompletely
DMAed, which leads to wrong values being present in the Spectral report.
To detect improper DMA, the DBR framework has the support to poison the
buffers before handing them over to the target. This framework expects
the buffer owner modules to check for poison values in key fields.
So, validate the Spectral reports and assert the target upon failure.

Change-Id: I519bf8abd87cfc9758fe7d126a195f39656d8ecc
CRs-Fixed: 2478592
2019-12-02 00:43:04 -08:00
Edayilliam Jayadev
52c9b9fe51 qcacmn: Hard code properties of Spectral parameters
Till a FW advertisement which specifies the properties of
Spectral parameters is in place hard code these values
in driver.

CRs-Fixed: 2569385
Change-Id: I02c042946ff30771df6a66f49004c01aa5d53ac0
2019-11-26 02:15:52 -08:00
Edayilliam Jayadev
f3cc90e236 qcacmn: Check aSpectral capability for current chainmask
Reject Agile Spectral scan request if the current chainmask
doesn't have Agile capability.

CRs-Fixed: 2565027
Change-Id: I0ac79f9846ef015ec16500ae29528c8e5d03da3e
2019-11-20 10:44:54 -08:00
Edayilliam Jayadev
68c2881b76 qcacmn: Init Agile Spectral capability based on HW generation
Initialize Agile Spectral capability from chain mask table for
3rd Spectral generation chipsets onwards. Chipsets before 3rd
generation doesn't support Agile Spectral.

CRs-Fixed: 2566328
Change-Id: I46fa7a9232f610fce06cffd67d81a59b7d6fead4
2019-11-16 03:51:20 -08:00
Edayilliam Jayadev
97b8676b4e qcacmn: WMI changes for Agile Spectral
1) Add Spectral scan mode and agile center frequency in WMI
   commands to indicate the current mode.
2) Obtain the Agile Spectral capability from the chain mask table.

CRs-Fixed: 2455967
Change-Id: I88ba6fc1ecf9b530a6b516d0c1e4ce88702c6d1f
2019-11-12 04:03:58 -08:00
Krishna Rao
5304724e59 qcacmn: Add Agile Spectral frequency to Spectral SAMP message
Add Agile Spectral frequency to Spectral SAMP message and populate the
same. This coexists with the pre-existing operational frequency in
SAMP message for the sake of flexibility.

Change-Id: Iadb8efeaac924df5b0ac9a83f630206b2ef93052
CRs-Fixed: 2545763
2019-10-27 17:28:49 -07:00
Edayilliam Jayadev
454c6d7be3 qcacmn: Restrict Agile Spectral start scan in SBS mode
Ensure that at a time only one Agile Spectral scan is
happening across all the 5G pdevs in SBS mode.

CRs-Fixed: 2517522
Change-Id: If31a4451b82ce1d7d8a46bc604ca91bf4b6dac29
2019-10-06 23:54:53 -07:00
Edayilliam Jayadev
b38cb7a8f0 qcacmn: validate user given agile center frequency
Validate user provided agile center frequency and throw
an error if it is invalid.

CRs-Fixed: 2529280
Change-Id: Ibb43dda98d29d8bc8360d1a204c67b64ca987ca6
2019-10-03 12:34:44 -07:00
Krishna Rao
54a3931f9f qcacmn: Add and populate Spectral pri80 indication
Spectral generation III hardware sets the Spectral primary 80 MHz
(pri80) indication in Spectral Summary reports to inform software
whether the Spectral sample was gathered on the primary 80 MHz
segment. But this may also be set in the case of Spectral scans
intended to be carried out on the Agile frequency or secondary 80 MHz,
due to a channel switch of the Spectral chain from Agile/secondary 80
MHz to primary 80 MHz. Software can ignore samples for which the pri80
indication is set for Agile mode or for secondary 80 MHz in normal
mode.

Add and populate fields for pri80 indication, one intended for primary
80 MHz/Agile and the other for secondary 80 MHz.

CRs-Fixed: 2524733
Change-Id: If592d664cebfe1e08026e55d4031c74d9a9db2e0
2019-09-28 23:41:01 -07:00
Edayilliam Jayadev
7a1d8072a3 qcacmn: Reject aSpectral start scan request if aDFS is enabled
Reject Agile Spectral start scan request from user
space if Agile DFS is running on one of the pdev.

CRs-Fixed: 2517517
Change-Id: If648c53946d1bca1de07a335db67f204de41ba5f
2019-09-23 06:04:20 -07:00
Edayilliam Jayadev
b75b9850cf qcacmn: Check Agile span overlaps with operating band
Check whether Agile span overlaps with the current
operating span. This check is done at the time of
start scan and Spectral parameter setting.

CRs-Fixed: 2521554
Change-Id: I9f28ca0a02bd5abf6acdff89301a0c9343e34887
2019-09-23 06:04:05 -07:00
Wu Gao
d45d248743 qcacmn: Register to direct buffer rx with QCA6390
Register spectral to direct buffer rx with QCA6390.

Change-Id: Ib07fc36faf6ba4cc5aff9203d70aef732bb703e3
CRs-Fixed: 2497826
2019-09-16 00:38:24 -07:00
Edayilliam Jayadev
499d29e713 qcacmn: Add API to get center frequency of sec80 seg
Add helper API to get the center frequency of secondary 80 MHz
segment. Make this API available to Spectral target if layer
via rxops.

CRs-Fixed: 2523690
Change-Id: If1cad90d9b27d1461e802b921aecda07031b1e0b
2019-09-11 18:40:28 -07:00
Krishna Rao
851c69d5bb qcacmn: Rename and use macros for operations on sscan summary
Rename some of the functions and structures related to Gen3 Spectral
summary report to clarify which type of Spectral report they operate
on. Use macros instead of hard coded values to specify size and
position of some fields while extracting them from Gen3 Spectral
summary report.

CRs-Fixed: 2518700
Change-Id: I9d646b60bc5314b408b39a7a118162af8d8fc7b2
2019-09-06 10:19:30 -07:00
Edayilliam Jayadev
f2ae8b7e11 qcacmn: Add Spectral parameter properties
For each parameter for each mode add a flag which
indicates whether that parameter is supported.
Similarly one more flag which indicates whether a
parameter needs to have same value for all the modes.

CRs-Fixed: 2500514
Change-Id: I37099bb622d7d6ccf823f78f6d119b9abf78ec21
2019-08-29 12:51:40 -07:00
Edayilliam Jayadev
9217a212bb qcacmn: Add error handling in the Spectral control path
Add an attribute which describes the error code
in the response to set config, start scan and stop
scan.

CRs-Fixed: 2500481
Change-Id: I491cd6e061d2d08ceb4d9af2a7de5223e229c280
2019-08-29 12:51:37 -07:00
Shiva Krishna Pittala
71bc664165 qcacmn: Add a callback to the FW assert function in Spectral module
As Spectral module is loaded before qca_ol module and the FW assert
function is compiled in qca_ol module, FW assert function will be an
unknown symbol when used inside Spectral module.
To fix this, register a callback to the FW assert function and
use that callback in Spectral module.

Change-Id: I6ca18b151e86b93de9988bc6026894617f2168a2
CRs-Fixed: 2507522
2019-08-14 14:30:26 -07:00
Edayilliam Jayadev
151c4bb3d6 qcacmn: Extend timestamp WAR for agile mode
Target will be sharing the time taken for reset in the
first Spectral report after reset. The reset delay value
is common for all the Spectral modes. Host updates
the timestamp WAR offset variable for all the Spectral modes.

CRs-Fixed: 2504798
Change-Id: If7d47a434054f220b0717f7d8939f9f8922af30f
2019-08-11 02:11:44 -07:00
Nandha Kishore Easwaran
5d3475b985 qcacmn: Initial changes for pine
Add device ID change and target type checks for pine.
Also remove memory war added for Hk emulation.

Change-Id: Idf531a48a03202d4fb241a92a1d671ee2b94cfbd
CRs-fixed: 2453899
2019-08-11 02:11:41 -07:00
Krishna Rao
5dd99baa21 qcacmn: Rectify Spectral hexdump output
The Spectral hexdump output would have individual hexadecimal values
on each line due to a transition to the QDF framework carried out in
the past. This is difficult to understand. Rectify the hexdump output
to have sixteen hexadecimal values (and their corresponding ASCII
representation) on each line. As of now, this hexdump functionality
continues to be maintained specific to Spectral in order to allow for
Spectral specific low level annotations to be added as and when
required.

CRs-Fixed: 2502690
Change-Id: I5618e64c37db5b14ede2d91b2f2af5d0a60178c6
2019-08-05 10:55:54 -07:00
Krishna Rao
61585b05a2 qcacmn: Add Spectral frequency to read/write logs
Add Spectral frequency to functions which log read and write of
Spectral parameters.

Change-Id: I7c66676df4667d1a7b7b46fcf33e4c10815c4b28
CRs-Fixed: 2502703
2019-08-05 07:50:01 -07:00
Edayilliam Jayadev
8e74a62e72 qcacmn: Change Spectral control path to support Agile mode
Modify Spectral control path APIs to support Agile mode.

CRs-Fixed: 2450620
Change-Id: Id6cf48c1288b157932ab5ce0535293e466a87783
2019-07-27 00:31:31 -07:00
Himanshu Batra
29bc991911 qcacmn: Replace void * wmi_hdl with abstract type (2/10)
Replace void * wmi handle with abstract type handles
provided by wmi component.

Change-Id: Id12d6446aed8fd389b8677f08765bb31cabf2fb0
CRs-Fixed: 2475444
2019-07-18 01:07:23 -07:00
Basamma Yakkanahalli
dcfa1c7012 qcacmn: FFT bin size WAR to support 4 bytes for QCA6018
Spectral scan for QCA6018 failed due decoding the FFT bin in 2 bytes.

HWS team confirmed that for QCA6018, the FFT bin is in 4 bytes
representation.
Fixing this by modify the fftbin size WAR for QCA6018 to decode
4 bytes FFT bins.

Change-Id: I60e07370f7191544269d52640ae072f2a41f3833
CRs-Fixed: 2487055
2019-07-11 04:53:48 -07:00
Edayilliam Jayadev
cd6f190963 qcacmn: Make RX path changes for Agile Spectral
Change Spectral report processing logic to handle
Agile Spectral reports. 160 MHz state machine is not
affected by Agile Spectral reports.

CRs-Fixed: 2458359
Change-Id: Iead6427f57edddd61f7d64a961cc6d936d54ab9e
2019-06-21 03:09:19 -07:00
Edayilliam Jayadev
7c72252ec8 qcacmn: Free outstanding skbs on Spectral detach
While detach if there are any outstanding skbs free them.

CRs-Fixed: 2470780
Change-Id: Ic9ee568a1af96b2535cc2a30747ac8e5190e1be6
2019-06-14 12:58:27 -07:00
Edayilliam Jayadev
64e320b697 qcacmn: Bound check while setting Spectral params
Do bounds check for some Spectral params and throw an
error in case of any out of bound inputs.

CRs-Fixed: 2449740 2449704
Change-Id: Ibc3159267076fa355ab3e50f2d8b0b1524ae444c
2019-05-21 16:45:23 -07:00
Edayilliam Jayadev
8a0228a1f3 qcacmn: Make sig/tag mismatch Spectral logs rate limited
Rate limit sig/tag mismatch related Spectral logs
so that it doesn't effect the stability of the system.

CRs-Fixed: 2433581
Change-Id: I860089419836f1a6203abe0be5df62eab9dd546b
2019-04-27 14:38:45 -07:00
Edayilliam Jayadev
79a5edccee qcacmn: dont send Spectral stop WMI if Spectral scan is not in progress
Before sending Spectral stop WMI to FW check whether Spectral
scan is in progress. When all vdevs are in down state host driver
will send a stop Spectral scan command to FW. In that scenario there
is a possibility that stop Spectral scan WMI message may go to FW
even though Spectral scan is not active. To prevent this we add a check
in stop Spectral scan routine to send WMI message only if
scan is in progress.

CRs-Fixed: 2424020
Change-Id: I2119935759c40f62df75574b6a29174973f2703f
2019-03-30 08:07:23 -07:00
Jeff Johnson
eee26f7b76 qcacmn: target_if: Replace explicit comparison to NULL
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within target_if replace any such comparisons with
logical operations performed on the pointer itself.

Change-Id: I436bb3ec12d331df2260507b6a9afbab84a8a54f
CRs-Fixed: 2418256
2019-03-29 00:48:05 -07:00
Srinivas Girigowda
2751b6d2b3 qcacmn: Consolidate multiple MAC_ADDR_LEN to QDF_MAC_ADDR_SIZE
Consolidate multiple (redundant) MAC_ADDR_LEN to QDF_MAC_ADDR_SIZE
CDP_MAC_ADDR_LEN
OL_TXRX_MAC_ADDR_LEN
DP_MAC_ADDR_LEN
HTT_MAC_ADDR_LEN
IEEE80211_ADDR_LEN
DEFRAG_IEEE80211_ADDR_LEN
ETHER_ADDR_LEN
HAL_MAC_ADDR_LEN
WLAN_MACADDR_LEN

CRs-Fixed: 2406591
Change-Id: I4a87f8ff556920c7b341bdbba99ec43c97b873f4
2019-03-28 16:50:32 -07:00
Edayilliam Jayadev
2675a77901 qcacmn: change few Spectral logs to info
Change the levels of few spectral logs to
INFO so that it won't result in flood of
prints.

CRs-Fixed: 2418342 2418856
Change-Id: Id6a8eed0d5f01f7f44f3caef326b18dc5abcd959
2019-03-20 22:10:17 -07:00
hangtian
9f8f9d68ba qcacmn: Use qdf_mem_zero for zero initialization, target_if part
Use qdf_mem_zero for zero initialization, target_if part.

Change-Id: Id5abc97548cd7728a52b3a55547c0cad6bd56dac
CRs-Fixed: 2378005
2019-02-21 01:47:02 -08:00
Madhvapathi Sriram
0c5bdd7e73 qcacmn: Remove error log for qdf_mem_malloc in target_if files
qdf layer already has the error trace

Change-Id: I2d752fafb6ee805206047bae9711aa0387f22f69
CRs-Fixed: 2376430
2019-02-11 02:30:02 -08:00
Edayilliam Jayadev
d4b7e3b572 qcacmn: Populate spectral capability and send via cfg80211
Populate Spectral capability structure with scaling parameters
from extended service ready event parameters. Send the spectral caps
via cf80211 interface.

CRs-Fixed: 2379652
Change-Id: Id0372bdd40843c2101df32d2e71920027a24909f
2019-02-05 04:02:20 -08:00
Dustin Brown
340c627dcf qcacmn: Remove os_timer_t
os_timer_t is a legacy wrapper around the kernel's timer_list type, and
is incorrectly used directly with qdf_timer APIs. Remove os_timer_t,
replacing instances with qdf_timer_t instead.

Change-Id: I410b7fafad18be01141008b6220fbe34ab07601e
CRs-Fixed: 2388575
2019-02-01 20:11:54 -08:00
Shiva Krishna Pittala
66ae9bef51 qcacmn: Check whether Spectral is disabled upon setting rxchainmask
When Spectral is disabled via INI and the rxchainmask is set for
the radio via iwpriv/cfg80211tool, it results in null pointer access
of target_if_spectral pointer. To fix this, add Spectral feature check
inside target_if_spectral_set_rxchainmask.

Change-Id: Ibd43d3bbc8622d4b8502653b55511bb4667cec7a
CRs-Fixed: 2380653
2019-01-23 21:46:39 -08:00
Shiva Krishna Pittala
ec27e10c2a qcacmn: Remove OL_SPECTRAL_DEBUG_CONFIG_INTERACTIONS macro
Logs of the Spectral WMI interaction prints are under
OL_SPECTRAL_DEBUG_CONFIG_INTERACTIONS macro and is disabled by default.
As the WMI logs are already controllable at runtime from qdf_cv_lvl,
there is no need for OL_SPECTRAL_DEBUG_CONFIG_INTERACTIONS anymore.

Change-Id: I3b89192de4deb420d853631064c20add894fb1e3
CRs-Fixed: 2369846
2019-01-07 19:59:17 -08:00
Edayilliam Jayadev
4c002343ad qcacmn: Time stamp WAR for spectral
Spectral HW time stamp gets reset when a reset happens in
within target. This can potentially result in unpredictable
behaviour during classification. To mitigate this calculated
offset is added to the time stamp value in the FFT report.

HT = Spectral HW timer
AT = Actual time stamp in spectral report
CF = Time stamp correction factor
CT = Corrected time stamp
L = Time stamp in the last FFT report before reset
F = Time stamp in the first FFT report after reset
D = Time gap between the last spectral report before reset
    and the end of reset(This is provided by FW via direct
    DMA framework)

                         ***Target Reset***
                                 ^
                                 |
                            |<---D---->|           time line--->
       _______________________________________________________
       ^                    ^          ^  ^
       |                    |          |  |

HT --> 0                    L          0  F

AT --> 0                    L             F

CF --> 0                    0           (L+D)

CT --> 0                    L          (F+L+D)

Spectral driver corrects the time stamp received from target
using the following formula and sends upwards.

CT(Corrected time stamp) = AT(Actual time stamp) +
                           CF(Correction Factor)

Calculation of Correction factor (CF):-
---------------------------------------
Initialization : CF = 0
CF += (L + D) (Done only for the first spectral report after reset)

This scheme takes care of the wrap around in the 32 bit time stamp
which would have occurred if the timer was not restarted due to
target reset.

CRs-Fixed: 2356382 2355486
Change-Id: I17b55d39eb91eb03b867bcfddaf3eb03d1fc5d1b
2018-12-24 03:32:52 -08:00
Edayilliam Jayadev
db29e57ef8 qcacmn: remove CONFIG_WIN from Spectral module
Remove CONFIG_WIN macro from Spectral module.

CRs-Fixed: 2369720
Change-Id: I67154341497230c66b3c3f5a09894c8b2eff8bff
2018-12-21 10:05:32 -08:00
Edayilliam Jayadev
919727378d qcacmn: Remove duplicate assignment of default values to Spectral params
Remove duplicate assignment of default values
to Spectral params.

CRs-Fixed: 2364567
Change-Id: I77d69c2707ca4295bfdac0ebdb49883c4544f61f
2018-12-13 16:45:58 -08:00
Edayilliam Jayadev
780b60ea90 qcacmn: Remove CONFIG_WIN from spectral
Remove CONFIG_WIN from spectral module to achieve maximum
possible convergence.

CRs-Fixed: 2354105
Change-Id: I59e4d8029fcf096042741573cf020136747e7367
2018-12-11 06:11:13 -08:00
Basamma Yakkanahalli
5f7cfd49c2 qcacmn: Device and Target type support for qca6018
Added target and device type support for qca6018.

Change-Id: I85382bf053d0a5f34cfaf0cca78a4b66b4265989
CRs-Fixed: 2323023
2018-11-27 00:32:00 -08:00
Krishna Rao
cc54e49b78 qcacmn: Add array bounds check and count update for FFT bin array
Add an array bounds check for the FFT bin arrays in SAMP message so
that they do not overflow even if an unexpectedly high FFT bin count
parameter is requested by the caller. Also reflect FFT counts limited
by bounds check into SAMP message. These changes act as an additional
guard sequence - functionality for the calling path itself to reject
samples that exceed the expected FFT bin count or have other
unexpected issues will be added in the future based on target side
profiling.

Change-Id: I4af24f623691cc2c2b04243cb64f05d159f035f6
CRs-Fixed: 2348397
2018-11-16 15:11:47 -08:00
Krishna Rao
8bd4f992f9 qcacmn: Remove temp_samp_msg_len and unnecessary updates to it
Remove unused variable temp_samp_msg_len from
target_if_spectral_create_samp_msg(). This variable does get updated,
but is ultimately unused. By removing it, we save processor cycles
which would otherwise be wasted on the update operations occurring for
each Spectral sample.

Change-Id: Ib5ca5598d5bee6cc15ca72e9e002239d2e76fd6c
CRs-Fixed: 2349113
2018-11-14 04:03:05 -08:00