Currently frequency attributes mhz_freq_seg1 and mhz_freq_seg0
are not getting updated in start ap before calling set channel
params api of regulatory component from start bss,
regulatory component uses these attributes to set the correct
channel params.
Since these frequencies params are not correct, regulatory
component is returning invalid ch_params for 80+80Mhz operation
which is resulting in failure of start bss for 80+80Mhz.
To address above issue, update the frequency attributes correctly
in start ap.
Change-Id: If0a8e0ed121b2167ff0226d2bd0048a1fa120f31
CRs-Fixed: 2697754
For Voice and Music (V&M) products, extreme latency optimization is
needed while playing music and discovery, higher power consumption
in this mode could be accepted. With CONFIG_WLAN_LL_MODE enabled,
when latency_level is set to ultra low via cfg80211 vendor command,
update request pm qos type PM_QOS_CPU_DMA_LATENCY to level
DISABLE_KRAIT_IDLE_PS_VAL to speed up CPU efficiency and irq response.
Change-Id: Ifb5bc8169f1cd08500c4b4bc0dd65dd0b3667ab6
CRs-Fixed: 2685074
Update hdd_data_stall_process_event to match scheduler_msg_process_fn_t.
Change the argument to scheduler_msg struct and add return status
to match function type.
Change-Id: Id4d2eaaa2262d7fe2dd6241ae4581a3d0cb09805
CRs-fixed: 2697445
Do not define WLAN_AKM_SUITE_OWE if it is defined.
Do not define WLAN_AKM_SUITE_EAP_SHA256 if it is defined.
Do not define WLAN_AKM_SUITE_EAP_SHA384 if it is defined.
Change-Id: Id06961a4c0d03f97279e2b45f9bfc5befb943e66
CRs-Fixed: 2666448
One parameter of proc_create_data is changed from struct
file_operations to struct proc_ops.
Add support for it under the kernel version compilation flag.
Change-Id: Ic87222f9c267debef56dcc66fc629854058ffabd
CRs-Fixed: 2666490
New parameter txqueue is added for callback ndo_tx_timeout.
Add support for it under the kernel version compilation flag.
Change-Id: I0234dade56f65d15a4370404e17ff51a8a73ee4e
CRs-Fixed: 2666436
Fix insmod failure in perf build which is caused by undefined
symbol when MPC_UT_FRAMEWORK is not defined.
Change-Id: I1a1ae76af596a3d219a7367d45a2fb38a08107a4
CRs-Fixed: 2696540
In cds_trigger_recovery_handler, Host driver first set flag recovering
before cds_force_assert_target. For Rome, ol_target_failure run when
FW crash, Self-Recovery stop when detect flag recoverying be set
Add CDS_DRIVER_STATE_ASSERTING_TARGET to record Host asserting in
cds_force_assert_target. Skip recovering check in ol_target_failure
if detect this flag.
Change-Id: I290e2f21bd0bca6dc6d76de43de4f8dd801d7ff5
In wma_vdev_pre_start() freq is already available with des_chan->ch_freq
so no need to get the freq again from using wlan_reg_legacy_chan_to_freq.
In hdd_cfg80211_update_channel_info() use wlan_reg_chan_band_to_freq
to get the freq from channel.
Change-Id: I179907c9f5a80f355b44aa9c9509d8d12d8825f8
CRs-Fixed: 2696687
Supplicant disables fast roaming (by making isFastRoamEnabled = 0)
before sending ROAM_INVOKE_CMD to host. This results roaming state
of host changes to ROAM_RSO_STOPPED before start processing
ROAM_INVOKE_CMD command.
Due to commit : Id0ea18a33dfef3d4e9a4003da33fc7172cf58e85, Host
unable to process roam sync indication event if supplicant disable
fast roaming before sending ROAM INVOKE command. This leads to
roaming failure.
Fix is to allow driver to process roam sync indication even in
RSO stopped state, if roaming triggered by userspace.
Change-Id: Ia5f5c7b078d457280bce8c24110f01a3be26c3d6
CRs-Fixed: 2670060
Implemented driver interface for NL command for setting
and getting TX and RX chains. The chains can be set to
either chain 0(1) or chain 1(2) or both(3). This is only valid if
antenna mode is set to 2X2.
Below command can be used to set the chainmask:
iw phy <phyname> set antenna <bitmap> | all | <tx bitmap> <rx bitmap>
Example:
iw phy0 set antenna 1 -- to set both Tx and Rx chain 0.
iw phy0 set antenna all -- to set all/both chains for rx/tx
iw phy0 set antenna 1 2 -- to set chain 0 for tx and chain 1 for rx
Below command can be used to get the chainmask after set:
iw phy <phyname> info
check for "Configured Antennas: TX 0x1 RX 0x1"
Below conditions should be met for setting chainmask:
1. Antenna sharing should be disabled.
2. gEnable2x2 in ini file should be 0
3. enableBTChainSeparation in ini file should be 1
4. DBS should be disabled (gDualMacFeatureDisable = 1)
or HW should be DBS 2x2 capable
5. set TX/RX chainmask 3 in ini (gSetTxChainmask1x1/gSetRxChainmask1x1)
6. HW should support TX/RX chainmask as 3
Change-Id: I04f6667398eac405a6be61bc039e048090578abf
CRs-Fixed: 2693370
chan_freq and mhz variable represent the same thing so use chan_freq
instead of mhz.
Change-Id: I4162504562c30ece71f5ebc465b1af3a048b01b2
CRs-Fixed: 2696795
As part of this change I2e7caec268776a79d7166020c64af93fee2f8aec,
the feature flag was not properly defined and there were some compilation
issues. Hence, this change is fixing these issues. Also, add unit test
ini check in fw unit test command.
Change-Id: Ia8dfedec19d4d97c8c100321a0a012ee1a1b6a00
CRs-Fixed: 2695208
Bandwidth level was set correctly to PLD_BUS_WIDTH_VERY_HIGH
but current vote level was not updated for monitor mode.
Due to this during PCI link down the reg writes for SW2WBM
release ring were enqueued in delayed register write work
queue instead of being written directly.
Delay in scheduling the workqueue results in SW2WBM release
ring getting full which results in invoking panic.
Hence update the current vote level along with the bus
bandwidth in HDD open function for monitor mode.
Change-Id: Ib9861a038afa6ca7758ea35afcae2bcfe9e69b60
CRs-Fixed: 2690247
This change is to set txpower to specific interface
from iw.
Ex:
"iw dev <interface name> set txpower fixed <value>"
Change-Id: I5a3195a36cd2d7252eb3ef0312545d338b4000ec
CRs-Fixed: 2677223
Rx mpdu count received as part of peer link stats
event from firmware does not have the proper values.
Fix is to fetch the rx mpdu count from dp layer and
update the rx mpdu count before sending the stats to
HDD.
Change-Id: I945d32c7701f5f5c9bfbbaa6ab4576b94389c84c
CRs-Fixed: 2691648
Currently host driver sends the data rate of connected
peer in the units of kbps whereas user space expects the
data rate to be in the units of mbps.
To address above issue, add a change in the host driver
to send the data rate in the units of mbps.
Change-Id: I022659f1cd16ff62dc5b9379405c35c651381e4f
CRs-Fixed: 2688150
The current bss color value is 0 in color
detection config which is not valid. Set
it accordingly in lim to share the correct
bss color config to FW.
Change-Id: I4387c7eb661846d70b62cde41b64b9c174e2f48c
CRs-Fixed: 2689632
When kernel panic, irq will be disabled, when dump Rome
firmware, dma buffer is malloced and freed every time
hif_diag_read_mem is called to dump 20K mem, dma_free_attrs is
called 100 times for 2M mem dump, WARN_ON(irqs_disabled())
will printk stack about 100 times in short time, watchdog bite.
Fix: Change dma mem malloc size from 20KB to 256KB, then only
malloc/free less than 10 times totally when dump Rome firmware.
Change-Id: I803b2cd30a1c6cdc1ce8f8f1073cdb6c17b650af
CRs-Fixed: 2693690
Kernel 5.4 has applied batched GRO_NORMAL packets processing
for all napi_gro_receive() users. this requires NAPI users to
call napi_complete_done() or napi_complete() at the end of every
polling to flush batched GRO_NORMAL packets.
However, by current wlan driver design, napi_gro_recevie()
is not happened in same NAPI polling context and done in another
thread context, it likely packets which have not been flushed from
napi->rx_list will get stall until next RX cycle.
Fix this by adding a manual flushing of the list right after
napi_gro_flush() call to mimic napi_complete() logics.
Change-Id: Ib3e851c0822a85c4712a1b817cc19dfecf6d0e7a
CRs-Fixed: 2673959
Previously pm_dbs would be queried via iwpriv
--> iwpriv wlan0 pm_dbs [dbs] [system_pref]
it is now changed to support via sysfs:
--> echo [dbs] [system_pref] > /sys/kernel/wifi/pm_dbs
Change-Id: I3f6b153a58be6932cafbc1df15ef4a62971ba954
CRs-Fixed: 2692150
Previously pm_cinfo,pm_pcl would be queried via iwpriv
--> iwpriv wlan0 pm_cinfo
it is now changed to support via sysfs:
--> cat /sys/class/net/wifi/pm_cinfo
--> echo 1 > /sys/kernel/wifi/pm_pcl
Change-Id: I437eb6d4e9424f3aed9d1cf218333371c9a9f93b
CRs-Fixed: 2684258
Add the sysfs entry for the pktlog.
Previously get_ampdu,get_amsdu would be queried via iwpriv
--> iwpriv wlan0 1 1 pktlog
it is now changed to support via sysfs:
--> echo 1 1 > /sys/class/net/wifi/pktlog
Change-Id: Id5461c86bb1369a04bc68514e874df6df1230b85
CRs-Fixed: 2684106
Add the sysfs entry for the ipaucstat.
Previously ipaucstat would be queried via iwpriv
--> iwpriv wlan0 ipaucstat 1
it is now changed to support via sysfs:
--> echo "1" > /sys/class/net/wlanxx/ipaucstat
Change-Id: I5a3195a36cd2d7252eb3ef0312545d338b40d3ec
CRs-Fixed: 2676440
Add the sysfs entry for dumpStats and clearStats.
Previously these commands would be queried via iwpriv
--> iwpriv wlan0 dumpStats [stats_id]
--> iwpriv wlan0 clearStats [stats_id]
it is now changed to support via sysfs:
--> echo [stats_id] > /sys/class/net/wlanxx/dump_stats
--> cat /sys/class/net/wlanxx/dump_stats
--> echo [stats_id] > /sys/class/net/wlanxx/clear_stats
Change-Id: If8e4d997bc621df98732461802fdd9cea89bd1ce
CRs-Fixed: 2685995
If the STA-KICKOUT event comes too frequently for
a certain AP, then the AP might have some genuine
issue and should not be tried again and again in
intial connection and roaming case scenarios.
So it is better to avoid this AP and if the AP
still faces a kickout then after 3 attempts which
is ini configurable the driver would blacklist
it to avoid ping pong.
Change-Id: I8221cca9adc777ca275fdd76c2f8ba17cd12c14f
CRs-Fixed: 2683615
Add connection check in set_power_mgmt() before enabling dhcp
protection since set_power_mgmt() can be called in disconnected
state as well for enabling power save.
Change-Id: I4b1796ba45ebf0561f4b58b066bfa63c0ca697ea
CRs-Fixed: 2690325
Add the sysfs entry for dumpStats and clearStats.
Previously these commands would be queried via iwpriv
enable / disable --> iwpriv wlan0 dump_dp_trace [1/3]
show --> iwpriv wlan0 dump_dp_trace 0
clear --> iwpriv wlan0 dump_dp_trace 2
it is now changed to support via sysfs:
enable / disable --> echo [1/0] > /sys/kernel/wifi/dump_dp_trace
show --> echo 2 [count] > /sys/kernel/wifi/dump_dp_trace
cat /sys/kernel/wifi/dump_dp_trace
clear --> echo 1 > /sys/kernel/wifi/clear_dp_trace
Change-Id: I2e7caec268776a79d7166020c64af93fee2f8aec
CRs-Fixed: 2691705
As part of WEXT replacement, replace range_ext with a sysfs file.
This feature can be controlled using configuration flag
CONFIG_WLAN_SET_RANGE_EXT
file path: /sys/class/net/wlanxx/range_ext
where wlanxx is adapter name
example command: echo 1 > /sys/class/net/wlan1/range_ext
Change-Id: I389da429e1a0cd3a2ed1efede6cb958628eb7e6e
CRs-Fixed: 2689879
Issue: Host is sending VDEV_INSTALL_KEY command without validating vdev
state. If there is channel change request, in function lim_change_channel
on WLAN_VDEV_SM_EV_CSA_COMPLETE, WLAN_VDEV_SM_EV_RESTART_REQ i.e vdev
restart request is triggred to fw and if there is any ongoing sta
connection parallely, then it may send vdev install without validating vdev
state. If firmware receives VDEV_INSTALL_KEY, it stops critical channel
request. Firmware sends VDEV_START_RESPONSE/VDEV_RESTART_RESPONSE once it
gets channel grant. If host sends VDEV_INSTALL_KEY to fw before it gets
channel grant then fw stops channel request and does not send
VDEV_RESTART_RESPONSE.
Fix: Valdiate vdev state before sending VDEV_INSTALL_KEY command.
In function wlan_hdd_add_key_sap validate the state of vdev and send
command only if vdev is in between restarting state.
Change-Id: I427ab9bfab499818290dc36b6b4b3a4974b7d3a2
CRs-Fixed: 2605369
hdd_bus_bw_work_handler API is stuck waiting on mutex
sme_global_lock acquired by scheduler thread.
WIFI logger start request API doesn't need to acquire
sme global lock because the request is posted to scheudler
thread and the request is processed in schduler thread context.
Change-Id: I34522abdc54d1a7d6b5acb546179194b4ee869d8
CRs-Fixed: 2690483
get_sta_info sysfs interface is required only for SAP mode.
Remove interface creation and deletion in sta mode.
Change-Id: I4ab2beb9200d3834f9c37600ed7c5960f21c9700
CRs-Fixed: 2686964
On non-DRV platform, host will be waked when page fault occurs
in firmware side.
Need to dump event buffer which contains more debug info regarding
current page fault.
Change-Id: I46d724c58000b3faafc0f5eead550acb37eafe3a
CRs-Fixed: 2690966
Add the sysfs entry for enablertscts.
Previously these commands would be queried via iwpriv
--> iwpriv wlan0 enablertscts [0/1/2]
it is now changed to support via sysfs:
--> echo [0/1/2] > /sys/class/net/wlanxx/rts_cts
Change-Id: I9df4e0c678cc9221b3cc95c4d2058a4516438bc3
CRs-Fixed: 2689897
Add the sysfs entry for enable_dcm and get_dcm.
Previously these commands would be queried via iwpriv
--> iwpriv wlan0 enable_dcm [0/1]
--> iwpriv wlan0 get_dcm
it is now changed to support via sysfs:
--> echo [0/1] > /sys/class/net/wlanxx/dcm
--> cat /sys/class/net/wlanxx/dcm
Change-Id: I6f7d2e93c362b4d3018d7f5698dd1bba01123600
CRs-Fixed: 2685960
Return type of umac_stop_complete_cb is QDF_STATUS when
QDF_ENABLE_TRACING feature is disabled. It not matching with the same
API defined when QDF_ENABLE_TRACING is enabled.
To resolve this, update return type of umac_stop_complete_cb to void
when QDF_ENABLE_TRACING feature is disabled.
Change-Id: I59783520a7fdf8bef4424fed649898b5547da280
CRs-Fixed: 2686544
As part of WEXT replacement, replace gtx_bw_mask with a sysfs file.
file path: /sys/class/net/wlanxx/gtx_bw_mask
wlanxx is adapter name
example: echo 1 > gtx_bw_mask
Change-Id: I40c0f611ca221c91c59d9a3f60927f841385c469
CRs-Fixed: 2686762
As part of WEXT replacement, replace txrx_fw_st_rst with a sysfs file.
file path: /sys/class/net/wlanxx/txrx_fw_st_rst
wlanxx is adapter name
example: echo 1 > txrx_fw_st_rst
Change-Id: I654ea8b66e7067f0e1d23ff053fa4b8d163d878c
CRs-Fixed: 2686665
As part of WEXT replacement, replace setwlandbg with a sysfs file.
file path: /sys/kernel/wifi/set_wlan_dbg
example: echo 1 1 1 > /sys/kernel/wifi/set_wlan_dbg
Change-Id: I886bcd0ed89460e20db1ea809fa48e3a279bb39b
CRs-Fixed: 2686081
As part of WEXT replacement, replace getStats with a sysfs file.
file path: /sys/class/net/wlanxx/get_stats
where wlanxx is adapter name
example: cat /sys/class/net/wlanxx/get_stats
Change-Id: I762f61304407876b61b6970688e3715612c60d35
CRs-Fixed: 2685602
As part of WEXT replacement, replace get_tx_stbc with a sysfs file.
file path: /sys/class/net/wlanxx/get_tx_stbc
where wlanxx is adapter name
example: cat /sys/class/net/wlanxx/get_tx_stbc
Change-Id: I3024a574c7aa35398bd4c8ee30f8235ef2fe3128
CRs-Fixed: 2682374
Ini "gEnableVhtFor24GHzBand" is 0 to disable vendor VHT in HE
mode.
Fix is to disable VHT mode if HE mode in 2.4Ghz if
gEnableVhtFor24GHzBand is set to 0.
Change-Id: Ia4ae31440b5c018e58f9a03eb1e1c85832330431
CRs-Fixed: 2676984
As part of WEXT replacement, replace get_temp with a sysfs file.
file path: /sys/class/net/wlanxx/get_temp
where wlanxx is adapter name
example: cat /sys/class/net/wlanxx/get_temp
Change-Id: I6e530562347c936fb980f4eed4c3a55cb9804bdd
CRs-Fixed: 2684669
The mhz_freq_seg0 & mhz_freq_seg1 fields are not assigned
with values from sap ctx.
Fix by copy the whole the struct of "ch_params" to
csr_roamProfile.ch_params instead of one by one.
Change-Id: I92d7bc6ddeed1038597c7639d41fca059bf13457
CRs-Fixed: 2688693
In lim_check_rsn_ie, driver first upack the RSN IE and then do pack,
During unpack RSN_Cap_present is set to 0, in case pmkid and grp
mgmt cipher is not present. Also if pmkid is not present during pack
mgmt grp cipher is not added.
This lead to RSN caps not filled and thus PMF capability
is not determined leading to PMF cert failures.
So do not reset rsn caps and consider grp mgmt ciper.
Also in lim_check_rsn_ie use the preexisting RSN IE instead
of creating the IEs again.
Change-Id: Icc360b2eed0197fcf1ae27a0ff6ae9879b45cf2b
CRs-Fixed: 2690029
Currently, host driver sends disconnect reason code as
WLAN_REASON_UNSPECIFIED(1) when the station disconnects due to
continuous beacon miss and corresponding vendor specific reason
code is also sent to userspace. This change is introduced with
the commit I99bf4573b59dc810e0a1529fcd48061d10acae4e to
provide vendor specific reason codes for all internal
disconnections.
Driver used to send reason code as 0 for beacon miss before
this change. Few applications might still expect the same
reason code(0) and current behavior causes backward compatibility
issues. So, retain the same reason code 0 for beacon miss failure.
Change-Id: I82f215ba15ff6e215cb14ac08933e1491371dfde
CRs-Fixed: 2689257
Currently the driver votes for IDLE case when no
interface is associated. If the bus bandwidth timer
is stopped when there is no interface, we are not reducing
our votes, thereby causing higher power usage.
Remove our voting for bus bandwidth when the bus
bandwidth timer is stopped.
Also in the wlan resume case, vote for MEDIUM bus
bandwidth only if any interface is associated, else
vote for NONE.
Change-Id: I6cbe7f32036219b3b8914fb096562f44559931ce
CRs-Fixed: 2688853
This commit enables support for SuiteB roaming for SHA384.
Based on the WPA3 SuiteB roam service capability advertisement
received from Firmware, we enable the support in Host.
Change-Id: Iab4e6bfc9c8ba7d604c2720c8cb848fce40dd6b4
CRs-Fixed: 2685975
Because FW don't support idle pdev suspend, and when all interface down
host will not send wow enable command because wakeup is not expected.
The idle shutdown precedure already exist for station mode, apply it to
virtual interface as well.Otherwise, it will cause wlan suspend failed
Change-Id: I5bde36298b1484b09b1bb52cf79841f99d5324be
CRs-Fixed: 2668600
After receiving PEER_ASSOC_CMD from host, FW sends Peer Assoc
Conf event as ACK of PEER_ASSOC_CMD. After that, host sends Mx
(STA:M2/M4) messages.
Currently, FW sends Peer Assoc Conf event to HOST only in
success case and HOT fills event status as success always.
As per requirement, FW now sends Peer Assoc Conf event to HOST
in failure case. So now host should update event status whatever
coming from FW.
Fix is to update proper Peer Assoc Conf event status
Change-Id: I7e1aa808e1beece23a5dfc0c120765e389e3f0f9
CRs-Fixed: 2640242
Current during system suspend/resume, we remove/add votes for DDR/SNOC
during cfg80211 suspend/resume functions. However, check for pending TX
completions and RX softirq processing happens in the bus suspend
functions which get called after cfg80211 suspend/resume functions.
Hence, there is a small time window where there may be DDR transactions
from WLAN SOC with no vote for DDR/SNOC. This can lead to high bus
latency as seen by WLAN SOC. To avoid this, move the bus voting for
system suspend/resume operation in the bus suspend/resume functions.
Change-Id: I9242d438c1fa07cd7a2dec6994f437d07dd9bb68
CRs-Fixed: 2673101
The lmac tx/rx ops are not freed in failure case of start module
which lead to mem leak.
So Free lmac tx/rx ops in start module failure.
Change-Id: Ib222e7e31164488cca7b7cc3d241f895f49daa6d
CRs-Fixed: 2688176
Set PMF enabled bit for Association Frame only when both peer
and self supports it.
Change-Id: I11994da4db87e6a83b7ebe308720c45a9e2f0173
CRs-Fixed: 2686114
Currently, SAP interface is being created when there is an existing
monitor mode interface. This concurrency is not allowed.
To avoid this, Add check for existing monitor mode interface before
creating SAP interface using add virtual interface.
Change-Id: Ia2318b880adaff39b7deb9e223140906e80a91ae
CRs-Fixed: 2680143
If FISA related macro WLAN_SUPPORT_RX_FISA is configured but INI
dp_rx_fisa_enable is not set, fisa related context is not initialed
in dp_soc structure. if do fisa flush when vdev detach, invalid
access to fisa context will happen.
Do fisa flush per vdev only if fisa is enabled in INI.
Change-Id: Id3cecfa24f8ce26465a7809d4d9b2e92ae199c7d
CRs-Fixed: 2687949
Few changes on tip got reverted as part of
I2b91a271d30b1230ef7bb14ee08d0b9da2706db4 so bring them back.
Change-Id: I12dc7304dba220f0d85763b01d4b04dd1540a3bb
CRs-Fixed: 2687980
If device is configured to Only dot11mode profile. Don't
connect to lesser profile the configured.
Change-Id: I7bf5157c0d7324c5ee7c4cdaac7806c0991d5dae
CRs-Fixed: 2683763
As part of WEXT replacement, replace wowlDelPtrn with a sysfs file.
file path: /sys/class/net/wlanxx/wowl_del_ptrn
where wlanxx is adapter name
example: echo 08:01:FFFFFFFFFFFF0000:FC > wowl_del_ptrn
Change-Id: I446456df5bd003b7328ba7afc0a4fb5e60059e11
CRs-Fixed: 2682245
There should only be STA and/or SAP modes for the new sysfs commands.
Remove P2P device mode when creating the store/show files.
Change-Id: Id090dff650466c907468eb530e9e24d96ce4d99d
CRs-Fixed: 2686781
Check AP's HE Rx MCS map to connect in HE mode. If AP has invalid
MCS map connect in HT/VHT mode.
Change-Id: Ia95f08999f0536ac3463e02212f39d4fd09390d4
CRs-Fixed: 2684887
As part of WEXT replacement, replace getChannel with a sysfs file.
This feature can be controlled using configuration flag
CONFIG_WLAN_SYSFS_GET_CHANNEL
file path: /sys/class/net/wlanxx/get_channel
where wlanxx is adapter name
example command: cat /sys/class/net/wlan1/get_channel
output: Channel number: 1
Change-Id: I3040af3d19eb83a819ca83cdbb74a70acd041698
CRs-Fixed: 2681803
Unloading the driver is a driver transition. As a part of this driver
unload, the PLD calls the pld_remove which is a psoc transition. This is
the reason why the driver unload is currently not being protected as
there is a call to psoc transition within it.
This absence of locking can lead to potential deadlock scenario. Assume the
example of add_virtual_interface and rmmod coming in parallel.
T1: add_virtual_interface (starts a vdev_trans)
T2: rmmod comes in parallel
-> unregister_driver goes to PLD
-> PLD calls pld_remove (psoc_trans waits due to T1)
T1: add_virtual_interface continues
-> Calls idle_restart that goes to PLD
-> PLD waits from pld_remove (T2) to complete first
T1 and T2 are waiting for each other to exit resulting in
deadlock.
To resolve this, add a driver_trans_start_wait to hdd_driver_unload.
This will ensure that either the unload waits for all other trans to be
completed before proceeding or set the driver_load_unload flag which
will result in upcoming trans to get rejected.
Change-Id: I64b03843065e5eef7c2be209c1f8cb936bdd0742
CRs-Fixed: 2683032
Host driver do receives radio tx power level stats as part of
radio stats even though we have different event ID for that.
Handling the tx_power_level as part of radio stats only if
num_tx_power_level is set.
Change-Id: I46aff51c70c444c94c9b10f32b7776ba4a1ca4e8
CRs-Fixed: 2686882
In dp_fisa_rx() function, L2 head pointer for fragment data is not
set correctly, actually it points to RX TLV header.
Skip RX TLV for RX fragment data.
Change-Id: Ie326734c657f45024a83792b103f931723148c92
CRs-Fixed: 2686851
As part of WEXT replacement, replace getTdlsPeers with a sysfs file.
This feature can be controlled using configuration flag
CONFIG_WLAN_GET_TDLS_PEERS
file path: /sys/class/net/wlanxx/get_tdls_peers
where wlanxx is adapter name
example command: cat /sys/class/net/wlanxx/get_tdls_peers
Change-Id: I66123266d6a3bf4c5c82f70186e35aa9942533b1
CRs-Fixed: 2681810
bTkipCntrMeasActive was not getting filling anywhere, hence
was removed from pe_session struct along with releveant code
where it was checked.
Change-Id: I8926bedef61c6468f8de2f73b4991c4c4860810b
CRs-Fixed: 2687067
eCsrForcedDeauthSta equals to 14 and as far as reason
codes are concerned, it is MIC_FAILURE. It is observed
that when wlan is configured as SAP-SAP DBS with same
SSID and same encryption WPA2/WPA3 mixed mode, it leads
to an IOT issue where clients with iOS 13 in particular
are not able to auto reconnect back after wlan is restarted.
Thus populate subtype to IEEE80211_STYPE_DEAUTH >> 4 and
reason_code to WLAN_REASON_DEAUTH_LEAVING as defined in
kernel since station_del_parameters is a kernel defined
structure.
Also correct internal use of subtype since right shift
4 for SIR_MAC_MGMT_DEAUTH and SIR_MAC_MGMT_DISASSOC
will always end up with value 0.
Change-Id: I60aa5ed4e7b672b7a92f05ad322fcb48ab0526d4
CRs-Fixed: 2678637
DUT perform FT-IM association instead of FT roaming to
process emergency deauth from connected AP.
In the case of FT-IM association, FW sends assoc requests
instead of re-assoc requests in roam sync indication to
host. Host truncate fixed parameters from assoc req and
forward frame tagged parameters to supplicants.
In re-assoc request fixed params length is 10bytes and
in assoc request, fixed param length is 4 bytes.
Currently host always truncating 10 bytes of assoc/re-assoc
frame present in roam sync ind and forward it to supplicant.
This results in extra first 6 bytes of assoc frame get stripped
by host. Due to this supplicant is not able to parse frame
content properly. This leads to 11r roaming failure.
As in case of FT-IM association roaming, FW forward assoc req
in roam sync ind, Host should truncate 4 bytes of fixed
parameters.
Fix is to ensure that host truncate only 4 bytes if assoc
request present in roam sync ind data.
Change-Id: Ie1352e41f9caffc4a28ed046330a73f303af36da
CRs-Fixed: 2664097
With specific AP(s), FW needs to perform FT initial mobility
association instead of FT roaming for deauth roam trigger.
This ini is used to configure "FT roaming for deauth roam trigger"
behavior from the HOST.
Change-Id: Id754a21f7ac2c330019055646f79c79db3e0c52c
CRs-Fixed: 2665882
In case of partial reorder, seq number is sent by FW
when first_msdu bit is set in msdu. For all other msdus host
maintain copy of cur_seq_num_hl in pdev.
cur_seq_num_hl gets updated when htt_rx_mpdu_desc_seq_num API
is called. Currently htt_rx_mpdu_desc_seq_num API is called
from multiple functions. Add update_seq_num flag to make sure that
cur_seq_num_hl updates only during store function.
Change-Id: Ie3178ee6d1642dbeaf0cea032dc80e0ecccc1dc2
CRs-Fixed: 2683869
In some case, FISA flush for one FISA entry is missed which
lead to some RX frames stay at FISA entry forever, this will
cause skb leak.
Do FISA flush per vdev when vdev detach to avoid skb leak.
Change-Id: Ie6bdf885c740a99b089290257ea6936d5804d142
CRs-Fixed: 2679221
As part of WEXT replacement, replace get_range_ext with a sysfs file.
file path: /sys/class/net/wlanxx/get_range_ext
where wlanxx is adapter name
example: cat /sys/class/net/wlanxx/get_range_ext
Change-Id: Ic4b5076efce837d9c98167d6a807722adbbc74df
CRs-Fixed: 2683682
As part of WEXT replacement, replace set_dp_trace with a sysfs file.
file path: /sys/kernel/wifi/set_dp_trace
example: echo 1 1 1 > set_dp_trace
Change-Id: I3358ad4f483f66f643c4aa5538fd2c9172d8f077
CRs-Fixed: 2683643
As part of WEXT replacement, replace txrx_stats with a sysfs file.
file path: /sys/class/net/wlanxx/txrx_stats
wlanxx is adapter name
example: echo 1 1 > txrx_stats
Change-Id: I677111a48eb117044ac992616d468c1604b2bae0
CRs-Fixed: 2682369
As part of WEXT replacement, replace txrx_fw_stats with a sysfs file.
file path: /sys/class/net/wlanxx/txrx_fw_stats
wlanxx is adapter name
example: echo 1 > txrx_fw_stats
Change-Id: Icad1f920ef01a4b86efca786da4873a361cd2dfc
CRs-Fixed: 2682352
As part of WEXT replacement, replace setRadar with a sysfs file.
file path: /sys/class/net/wlanxx/set_radar
wlanxx is adapter name
example: echo 1 > set_radar
Change-Id: I6451f506c1525dcfc48c988f965cc6dedf64b369
CRs-Fixed: 2680424
As part of WEXT replacement, replace setMonChan with a sysfs file.
file path: /sys/class/net/wlanxx/set_mon_chan
wlanxx is adapter name
example: echo 1 1 > set_mon_chan
Change-Id: Id7d21b23129fdf6e37c99924ad91a19e3c03a0d2
CRs-Fixed: 2678501
As part of WEXT replacement, replace set_scan_cfg with a sysfs file.
file path: /sys/kernel/wifi/set_scan_cfg
example: echo 1 1 1 > set_scan_cfg
Change-Id: I0807a0fc7ab4e3963386f5f5979b039c291896d9
CRs-Fixed: 2678470
Removed all the API realted to FEATURE_WLAN_RMC
as well as related SME/WMA code.
Change-Id: Id471ccabcfd183fbcc7ff4e4953991f9e1551526
CRs-Fixed: 2686364
As part of WEXT replacement, replace get_sta_info with a sysfs file.
This feature can be controlled using configuration flag
CONFIG_WLAN_SYSFS_GET_STA_INFO
file path: /sys/class/net/wlanxx/get_sta_info
where wlanxx is adapter name
example command: cat /sys/class/net/wlanxx/get_tdls_peers
Change-Id: Iac23cdc92a860279480ec9703697f22b2f0b5223
CRs-Fixed: 2682163
As part of WEXT replacement, replace wowlAddPtrn with a sysfs file.
file path: /sys/class/net/wlanxx/wowl_add_ptrn
where wlanxx is adapter name
example: echo 08:01:FFFFFFFFFFFF0000:FC > wowl_add_ptrn
Change-Id: I46d00fd8a15851cf2838f3b07a0ec2d1050d1087
CRs-Fixed: 2680490
As part of WEXT replacement, replace wow_ito with a sysfs file.
file path: /sys/kernel/wifi/wow_ito
example: echo 1 > wow_ito
Change-Id: I11cf9acfc4282b910145efa527682ab1738eaaa0
CRs-Fixed: 2680332
As part of WEXT replacement, replace scan_disable with a sysfs file.
file path: /sys/kernel/wifi/scan_disable
example: echo 1 > scan_disable
Change-Id: Icaa7083d0f7b2cefd0f77cb7da7fe0d3d52d36c5
CRs-Fixed: 2676764
Host configures rssi trigger, connected ap rssi delta and rssi
threshold in firmware. As rssi threshold is hit, firmware start
roam scan. Firmware decreases further RSSI threshold by connected
ap rssi delta if matching profile ap not found and so on.
Example: STA connects to an AP and host sets rssi trigger,
connected ap rssi delta=5 and rssi threshold as -25dbm. Firmware
starts roam scan as the rssi threshold is hit. In the roam scan
if desired profile ap is not found, decreases rssi threshold
by 5dbm i.e connected ap rssi delta. Now rssi threshold becomes
-30dbm and then firmware triggers roam scan and so on.
Thus the rssi threshold changes dynamically when controlled
roaming mode is set from userspace, to fix this do not force
RSSI triggers when controlled roaming from userspace is enable.
Change-Id: I1de3f71ca96de9f464d5d33b0271f99c55cff535
CRs-Fixed: 2681882
Add sysfs entry to get connection info instead of debugfs.
This feature can be controlled using configuration flag
CONFIG_WLAN_SYSFS_CONNECT_INFO
file path: /sys/class/net/wlanxx/connect_info
where wlanxx is adapter name
example command: cat /sys/class/net/wlanxx/connect_info
Change-Id: Ibe183e4665cdbea66b83abd4732e7ef33843612d
CRs-Fixed: 2682856
There is change modified the name of structure and API about spectral
cmd operations registration. So, add this change to correct them in
wma layer.
Change-Id: Icf1b8eb84e6cd6d110fe32ab30566c68ea33e2d7
CRs-Fixed: 2682782
Currently when supplicant sends set_pmkid_cache (Either after initial
connection or after session timeout with AP) to host to set
the new pmkid derived after the EAP is done. Host deletes PMK entry
only if bssid/ssid matches.
For OKC, the PMK derived from the initially associated AP will be
used for deriving PMKID for all APs. In case of connection with OKC
supported APs, If STA receive session timeout from AP, HOST should
delete older PMK of all APs which have the same PMK. Else While
roaming HOST could send older PMK to OKC supported AP and this
results PMK flush in FW and leads to full EAP.
Change-Id: I95881db229d5193cbdc22c5f30e1375b3892fbd4
CRs-Fixed: 2679737
Currently in the driver, we are printing the WOW pattern to the kernel
logs. This pattern is an array and printing it one by one can lead to
excessive logging.
Instead of printing one by one, use qdf_trace_hex_dump() to print the
pattern in one go. Also move the logging from kernel to the driver logs.
Change-Id: I6a3b02b0e57d8c27bb5ea4a7c44f67634c0f33fd
CRs-Fixed: 2661242
If osif_vdev_sync_op_start failed, that means operation on
net_dev is not permitted. So, free the skb before return.
Change-Id: Icd366c2d9d947e39f26f1b21878bfe0154a55fdc
CRs-Fixed: 2681018
Currently there is a check to validate if the station is in
associated state or not in the hdd lost link cp stats info cb,
There is a race condition where if the disconnection happens
from ap in that case the callback gets invoked before the
connection state in the station context gets updated and thus
the rssi on disconnect is not updated.
To address above issue remove the check to validate the station
state and update the rssi on disconnect irrespective of the
state of the connection.
Change-Id: I9cc6a08cdf0a1081adfde7a9423a665bc977cffc
CRs-Fixed: 2678667
Add support to parse the HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND
message. This target to host message is received when CFR feature
is enabled.
Change-Id: I592cd5ca663018f2958550e6e3e383bb796ee168
CRs-Fixed: 2680730
OBSS scan enable WMI command is not correctly set for one of
the TLV of the command which corrupted the length of the next
TLV of the command and lead to command send failure.
Correct the buffer offset of the TLV in the OBSS scan WMI command.
Change-Id: Ieb9467c52ae9d9dab602485b4b63fc9de48e6924
CRs-Fixed: 2681000
Some of the psoc/pdev specific sysfs entries are valid only for
mission mode and a no-op for the non-mission modes.
Add a sanity check for global mode type while adding and removing
the interface.
Change-Id: If017f583f9b3a29c7d43e59709227a9ba639764d
CRs-Fixed: 2682924
Move adapter-specific sysfs files, create/destroy, to start/stop adapter
such that unwanted sysfs creations can be avoided for sap only files.
Change-Id: Icff8df5f773fda0560400360c37d644274df456e
CRs-Fixed: 2683477
Currently there are no logs to check at what time SAR safety timer
or sar unsolicited timer starts or stops.
Add debug logs to know the exact time when the sar safety timer
and sar unsolicited timer start and stop.
Change-Id: I2feaff17c6940a18d35bc4271549eda5dc36a13a
CRs-Fixed: 2679214
As part of WEXT replacement, replace unit_test_target with
a sysfs file.
file path: /sys/class/net/wlanxx/unit_test_target
wlanxx is adapter name
example: echo 5 2 2 1 > unit_test_target
Change-Id: I7815a4238dc39e468ae8e43d26405dc72a0a84df
CRs-Fixed: 2681473
As part of WEXT replacement, replace wlan_suspend/wlan_resume
with a sysfs file.
file path: /sys/class/net/wlanxx/wlan_suspend
/sys/class/net/wlanxx/wlan_resume
wlanxx is adapter name
example:
echo 0 0 > wlan_suspend
echo > wlan_resume
Change-Id: I378afaa5f0ee00d893f4f9eb3e6ce2e80062b43f
CRs-Fixed: 2680776
As part of WEXT replacement, replace crash_inject with a sysfs file.
file path: /sys/class/net/wlanxx/crash_inject
wlanxx is adapter name
example: echo 1 1 > crash_inject
Change-Id: Ica3e2c0941e9217b42ed7cd3194fe98c8f0d0aa9
CRs-Fixed: 2680684
Define dummy APIs for wlan_hdd_cfg80211_stats_ext_callback,
wlan_hdd_cfg80211_stats_ext2_callback when EXT_STATS feature
is disabled to avoid unknown symbol error.
Change-Id: Ic53d316da986a2eeafbea75eeb6e0aa4e91d15ec
Wlan driver is not caching the thermal mitigation level
configured by framework. As a result after ssr thermal
level is not send to fw.
Fix, to cache the thermal level in the driver and apply
it after ssr.
change-ID: I7ede84a11149e093b6a674c3a72f0aeb54a980db
CRs-Fixed: 2678533
In function lim_send_probe_req_mgmt_frame, pesession is being used
without sanity check.
Add sanity check for pesession.
Change-Id: Iea52db4399cc50e4e7cd99bec92677e845274153
CRs-Fixed: 2668308
Currently, SIR_MAX_NUM_STA_IN_IBSS(16) is used while updating
sta_ctx->conn_info in hdd_save_peer/hdd_delete_peer. IBSS
supports maximum 16 peers but NDP might support more based
on platform. This restricts the max supported NDP peers to 16.
But host driver supports MAX_PEERS(32) no.of peers and use the
same here as sta_ctx->conn_info has support for MAX_PEERS(32)
mac addresses.
Change-Id: Ic52422435f97929e22cf3c0897ce9173793ee12e
CRs-Fixed: 2673110
Remove instances of CFG_COUNTRY_CODE and country_code from
wlan_mlme_reg struct.
Remove redundant country code APIs.
This change is needed because the country code is no longer
stored in CFG file, and subsequently, there is no need for
CFG_COUNTRY_CODE.
Change-Id: Ia4b3b40d0dccfde696352967f2902dfba344a445
CRs-Fixed: 2634079
Currently while filling in the hang event data for the event
HANG_EVT_TAG_LEGACY_MAC, the header is not getting filled in. This can
cause the data to go out of sync.
Add the header to the data before filling in the values.
Change-Id: Iedcb39623276e5f04ef9ffb5b3284e67f6c89312
CRs-Fixed: 2678949
Cleanup logging, usage of %p or %pk will lead to information leak.
Always use %pK instead when ever logging the address.
Change-Id: Id60782855f242175183f88e9f1c2efb9eb578404
CRs-Fixed: 2677373
Cleanup logging, usage of %p or %pk will lead to information leak.
Always use %pK instead when ever logging the address.
Change-Id: Id11e1b52b394eb10bb2b32fc2ee2e04116f98026
CRs-Fixed: 2677373
peer_timer_bitmask of hang_data was uninitialized which may
contain a garbage value.
Initialized the variable with 0.
Change-Id: I5875bb0d121bcbf14a2afc9efec6697cf4b4dba4
CRs-Fixed: 2680955
Because of a race that happen during vdev delete, RX packets can get
queued to the RX thread after the RX flush (done as part of peer deletion)
and by the time RX thread is woken up for processing, the netdev pointer
would be NULL leading to a crash.
Avoid this by dropping pending frames in the RX thread during peer unmap
as well.
Change-Id: Id79d7d05c487fcabfd104a15dc4038d48703b07c
CRs-Fixed: 2681195
As a part of LL stats get NB operation, the driver sends the LL stats
req to the FW, waits for the response and sends back the stats in a
synchronous reply. All this happens as a part of one single NB
operation.
Within this operation, if an rmmod comes, there can be a possiblity
of a memory leak. In function hdd_link_layer_process_radio_stats, there
is a check to validate the hdd_context and return if the driver is
undergoing load/unload. As a part of the premature return, some memory
are not freed properly.
To resolve this, remove the validity check from the NB operation. The
operation itself comes with DSC synchronization and ensures that the
hdd_context remains valid atleast until the operation is complete. Thus
there is no need for the redundant check of validity of hdd_context,
which resolves the memory leak issue also.
Change-Id: Ieea755e83addac99659dbd6e0e5f160b86e6f9fa
CRs-Fixed: 2679081
As part of WEXT replacement, replace reassoc with a sysfs file.
file path: /sys/class/net/wlanxx/reassoc
where wlanxx is adapter name
example: echo 0 > reassoc
Change-Id: Ib4f3582bb8c164dd4f3ab739367520b9aeb0f5b9
CRs-Fixed: 2676629
As part of WEXT replacement, replace set_fw_mode_cfg with a sysfs file.
file path: /sys/kernel/wifi/set_fw_mode_cfg
example: echo 1 1 > set_fw_mode_cfg
Change-Id: I851df440f9eb5f73798deaf3b4d0f128f6925f26
CRs-Fixed: 2675570
Use wlan_reg_get_channel_state_for_freq API to get channel
state and identify 6Ghz channel as non-dfs channel.
Change-Id: Ib134a71c62e24324abc12e5a5b11a524e89de810
CRs-Fixed: 2681608
During HT channel width change, host updates secondary channel number
in "sw_target_freq" and not the primary channel frequency. LIM uses
sw_target_freq to update the CSR sessions frequency which become invalid
channel. During SAP start, as host uses this channel to check for SCC
switch, the invalid frequency lead to invalid channel structure getting
accessed.
Hence, during HT channel width change, update sLimChannelSwitchInfo's
sw_target_freq member with current operating frequency stored in
pe_session's curr_op_freq.
Change-Id: Ie7aaa2187d35dba74050263e1ebf6f72d106aa85
CRs-Fixed: 2680035
Add support to provide the channel weightage of
DFS channels so that the weight can be configured
and the user can control whether they are allowed
to be selected for the SAP.
Change-Id: I53a22a0059d56aa8fca66215fed1ed0588db7db5
CRs-Fixed: 2676919
The log signifying SAP failure was incorrectly printed.
Changed the logic to print those logs correctly
Change-Id: Ifc26b34f41c60a3ce50d9c7cfc4ecd0739853844
CRs-Fixed: 2680263
Fix return type for hdd_data_stall_process_event to match with
data_stall_detect_cb callback return type.
Change-Id: I6d81171f32df7a0e6e66d5651739463c422f4a9d
CRs-Fixed: 2674550
Currently we have two different cleanup approach for SSR. In case of
Adrastea hardware, cleanup can be done during the receipt of FW_DOWN
uevent while in case of HS/HSP it has to be defered to shutdown.
These two approaches are segregated by different branches and thus did
not need to coexist. But as part of future upgrades, a single component
would be used for both the hardware types.
To enable having both these paths, use the context of execution of the
pld_uevent as the differentiating agent. In case of interrupt context,
go with the deferred cleanup and in case of normal process context,
perform the cleanup in pld_uevent itself.
Change-Id: I554a10cdd99b17a6d3e059ebf7a157b0cddb6226
CRs-Fixed: 2669840
If DUT connected to a non-PMF AP in MBO/OCE enabled network, STA
should not initiate roaming due to BTM trigger.
Fix is to enable BTM offload to firmware only if a peer support
pmf in case of MBO/OCE connection.
Change-Id: Ifee077fed2630242e7dc93e6d1a3915e592d4285
CRs-Fixed: 2678005
Once gc connected on dfs channel, allow the scc sap start on the same
dfs channel with dfs master capability disabled in the driver if
sta_sap_scc_on_dfs_chan ini is set.
Change-Id: Ie1c3ad2850fb0bce3f19f8fbe4750e5a97f2be93
CRs-Fixed: 2666581
HE capabilities and HE operation IEs will be populated
in function sch_set_fixed_beacon_fields().
And duplicated one from additional IE need to be
stripped if any.
Change-Id: Ic5f508782ff23b3e99f433a31eee9df58c1c40a6
CRs-Fixed: 2666373
In runtime resuming, there is no necessary to start bw timer
if adapter is in non-assoc state.
If bw timer has been started in idle state, there will be no
match bw timer stop. In hdd_bus_bandwidth_deinit, it will consider
as abnormal.
Change-Id: Id36af395269ebf3a09429b2606dbd438f147f24f
CRs-Fixed: 2678835
Currently, there is a peer leak when SSR is triggered during SAE
authentication.
To avoid this,don't purge serialization commands from hdd_wlan_shutdown.
Change-Id: I05a646f2af9d31bda27bb74b8f58390d3bf09623
CRs-Fixed: 2678294
Add sanity check for MAC PHY capabilities pointer returned by
target_psoc_get_mac_phy_cap. This avoids illegal memory access when
returned pointer is not valid.
Change-Id: I2ee0cdb5945599a2ccf35db819555d0f7192ef9f
CRs-Fixed: 2668418
In case AP doesn't support PMF, if STA has PMF enabled bit set
in assoc req, some AP may reject the association.
Fix is to consider self PMF cap only if AP support PMF
Change-Id: I6317c653cb7c21beb852d73b8eb541d6582a3a26
CRs-Fixed: 2677988
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