Commit graph

9,664 commits

Author SHA1 Message Date
Manikanta Pubbisetty
7a3b6c8d99 qcacmn: reset monitor filter before ring reap
In monitor mode, as part of VDEV delete, we are reaping
monitor rings to avoid backpressure from RXDMA2SW ring.
Looks like the ring continues to grow even after reaping,
reset the monitor filters before reaping to avoid
ring backpressure.

Change-Id: I0d9dde61b62648f8ce11c15ba23612fc8491fff2
CRs-Fixed: 2807482
2020-11-04 14:19:11 -08:00
Yu Tian
77bd067435 qcacmn: Implement a light weight get_timestamp routine
For some 3rd party platforms, get_timestamp through legacy
kernel API is time costing. For spin_lock/unlock statistics
info, the resolution in ms level is enough. So use another
light weight API to save CPU resource for 3rd party
platforms only.

Change-Id: I9182f00adda0d3081a2c40b222ab37bb1ca9d6a1
CRs-Fixed: 2796263
2020-11-04 01:18:01 -08:00
Jianmin Zhu
2fc30908b0 qcacmn: Select candidate by ETP when connect
If ini vendor_roam_score_algorithm=1, for initial connect, select
candidate by estimated throughput(ETP). Calculate ETP of all
bssid of ssid selected by high layer, and try to connect AP by
order of ETP, legacy algorithm with following Parameters/Weightage
becomes useless. ETP should be [1Mbps, 20000Mbps],matches score
range: [1, 20000].
Add 11ax support besides 11ac/11abgn.

Change-Id: I3f55d2ae37801128b8a66f6d5c2ac55cb11a56d0
CRs-Fixed: 2704154
2020-11-03 19:20:16 -08:00
Yeshwanth Sriram Guntuka
bb7ff7e44a qcacmn: Replenish buffers when reaping non-monitoring ring
Nbufs are reused on non-monitoring status ring, so stale
values will still be present in the status ring nbufs post
channel change. A possible scenario where after mon channel
is changed to 5G from 2G, MAC-0 status ring is processed and
buffer_done tlv tag could be read from the stale nbuf even
though HW does not set this for the latest packet. This could
result in un-map and free of the status_nbuf even before HW
updates the buffer_done tlv tag.

Fix is to replenish buffers instead of re-using the buffers
when reaping non-monitoring status ring.

Change-Id: I239ddae04a57ee1078a6b7399d659ae1295276b5
CRs-Fixed: 2806422
2020-11-03 13:24:39 -08:00
Rakesh Pillai
99773705bd qcacmn: Add flag to indicate not to aggregate FISA flow
Add the flag "is_exception", to indicate that the
packets belonging to this flow are not to be aggregated
by FISA.

Change-Id: I3c1e781d4a2ad251082dacc189f23ffab15ae002
CRs-Fixed: 2810360
2020-11-03 11:28:20 -08:00
Bapiraju Alla
d0077986f1 qcacmn: Validate NDP app info length before accessing NDP app info
Currently, NDP app info length is not being validated with max NDP
app info length. This may result in buffer oveflow wile accessing
NDP app info received from the firmware.

To address this, validate NDP app info length before accessing NDP
app info

Change-Id: Ifddf1afca7ecf2585e8eb450864d9ba127238f6e
CRs-Fixed: 2795961
2020-11-03 09:28:29 -08:00
Kai Liu
673dfce847 qcacmn: Enhance hang info feature
Add bus related info in hif layer in order to get bus status
when hang issue happened.

Change-Id: If922e0892e0f65de778b9696bbc56fc63c25c169
CRs-Fixed: 2801350
2020-11-02 17:38:41 -08:00
Yu Tian
dc0b7858fc qcacmn: add an ini field to control rx frame pending check
Add a ini control field to control rx frame pending check
logic in WoW case. In some cases, power consumption is more
important than rx frame ping loss, so add a control flag

Change-Id: I8c4d3725edddb82a0f06dc70c22a8dd5243209f2
CRs-Fixed: 2806786
2020-11-02 15:18:52 -08:00
Jinwei Chen
e4ae4ddc14 qcacmn: Add reo destination indication info to skb
Get reo destination indication from REO2SW ring descriptor,
store it to qdf_nbuf_cb of skb.

Change-Id: I5a4c504b2550229a77a435b1f5ddb78c4abe51aa
CRs-Fixed: 2809080
2020-11-02 15:18:47 -08:00
Arun Kumar Khandavalli
19b881f876 qcacmn: Add additional vendor specific hang reason codes
Add additional hang reason codes in enum qca_wlan_vendor_hang_reason to
address potential internal failure cases.

Change-Id: I4bf154805d3e06241e9fdd799f1e6ffc4c046fca
CRs-Fixed: 2803747
2020-11-02 13:46:02 +05:30
Rajeev Kumar
2d6951dedb qcacmn: Change QDF per packet proto log level to debug
QDF per packet proto logging is leading to excessive console
logging and hence change QDF per packet proto logging to
debug log level and avoid spamming precious kernel dmesg
log  buffer.

Change-Id: Iae562a8541c81e7708caa822a0ce293e7d6e47f3
CRs-Fixed: 2808600
2020-10-31 09:56:44 -07:00
Jinwei Chen
a262419ead qcacmn: drop duplicated EAP frames from REO exception path
For REO error 7 OOR frame, if they are retry frame under BA
session, then they are likely SN duplicated frame. if deliver
EAPOL to stack in this case, sometimes it will fail to connect
AP as duplicated TX EAP response is seen.
Drop duplicated EAP frames in this case.

Change-Id: Iec0ba37548f2a83fe749f83ec904ec9bfdb306af
CRs-Fixed: 2796226
2020-10-30 22:17:45 -07:00
Jianmin Zhu
be1abeacfe qcacmn: Add MACRO qdf_ceil
Add MACRO qdf_ceil(x, y) as DIV_ROUND_UP(x, y)

Change-Id: I92ecffbaf29c43809712e2b950a8064890e98136
CRs-Fixed: 2807611
2020-10-30 16:03:13 -07:00
Abhishek Ambure
4c11ff65ab qcacmn: Add proprietary status codes for disconnection
Host adds internal status code in enum wlan_status_code.

Change-Id: I17cdcee9f0df1e34cc13425a4f06985a418d5a8a
CRs-Fixed: 2799197
2020-10-30 11:04:22 -07:00
Srikanth Marepalli
b5fcfc4281 qcacmn: Update the PMK crypto cache based on MDID in FT roam
In FT roam when STA connects to AP1 then PMK1 gets cached. And
then STA disconnects from AP1 and connects to AP2 then PMK2
gets cached. Now if STA roams to AP1 then FW uses PMK2 from mlme
session to create the PMKID. But the corresponding RSO command
from driver sends the PMK1 to FW and the same gets updated in
mlme session of FW. This results in failure of next roams, as the
invalid PMKID gets created using PMK1.
This fix helps in deleting the old/stale PMK cache entries for
the same mobility domain as of the newly added entry.
Also the FT-SuiteB AKM is enabled in crypto using this change.

Change-Id: Id147ec40b8e0deacc4c427d396ec973cec483904
CRs-Fixed: 2796105
2020-10-30 00:57:11 -07:00
Gururaj Pandurangi
4a01b28198 qcacmn: Add action OUI to disable TWT
Add a new action OUI to disable TWT for certain APs.

Change-Id: I10fe6218d03f45c132268a120bdeb19d58696d9d
CRs-Fixed: 2793128
2020-10-29 13:17:35 -07:00
Abhishek Singh
9a8f72176b qcacmn: Remove unused connection manager files
Remove unused connection manager files to avoid confusion
during propagation.

Change-Id: I239bef1bd00581915b5ba81ad6ff4af54af61ae0
CRs-Fixed: 2807914
2020-10-29 05:29:29 -07:00
Tiger Yu
e6931110a9 qcacmn: Assertion when detecting rx desc nbuf sanity check failure
Assertion when detecting rx desc nbuf sanity check failure to get more
info in the RX refill buffer ring for default version.

Change-Id: I8d0255e2f13e2b993f5651b788f895ea06187bf9
CRs-Fixed: 2800602
2020-10-28 22:38:05 -07:00
Ananya Gupta
063d89e6cc qcacmn: Check tx completions pending before disabling pipes
wlan Tx completions doorbell is rung after IPA pipes are disabled
To fix this, Check if tx completions are pending before disable IPA
pipes.

Change-Id: I1903e593cd6a546a277979073f0a9ba62b681644
CRs-Fixed: 2796989
2020-10-28 22:08:53 -07:00
Abhishek Ambure
3b9456d1be qcacmn: Add reason codes to report various connect fail
The connection process fails for several reasons and the status codes
defined in IEEE802.11 specification doesn't cover the locally generated
reason codes. Add an attribute to QCA_NL80211_VENDOR_SUBCMD_GET_STA_INFO
vendor sub command which can be used by driver/firmware to report various
additional reason codes for connection failures.

Change-Id: Ibab4696fba34f7a18fb8b5f8601e90c5dfcba89e
CRs-Fixed: 2799153
2020-10-28 02:21:41 -07:00
Karthik Kantamneni
0d69214cda qcacmn: Fix MIC header calculation for MPDU fragmented packets
While performing MIC header check for MPDU fragmented packets
host is expecting last fragment will hold full 8bytes of MIC header,
but this is not true in case of MPDU level fragmentation since
MIC header is part of payload it can split across last two fragments.
Fix this logic by extracting MIC header from last two fragments in case
last fragment doesn't have full 8 bytes of MIC header.

Change-Id: I41aaa35d9a18ac0222ab55be6822f9c9d7f15982
CRs-Fixed: 2790661
2020-10-26 21:50:36 -07:00
Jingxiang Ge
25faca72f5 qcacmn: Support link rate for mcs12/13
This is part of feature which enables link rate
he mcs12/13 for 4k QAM.

Change-Id: Ifade156afca0bf9498383455843b9a7020b53298
CRs-Fixed: 2803008
2020-10-26 17:38:12 -07:00
Ashish Kumar Dhanotiya
2291e38e0b qcacmn: Add conversion of all auth type for big data
Currently host does not convert all internal auth types
to qca auth types which results in invalid auth type
indication for big data logging even for some of the
valid auth types.
For example in current scenario connection hapens in SAE
auth type but driver indicates invalid AKM type.
To address above issue add missing auth type and send
proper auth type to user space as part of the big data
logging.

Change-Id: I2612a081385c2bc888afb032cf6fd2a44d886e40
CRs-Fixed: 2803348
2020-10-26 02:00:15 -07:00
Yeshwanth Sriram Guntuka
8ff658e86f qcacmn: Use the appropriate desc pool for mon status ring
In dp_mon_status_srng_drop_for_mac, the rx_desc pool
used for status ring is dest ring desc pool which is
not the appropriate one.

Fix is to use the appropriate desc pool for mon status
ring.

Change-Id: I6f178354789212b375a7a541366bef590a925568
CRs-Fixed: 2800658
2020-10-23 17:42:13 -07:00
Rakesh Pillai
11a2e260a2 qcacmn: Increment skb users for TSO pkt before enqueue of first segment
TSO packet segments are enqueued to the HW individually.
The skb users count is incremented for each additional
segment, so that it is freed only when the TX completion
for the last segment is received.

Currently the skb users is incremented for the additional
TSO segments after the previous segment has been enqueued
to the HW. Due to this, there is a chance for the tx
completion for the first TSO segment to be received even
before the skb users is incremented to account for the
remaining TSO segments, thereby leading to use-after-free
scenarios.

Fix this by incrementing the skb users for additional
TSO segment before enqueueing the previous TSO segment
to the HW.

Change-Id: Idebc28719ba6f0223d5454e15c3cde349803816e
CRs-Fixed: 2801777
2020-10-23 15:28:55 -07:00
Rakesh Pillai
d0ca112563 qcacmn: Add reo dst indication to FISA flow table
Add the reo destination indication value in
the FISA flow table. The reo destination
indication will be saved for every flow.

Change-Id: I58782cc7be7dd686dc9e0f5837e6bbe406cc1514
CRs-Fixed: 2803079
2020-10-23 13:18:24 -07:00
Manikanta Pubbisetty
e5b23669d2 qcacmn: reap monitor rings before vdev delete
In monitor mode, as part of VDEV delete, monitor mode
poll timer is stopped; it is good to reap the monitor rings
once after timer stop to avoid crashes that arise due to
RXDMA2SW ring backpressure.

Change-Id: Ib15b3398087073ad053616c6aa68e295eaebdd17
CRs-Fixed: 2796608
2020-10-22 15:03:30 -07:00
Abhinav Kumar
c705c08d66 qcacmn: Resolve compilation error
Resolve compilation error by enabling
CONFIG_WLAN_TRACE_HIDE_MAC_ADDRESS := y

Change-Id: I336cd48db05e2e785ae1234ee5d135b68c532b77
CRs-Fixed: 2797225
2020-10-22 15:03:25 -07:00
Yeshwanth Sriram Guntuka
40cae990ee qcacmn: Increase ring size for REO exception ring
Increase ring size of REO exception ring to 256
entries.

Change-Id: Ifd1395578e1f80741208ea2cbb0a82b9b661c01b
CRs-Fixed: 2796249
2020-10-21 11:29:01 +05:30
Nisha Menon
8480e47e7b qcacmn: Add support to map generic shadow regs
Add apis to map generic registers to shadow region. Existing
logic includes mapping only srng based regs to the shadow
region.
Add support to map REO control regs and WBM2SW2 rel
ring HP reg address to the shadow region in case the direct
reg writes in IPA enable/disable autonomy fail due to UMAC
block being in a power collapsed state.
Shadow reg mapping for these regs is provided to FW during
init. Add stat shadow_reg_write_fail to track shadow reg
write failure and shadow_reg_write_succ to track successful
shadow writes.

Change-Id: I04790765a3de80047689657e2cad0b73123440b9
CRs-Fixed: 2790321
2020-10-19 19:35:26 -07:00
Tiger Yu
51c0170a3a qcacmn: Log limit to DMA not done when reaping Monitor status ring
Add log limit to error "DMA not done" when reaping Monitor status ring
to avoid flooding other useful driver log.

Change-Id: I251ef8082d49bfdbcc6a234224cbefdba608b5f5
CRs-Fixed: 2798732
2020-10-19 19:35:22 -07:00
Gururaj Pandurangi
3e765ab111 qcacmn: Rate limit log in reg_get_chan_enum_for_freq
Rate limit log in reg_get_chan_enum_for_freq() API
to prevent excessive logging.

Change-Id: I52248877b5741f1f6a459b3f5240cabafbf1af05
CRs-Fixed: 2798752
2020-10-19 17:39:37 -07:00
Yeshwanth Sriram Guntuka
4b09e9a65c qcacmn: Drop packets from RXDMA2SW ring on the non-monitoring MAC
In monitor mode, if channel is initially configured from 5G
band and then moved to channel from 2G band, packets are still
received on MAC-0 RXDMA2SW ring since IMPS is disabled for both
MACs. Since driver reaps only MAC-1 RXDMA2SW ring, ring full
condition is hit for the MAC-0 ring causing ring backpressure.

Fix is to drop packets received on the non-monitoring MAC
ring.

Change-Id: I49cb276827f4a06791183ee3fe8c88ba84df085d
CRs-Fixed: 2791341
2020-10-19 17:39:32 -07:00
sheenam monga
03868d37ba qcacmn: Avoid excessive logging
log level for some frequent prints is set to info those
logs would be present in dmesg as well as driver logs
and System performance may get affected due to excessive
logging.

Avoid redundant logs which may affect system performance
and change default log level to debug.

Change-Id: Ic8669c2d7158200e5881bc1ffd15079c8d24af68
CRs-Fixed: 2794518
2020-10-19 01:29:32 -07:00
Ankit Kumar
ba297b4635 qcacmn: Handle MPDU having more than QDF_NBUF_MAX_FRAGS MSDU
Handle case in mon dest ring buffer processing,
where one MPDU can have more than QDF_NBUF_MAX_FRAGS MSDU.

Change-Id: If09099814b7f701efbaa20b1406958ad97d64829
CRs-Fixed: 2788919
2020-10-18 13:13:40 -07:00
Bapiraju Alla
197d0d1d32 qcacmn: Use wmi msg length to allocate WMI buffer for QMI events
For QMI events, recevid QMI event length is used to allocate wmi buffer
using wmi_buf_alloc. The received QMI event length includes WMI head
room and wmi_buf_alloc also try to reserve WMI head room again.
Because of this, WMI buffer allocation is exceeding max WMI msg length.

To resolve this, use length of the received actual WMI msg to allocate
WMI event buffer using wmi_buf_alloc.

Change-Id: Icd259988c4b1091580a35aaf2c3fabc606e0f2a9
CRs-Fixed: 2786326
2020-10-16 09:18:52 -07:00
Vevek Venkatesan
f9a40c9c7b qcacmn: add API to do IPA Tx buf smmu_unmapping for Hastings
Add API to do IPA Tx buf SMMU-S1 unmapping and register it
with cdp ops for Hastings, also assert if map/unmap failed.

Change-Id: I4071b5fccd84c3c97b9dccc40c6f798d70993189
CRs-Fixed: 2792170
2020-10-16 04:04:41 -07:00
Surabhi Vishnoi
236f208b48 qcacmn: Fix the incorrect check in is_service_enabled_tlv
Many firmware do not send wmi_ext_service bitmap in wmi_ready event
so the ext_service_bitmap will be empty in such cases. So the condition
in the is_service_enabled_tlv to check for wmi_ext_service bitmap
and return false is wrong as wmi_ext_service bitmap support is not
necessity. This condition leads to incorrect behavior in cases when
firmware do not support wmi_ext_service bitmap as is_service_enabled_tlv
returns false for every service.

Fix the above failure by addition of condition check for wmi_ext_service
bitmap only when wmi_ext2_service bitmap is supported by firmware.

Change-Id: I94d0b65e640d44f41d14de889955a6d6330e88b2
CRs-Fixed: 2786491
2020-10-14 23:48:28 -07:00
Ananya Gupta
80d4112d86 qcacmn: Deregister IPA handler from pdev during deinit
A htt message arrived after ipa context is freed as part of
deinitialization which was dereferenced by event handler
assigned to pdev->ipa_uc_op_cb, resulting in crash.
To fix this, during deinit pdev->ipa_uc_op_cb is deregistered
and assigned NULL before freeing up ipa context.

Change-Id: I8125cb104a538e88cda93960f7443129fabd850a
CRs-Fixed: 2793295
2020-10-13 22:03:53 -07:00
Alan Chen
1aa3228b26 qcacmn: Remove code relating to ocl_cfg
As part of removing gOclCfg ini, remove code used for it that is
no longer needed.

Change-Id: I00c32988cb3b852381be9810377aeefdd22454db
CRs-Fixed: 2791469
2020-10-13 11:31:25 -07:00
Yeshwanth Sriram Guntuka
e73dca7918 qcacmn: Increment htc runtime cnt prior to hif_send_head
HTC runtime count is incremented after posting the HTT
ver req message to CE4. There could be possibility of
processing the ver response message from FW even before
htc_runtime_cnt is incremented. This can casue RTPM put
to not happen causing imbalance in get/put count.

Fix is to increment htc_runtime_cnt before enqueuing
the HTT message to CE.

Change-Id: Ib9b69910cd14193c41ecfee804b390f8a6cdef49
CRs-Fixed: 2794451
2020-10-12 18:13:03 -07:00
Manikanta Pubbisetty
5d62c5a686 qcacmn: log additional info to WMI TX completion record
Add WMI command buffer address information(DMA/Physical addr) to
the WMI TX completion logging. This will help in debugging issues
when HW DMAs copies data from a different location than the one
configured.

Change-Id: I60586b865a97e7ff88e48606806ec151321ff0aa
CRs-Fixed: 2789492
2020-10-12 11:20:38 -07:00
Bapiraju Alla
395f598b0a qcacmn: Send unified ll_stats and get_station request over qmi
Send unified ll_stats and get_stats request over qmi based on INI
configuration.

Change-Id: Icc43352c1ba19696148619100ee27fda4d5ffb41
CRs-Fixed: 2791043
2020-10-12 03:34:05 -07:00
Wu Gao
3dacd2198e qcacmn: Don't reset vdev id if stop spectral scan
Host gets spectral scan data after stopped spectral scan, then it
can't find out current vdev since vdev id is reset when stopping
spectral scan.

Change-Id: I082b784e998a7600c7f8ef14bf67b790942f3a5f
CRs-Fixed: 2779397
2020-10-11 22:14:02 -07:00
Karthik Kantamneni
7a14068866 qcacmn: Add API to get reo destination indication for QCA6750
Add hal_rx_msdu_get_reo_destination_indication API for QCA6750
target. Add NULL check to avoid possible null pointer dereference
for targets API is not supported.

Change-Id: I2c78e16a6796b0b09834cb91749244357f3de753
CRs-Fixed: 2793284
2020-10-10 21:08:17 -07:00
Bapiraju Alla
dfa4f31e16 qcacmn: Add support for dynamic dwell time in 6G
Currently, there is no provision for dynamic dwell time control in 6G.

Update existing driver commands SETDWELLTIME and GETDWELLTIME to
support 6G.

Change-Id: Id284097e300f3ed45557ebe7ea2287e0da9a485b
CRs-Fixed: 2789720
2020-10-10 12:41:32 -07:00
Pragaspathi Thilagaraj
5e99afc882 qcacmn: Add additional roam triggers to qca_vendor_roam_triggers
Introduce QCA_ATTR_ROAM_CONTROL_SCAN_SCHEME_TRIGGERS
that represents the triggers for which the scan scheme from
enum qca_roam_scan_scheme has to be applied.

Change-Id: I9d620a0ada16093042befaf8ae2e80437369c256
CRs-Fixed: 2785260
2020-10-09 20:37:55 -07:00
Mainak Sen
2fff780f0c qcacmn: Add cdp ops for MSCS feature
Add a new cdp datapath ops - mscs_ops for Mirrored
stream classification signalling feature. This function
will be invoked from ECM flow acceleration manager

Change-Id: I749623846395057b6ea8328c881efa8733700b0e
2020-10-08 22:58:50 -07:00
Saket Jha
f1f08215b4 qcacmn: Stop FISA if frame rings mismatch
If frames from the same FISA flow goes into different REO2SW rings, it
will result in an unexpected FISA behavior. This can happen if the
frames have been reinjected from FW offload module since FW will select
REO2SW1 ring. If the same flow frames hash to other REO2SW rings, then
the same flow UDP frames will do to different rings.
Reo_destination_indication of 6 indicates if the frame has been
reinjected from FW. If so, then continue to deliver the packet without
FISA.

Change-Id: I14a17a10d04909adfb30557d58beb1610e59bf70
CRs-Fixed: 2790292
2020-10-08 17:42:40 -07:00
Sandeep Puligilla
9021ccbdeb qcacmn: Update Non-TX beacon capabilities
Non-Tx beacon generated in driver contains TX
beacon capabilities instead of capabilities
advertised as part of non-TX profile in MBSSID IE.

Copy the non-TX beacon capabilities from MBSSID IE
profile to driver generated non-TX beacon.

Change-Id: Iecf63b959176bac8d60055e6b77082a6f3ec117c
CRs-Fixed: 2789394
2020-10-08 17:42:37 -07:00