Commit Graph

1515 Commits

Author SHA1 Message Date
Linux Build Service Account
4a2977c91d Merge "qcacmn: Add the channel structure as an argument for ETSI preCAC check" 2019-09-24 17:50:26 -07:00
Abhiram Jogadenu
f4a7a904f8 qca-wifi: Reset unassoc entries for every cfr_pdev_open
After every wifi up/down or load/unload, it is expected that
cfr enabled entries should be reset. Earlier, associated clients'
entires are cleared by FW. Unassociated entries are maintained by
host and were not cleared. This change clears them properly at
cfr_pdev_open level

Change-Id: I2dd7ce861901ccca72bc987c2f91677a481d401e
CRs-Fixed: 2531961
2019-09-23 16:07:37 +05:30
Shiva Sankar Gajula
16c74d3294 qca-wifi: Changing MIC length for GCMP cipher
Target assert is observed due to sending insufficient MIC data for
GCMP cipher suite. So, Changing the MIC length for GCMP ciphher
suite from 8 to 16 bytes

Change-Id: I5a407f9eb0cca70b498d91eac2f60f1b8d16fb69
2019-09-19 10:27:39 +05:30
Vignesh Mohan
8628ae9e72 qca-wifi: Reset the agile channel after radar in primary detector
If radar is detected on the primary channel, agile DFS is restarted
after vdev start response by triggering a zero second timer.
The timer fires immediately and the existing agile precac channel
is marked as CAC done. Since the agile preCAC channel was never cleared,
it was marked as CAC done.

Reset the agile channel if radar is detected on the primary channel.
In case of radar in agile detector, the channel change will not involve
any zero second timers and the agile channel will be overwritten by a
new channel.

Also, consider the case where radar is detected on the primary
channel. HOST will now select a new primary channel and issue vdev start
to FW. After vdev response, HOST will pick a new agile channel.
Since the agile engine was never stopped, FW may issue OCAC complete
for the old agile channel at this instant. Now, since HOST has picked a
new agile channel, this new agile channel will be marked as CAC done
due to the OCAC complete event from FW, without preCAC being started.

Send OCAC ABORT command after radar detection to properly restart
the agile state machine and avoid any race conditions like above.

CRs-Fixed: 2528567
Change-Id: I455cd513ba612bf48f057583b7529c7c3ef2f6c6
2019-09-18 07:15:23 -07:00
Vignesh Mohan
3645c81071 qca-wifi: Set FW ADFS support flags in dfs
When the current chainmask is updated, the FW ADFS support flags are
sent to DFS object in the API "dfs_set_fw_adfs_support". Update
the DFS flags representing the FW Agile DFS support based on the
new values.

Before starting (or) restarting agile DFS, check if user configuration
and FW Agile support is present and only then start the agile
state machine. If the current operating bandwidth of the pdev is
80P80 or 160MHz, check the FW flag "fw_adfs_support_160" and if
it's false, do not start the agile engine.

Change-Id: I0c44fd9d7d57042f82808979421284be02065c77
CRs-Fixed: 2521654
2019-09-18 15:15:54 +05:30
Vignesh Mohan
8f00992e04 qcacmn: Add the channel structure as an argument for ETSI preCAC check
While checking if ETSI preCAC is already done on a given channel
in this API "dfs_is_etsi_precac_done", dfs_curchan is always used as
the channel to be checked. Since there are APIs such as
"dfs_is_cac_required", which may be called before dfs_curchan is
updated, add the channel structure which is to be checked for
ETSI preCAC in the argument list.

Change-Id: I77cf059f9afd83c850a7603f6197ac2b78fa2586
CRs-Fixed: 2528023
2019-09-17 12:26:42 +05:30
Shiva Krishna Pittala
da9d041697 qca-wifi: Adjust CFR as per multi srng support per pdev in DBR
Signatures of target_if_dbr_buf_release and
target_if_dbr_cookie_lookup got updated as part of multi srng
support per pdev in DBR. Update the same in CFR.

CRs-Fixed: 2528137
Change-Id: If53fd9a1a4e4a30b8d9ba3eda9ade887e2c3322b
2019-09-16 11:22:08 +05:30
Naga
ad46324aef qca-wifi: Move to wmi_unified_vdev_tlv cmn
TLV and non-TLV definitions of vdev mgr ops are in component_dev,
they are carved out to a separate file in cmn_dev/wmi for adapting
target_if/vdev mgr component, they are made part of same file
which conflicts tlv design. This change moves redundant definitions
from component_dev to cmn_dev.

Change-Id: Ia47268b4479dba33dc2eceabeadf16224154a6f7
CRs-Fixed: 2517019
2019-09-12 06:47:20 -07:00
Linux Build Service Account
0626e1b327 Merge "qca-wifi: Smart Antenna multi radio support" 2019-09-11 20:09:43 -07:00
Linux Build Service Account
aba33e0087 Merge "qca-wifi: Reset the picked agile channel if it is an excluded channel" 2019-09-10 08:11:28 -07:00
Linux Build Service Account
c3841bd01a Merge "qca-wifi: BA window reset after FT roam" 2019-09-10 08:11:28 -07:00
Subrat Mishra
42b0ae6080 qca-wifi: Smart Antenna multi radio support
Smart Antenna WMI changes to extract pdev_id from
wmi_peer_ratecode_list_event data.

Change-Id: Ia30f354e7ac65bd41b22ec49a5cc8931fcf5caf0
CRs-Fixed: 2514500
2019-09-09 22:12:48 -07:00
Vignesh Mohan
aea46f34e4 qca-wifi: Check if channel is already marked before marking as CAC done
Consider the case where preCAC is running on channel 120 (20MHz)
bandwidth and 116 (20MHz) channel is already preCACed. One possible tree
structure, with the scenario mentioned above, is shown below:

122(1,0)
 |
 |------- 118(1,0)
 |        |
 |        |------- 116(1,0)
 |        |
 |        |------- 120(0,0)
 |
 |------- 126(0,0)
 |        |
 |        |------- 124(0,0)
 |        |
 |        |------- 128(0,0)

where 122 and 118 have 1 subchannel (116) as CAC done. While the preCAC
is running on 120(20Mhz), the preCAC is restarted with a new channel
of 40MHz bandwidth. If the new channel picked is 118(40Mhz) in which 116
is already CACed, once the preCAC is completed on 118 (40Mhz),
the entire band (with both 20MHz channels) will be marked as CAC done.

In the API "dfs_mark_tree_node_as_cac_done", the number of CACed
subchannel of the parent node is incremented without checking if the
child has been marked. In the above case, after preCAC is completed
on channel 118, each 20 MHz channels in channel 118 (116 and 120) are
marked individually in this API.
While marking the tree for preCAC completion on the subchannel 116,
the number of CACed subchannels is incremented to 2 for 122 and 118, but
124 is already marked. While marking the tree for preCAC completion on
the other subchannel (120), the CACed subchannels count is incremented
to 3 for 122 and since it cannot increment the subchannel count to more
than 2 for 118, it returns, leaving 128 unmarked. The preCAC tree
structure will now look like:

122(3,0)
 |
 |------- 118(2,0)
 |        |
 |        |------- 116(1,0)
 |        |
 |        |------- 120(0,0)
 |
 |------- 126(0,0)
 |        |
 |        |------- 124(0,0)
 |        |
 |        |------- 128(0,0)

which is wrong.

To fix the above problem, check if a tree node is already marked as
CAC done and only then increment their parent's CACed subchannels count.
This issue is not seen for other cases (e.g. marking NOL channels), since
preCAC can be performed on the same channel again (incase of different
bandwidths) whereas NOL marking is unique.

Change-Id: Ie683a011a86233dd2c1ff8e21aa78638a1d63c2a
CRs-Fixed: 2520790
2019-09-09 11:52:31 +05:30
Gurumoorthi Gnanasambandhan
f8184296b6 qca-wifi: BA window reset after FT roam
Reset seq number for Station roaming back in FT roam.

Change-Id: I701cf82786ef79bd5fde92ea94957523de807d48
2019-09-02 22:46:23 -07:00
Kai Chen
5c41ed2a44 qca-wifi: Enable peer filtering for enhanced RX capture.
Enable peer filtering for enhanced RX capture mode

Change-Id: Icaf8ba680a9b77cf9c07003f0ce18798c9b62d8f
2019-08-30 11:12:15 -07:00
Linux Build Service Account
1d2110f2e0 Merge "qca-wifi: Correct CFR data version" 2019-08-30 03:12:37 -07:00
Linux Build Service Account
ce0b3795b6 Merge "qca-wifi: Restart agile DFS in vdev start response after radar" 2019-08-30 00:06:51 -07:00
Vignesh Mohan
51f85cc861 qca-wifi: Restart agile DFS in vdev start response after radar
If radar is found on primary channel, aDFS channel change is triggered
immediately after marking the primary channels as NOL. This may result
in picking the channel that the AP may come up in, for agile DFS.

To avoid running aDFS on the pdev's current channel, restart
agile DFS engine after new channel is selected, in vdev response.

Also, consider the scenario where the device has two DFS pdev objects.
When the API "dfs_prepare_agile_chan" is called to start preCAC, it
uses a round-robin logic to pick a DFS object for preCAC and
the preCAC timer maybe started for a different dfs object than the
one calling it (argument of the function). But the channel width of
the preCAC channel is always fetched from the dfs object calling
the API, which may result in wrong channel width sent in adfs_start
command.
Use temp_dfs structure (indicating the DFS object picked for preCAC)
to fetch the channel width, instead of fetching it from the dfs
object passed as argument to the function.

Change-Id: I243cf978b3caaadb771eb9a5e0cf83f7ac82c876
CRs-Fixed: 2515440
2019-08-29 17:59:31 +05:30
Abhiram Jogadenu
5bf0f819dc qca-wifi: Correct CFR data version
Correct the version where CFR data is being populated.

Change-Id: I4c55b5beefb2f93e09df47162406876a1861fa00
2019-08-29 02:02:03 -07:00
Linux Build Service Account
2e9c30351f Merge "qca-wifi: Fix FIND_IF_OVERLAP_WITH_WEATHER_RANGE API" 2019-08-28 22:49:27 -07:00
nobelj
c870ef44c4 qca-wifi: tx capture grouping ppdu with same schedule cmd id into list.
Grouping ppdu with same schedule command id into list
as there is no finite number on ppdu count with a same
schedule command id.

Change-Id: Ibf0fe7e29923b641ff6330c12200b351f42b6efb
2019-08-27 13:23:23 -07:00
Vignesh Mohan
e1b684588c qca-wifi: Fix FIND_IF_OVERLAP_WITH_WEATHER_RANGE API
While checking if the current channel overlaps with the
weather channel range, the first sub channel was checked if it is to
the left of weather channel start and the last sub channel was
checked if it is to the right of the weather channel end.

By the above logic, the API returns true only if the entire
weather channel range is within the current channel.

Fix the formula by checking if the first sub channel of the current
channel is to the left of the weather channel end and the last sub
channel is to the right of the weather channel start to find if any
of the current channel is a weather channel.

CRs-Fixed: 2515365
Change-Id: I8ca779f6dd8116a85121185e3ea71bca610f9ba4
2019-08-27 11:45:47 +05:30
Vignesh Mohan
46d8993c09 qca-wifi: Reset the picked agile channel if it is an excluded channel
While selecting a channel for aDFS, the current channel(s) are skipped
for preCAC (since they are CACed by the primary detector).

If no other channels are found and if the current channel
is the last in the preCAC list, aDFS is started on this channel.
This is because, the channel variable defined in the API locally
is not reset if it is an invalid channel.

Reset the agile channel at the end of the loop if it is one of the
excluded (current) channel.

Change-Id: I48cbfc3c511c05bed86b60eb9e2ca22f9b8e0362
CRs-Fixed: 2515324
2019-08-26 17:01:54 +05:30
Abhiram Jogadenu
fb6844f781 qca-wifi: Fill extracted phase information in CFR header
As part of FR 56301, phase data is being captured in CFR.
Fill the extracted information in CFR header.

Change-Id: Ia1f6245a1a18d1d11b266328b17e6506bd8439f4
CRs-Fixed: 2501944
2019-08-24 07:41:19 -07:00
Linux Build Service Account
6b4a50d0d5 Merge "qca-wifi: Add support for CFR capture on unassociated clients" 2019-08-23 05:37:30 -07:00
Linux Build Service Account
5d6f16d239 Merge "qca-wifi: Move protocol and flow tagging code out of common host components" 2019-08-22 15:37:30 -07:00
Abhiram Jogadenu
ea20fa5e53 qca-wifi: Add support for CFR capture on unassociated clients
As part of FR 56301, add support to capture CFR data for
unassociated clients on its Probe response's ACK

Change-Id: I14a4eead4ceeb3eb21d8f2bdf76007f873db1f4e
CRs-Fixed: 2501938
2019-08-22 11:48:38 +05:30
Linux Build Service Account
3bc0b63914 Merge "qca-wifi: Add Application support for tx msdu, bytes, retries" 2019-08-20 11:11:28 -07:00
Linux Build Service Account
e83248443e Merge "qca-wifi: Add support for msdu, bytes and retries" 2019-08-20 11:11:27 -07:00
Linux Build Service Account
6d05195a88 Merge "qca-wifi: Get Rix from 64-bit encoded value" 2019-08-20 04:37:49 -07:00
Linux Build Service Account
e0bc53fce5 Merge "qca-wifi: Move config files into component dev" 2019-08-19 03:52:44 -07:00
Ankit Kumar
e2b621246b qca-wifi: Change event dump log size
Changing event dump size to 25 to make it same for all
events as qdf has limitation on event size.
If size is more than 25 then event of type command doesn't
gets printed.

Change-Id: Iaf2d4c52242b99194f7405d7d69a4566db71ff01
CRs-Fixed: 2510317
2019-08-16 14:40:00 +05:30
Linux Build Service Account
e64c7e9cc6 Merge "qca-wifi: Smart Antenna WMI support for 11bit ratecode" 2019-08-15 21:37:31 -07:00
Linux Build Service Account
ea01bdde6b Merge "qca-wifi: Add support to enable/disable tx packet cap on per-peer basis" 2019-08-14 18:08:32 -07:00
Amir Patel
312cdd3f49 qca-wifi: Add Application support for tx msdu, bytes, retries
Add Application support for tx msdu, bytes, retries for
RDK stats

Change-Id: Ifb335065cc1b3d4aa9a6a2b74b9a88cc6aafd816
CRs-Fixed: 2509069
2019-08-14 02:50:27 -07:00
Amir Patel
8c9bc8c685 qca-wifi: Add support for msdu, bytes and retries
Add support for msdu, bytes and retries for RDK stats

Change-Id: Ifb20833cfc77bef8f4c14b9c04930d26a64d5b63
CRs-Fixed: 2509049
2019-08-14 15:14:30 +05:30
Amir Patel
56cf95a5a5 qca-wifi: Get Rix from 64-bit encoded value
Get Rix from 64-bit encoded value from
Rix, MCS, NSS, Preamble

Change-Id: I1794313166e740cf77240f4ab28a9772ce820099
CRs-Fixed: 2499069
2019-08-14 09:54:38 +05:30
Linux Build Service Account
52c8ecc843 Merge "qca-wifi: Add dfs_set_cfreq2 flag in multivdev_restart channel params" 2019-08-13 06:14:40 -07:00
Subrat Mishra
27912b929d qca-wifi: Smart Antenna WMI support for 11bit ratecode
Smart Antenna support for extracting 11bit ratecode and packing
for tx packet training.

Change-Id: I8b838f3af8a6d2060b40c912e282dd3f11bf0339
CRs-Fixed: 2506480
2019-08-13 01:45:06 -07:00
Sumeet Rao
37a8fbeee9 qca-wifi: Move protocol and flow tagging code out of common host components
Move protocol and flow tagging code out of common host driver components

CRs-Fixed: 2501573

Change-Id: Ia3c9d036216c2fa914f6649a92abe8ca45578274
2019-08-12 12:37:38 -07:00
Shreedhar Parande
77ac19d602 qca-wifi: Separate APIs for getting values of precac and agile precac
Currently single API is used to get dfs_precac_enable and
dfs_agile_precac_enable. This API was wrongly returning value for
dfs_precac_enable since agile capability was set even for Cascade.

Sepate out the GET APIs for getting dfs_precac_enable and
dfs_agile_precac_enable so that getting these flags becomes independent
of each other.

Change-Id: Ie617c04269f91db32f851871880c4df884517a67
CRs-fixed: 2501266
2019-08-12 02:51:59 -07:00
Varsha Mishra
f3417a607e qca-wifi: Handle vlan tagged duplicate skb for multipass phrase feature
Duplicate vlan tagged frames which need to be sent to repeater should
have unique check to avoid infinite iteration. Infinite iteration leads
to creation of nbuf every time loop is executed.

Change-Id: I2601461edc9e144f1058ed031ba14410563d0755
2019-08-11 01:47:32 -07:00
Linux Build Service Account
5e090cdb98 Merge "qca-wifi: Add a new feature to support tagging of IPv4/v6 flows" 2019-08-09 04:51:21 -07:00
Akshay Kosigi
7026f86668 qca-wifi: Move config files into component dev
Move CONFIG files specific for AP into component_dev
instead of keeping them in cmn_dev

Change-Id: I8d44faec5b0e43d2197e1d08549637702be3848d
CRs-Fixed: 2506560
2019-08-09 16:41:21 +05:30
Linux Build Service Account
9ef0c191fe Merge "qca-wifi: Build the preCAC list only for ETSI domain" 2019-08-07 23:09:35 -07:00
Sumeet Rao
4338fc07aa qca-wifi: Add support to enable/disable tx packet cap on per-peer basis
Currently, tx_monitor mode is enabled/disabled for all peers on a
per-pdev basis. Since tx_monitor mode consumes significant amount of
MIPS and reduces throughput, new requirement is to enable/disable
tx_monitor mode on a per-peer basis as well.

Change-Id: Ib70ccd3238dfd5fae1be92a81e9bf91fe441e228
CRs-Fixed: 2500931
2019-08-07 00:19:37 -07:00
Sumeet Rao
0ff576e867 qca-wifi: Add a new feature to support tagging of IPv4/v6 flows
Tags are programmed using wlanconfig commands. Rx IPv4/v6
TCP/UDP packets matching a 5-tuple are tagged using HawkeyeV2 hardware.
Tags are populated in the skb->cb in the REO/exception/monitor data
path and sent to upper stack

CRs-Fixed: 2470521
Change-Id: Id581159ae2b4a00c290a775aad526032e3a53a7f
2019-08-06 10:53:19 -07:00
Vignesh Mohan
1bf4fb8c2a qca-wifi: Add dfs_set_cfreq2 flag in multivdev_restart channel params
While switching to 36 HT160 as part of multivdev restart, the channel
params to be sent to FW are only updated with primary segment dfs set flag.

Consider if the primary channel is 36 (non DFS), in which case, the
primary HT80 segment is non DFS, but secondary HT80 segment is DFS. This
will be indicated to FW by sending the flags with dfs_set as FALSE and
dfs_set_cfreq2 as TRUE. But since dfs_set_cfreq2 is not updated incase of
multivdev restart, FW does not detect radar in the secondary detector.

Add proper dfs_set_cfreq2 flag in multivdev_restart channel params.

Change-Id: I875534c3f61b1d9a36efe1ec63505332a59a4dd1
CRs-Fixed: 2496923
2019-08-05 23:58:19 -07:00
Karunakar Dasineni
505d7d9c6c qca-wifi: Drop excessive PPDU status buffers
When CPU cores are fully loaded, PPDU stats process workqueue
is not getting enough time, resulting in excessive backlog of
PPDU status buffers. Check and drop buffers if the backlog is
beyond a threshold.

Change-Id: Ideef46cb4eec54dcd5a8315f36f2206653d81659
2019-08-05 07:27:37 -07:00
Linux Build Service Account
0e1d8dd797 Merge "qca-wifi: Handling vlan tagged frames for multipass phrase feature" 2019-08-05 01:09:04 -07:00