Commit Graph

8386 Commits

Author SHA1 Message Date
Rakesh Pillai
f2e0f22bf7 qcacmn: Fix stack frame overflow for dp_rx_process
dp_rx_process stack frame has grown to exceed the
stack frame size of 4096. dp_rx_deliver_to_stack_no_peer
is a big function which should not be inline. Calling it
in other function increases the stack size consumed by the
caller function a lot.

Since dp_rx_deliver_to_stack_no_peer is not called very
frequently from dp_rx_process, changing its type to non-inline
function does not hit the core rx datapath much. Hence
change dp_rx_deliver_to_stack_no_peer to a non-inline
function.

Change-Id: Ib042f74c1f5a9cbe5fd947a24f004bb2fecf1fb1
CRs-Fixed: 2636365
2020-03-16 03:47:48 -07:00
Amir
252b67e048 qcacmn: Add HAL layer changes for full monitor mode
Add HAL layer changes for full monitor mode.

Define HAL API and Data structures to read sw_monitor_ring
descriptor.

CRs-Fixed: 2630982
Change-Id: I015fa106d9da74222bef092d50e96fc70a117a4a
2020-03-15 23:45:58 -07:00
Edayilliam Jayadev
4e5b760643 qcacmn: Enable 160 MHz Spectral scan in QCN9000
Till IPQ8074/IPQ8074_V2 each Spectral detector was capable of
doing scan up to 80 MHz. But in QCN9000 each Spectral detector
is capable of doing scan up to 160 MHz. As a result there will
be only one Spectral report in 160/80p80 MHz. Modify Spectral
Rx path to support single Spectral report in 160 MHz.

Change-Id: I9639cdc6adc6ad80e2769571b06d2a2021d699bc
CRs-Fixed: 2619544
2020-03-14 18:16:25 -07:00
Abhishek Singh
171ac51c1a qcacmn: Fix uninitialized RNR list and OOB memory access
Fix the case where RNR list can be used uninitialized and
fixed the OOB memory write access in 6Ghz BSSID and SSID hints
in scan req.

Change-Id: Ifc6a5f65876cd3ace744031bf59a3640409b63da
CRs-Fixed: 2637039
2020-03-14 12:45:45 -07:00
Lincoln Tran
a329901cca qcacmn: Add regulatory API to get country code
Implement function to allow regulatory code to get country code and source

Change-Id: I2713913ba212509e778229b3041363a32ca6049e
CRs-fixed: 2634077
2020-03-14 12:45:29 -07:00
Liangwei Dong
86dd484d69 qcacmn: Radar event process based on concurrency policy
Per requirement, if STA+SAP is working on same 5G DFS
channel and INI g_sta_sap_scc_on_dfs_chan = 2, the
SAP DFS master is temporarily disabled to skip radar event,
and it will follow STA's channel movement. So, skip the
radar event processing based on STA+SAP concurrency policy,
otherwise the SAP would be stopped by kernel because the
current home channel is marked "disabled" by regulatory
during processing of radar event.

Change-Id: I3f851fe694c0e127665732894306e20f5d1c93f4
CRs-Fixed: 2636200
2020-03-14 09:15:37 -07:00
Sumedh Baikady
c673777be4 qcacmn: Add WMI event support for dynamic Muedca
Add support for WMI event to host to process
dynamically selected Muedca values and update
the mgmt frames with the new set of values.

Extract the params and store in Muedca_param
struct from control path, to be used for
updating mgmt frames.

Change-Id: I6cc7756d1a246ff994edef195f6191d280bc5c47
2020-03-14 09:15:20 -07:00
Alan Chen
5320ccb4d6 qcacmn: Remove static from nla_policy btc_chain_mode_policy
Remove static from nla_policy btc_chain_mode_policy in correspondence to
the change to add policy attribute to BTC_CHAIN_MODE vendor subcommand.

Change-Id: Ie33542199d27f6b9d8ea5e0a1a063b71ecb7fd94
CRs-Fixed: 2635059
2020-03-14 09:15:03 -07:00
Alan Chen
31f4e86ecb qcacmn: Remove static from nla_policy spectral_scan_policy
Remove static from nla_policy spectral_scan_policy in correspondence to
the change to add policy attribute to SPECTRAL_SCAN vendor subcommand.

Change-Id: I764a51f5c1355cb0c3dd2096e6dc7ee332b2f3d6
CRs-Fixed: 2634075
2020-03-14 03:25:12 -07:00
Guisen Yang
b1d228b9aa qcacmn: Change print format for pointer and timer
Build failure happen when use the incorrect print format for
pointer. The timer type should not be used for time difference.
Use %pK for pointer format, and change the variable type to
uint64_t for delta_us.

Change-Id: I7da553ee2a770e4498a23f16d5187dec74357635
CRs-Fixed: 2639868
2020-03-13 23:50:54 -07:00
Jianmin Zhu
2ba2d3eda3 qcacmn: Mixed error code and tx power
When channel invalid, error code is treated as
tx power value by the caller.

Change-Id: Ie37c7f04734be46b6237acffe02eed3f31923012
CRs-Fixed: 2636772
2020-03-13 17:29:15 -07:00
Paul Zhang
063ee32509 qcacmn: Initialize num_phy in reg_program_default_cc
When regdb is non offload, it invokes ucfg_reg_program_default_cc
to initialize the default country code. Because the num_phy is not
initialized and the country code source cannot not initialize
properly in function reg_process_master_chan_list, 11d cannot be
triggered.

Solve the problem mentioned above by initializing num_phy in
reg_program_default_cc. Since it is non-offload, initialize
num_phy to 1.

CRs-Fixed: 2584347
Change-Id: Idaed2badc908c74bcbb9312368fed8cbb71ac69c
2020-03-13 15:32:33 -07:00
Sourav Mohapatra
918e46deec qcacmn: Add policy attribute to QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN
According to new changes in kernel 5.2 version onwards, driver has to
provide the policy for a NL command to be verified against while
registering wiphy to the kernel.

To accommodate these changes, add policy to the following vendor
command that is being registered in the driver.

	QCA_NL80211_VENDOR_SUBCMD_ABORT_SCAN

Change-Id: I7cd4e6c50a48580a124e36c32b9cbebe557c04bf
CRs-Fixed: 2621311
2020-03-13 08:39:43 -07:00
Padma Raghunathan
9946d36d19 qcacmn: Add CFR feature support
Add CFR feature support for WIN and MCL.

Change-Id: I135409c00df953ad7ae4e570418403b11ebc1bc7
CRs-Fixed: 2639069
2020-03-13 06:47:56 -07:00
Chaoli Zhou
2e0fb4fd50 qcacmn: Change copy engine 8 entry numbers
From Genoa firmware request, in order to improve
the IPA througput, increasing the number of copy
engine 8 entries and other nbytes values.

Change-Id: Ib1ae170c3b3f5af61d03ad8a60bc616b7a58a725
2020-03-13 06:47:45 -07:00
Krishna Rao
857b254f72 qcacmn: Add attribute for dwell time in QCA vendor scan
Add an attribute QCA_WLAN_VENDOR_ATTR_SCAN_DWELL_TIME for specifying
dwell time in the QCA vendor scan command. This is a common value
which applies across all frequencies requested in the scan.

Additionally, update the existing definitions in enum
qca_wlan_vendor_attr_scan to the exact code upstreamed.

CRs-Fixed: 2633010
Change-Id: I09feccc99fb8e53538d495345eda9744e36fc5b4
2020-03-11 08:11:01 -07:00
Bapiraju Alla
bdcc78d3ea qcacmn: Remove dummy NLA parsing in driver for kernel >= 5.2
Existing dummy NLA parsers are triggering illegal memory access
with kernel versions 5.2 or later.

To resolve this, revert the change
Iea1fdcac3000ede2f8b9398cb85443e545cdd3f0 (Add dummy NLA parsing
in driver for kernel >= 5.2).

Change-Id: I8804d5aefefec248a1b82d1ca92ffaab56aa539f
CRs-Fixed: 2638303
2020-03-11 06:50:49 -07:00
hqu
a3dc09cce3 qcacmn: Define pointer p_dcs_im_stats instead of dcs_im_stats
Both im_intfr_cnt and im_samp_cnt need to store for following
dcs event process, dcs_im_stats is a local variable, so both
im_intfr_cnt and im_samp_cnt value will be missing when function
wlan_dcs_wlan_interference_process return.

Fix is to define pointer p_dcs_im_stats for use.

Change-Id: I39622fbf0153271f27a03387ace4a270a912b6ff
CRs-Fixed: 2638316
2020-03-11 03:49:50 -07:00
Kai Chen
b1a940fa76 qcacmn: Fix issue on block ACK on response to BAR
Fix the issue on block ACK on response to BAR frame.
Parse BAR frame received from monitor destination ring and
generate block ack frame from BAR frame and previous block
ACK frame.

Change-Id: Ifc242b3850630aa25827b003a1e2078a9228358a
2020-03-11 01:47:02 -07:00
Abhiram Jogadenu
928035a1a4 qcacmn: Use global opclass for 6GHz channel lookup
For 6G band, only valid opclass_table is the global_op_class
as per the current specification. Therefore, if the band is 6G
set the opclass to global_op_class instead of the default class.

Change-Id: I43d1be8266aa80b11c446d84bc3d027cde8bebea
2020-03-10 03:53:14 -07:00
Nisha Menon
af7af90906 qcacmn: SMMU fault as iova to phy address is invalid
IPA pipes are not disconnected successfully when the last
client disconnects and despite that smmu mappings given
to IPA for the buffers are released.
Assert instead of releasing the smmu buffer mappings as
IPA has stalled and is in a non-recoverable state.

Change-Id: I9a9a35a4019726421d7435b62defe8da4907d4e0
CRs-Fixed: 2627889
2020-03-09 20:58:50 -07:00
Mohit Khanna
ace98f847f qcacmn: HIF APIs to prevent/allow low power states
Add HIF APIs to prevent or allow link to go into low power states. The
current implementation uses PLD APIs to make the needed configuration.

Change-Id: I22efb4bcf902f9aff674ed1872f4f23bef508aae
CRs-Fixed: 2602029
2020-03-09 20:58:34 -07:00
Mohit Khanna
b4429e8278 qcacmn: Add delayed register write support in HAL
In case the bus is in low power mode, the register writes (followed by a
memory barrier) may take a long time (~4ms). This can cause the caller
to block till the PCIe write is completed. Thus, even though PCI
writes are posted, it can still block the caller.

Hence, in case the bus is in low power mode (not in M0), or not in high
throughput scenarios, queue the register write in a workqueue. The
register write will happen in the delayed work context. In other cases,
i.e ,when the bus is not in low power mode or in high thoughput
scenarios, do the register writes in caller context.

Change-Id: Idf218e4581545bc6ac67b91d0f70d495387ca90e
CRs-Fixed: 2602029
2020-03-09 20:58:23 -07:00
Amir Patel
d5a7a4ca89 qcacmn: Revert "qcacmn: Replenish last entry in monitor status ring"
This reverts commit I7da6cd6006243cbca2151da22a31a6f5ed0015f3

Change-Id: I04ceeeeabb5f94bfcd81e10280dcd017da537c81
2020-03-09 14:52:57 -07:00
Ankit Kumar
673a66042b qcacmn: Retrieve peer from mac based search
Use mac based search to avoid use after free Peer.

Change-Id: Ie6c3e82f3bb95cdf4c6504e95704e821bbd19e24
2020-03-09 08:24:21 -07:00
Yeshwanth Sriram Guntuka
06c7cbb878 qcacmn: Modify pkt string for logging to console
Modify the qdf_get_pkt_type_string API to return
the packet type in case the packet does not fall
under the tracked packet subtypes and also increase
the rate limit values for EAPOL and DHCP packets.

Change-Id: Ie9681be64572346a09529043ef38dd57338700bb
CRs-Fixed: 2636540
2020-03-09 03:12:01 -07:00
nobelj
7b76263659 qcacmn: QDF API for skb_clone_fraglist along with copy expand
Add API wrapper function for skb_clone_fraglist along
with skb_copy_expand.

Change-Id: Ib03e16566368d75a7a547fea6fd863e6411f98ef
2020-03-08 00:05:27 -08:00
Paul Zhang
09849da4ce qcacmn: ignore WMI_REG_CHAN_LIST_CC_EVENTID
If reg offload is disabled, then ignore the processing of
WMI_REG_CHAN_LIST_CC_EVENTID in regulatory module.

Change-Id: I5da0cdf2c80357d03199fa367137cc236f4c3307
CRs-Fixed: 2625784
2020-03-07 14:33:48 -08:00
Saket Jha
d364435727 qcacmn: Validate rx return_buffer_manager
Host rx return_buffer_manager should always be 4 or 6. Add check for
invalid return_buffer_manager value in ring descriptor.

Change-Id: I509dd58ddd89e6a0ce1bffa509dcfabbd0fbc975
CRs-Fixed: 2632372
2020-03-06 18:52:30 -08:00
Chaithanya Garrepalli
9668aeef28 qcacmn: Fix SG target assert issue
In SG mode use correct QDF apis to populate
the extension descriptor

Change-Id: I828d11481b013facb07f22a119ab9b3f35912f22
2020-03-06 08:37:20 -08:00
Naga
5e9b98b42c qcacmn: Reset rsp_timer_inuse only for delete
Reset rsp_timer_inuse field only for vdev
delete target_if timer expiry case.

Change-Id: I6e286914f8954d568b8125031954621043945661
CRs-Fixed: 2635483
2020-03-06 07:05:05 -08:00
Abhishek Singh
d9e7ba7cc6 qcacmn: Optimize logging in crypto module
Optimize logging in crypto module.

Change-Id: I4da7dfcaae81f9a6511bce5b422b5e81faa189ef
CRs-Fixed: 2635263
2020-03-05 14:02:14 -08:00
Pavankumar Nandeshwar
d1aac5b3c3 qcacmn: Send peer_id in peer_add_wds_entry API
Send peer_id in peer_add_wds_entry API of ol_if_ops,
so that the dp peer doesn't need to be explicitly
retrieved in corresponding offload API.

Change-Id: Ia32d31946de43e9faa1970f4e74f2810f4125995
CRs-fixed: 2629475
2020-03-05 08:28:02 -08:00
sheenam monga
a6cb1901a5 qcacmn: Log optimization for NCHO
Currently information is printed in multiple lines that
can be represented in single line.

Change-Id: I7f53acaa4cabd1c970b06cdd82e0c462ffcdffe1
CRs-Fixed: 2617812
2020-03-05 05:38:38 -08:00
Bapiraju Alla
d8981f1ce9 qcacmn: Add timer in use check before cancelling a vdev response timer
Currently there is no check for whether the timer is in use or not before
cancelling a vdev response timer. Because of this hdd is trying to cancel
a vdev response timer that is not initialized. This is causing crash in
the kernel.

To resolve this issue, add vdev_rsp->rsp_timer_inuse check before
cancelling a vdev response timer.

Change-Id: Ibc82e7698472d11b0803dfc77d654b1ad33aa375
CRs-Fixed: 2630621
2020-03-05 04:13:53 -08:00
Himanshu Batra
ba2b72b351 qcacmn: Update the wmi flags for bcn rate code
In the current implementation the wmi cmd flags to enable bcn rate
code n start req are not getting updated as the flag param is passed
to the API by value and not by reference.
Update the API argumets to pass the wmi cmd flag param by reference.

Change-Id: I8bca4ce78ce68f7b0d05af871641a86bf6622607
CRs-Fixed: 2633704
2020-03-05 01:40:28 -08:00
Nirav Shah
9ae1975ec5 qcacmn: Fix "maybe-uninitialized" compilation error
Initialize to fix "maybe-uninitialized" compilation
error for specific compilers.

Change-Id: Ibb049891ef5847d1beda94470a6e75ebba145ef4
CRs-Fixed: 2634848
2020-03-05 01:40:12 -08:00
Srinivas Pitla
4f48adea18 qcacmn: Fix EAPOL frames issue in Tx capture
This change fixes issue with EAPOL frames in Tx capture
EAPOL frames completions are received with ACK completion.
For ACK completion, ba_size, ba_bitmap, ba_seqno are not updated earlier.
it was leading to dropping the frames in driver.

This fix updates ba_size, ba_bitmap, ba_seqno for QOS TID frames in ACK
completion handler

Change-Id: I58308a13c1b6addb95f424aa7ad45fe64e93b532
CRs-Fixed: 2620890
2020-03-04 22:59:15 -08:00
Naman Padhiar
f675e5c4f4 qcacmn: Set DMA mask as 37 for WCN6750
Set DMA coherent mask as 37 for WCN6750.

Change-Id: I1fdd98a9c221d2e8ee1ff730e37bd0adaed54dd6
2020-03-04 22:58:59 -08:00
Mohit Khanna
b34654bd55 qcacmn: Callback to get current bandwidth level
Add HIF callbacks to get current bandwidth level from upper layers.

Change-Id: I18524558296f4b7d684f18b0e6615b2a0516b6d2
CRs-Fixed: 2602029
2020-03-04 21:19:30 -08:00
Liangwei Dong
bdd5fcef82 qcacmn: Clear lock->lock.dev to NULL after wake lock destroyed
In kernel 5.4, Wake lock API wakeup_source_register requires
"struct device *" parameter, and it can be NULL value. If it is
NULL, the wakeup_source_register will create a "device" node and return
it by wakeup_source struct.
In qcacld driver, the qdf_wake_lock_create will save the "wakeup_source"
to cld's private struct qdf_wake_lock->lock.
When the cld driver destroy os wake lock by wakeup_source_unregister,
"dev" will also be invalid in kernel, we need to clear the "dev"
field in local copy of wakeup_source in qdf_wake_lock->lock.
This will fix the potential reuse of qdf_wake_lock->lock.dev after it has
been destroyed.

Change-Id: I1de6e95c64b35929bef8be2cdeeb86422bc38515
CRs-Fixed: 2634032
2020-03-04 11:17:25 -08:00
Jinwei Chen
356c6b714e qcacmn: fix null skb accessing due to incomplete scattered msdu
If RX packets reaped from REO2SW ring hit rx_reap_loop_pkt_limit,
REO2SW ring reaping will break and stop, but for scattered msdu case,
all related buffer should be received one time for further processing,
otherwise dp_rx_sg_create can not handle correctly.

(1) make sure all buffers for scattered msdu is received then allow
break when rx_reap_loop_pkt_limit hit.
(2) refine skb unmap location in case msdu_scatter_wait_break logic is
hit, then may double unmap for same skb(not for current issue).

Change-Id: I85d385ee9c3b1a5ed56ae5e5b68636d04968553f
CRs-Fixed: 2632082
2020-03-04 09:56:49 -08:00
Alok Kumar
32de2fe166 qcacmn: Fix compilation and update SHADOW REG OFFSET for qca6750
For qca6750, update the SHADOW REGISTER OFFSET value and
fix the compilation issue.

Change-Id: Ic4b44c1c40e62ddcc50c0a66d37c0663a70b5c54
CRs-Fixed: 2633044
2020-03-04 07:30:44 -08:00
Hariharan Basuthkar
ee4dcfe6d7 qcacmn: Add the API wlan_reg_get_band_cap_from_op_class
Add the API wlan_reg_get_band_cap_from_op_class to get the supported
band capability from an list of operating class as input.

Change-Id: I58dc0bbe7c5436b889c12ac2d68bd769a3c702cf
CRs-fixed: 2617526
2020-03-04 01:27:27 -08:00
Debasis Das
eb601eca1e qcacmn: Fix DSCP to tid mapping for Tx packets
Write TID-no correctly for DSCP-value if
2 consecutive registers are needed to configure
the mapping.

Change-Id: I857f95e2d1bda0214a32b2802f1dcc460be87085
2020-03-03 23:54:10 -08:00
Liangwei Dong
54be27be16 qcacmn: Add an API to get frequency from country,chan,opclass
Add wlan regulatory API reg_country_chan_opclass_to_freq
to calculate channel frequency given country, opclass and channel
number. The API gets channel frequency from country's operating
class table by opclass and channel number pair. If the driver
can not find the pair, then try to find the frequency (MHz) by
channel number only.

Change-Id: I6a23a53e2e53e0b7c81b36f9f5c7794e9749c734
CRs-Fixed: 2605920
2020-03-03 22:20:37 -08:00
Abhishek Singh
5b92984b0b qcacmn: Optimize cp stats prints
Optimize cp stats prints

Change-Id: Idbaa19cc22e2ebcefdbae08169071203cd6ccc49
CRs-Fixed: 2633501
2020-03-03 18:55:32 -08:00
Pankaj Singh
ab8d9337ce qcacmn: Clean up logs in Tdls path
Clean up redundant logs in tdls path.

Change-Id: Ibb47110b82ffc6ddd37442f5a058746d4350cfe3
CRs-Fixed: 2625103
2020-03-03 18:55:25 -08:00
Rakesh Pillai
7a26da4e7e qcacmn: Validate the rx descriptor before dereferencing
The rx descriptor obtained using the cookie
can be NULL if the cookie is invalid. Hence
dereferencing the rx descriptor without any
validation can cause invalid address access.

Fix this by validating the rx descriptor
which has been obtained using the cookie from
the hal ring descriptor.

Change-Id: Ib584f0d8175b581d15b0e1c67d2f6ed9119ecbfc
CRs-Fixed: 2629254
2020-03-03 18:55:00 -08:00
Amir Patel
605e44bf31 qcacmn: Move dp monitor inline APIs to header file
Move dp monitor inline APIs to header file from dp_rx_mon_dest.c
to dp_rx_mon.h to use it in component dev

CRs-Fixed: 2626054
Change-Id: I3a31dacd7d7e817f144708f9bda5536808080864
2020-03-03 18:54:37 -08:00