Some of the print messages in Data-path module come very excessively.
Use dp_verbose_debug() API to print them.
CRs-fixed: 2376998
Change-Id: Ibaec3751ce3cbe98492c531548e613c7d17db898
In datapath, some of the messages get printed everytime when packet
is received or sent. This situation ends up in excessive logging which
leads to stability issue.
In order to fix the situation, provide knob through INI to control
excessive logging and create new macro for logging the message which
comes under per packet path.
Change-Id: I2af5f9bf39540f952138aa8308401a387fe62bf1
CRs-Fixed: 2376998
Update the enum qca_wlan_vendor_attr_offloaded_packets
with the one present in the hostapd's qca-vendor.h
Change-Id: I510d91ab55705f6eed7e676fcda9c469e5c72aca
CRs-Fixed: 2404707
Consider a WDS Repeater(RE) connected to the Root on a DFS channel and
reverse CSA is enabled. When RE detects radar, it adds the radar infected
channel to its NOL list and it informs the Root of the radar detect. Let
the target channel chosen by the Root be a DFS channel.The RE on receiving
the RCSA, brings down the STA vap and begins to scan again.
The scan is initiated from the supplicant (wlan_cfg80211_scan) and it
provides all the supported channels including the NOL channels.
(supplicant is unaware of the radar detect and NOL channels).
As the scan channel list sent to the FW includes NOL channels, FW reports
DFS SCAN VIOLATION and all DFS channels are blocked in RE.
The supplicant keeps sending the same scan list but scan is never
successful and thus the RE does not connect back to the Root.
To fix the DFS violation, remove the NOL channel(s) from the scan channel
list before sending the list to the FW.
Change-Id: I62090e381c11fab78ab1ee920da77f3603f48eaf
CRs-Fixed: 2405532
It has been observed at that several issues have crept into mainline due
to qdf_mem_copy() gracefully returning when the source or destination
pointers are NULL. In order to prevent such regressions in the future,
change calls to qdf_mem_copy/move/set/zero/cmp() with NULL pointer
parameters so they panic in debug builds.
Change-Id: I6df4c42245ed1d0d8a85477f59552f8243488924
CRs-Fixed: 2408266
The below change:
qcacmn: Use wrappers for bus-oriented OS API's
missed to release the reset_control leading to
a memory leak.
Change-Id: Ifea18db27fc78f686934b096b513128b1a65da9e
Add change to use wmi_service_enabled for
wmi_service_sync_delete_cmds instead of using
chipset specific name in target_if
Change QDG_BUG to QDF_DEBUG_PANIC in target_if
vdev response expiry handler.
Change-Id: Ie0f3de2a043198e5aaf5a11add3b8e13b6a47812
CRs-Fixed: 2407877
Add new vendor attribute for preferred channels list with weight
value and a flag to indicate how the channels should
be used in p2p negotiation process.
Change-Id: I7b7926bf2aa714be51a8c28e619bbe426d9d2a4c
CRs-Fixed: 2405321
CFR needs to correlate data received from direct dma ring and WMI event
for tx completion. These two events can come in any order. To facilitate
correlation CFR module has to hold on to the buffer until both events
are received and then replenish buffer back to direct dma ring. To
facilitate this requirement direct rx buf module is modified to change
callback return to bool to indicate whether buffer can be replenished
immediatley or not. Also add API to indiciate buffer release/replenish
later.
Change-Id: I7f0bd7f41ee9362374a5aeb6f506d3f101ec4536
CRs-Fixed: 2403399
CFR needs to correlate data received from direct dma ring and WMI event
for tx completion. These two events can come in any order. To facilitate
correlation CFR module has to hold on to the buffer until both events
are received and then replenish buffer back to direct dma ring. To
facilitate this requirement direct rx buf module is modified to change
callback return to bool to indicate whether buffer can be replenished
immediatley or not. Also add API to indiciate buffer release/replenish
later.
Change-Id: I40d3fdff82fd2828ada14b584da33a66052c6773
CRs-Fixed: 2403398
CFR needs to correlate data received from direct dma ring and WMI event
for tx completion. These two events can come in any order. To facilitate
correlation CFR module has to hold on to the buffer until both events
are received and then replenish buffer back to direct dma ring. To
facilitate this requirement direct rx buf module is modified to change
callback return to bool to indicate whether buffer can be replenished
immediatley or not. Also add API to indiciate buffer release/replenish
later.
Change-Id: I848c0e7cf0118156fff7cf37ac9027cdf8e2e416
CRs-Fixed: 2403395
It is easy to be misled when unmapping message is traced as map
message. Correct this wrong message.
CRs-Fixed: 2376470
Change-Id: I5577ae8e0f787925452c3ecf91ce0e2ff8a2ae9f
When delete callback is registered for the ast entry return the ast info
even delete in progress is set
Change-Id: I3ff8a6d49560513c6a18153c5bf901f201e5949f
CRs-fixed: 2384550
discard fragmented pkts if msdu count is greater than 1
and also some code clean up
Change-Id: I1d0857b5e22f0e4763cfa355b8c92bde697d7540
CRs-Fixed: 2382353
Currently the driver accepts the values of 1,2
for MCC to SCC switch , which does not take effect
as they are not used in the sap switch channel,
thus the same are of no use.
Fix is to cleanup these as they are of no use, and
do not give the desired output too.
Change-Id: I70080dbafa58451ae051bbd3ec457d1f55e7e693
CRs-Fixed: 2404565
The vdevid used in the wlan_ser_print_history function
is not initialized by default
and we pass them to subsequent function without initializing
though that would not be used.
Initialize the vdev id by default irrespective of its use.
Change-Id: I0c45528bdfcb8c6e37a40ea9a68f5c56c1cda753
CRs-Fixed: 2407068
In struct roam_scan_filter_params the legacy identifier session_id is
currently used to identify the vdev of interest. To align with the
converged nomenclature rename this to vdev_id.
This is co-dependent with Ibeab45d4badbeda6baec6a53ab4ec561dd70ccd9
("qcacld-3.0: Use vdev_id in roam_scan_filter_params").
Change-Id: I16679abc7b3b61e6814fc1b0f13c6bc0e0fb7a39
CRs-Fixed: 2407402
Add CDP APIs for:
a. To get/set rdk stats context into soc
b. To set rdk stats flag into soc
c. To flush rdk stats
Change-Id: I74e35f5fa244d6d38f46a4f64ebbad8a630589bd
If non QOS is enabled in meta header store it in skb priority.
Issue occurred as meta header is getting over written by ext2 header
when the frame is sent to firmware.
Change-Id: I61f90dbd188b70e8960ec84c86fda9678ab21f7c
CRs-Fixed: 2400370
When wlan target asserts, driver will trigger shutdown and reinit to
do recovery. In shutdown, when pdev is freed and dfs_detach is called,
dfs->dfs_nol should be freed. If at the same time dfs_remove_from_nol
is triggered in another CPU, a race condition may happen as follows:
NOL is moved from dfs->dfs_nol to dfs->dfs_nol_free_list in function
dfs_remove_from_nol, then dfs_detach sets dfs->dfs_pdev_obj to NULL
without freeing the corresponding NOL timer. QDF_ASSERT happens at this
time if the function dfs_remove_from_nol continues to execute.
To be specific: The timer expiry function dfs_remove_from_nol calls
several umac functions e.g. dfs_mlme_nol_timeout_notification which
needs dfs->dfs_pdev_obj as an argument. However, the dfs->dfs_pdev_obj
is set to NULL by wlan_dfs_pdev_obj_destroy_notification function. Even
though before dfs->dfs_pdev_obj is set to NULL, the
wlan_dfs_pdev_obj_destroy_notification waits for the workqueue
qdf_flush_work(&dfs->dfs_nol_elem_free_work) which in turn waits for the
timer epiry function, scheduling of the workqueue seems to have happened
after qdf_flush_work(&dfs->dfs_nol_elem_free_work) in this case. If
qdf_flush_work happens before the workqueue is scheduled then
qdf_flush_work does not wait for the workqueue and therefore we do not
wait for the timer expiry function before setting dfs->dfs_pdev_obj to
NULL.
To fix the race condition, trigger dfs->dfs_nol_elem_free_work
immediately after dfs_nol_delete.
Change-Id: I9fc07231b07139ebe794fc7cc94d2a8ab307c69f
CRs-Fixed: 2400959
In the function send_scan_start_cmd_tlv(), extraie_len_with_pad
is computed as roundup(params->extraie.len, sizeof(uint32_t)).
But extraie_len_with_pad is of type uint8_t. This causes
integeroverflow of extraie_len_with_pad. The length of the
wmi command buffer for scan command (len) is incremented by
this extraie_len_with_pad to allocate memory for the additional
IEs that are passed from upper layer to the firmware. But when
params->extraie.len is greater than 255, extraie_len_with_pad
overflows and obtains lower value. This causes lower wmi buffer
length allocation but the copy is done for entire
params->extraie.len resulting in overwriting of the skb that is
passed to firmware. This causes host assert when this skb is
freed.
Change the data type of extraie_len_with_pad to uint16_t from
uint8_t as the additional IE sent from upper layer can have a
maximum length of 2048. Also change the data type of len from
int to size_t to avoid overflow of len.
Change-Id: I11fae83a85a3f787b37e47df97ffc4b183cba913
CRs-Fixed: 2405641
There are generic qdf prints API's which is used
by any non componentized code with QDF_MODULE_ID_ANY
Since there are no non fl variants of these prints
so added the no fl variants which can be of generic use.
Change-Id: I0822d399b54468a94d4ba3fc9e26ea1c8c366b39
CRs-Fixed: 2406153
Due to a limitation in the memory leak detection logic when qdf_flex_mem
was written, qdf_flex_mem_release() was necessary to free any
dynamically allocated memory in the qdf_flex_mem_pool during certain
points in the WLAN driver lifecycle. This was done to avoid flagging any
dynamically allocated qdf_flex_mem_segments as false positive leaks
when the memory domains were changed and leak checking was performed.
With the introduction of qdf_talloc(), this workaround is no longer
required. Replace the calls to qdf_mem_malloc/free with qdf_talloc/free,
and remove qdf_flex_mem_release() altogether.
Change-Id: Ia5fd21386b94fc117af5f27853db5d8341601738
CRs-Fixed: 2404955
EOK is a legacy definition and frequently misused. Remove references to
it from qcacmn.
Change-Id: Ic3179ad95beb75edb97e1dda7ac879a65a86a2e4
CRs-Fixed: 2404900
If user configures DFS channel in 160MHz mode,
1. change mode to 80MHz and do PreCAC on primary and
secondary channels of 160MHz.
2. Use intermediate channel to operate.
3. Once PreCAC done on the both primary and secondary channels and is clear
then change mode back to 160MHz.
4. Change the channel from intermediate to configured DFS channel.
Use Broadcast and Unicast OMN frame to notify mode change.
Change-Id: I1f2db0f38b42fce2f407988041edfea9c49c58e1
CRs-fixed: 2395431
qcacld-2.0 to qcacmn propagation
Restore the correct credit for the flow control endpoint, add back
all the credits consumed by the queue, if fail to send packet by
HIFSend_head.
Change-Id: I480f7aba5ce8c8d1e57caaae5b2bfcd77209091c
CRs-Fixed: 2360669
Add support for the INI gSkipDfsChannelInP2pSearch
to remove the DFS channels from the given scan list in
p2p scan.
Change-Id: I44a6208ab5f3ee062073550143e23e5800342376
CRs-Fixed: 2405191
The unified WMI struct used to support the STA keepalive feature has a
few flaws:
- It is poorly named. Struct sta_params is a very generic name for a
struct that has a very specific purpose.
- It is poorly designed. It utilizes pointers to the IPv4 and MAC
addresses rather than support having those addresses within the
struct itself. This prevents the struct from completely representing
the payload, which is required if we want to utilize this struct in
the converged UMAC.
To resolve these issues rename and redesign the struct.
This is co-dependent with I20cf9f54a7ec920a90575ffd73c51708414d46a0
("qcacld-3.0: Use the redesigned STA keepalive interface").
Change-Id: I2a401fa6934f05555cb3c30088af62cfbc9a3c59
CRs-Fixed: 2404895
replace kernel version condition in osif_akm_type_crypto_mapping
and osif_cipher_crypto_mapping with ifdef.
Change-Id: I1148bb29c212b82b0a644900b0b77bd6d74bc31f
CRs-Fixed: 2379763
dp_soc_reinit is a flag to check if the
Rx descriptor memory can be reused across
WiFi up/down
Provide an API which checks the flag and
returns either true or false based on the
value set
CRs-Fixed: 2354186
Change-Id: I8c1afbfe0f743d7c9ab37a42a9ef0c6ac1fbf39c
spectral register and unregister is
supported for QCA8074, QCA8074V2 and
QCA6018
Missing target check in spectral un-
register function lead to memory leak
issue
Add missing target check in spectral
unregister to resolve the leak
CRs-Fixed: 2401813
Change-Id: I04283eaacc2d51934fb08ada46bca25d43c1dfa4
Previously host driver only supports initial SAE and Suite-B
authentication types and roaming to SAE AP is blocked. The
802.11 specification has introduced the Akm suite 00:0F:AC:9 for
FT-SAE and 00:0F:AC:13 for FT Suite-B akm type. Add support for
FT-SAE and FT-Suite-B.
Extend the enum wlan_auth_type to include WLAN_AUTH_TYPE_FT_SAE,
WLAN_AUTH_TYPE_FT_SUITEB_EAP_SHA384. This enum wlan_auth_type is
the new implementation for akm type in converged scan module
corresponding to the legacy eCsrAuthType enum.
Add changes in scan module filter to support FT-SAE and
FT-Suite-B authentication suites be added to filter->auth_type.
csr_scan_get_result() will translate the legacy eCsrAuthType
to wlan_auth_type and push it to the filter->auth_type.
Change-Id: I74d7b0be74d33ced5d3e528032aec6e057a75ff3
CRs-Fixed: 2400683
Problem & Solution: WLAN_SUPPORT_GREEN_AP is enabled by default.
cfg_green_ap_params.h file gets included only when this flag is enabled.
So, in case of setting WLAN_SUPPORT_GREEN_AP=0, this file need not be
included to avoid compilation errors.
Change-Id: Id42be740268291c46621198a9c90c5d629a92386
qdf_timer_t has repeatedly been identified as a problem area by Control-
Flow Integrity (CFI) analysis. This is because qdf_timer_init casts the
callback from a signature taking a "void *" into one which takes an
"unsigned long." While this "works," it is technically undefined
behavior, and CFI is correct in flagging it. Unfortunately, CFI
indicates the issue is with the callbacks themselves, which is incorrect.
Using unsigned long as the callback parameter has a number serious
drawbacks. Most significant is the fact that pointer size is not
guaranteed to be the same size as an unsigned long on platforms other
than Linux. For example, this is not the case on 64 bit Windows. As QDF
is supposed to be a platform abstraction, it cannot use unsigned longs
for memory addresses.
Instead of casting the timer callback in qdf_timer_init, use a callback
shim which takes an unsigned long, and handles the appropriate
conversions needed to call the actual callback function.
Change-Id: Id9149169f35f619f649934310a2a673a685690f0
CRs-Fixed: 2403021
In the current implementation, reg rules stored in mas_chan_params of soc
for each phy id are reset in regulatory_pdev_obj_created_notification()
and in regulatory_psoc_close().
In WLAN restart sequence, regulatory_psoc_close() is invoked and processing
of WMI_REG_CHAN_LIST_CC_EVENTID is ignored, if the country code matches
with existing country code in soc reg private object. Since reg_rules
in mas_chan_params of soc are reset there are no reg_rules for pdev
resulting in no indication (regulatory_set_wiphy_regd()) to cfg80211.
To fix this, avoid reset of psoc reg rules.
Change-Id: I14973217319ffa84b979f0c92cb5405708a96d2f
CRs-Fixed: 2402007