Commit graph

7,428 commits

Author SHA1 Message Date
Vignesh Mohan
7d7cb84e5e qcacmn: Restructure dfs_check_for_cac_start API
In dfs_check_for_cac_start API, the following checks (in addition
to few more unchanged ones) are done:
  1. If CAC timer is running, is the current channel a subset of the
     CAC started channel (dfs_cac_started_chan).
  2. If CAC timer is not running, is the current channel a subset of the
     last CAC started channel and was the last CAC not aborted.

The variable dfs_cac_started_chan is filled when CAC timer is started. It
is then reset only if, after vdev response, if the new channel is non DFS
or when the next CAC timer is started (with new channel value).

With the above logic, the cases where CAC is not skipped for a DFS
channel (e.g. preCACed channel) is not taken care of.

Consider the following scenario:
 1. The current channel is 100 and the preCAC is completed on all
    channels.
 2. When CAC is started on this channel (100), the dfs_cac_started_chan
    becomes 100.
 3. If radar is found on 100 and the new channel selected is one
    of the preCACed DFS channels, CAC is skipped.
    dfs_cac_started_chan still remains 100.
 4. After NOL timeout, if the radio is switched back to 100, the last
    CAC started channel is 100 and new channel is also 100, which results
    in CAC being skipped.

Rewrite the dfs_check_for_cac_start logic by checking the following:
  1. If CAC timer is running, check if the current channel is a
     subset of dfs_cac_started_chan.
  2. If CAC timer is not running, check if the current channel is a
     subset of previous channel (input).

Clear the dfs_cac_started_chan when the CAC timer stops or expires.

Also, in the API "dfs_is_subset_channel", while checking if one channel
is a subset of another, the DFS subchannels are determined based on the
channel flags. This is handled for two cases:
 1. If secondary channel alone is DFS.
 2. If primary and secondary channels are DFS.

The case "If primary channel alone is DFS" is not handled.

In case of channel 116HT80_80 with secondary 80 being non DFS,
all subchannels are considered as DFS subchannels.

Add a new API "dfs_find_dfs_sub_channels" where all the above
mentioned cases of DFS channels are handled to find proper DFS
subchannels.

Change-Id: I893430ff010746c84ce340323b25c17af25bc45a
CRs-Fixed: 2504840
2019-09-08 06:22:45 -07:00
Varsha Mishra
10b86d636a qcacmn: Set in_use bit of last allocated descriptor as 0
With current implementation in_use bit for last descriptor is not
getting set as 0. Removing redundant code and setting in_use bit
for last descriptor as 0.

Change-Id: Ia1945fcb814136128d18a8aec473ed1b4786dd9e
2019-09-08 01:07:32 -07:00
Debasis Das
7a081368a1 qcacmn: Fix use-after-free while draining reo cmd ring
While draining the pending reo cmd's during wifi down,
the tid array from the peer structure is used in debug
statement.However,the peer is freed much before
the drain operation.This leads to use-after-free access.

Change-Id: Idf92ccd0fe4eba3eed8a97ac83485de8fccb0f24
2019-09-07 12:29:01 -07:00
Abhishek Singh
5f1a994b1d qcacmn: Remove unused hidden ssid vdev restart command
Remove unused func and structures for hidden ssid vdev restart.

Change-Id: Ia22c7676ce582e2b554ff845c11641a6ef9d3013
CRs-Fixed: 2522560
2019-09-07 06:18:50 -07:00
Jianmin Zhu
ce7b04766e qcacmn: Don't set vdev packet type when vdev up
Vdev decap/encap type has been set when vdev create, don't need
set again when vdev up.

Vdev mlme mgmt.generic.rx_decap_type isn't initialized, can't be
used to set vdev decap type.

Add tgt_vdev_mgr_set_tx_rx_decap_type to set vdev tx/rx cap/decap
type by wlan_util_vdev_mlme_set_param.

Change-Id: If487a890eafd0e4e5e6cda31c22d459e342770de
CRs-Fixed: 2516997
2019-09-06 23:40:50 -07:00
Rakshith Suresh Patkar
162d95556e qcacmn: Cleanup peer local id references from DP RX
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.

Cleanup references to peer_local_id from the
following APIs:
 1) dp_rx_process
 2) dp_rx_process_rxdma_err

Change-Id: Ia1c8bd091759132367718e6c6d5f67cf5a98e507
CRs-Fixed: 2512706
2019-09-06 22:25:09 -07:00
Rakshith Suresh Patkar
5e3c20acf4 qcacmn: Remove peer local id from qdf_nbuf_cb
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.

This change removes peer_local id from qdf_nbuf_cb and is replaced
by vdev_id. Add accessor macro QDF_NBUF_CB_RX_VDEV_ID and wrapper
API qdf_nbuf_cb_update_vdev_id.

Change-Id: I56085eec60df1cfd78b613d8a244063a677358d4
CRs-Fixed: 2512703
2019-09-06 22:25:05 -07:00
Visweswara Tanuku
ebebd7632b qcacmn: Genoa: SDIO: Alloc Rx SKB buffer based on Payload Len
Allocate Rx SKB buffers based on Payload Length indicated in
HTC Header

CRs-Fixed: 2517051
Change-Id: I337e70eeae804ba8ef17a671a5fc39e59382e96d
2019-09-06 22:25:01 -07:00
Venkata Sharath Chandra Manchala
c0980fd21e qcacmn: Add a check to avoid processing invalid pktlog buffers
Avoid further processing of pktlog buffers received from
firmware or Hardware if the size is greater than
MAX_PKTLOG_RECV_BUF_SIZE.

Change-Id: If1dd855137a9b83721f01005fa3367f7924f4ebb
CRs-Fixed: 2493721
2019-09-06 18:18:36 -07:00
Krishna Rao
851c69d5bb qcacmn: Rename and use macros for operations on sscan summary
Rename some of the functions and structures related to Gen3 Spectral
summary report to clarify which type of Spectral report they operate
on. Use macros instead of hard coded values to specify size and
position of some fields while extracting them from Gen3 Spectral
summary report.

CRs-Fixed: 2518700
Change-Id: I9d646b60bc5314b408b39a7a118162af8d8fc7b2
2019-09-06 10:19:30 -07:00
Priyadarshnee S
c76f68bf02 qcacmn: Add a START RESPONSE failure status eventid
Add WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_REGDOMAIN and
WLAN_MLME_HOST_VDEV_START_CHAN_INVALID_BAND event in host enum
wlan_mlme_host_vdev_start_status. This corresponds to the event id
WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN and
WMI_VDEV_START_RESPONSE_INVALID_BAND sent by FW.

WMI_VDEV_START_RESPONSE_INVALID_REGDOMAIN is sent if there is a mismatch
between host and FW dfsdomain.
WMI_VDEV_START_RESPONSE_INVALID_BAND is sent if the channel sent by
host in VDEV START is not in the supported band by the current HW Mode.

CRs-Fixed: 2514884
Change-Id: I6126cb9bf29b80ae5728e5e5a4018891510cc41a
2019-09-06 06:23:07 -07:00
Rakshith Suresh Patkar
db4909518d qcacmn: Fix compilation issue in dp_get_vdev_by_peer_addr
Fix compilation issue in dp_get_vdev_by_peer_addr due to
erroneous comma.

Change-Id: Ife337860c0a7cdf7cb9f9305f3999d5203bf7a5e
CRs-Fixed: 2520670
2019-09-06 02:58:17 -07:00
Ruben Columbus
c44d7642b6 qcacmn: rssi per chain
variable cheanges from unsigned 32 to
signed 8 to handle rssi negative values received in tlv.

Change-Id: I08cd10208576131444d3a22f122e0805a76eb787
2019-09-04 17:38:31 -07:00
Shaakir Mohamed
41a3ccfff2 qcacmn: Add logs for radar detected frequencies
Add channel number along with their frequency information
to display channels affected by radar.

Change-Id: Iedc489c5f23d95f13e32affa2aa200b55a77e5eb
CRs-Fixed: 2482303
2019-09-04 13:51:31 -07:00
Lin Bai
14143c2277 qcacmn: Fix maybe-uninitialized compilation failure
'dest_desc' may be used uninitialized in function
ce_recv_buf_enqueue_srng/hif_record_ce_srng_desc_event, when
Werror=maybe-uninitialized enabled.

Change-Id: I13281d74bcfff5eb7474af729fd70d90c024ee75
CRs-Fixed: 2519213
2019-09-04 11:31:16 -07:00
Tallapragada Kalyan
d92f598f75 qcacmn: Pass pdev to dp_peer_stats_notify API
Pass pdev to dp_peer_stats_notify API instead of de-referencing
this from peer structure.

Change-Id: I5dc679283f5822f44b4140aefb3aee44a826c720
CRs-Fixed: 2500647
2019-09-04 11:31:12 -07:00
Priyadarshnee S
ddb699577c qcacmn: Find proper radar-found secondary frequency
Bring up a Hawkeye AP in ETSI domain in HT80_80 mode and enable preCAC
(preCACEn). When preCAC timer is running, if radar gets detected in the
secondary segment (which is DFS), radar found frequency gets computed
from "dfs_precac_secondary_freq" variable which does not get populated
for Lithium chipsets as "dfs_precac_secondary_freq" is specific to
legacy preCAC.

Since the secondary frequency gets assigned as 0, radar found offset gets
computed wrongly and channels are not added to NOL.

Ensure that "dfs_precac_secondary_freq" is used for secondary frequency
computation only for legacy chips. For chips that have a separate agile
radar detector engine, use "dfs_ch_vhtop_ch_freq_seg2" variable to
compute the secondary frequency.

CRs-Fixed: 2515454
Change-Id: Id1ec0c1500bf4df02a0fe52b4960141122da4f16
2019-09-04 11:31:07 -07:00
Priyadarshnee S
46f2727365 qcacmn: Rename "dfs_cac_attach" to "dfs_cac_timer_attach"
Rename dfs_cac_attach to dfs_cac_timer_attach. This is to align with
other function names.

CRs-Fixed: 2519566
Change-Id: I9c66fa1688c1790bd72f6e7938e612e57035c876
2019-09-04 11:31:03 -07:00
Sourav Mohapatra
6561456601 qcacmn: Add support in host to receive ext2 ready event
Currently the host gets service_ready_event and service_ready_ext_event
during the init sequence as a part of handshake with firmware. As the
size of the service_ready_ext_event exceeds on adding further
parameters, new event is created.

Add support for WMI_SERVICE_READY_EXT2_EVENT to be processed after
WMI_SERVICE_READY_EXT_EVENT based on the service bit
WMI_SERVICE_EXT2_MSG.

Also add support to extract the reg db/bdf version information that
comes inside the ext2 event.

Change-Id: If0b57af362e7eb653f9189b912ec1dd3efb0f731
CRs-Fixed: 2501132
2019-09-04 11:31:00 -07:00
Naga
f01c83d57e qcacmn: Avoid host panic on vdev request timeout
Avoid host panic on vdev request timeout when target
assert is triggered and trigger target assert using
RECOVERY_SIM_ASSERT, else host panic is not allowing
target dump in lithium case.

Change-Id: I32c2de358ec8839ad7a522c31dd359436ba16d08
CRs-Fixed: 2515401
2019-09-04 11:30:54 -07:00
Hariharan Basuthkar
7697dab24e qcacmn: Add 6GHz channels to the channel maps
Add 6GHz channels to the channel maps and define an API
"wlan_reg_is_6ghz_chan_freq" within the regulatory component to return true
if a channel is a 6GHz channel.

Change-Id: Icf73f1300dd08ae78248465543a4c0a0b355bc79
CRs-Fixed: 2463009
2019-09-03 02:34:17 -07:00
Linux Build Service Account
ea8878646c Merge "qcacmn: BA window reset after FT roam" 2019-08-30 05:36:51 -07:00
Linux Build Service Account
fb263dc4bd Merge "qcacmn: Replace printk with qdf_nofl_info" 2019-08-30 05:36:51 -07:00
Jianmin Zhu
eb1cc95361 qcacmn: Set target if vdev start resp handler as public
Set target if vdev start resp handle as public to be registered
when wma open.
Remove wma_remove_vdev_req in ocb, don't use wma vdev cmd queue
and timer.

Change-Id: I2cd48ddd700ed1cde34231c22c02e0e54d4df5e3
CRs-Fixed: 2516536
2019-08-30 02:27:59 -07:00
Tushnim Bhattacharyya
33087cb402 qcacmn: Include wmi.h on the correct header files
Include wmi.h in wmi files.

Change-Id: I0584e58c5ae64e8ed93d024aa7943a9cdcdb07c8
CRs-Fixed: 2514753
2019-08-29 22:11:16 -07:00
Rajeev Kumar
e792050400 qcacmn: Remove CCE HW filter command from WMI runtime pm tagging
Remove CCE HW filter command from WMI runtime pm tagging since CCE
HW filter is not getting enabled in runtime pm mode.

Change-Id: I1cf778ec916cafda0644268b20d1c9c413ae0938
CRs-Fixed: 2514050
2019-08-29 22:11:12 -07:00
Ruben Columbus
b7a1c5782d qcacmn: monitor RXDMA drop feature
Adds new INI variable for threshold control.
Host sends message to target with new threshold info.
If buffer reaches threshold then MAC drops incoming monitor frames.

Change-Id: Id659d7df68a5ec0b22fb571dc1ffa4990f8fcc4f
2019-08-29 22:11:08 -07:00
Edayilliam Jayadev
78285d3861 qcacmn: Get WMI handle from pdev instead of psoc
Get WMI handle from pdev instead of psoc.

CRs-Fixed: 2510822
Change-Id: If6f191403b7f3245b3f26969d195ab4ec8793fc4
2019-08-29 22:11:04 -07:00
Edayilliam Jayadev
f2ae8b7e11 qcacmn: Add Spectral parameter properties
For each parameter for each mode add a flag which
indicates whether that parameter is supported.
Similarly one more flag which indicates whether a
parameter needs to have same value for all the modes.

CRs-Fixed: 2500514
Change-Id: I37099bb622d7d6ccf823f78f6d119b9abf78ec21
2019-08-29 12:51:40 -07:00
Edayilliam Jayadev
9217a212bb qcacmn: Add error handling in the Spectral control path
Add an attribute which describes the error code
in the response to set config, start scan and stop
scan.

CRs-Fixed: 2500481
Change-Id: I491cd6e061d2d08ceb4d9af2a7de5223e229c280
2019-08-29 12:51:37 -07:00
Gurumoorthi Gnanasambandhan
1ea546454f qcacmn: BA window reset after FT roam
Reset seq number for Station roaming back in FT roam.

Change-Id: I0664bafadb6fed29e5ef2e5d6c1dabe06090eed1
CRs-Fixed: 2490810
2019-08-29 15:25:58 +05:30
Bala Venkatesh
ae946e39c7 qcacmn: Reduce the log level
Reduce the log level from err or info to debug so that logs
are not printed on console.

Change-Id: I0d33c2a8f5b4bb4974656ac0d1eb6713a74cb5f4
CRs-Fixed: 2516287
2019-08-29 01:44:16 -07:00
Chaoli Zhou
fd20986e6a qcacmn: Fix runtime unknown symbol issue
In the sdx platform, WLAN monitor mode is disabed,
in other words, CONFIG_FEATURE_MONITOR_MODE_SUPPORT
will be set to n, but dp_mon_buf_delayed_replenish
hasn't be defineded if it set to n, which can cause the
runtime unknown symbol issue. So add the definition
for it.

Change-Id: Iec50f7cc5ed6f94e2f5a40fbc6594c2830d1359f
2019-08-29 00:24:31 -07:00
Paul Zhang
1275896960 qcacmn: support msdu rx retry statistics
Add the interface to support the rx retry statistics.

Change-Id: I02bbf2e69eefbd7ef61ab2540c1aacabb4ce3aef
CRs-Fixed: 2505486
2019-08-28 12:43:06 -07:00
gaurank kathpalia
f47b162435 qcacmn: Set max BW for each valid channel and send to FW
Configuration for Issue:-
DUT configuration:-
1. Configure DUT's country as US where channel 165 does
not support channel bandwidth of 40 mhz.
AP Configuration:-
1 Configure the AP in a country where channel 165
supports channel bandwidth 40MHZ.
Scenario of the issue:-
1.Connect to a diff AP on some channel x with same SSID,
and then roam to this AP.
Observation:-
The DUT would connect in 40 mhz to this AP instead of 20Mhz,
which violates the DUT's country reg rules.
Expectation:-
The DUT should re-connect only in 20Mhz on channel 165, or
only in max BW supported by reg in that country.
Issue:-
The DUT does not consider the max bandwidth allowed for the channel
in the country configured, and allow the re-association only
in the respective bandwidth.
Fix:-
Send the max BW supported by the channels in the current
reg domain to the FW so that it considers the max BW of the
channel and AP capability and then roam in the respective BW
only.

Change-Id: I977090c58e378e83cb5a3ee84a72afd018e8c428
CRs-Fixed: 2508187
2019-08-28 06:29:18 -07:00
Shashikala Prabhu
8fe9679be0 qcacmn: Use qdf aligned mem alloc APIs in DP component
Replace dp_srng_mem_alloc() by qdf_aligned_mem_alloc_consistent() and
qdf_aligned_malloc() in dp_srng_setup().

Change-Id: Iae236a3cc19ec7a9f94b04382d37fc95e6ed622f
CRs-Fixed: 2462455
2019-08-28 02:39:37 -07:00
Vignesh Mohan
3efefcbe29 qcacmn: Add dfs_set_cfreq2 flag in scan channel list params
Add dfs_set_cfreq2 flag (indicating secondary DFS set) in addition to
dfs_set (indicating primary DFS set) flag in scan channel list update
params to be sent to FW.

Change-Id: I67670f1d5b128c57c0fad03d9f9b14a99f1d38f6
CRs-Fixed: 2496923
2019-08-27 23:03:41 -07:00
Rakesh Pillai
836b6690cb qcacmn: reduce log level for mon status ring tlv-tag error
STATUS_DONE is missing sometimes in monitor status ring,
but logging for each entry in the ring increases the time
for which the hal_ring access lock is held. If there are
many entries in the monitor status ring, this can lead to
the hal ring access lock being held for too long and cause
inconsistencies.

Reduce the logging level of the tlv tag STATUS_DONE errors
and have a counter for the cases when this happens.

CRs-Fixed: 2502422
Change-Id: Ica77ce62bbe2c6b7691d638ac44ab0452dd2fd97
2019-08-27 20:59:22 -07:00
Vivek
7a14b44b75 qcacmn: Replace printk with qdf_nofl_info
Replace printk with qdf_nofl_info in qdf folder.
So if we wish to change from printing on console
to other location, based on a logging daemon, we
can do that by only changing at the implementation
of QDF print API's

Change-Id: I27fa7dbd6081c2869d1f1782f34cdd0bb5a02fb4
CRs-Fixed: 2442689
2019-08-27 11:32:27 +05:30
Shashikala Prabhu
ec527358c2 qcacmn: Fix issues in qdf aligned memory alloc function
1. Alloc size should be passed as input and output parameter since we need
   to pass the exact alloc_size while freeing the memory.

2. use qdf_align() to calculate the aligned physical address.

3. In DBR component, pass correct arguments to qdf_aligned_malloc() to fix
   the compilation errors.
   Alloc size should be passed as input and output parameter since we need
   to pass the exact alloc_size while freeing the DMA memory.

Change-Id: I83051b8aa54bbf3bb663902d8f17f2c3c55e57bf
CRs-Fixed: 2462441
2019-08-26 00:26:56 -07:00
Radha krishna Simha Jiguru
0ebbf5a1de qcacmn: Send ip_hdr_padding configuration through WMI resource config
Send configuration option to configure enable/disable of ip_hdr_padding in
IPQ8074/IPQ6018.

Change-Id: I83bd882559c4fa7527f6ad4a462b00b04cb2a638
2019-08-24 04:23:56 -07:00
Abhishek Singh
22911578a1 qcacmn: Fix WMI timeout for runtime PM
For runtime PM if the bus is suspended driver need to consider
extra PMO_RESUME_TIMEOUT time for bus resume.

Thus add PMO_RESUME_TIMEOUT extra in WMI timeouts if runtime PM
is supported.

Change-Id: Ifda596626ba39a894bebcb20fcfc2018012b0b54
CRs-fixed: 2513791
2019-08-24 04:23:53 -07:00
Abhiram Jogadenu
d465314ffd qcacmn: Add support for AoA data extraction
Extract AoA data from WMI_PEER_CFR_CAPTURE_EVENTID.

Change-Id: I827ef735f46a3ed1bed61fda2d9bd39fd631f40d
CRs-Fixed: 2502029
2019-08-23 11:17:25 -07:00
Visweswara Tanuku
8c730b08c0 qcacmn: Genoa: SDIO: Handle Rx Padding
In Genoa SDIO ADMA implementation FW sends bundled packets
which is terminated by a pad block

Handle the Rx Bundling using the pad block

CRs-Fixed: 2506247
Change-Id: I50f1c79a07398ed0fcfba358fc53aa02ad3c6964
2019-08-23 06:27:10 -07:00
Sumeet Rao
2b730bbc76 qcacmn: Reorganize protocol and flow tagging changes to wifi-host component
Reorganize protocol and flow tagging changes to wifi-host component.

CRs-Fixed: 2501573
Change-Id: Ic6bc9548fd8bb66c2f8bae4740a4dcad4002f720
2019-08-22 12:35:28 -07:00
Vignesh Viswanathan
3e31e2babd qcacmn: Add support for checksum from FW for pktlog
If the FW sends a pktlog checksum in the FW ready event, store that in
pl_dev and use it as buf_hdr.version in the pktlog buffer header.

Also, use a new magic value to identify the checksum in the
buf_hdr.version field.

If the FW does not send the checksum, then the existing magic number
and standard version number would be maintained.

Change-Id: Ib08c093a9b54495a2c5b7e0e163207f2b1eb4ce2
CRs-Fixed: 2508828
2019-08-22 02:53:10 -07:00
Kiran Venkatappa
a33e6a8ea7 qcacmn: Use correct mac_id for delayed mon replenish
mac_id is used to get rx_desc_pool for monitor ring and mac_for_pdev is
used for srng for monitor buf. Use appropriate id to get correct
combination of hw ring and sw desc for monitor rings.

Change-Id: I7e4467e9568056e55cbabfef8f97ce94ad9c1b1c
CRs-Fixed: 2512292
2019-08-21 23:46:08 -07:00
Saket Jha
6caec001fa qcacmn: Correct return type for ce_send_single
Due to previous API change, ce_send_single function now returns
QDF_STATUS instead of int. In the case the condition is met
where ce send fails, this function should return QDF_STATUS type.

Change-Id: I0fe8cc2929623d6320bd782abcf75fff6ec60297
CRs-Fixed: 2509467
2019-08-21 20:54:17 -07:00
nwzhao
594d8a8167 qcacmn: add twt enable/disable complete event handlers
Add twt enable/disable complete event handlers

CRs-fixed: 2478884
Change-Id: I4c66d206f0eb2b910e9b4a68af3d855bb608198b
2019-08-21 14:19:01 -07:00
Jinwei Chen
38dbf13539 qcacmn: disable runtime PM for monitor mode
Disable runtime PM for monitor mode

Change-Id: I8d4c4f30859b01972423073ce1f7fc46d6341089
CRs-Fixed: 2509661
2019-08-21 02:59:44 -07:00