Add API to get LI which is configured by the user.
In case, user has not configured any interval,
device uses default LI and this cmd will return 0
Syntax for cli cmd: driver GET_LISTEN_INTERVAL
Change-Id: I3ef12ffc757288c057c88dceece7dbc2da68880b
CRs-Fixed: 3425472
Currently, in WMI_WOW_ADD_WAKE_PATTERN_CMDID driver sends only SAP mac
address and pattern_id. So, FW does not have bridge mac address.
To fix it, driver will send bridge mac address and pattern_id along
with SAP mac address and pattern_id.
Change-Id: I3fae9f0383a1ba8c64edfa6cf8518ab9a5604a14
CRs-Fixed: 3456318
Remove unwanted QDF asserts from PMO and suspend all components as there is
error handling present for error cases.
Change-Id: I43b1ba36d9e2fb467a7a7c110abd4a2d44e5b1a8
CRs-Fixed: 3459928
Extensive amount of PMO logs are seen in case of crash, which
decreses the debugging effciency.
To address this issue, optimize PMO logs.
Change-Id: I7c3b76d72deaf53782befc6d931866d907b5d168
CRs-Fixed: 3402290
According to new requirement, add INIs
max_pagefault_wakeups_for_ssr,
interval_for_pagefault_wakeup_counts and
ssr_frequency_on_pagefault to trigger SSR if host wakes up
because of pagefault.
For ex: If max_pagefault_wakeups_for_ssr = 30,
interval_for_pagefault_wakeup_counts = 180000 (3 mins) and
ssr_frequency_on_pagefault = 3600000 (1hr), in this case host
will trigger the SSR if it receives 30 wakeups because of
pagefaults in 3 mins, host will trigger SSR only once in 1 hr.
Once the SSR is triggered, host will not trigger next SSR for
next 1 hr even if it receives 30 wakeups from fw because of pagefaults.
This 1 hr time is getting monitored from last SSR.
Change-Id: Ic122a7d8e8749870bfa5d28e74f6e9ee19493d04
CRs-Fixed: 3378492
For GTK offload functionality, currently only 16bytes of
KEK and KCK are being copied from the userspace.
In latest kernel, kek length and kck length are sent to the
host driver as part of set_rekey_data command. Therefore,
use this length to copy the kek, kck params in host driver.
Change-Id: Idef0247aaab22022a84898eca6eb2f010ca1bf1f
CRs-Fixed: 3345506
In certain concurrencies the total WOW patterns sent
to FW is exceeding the FW limit of five patterns which
can lead to ping failure as FW may drop the packet.
For STA mode ML adapter, send only the MLD MAC address
on which the data packet will be received.
Do not send ARP pattern in SAP/P2P-GO mode which is
sent with length zero.
On successful pattern delete request sent to FW,
decrement the default pattern count.
Change-Id: Ib45cf797a4bc3c6fbc23a2a95e877d7d8af34629
CRs-Fixed: 3257348
Currently mac address is getting configured as the wow pattern
while the vdev is getting created, configure the mld address also
during the vdev creation so during legacy connection or roaming
between the ml-legacy vice versa there wont be packet drops because
of pattern mismatch.
Change-Id: I9b98649bca132a6665f2e4dd94d9c6b840223827
CRs-Fixed: 3124115
In some scenario, it is required to receive every ARP/NS packet even
it is not to solicit address itself. So add this vendor attribute
configuration to enable/disable ARP/NS offload on fly.
On some platform, if target suspend to WoW mode, APF filter will drop
such ARP/NS packet in the front, so prevent runtime suspend happen
if disable ARP/NS offload. System suspend still allow in consideration
of potential power impact.
It only support on STA/P2P-Client mode device, and this configure is
optional, while default behavior is ARP/NS offload enable. It will
restore to default behavior if interface being closed.
Change-Id: Icd49e230024bc1ce51519cd9fafee9bc9f79f382
CRs-Fixed: 3058494
INI item enable_dynamic_pcie_gen_speed_switch is no longer. Hence,
delete all uses cases of it.
Change-Id: I1082620c4354bda48ebc54aae7e72e5a81c4aa94
CRs-Fixed: 3068122
The ini gEnableWoW was designed to enable or disable both magic
pattern match and pattern byte match, but now host ignore the
magic pattern setting from the ini, always enable the magic
pattern instead.
configure magic pattern in line with ini gEnableWoW setting.
Change-Id: I309aff03de9bdbd36fe391784ba54cbfa0cad67b
CRs-Fixed: 3047199
Add support to offload icmp feature to fw in case of
suspended state to avoid high power consumption.
Change-Id: I3ff19d71eac530c75be57e6b52b975e755ff2a53
CRs-Fixed: 3042452
Add new ini item enable_dynamic_pcie_gen_speed_switch for enabling
dynamic PCIe gen speed change.
Change-Id: I7dde4e40e56bf894c7edd0805d09425444648e6b
CRs-Fixed: 2977079
Due to the limitation on third party platform, add ini to take
special care of the below wow case to avoid fw crash.
The sap/p2p_go shall kick out all the connected sta/p2p_gc and
then go to suspend if d0wow/d3wow is not supported.
Although there is wakelock try to prevent suspend after tdls link
setup, it won't take effect because auto sleep mechanism is not
supported on some third party platform, so teardown tdls link
by force before suspend.
Change-Id: I14bfe32f04cfc34d4f55a09820e42e65a1d9f925
CRs-Fixed: 2935295
Extend hdd_config_modulated_dtim() to configure moddtim
dynamically in the both non li offload and li offload mode.
Change-Id: I8669ec618d4aa9cd87c4c234972ca500c98119b6
CRs-Fixed: 2970090
Sometimes we need PDEV suspend mode, WMI_PDEV_SUSPEND_CMDID and
WMI_PDEV_RESUME_CMDID. But currently design, only support WoW
suspend or not support two choices. And, there are two confused
ini configuration, gDisableWow and gEnableWoW.
1. Add new ini gSuspendMode to set suspend mode. Default 2.
0, does not support suspend
1, legency pdev suspend mode
2, WoW suspend mode
2. Clean gDisableWow. It is replaced by gSuspendMode=0.
HDD suspend/resume function get the value by new API
ucfg_pmo_get_suspend_mode().
Change-Id: Icbeef3df6879ca2054f64e0292e9b9469c4936d4
CRs-fixed: 2940788
offload igmp feature to fw in case of suspended state
to avoid high power consumption.
Change-Id: I05fbf23dc2836f8f5dc6e2f45b35bf2d30c39790
CRs-Fixed: 2907644
Set system state in hif ctx to suspend or resume on
system suspend and resume respectively.
Change-Id: If1904a4fe5c861deed1b35071be10cb8cc8d6407
CRs-Fixed: 2899520
Any update to the SRNG TP/HP when the device is in low power
state would result in system errors. While in D3 WoW mode,
disable EXT grp irqs and drain TXRX before sending enter
power save mode to the FW. This will ensure that no interrupts
are received while in WoW mode and as a result there wont be any
HP/TP updates.
Change-Id: Ic1fb7fdd45096b458abf5d243fa652c3da878dc0
CRs-Fixed: 2890568
Add WMI service FW capability check before enabling D0 and D3
WoW for SAP and GO clients connected mode.
Change-Id: I878e4ee33807804e049bf1e8b8078d28fc1d4834
CRs-Fixed: 2869072
Rename existing INI to enable_bus_suspend_in_sap_mode and define a
new enable_bus_suspend_in_go_mode. Also define new APIs
wma_is_vdev_in_sap_mode and wma_is_vdev_in_go_mode.
Change-Id: If38c4db7b3d1f7323df45d9a7d80a02a44e7ca41
CRs-Fixed: 2864596
By default, PCIe bus suspend is not allowed in beaconing modes
(SAP/P2PGO/NDP) with one or more clients connected. Some OEMs need
PCIe bus suspend in this mode. Hence, add a config item to serve
both types of requests.
Change-Id: Ia2d990f17f605036d43db75ecd4df57701b4ba1f
CRs-Fixed: 2860495
Currently, Stats request commands are sent over qmi right from the
target suspend request is sent to FW. This is leading to a crash in
FW since it is trying to access PCI when it is in suspend state.
To address this, send stats request over QMI only after the ack is
received for the target suspend command.
Change-Id: I1b2b6a60c5d8c7ec4375d328e58a66d749794e3f
CRs-Fixed: 2835903
On some third party platform, the in-band bus suspend-resume is
not supported well, instead add gpio irq as wakeup source to
support out-of-band suspend-resume.
Change-Id: I7621f04d093013e15719b5c84dc244604be238df
CRs-Fixed: 2815754
Currently pmo_psoc_get_vdev api just returns the vdev without
taking the vdev reference and it is caller's responsibility to
take the reference, there could be a race condition where after
getting the vdev and before getting the reference of that vdev,
some other thread may delete this vdev.
To avoid this issue use objmgr api to get the vdev for pmo.
Change-Id: I3495589e2dbbb7d8efc579a62fff1a08a92c318f
CRs-Fixed: 2771211
qdf_mem_malloc() function already takes care of logging the
caller function name and line number in case of any allocation error.
Hence there is no need to add the error log again.
Getting rid of these unnecessary logs reduces driver memory footprint.
Change-Id: If0b9425f82f9ed793c7639c0ed09eb1f868b6d5c
CRs-Fixed: 2781932
Qpower config should not be allowed if Qpower config/OPM power save config
is disabled in ini file.
Change-Id: Iff21159f30731f7188506ab5e5e3133d02203b6b
CRs-Fixed: 2778632
Remove wowlan_deauth_enable and wowlan_disassoc_enable INI params as
these are unused
Change-Id: I90d10995365771359f1bcd029b9193437ad67a18
CRs-Fixed: 2678156
WLAN_FEATURE_NAN_DATAPATH is deprecated and the define is also
removed. But there is still some code(NDP wakelock event
configuration) which is guarded in this flag and it never gets
compiled. So replace WLAN_FEATURE_NAN_DATAPATH with overall
NAN feature define WLAN_FEATURE_NAN and move it to a separate
API.
Also, enhance log to print the complete 16-byte bitmap in hex
format.
Change-Id: I1ad51efc2b6a088022601686744802995fb7b4b7
CRs-Fixed: 2679286
gEnablePowerSaveOffload is confusing, so change it to
gAdvancedPowerSaveMode.
Value 0: Disable advanced power save
Value 1: Enable advanced power save
Change-Id: Ib5593ef31eedacdc232ffbad183974e2cd847e83
CRs-Fixed: 2676664
If resume and fw wakeup happens at the same time.
psoc_ctx->lock maybe doing bottom half operation for resume,
then wakeup interrupt comes on same cpu, the interrupt
handler will also acquire psoc_ctx->lock in
pmo_core_update_wow_initial_wake_up, which cause dead lock.
Using atomic for wow_initial_wake_up, so the interrupt handler
can avoid using spin_lock.
Change-Id: Id0e963a0924415e9660c57a1c1b776d3e609213d
CRs-Fixed: 2624899
Scan cmd still can be exist after scheduler thread is suspended
when host suspend, the scan cmd can't be removed from
serialization list by either complete or cancel any more since
both depends on scheduler thread, suspend thread blocked 30s to
wait scan cmd cleared.
Roam sync event from F/W can't be handled and Roam sync complete
can't be sent to F/W since scheduler thread suspended, then F/W
assert for roam sync cmd timeout.
After receive F/W down event, host will try SSR, but blocked by
unfinished suspend thread too.
Fix: suspend all components including scan before suspend
scheduler thread, make sure scan cmd is cleared and no new scan
is allowed any more before scheduler thread suspended.
Change-Id: I7a3badeedea018e4d92bbe8660692e42923852aa
CRs-Fixed: 2620650
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
Currently the offloading of the NS and ARP to firmware is inefficient;
redundant caching is performed even if offload is not sent. This causes
wastage of resources and increases code complexity.
Introduce checks before caching and offload to ensure that the mentioned
inefficiencies are taken care of.
Change-Id: I6013810e1e08adb15c801f4fc21e1b50371bacda
CRs-Fixed: 2569763
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
Currently the bitmap of action frames that can wake up the host
during suspend is sent via the wmi command
WMI_WOW_SET_ACTION_WAKE_UP_CMDID. This bitmap doesn't include
RRM action frames so currently the host doesn't wake up for rrm
action frames when in suspend mode.
Selectively enable wake up for rrm action frames during runtime PM
alone. Don't enable host wake up during normal suspend as it will
consume more power.
Change-Id: I097596118c2888fc9ea24802e4dbe69d02c5c5f7
CRs-Fixed: 2507185
With current design, firmware sends the kck, kek and replay
counters as part of wmi_key_material tlv over the
WMI_ROAM_SYNCH_EVENTID event. But the maximum supported kck key
length in wmi_key_material was 16 bytes. But for FT Suite-B
(akm 00:0f:ac:13), the kck_bits is 24 bytes long and cannot be
sent over wmi_key_material. So firmware sends kck, kek and
replay counter values over the new tlv wmi_key_material_ext.
Host driver copies the kck key with fixed 16 byte length to the
upper layers. Introduce kck_length parameter in csr_roam_info
and roam_offload_synch_ind structures and copy kck based on this
length.
Also fix maximum number of AKM suites supported to 5, as some
certification test cases advertise 5 akms.
Change-Id: Iab050e3e3f7efead8070a02094998d15f7ffcbd0
CRs-Fixed: 2400770
Send idle roam trigger monitor command to firmware based on
the SET SUSPEND mode command received from the user space.
The set suspend mode value sent will be used by firmware as
one of the parameters in determining if the device is in
idle state. When set suspend mode is 1, device is not in
idle state else the device is considered idle if idle state
data packet count, idle rssi, inactivity time criteria are met.
Add changes to send the suspend mode value over the wmi
command WMI_IDLE_TRIGGER_MONITOR_CMDID.
Change-Id: Ia4531fdab140334dbb830e0d7486db07bbdfc7e8
CRs-Fixed: 2436221
In USB devices even if the driver returns an error from bus_suspend,
still the kernel/platform goes into suspend as any error from USB
bus_suspend is ignored.
During suspend, if WoW or suspend was NACked by FW, we should not
send WMI_WOW_HOSTWAKEUP_FROM_SLEEP_CMDID, WMI_PDEV_RESUME_CMDID to disable
WoW or resume device (in the next system resume)
Add new PMO API to get target suspend state and use it to check if
device should be resumed.
Change-Id: Ic6be05f4f2d36ffe174774b6cd55c6da6b1ea1b8
CRs-Fixed: 2421591
Currently, the vdev connection status is checked by getting
the bss peer of that vdev, and if the bss peer is in associated
state then vdev connected status is sent as true. It can happen
vdev is present and bss peer is deleted after getting the bss peer
from vdev pointer. Then bss peer can not be dereferenced to get the
its status.
Instead remove all the duplicate api's tdls_is_vdev_connected,
pmo_core_is_vdev_connected, and wlan_vdev_is_connected with
wlan_vdev_is_up. wlan_vdev_is_up gives success status
if associated.
Change-Id: I863c3c0689f329870bd08c813813c16956135209
CRs-Fixed: 2424996
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within pmo replace any such comparisons with logical
operations performed on the pointer itself.
Change-Id: I3697ede27e074252017e31be23caa93fc25885c5
CRs-Fixed: 2418398
1) 'ssdp' in t_wma_handle structure is not used anymore,
remove this redundant field.
2) ucfg_pmo_set_sta_mod_dtim and ucfg_pmo_get_sta_mod_dtim
should have been accessing 'sta_mod_dtim' instead of
'sta_dynamic_dtim' in struct pmo_psoc_cfg.
Change-Id: Iedd7bed1c9f637a819f97b6d8c687b784739dd62
CRs-Fixed: 2415087
Legacy WNI CFG items are refactored into new CFG implementation.
PMO uses a wma callback which uses cfg_get API to get listen
interval. Listen interval is now part of the MLME component's
private object. Define API's to get this value and use it instead
of the callbacks.
Remove WMA callback implementation and use new API that gets
listen interval from MLME component.
Change-Id: I797001ea14cc654f9daee3ce297e1ad0c0a08f2a
CRs-Fixed: 2386725
Based on new cfg framework, refactor below WNI and INI cfg items:
- WNI_CFG_PS_WOW_DATA_INACTIVITY_TIMEOUT
- g_wow_data_inactivity_timeout
- gDisablePacketFilter
Change-Id: I9a975263021ba4fd5ccea19ed1147a661f73317f
CRs-Fixed: 2375866