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
wlan_hdd_disconnect logic changed as part of
Ib490021775a39614646f8e518860c878cc0fdaae, but wlan_hdd_try_disconnect
was not taken care to avoid the disconnect timeout.
As both API use same code move the logic to separate API and call
the API from wlan_hdd_try_disconnect and wlan_hdd_disconnect.
Change-Id: I20d0f85cc0bb4b6ba826d60051e6f4124b180c24
CRs-Fixed: 2608708
In case of PMF connection the sta_ds is memset to 0 in case of
SA query timeout whithout deleting pmfSaQueryTimer.
Also in lim_update_sta_ds pmfSaQueryTimer is
created without any check if its already created and thus may
lead to overwrite of the previous timer.
Thus destroy the pmfSaQueryTimer before memset sta_ds to 0 and
before creating it in lim_update_sta_ds.
Also use peer deletion is in progress in lim_process_assoc_req_sta_ctx
to check if STA is in proper state and assoc can be handled.
Change-Id: I63a701c1bd4324c6fce62338df80d0911cc9b703
CRs-Fixed: 2606900
Firmware operates on RSO update params only if state is RSO_STARTED.
Hence allow RSO update commands only in RSO_STARTED state.
Change-Id: Ic9d0d6df0608bfc4b4273f7c42c893dd52739d78
CRs-Fixed: 2605298
During 6ghz scan, host should not set HT/VHT flag
when sending configuration to FW via WMI_SCAN_CHAN_LIST_CMDID.
Change-Id: I5a58c775f173e90f91f6e7472ced3d59adfd8f73
CRs-Fixed: 2605744
Currently logs for invalid channel width are set as error logs,
if invalid channel width is passed to this api very frequently,
error logs are getting flooded.
To address this issue make the logs as rate limit.
Change-Id: I493002b63ab72438cce2b61c858a32acf12ea6b6
CRs-Fixed: 2607361
Currently, sizeof(qdf_dma_addr_t) is 4 bytes, but IPA driver
and WLAN FW always use 8 bytes, we should follow up with them,
otherwise, the numbers of rx complete ring entries will not be
same in both sides. Meanwhile, for tx complete ring, during the
first time initialization, we fill the buffer address with 4
bytes, while GSI FW read 8 bytes address content from tx complete
ring, which should cause the GSI FW get invalid address on the half
way and cause the smmu fault issue. So fill 8 bytes length buffer
address to the tx complete ring can avoid such issue.
Change-Id: I61021627b634d4b1525727cc944ee410ed3154db
Send vdev param command to FW for STA vdev to set the packet
capture mode. Send the command only if packet capture support
is enabled.
Change-Id: I014acfc5d97a2bf00831259b9811b3c5bc7610a1
CRs-Fixed: 2528554
For NCHO disable, clear static and dynamic channels from roam scan
list in driver and firmware.
Change-Id: I24bca4dfb34895b4e86455dea40764af163544f1
CRs-Fixed: 2605299
In dp_rx_tm_suspend, suspend_event should be reset before waiting
for it. otherwise, the suspend function will be break.
Change-Id: I9132f45b02386c54fb8e27f0f7c2c71205450c9d
CRs-Fixed: 2606227
The current implementaion check for peer, vdev and pdev leaks on
psoc in order and if any leak is found for peer then QDF_DEBUG_PANIC
is called and vdev and pdev leaks are not checked. Similar is the case
if vdev leak is found, pdev leaks are not checked.
Invoke new API to check for all the object leaks and then result in panic.
Change-Id: Icf6622760f3646b82f893beb7415b95307e2ccd7
CRs-Fixed: 2604594
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.
Also remove the ops which are used to store
and retrieve such handles, that no more needed.
- register_peer
- clear_peer
- change_peer_state
- peer_get_ref_by_addr
- peer_release_ref
- peer_state_update
- get_vdev_by_sta_id
- register_ocb_peer
- get_peer_state
- get_vdev_for_peer
- update_ibss_add_peer_num_of_vdev
- remove_peers_for_vdev
- remove_peers_for_vdev_no_lock
- copy_mac_addr_raw
- add_last_real_peer
- is_vdev_restore_last_peer
- update_last_real_peer
- peer_detach_force_delete
Change-Id: I5134ca882f5fcf0e5941317e48712717eddb58fe
CRs-Fixed: 2541708
Add call to hdd_regulatory_chanlist_dump to dump
the curr_chan_list. It will be processed by regulatory
test case in whunt.
Change-Id: I6a35fc61f13f92874b24602a572ebb7bf6c03250
CRs-Fixed: 2606980
In OCE 4.2.1, REF AP sets MFPR = 0 and MFPC = 1, DUT STA
set MFPR = 0 and MFPC = 1 by default. The current driver
only add MBO IE when MFPR = 1 and MPFC = 1. Then the test
failed because of no MBO IE in DUT assoc request frame.
Driver needs to add MBO IE when MFPC = 1 in STA and AP
based on test plan spec. Add new API lim_get_bss_rmf_capable
to check MFPC and required mgmt cipher.
Change-Id: I54aaa096393702154d1d0df218ba334eda80b0aa
CRs-Fixed: 2604189
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
Currently PM QoS is only enabled for kernel version 4.19.0 and below but
is supported and needed in kernel version 4.19.72. So enable PM QoS if
kernel version is below 5.4.0.
Change-Id: I440abe1cf9737447faff250b1973f1e6e2fe378e
CRs-Fixed: 2603396
Remove the unused suspend check is_lim_session_off_channel() logic
which is not been used.
Change-Id: Ie16475b324f7ba94b23a21c122865b742cace57b
CRs-Fixed: 2606230
Currently cdp ops are given pdev/vdev 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/vdev_id which will be used to get the
respective handles and hence avoiding unwanted
access of the handles if it has been deleted.
Also deleting few ops which stores and retrieves
such handles and adding ops to set/get pdev params.
- txrx_set_safemode
- txrx_set_drop_unenc
- txrx_get_pdev_param
- txrx_set_pdev_param
- wdi_event_sub
- wdi_event_unsub
Change-Id: Ib3511cbdead75b30e899dbf00f936ffdae316b71
CRs-Fixed: 2541657
Starting Kernel 4.19 IPA LAN RX supports NAPI polling
mechanism. Netdevs that hook into IPA need to call
netif_receive_skb() or similar to deliver the packet
to network stack instead of using netif_rx_ni().
IPA driver exports ipa_get_lan_rx_napi(void) API for
this purpose. If this API call returns true use
netif_receive_skb() or fallback on legacy api.
Add the changes under a feature flag IPA_LAN_RX_NAPI_SUPPORT.
The flag is enabled only for linux kernel version 4.19 and
above.
Change-Id: I3bf200c993461e45da0d07697678c634760e9a89
CRs-Fixed: 2560360
Previously vdev trans will be rejected if psoc in trans. but
it causes issue when __hdd_psoc_idle_shutdown is in psoc trans,
if ifconfig comes here, the ifconfig will fail.
Add checking if psoc trans in driver recovering and unloading,
if yes, it will be safe to reject vdev trans, otherwise, we should
let vdev trans waiting for psoc trans.
At the same time, we also need to make sure driver state has been
set before psoc trans when unloading.
Change-Id: Ic47eebef76b8eadc90780b74f75d4ebef73b822d
CRs-Fixed: 2601435
Set ipa_disable flag in the target_resource_config,
which is decided by target Genoa need to support IPA
or not.
Change-Id: I1a66c83ea36d5402880ce62d66ea3e633049479a
CRs-Fixed: 2594726
For SAP, IBSS, and NaN mode, the PCIe link down should be prevented
when first remote peer joins the network to avoid any throughput
latencies.
Change-Id: Iabea78b3a4916cce7e63eadce2e1ce2874cf2c88
CRs-Fixed: 2605563
To close NAN data interface session, BSS stop request is sent to
firmware, as a response driver gets status and reason code for BSS
stop. To update NDI close session to user space, required information
is available in BSS stop response.
Hence, update NDI close indication to user space from ndi delete
response handler in HDD layer.
Change-Id: I2440cb6d15bd393ed9631d595634865fbee8bdd6
CRs-Fixed: 2600852
CPU PM QOS votes can be used as a precondition to decide whether
WLAN device is worth to enter runtime PM suspend. Add support to
monitor PM QOS votes while WLAN device is powered on and enable
this feature if gRuntimePM config value is set as 2.
Change-Id: I7f47a50689efdcb15979e7983474bb23b86da00d
CRs-fixed: 2604780
When all chan in ACS freq list is filtered out
by wlan_hdd_trim_acs_channel_list, the hostapd start will
fail. This happens when PCL is PM_24G_SCC_CH_SBS_CH,
and SAP acs range includes 5G channel list.
One example is STA active on 6Ghz chan. Hostapd start
SAP on 5G ACS range. The intersection of PCL and ACS range
is zero.
Instead of ACS failure, add API wlan_hdd_handel_zero_acs_list
to select one channel from ACS range and report to Hostapd.
When hostapd "start_ap", the driver will force SCC to 6G
or move SAP to 2G based on SAP's configuration.
Change-Id: Ice8bef2a82f43940c570c74c0af8b05d18159f52
CRs-Fixed: 2603699
Unify wow handling for SAP, IBSS and NaN mode such that both DRV
and non DRV cases are handled in same way for SAP, IBSS and NaN modes.
Change-Id: I04c7a6488285511f34ef3a5c2288937dc74b6b73
CRs-Fixed: 2603912
6Ghz channels information is not used by legacy OEM apps example
"lowi-server" having no support for 6Ghz channels.
Hence "oem_6g_support_disable" INI is added. By default INI value is
1. 6Ghz supported OEM applications sets INI value to 0 and gets 6Ghz
channel information from driver.
Change-Id: I2650e6ad2976b64e46ab0143b2bafc2df2343e94
CRs-Fixed: 2597651
Today we enqueue nbuf list to rx_thread via nbuf frags_list.
If deliver_head happens to have frags_list then it is delivered alone.
Remaining list of skbs are delivered using frags_list of next skb.
It does not takecare to update QDF_NBUF_CB_RX_NUM_ELEMENTS_IN_LIST of
the new head_skb with remaining num skbs, make sure to update it.
Also add nbuf_queued to take care of this accounting.
Change-Id: I5557b5c56576c46fc8564a87a27d167b8785bb95
CRs-Fixed: 2559875
Replace channel ID with channel frequency in
wlan_hdd_change_hw_mode_for_given_chnl.
Change-Id: If1583dae2f13c5e5553d916befb186de00840345
CRs-Fixed: 2584776
Extend WAR mechanism to record monitor mode capture frequency from
pdev if RX PPDU TLV is empty.
Change freq type to qdf_freq_t.
iw dev wlan0 set freq <freq> [HT20|HT40+|HT40-]
Change-Id: Ic66f516f1f0f2ac97563e27b1d7c86032e8690ec
CRs-Fixed: 2568971
Set he_6ghz_band flag when SAP is switching to 6Ghz band.
And clear the flag when switching to non-6ghz band.
The Driver will add the 6ghz op info in HE operation IE
in beacon frame if he_6ghz_band is set.
Change-Id: I281a9bb239c5fea693e640a8ecddf4ffc14ba7d8
CRs-Fixed: 2602152
If SAP start on 5G DFS channel, it will keep in CAC for 1 minute.
If Disable 5G by cmd: hostapd_cli -iwlan2 set setband 2G during
this minute, SAP won't switch to 2G since SAP isn't in started
state, and SAP start also fail since SAP operate channel
becomes disabled instead of DFS state, SAP will be hung in DFS
state.
Fix: When CAC complete and SAP start, check SAP operate channel
with wlan_reg_chan_has_dfs_attribute_for_freq.
After SAP started, will check for SAP restart,
if found current band is disabled, will switch to 2G band.
Change-Id: I3c29b5d324d4324ce958a5c2cd2102df2cc183ff
CRs-Fixed: 2601081
When CONFIG_BAND_6GHZ and CFG80211_6GHZ_BAND_SUPPORTED are defined in
kernel 4.4, which means 6g feature is enabled, currently there is a
build error: wlan_hdd_iftype_data_alloc_6ghz is defined but not used.
To fix this issue, refine iftype_data_*g defination with below rules.
1. If CONFIG_BAND_6GHZ and CFG80211_6GHZ_BAND_SUPPORTED are defined,
iftype_data_2g, iftype_data_5g and iftype_data_6g will be defined no
matter the kernel version.
2. If the kernel version is not smaller than 4.19, iftype_data_2g and
iftype_data_5g will be defined.
3. If the kernel version is not smaller than 5.4 and CONFIG_BAND_6GHZ
is defined, iftype_data_6g will be defined.
Change-Id: If75bea9fc4c11d6cacd8dbf49455277f055ed8de
CRs-Fixed: 2600962
When CONFIG_WLAN_FEATURE_11W is disabled, compilation of lahaina still fails
in a few areas. Even though CONFIG_WLAN_FEATURE_11W should be always be
enabled now, add appropriate fixes for the compilation issues in the event
that CONFIG_WLAN_FEATURE_11W is disabled.
Change-Id: I1743678df6b66a63160795374de7969f313f55d9
CRs-Fixed: 2601362
Sometimes wlan FW fails to return wmi_radio_link_stats_link because of
buffer, which makes timeout happen in wlan_hdd_cfg80211_ll_stats_get.
To fix this issue, FW returns wmi_radio_link_stats_link with dummy
information, and host need handle dummy wmi_radio_link_stats_link wmi
event.
Change-Id: Ibafc7f19ffc6d182601001f28dd7e85654155d02
CRs-Fixed: 2599725
Modify the max tx power value from 30db to 24db
to pass certification test cases.
Change-Id: Idf9c3ca10d3216f0f4b1cf78f87586c6bd3c2c39
CRs-Fixed: 2601405
DUT as SAP and disabled LDPC, but peer supported LDPC and DUT still
TX data packages by LDPC coding. This behavior is different to other
vendors. This change disable LDPC capability of peer when associating.
Change-Id: If90944ca359c7164d4acecfe1d6146e3d2b30b5d
CRs-Fixed: 2599860
Issue happens when wlan0 is created then hostapd change
it from sta to ap mode before start wlan0 adapter,
then interface is deleted; as hdd_sta_info_init only happens
when start ap adapter, so there will be issue when destroy
sta_obj_lock as sta_obj_lock was never init.
Change:
Move init sta_info to open adapter and init sta_info
for all modes, so this will simply the logic and
no need to consider too much about adapter state change.
Change-Id: I5e90ec120b2ec487507d9bda2f8c18c9a54d2a01
CRs-Fixed: 2554812
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
Check for invalid BW if received as part of
monitor mode vdev start command and reject if
invalid.
Change-Id: I1dfd7936af354622c52295cfba16941b96dfe649
CRs-Fixed: 2600906
Currently during ACS process, if best channel after weight sorting
is not in PCL list, then further check if there is a channel in PCL
has some weight, if there is, then switch to this new channel.
Skip above process if best channel is already in PCL list.
Change-Id: I5bfb6d18c531e6b7b4ff0b8b2bb2bd47388fed0c
CRs-Fixed: 2589033
When SAP doesn't support 11ax phymode, ref STA which support
11ax phymode connect to SAP, this will result in firmware crash
due to WMI_PEER_ASSOC_CMDID set peer_flags with WMI_PEER_HE and
peer_phymode set with SAP session phymode which doesn't support
HE capability.
Fix is to intersect he_capable from SAP and ref STA.
Change-Id: I9f63f5474db03e96a404ac86ff7929e8ebabc9f3
CRs-Fixed: 2599957
Always use ECSA for STA/SAP channel switch between 6GHz band and
other 2Ghz or 5Ghz band since operating class is required to identify
an unique channel together with channel number in IE.
Change channel switch APIs to use frequency.
Change-Id: Ie655ae88b5223a3213146cb2684a70f91cdd5b04
CRs-Fixed: 2600136
Currently in lithium FW is not always in datapath. As a result
can not provide all the wlan vendor extended stats. So as part
of this host provides some of the extended stats.
Change-Id: Ie73b1e823a54385c5b97e1844a93d4ecc38d9d3c
CRs-Fixed: 2539662
lim_is_pkt_candidate_for_drop() uses sta_ds to update last assoc
and deauth/disasocc received time without taking any lock for
sta_ds. deletion of sta_ds in pe_delete_session before accessing
sta_ds in dph_lookup_hash_entry can lead lead to Assert.
Similar is the case with sta_ds->last_assoc_received_time and
sta_ds->last_disassoc_deauth_received_time.
Fix is to use peer_priv instead of sta_ds and update
last_assoc_received_time and last_disassoc_deauth_received_time of
peer_mlme_priv_obj. In this case refcount gets increased for valid
peer and peer won't be deleted until lim_is_pkt_candidate_for_drop
releases the ref count of the peer.
Change-Id: I9daf31f9dd7b509eaf38a93078bb7418605b1c74
CRs-Fixed: 2598841
In radio measurement beacon report frame, The BSSID field
indicates the BSSID of the BSS(s) for which a beacon report is
requested. When requesting beacon reports for all BSSs on the
channel, the BSSID field contains the wildcard BSSID; otherwise
the BSSID field contains a specific BSSID for a single BSS.
If BSSID is wildcard BSSID, bssid num should be 0 when use fill
scan result filter, or filtered scan result is always empty
since wildcard BSSID can't match any normal bssid.
Change-Id: Ia172ac8160d0c38ce4c875fc29458c6c8f26c804
CRs-Fixed: 2599634
According to FW, DFS phyerr offload should be enabled before vdev start,
otherwise FW can't start DFS phyerr offload function.
Do not send DFS phyerr offload disable wmi command before vdev stop, and
FW will handle all the necessary cleanup in vdev stop wmi command.
Without DFS phyerr offload disable wmi command, DFS phyerr offload is
enabled before vdev start.
Change-Id: Id6275e9716afb34316cf46b69dd0b4f82b73ac5d
CRs-Fixed: 2598263
Set the default software retry limit value to 16 and fix the typo
in configuring the non aggregation software retry limit.
Change-Id: Ia6ef7cc39f47ef91c2c338e48561e0275445750f
CRs-Fixed: 2599467
During the scheduler_stop it tries to flush all the pending messages
in the queue, during the same the flush callbacks of all the pending
messages are invoked. If there is no flush callback for
SYS_MSG_ID_UMAC_STOP, it will free the bodyptr of the message which
contains the global variable g_stop_evt, which can result in invalid
access in the other thread.
Add a dummy flush callback message for the sys_stop message to
avoid the invalid access.
Change-Id: I46ca4240d787dce5b21cc2f99ced66a4c01b737c
CRs-Fixed: 2537773
Disable TDLS off channel if 2g or 5g is disabled, restore TDLS off
channel configure when all bands are enabled.
Change-Id: Iabfdcdbf84e4a6313ad04e381b70e21c871d66c2
CRs-Fixed: 2595303
For packet capture mode, register an interface through
hdd_add_virtual_intf and delete using hdd_del_virtual_intf.
During register, remove the P2P interface and add it back
during deregister.
Change-Id: I79d933c96591cd462e27eda73f5aed2cc7cad8af
CRs-Fixed: 2528549
Create a mon thread to process the packets for pktcapture
mode only if packet capture mode is enabled.
Change-Id: I64e3687d08acd0d27019ed9e11b5b92b13fcd878
CRs-Fixed: 2528545
Remove deprecated code because of CRYPTO_SET_KEY_CONVERGED cleanup
in MAC layer.
Change-Id: I65bc90b457cdd642d64d6ab0e6829856ee93e472
CRs-fixed: 2593528
CRYPTO_SET_KEY_CONVERGED is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag in WMA layer.
Change-Id: If70fc5cb01f2a0123030c92410e126ce8078e1c6
CRs-fixed: 2593526
CRYPTO_SET_KEY_CONVERGED is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag in MAC layer.
Change-Id: I34fb7a6a67dd6dba3fa69c98ef10a1bd51383e36
CRs-fixed: 2593525
Update packet capture mode param in the HDD context
after reading the INI parameter.
Change-Id: I3ea88e376f1ad8ebc96715d08395331470c23d4a
CRs-Fixed: 2528536
DUT formed P2P connection with second device and as P2P GO, trigger
assert in target, supplicant get P2P client deletion event, and then
DUT remove P2P GO and change interface type from P2P GO to P2P device
but failed since recovery in progress. This change avoid to indicate
P2P client deletion event to up layer since host will sent P2P GO
stopping event to up layer.
Change-Id: I2221332d062f1e5f74846187ce9b478a11b8eb9f
CRs-Fixed: 2589866
In roaming path, while processing roam synch indication info/err
prints at the driver adds up latency to the total roaming
transition time and the KPI for maximum transition time exceeds
the expected 100ms. The printk buffer is protected by a global
raw spinlock for readers and writers. This restricts the contexts that
are allowed to access the buffer. So large latencies exists when
printing to kmsg done with QDF trace levels WARN, INFO, ERROR.
Change the redundant/less significant info, error, warn level
prints in roaming path to debug level.
Change-Id: I8e2a03ddef8f3cd680263939f6e0275b8703e681
CRs-Fixed: 2597624
Currently there is no information maintained in the driver regarding the
tx patterns configured, this can result in sending the commands to
firmware without a proper validation i.e. sending the delete pattern
without validating.
To resolve this issue, maintain the add pattern history and validate
whether when the del pattern is issued.
Change-Id: Ie097a36fe46640ddfd539c481491025512571300
CRs-Fixed: 2596705
CRYPTO_SET_KEY_CONVERGED is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag in SME layer.
Change-Id: Iff9ba19887caaa39f43cb58d519a14cf6e759d59
CRs-fixed: 2593523
CRYPTO_SET_KEY_CONVERGED is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag in HDD layer
and SAP module.
Change-Id: Ic92e44e53c63ba2752907ace3ffc0f55d18470e2
CRs-fixed: 2593520
WLAN_CONV_CRYPTO_IE_SUPPORT is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag.
Change-Id: Ide9fa97a9eb0b5c197c762205f386651efc51e33
CRs-fixed: 2592096
The function hdd_rx_mic_error_ind() is not releasing the pdev reference,
causing a pdev object manager leak for the WMI command WLAN_MLME_SB_ID.
To solve this, add a new goto label release_ref_and_return that releases
the pdev ref count before exiting the function.
Change-Id: Ic798cf5064403120058e01099bb846397e887951
CRs-Fixed: 2598665
The host driver sends WMI_ROAM_PER_CONFIG_CMDID command after
WMI_ROAM_SCAN_MODE as part of RSO start/update. But the
expectation from firmware is that host should send this after
WMI_VDEV_PARAM_ROAM_FW_OFFLOAD but before WMI_ROAM_SCAN_MODE.
Also the WMI_VDEV_PARAM_ROAM_FW_OFFLOAD is sent after set key
response from csr->lim->wma->wmi. But the
WMI_ROAM_PER_CONFIG_CMDID is directly posted wma (csr->wma->wmi)
which can cause this command to go before the
WMI_VDEV_PARAM_ROAM_FW_OFFLOAD is sent to firmware.
One more instance where the WMI_ROAM_PER_CONFIG_CMDID can go
before vdev roam fw offload init is if the userspace sends
blacklist update command before offload init happens.
So route the WMI_ROAM_PER_CONFIG_CMDID via lim before posting
it to wma and add changes in rso update config to block the
blacklist command being sent in ROAM_DEINIT state.
Also Call csr_roam_offload_per_scan before csr_roam_send_rso_cmd
in csr_roam_offload_scan to send WMI_ROAM_PER_CONFIG_CMDID before
WMI_ROAM_SCAN_MODE.
Change-Id: I2600cfeafcc3e3ebfac6694c1f2cdb5df0366411
CRs-Fixed: 2596257
When WMI_ROAM_STATS_EVENTID is received, the driver copies the
roam scan candidate AP data from the event to destination
buffer. This num_ap count is used directly to fill the diag
buffer. When the number of candidates sent by the firmware
is greater than MAX_ROAM_CANDIDATE_AP(8), corruption of the
destination scan->ap buffer occurs.
Validate the number of APs before filling the diag event.
Change-Id: I5258bc0d4ce0108cbc5195aa464afd498ae9fbf9
CRs-Fixed: 2598513
If there are still RX packets pending in the napi gro_hash list, do RX GRO
flush after flushing the RX thread pending packets when detach the vdev to
avoid net_device might be invalid later which has been stored already in
the pending skb.
Change-Id: Iff0a5cf49c87b91b8cae3dbcb541d1cf0bc480a6
CRs-Fixed: 2598149
Modify sme_enable_sta_ps_check() to take power save mode
parameter as new argument.During certification WMMAC test
cases failed due to recent change of saving user power save
configuration. The uapsd auto trigger cmd could not be send
due to user power save configuration.
Apply the user power save configuration in conjunction with
power save mode.
Change-Id: I79bdfc3f4d168df23415bfb3418913de7a45886a
CRs-Fixed: 2592560
Scenario:-
1. Turn on SAP and STA on 2.4ghz and 5ghz
2. Turn off SAP
3. Turn off STA
4. Turn on SAP on 2.4ghz
Issue:-
In the start ap function, the driver calls
the stop opportunistic timer and calls the handler
to goto SMM mode.
After this, the SAP checks whether it requires the
DBS or not and then requests for DBS also, but since
the driver is already in DBS mode this command gets
rejected, so there would be 2 commands in the serialization
queue which would be SMM and start AP, which would lead to
a crash as SMM is sent before a connection on 2.4ghz as
Hastings is not capable to start a vdev in 2.4ghz without
DBS mode.
Fix:-
1.Not allow SMM if the current connection requires DBS
2. Check the HW capabilty in the active command only and
not before that to protect the reliability of hw mode.
Change-Id: I1c0c05ea05ba14d1556af2612daa3de2ffcba367
CRs-Fixed: 2587508
6Ghz SAP needs to send either a probe response or fils
discovery at every 20ms.
Add a new ini to configure the probe response or
fils discovery frame.
enable_6g_sap_fils_discovery=1 sends fils discovery frame
at every 20ms.
enable_6g_sap_fils_discovery=0 sends probe response frame
at every 20ms
Change-Id: I6c5fb339135cf11be071d73970ea3704441380eb
CRs-Fixed: 2586524
When roaming is complete, firmware sends WMI_ROAM_STATS_EVENTID
to host driver. This event has details regarding the roam
trigger reason, roam scan and candidate details, roaming result
and 11kv info sent after roaming to AP. Parse this event and
fill the below diag log report to print this in logcat:
LOG_WLAN_AUTH_ASSOC_TX_RX_INFO
LOG_WLAN_ROAM_TRIGGER_INFO
LOG_WLAN_ROAM_SCAN_INFO
LOG_WLAN_ROAM_RESULT_INFO
LOG_WLAN_RRM_TX_RX_INFO
Change-Id: Ie09dc8ad5b236d0925327dba73a3f2e73a80109a
CRs-Fixed: 2597057
If TXBF is disabled, do not configure TXBF to FW. Otherwise NDPA
packets are sent by SAP from air sniffer, which is incorrect.
Do not configure TXBF to FW through WMI_VDEV_PARAM_SET_HEMU_MODE
if TXBF is disabled for HE.
Change-Id: Ib1f9366ce18be8dadfdb46663f6606dd08f0e033
CRs-Fixed: 2596373
Certification test case HE-4.2.2 enable both 11ax and wep for sap, we
start sap as 11g mode as expected, but there is additional IEs from
hostapd which has HE cap/op IEs fails the case.
Strip these HE IEs from additional IE configure from hostapd when HE
has been decided to disable when sap start in host driver.
Change-Id: If1001255cc6528ab1a01d72d13f8376815aa5ebc
CRs-Fixed: 2594834
WLAN_CONV_CRYPTO_SUPPORTED is a temporary flag which is used for
converged crypto component transition. The transition has already
been done, so cleanup legacy code related to the flag.
Change-Id: I6626a7c9d2ab46cf35ed3593b72c074100954ab8
CRs-fixed: 2593529
During LFR2, new pe session is created before old pe session
deleted, the 2 pe sessions have different pe session id, but
same vdev id.
After change-Id: Ib2e7c72e0636765341792a79aa12968a84ed4879,
When delete old pe session DPH Entry, get pe session by vdev
id instead of pe session id, since both new and old session have
same vdev id, so there is 50% chance to get wrong pe session.
then DPH Entry for STA 1 missing issue happens, then no reassoc
happens.
Fix: When delete old pe session DPH Entry, get pe session by
both vdev id and PE mlm state: eLIM_MLM_WT_DEL_BSS_RSP_STATE.
Change-Id: I207a4291cd26175ea7013fb2f2a0c27865304db2
CRs-Fixed: 2593194
In case of nbuf map failure as part of htc_send_pkt for
tx credit flow disabled endpoints, htc pkt is not put
back in the freelist as return status is not checked
resulting in memory leak.
Fix is to put the htc pkt back in the freelist based on
status returned by htc_send_pkt.
Change-Id: I9173fa3684bc887a360b92d48b689c53a5ad5dbe
CRs-Fixed: 2593729
If gDot11Mode=1 is set to INI, DUT STA will be failed to
connect to 5G AP due to "unknown phymode" included in
vdev start.
Correct the driver to use freq API to identify 5G band
BSS instead of channel API.
And the change forces 11ax mode for 6ghz bss.
Change-Id: I692fa744756490e7125ccd5fd82c15febc19ce68
CRs-Fixed: 2594048
While sending peer_assoc_cmd to FW,add 6ghz HE band capability
if chan_freq is 6ghz.
Change-Id: Icfe886e8c9089d2c58609866e5bc64250c2b6eea
CRs-Fixed: 2591039
When roaming to whitelist SSID, firmware offloads
EAPOL 4-way HS to supplicant. Suppose initially if DUT connects
to SSID1 and then firmware roams to SSID2 then 4-way HS should be
offloaded to supplicant as the firmware doesn't posses the
pre-shared key. When roaming happens between same SSID, then
firmware has PSK and 4-way handshake is taken care by firmware.
But due to issue in roaming code, 4-way HS is offloaded to supplicant
even if roam happens between same SSID. Issue is for ROAM_RSO_STARTED
state in csr_roam_switch_to_rso_start API, there is no handling to send
RSO update if Roaming is already started, due to which
csr_roam_offload_scan is not invoked.
Second issue in roaming code is that RSO is not enabled with the
new SSID2 in firmware. RSO is not enabled as after set key
complete the state of roaming state was not set to
eCSR_NEIGHBOR_ROAM_STATE_INIT. Due to this the SSID in
firmware is still SSID1 and when firmware tries to roam again
to SSID2 it offloads 4-way HS to supplicant instead of handling
within firmware only.
Fix is to update the roam state from eCSR_NEIGHBOR_ROAM_STATE_CONNECTED
to eCSR_NEIGHBOR_ROAM_STATE_INIT in csr_process_roam_sync_callback after
roam synch propagation and also handle ROAM_RSO_STARTED state with
roam_command ROAM_SCAN_OFFLOAD_UPDATE_CFG instead of returing success from
csr_roam_switch_to_rso_start API. Now when supplicant does set key after
4-way HS, roaming is enabled via csr_roam_chk_lnk_set_ctx_rsp->
csr_roam_link_up->csr_neighbor_roam_indicate_connect->
csr_neighbor_roam_info_ctx_init->csr_post_roam_state_change.
Change-Id: I5b81f2e03fe1c7dee2820370d06f4e4f8017f12c
CRs-Fixed: 2587120
wlan_set_vdev_crypto_prarams_from_ie() is defined in qcacmn code but
disabled in Kbuild if CONFIG_CRYPTO_COMPONENT=n, it caused runtime
error if run it.
The #ifdef/#else code should live in common code where define
wlan_set_vdev_crypto_prarams_from_ie(), but there is no motivation
from WIN side to add any code which is not converged.
And it is not appropriate to put it into exist head files, so just
define inlined wrapper functions to cover the not defined case.
Change-Id: I11916703fff860025728f904c8d3906eee1d0037
CRs-Fixed: 2592904
If g_enable_go_force_scc isn't enabled, P2P Go failed to switch
to 2G band when 5G disabled.
Fix: Check whether need switch channel for band restriction
first, check go force scc later.
Change-Id: Icf8de51321debea2806585d47d2bd4fc6486075e
CRs-Fixed: 2594279
Currently the driver does not allow the channels
12 and 13 for SAP ACS because most of the legacy
stations don't scan them and they can cause many
IOT issues. But if they are the only channels left
in the spectrum (for eg. all other channels became
unsafe), then the SAP would fail as the driver did
not consider channel 12-14 for ACS.
Fix is to consider 12-14 for ACS, remove them if
other channels are available and if they are the
only channels available in the spectrum, then start
the SAP on any one of these channels.
Change-Id: I599d0e95e9bdc3aed70d6a515d7a52c39846b6f2
CRs-Fixed: 2576635
In function hdd_ocb_register_sta(), it will call function
cdp_peer_register(soc, (struct cdp_pdev *)pdev, &sta_desc), but pdev
is undeclared.
Change-Id: Ie0341b8ff880c21960a655399378b519fc240631
CRs-Fixed: 2595641
Use user setting for HT mpdu_density if target reported value is
0 which means no restriction.
Change-Id: I4be7d3f4137744e5c9e5bdfc7b50e6c338bd4f79
CRs-Fixed: 2592163
Scenario: Turn on SAP in 2.4ghz in 20Mhz and connect
DUT to it.
Now trigger channel change command and change the SAP
channel to 5ghz in 80Mhz mode.
Issue:-
STA would not go to 80Mhz mode and would remain in 20Mhz
Issue in driver was that it was checking for the ht
supported chan width rather than the self capability.
HT self capability would always be 0 if the connection
is in 20Mhz, and thus the STA would never be able to
ramp up it's BW.
Expectation:
STA should move to 80mhz if it supports 80Mhz bandwidth.
Fix:-
Check for the self capability rather than the ht channel
BW supported.
Change-Id: I546d5edd9881c1013b1a08989cbab3d4ef8fae4d
CRs-Fixed: 2594982
Scenario:
Configure two AP with same SSID and different
passwords, and try to connect to one and then roam to
other.
Observations: The DUT would connect to the second AP
but since the password is different, the EAPOL would
certainly fail, and hence it would result in overall
connection drop and the DUT could not establish a
secure connection with the second AP, and it
disconnected with the previous AP.
Fix is to avoid the AP for some time and try to
connect to other BSSIDs, and still if the EAPOl
fails with the new AP, blacklist it.
Change-Id: Ifb908823cd0eb1873ec7a4b08dffa86e548533fc
CRs-Fixed: 2591467
sta_id is carrying an uninitialized value from the caller
lim_send_sme_ndp_(add/del)_sta_rsp(). So, it's failing the
check for its validity and skipping the first NDP peer creation
/last NDP peer cleanup.
Remove the sta_id check as it's no longer used. So that the NDP
peer creation/cleanup happens properly.
Change-Id: I8daff2bfbc57b7a2fa17a121a5a9dec6975137de
CRs-Fixed: 2594317