Currently many layers store the datapath handles i.e.
pdev and vdev handles and use them for passing as an
argument to the CDP APIs. This gives way to possible
race conditions, where the datapath handle provided by
the outer layer might be a stale pointer, which in turn
leads to unexpected results.
Remove the storage and usage of all the datapath handles
from the layers currently using them.
- cds_context
- vdev objmgr
- pdev objmgr
Change-Id: Icf24bd3792af203d1a06e153f0badd6e7405559f
CRs-Fixed: 2602199
Use newly defined QDF API in CMN qdf_is_driver_unloading() to check
if driver unload is in progress in DSC.
Change-Id: I2958c6cc3ee6f2ac4302e2dbbf1c68d986fea175
CRs-Fixed: 2605706
Modify the max tx power value from 30db to 24db
to pass certification test cases.
Change-Id: Idf9c3ca10d3216f0f4b1cf78f87586c6bd3c2c39
CRs-Fixed: 2601405
There might be race condition when doing RX GRO flush between dp_rx_thread
and vdev detach thread.
Only doing RX GRO flush in the dp_rx_thread context, and use the events to
sync with dp_rx_thread and vdev detach thread.
Change-Id: I2dbf92c2c11e950ca790dd7429c8bb235c239d0c
CRs-Fixed: 2601826
Create a mon thread to process the packets for pktcapture
mode only if packet capture mode is enabled.
Change-Id: I64e3687d08acd0d27019ed9e11b5b92b13fcd878
CRs-Fixed: 2528545
Update packet capture mode param in the HDD context
after reading the INI parameter.
Change-Id: I3ea88e376f1ad8ebc96715d08395331470c23d4a
CRs-Fixed: 2528536
Currently cdp ops are given pdev/vdev/peer
handle as its arguments which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the pdev_id or vdev_id or peer mac address,
which will be used to get the respective handles,
and hence avoiding the unwanted access of the
handles if it has been deleted.
- txrx_data_tx_cb_set
- txrx_mgmt_tx_cb_set
- txrx_mgmt_send_ext
- txrx_pdev_attach_target
- txrx_pdev_detach
- txrx_vdev_attach
- txrx_vdev_register
- txrx_vdev_detach
- txrx_peer_create
- txrx_peer_delete
- txrx_peer_delete_sync
- txrx_fw_stats_get
- txrx_get_vdev_from_vdev_id
- txrx_pdev_set_ctrl_pdev
- txrx_pdev_attach
- txrx_get_vdev_mac_addr
- txrx_pdev_post_attach
- txrx_pdev_pre_detach
- txrx_get_ctrl_pdev_from_vdev
- txrx_get_mon_vdev_from_pdev
Change-Id: Ib8b0b1edd63e7c3f8813b11ca26b50ec121fe255
CRs-Fixed: 2541459
Presently, during Subsystem Restart(SSR) the object references
are not released cleanly, invoke stop adapter during the SSR
to have common functionality between the netdevice going down
and SSR.
Change-Id: I2980379022f62ef27dea92868c8033c087544d50
CRs-Fixed: 2587443
Currently cdp_host_get_vdev_stats API provided
with vdev handle as its arguments, which is
directly accessed in that API. This can cause
a race-condition in access of the respective
handle if it has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the vdev_id which will be used to get the
respective handles and hence avoiding unwanted
access of the handle if it has been deleted.
Change-Id: I4cc959b9244f5c22dea71194c86c583cd9c2a071
CRs-Fixed: 2583358
To avoid conditional compilation inside function body use QDF API
qdf_set_wake_up_idle in RX thread startup api.
Change-Id: Ibe78fb19893c6a942cfbdde2f33684ea402af47b
CRs-Fixed: 2580958
On some platforms with TQM, target don't know packet number of
successfully transmitted after more than one retransmission attempt,
and after TQM retry, host data path will be notified.
Adjust tx retries stats number from data path, and indicate to upper
layer when query by wlan_hdd_cfg80211_get_station() on these platforms,
other platforms keep tx retries from wmi vdev stats.
Change-Id: Ie4b9a9f3b9241a59452e3f21f68757f3638b1a19
CRs-Fixed: 2574368
During uplink traffic, affine RX thread to big cluster if
throughput is high and rx_packet counts above threshold.
Change-Id: I34034e79ee07c229966a279919acc11d1942b890
CRs-Fixed: 2557745
Currently control path handles of pdev/vdev/peer
are given as arguments to cdp ops, which are
directly accessed by dp layer. This can cause a
race-condition in access of the handle if it
has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the psoc handle which can be accessed all over
to retrieve objmgr_pdev from psoc.
- rx_mic_error
- txrx_pdev_attach
- txrx_vdev_attach
- txrx_peer_create
Change-Id: Iaec8b913810f9035faa0010117cdff19bdded37f
CRs-Fixed: 2541431
Add logic to queue and bundle packets before
giving it to scheduler to ensure predictive HTC
bundling for improvement in TX throughput.
Change-Id: Ib00135ca59b4c5f0f05edc93dca115bf17174a36
CRs-Fixed: 2561671
Send vdev create to firmware when the mlme vdev create handler
is invoked as part of the vdev object create.
Change-Id: Ibba02f6b5885d7b3a62529ef51768f520395513e
CRs-Fixed: 2555943
Currently the cdp apis are given pdev/vdev/peer
handle as its arguments, which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the pdev/vdev id or peer mac address, which will be
used to get the respective handles, and hence
avoiding the unwanted access of the handles if
it has been deleted.
Converged misc_ops
- tx_non_std
- get_opmode
- get_tx_ack_stats
- set_ibss_vdev_heart_beat_timer
- hl_tdls_flag_reset
- set_wisa_mode
- txrx_post_data_stall_event
- update_mac_id
- pkt_log_init
- pkt_log_con_service
- get_num_rx_contexts
- set_wmm_param
- flush_rx_frames
- bad_peer_txctl_set_setting
- bad_peer_txctl_update_threshold
- txrx_data_stall_cb_register
- txrx_data_stall_cb_deregister
- vdev_set_driver_del_ack_enable
- get_intra_bss_fwd_pkts_count
- mark_first_wakeup_packet
- register_pktdump_cb
- unregister_pktdump_cb
- pdev_reset_driver_del_ack
- runtime_suspend
- runtime_resume
CRs-Fixed: 2539735
Change-Id: I2baad09fde29d439ae2099e01e4e68ed6b94196d
policy_mgr_is_hw_dbs_required_for_band is for any HW where
PHYA/MAC0 doesn't support the given band. We need to switch
to DBS mode to support the band. So far we have
overloaded policy_mgr_is_hw_dbs_2x2_capable to achieve above.
Need a cleaner API to work in a generic way
(for 2x2, 1x1 or any chain mask configuration).
Change-Id: I1cb28bece1242fc749a0a6a56fadca0502850c43
CRs-Fixed: 2565939
Currently the cdp apis are given pdev/vdev/peer
handle as its arguments, which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the pdev/vdev id or peer mac address, which will be
used to get the respective handles, and hence
avoiding the unwanted access of the handles if
it has been deleted.
Converged ocb_ops
- set_ocb_chan_info
- get_ocb_chan_info
CRs-Fixed: 2539745
Change-Id: I7de53c48ec6b7f0c09be7c9cf642d8cf4f8eae78
Currently MCL and WIN both have separate queue.h
files with the same declarations and definitions.
As part of cleanup single queue.h is created in cmn code,
use this newly created queue.h file instead of MCL
specific queue.h file.
Change-Id: I91619e5fff2040cb588cd0413cb42d5d7469f41f
CRs-fixed: 2505800
As a part of cdp convergence the pdev_id
is used to obtain the pdev handle on need
basis.
Instead of the pdev handle, use the pdev_id to
retrieve datapath pdev handle.
CRs-Fixed: 2539733
Change-Id: I887ea2f1a312207cbb642b33435f4e7111068c62
As a part of 802.11ax amendment, 6GHz band operation is added.
Since the 6 GHz channel numbers are overlapping with existing 2.4GHz
and 5GHz channel numbers, use frequency to identify unique channel
operation instead of channel number. Channel frequency is unique across
bands.
As part of above requirement add logic to process rx mgmt
packets based on the frequencies instead of channel numbers.
Change-Id: Ib063070738ecdb4f83379eafe50629778a490aae
CRs-fixed: 2522693
Currently the interrupts are enabled before the datapath
srngs are initialized. This causes an invalid access of srngs
when any interrupt is received before srngs initialization,
which can happen during operation mode switch, eg during switch
from monitor mode to mission mode.
To avoid this invalid access of srngs, enable the interrupts
only after the srngs are initialized.
CRs-Fixed: 2486050
Change-Id: I9e436f30e2f6b67e02db3ed32231570ab51d5f7b
Add support for WMI over QMI to reduce power consumption for
periodic stats report.
Change-Id: Iec725b357d9bcfa33029aedf7c568814499bc130
CRs-fixed: 2521826
In SSR case the mlme_vdev_obj_destroy_handler for the vdev may
get called after the dp soc is uninitialized and thus the
cdp_vdev_detach will not get called to free dp vdev.
Thus free dp vdev before sending the vdev delete and
for force cleanup due to ssr try to free it before detaching
dp soc.
Change-Id: I6f1f95a4f8bbc4cb316e8fd59f6411a6c0c2c099
CRs-Fixed: 2538481
When vdev_mgr_start_send is introduced, the Dfs->dfs_curchan
will be filled from mlme "des_chan" by tgt_dfs_set_current_channel.
Set correct channel flags to des_chan so that dfs radar functions
can get correct channel information.
Change-Id: I643acadb97c3924261b45f598a50fa82d9a224e6
CRs-Fixed: 2529996
If the ready event times out the waiting thread in the error condition
starts closing the modules but in the other
thread the wmi_rx_work_queue could be executing trying to access the
data which being freed in the other thread.
Flush the wmi_rx_work_queue when the ready event times out.
Change-Id: I7d91b3fa5f3468c607ce3669eabf7d2e3789774d
CRs-Fixed: 2524305
cds_cfg is assigned the return value from function
cds_get_ini_config. cds_cfg may be null pointer. Add
null pointer check before cds_cfg is
dereferenced.
Change-Id: I184c0a589fa660c5c49cd951986ad918cbc42bcd
CRs-Fixed: 2518433
For runtime PM if the bus is suspended driver need to consider
extra 6 sec time for bus resume.
Thus add 6 sec extra in WMI timeouts if runtime PM is supported.
Change-Id: I5515cc889a0315382bac11a33ea6f901b7af1c46
CRs-Fixed: 2507029
Support monitor mode enablement by changing driver mode, and also
remove the support that enable monitor mode with insmod parameter
"con_mode_monitor = 4", use "con_mode = 4" instead.
enable monitor mode steps for reference:
(1) change driver mode
a. svc wifi disable
b. echo 4 > /sys/module/wlan/parameters/con_mode
c. ifconfig wlan0 up
d. iwpriv wlan0 setMonChan 11 0
(2) insmod with kernal parameter way
a. insmod /vendor/lib/modules/qca_cld3_wlan.ko con_mode=4
b. ifconfig wlan0 up
c. iwpriv wlan0 setMonChan 11 0
Change-Id: Ie615533d060261d545b3b92bea9916099ccccadd
CRs-Fixed: 2494158
RDDM can be collected during kernel panic and pld_collect_rddm is
a blocking call that will cause WLAN watchdog if the caller is from
scheduler thread. Hence revert this change and collecting FW dump
inside kernel panic handler.
CRs-Fixed: 2506844
Change-Id: I8667896e61b856fc2e03e1c8278a6451b6a04c24
In standard linux kernel, struct dma_iommu_mapping is not defined for
arm64, while in qualcomm linux kernel, struct 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: 2496733
Post rx mic error information to HDD via new HDD mic
error callback(hdd_rx_mic_error_ind) registered to
.rx_mic_error member in dp_ol_if_ops.
Change-Id: Ia1e2b78a94dddba48937995ecf62fb5a7ae4139d
CRs-Fixed: 2488452
In cds_sched_find_attach_cpu function, change calls to functions
cpumask_clear, cpumask_set_cpu, and cpumask_setall to instead use the
QDF abstraction of these functions qdf_cpumask_clear,
qdf_cpumask_set_cpu, and qdf_cpumask_setall.
Change-Id: Ibd62e4d0f38ad3b8f2483e6cf40d56fcb70cba10
CRs-Fixed: 2486827
This is to Remove CONFIG_MCL in qcacmn code.
Related qcacmn change is
Ie231e966229789bcd8fa69aef1bc20e9b07a88ae.
Change-Id: I7b9500bc5de74be20d404758b43fca590bbf7caa
CRs-Fixed: 2484900
This is to remove CONFIG_MCL from qcacmn code.
Related qcacmn change is
Ia417c90060b20b004b1e5408be654ff392a8113d.
Move cds_is_fatal_event_enabled from
wlan_logging_set_fw_flush_complete to
cds_logging_set_fw_flush_complete.
Change-Id: I709c1f9be40d0b09df512d995a72edd5e7a5c820
CRs-Fixed: 2484843
Affine DP RX Threads to perf cluster in high throughput scenarios.
High throughput is detected using existing logic from the bandwidth
timer.
Change-Id: Ieb98c6930807ba42be7f5b4d0b8a78dfb197ba27
CRs-Fixed: 2474322
qcacld-2.0 to qcacld-3.0 propagation
This change adds support for driver supported TCP
delayed ack to increase TCP RX performance in
third-party platform which does't support kernel
TCP delayed ack feature.
TCP delayed ack is dependent on count and timer
values. Whatever is achieved first will trigger
sending TCP ack.
This feature can be controlled through ini values.
gDriverDelAckTimerValue - timer value in ms
gDriverDelAckPktCount - delayed ack count
gDriverDelAckEnable - enable/disable feature
Change-Id: I8105bbb90965295b5a4aefeb00d344a90155974d
CRs-fixed: 2414224
When Rome host F/W out of sync, cds_trigger_recovery_handler is
called, but pld_collect_rddm is added in it by change
Id9f1dfefe1560affff6c4ecfca1b8fdba3eb0928,
Rome doesn't support RDDM, panic will always happen without F/W
dump.
With this change and ini gEnableSelfRecovery=1, when host F/W out
of sync happens, crash inject is sent to F/W to trigger F/W dump,
if subsystem restart level is "system", panic will happen,
If subsystem restart level is "related", SSR will happen.
Change-Id: I3c714e6b2750ef3305b0f4c64ea5fe8fdc74c1d8
CRs-Fixed: 2472484
Add QCA_LL_PDEV_TX_FLOW_CONTROL for both
QCA_LL_LEGACY_TX_FLOW_CONTROL and QCA_LL_TX_FLOW_CONTROL_V2
disabled platform, avoid frame drop in driver which leads to bad TCP
TX throughput. Change NUM_TX_QUEUES to 5 for this case to avoid invalid
memory access in wlan_hdd_netif_queue_control().
Change-Id: Ifa649e31a41d1bf89eadc8cc7e9520f0e27b9fe4
CRs-Fixed: 2466996
Use new API pld_smmu_get_domain in place of
pld_smmu_get_mapping, which is to be deprecated.
Change-Id: I7a083cd3c0deecdbf774b57121866cd72fc157dc
Crs-Fixed: 2464850