Commit graph

8,512 commits

Author SHA1 Message Date
Karthik Kantamneni
765d5e27ed qcacmn: Make DMA coherent mask macro independent of IPA offload
Macro DMA_COHERENT_MASK_IPA_VER_3_AND_ABOVE is used in non
IPA offload case also so bring this macro definition out of
IPA offload feature and change it to DMA_COHERENT_MASK_DEFAULT.

Change-Id: Ib03aa8ae2938e1de1a957660923a711d452a9337
CRs-Fixed: 2649909
2020-04-02 22:16:38 -07:00
Sourav Mohapatra
1929eefb7f qcacmn: Reset vdev_resp->timer_status to properly handle timers
The vdev_resp timer status is a persistent variable that is not reset
after a cycle of send/timeout is completed. This causes the old value to
induce faulty behavior for the next cycle.

For example in the case when vdev_start response is dropped, the timer
status is set to TIMEDOUT and this status remains as such for the next
time vdev_start response is received successfully. In this case, instead
of deleting the timer, as the status is a faulty TIMEOUT - no action is
taken. This causes the kernel to assert.

To resolve the above issue, reset the vdev_resp->timer_status after
stopping the timer.

Change-Id: I8632c117753a7bb1f041d00c4d9395163732f5d9
CRs-Fixed: 2654040
2020-04-02 12:44:56 -07:00
Yu Tian
8abdbcc616 qcacmn: Implement send DELBA per HTT event
Is some cases, FW wants to adjust BA session parameters
FW sends a HTT event and HOST helps to send out DELBA
and modify BA win size in the next round of ADDBA req/resp
exchange to reduce following RX AMPDU aggr-size

Change-Id: I97777ff59a18346f2cd4e2e562c8ae6acdcd69d7
CRs-Fixed: 2644641
2020-04-02 00:12:42 -07:00
Bapiraju Alla
d5d364a58d qcacmn: Add new WMI API for OCL command
Currently there is no provision to configure OCL mode in FW during
driver bootup.

To enable this configuration add a new WMI API wmi_unified_send_ocl_cmd.

Change-Id: Idb936172612ff2ed8ea029d8a363b758625eb97d
CRs-Fixed: 2647631
2020-04-02 00:12:29 -07:00
Arun Kumar Khandavalli
1f76b82659 qcacmn: update the hang data for htc
whenever there is a wmi command timeout and recovery is triggered,
the htc credit history gives insight into whether host had the credits
to send the command to firmware. Add the credit history from the
htc module.

Change-Id: Iaa760981296862f8af496a23e3c24bc2fda0fb55
CRs-Fixed: 2651744
2020-04-01 21:16:54 -07:00
Bapiraju Alla
acf898a145 qcacmn: Fix return type for scheduler_msg callbacks
This fixes a CFI failure in callback assignment

Change-Id: I760b41b81c006187efb162d410390e1c11878b82
CRs-Fixed: 2643320
2020-04-01 12:40:45 -07:00
gaurank kathpalia
dfbe7d4fd0 qcacmn: Add support for STA+NAN+NDI+NDI
Add support for four port concurrency STA +
NAN discovery + NDI +NDI

Change-Id: I2db59c9c467a7211342c48aa61a2b9faf30a1ea5
CRs-Fixed: 2633983
2020-04-01 10:47:17 -07:00
Rongjing Liao
ed684a92f9 qcacmn: add pointer NULL check in spectral module
Add pointer NULL check before use in spectral module.

Change-Id: I018c52a175157605463c23cce95d78ffea23b867
CRs-Fixed: 2643196
2020-04-01 09:06:17 -07:00
Yu Tian
22eed0e6af qcacmn: Limit the REO cmd number in batch operate
MCL path add the desc back to freelist when FLUSH
failed. It may cause the CMD pending in free list
is even larger than REO_CMD_RING max size and lead CMD
flood then cause REO HW in an unexpected condition.
So it's needed to limit the number REO cmds in a batch
operation.

Change-Id: Ib6b97f0693feb7bb5829bda4683248b495b6c7b3
CRs-Fixed: 2642516
2020-04-01 07:36:33 -07:00
Aditya Kodukula
6a4676ec03 qcacmn: HIF_INFO to log the linkstate_vote in hif_main.c
Add HIF_INFO to log the linkstate_vote value in the hif_vote_link_up()
and hif_vote_link_down() functions in order to log the occurences of
the rare event when we vote for link up/down.

Change-Id: I7549b3400977583bd2cd4ec4fcb3f16dd0865ce7
CRs-Fixed: 2648860
2020-04-01 07:36:25 -07:00
Edayilliam Jayadev
12b6e9d07f qcacmn: Initialize FFT bin boundaries in 165 MHz
Initialize FFT bin boundaries of primary 80 MHz, 5 MHz
and secondary 80 MHz based on the relative position of
primary 80 MHz and secondary 80 MHz segment.

CRs-Fixed: 2653675
Change-Id: I0c9f1fbb55d1023b437c9787e753f3e154b5e08e
2020-04-01 04:15:54 -07:00
Yeshwanth Sriram Guntuka
0ffde7142a qcacmn: Add support to track per peer no ack counts
Add support to track no ack count for different protocol
packets per peer.

Change-Id: I32f04eb3817c1b6c4806c8bb0230db3a71fadb5e
CRs-Fixed: 2643532
2020-04-01 00:21:41 -07:00
Yeshwanth Sriram Guntuka
2a4239d3e9 qcacmn: Move definition of qdf_proto_subtype to different file
Move definition of qdf_proto_subtype to different file.

Change-Id: Ie897ccafbe1a4e1fe0a43399673ecce686bfb7bc
CRs-Fixed: 2653765
2020-04-01 00:21:25 -07:00
Yue Ma
e3c95fdc04 qcacmn: Enhance runtime PM enablement check
Currently HIF runtime PM APIs will check runtime PM enablement using
pm_runtime_enabled() by checking for disable_depth which can be changed
at any time. This may cause usage count imbalance since the HIF API may
skip calling the corresponding runtime PM framework API to increase or
decrease usage count. Enhance runtime PM enablement check so that it
will always honor WLAN ini config first.

Change-Id: I4b2863ef7fa0dcd6fd61b776e6cb0ab109ffb3ec
CRs-fixed: 2647986
2020-03-31 21:03:38 -07:00
Arun Kumar Khandavalli
2982c3a17a qcacmn: update the hang data for wmi
whenever there is a wmi timeout and recovery is triggered, the
wmi history gives insight into reason for the recovery, hence save
the last 5 commands/events to understand the reason for the hang
recovery.

Change-Id: Ie4e0431a8fa6971e6b25b20a6f267341d3f3f4fd
CRs-Fixed: 2650340
2020-03-31 18:16:18 -07:00
Abhishek Singh
6c39710274 qcacmn: Add DPP, CCKM, OSEN and OWE AKM in osif_akm_type_crypto_mapping
In osif_akm_type_crypto_mapping DPP, CCKM, OSEN and OWE AKMs are not
added. So AKM are not added in crypto module.

So add DPP, CCKM, OSEN and OWE enums in osif_akm_type_crypto_mapping.

Change-Id: Ie9e092f591ea03026cbf360abe40c663bdd078fd
CRs-Fixed: 2650380
2020-03-31 15:05:43 -07:00
Arun Kumar Khandavalli
551fd3f134 qcacmn: add the tags for the various hang event
As part of the hang event data population by various TLV format
is used, define tags for all the modules which can be used
while populating the data.

Change-Id: Ie9c53a8781a902ad687a78d1333053b6fae67021
CRs-Fixed: 2651729
2020-03-31 13:26:22 -07:00
Tiger Yu
33bf405da4 qcacmn: Use dp_info_rl instead of QDF_TRACE to avoid aggressive logging
There might be aggressive error logging in the dmesg if wbm_desc_rel_ring
is hang. So use the dp_info_rl instead of QDF_TRACE to reduce aggressive
logging to avaoid spin lock huge delay when processing the
reo_exception_ring.

Change-Id: I4622f28cd6d8771cf27643a867892b62860d1ddc
CRs-Fixed: 2648149
2020-03-31 11:39:39 -07:00
Arun Kumar Khandavalli
2bfa222e36 qcacmn: Add the hang event infrastructure
As part of the new requirement to understand the reason for the
wifi hang the data need to be collected from the required modules
which will help in root-causing the reason for the hang.

Add the infrastructure so that the required modules can register for
this hang event notifier chain.

Change-Id: I32f1365eec1ad7d6e19be95e8faf9a980d054b76
CRs-Fixed: 2648304
2020-03-31 11:39:01 -07:00
Arun Kumar Khandavalli
cf6efc2a39 qcacmn: Add the notifier chain infrastructure
Notifier chains are simple function list executed when an event
occurs. In qdf block and atomic notifier chains are defined.
Blocking notifier chains can be used to invoke a list of functions
based on event in a process context wherein atomic notifier chain
can be used in an interrupt context.

Change-Id: I9020b9f19915e084b017932fb6d0bfad792d745c
CRs-Fixed: 2648224
2020-03-31 11:38:44 -07:00
Ramanathan Choodamani
1f9ff8a62c qcacmn: Add radiotap_num_to_freq() for correct Channel frequency
Function added to convert given channel number to correct
channel frequency using the Channel center frequency and
populate it correctly inside the radiotap header

Change-Id: Iea2a9ee7d496b2aa0dbf8d6741a32d2dbfa3503d
CRs-fixed: 2637424
2020-03-31 04:11:16 -07:00
aloksing
4b45241915 qcacmn: Add check for NULL pointer
Pointer rx_msdu_link_desc returned from call to function
dp_rx_cookie_2_mon_link_desc which may be NULL and may be
de-referenced latter

CR-Fixed: 2645199
Change-Id: I9ccba61df9571fcc99c5d5493194d5ae43a71a7f
2020-03-31 04:11:00 -07:00
Padma Raghunathan
e7d986e168 qcacmn: Avoid to use WIN only APIs
Avoid to use WIN only APIs. This is part of moving CFR to hostcmn.

Change-Id: Ib6be520657b5e6d42eaed4d9c3a3940c691e9d84
CRs-Fixed: 2637130
2020-03-31 00:43:55 -07:00
Wu Gao
ce9aa9088e qcacmn: Fix compilation issues
This is part of moving CFR component to hostcmn. Fix compilation
issues in this change.

Change-Id: Ia0a40da1e7e9201ffc5d1700cccea4181b358842
CRs-Fixed: 2637129
2020-03-30 22:56:08 -07:00
Srinivas Pitla
ebf2f5aa58 qcacmn: update ba_size only when ba_size is 0
For ACK completion, update ba_size, ba_bitmap, ba_seqno
only if these are not updated earlier.

This fix updates ba_size, ba_bitmap, ba_seqno for QOS TID frames
in ACK completion handler, if these are not updated earlier.

CRs-Fixed: 2650482
Change-Id: I1d5f4bdb29a3d5194cd4a1544b39d6aa42903b1b
2020-03-30 17:11:16 -07:00
Yeshwanth Sriram Guntuka
d3db10ec5b qcacmn: Add support to log ce hang event info
Add hif APIs to support logging of ce hang event
data.

Change-Id: I9b930d5f983d57a7359ba9f97ea65050c4f54a8a
CRs-Fixed: 2649148
2020-03-30 17:11:00 -07:00
bings
f5067f066b qcacmn: Return invalid agile detector ID if agile dfs is not supported
When QCA_SUPPORT_AGILE_DFS is not defined, dfs->dfs_agile_detector_id
will not be set and it will be 0, which is also a meaningful detector id.

Currently, if radar_found->detector_id is not set, or set as 0, the
detector ID is recognized as a valid agile detector which is incorrect.

Return invalid agile detector id if agile dfs is not supported.

Change-Id: I259fa6f3f9fbcb4a76567090a8f084e15ee6af93
CRs-Fixed: 2646946
2020-03-30 15:29:34 -07:00
Gurumoorthi Gnanasambandhan
806b7c72df qcacmn: Beacon protection support
Changes to support Beacon protection. Additional key ix 6 and 7
support BIGTK. Update beacon template for Beacon protection support.

CRs-Fixed: 2632290
Change-Id: Ic37d17f5076bb28d2e1f2430da039cc8b9f759b6
2020-03-30 13:40:07 -07:00
Wu Gao
a308b3e970 qcacmn: Add CFR files for QCA6490
Since there are chip differences about channel frequency response. Add
files for QCA6490. This change also adds CFR configure file

Change-Id: Ib200affe4c68dac5535c4a3d65109072559161ff
CRs-Fixed: 2637134
2020-03-30 13:39:43 -07:00
Hariharan Basuthkar
7165baf6ce qcacmn: Add BW macros and rename wlan_reg_country_opclass_freq_check
Add the macros BW_5_MHZ, BW_10_MHZ, BW_20_MHZ, BW_25_MHZ, BW_40_MHZ
to denote channel width and define them as 5, 10, 20, 25 and 40
respectively.

Also rename the API wlan_reg_country_opclass_freq_check to
wlan_reg_is_freq_in_country_opclass.

Change-Id: I6838bd87a9b8d0754909cea414ada4b09ed01643
CRs-Fixed: 2646416
2020-03-30 01:14:51 -07:00
Naga
b805e1fa7b qcacmn: Remove redundant data structure for wmi response extraction
Remove redundant data structure at wmi for vdev delete
response extraction, instead use mlme host data structure.

Change-Id: Iedb4280fb47d6567bc4d7b663ecd6af5e769ddfc
CRs-Fixed: 2641197
2020-03-29 23:02:40 -07:00
Naresh Parat
0e1692f8e7 qcacmn: Add third argument to WMI_DBGLOG_CFG_CMDID
This will allow dbglog_cmd in non-tlv path
Since the fw_header structure "struct dbglog_config_msg_s" variable
"cfgvalid" increased size by one

Change-Id: I0ea9782895083b88250e9187e95456f57fa948b9
CRs-Fixed: 2626544
2020-03-29 07:29:11 -07:00
Pragaspathi Thilagaraj
d449534d0b qcacmn: Fix null pointer dereference at extract_11kv_stats_tlv
In function extract_roam_11kv_stats_tlv, the 11kv channels
tlv is read from the roam_neighbor_report_chan_info tlv if the
neighbor_report_channel_count in roam_neighbor_report_info tlv
is greater than 0. But in some cases, firmware sends value
in the roam_neighbor_report_info->neighbor_report_channel_count
but the roam_neighbor_report_chan_info tlv is not present.

Log error and return if
roam_neighbor_report_info->neighbor_report_channel_count is not
0 and roam_neighbor_report_chan_info tlv is null.

Change-Id: I7fa17d3afaf9d7e6736ad96c60bc5013197480f3
CRs-Fixed: 2644308
2020-03-28 22:00:10 -07:00
Saket Jha
07622e4108 qcacmn: Fix double unmap issue in HTC misc list
Add mutex protection while freeing pkts in HTC misc list to prevent
double unmap of netbuf.

Change-Id: I5c52324e382f8047037ca1d1a50367bc6052b737
CRs-Fixed: 2646771
2020-03-28 12:16:24 -07:00
Jinwei Chen
248f7bd35a qcacmn: fix invalid net_dev fetched from gro queue skb
Dp_rx_vdev_detach() will flush all gro skb to make sure the
net_dev stored in skb is valid before this vdev is down, but
dp_rx_vdev_detach() is only invoked at the end of function
dp_vdev_detach_wifi3(). for some case, if there is still dp_peer
pending when execute dp_vdev_detach_wifi3(), dp_rx_vdev_detach()
won't be invoked.
  Move dp_rx_vdev_detach() before pending peer detection in
dp_vdev_detach_wifi3() so that gro queue skb flushing can be
executed each time.

Change-Id: I0feea5b77de7efab884c0e5822c8671119892f7d
CRs-fixed: 2649385
2020-03-27 22:40:43 -07:00
Vignesh U
c91b3875a7 qcacmn: Assign bin5 radars to MKKN DFS domain
MKKN domain should detect the bin5 radars of MKK4 DFS domain.

Add the bin5 radars to the MKKN domain's bin5 radar table.

Change-Id: I0d0fbe91e56f4a290a675832fe4b9974f9afbf0d
CRs-Fixed: 2645168
2020-03-27 16:43:18 -07:00
Shashikala Prabhu
ee42cb1f26 qcacmn: Use chan freq for restricted 80+80 MHz boundary check
Instead of channel number, use channel frequency for restricted 80+80MHz
boundary  check.

Change-Id: I2fa65c3b1d102acd6b64b4c6e1583d2bc29484d1
CRs-Fixed: 2645155
2020-03-27 15:00:05 -07:00
Wu Gao
cd6291c3a0 qcacmn: Add addition CFR capture type to filter all NDPA NDP frames
Add QCA_WLAN_VENDOR_CFR_NDPA_NDP_ALL in enum
qca_wlan_vendor_cfr_capture_type. This capture type requests all NDPA
NDP frames to be filtered.

Change-Id: I2003975012ad1c486b18a460c8ef2e691379d3d9
CRs-Fixed: 2649260
2020-03-27 12:29:01 -07:00
Wu Gao
bea94af394 qcacmn: Change CFR attributes from required to optional
Some CFR attributes are used frequently with conditions, so change them
from required to optional.

Change-Id: I835906d314bfb4d94100ba7794603de1c2dbcc8d
CRs-Fixed: 2649263
2020-03-27 12:28:44 -07:00
Wu Gao
7c9caaf417 qcacmn: Extend attributes to support enhanced CFR capture
Enhanced channel frequency response supports to capture channel status
information based on RX. Define previous CFR as version 1 and enhanced
CFR as version 2. If target supports both versions, two versions can't
be enabled at same time. Extend attributes for enhanced CFR capture in
enum qca_wlan_vendor_peer_cfr_capture_attr.

Change-Id: If9a5e387f03981eb75f98138fe555f4489ccb377
CRs-Fixed: 2641774
2020-03-27 12:28:28 -07:00
Wu Gao
2b64dc198a qcacmn: QCA vendor subcommand and attributes to configure capture of CFR
Add a subcommand for Channel Frequency Response (CFG) Capture
Configuration and define attributes for configuring CFR capture
parameters per peer and enabling/disabling CFR capture.

Change-Id: I94869b06f8e7eb499ebed8d49e99b342907a9aa1
CRs-Fixed: 2647239
2020-03-27 12:28:12 -07:00
Sourav Mohapatra
bdcd6ce25e qcacmn: Add appropriate hang reason codes for various scenarios
Presently, the reason codes for driver to trigger recovery on are
limited in their scope; most of the scenarios are not correctly
capture.

Add new reason codes to cover all the possible scenarios where the
driver has need to trigger recovery.

Change-Id: Ia257855bc30cd0bc7e81b9d0e21e4b84427d546b
CRs-Fixed: 2630951
2020-03-27 10:20:02 -07:00
Sourav Mohapatra
1f21eadadf qcacmn: Extend qdf_trigger_self_recovery to include psoc granularity
To undergo self recovery, the driver uses qdf_trigger_self_recovery to
initiate the sequence. Currently, this framework is valid for only a
single psoc driver.

Extend this framework to include support for multiple psoc driver by
providing the psoc on which the recovery has to be undertaken.

Change-Id: I782b505c03819223a914dabe7673b369aa175b7c
CRs-Fixed: 2617707
2020-03-27 10:19:41 -07:00
Sourav Mohapatra
1b11ea9161 qcacmn: Add hang reason codes to QCA_NL80211_VENDOR_SUBCMD_HANG
Add more hang reason codes for the hang reason in the
QCA_NL80211_VENDOR_SUBCMD_HANG events. This also introduces the
attribute QCA_WLAN_VENDOR_ATTR_HANG_REASON_DATA to carry the required
data for the respective hang reason. This data is expected to contain
the required dump to analyze the reason for the hang

Change-Id: I4912f896d394667055937faf68c9ceb32a469978
CRs-Fixed: 2650292
2020-03-27 10:19:24 -07:00
Ashish Kumar Dhanotiya
18d4b6fe84 qcacmn: Update the mc timer state after its deleted
Currently qdf mc timer stop api updates mc timer state
to QDF_TIMER_STATE_STOPPED before it deletes the timer which
may lead to race condition where if any other thread tries to
read the state of the timer and re-start the timer considering
it is stopped which may get deleted after that.

To address above issue, update the timer state after timer
delete.

Change-Id: I302b89bdedf23f8277eacb6d42b5bd8e6daa4d05
CRs-Fixed: 2643254
2020-03-27 06:29:16 -07:00
sheenam monga
c50efb4f56 qcacmn: Add Support for ACTION_CATEGORY_RVS
Currently, mgmt_txrx_get_action_frm_subtype does not handle
ACTION_CATEGORY_RVS. In case action_category is
ACTION_CATEGORY_RVS, mgmt_txrx_get_action_frm_subtype
returns MGMT_FRM_UNSPECIFIED due to default handling. Function
tgt_mgmt_txrx_rx_frame_handler returns QDF_STATUS_E_FAILURE
on receiving MGMT_FRM_UNSPECIFIED frame type and drops mgmt
frames.

Fix is to add support for ACTION_CATEGORY_RVS in
mgmt_txrx_get_action_frm_subtype to avoid drop of MCSC
frames. Add new management frames MGMT_ACTION_SCS_REQ,
MGMT_ACTION_SCS_RSP, MGMT_ACTION_GROUP_MEMBERSHIP_REQ,
MGMT_ACTION_GROUP_MEMBERSHIP_RSP, MGMT_ACTION_MCSC_REQ,
MGMT_ACTION_MCSC_RSP and new element ACTION_CATEGORY_RVS
in mgmt_action_category. mgmt_txrx_get_action_frm_subtype
Finds rvs frame subtype and returns subtype instead of returning
MGMT_FRM_UNSPECIFIED.

Change-Id: Iad1abac120770724f9ae6d86f524c4d722fb0aaa
CRs-Fixed: 2649900
2020-03-27 06:28:59 -07:00
Yeshwanth Sriram Guntuka
4326a54376 qcacmn: Add qdf API to check for configured packet types
Add qdf API support to check if the packet should be
tracked as per the configured protocol types.

Change-Id: Ia9e937865d3d440f1350307a67e32b20ea218e54
CRs-Fixed: 2642156
2020-03-27 01:21:14 -07:00
Manoj Ekbote
1c1ef8c2bd qcacmn: Print re-queue message based on threshold
When packet tx fails at transport layer, packet is re-queued and given to
HIF layer again. In this change, print the warning message about re-queue
only when tx fails for 5 consecutive attempts due to no resources
available at HIF layer.
Since re-queuing is not fatal, it need not be printed on every attempt.

Change-Id: I00082470420e29dfe4fb7a745ac709a682ba032e
CRs-Fixed: 2621763
2020-03-26 20:18:56 -07:00
Naga
c6e9bd033c qcacmn: Remove redundant data structure for wmi response extraction
Remove redundant data structure at wmi for vdev delete all peer
response extraction, instead use mlme host data structure.

Change-Id: Ice91f55e0bf8a23ea1a639a74f6a8ac3b2779a7b
CRs-Fixed: 2641261
2020-03-26 14:26:57 -07:00
sheenam monga
06869dc028 qcacmn: Send oce_ap_tx_pwr_weightage_pcnt to firmware
In struct weight_config, "oce_ap_tx_pwr_weightage" added newly.
Station uses "oce_ap_tx_pwr_weightage" as one of the parameter for
selecting AP candidate during initial connection. Host sends
"oce_ap_tx_pwr_weightage" ini value to firmware over WMI command
WMI_ROAM_AP_PROFILE.

Add oce_ap_tx_pwr_weightage in scan object scoring param to calculate
weightage based on AP tx power and select candidate accordingly.

Change-Id: I7f717e9cc398e8b9307f2f464f972b095c06364b
CRs-Fixed: 2647116
2020-03-26 07:13:13 -07:00