Commit Graph

1892 次程式碼提交

作者 SHA1 備註 提交日期
Manoj Ekbote
2d96374ca3 qca-wifi: Memory optimization for PPDU stats
Currently, per-user information in Tx PPDU completion is allocated for
37 users though FW may send information for fewer number of users. In
new scheme, FW provides number of users in USERS_INFO TLV and host can
allocate the per-user struct based on this number. This can save memory
while processing each completion message.
Make related changes in tx capture files to use pointer instead of fixed
size member.

CRs-Fixed: 2730933
Change-Id: I8709665a481d64dc4ab086ce9b27e8837c38b53f
2020-07-23 23:21:21 -07:00
Subrat Mishra
8c9a192cd4 qca-wifi: Enable ATF stats feature commands
Enable ATF stats fearure commands and remove get_atf_stats.
Get ATF Stats command will be added as IOCTL command to use in
wlanconfig.

Change-Id: Ib029abf5401d9002151bbaa9eef1c199df3daa0c
2020-07-23 03:28:59 -07:00
nobelj
36e778c0f8 qca-wifi: Add support to store and display ppdu desc
Debugfs is added to store the last 30 ppdu desc and display
as readable format to user. Feature of storing ppdu desc is
enabled through debugfs and it is not enabled by default.

Change-Id: I85ff52760462abd9a6e33d082db45d8179e67c0d
2020-07-23 03:15:57 -07:00
Linux Build Service Account
a413bf278f Merge "qca-wifi: Extap mode secondary radio unicast packet handling" 2020-07-22 23:44:35 -07:00
Vijay Krishnan
ffc8f364be qca-wifi: Remove references to CHAN_NUM_API
During 6G development, CONFIG_CHAN_NUM_APIs are kept for backward
compatability. Remove CONFIG_CHAN_NUM_API macro and remove all the
references to any function defined/declared under the macro.

CRs-Fixed: 2711597
Change-Id: Iac5d57e4e0fb1fa54b0225a5cb206e8f1fe1353d
2020-07-22 23:03:57 -07:00
Srinivas Pitla
aa3e76eb38 qca-wifi: Avoid processing of PPDU USER multiple times in Tx capture
Currently, same user can be processed multiple times, which leads to
release ref count wrongly, with this, some of the users in PPDU
desc are never processed and can possibly cause memory leak.

Added a flag in PPDU user to indicate that the user is already
processed.

CRs-Fixed: 2718150
Change-Id: Ia00e0ad12999578157e9f8a6df0ad4763f828c88
2020-07-22 10:28:59 -07:00
syed touqeer pasha
0107d0ca4a qca-wifi: Extap mode secondary radio unicast packet handling
when secondary unicast from station takes rx_to_tx path
and reaches host, enqueue directly to nss ap node.

Change-Id: I03b3e9488683376fa9a12c574ba230ebaa55c98d
2020-07-22 00:20:46 +05:30
Srinivas Pitla
d0e7ec087c qca-wifi: Fix tx capture tid init issues
For some peers, tx capture tid init is not invoked,
It is resulting in ppdu_desc leak.

Invoking tid init on tid peer update, if tid is not
initialized.

Change-Id: Ia49c7e6d093a42e57e8d9239a60ad0b8dabfcc5b
CRs-Fixed: 2718150
2020-07-21 11:29:38 -07:00
Shaakir Mohamed
a69fa6f81f qca-wifi: Add cfg80211tool cmd to enable oce version override
Add cfg80211tool cmd to set/get oce version override.

Change-Id: Ib53aabdf8e6404253cf225c2c30972409727c1a8
CRs-Fixed: 2726565
2020-07-20 13:46:19 -07:00
Linux Build Service Account
ef0d22dbb5 Merge "qca-wifi: Add conditional check to avoid fault" 2020-07-14 19:10:29 -07:00
Kai Chen
5612428719 qcawifi: resolve issue on updating protocol tag.
Skip protocol tag updating from msdu end TLV protocol tag meta data
when there is RXDMA REO entrance push error on monitor destination ring.
The attention and msdu end TLV is not updated reliably when there
is RXDMA REO entrance push error such as FCS error on monitor
destination ring.

Change-Id: I47ab7da3a239080c1ab608c5001f65c4849b7b3a
2020-07-14 13:18:53 -07:00
Linux Build Service Account
e5977a6360 Merge "qca-wifi: Mark Action Frames as Non Self_Gen" 2020-07-14 09:40:49 -07:00
Mainak Sen
e1678aaca8 qca-wifi: Add conditional check to avoid fault
Add conditional check to avoid null struct pointer dereferencing

Change-Id: I35036b5fb9a774fae44b4e9e1a0d2f43e7c38723
2020-07-12 22:01:30 +05:30
Linux Build Service Account
3603805c59 Merge "qca-wifi: Add enable_statsv3 command" 2020-07-10 08:37:56 -07:00
Christopher Chopp
79c6331413 qca-wifi: Mark Action Frames as Non Self_Gen
Add check for action frames in tx capture feature and
manually mark selfgen as false.

Change-Id: I37e25f323ebd65240810dbb2b6ddb8fec3e1c66c
2020-07-09 11:19:05 -07:00
Kousikan Mohanraj
c148f14047 qca-wifi: Add enable_statsv3 command
Add enable_statsv3 command for cfg80211tool

Change-Id: Iad26132db00e6486586ab9820f88241794072c25
2020-07-09 12:54:36 +05:30
Vignesh Mohan
21c6741f48 qca-wifi: Modify the autochannel switch design
In autochannel switch feature, a user configured primary channel
is prioritized for preCAC and after preCAC completion, the channel
is used as the primary operating channel of the device.

To acheive this, the existing preCAC lists were reordered since
every entry of the list was of a fixed 80MHz bandwidth and the
channels to be prioritized were also provided as 80MHz. i.e the list
entry to be prioritized will be made as the list HEAD.

This logic was only possible because the preCAC lists were channels
of 80MHz bandwidth. After the agile 160MHz changes, the preCAC lists
were now of variable bandwidth, from 20-160MHz. Reordering a 160MHz
channel will not allow the expected 80MHz channel to run first.

To fix this issue in autochannel switch algorithm, instead of
reordering the lists,
1. Remember the user desired channels to be prioritized in
   dfs structure.
2. Before picking a channel for preCAC, see if the autoswitch desired
channel is configured
3. If yes, check the preCAC state of those channels.
4. If the preCAC state is "PRECAC_REQUIRED", use this channel to run
   preCAC.

CRs-Fixed: 2723206
Change-Id: Icd6d01adfae6dfa63d0733c5dae6d6494a660190
2020-07-07 22:41:37 -07:00
Linux Build Service Account
a05a705913 Merge "qca-wifi: Fix user index for rts, cts frame" 2020-07-07 14:09:18 -07:00
Linux Build Service Account
3a90a2e495 Merge "qca-wifi: tx capture modify config lock with user mode flag" 2020-07-07 10:37:37 -07:00
Linux Build Service Account
6e35159528 Merge "qca-wifi: Add srng history for monitor mode" 2020-07-01 09:06:46 -07:00
nobelj
1c7273d13c qca-wifi: tx capture modify config lock with user mode flag
user mode flag is added instead of config lock.

Change-Id: Ie83823d1bfff9b50fe3e87faa929882cfeb8b5c7
2020-06-30 12:44:18 -07:00
Vignesh Mohan
3b5fc93c6b qca-wifi: Set Agile DFS active for the calling PDEV
As part of vdev start response, dfs_precac_agile_start() is
called which is intended to set the agile active bit for
the VAP's pdev and start preCAC if possible and not already
running. The active bit for a dfs/pdev indicates that there
is at least one active VAP for that dfs/pdev object.

To set the "agile_precac_active" bit, the "cur_precac_dfs_index"
is used instead of the index of the "dfs" that calls the function.
"cur_precac_dfs_index" need not always indicate the "dfs" that
calls the function.

Consider a case where there are two active 5G radios (DBS_SBS),
both with preCAC enabled. For the first vdev start response of
radio A, dfs_precac_agile_start() is called which sets the agile
precac active bit for radio A and starts preCAC. Now for the
first vdev start response of radio B, dfs_precac_agile_start will
set the current preCAC index as active, which is radio A (which
was already set). The agile preCAC active bit is never set for
radio B even though it has an active VAP and agile capable.
Because of this, after radio A completes preCAC, radio B does
not get a chance to run preCAC for it's channels.

Set the agile precac active bit for the calling radio,
irrespective of which pdev is currently running preCAC, to allow
preCAC when the radio get's a chance.

CRs-Fixed: 2705681
Change-Id: Id11c910c69c85ce9ae03e7989e784a272d5cd905
2020-06-30 19:38:02 +05:30
Linux Build Service Account
2e7ea6f5d0 Merge "qca-wifi: Assert if HAL srng is NULL or not initilized" 2020-06-29 22:40:02 -07:00
Linux Build Service Account
c31c165fa3 Merge "qca-wifi: Remove double validation of Tx Stats" 2020-06-26 14:40:27 -07:00
Linux Build Service Account
fd82563e25 Merge "qca-wifi: Add ATF stats enable command" 2020-06-24 10:39:13 -07:00
phadiman
a8a1a96806 qca-wifi: Remove double validation of Tx Stats
Remove double validation of ppdu_user tx_ratekbps
and ppdu_user rate index while updating per peer 
Tx statistics

Change-Id: I9d4b65556928b21ee6caa10fb15193c8705ad2af
2020-06-24 13:08:42 +05:30
Linux Build Service Account
d0fcd6b5d3 Merge "qca-wifi: fix deauth in tx capture on peer filter" 2020-06-23 16:12:33 -07:00
Linux Build Service Account
54ab893d1a Merge "qca-wifi: Assign proper precac_index for legacy preCAC" 2020-06-23 12:10:19 -07:00
Subrat Mishra
1898a5b975 qca-wifi: Add ATF stats enable command
Add Airtime Fairness stats enable command with stats timeout command.

Change-Id: Id9bf0a5a94a171344f2606205a6c7a439353f039
2020-06-22 22:01:33 -07:00
Ananya Barat
aa031969f9 qca-wifi: Assign proper precac_index for legacy preCAC
Bring up a Cascade AP in HT80 mode, country DK and enable preCAC config.
During vap start, a preCAC channel is chosen by invoking
tgt_dfs_find_vht80_precac_chan_freq() and then
dfs_start_precac_timer_for_freq() is invoked to start the preCAC timer.

In dfs_start_precac_timer_for_freq(), the dfs pdev object is fetched
indexing cur_precac_dfs_index in DFS SOC object as follows:
"dfs_soc_obj->dfs_priv[dfs_soc_obj->cur_precac_dfs_index].dfs".

The cur_precac_dfs_index is initialized to 0xFF in dfs_rcac_sm_create().
This index is then over-written to the current DFS pdev index in case
of agile preCAC in dfs_prepare_agile_precac_chan() API. This API is not
invoked in case of legacy preCAC and hence cur_precac_dfs_index continues
to hold 0xFF. This leads to kernel paging request failure
and the system crashes.

Initialize 'cur_precac_dfs_index' to dfs->dfs_psoc_idx which holds
the index of the active dfs pdev.

CRs-Fixed: 2708233
Change-Id: I3aae7ea8f611d72bfe23c20cc2a34d94bba83485
2020-06-22 13:32:41 +05:30
Himanshu Batra
6a0b7ae928 qca-wifi: Correct cfg80211 display_me_info param type
Correct cfg80211 display_me_info param type from set to get

Change-Id: Ib8c2b98b31d2ed179a9791d54ecf482060883f32
CRs-Fixed: 2715344
2020-06-21 19:54:45 -07:00
Linux Build Service Account
f5b44af464 Merge "qca-wifi: Stop precac timer for OCAC completion on 165MHz channel" 2020-06-19 23:41:34 -07:00
Linux Build Service Account
53c4faba84 Merge "qca-wifi: Multilink FR for 5.4" 2020-06-19 12:20:30 -07:00
Linux Build Service Account
cfa713ccf2 Merge "qca-wifi: Add cfg80211 cmd for rpt_max_phy feature" 2020-06-19 06:10:14 -07:00
Linux Build Service Account
17d1f8b455 Merge "qca-wifi: Convert host pdev to target pdev id" 2020-06-19 06:10:14 -07:00
Debasis Das
7fcd532cf1 qca-wifi: Multilink FR for 5.4
Kernel API's used for multilink FR have been modified.
Use version-appropriate API's for the feature to work
with 5.4 kenel.

Change-Id: Id5bb90136fcefccd9c6ab4c8378991695b195c7b
2020-06-19 14:54:12 +05:30
Linux Build Service Account
f09b017ac0 Merge "qca-wifi: Correct the DCS command" 2020-06-18 23:11:58 -07:00
Abhiram Jogadenu
668283c69f qca-wifi: Correct the DCS command
DCS command was assigned wrong enum value.
'get_nominal_noisefloor' command has duplicate entry in the table.
Correct the enum value and remove the duplicate entry.

CRs-Fixed: 2708425
Change-Id: I27c85b26e261bbe6f201bc434bcb97b1b9c75fa4
2020-06-17 17:14:10 +05:30
Shreedhar Parande
5394db9ecd qca-wifi: Add cfg80211 cmd for rpt_max_phy feature
Add new commands to set and get the rpt_max_phy feature.
This is radio specific configuration.

Commands:
cfg80211tool wifiX rpt_max_phy 0/1 - To disable/enable feature.
cfg80211tool wifiX g_rpt_max_phy -  To get feature flag state.

Change-Id: I421e2af15a0415596fbddb552673efd3d3be2070
2020-06-17 04:09:19 -07:00
Linux Build Service Account
0e79976e0c Merge "qca-wifi: Support Rolling CAC in DFS_MKKN region" 2020-06-17 02:48:50 -07:00
Nandha Kishore Easwaran
43707528ce qca-wifi: Convert host pdev to target pdev id
Convert host pdev id to target pdev id before sending
WMI_PDEV_UPDATE_PKT_ROUTING_CMDID cmd. This is needed for HK_PHYB
RDP where 0 host pdev corresponds to target pdev 2

Change-Id: I2bb63453a19d899896b7d87d90ac4c78721c7a31
2020-06-15 23:59:45 -07:00
Vignesh U
e1a0290847 qca-wifi: Stop precac timer for OCAC completion on 165MHz channel
When OCAC completion event with status success is given to Host, Host will
trigger a zero second precac timer so that the precac timeout callback
function is called.

For a 165MHz agile channel, FW gives OCAC completion in terms of center
frequency 1 and center frequency 2. The center frequency 2 is non-zero
only for the 165MHz channel. This center frequency 2 information from
OCAC completion event is not stored in host before the zero second timer
is triggered.

Store the center frequency 2 information from OCAC completion event in
adfs params before triggering zero second timer.

CRs-Fixed: 2709894
Change-Id: I74af82d29a3fde859c8a3e1ea13835ebf24578b8
2020-06-15 07:17:02 -07:00
Vignesh U
48615cf86f qca-wifi: Check if OCAC completion event is received on current channel
Consider a case where the current operating channel is 36HT80 and Agile
channel is 5290. When a radar is injected on agile channel 5290, Host
aborts agile on channel 5290, changes the timer status to not running  and
configures agile to the next channel 5530 and then changes the time status
again to running. But the FW might send the OCAC completion event, with
status as OCAC CANCEL for the previously configured channel 5290. Host will
now change the precac timer status as not-running even though Host has
changed the agile channel to 5530. This is an undesirable state change.

As a consequence, when a radar is injected on the agile channel 5530, Host
will add the channels to NOL but will not trigger a channel change because
according to Host, the precac timer is not running(Host will change agile
channel on radar detection only if the precac timer is running).

Whenever an OCAC completion event is received, check if the event is
received for the currently configured agile channel, else ignore the event
without processing.

CRs-Fixed: 2677927
Change-Id: I18788857bc97a8f78426185f00596079ae2cbfd5
2020-06-15 19:43:09 +05:30
Amir
05bd05a954 qca-wifi: Add srng history for monitor mode
Add srng history for monitor mode

Change-Id: I3103a48cc96fa17ad4b35772c352d4597721e27b
CRs-Fixed: 2690176
2020-06-14 23:50:35 +05:30
Amir
0f916220bf qca-wifi: Assert if HAL srng is NULL or not initilized
Assert if HAL srng is NULL or not initilized

Change-Id: I7af824f4c691ad9bc5c5c7537ba3513067a55eff
CRs-Fixed: 2709532
2020-06-13 02:51:59 +05:30
Linux Build Service Account
0d19542bc1 Merge "qca-wifi: Fix ppdu_id mismatch issue" 2020-06-12 09:39:36 -07:00
nobelj
390f02100d qca-wifi: Fix user index for rts, cts frame
for MU frame, rts and cts are transmitted only for first user.
fix other place to use index from caller instead of 0.

Change-Id: I672d91c3df2fac358942304ad6613ee32313e442
2020-06-11 12:11:40 -07:00
Linux Build Service Account
f9e75aa59e Merge "qca-wifi: Qcn9000 changes for rx flow identification" 2020-06-11 02:38:25 -07:00
Linux Build Service Account
fa0ac117da Merge "qca-wifi: Correct entries in command table" 2020-06-10 20:38:24 -07:00
Linux Build Service Account
ac213a8504 Merge "qca-wifi: Fix tbtt offset WMI for multi pdev" 2020-06-10 12:13:12 -07:00