Граф коммитов

108 Коммитов

Автор SHA1 Сообщение Дата
nobelj
f1dd0b06ed qca-wifi: add fix to send ppdu in sequential
add support to send ppdu info in sequential ordered

Change-Id: I5ca9a7e8d8ca9d18712bce811676cbb1fb485a1e
2020-07-28 19:42:51 -07:00
Linux Build Service Account
d8fbb4ff60 Merge "qca-wifi: Avoid processing of PPDU USER multiple times in Tx capture" 2020-07-28 14:37:33 -07:00
Linux Build Service Account
fba80373cc Merge "qca-wifi: Fix tx capture tid init issues" 2020-07-27 13:37:05 -07:00
Linux Build Service Account
c4aaaef829 Merge "qca-wifi: Memory optimization for PPDU stats" 2020-07-26 23:49:36 -07:00
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
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
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
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
Linux Build Service Account
e5977a6360 Merge "qca-wifi: Mark Action Frames as Non Self_Gen" 2020-07-14 09:40:49 -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
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
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
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
nobelj
c01e229231 qca-wifi: fix deauth in tx capture on peer filter
deauth frames are treated as speacial frame where peer id
point to bss peer id but payload RA points to station
mac address. Peer filter is done based on payload.

Change-Id: I4238a108a62accbf3a53f74332a10377675870b8
CRs-Fixed: 2692363
2020-06-05 01:37:42 -07:00
Chaithanya Garrepalli
887962ea4b qca-wifi: use peer_id instead of peer_ids array from dp_peer
use peer_id instead of peer_ids array from dp_peer

Change-Id: I7a3692b0260be5fdbc5d7670ead27f6ff8336c00
2020-05-21 21:47:28 +05:30
Christopher Chopp
cf092b85d9 qca-wifi: Add sched_cmdid check for tx cap retry queue
Before adding a ppdu to the retry queue, check if the
sched_cmdid matches that of the first ppdu in the queue.
If it does not, then the retry queue should be freed as
the received ppdu is not a retry of the ppdu in the queue.

Change-Id: I96a097f57d86539c8395af28f6fd57c13f4cad49
2020-05-15 14:06:31 -07:00
Ruben Columbus
f344193a21 qca-wifi: data rate set incorrectly due to corrupted mcs
delete redefinition of mcs from rx_user_status and keep mcs
derived from preamble which came from rts.

Change-Id: I5323d7944abd474a82d34b812caac1290168ea94
2020-05-07 11:39:26 -07:00
Linux Build Service Account
9c5f909e52 Merge "qca-wifi: Drop msdu on queue exceed threshold" 2020-05-05 10:39:34 -07:00
nobelj
221302d6bc qca-wifi: Drop msdu on queue exceed threshold
Add support
a. Drop msdu on queue exceed threshold of 4096
b. Add support to print consolidated peer tid queue.

Change-Id: I2b91b151531c839657716ac52987cf5e4a62e7cc
2020-05-04 23:25:52 -07:00
Linux Build Service Account
0451a91d78 Merge "qca-wifi: initialize preamble value for radiotap use" 2020-05-04 19:10:56 -07:00
Linux Build Service Account
82edce8b0c Merge "qca-wifi: set frame control for BRP frame" 2020-05-04 12:13:04 -07:00
Ruben Columbus
4fa7c6ad46 qca-wifi: initialize preamble value for radiotap use
preamble value for mubar case is stored in phy_mode variable. this needs
to get carried over to preamble variable in mpdu_info so its used
correctly in radiotap setup.

Change-Id: If149f7b58a3d8b788bab706f8943d66f95e8517c
2020-05-04 12:01:03 -07:00
Srinivas Pitla
501f31af2d qca-wifi: set frame control for BRP frame
For BRP frame ppdu, frame control is not valid in all user
completion tlv, which is causing to drop ppdu as wrong ctrl mgmt
queue checked for payload.

To fix this, updated frame control based on ppdu frame type

Change-Id: Ia5eb67da14647cccfe2ade7c0626a97171454446
CRs-Fixed: 2677252
2020-04-30 16:22:31 -07:00
Ruben Columbus
14818961ef qca-wifi: filter by peer for prob_resp and disasoc
all probe responses and disassoc from bss peer will be accepted and
later filtered by
mac. Additionally retry queue is having a treshold for this new
mechanism to be able to flush queue in case it gets filled up.
this is meant to work for every control frame that has reached such a
state in its retry q.

Change-Id: Ie49d00d9b9422f02f5d9512a891ceb546cdd432d
2020-04-28 22:00:45 -07:00
nobelj
0d28ccb9e9 qca-wifi: Support MU in tx capture mode
Support tx capture for OFDMA and MIMO packet

Change-Id: I24ed22168f5aec30c6c2281028257037f860f3c6
CRs-Fixed: 2621791
2020-04-26 01:40:05 -07:00
nobelj
9bd45e8e5b qca-wifi: Drop ppdu descriptor in pending ppdu queue and other fix
a. ppdu desc in pending ppdu queue is dropped on queue length exceeds
threshold which is 32.
b. configuring ring map for soc only once.

Change-Id: I7398a478ce9e4d974d9ecc2a06d30821f151a1b5
2020-04-24 13:15:18 -07:00
Linux Build Service Account
587c236f05 Merge "qca-wifi: Add frame types to TX Capture" 2020-04-23 15:47:39 -07:00
Linux Build Service Account
2e3dd6f8e4 Merge "qca-wifi: adjust data by pulling extra HTT header from nbuf" 2020-04-22 02:23:13 -07:00
Srinivas Pitla
381441b56b qca-wifi: adjust data by pulling extra HTT header from nbuf
For packets from exception ring will have extra HTT header, that
is adjusted to avoid wrong LLC header

Change-Id: I36adaa6ab0c3ba96a5eec9bf05747576e3938028
CRs-Fixed: 2661034
2020-04-20 13:16:14 -07:00
Linux Build Service Account
51120720e7 Merge "qca-wifi: filter by mac check" 2020-04-20 12:46:45 -07:00
Linux Build Service Account
d035dfef20 Merge "qca-wifi: ignore ack with 0 mac addr" 2020-04-14 17:59:18 -07:00
Christopher Chopp
cf78ddd987 qca-wifi: Add frame types to TX Capture
The current implementation of the TX Capture
feature assumes a non QoS 3 address frame for
each frame. If a frame is a QoS frame, the extra
fields are manually added, but if the frame is a
4 address frame, there is no handling. Add QoS,
4 address and 4 address QoS frame types to the
TX Capture feature and update accordingly.

Change-Id: Idd7f8f55a5543718f52bc38be396d671b87b54bd
CRs-Fixed: 2636684
2020-04-14 16:38:53 -07:00
Ruben Columbus
f73266f87c qca-wifi: filter by mac check
filter pass seems to not be working for control frames
so we are using mac check address comparison for non-bss freames
when tx_monitor is set

Change-Id: I3a003636381f73191081e821dbe8cf00a67cb042
2020-04-13 17:33:22 -07:00
Srinivas Pitla
3e6eb3562a qca-wifi: Free nbuf on bpr disabled case only
If tx capture, sniffer are not enabled, mgmt nbuf is freed.
It is causing use-after-free in bpr enabled case

Added change to free only when bpr is disabled

CRs-Fixed: 2662214
Change-Id: I0d889f371cf47047200f70563b589fac99733c49
2020-04-13 11:32:37 -07:00
Srinivas Pitla
c1fbfdd72c qca-wifi: fix TSF wrap around case in tx capture
Handle wrap around correctly during TSF delta calculation.

Change-Id: I1303053dbf33175e9f3c7beec0988a4aef03eb7f
CRs-Fixed: 2651294
2020-03-27 10:26:16 -07:00
Srinivas Pitla
e13d2f6375 qca-wifi: Fix RTS and CTS duration in tx capture
This change updates correct timestamp for self gen RTS/CTS frames

Change-Id: I934de171f7d78288a91b57581c9cdb0ff48b9067
CRs-Fixed: 2632369
2020-03-27 10:26:00 -07:00
Ruben Columbus
490a45106d qca-wifi: ignore ack with 0 mac addr
use mac addr compare function with dummy mac addr set to all 0 and dest
mac addr. if they are similar then just ignore frame.

Change-Id: I8c892d0ca4a210865720b94b580b6e24dad0382b
2020-03-26 16:07:28 -07:00
Srinivas Pitla
58a1539c08 qca-wifi: Mark beacon frames as selfgen
Beacon frames are FW generated frames, FW indicated them as DATA_SU,
with this, frame is not marked as self gen. It gets added to retry_q.

Check ppdu frame type and subtype to mark frame as selfgen if it beacon

Change-Id: If0bfd9bf2cc321afe207a4db7529e24baebfd376
CRs-Fixed: 2643848
2020-03-19 16:14:40 -07:00
Srinivas Pitla
298c78568e qca-wifi: cleanup buffers for incomplete amsdu
if last_msdu is not received  then allocated
mpdu_nbuf and mpdu_q is not freed,

This change frees the buffers in last_msdu not seen case.

Change-Id: Icaaa6e227f3ea1d314c6d15a9f76c2f622d5d93f
CRs-Fixed: 2643848
2020-03-19 16:14:27 -07:00
Srinivas Pitla
d11868e2c3 qca-wifi: Drop mgmt nbuf in tx_capture disabled case
If tx_capture is disabled, the frames notified to tx_capture
module needs to be freed.

This change frees mgmt frames in tx capture module, in case feature
is disabled

Change-Id: I71f102ba2f25f23bdcef63dddb525d5f7b0a692a
CRs-Fixed: 2643848
2020-03-19 16:13:31 -07:00
Srinivas Pitla
d0aafa3624 qca-wifi: Tx capture stability fixes
1) Avoid removing wrong nbuf from queue
   In corner case, the current flow can remove first nbuf instead of
   actual nbuf from queue, this can lead to having the actual pointer
   stored at two array indexs.

2) tsf wraparound handling for mgmt frame

3) Mpdu tried is higher than ba_sisze
   mpdus[] is allocated with ba_size, it is observed that mpdu_tried
   is higher than ba_size, which can lead to buffer overlow.
   Added the check of ba_size along with mpdu_tried.

To avoid it, copied nbuf in the corner case, and left the actual nbuf
in the xretries queue.

Change-Id: Ifa57eaf62cf50aa2c356a6d1f41ef4b7283be52e
CRs-Fixed: 2643848
2020-03-19 16:11:22 -07:00
Linux Build Service Account
ee0b7860ae Merge "qca-wifi: Fix the issue on block ACK for BAR frame" 2020-03-11 02:16:30 -07:00
Linux Build Service Account
922817af53 Merge "qca-wifi: On mpdu copy expand, get reference of fraglist" 2020-03-09 19:14:54 -07:00
Kai Chen
f4aeb4b87e qca-wifi: Fix the issue on block ACK for BAR frame
Fix the issue on block ACK on response to BAR frame.

Change-Id: Ib8b8b55994ed44ed73a4272e0246f0f688118352
2020-03-09 15:56:18 -07:00
nobelj
1e5c16a0dd qca-wifi: Drop MU in tx capture support and other Fix
Fix to support Tx capture for below issues

a. intermittent change to drops all MU frames in Tx capture.
b. Fix to support, FW indicates enqueue bitmap with more bits than
actual MPDUs tried by HW tx capture holds more pending PPDUs, it causes
higher memory usage.
c. holding peer reference on get and release reference on delete
during tx capture.

Change-Id: I0ac5dce7995413585164b6c15dd8b647f0886fb1
2020-03-06 17:34:29 -08:00
nobelj
ae9de3a7de qca-wifi: On mpdu copy expand, get reference of fraglist
Add support to get reference of frag list when doing copy expand of
buffer.

Change-Id: Ia3bf249afab28ea7c50bfe3a6ff567fd95f86e47
2020-03-06 10:41:43 -08:00
Linux Build Service Account
d99bbeb26f Merge "qca-wifi: Add QoS NULL Check for Data Frames" 2020-03-05 04:38:40 -08:00
Christopher Chopp
4b2fd4033d qca-wifi: Add QoS NULL Check for Data Frames
Currently, there is no check for QoS NULL when
handling data frames in the TX Cap feature. This
leads to QoS NULL frames not being seen OTA. Add
a check in dp_tx_ppdu_stats_process to ensure data
frame is not a QoS NULL data frame before handling,
since QoS NULL payload comes in management path.

Change-Id: I9fa2e68115327a283b241214ff62534bcb1ed74a
CRs-Fixed: 2632712
2020-03-04 12:37:52 -08:00
Linux Build Service Account
8a69442922 Merge "qca-wifi: Remove dp_rx_mon.h inclusion from dp_tx_capture.c" 2020-03-03 20:08:46 -08:00