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
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
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
Validate user provided agile center frequency and throw
an error if it is invalid.
CRs-Fixed: 2529280
Change-Id: Ibb43dda98d29d8bc8360d1a204c67b64ca987ca6
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
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
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
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
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
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
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
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
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
Add device ID change and target type checks for pine.
Also remove memory war added for Hk emulation.
Change-Id: Idf531a48a03202d4fb241a92a1d671ee2b94cfbd
CRs-fixed: 2453899
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
Add Spectral frequency to functions which log read and write of
Spectral parameters.
Change-Id: I7c66676df4667d1a7b7b46fcf33e4c10815c4b28
CRs-Fixed: 2502703
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
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
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
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
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
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
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
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
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
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
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
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
Remove CONFIG_WIN from spectral module to achieve maximum
possible convergence.
CRs-Fixed: 2354105
Change-Id: I59e4d8029fcf096042741573cf020136747e7367
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
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
For HK V2 each fft bin is 2 bytes due to
some HW limitations. To fix this modify the
fftbin size WAR to convert 2 byte fft bins to 1 byte
and forward to applications via SAMP message.
CRs-Fixed: 2319415
Change-Id: I6c27d6804ddaf91ed9e6695e0b21a81115744fff
Add Gen3 Spectral host WAR to remove NULL FFT bins for report mode (1)
in which only summary of metrics for each completed FFT + spectral
scan summary report are to be provided. This would be required on some
Gen3 chipsets (starting with IPQ8074) under the following
circumstances: In report mode 1, HW reports a length corresponding to
all bins, and provides bins with value 0. This is because the
subsystem arranging for the FFT information does not arrange for DMA
of FFT bin values (as expected), but cannot arrange for a smaller
length to be reported by HW. In these circumstances, the host driver
would have to disregard the NULL bins and report a bin count of 0 to
higher layers.
Change-Id: If5fb72805dc80ada0ab617b4b1c2cc9ea497bcf8
CRs-Fixed: 2300251
For generation 3 spectral reports for the 80 MHz segments
come as part of different events. To deal with this a
state machine is added to report handler. Noise floor
value of the lowest chain in the chain mask is populated
in the SAMP message.
CRs-Fixed: 2236331
Change-Id: Ie24426449cf8503c9d7f7c30ca617a6697ca2b5e
In the existing converged component, WMI TLV APIs are implemented in
a generic manner without proper featurization. All the APIs exposed
outside of WMI are implemented in wmi_unified_api.c and all the APIs
forming the CMD or extracting the EVT is implemented in wmi_unified_tlv.c.
Since WIN and MCL have a unified WMI layer in the converged component and
there are features within WIN and MCL that are not common, there exists a
good number of WMI APIs which are specific to WIN but compiled by MCL and
vice-versa. Due to this inadvertent problem, there is a chunk of code and
memory used up by WIN and MCL for features that are not used in their
products.
Featurize WMI APIs and TLVs that are specific to WIN
- Air Time Fareness (ATF)
- Direct Buffer Rx (DBR)
- Smart Antenna (SMART_ANT)
- Generic WIN specific WMI (AP)
Change-Id: I7b27c8993da04c9e9651a9682de370daaa40d187
CRs-Fixed: 2320273
Add new fields such as agc_total_gain, sscan_gainchange
to the Spectral SAMP message.
CRs-Fixed: 2291499
Change-Id: Ia6a9fd742c2ee98fd9d7102f0d8c66dcd22a1614
Clean up spectral, tif and umac component prints by correcting trace
levels for regularly occurring prints and removing newlines from
converged print APIs since qdf_trace_msg appends them by default.
Change-Id: Ib10f1b1c54ecbcb9f4076be7c2c4708359d488e0
CRs-Fixed: 2243843