Commit graph

7,357 commits

Author SHA1 Message Date
Kai Chen
4b4e8b48cf qcacmn: change debug print and add ring stuck count
change debug print and add counter for monitor destination
ring stuck

Change-Id: I79b4d3b957303334717fd04bfddf754e303e69db
2019-08-16 08:22:57 -07:00
phadiman
baaa7b98ce qcacmn: Replace %p with %pK format specifier
Replace %p with %pK specifier in dp_main
module

Change-Id: I637f5a4ddc827011aa48295ea50544632d1a9a76
2019-08-16 08:22:53 -07:00
Amir Patel
44bd807fa7 qcacmn: Fix memleak in m_copy mode
1. Assign correct first msdu payload
2. Reset mpdu fcs ok bitmap upon reception of next ppdu
3. Free rx_ppdu_buf_q in error cases

Change-Id: I4f2e687d51d1e10693adc9cfcdee49190ba6815c
CRs-Fixed: 2502889
2019-08-16 02:58:08 -07:00
Jinwei Chen
0f015f2b53 qcacmn: support changing driver mode to monitor
support monitor mode enablement by changing driver mode.

Change-Id: I5436b21f4f554101e74590757ed2ac05d2d84fa0
CRs-Fixed: 2491560
2019-08-16 02:58:05 -07:00
bings
208ab01f20 qcacmn: Trigger eWNI_SME_DFS_RADAR_FOUND once for one radar
Currently eWNI_SME_DFS_RADAR_FOUND is triggered for every vdev
attached to the pdev in which radar is found. It is incorrect
because when handling one eWNI_SME_DFS_RADAR_FOUND event, every
sap in the DFS channel processes the event.

Trigger eWNI_SME_DFS_RADAR_FOUND once for one radar detection.

Change-Id: I72f8a2a34b670bd86f07d0caabf2ee8f96c962be
CRs-Fixed: 2504793
2019-08-16 02:58:00 -07:00
bings
b2e00f901f qcacmn: Add new obj mgr api wlan_pdev_peek_active_first_vdev
wlan_pdev_vdev_list_peek_active_head can't be used out of object
manager, because object manager structures can't be referenced
outside object manager.

Add wlan_pdev_peek_active_first_vdev which can be used out of
object manager, because it only needs pdev parameters.

Change-Id: I1d32ec2b5342dbdcbbb817d80623f802011892b0
CRs-Fixed: 2507969
2019-08-15 23:31:24 -07:00
Rakshith Suresh Patkar
fb42ec3909 qcacmn: Cleanup dp_get_vdev_by_sta_id [PEER_ID_PHASE1]
Cleanup dp_get_vdev_by_sta_id to be peer mac address based
from local peer id based.

Also, modify the API cdp_peer_get_vdev_by_sta_id with additional
argument for peer mac address.
Rename cdp_peer_get_vdev_by_sta_id to cdp_peer_get_vdev_by_peer_addr.

Change-Id: I889538b5ea7ebac8973dcaaa5ebdad1ac495e791
CRs-Fixed: 2504569
2019-08-15 20:38:29 -07:00
Jianmin Zhu
1af0d55f56 qcacmn: Add items for vdev start
Add hidden ssid flag and cac duration in vdev mlme obj, populate
vdev start param.
Register wmi ops extract_vdev_start_resp for target_if converge.

Change-Id: Iaebd49049fb791aaee39ef67611f96eed37d3605
CRs-Fixed: 2506245
2019-08-15 12:28:47 -07:00
Ankit Kumar
cd66fff1ce qcacmn: Process smart antenna fields from tlv
Process smart antenna fields from tlv
HTT_PPDU_STATS_USR_COMPLTN_COMMON_TLV in tx
completion path and export it to tx_completion.

Change-Id: If14e711b0aee8e583fd329f3c3915904649ffe47
CRs-Fixed: 2491429
2019-08-15 01:28:21 -07:00
Abhishek Ambure
9377b064a6 qcacmn: Rename WLAN_SER_CMD_DEL_STA_SESSION macro
As a part of vdev manager conversion, vdev delete code is
refactored. Legacy code and naming is removed. In vdev manager
operations, STA_SESSION is addressed as VDEV.

Hence WLAN_SER_CMD_DEL_STA_SESSION macro is renamed to
WLAN_SER_CMD_VDEV_DELETE.

Change-Id: I08bf6b2e69f5635d5ebc2548c18991bbb12b3985
CRs-Fixed: 2508147
2019-08-14 15:43:23 -07:00
Shiva Krishna Pittala
71bc664165 qcacmn: Add a callback to the FW assert function in Spectral module
As Spectral module is loaded before qca_ol module and the FW assert
function is compiled in qca_ol module, FW assert function will be an
unknown symbol when used inside Spectral module.
To fix this, register a callback to the FW assert function and
use that callback in Spectral module.

Change-Id: I6ca18b151e86b93de9988bc6026894617f2168a2
CRs-Fixed: 2507522
2019-08-14 14:30:26 -07:00
Sumeet Rao
511db296dd qcacmn: Add CDP api to set rx_pkt_enable,tx_pkt_enable for a peer
Since tx_monitor mode and rx_monitor mode consume signficant MIPS
when enabled on a per-peer basis, new requirement is to enable such
functionality on a per-peer basis. New CDP APIs are added to set these
per-peer parameters.

CRs-Fixed: 2494471
Change-Id: Ib44845ec98481cc4df36c30f47335522e5274568
2019-08-14 14:30:23 -07:00
Rakesh Pillai
9d28e0e462 qcacmn: Make num_int_grp consistent with hif_num_grp
The HIF_MAX_GROUP value is not consistent with the
HIF_NUM_INT_CONTEXTS which can cause out of bound access.

Fix this issue by making both these values same.

CRs-Fixed: 2505220
Change-Id: Ia79d9c03de82a73662c189e61e83e43e71d2ef3f
2019-08-14 14:30:16 -07:00
hangtian
871207dc66 qcacmn: Set ssid and ssid_len when restart sap vdev
Set ssid and ssid_len when restart sap vdev. When hostapd set
ignore_broadcast_ssid to 1(zero-len) or 2(zero-content), when we force-scc
or setChanChange to restart sap vdev, if not set ssid and
ssid_len(default 0) in vdev start wmi, then firmware will reply
broadcast probe request since the ssid_len in broadcast probe req is 0
which matches the condition that firmware send probe response, however,
we should not reply with probe response.

Change-Id: I56580529e2b0db673c6b28c75094a7fd225cba77
CRs-Fixed: 2506391
2019-08-14 03:45:04 -07:00
Mohit Khanna
664e64c199 qcacmn: Use 512us REO Interrupt threshold timer
Increase the REO Threshold interrupt timer from 256 to 512us. This
provides additional savings in number of interrupts in low throughput
scnearios.

CRs-Fixed: 2500152
Change-Id: I0b21a0425018d5db068016222378d16f394dc347
2019-08-13 20:26:10 -07:00
Sravan Kumar Kairam
afd707dd48 qcacmn: Do vdev null check sanity before gro flush
In dp_rx_process there are two cases in which vdev will be
null. One is when peer is invalid case which happens when
packets comes on reo with out any valid peer and vdev set.
Second case is fetching more data in case of napi no yield
condition and there are no buffers to fetch. In current
dp_rx_process gro flush is called at the end of nbuff process
and with out checking for vdev sanity it is referenced. So
add vdev null sanity check to prevent NULL pointer dereference.

Change-Id: Ie2d480108118d9b83373a450aecabee57675c41d
CRs-Fixed: 2507067
2019-08-13 16:23:39 -07:00
Mohit Khanna
698987c896 qcacmn: Send GRO flush indication at end of dp_rx_process
In case of TCP packets being processed by dp_rx_process, send out GRO
flush indication to the thread.

CRs-Fixed: 2500152
Change-Id: I4f464456d423e4680955992c0acf0ed5f4e618b8
2019-08-13 16:23:36 -07:00
Abhiram Jogadenu
9fb7c768c3 qcacmn: Add flag to enable CFR capture in Probe response
Add cfr_enable flag in Probe response, so that FW can start CFR
capture for particular client.

Change-Id: Id38b61317384a069308de4931463f1aef4f65f38
CRs-Fixed: 2502030
2019-08-13 12:09:32 -07:00
Ashish Kumar Dhanotiya
0cf77a56ea qcacmn: Process All the pdev stats events
There are 2 issues in the driver:
1. Currently host incorrectly fills the pdev id value as 0
   in stats request, If host sends the pdev id as 0 for
   stats request then FW sends the stats for all the pdevs.
2. If host requests pdev stats with pdev id as 0,
   FW can send multiple events for each pdev stats
   if one event buffer is not sufficient to fill the stats
   for all the pdevs. Curent host logic doesn't process
   multiple pdev stats events.

Address above 2 issues with below fixes:
1. Send correct pdev id to FW in the stats command.
2. Add a logic in host to process all the pdev stats events
   received as part of the pdev stats request.

Change-Id: I5b5bfcda2f30fb32749c653c6524ecbd2edc44a4
CRs-Fixed: 2503273
2019-08-13 07:33:27 -07:00
Rajeev Kumar
0391a23ca3 qcacmn: Add pdev_id for stats request command
Currently CP stats component does not fill the proper pdev_id
in the command for the stats request. This causes the value
sent to firmware to be 0 bydeafult. As per the logic in firmware,
if the value is zero then the stats for all the pdevs are sent.
To get only stats for a single pdev, send the pdev_id along with
the vdev_id in the stats request command.

Change-Id: Ic4ecad132c8764196b9f5ed6af76fe4f2778d8d1
CRs-Fixed: 2502459
2019-08-13 07:33:22 -07:00
Rakshith Suresh Patkar
0375108ffa qcacmn: Cleanup dp_clear_peer [PEER_ID_PHASE1]
Cleanup dp_clear_peer to be peer mac address based
from local peer id based.

Also, modify the API cdp_clear_peer with addition argument
for peer mac address.

Change-Id: I1bd3fab1b9510b5f1d4476e11b617fcb6417f2c4
CRs-Fixed: 2503774
2019-08-13 04:17:32 -07:00
Subrat Mishra
4946004e75 qcacmn: Smart Antenna 11-bit ratecode support
Add Smart Antenna support to accommodate 11-bit ratecode
per Bandwidth.

CRs-Fixed: 2506480
Change-Id: Id8b58cf0466739a886ba4f37bc6adcb7f96fa0ea
2019-08-13 02:29:09 -07:00
Jayachandran Sreekumaran
f24399cc78 qcacmn: Enable mission mode through qmi signalling
Enable mission mode in fw through qmi signalling.

Change-Id: I539d7b8bb1f38b2cb526704c225bf4535fcc8543
CRs-Fixed: 2504541
2019-08-12 22:19:16 -07:00
nobelj
a310bf4609 qcacmn: Moved Rx mpdu byte count as they are not supported in HKV1
mpdu byte count is not supported in HKV1.

Change-Id: I23f0608d44958159abffc3b5b3eccde29d9cf07f
2019-08-12 16:18:28 -07:00
Ruben Columbus
4319493562 qcacmn: ring backpressure handler
rxhost ring backpressure:
identifying rings causing rx backpressure after being notified
by FW message. Adding logs to be able to see at what state
the ap was after a backpressure event was triggered.
Adding radio stats (261) as well as napi stats for better
state description.
Change-Id: I395450be6faaf959f91729516a7b229c5b3396ce
2019-08-12 16:18:24 -07:00
Rajeev Kumar
d736cdf95e qcacmn: Add auto pm tag to WMI_HW_DATA_FILTER_CMDID
Add auto PM tag for WMI_HW_DATA_FILTER_CMDID command such
that CCE HW fiter feature can be enabled for runtime pm
as well.

Change-Id: Iec1495ebecb0aab0e695fb5e656ac13a22bba338
CRs-Fixed: 2505994
2019-08-12 12:24:21 -07:00
Shreedhar Parande
45d12fa2de qcacmn: Separate GET APIs for precac and agile precac flags
Currently a single API(dfs_get_precac_enable) is used to get
dfs_precac_enable and dfs_agile_precac_enable. This API is
wrongly returning value for dfs_precac_enable since agile
capability is set even for Cascade.

Separate out the GET APIs for getting dfs_precac_enable and
dfs_agile_precac_enable so that getting these flags becomes
independent of each other.

Change-Id: I08b0cbcd29c320a345865e3e9456ce3e809e26a6
CRs-fixed: 2501266
2019-08-12 12:24:17 -07:00
Pragaspathi Thilagaraj
fc54cc76a4 qcacmn: Read OWE and SAE roam target capability
Add support for OWE and SAE roam target capability.
Add event mapping for the tgt event
WMI_ROAM_PREAUTH_START_EVENTID.

Add changes to send WMI_ROAM_PREAUTH_STATUS_CMDID after
the SAE external authentication event is received.

Also for SAE/OWE/802.1x, the key management offload
needs to be enabled by default as PMKSA caching if
set_pmksa is received from the supplicant. So remove
the additional key management offload check so that
OKC and PMKSA is enabled by default for SAE and OWE.

Change-Id: I01d3a07e2ce60e25ea8624c030c6a5802205566d
CRs-Fixed: 2491042
2019-08-12 02:45:23 -07:00
Abhishek Ambure
c367e06da5 qcacmn: Enable target_if common code for vdev stop
As vdev conversion is done in phases, so vdev stop response
handler for target_if is made global. To process vdev stop
response tlv extraction API is registered to WMI tlv_ops.

Change-Id: Ib00f7339330e69d6103a175611df7b59c01faad0
CRs-Fixed: 2506500
2019-08-12 02:45:19 -07:00
Varuneshwar Petlozu
21a557f273 qcacmn: Add null check for event fields in extract_ndp_ind_tlv
In the function extract_ndp_ind_tlv the data from FW is assigned
to the event.The event fields ndp_cfg, ndp_app_info and ndp_scid
are used as source in the memcpy without null check which can cause
undefined behaviour.

To solve this, add null check for ndp_cfg, ndp_app_info and ndp_scid
before memcpy use.

Change-Id: I4bf592e6977c50518e53ece268c34450d9684304
CRs-Fixed: 2476173
2019-08-12 01:27:48 -07:00
Abhishek Singh
22e58ce9f1 qcacmn: Consider BAND and OCE WAN scores only if congestion is < 75%
Optimize BSS score to consider OCE WAN and Band score only if
congestion is less than 75% (CONGESTION_THRSHOLD_FOR_BAND_OCE_SCORE)

Change-Id: I114032db59be162cad62dfa4cdcd52983f5eec9b
CRs-Fixed: 2505430
2019-08-12 01:27:45 -07:00
Varsha Mishra
06b91d3db8 qcacmn: Make send_msdu_single a non-static function
send_msdu_single is required in other files, hence making it
non-static.

Change-Id: I7cf876fe7a940c90aeafce15b0112bbe93a8760b
2019-08-11 14:09:34 -07:00
Abhishek Ambure
c76db37021 qcacmn: Clean up CMN_VDEV_MGR_TGT_IF_ENABLE
WIN and MCL both uses common targer_if code for vdev manager.
So legacy code and "CMN_VDEV_MGR_TGT_IF_ENABLE" macro is removed.

Change-Id: I2984ae44f3a7cfa01b8f1455353d09deb4db5759
CRs-Fixed: 2503804
2019-08-11 10:38:20 -07:00
Edayilliam Jayadev
151c4bb3d6 qcacmn: Extend timestamp WAR for agile mode
Target will be sharing the time taken for reset in the
first Spectral report after reset. The reset delay value
is common for all the Spectral modes. Host updates
the timestamp WAR offset variable for all the Spectral modes.

CRs-Fixed: 2504798
Change-Id: If7d47a434054f220b0717f7d8939f9f8922af30f
2019-08-11 02:11:44 -07:00
Nandha Kishore Easwaran
5d3475b985 qcacmn: Initial changes for pine
Add device ID change and target type checks for pine.
Also remove memory war added for Hk emulation.

Change-Id: Idf531a48a03202d4fb241a92a1d671ee2b94cfbd
CRs-fixed: 2453899
2019-08-11 02:11:41 -07:00
Sravan Kumar Kairam
1e8591a2a0 qcacmn: Dont destroy rx_tid lock for peer reuse
In case of peer reuse case rx_tid locks are destroyed as
part of peer cleanup and are not initialized again. So while
deleting this peer as part of unref delete peer cleanup is done
which again tries to destroy the rx_tid locks which were already
destroyed. This leads to assert complaining destroying lock with
out initialization. So dont destroy the rx tid locks in case of
peer reference reuse.

Change-Id: I860de558950009cae6f62385dd665badfe9964e0
CRs-Fixed: 2504973
2019-08-11 00:47:32 -07:00
Rajeev Kumar Sirasanagandla
72c7948a8a qcacmn: Restore to WORLD when country code is not in regdb
In regulatory non-offloads, when a user is trying to set the country code,
if the country code is not present in the driver regulatory database then
restore to WORLD domain.

Change-Id: I7de523f734920baaf5a7c690873a69c346d55a64
CRs-Fixed: 2495799
2019-08-10 06:18:19 -07:00
Rajeev Kumar Sirasanagandla
0c9fe659fa qcacmn: Fix regulatory non-offload issues
Current regulatory non-offloads has following issues:
	1) In "iw reg get" output "00" can not be shown when trying to
	   set country code to "00".
	2) In BDF file, if only reg domain is specified then
	   "iw reg get" output should contain alpha2 code of country which
	   first matches with BDF reg domain.

To fix these issues in reg_get_reginfo_form_regdmn_pair(),
populate reg_info->alpha2 with:
	(a) "00" for WORLD domain and
	(b) alpha2 code of first country matching with non WORLD domain.

Change-Id: I5cf87587a1a0f648700cffdc7ff60f05f043f723
CRs-Fixed: 2494516
2019-08-10 06:18:15 -07:00
Chaithanya Garrepalli
1f89b97be2 qcacmn: Read 256 fcs_ok bitmap from user ext TLV
Read extra bits of fcs okay bit map from
RX_PPDU_END_USER_STATS_EXT TLV and use the same
to send first fcs okay packet in case of M COPY

CRs-Fixed: 2499150
Change-Id: I1a25971ea789dd7fddddb312af8a18a4cccdc178
2019-08-10 05:10:36 -07:00
Shaakir Mohamed
37ac32ba18 qcacmn: Fix CAC during vdev restart
Add compile time flag to restart CAC when vap is restarted
on same channel.

Change-Id: I7d4d4fdf4a6defac8fc436b63495b51c272669af
CRs-Fixed: 2495630
2019-08-10 02:54:19 -07:00
Wu Gao
46aa5afbb3 qcacmn: Fix compilation errors for DBR enable
Fix compilation errors for direct buffer rx component enable.

Change-Id: If0913b8357267fa65e61e0c7d197025ff850930b
CRs-Fixed: 2497783
2019-08-09 13:04:45 -07:00
sumedh baikady
60c3301c25 qcacmn: Remove comments in vdev subtype addition
Comments for vdev subtype added for mesh is not
required.

Change-Id: I9d6104fc0883b97f7462aa964d823f99dee653d7
CRs-Fixed: 2491087
2019-08-09 11:18:51 -07:00
Gyanranjan Hazarika
fe3cca9bd1 qcacmn: Add WMI changes for Dynamic HW mode configuration
This feature enables user to change HW mode dynamically
from DBS to DBS_SBS mode and vice-versa. Currently, HW
mode configuration is only possible through INI setting
requiring a subsequent reboot.

Relevant WMI changes are:

1. Relocate API wmi_unified_soc_set_hw_mode_cmd from
wmi_unified_sta_api.c to wmi_unified_api.c
2. Define API wmi_unified_extract_hw_mode_resp to extract
FW response
3. Parse and store new dev-cap fields wireless_modes,
low_2ghz_chan_freq, high_2ghz_chan_freq, low_5ghz_chan_freq,
and high_5ghz_chan_freq.

Change-Id: I49f975e7c5abc8503b651a3ebd4d56b23af915db
CRs-fixed: 2490212
2019-08-09 11:18:48 -07:00
Gyanranjan Hazarika
8e0ae99446 qcacmn: Add target_if changes for dynamic hw-mode config
This feature enables a user to change HW mode dynamically
from DBS to DBS_SBS mode and vice-versa. Currently, HW
mode configuration is only possible through INI setting
requiring a subsequent reboot.

Primary target_if changes are:

1. Add structure definition wlan_psoc_host_hal_reg_cap_ext
to parse and store the new extended regulatory capability
info in WMI_MAC_PHY_CAPABILITIES tlv sent in EXT service
ready WMI event
2. Add API target_psoc_get_num_radios_for_mode to retrieve
the number of radios corresponding to a hw-mode
3. Add API target_psoc_get_mac_phy_cap_for_mode to retrieve
the pointer to the mac_phy_cap info of the first radio
corresponding to the input hw-mode.

Change-Id: Ia10f0fd5e50c0ce0cbe99f9281147266aedce4e9
CRs-fixed: 2490212
2019-08-09 11:18:45 -07:00
Rakshith Suresh Patkar
9e02e1e104 qcacmn: Cleanup dp_register_peer [PEER_ID_PHASE1]
Cleanup dp_register_peer to be peer mac address based
from local peer id based.

Change-Id: Ifc0166b8ace5aabd7c287941476df47c806e8663
CRs-Fixed: 2503680
2019-08-09 07:38:01 -07:00
Rakshith Suresh Patkar
b3bc8abbd6 qcacmn: Add peer mac address in struct ol_txrx_desc_type
Local peer_id is being cleaned up across DP, HDD and PS/WMA.
So, any references to local peer_id/sta_id will be replaced
by peer mac address and all interactions between the layers
will be based on peer mac address.

Change-Id: I3a141d0a1e549fcbb587373f1e0d57dfd031911f
CRs-Fixed: 2503144
2019-08-09 07:37:57 -07:00
bings
d976954cf0 qcacmn: Use dma_iommu_mapping only if ENABLE_SMMU_S1_TRANSLATION defined
In standard linux kernel, dma_iommu_mapping is not defined for arm64, while
in qualcomm linux kernel, dma_iommu_mapping is defined for arm and arm64.
To fix build error in standard linux kernel, use struct dma_iommu_mapping
only when ENABLE_SMMU_S1_TRANSLATION is defined.

Change-Id: Ib02073163f2a38c47f864c6592fe2470046868ce
CRs-Fixed: 2496729
2019-08-09 07:37:53 -07:00
phadiman
797a49bc7d qcacmn: Fix incorrect access to mon buffer ring
Map mac_for_pdev appropriately for both MCL & WIN,
since MCL have multiple monitor buffer rings and
WIN just has one mon buffer ring, below API helps
identify accurate monitor buffer ring for both cases

CRs-Fixed: 2502051
Change-Id: I3929f3f7717d795850a41f4148397d87b0415118
2019-08-09 02:50:24 -07:00
Akshay Kosigi
2eae843084 qcacmn: Clean up CONFIG_MCL
Clean up CONFIG_MCL and introduce new macro
MGMT_FRAME_RX_DECRYPT_ERROR.

Change-Id: Ic0cf826bde40cb3088d9745f0831fe083a281d50
CRs-Fixed: 2504567
2019-08-09 01:31:47 -07:00
Naga
004bb25c0b qcacmn: Add support for self recovery in target_if
Add support to trigger self recovery in case
of vdev request timeout, as when host is asserted
fw dumps are not collected

Change-Id: I534ada61b114f5b96ecfae1ff27d692ee496edba
CRs-Fixed: 2496796
2019-08-08 12:52:15 -07:00