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
This reverts
Change-Id: I8d6766e33a3912d197e543f0e7e252513e0253ab
Origin issue has fixed by
Change-Id: I350b810a6cef8eec46428e57f5b779f888552c1b
Change-Id: I4bb8eab90c9a0341f7bc99972f44f576d7e07dc2
CRs-Fixed: 2681665
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