Report the per chain AGC gain table index used as
part of cfr_meta_data. Add new fields in metadata
accordingly.
Change-Id: I40673f856b1a1ebb0a4a69bf44d4e0817db9cd6f
Changes to derive AoA phase values in RCC mode.
Add AoA phase calibration parameters to pdev_cfr. These
gets filled upon FW WMI event for every channel change.
HW reported AGC gain & these values are used to derive per
chain phase values.
FW to advertise support of this via service flag.
Change-Id: Ie239b939e50c60c5658ed0a82bae3243e5028e77
There is potential risk when starting CFR and resume happens at same
time, so this change adds wake lock for enhanced CFR.
Change-Id: Ifbde12cb73092b7fc4ef517e57051af4ffe7a79f
CRs-Fixed: 2974733
Host add support to send cfr data via nl events to userspace
applications. Host registers callback when user send vendor
command to set transport mode.
Change-Id: Ieed3b6e09d871639af58336074313120d51762e2
CRs-Fixed: 2952096
Host sets num_grp_tlvs based on modified_in_curr_session, which uses
default value - MAX_RESET_CFG_ENTRY. MAX ta ra entries changed from 16
to 4 for QCA6490 and QCA6750, so change MAX_RESET_CFG_ENTRY from
0xFFFF to 0xF here.
Change-Id: Ie057b8763c0126bd0cacab4fd21da9df0d5e71f2
CRs-Fixed: 2957324
This is about CFR feature, set max ta ra entries to 4 for QCA6490 and
QCA6750 base on HW design.
Change-Id: Ief62ac394e3991a896d9bb954289e63ac105e74e
CRs-Fixed: 2939149
Separate the common fields of csi_cfr_header and update
the logic of calculating the cfr_metadata_len.
Move cmn header update code to single place.
CRs-Fixed: 2916901
Change-Id: I97d99df45f667f4ed3b80264b12d3d09a3bcae95
Allow cfr period to be multiples of 1ms for targets like
qcn9000, qca6018, qca8074v2 and qca5018.
For other targets, restrict it to be multiples of 10ms.
CRs-Fixed: 2878062
Change-Id: I7f5638adf8ef39f7b8b681ae6693f5f032217e88
Change the minimum CFR periodicity from 0 / 10ms to 0 / 2ms,
and ensure that the period value is multiples of 2ms.
Change-Id: I9112e47d21cbb40c83852e404bac3ce1b48897a4
CRs-Fixed: 2862591
The logging macros implicitly takes care of embedding function name
in the log, hence there is no need to include __func__ again.
Getting rid of redundant __func__ reduces driver memory footprint.
Change-Id: Ife4d1dbb9bfafa4381f1017e331ddef247c649c2
CRs-Fixed: 2774457
For kernel and driver logs, replace %pM and QDF_MAC_ADDR_STR/ARRAY
with QDF_MAC_ADDR_FMT.
For tx/rx mask, use QDF_FULL_MAC_FMT.
CRs-Fixed: 2763028
Change-Id: I6c56c2040967b279dd31100c4f376f2452146742
The 'timestamp' field in CFR meta data corresponds to TSF
at the reception of PPDU in micro second unit. To capture
timestamp for one shot, periodic and repetitive channel
capture, this field is being used.
case 1:
For one shot and periodic capture, the clock used for
timestamp is private to the target and not visible to host.
So it is being passed by FW to host and the placeholder
being exchanged between Host and target is of 32 bit.
case 2:
In case of repetitive channel capture, the
timestamp is being populated from the received PPDU,
which is 64bit.
To accommodate the timestamp, in both above cases, change
the data type to u_int64_t from u_int32_t
Change-Id: Ifa612bd97dc4f597368daefcd4224b84f2484c03
CRs-Fixed: 2751408
Enable CFR support for IPQ5018.
Calculate stream FS buffer length based on CFR payload,
CFR uCode header and CSI metadata.
Change-Id: Idd903ead75d635ce87ffc0df80e5c32fb62d15aa
CRs-Fixed: 2751408
Repetitive channel capture configurations usually support
16 groups to be confugured. To check if a particular group
is enabled by user, qdf_test_bit is being used here.
qdf_test_bit usually operates with uint32_t and it takes
the argument as unsigned long type. Since,
modified_in_curr_session is declared as uint16_t, and then
typecasted into unsigned long.
Change the data type of modified_in_curr_session
from uint16_t to 'unsigned long' to avoid compiler
issues.
Change-Id: Iec778dc36d5671f2cfb643c9ced1bd2a6104de2b
CRs-Fixed: 2753267
Support a new capture_interval_mode: capture_count, where after
capture_count+1 number of frames, MAC stops channel capture and
waits for capture_interval duration before enabling again.
Add nob(capture_intervalmode_sel) to switch to capture_count or
capture_duration mode in wlanconfig application, where
capture_intervalmode_sel=0 indicates the old capture_durarion
mode where MAC stops channel capture after capture_duration
instead of capture_count. capture_intervalmode_sel=1 indicates
the capture_count mode.
Support MO marking: Current ENH CFR uses the existing MD/MO,
type/subtype filters to filterin the packets with programmed
type/subtype as either MD/MO. But for m_TARA it is also required
to consider the bw/nss/ta/ra setting. Therefore, it is possible
that not all the filtered-in PPDUs have channel capture and lead
to processing of packets which does not have captured data.
To overcome this issue, from QCN9000 onwards, MAC has MO marking
feature added for M_TARA filter mode, where MAC will consider
all TARA group configuration as filterin criteria & provides
an option to HOST to choose either filterin mode as FP or MO.
en_ta_ra_filter_in_as_fp is added to support MO marking.
Based on the discussion between HOST, FW & MAC teams, 0 is the
recommended & default setting for en_ta_ra_filter_in_as_fp.
Add nob to configure en_ta_ra_filter_in_as_fp but do not expose
to user.
Change-Id: I75cd3218fa4308afad21052e4535ef9b8e5a5869
When a one-shot capture is triggered with CFR, the state is not
reset to DISABLED after capture has completed. This affects HW mode
switch behavior because if CFR capture is ongoing (ENABLED), mode
switch is not allowed. This change checks for period to return DISABLED
or ENABLED. Period is 0 in case of one-shot capture.
Change-Id: Iae8727959a1becd3b5f4da166e868c1592910b84
CRs-Fixed: 2735166
For adrastea targets, enhanced CFR is not supported. When only
CONFIG_WLAN_CFR_ENABLE is set, some compilation errors are
observed as CONFIG_WLAN_ENH_CFR_ENABLE is not set true.
Fix these compilation errors when only CONFIG_WLAN_CFR_ENABLE
is set for targets which do not support enhanced CFR.
Change-Id: I96a769d8f10144033e48e123bb68d48a54cdf8ab
CRs-Fixed: 2706904
This API is used to parse the cfr capture metadata received in HTT msg
HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND from firmware. It reads the cfr dumps
from host allocated mem chunks for CFR using offset index received in
HTT msg, populates the CFR dumps into streamfs and updates the read
index of memory chunks allocated for CFR during init.
Change-Id: I2f49e308c3659779b8da7ae1baaceb5bfa968b4e
CRs-Fixed: 2687062
Add the init and deinit CFR pdev api for adrastea target type.
cfr_adrastea_init_pdev api enables the CFR feature if both host and
firmware supports the feature, initialises the cfr pdev structure
and streamfs.
Also during allocation of memory requested by firmware, skip smaller
chunks memory allocation for CFR capture requested memory as firmware
expects contiguous memory.
Change-Id: Ib893dc8a845fea990a11e95e98d8a656f7df12ba
CRs-Fixed: 2687057
CFR component allocate 140 luts but some of platform use 48 of them,
which allocate huge memory at one time and waste memory in some
platform. In low memory case, it may be failed to alloc luts at one
time. So, allocate lut based on number of DBR entry and split memory
allocation.
Change-Id: Id49c3f9a0f81cfa6d639cb72b62bb377911f0e77
CRs-Fixed: 2679470
Retrieve the INI option to disable CFR and store the
same in pdev feature ext caps.
When CFR feature is disabled -
1. Skip pdev/peer cfr object allocations
2. Skip CFR SRNG allocations
3. Skip WMI registration for DBR and TX completion events
Change-Id: I5a7a6ae67d2c3a863b952e00e317c44a71e9fbc1
CRs-Fixed: 2671620
Add option to disable cfr for a pdev through INI.
Since INI is per psoc, bitmap is used to indicate
the set of PDEVs for which CFR needs to be disabled.
Change-Id: Iaff24295c8c3ec702647db24961395b8a7ecf8c4
CRs-Fixed: 2671620
Add a interface to write string of CFR stopping, and indicate to
userspace that CFR has stopped.
Change-Id: Ib1d63cb75cd311b367d5d8100c5c4eb92980392d
CRs-Fixed: 2659373
FW requires to receive WMI_CFR_CAPTURE_FILTER_CMDID with the pdev id
which is based on the working band. It requires srng id when looking
up or releasing DMA address. So add this change to check working band
and set mac id. This is MCL only change.
Change-Id: I763a25b4989607128b2b4c75186eb5bdcd204077
CRs-Fixed: 2641268
Add chip type for QCA6490, and CFR component will indicate chip type
to user space.
Change-Id: Ia3e95e06c8cc86bc30b81906f62f3821606a38f7
CRs-Fixed: 2659553
1. Remove absolute paths to cfr header file.
2. Exclusion of CFR header file is handled in Kbuild,
remove compile flag within file.
Change-Id: I6abdce56716ba17481ccc2e1942754203063e3ad
CRs-Fixed: 2649714
FW may limit the interval and duration during which HW may
use user provided values and attempt to capture.
These values range from 1 us to roughly 16.8 sec.
Max value is 0xFFFFFF which is 16.777215 sec.
Add check to make sure that capture duration cannot exceed
capture interval.
Change-Id: I7aff00a1024d6d8ba9885cda3e1c36dd08c95f9e
CRs-Fixed: 2649714
Protect access to cfr lookup table, since error handling
mechanism attempts to cleanup CFR entries in timer context,
this leads to contention between bottom-half and timer.
Change-Id: I32a095fc82545ab117ab43a81ef8a3a5602741fc
CRs-Fixed: 2649714