When the radio is in HT20 mode, the duration of Korea Type 3 RADAR is
reported by the HW as 3us although the duration is only 1us. The minimum
and maximum duration for the corresponding filter(FilterID 42) is 0us
and 2us respectively. So host will neglect the pulses with a duration of
3us. This will result in Host failing to detect the Korea Type 3 RADAR
pulses in HT20 mode.
Increase the maximum duration of the filter(FilterID 42) to 3us.
Change-Id: I45f337ec31e017c4a0c19f1afea3fc7a08af9888
CRs-Fixed: 2503942
Add IOMMU IOVA to PA and MMU virtual to phys address
in CE Desc History, hif_ce_desc_history.
Change-Id: I877a2275e7ea99748087ea6f2ad5f26aa3b2476e
CRs-Fixed: 2524381
During SSR in dp_vdev_flush_peers function, the else condition finds peers
to delete by calling dp_peer_find_by_id. If the delete_in_progress_ flag
has already been set to TRUE, then dp_peer_find_by_id will return NULL
and not delete the vdev object. Calling __dp_peer_find_by_id will always
return peer id so all peers are sure to be deleted.
Change-Id: I86bf2bdda7ebc5a9c2f4bbc877392ebff9cbaf59
CRs-Fixed: 2513104
The IEEE channel numbers in the 6GHz band overlap with the
IEEE channel numbers in 2.4GHz, 4.9GHz (e.g. Channel number 1) and 5GHz
(e.g. Channel number 149). Currently many APIs in the regulatory
component, have channel number as a parameter. This leads to the channel
number collision.
To overcome this, new APIs with channel center frequency ( in units of
megahertz or MHz) as a parameter are created, as a channel center center
frequency is unique for 2.4 GHz, 4.9 GHz, 5GHz, and 6GHz channels.
Each new API performs the same function as its old counterpart.
For example reg_set_5g_channel_params() and
reg_set_5g_channel_params_for_freq perform the same operation. The
difference in the latter, is that the channel center frequency is given
as an input parameter instead of IEEE channel number, and the function
body is modified to suit channel center frequency.
The new channel frequency based APIs are placed under the macro
"CONFIG_CHAN_FREQ_API" and the existing channel number based APIs are
placed under the macro "CONFIG_CHAN_NUM_API". The APIs under the macro
CONFIG_CHAN_NUM_API can be removed, when when all the references to
the APIs are removed.
Change-Id: I0347e8d31c25e2c3a406aafe1360c7c7b602fda2
CRs-Fixed: 2463009
Remove channel_map_old and and remove the instances of
CONFIG_LEGACY_CHAN_ENUM in the dfs and regulatory component.
Change-Id: I3e30dba72c28c9c356648595ad96720ab0cd789a
CRs-Fixed: 2463009
This is needed, because in SAP mode wlan_wake_irq is not used to wake up
the APPS when it goes to suspend, and each SRNG interrupt needs to
wakeup the APPS when needed. Hence mark DP interrupts with
IRQF_NO_SUSPEND flag.
Change-Id: I0138c94ad82da7cdef5856c15c5f4089a835bc22
CRs-Fixed: 2512383
The pktlog will fail with ROME module due to the change IDs:
I24776caa3b78ec38d94421f243ec72d81ee3102d
Ifb70ac0993f2402201f88758845f730cf677b1a0
Define new macro PKTLOG_LEGACY for HELIUM/ROME to avoid the ROME PKTLOG
failure.
Change-Id: Ibaa20b7af208a261e0fd8682de45ad8eb4a69212
CRs-Fixed: 2523511
*For QCN7605 do not call usb_get_dev/usb_put_dev as its already called
in CNSS.
*Also for QCN7605 do not disable lpm in hif_usb_disable_bus().
This was a workaround done for Rome/Naples which is not needed for
QCN7605.
Change-Id: Ibb151390590f85a96ad83395420b08aee1be15ef
CRs-Fixed: 2516667
Disable PN error handling in REO Queue descriptor setup.
This is different from pn check enable.
When PN error handling is enabled, if a PN check fails
REO queue descriptor sets pn_error_detected,
All the subsequent packets will be exceptioned with REO error code 13
till SW resets the pn_error_detected.
SW is not doing any special handling when PN error handling is enabled
Hence disabling flag in setup time instead of resetting/updating
reo queue descriptor as update is an uncessary overhead.
Change-Id: I21e40b6f685e50630fcc4413f6cd27e5ed9ff66d
Degrade log level from INFO to INFO_HIGH in function dp_get_vdevid,
this is to prevent console log output which may impact spinlock lock
/unlock time.
Change-Id: Ic1ecb2f0e2c5fcf5d15766921326a8cd80e67103
CRs-Fixed: 2522041
Since callers who log runtime PM resume source may be invoked within
spinlocks or in other atomic contexts, log using info level will log
to console as well which may result overhead. Log using debug level
which will be logged to buffer only to avoid such issues.
Change-Id: I0497c7b7528200af9a34d816865e9bbbfd8bacf2
CRs-fixed: 2518800
Peer rssi is updated with the rssi measured on primary 20 and
not on the entire bandwidth.
Scale the peer rssi value by packet bandwidth offset.
Packet bandwidth offset for packet bandwidth of 20/40/80/160 is
0/3/6/9 dB.
Change-Id: I13eb8c17ec9828c0025d6b3a92a8b26b971268a1
CRs-Fixed: 2518598
Add helper API to get the center frequency of secondary 80 MHz
segment. Make this API available to Spectral target if layer
via rxops.
CRs-Fixed: 2523690
Change-Id: If1cad90d9b27d1461e802b921aecda07031b1e0b
Wake lock acquire and release API is doing console logging, which has
side effects and hence move wake lock APIs outside spin lock.
Change-Id: Ib697c5fc1b1c44dbeafd94a72cb79e63640cb0d7
CRs-Fixed: 2521000
The member of type_specific_data is not valid for ROME module. Add macro
protection for type_specific_data in the ath_pktlog_hdr to avoid offset
error when getting the msdu id info during processing pktlog TX info.
Change-Id: Icb8b95cef9a32732116522e4fc3b39067ff36037
CRs-Fixed: 2518400
In send_set_del_pmkid_cache_cmd_tlv(), pmk_info is
dereferenced to copy vdev_id, flush flag and other
parameters. Add null pointer validation for pmk_info before
dereferencing pmk_info.
Change-Id: If44acc76d7e0e5d4387f089f8ec5684fc4648665
CRs-Fixed: 2520041
Prevent delkey to call crypto_ops for FILS cipher
type, as this keys are not present in FW.
Change-Id: Ica13a62b6822ee3cee40acffa98b7cc1cb122120
CRs-Fixed: 2520517
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), dfs_get_bonding_channels() gets invoked
to find the radar affected channels's IEEE. The radar-found channel's IEEE
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 80 channel's IEEE gets assigned as 0, radar-found
frequency 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: 2521686
Change-Id: I50e1c496ce81d532408d61d21bac568c8d755b2c
Enable DISA WMI commands for FIPS CCM test
by moving DISA WMI code to unified tlv files.
Change-Id: I90e82fef0e7e365faa6e15d555bf4d431214e14a
CRs-Fixed: 2516897
Change log level to debug level since any console logging
under the spin lock has side effects due to slow UART
Change-Id: I21dca8f4eb9ba563d2ce96274d32405d1817d13e
CRs-Fixed: 2521056
In Genoa SDIO ADMA implementation Host sends packets to FW in
multiples of SDIO Block size.
If the packet/bundle is not block aligned Host adds padding at the
end of Packet/Bundle.
If the TX packet plus padding exceeds one FW TX Buffer, Padding data
will occupy the next FW TX buffer. Same applies for bundle TX packet.
For above scenario, HTC_FLAGS_PADDING_CHECK of HTC header Flags is used
to notify the FW that - Padding data follows the currentHTC packet
Since the padding data will take one extra FW Tx Buffer, host need to
handle the extra Tx credit being used by the padding data/buffer
CRs-Fixed: 2516617
Change-Id: I1eb394859689b281653bfd6d681804eb016a14cf
Genoa SDIO FW doesn't use the HTC_FLAGS_SEND_BUNDLE
in send direction, host to fw
Do not set this flag during Tx bundling for HTC Packets
This is a WAR to avoid FW crash, until fix available from FW
Crs-Fixed: 2511297
Change-Id: Iaf178f9e1a9c07ca25a8b801c667fb0d16fac85c
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
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
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
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
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
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
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
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
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
Add channel number along with their frequency information
to display channels affected by radar.
Change-Id: Iedc489c5f23d95f13e32affa2aa200b55a77e5eb
CRs-Fixed: 2482303
'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
Pass pdev to dp_peer_stats_notify API instead of de-referencing
this from peer structure.
Change-Id: I5dc679283f5822f44b4140aefb3aee44a826c720
CRs-Fixed: 2500647
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
Rename dfs_cac_attach to dfs_cac_timer_attach. This is to align with
other function names.
CRs-Fixed: 2519566
Change-Id: I9c66fa1688c1790bd72f6e7938e612e57035c876
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
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