The bExplicitCfg bitmap in struct hdd_config was originally used to
track which INI items had been explicitly configured from the INI
file. But now that the INI processing is distributed this bitmap is no
longer used, so remove it.
Change-Id: I101ffa82b3309209cdc2eea954d1467b68b6138d
CRs-Fixed: 2496393
During con mode change the driver will perform pld idle shutdown
and restart and if the interface change timer is running which
results in duplicate of idle stop queueing.
To resolve this, add psoc idle timer stop during the con mode change.
Change-Id: I7befefd2cb996d6b3e0b4ee92ecb15e615d33e30
CRs-Fixed: 2491208
In hdd_set_reset_apf_offload, vdev_id is not assigned before
sending reset packet filter command.
Change-Id: If8c9297f19e19eba01b4415144304b9f744a5de9
CRs-Fixed: 2496035
Prepare to replace channel id with channel frequency of struct
bss_description, first cleanup reference of channel id of struct
bss_description in wlan_hdd_assoc.c wlan_hdd_cfg80211.c wlan_hdd_main.c
lim_assoc_utils.c lim_ft.c lim_process_sme_req_messages.c
lim_sme_req_utils.c rrm_api.c sme_api.c nan_datapath_api.c sme_rrm.c,
use channel frequency instead.
Change-Id: I980f74d77af97df2b2ade61250d44a606c76a7ef
CRs-Fixed: 2491488
Host fill netbuf with qtime instead of tsf. In function
"hdd_get_soctime_from_tsf64time", when Host check RX packet
tsf value less than last_target_global_tsf_time, it will
return error. Then, Host will the default value 0 to
upper layer.Sometimes, User will found some packets FW
recvTime is not increasing compared with last packets.
So modify it to calculate qtime from tsf all the time.
Change-Id: Icc53f22b4213fb46ff3bfc3e3df940cb28c632f5
CRs-Fixed: 2485600
Host need to fill netbuf with qtime instead of tsf.
This function already realized in Change-Id
"Ib19ac1411c4e17624c012f188297c9f2122642d2".
But it only support STATION RX mode. add the similar
action for SAP RX mode.
Change-Id: Idb3f9da5488b19db48e96258ecb4539b5af3c9a6
CRs-Fixed: 2483566
As per existing design, dp rx mic error information is
posted to HDD via SME. HDD inturn indicates the mic error
to supplicant.
Define new HDD callback hdd_rx_mic_error_ind for
rx mic error, registered through the CDP API
cdp_register_rx_mic_error_ind_handler. This will
enable datapath to directly post mic error info to HDD,
eliminating processing by corestack.
Change-Id: I6561dc5e66e7059c249c1eeeabdbf754989221d2
CRs-Fixed: 2488455
Issue:-
Sap does not restart when unsafe
channel event comes, due to the acs mode
flag not set though acs happened.
Scenario:-
Turn on STA on channel number 1.
Turn on SAP on 2.4ghz band.
Make the channel number unsafe.
Observation:-
Sap fails to restart.
Expectation:
Sap should restart on some other channel.
Fix:-
Set the flag before the driver returns the
best channel as the STA channel.
Change-Id: I2cf2f5d3096da04f3c43969b7405b81c743fe2e2
CRs-Fixed: 2492087
While processing vendor command: GET_PREFERRED_FREQ_LIST respective
handler __wlan_hdd_cfg80211_get_preferred_freq_list() do not validate
pcl_len received from policy_mgr_get_pcl() which can be zero when
current regulatory domain is ETSI13 based, gindoor_channel_support=0
and etsi13_srd_chan_in_master_mode=0.
If pcl_len is zero then invalid index is computed in
wlan_hdd_populate_weigh_pcl() when trying to access
chan_weights->weight_list[pcl_len - 1].
To fix this, add zero length check for pcl_len before accessing
weight_list[plc_len - 1].
Change-Id: Ie8bf52fe289634efc104ca674d70fcd1beb6c304
CRs-Fixed: 2492630
When wifi is turned off, system suspend might occur during the timer delay,
which would stop the timer and prevent wifi from being turned off, leading
to battery drain. To fix this issue, prevent the suspend and turn off the
wifi before allowing suspend to happen.
Change-Id: Id4fbb13f3ab350b4e2545f65e38d9baaba5ed7ab
CRs-Fixed: 2493487
Kernel maintains a list of bss and it adds/updates the bss
entries whenever driver informs it. When driver receives
beacon or probe response from any ap it informs kernel to
update the bss list and whenever it disconnects with the
AP driver unlink the bss in the kernel.
If the AP is hidden, when driver gets beacon from this
hidden AP it informs the kernel to update the bss list.
kernel add this entry to it's bss list with NULL SSID.
Now when driver receives probe response from this hidden
AP it again informs the kernel to update the bss list,
as this is probe response and ssid is not hidden,
kernel treats this entry as new entry and adds it to
its bss list and links this entry to the older hidden
AP entry (But still these are two entries for hidden AP).
When driver gets disconnect from the AP it unlink the
bss entry corresponding to this AP from kernel's bss
list, but since there are two entries for the same AP
as the AP is a hidden AP, driver should clear hidden AP
entry (Which was added as part of beacon) which is
not happening currently.
Now when AP moves from hidden to broadcasting SSID
in it's beacon, kernel drops this beacon entry as its
confusing because there is already a beacon entry with
hidden bss for this AP. During connection driver tries
to update the entry in the kernel and it fails as kernel
drops the beacon resulting into the connection failure.
To resolve this issue, whenever driver unlink the bss
entries from the kernel bss list unlink the hidden bss
entries also from the kernel's bss list.
Change-Id: I03a8517878b3db769bf28a157579179e1dd762e2
CRs-Fixed: 2488887
During idle restart, system suspend is happening, which is leading
to timeout because idle restart task is frozen during system suspend.
To avoid the timeout, add a wakelock for idle restart to prevent
system suspend.
Change-Id: Iffb6151452680df8cb4fb98e8646112e780881f8
CRs-Fixed: 2490321
Currently ASPM is not enabled for FTM mode. Enable it to test low power
mode in FTM.
CRS-Fixed: 2491207
Change-Id: I997225d33c94ed870dda2354bac256d9d1ca855d
Add additional bandwidth level for "very high" bandwidth. As per the
default configuration if the total number of tx/rx packets exceeds
bus_bw_very_high_threshold, the bus bandwidth requirement is designated
as PLD_BUS_WIDTH_VERY_HIGH and PLD API is called with this value.
Default value of 7000 is chosen for bus_bw_very_high_threshold, which
amounts to 820Mbps of throughput considering a 1500 byte packet and
100ms bandwidth timer interval.
Change-Id: I3bd904429a02ec4935ba12da7c2cfd37eec738ed
CRs-Fixed: 2489362
As requirement, it's also needed to print country code in iwpriv
getChannelList under hostapd mode, align the output of getChannelList
in sta/hostapd mode. At the same time, in __iw_get_channel_list(),
the wrqu->data.length should be (the actual channel number+1), not
sizeof(struct channel_list_info), otherwise there would be many
zeros if call iw_get_channel_list() directly.
Change-Id: I1e0fc1a026bf6c3fff2947ab4712a1800214ec0c
CRs-Fixed: 2476458
Replace channel ID(channelId) with channel frequency(
chan_freq) in struct bss_description.
Add code for chan_freq's value population in the same
struct wherever channelId's value population occures.
Remove a few camel cases detected by checkpatch.
Change-Id: I84d193b67f642df310997865ec6e1b62e3518f98
CRs-Fixed: 2488826
If stop_ap is given to driver in case of SSR and other FW down cases,
because of invalid vdev id and validate context, failure
status is given to kernel. In such case beacon interval value
is not reset and that will lead to faliure of
subsequent set beacon commands.
In case of validate context failure, return success to upper layer
so that kernel variables like beacon interval can be cleaned up.
Change-Id: I03748a87ffcf38a260134a54fe5dce8f77f08739
CRs-Fixed: 2472089
Current band value is updated with new setting and the new band
setting is allowed only if the new band setting value is lower
configuration than the current one else it fails the new band
setting. If user configures band setting to lower value and
if later setting value has higher configuration then the current
band check fails the new setting.
Remove the current band check during new band setting by runtime
user configuration.
Change-Id: I3facf99e567e34de3eb675f29962bf809040244e
CRs-Fixed: 2486679
Some of softap APIs like hdd_softap_register_sta() contain sta_id
validation check against maximum value of HDD_MAX_ADAPTERS before
accessing adapter->sta_info[sta_id].
Since the maximum size of adapter->sta_info[] is WLAN_MAX_STA_COUNT
and less than HDD_MAX_ADAPTERS (used in sta_id index validation)
array out of bounds access is possible.
To fix this, validate sta_id index against maximum value of
WLAN_MAX_STA_COUNT instead of HDD_MAX_ADAPTERS.
Change-Id: I18390a76a3bee852a9d6ca3dde4382fa94387594
CRs-Fixed: 2486518
This command is used to send OEM data binary blobs
from application/service to firmware.
Change-Id: I0b5d7dd5a030b70e59c8581fb51d99079b38385f
CRs-Fixed: 2477332
Currently, there is no logging for channel switch reason.
Add csa_reason to know the reason for the channel switch.
Change-Id: Iec02d7fa2b1ec51acb97005da220db7de705d7e0
CRs-Fixed: 2483206
Driver sends the auto-resume flag to user space in the following two
scenarios in order to specify that the driver will automatically resume
reporting beacon or not:
Scenario 1: In the case of Disconnection
Driver should not set an auto-resume flag
QCA_WLAN_VENDOR_ATTR_BEACON_REPORTING_AUTO_RESUMES in subsequent
QCA_WLAN_VENDOR_BEACON_REPORTING_OP_PAUSE event irrespective of
do_not_resume flag is present in the recent
QCA_WLAN_VENDOR_BEACON_REPORTING_OP_START command.
Scenario 2: In the case of Scan
Driver should send QCA_WLAN_VENDOR_ATTR_BEACON_REPORTING_AUTO_RESUMES in
subsequent QCA_WLAN_VENDOR_BEACON_REPORTING_OP_PAUSE event only if
do_not_resume flag is set in the recent
QCA_WLAN_VENDOR_BEACON_REPORTING_OP_START command.
Currently, there is a possibility to send an auto-resume flag to userspace
in case of disconnection also, which is not as per the expectation of
userspace from the host.
Change-Id: I94cc7dc699b874422d0cf14cd4144c82adb4c2ac
CRs-Fixed: 2485792
Bus bandwidth logic uses PLD_BUS_WIDTH_NONE to vote if the packet
threshold is less than bus_bw_low_threshold. The same vote is used for
system suspend too. Add a new state for bus bandwidth logic to vote for
idle state.
Change-Id: I62ca6fff84a01083001db360f56344a05fb955db
CRs-Fixed: 2484003
Currently wlan_hdd_cfg80211_get_txpower is limited for STA
device. This causes issue when SAP device wants to get the
tx power.
Change-Id: Iadf34e6c74ba013247d925bcd4f05e1aa1a971c9
CRs-Fixed: 2481680
In function ol_target_failure(), if enable_self_recovery is true,
fw_indication_work_handler() will be called. Ramdump collection
will not be executed. But for no CNSS module platform, recovery flag
is neither cleaned, no any FW indication is sent to user space.
Even enable_self_recovery is false, no FW crashed indication sent
to user space.
So, call function ol_check_clean_recovery_flag() to clean recovery
flag, and send FW CRASHED indication to user space by function
ol_target_failure().
Change-Id: I44396caf4972dc267d60757c479e4681f8885de5
CRs-Fixed: 2482596
AP may send IEs in deauth/disassoc frames as part of disconnection.
Extract the same and forward to kernel through
cfg80211_disconnected().
Change-Id: I4ef339dcd1ecff64d6bed1de35621ecce5d8030a
CRs-Fixed: 2481912
Application sends disconnect IEs to driver through vendor command
SET_WIFI_CONFIGURATION by embeding in the attribute
QCA_WLAN_VENDOR_ATTR_DISCONNECT_IES. Extract the same and validate
to make sure it's not more than maximum IE length that can be
accomodated in deauth/disassoc frame. Cache the extracted IEs
in mlme vdev object.
Change-Id: I6c95aa1d4d8ef7d8ed3ad5be8832ef1f45c26a2f
CRs-Fixed: 2481908
FW version information which driver used to get
is updated to add release branch version also.
To give that information to userspace, parse the
release branch information also from the extended
FW version.
Change-ID: I45d06bac5ef0e57d1db8dbfe7ff6a0d7e2144b88
CRs-Fixed: 2482835
Driver has a stats infrastructure and all the stats related
commands are using this infrastructure.
Remove legacy implementation for get station stats api
as part of cleanup.
Change-Id: Iadc7fceccec32e7a27c29872fb13c03f79208965
CRs-Fixed: 2480770
While filling station info rx_mpdus and fcs_error count
are getting filled and corresponding flags are getting
set. These flags are set using BIT macro which operates
only on integers and will cause overflow on 32 bit
machine if the bit operation is of more than 32 bit.
To resolve above issue use BIT_ULL for bit operations
on station flags.
Change-ID: Ia7263f0e86a1fbdf477491b84bf94d5609781b00
CRs-Fixed: 2484159
Add ini gBtScoAllowWlan2GScan to support BT SCO-WLAN coex.
Using this ini can control whether allow wlan 2g scan or not
when BT SCO connection is on.
Change-Id: Ia63b1ff92e75937487827c34bca1d2e1c289962d
CRs-Fixed: 2464679
Flush the reject ap list from the BLM when the user does
a explicit wifi off from the UI to ensure the user is able
to connect next time the wifi is turned on.
Change-Id: Ia8cdd6aa7e3357fc0def100cb13c6e25c1e0a62e
CRs-Fixed: 2470087
Currently in function hdd_configure_cds the driver is passing
the pointer from cds_get_context to ucfg_ipa_uc_ol_init without any
NULL check. This pointer later then gets dereferenced which can cause
null pointer dereference.
To solve this, added a null check before calling ucfg_ipa_uc_ol_init
Change-Id: Ie0d8e103c9eeac76d285c4b3870c3c4ea9172dc6
CRs-Fixed: 2462711
Currently there is no ini support to configure frequencies
which needs to be avoided for the acs channel list which
may allow SAP to come up on a channel which is not preferred.
For Example there are many legacy clients which supports
2.4GHz but don't support channel 12 and 13 (or does not have
the capability to detect country change where channel 12 and
13 is valid).
In that case, if SAP comes up on channel 12/13, those legacy
clients won't be able to connect to AP.
Hence, Add a feature flag and ini to configure the frequency
list which can be avoided during acs.
Change-Id: Id106b38228f837ba056eb916004dc012e919ddd2
CRs-Fixed: 2472004
With new configuration g_sta_sap_scc_on_dfs_chan = 2:
1. SAP is allowed to start on dfs channel if no STA interface
active on the same mac.
2. SAP is allowed SCC with STA on DFS chan without DFS master
functionality and ignore Radar event
3. Skip cac if dfs master capability disabled based on
the configuration and current connection combination.
Change-Id: If2ffb253e51c94c06a105b2691c19f7d246fcc98
CRs-Fixed: 2468004
Driver has a stats infrastructure and all the stats related
commands are using this infrastructure.
Remove legacy implementation for get tx power command
as part of cleanup.
Change-Id: Iabe21f09fb6621bf81bf0b0b2864e68f78a68f2a
CRs-Fixed: 2480244
Driver has a stats infrastructure and all the stats related
commands are using this infrastructure.
Remove legacy implementation for wakelock stats command
as part of cleanup.
Change-Id: Ie60293ae06401f841ef8dd9545587819ebe4cd4a
CRs-fixed: 2480191
Driver has a stats infrastructure and all the stats related
commands are using this infrastructure.
Remove legacy implementation for congestion stats command
as part of cleanup.
Change-Id: Ia8b919ad7cea4f47d5480b9f8e0f4636783ce6c3
CRs-Fixed: 2480246
Driver has a stats infrastructure and all the stats related
commands are using this infrastructure.
Remove legacy implementation for get rssi command as part
of cleanup.
Change-Id: I7a837d780c6a1551db0929e6ec7e73daaf479429
CRs-Fixed: 2480770
Do not configure legacy rate to FW if it is HE connection, otherwise
FW does not work.
Change-Id: I31d167ee79b7b58cabad29e65cf6834a7151093d
CRs-Fixed: 2472811
Currently the driver does not check whether the
ACS cfg's chanel list is valid or not and checks
for the best channel within it in the function
wlansap_is_channel_present_in_acs_list, which can
lead to potential pointer deference.
Fix is to check the channel list and then only
process for comparison.
Change-Id: Icda2e7c8f260eb636c8159fbbb697400dddbdf74
CRs-Fixed: 2479941
When hdd_trigger_psoc_idle_restart is called from hdd_open,
if the process has some signal pending, pld_idle_restart
may return back before finishing start_modules. If keep running
in hdd_open, when creating vdev it may access invalid
pdev.
In hdd_open, change to return failure if idle_restart returns
error.
Change-Id: I454d421d0758dd4e90c4b4fba1f65096c0834446
CRs-Fixed: 2476316
Auto usercase allow AGO to start on DFS channel.
We need to do similar CAC allow/disallow check in GO mode
as we do in SAP mode. We should skip CAC as DFS master
functionality may be disabled based on INI configuration.
Merge the SAP CAC allow logic to GO interface.
Change-Id: Iba89b8b3f170d6ffe97f53198ad041e7ceb41b44
CRs-Fixed: 2474391
Fix out of bound issue in get pcl API where the
num of channels in the valid channel list can be
greater than the pcl list size, and can lead to
out of bound access.
Change-Id: Id3d34ff66c712bf310ae2689c43ce873f5c87fca
CRs-Fixed: 2475705
Currently the drivers blocks every simultaneous scan
that comes to the driver, and returns BUSY.
here if the STA SCAN which is low priority after connection
comes, and at the same time ACS has completed and the hostapd
tries to do a HT scan, it would get error as BUSY, and it
will try to scan again and again until successful or the timeout
happens. This will in turn delay the hotspot bringup as start
ap does not come until the hostapd does a OBSS scan.
Fix is to skip the check of simultaneous scan for SAP, and make
the priority of scan request high for SAP scan.
Change-Id: I5625a3e7c05f75238771ea1ec35b80ae5113bbc3
CRs-Fixed: 2471854
wpa_supplicant sends connect request with open auth and pmkid
when PMK caching is enabled and if it has PMK/PMKID cached.
Set rsn_auth_type to SAE when connect request has AKM as SAE
auth_type as open.
Set negotiated auth type to OPEN in SAE with pmk cache case as
open authentication going to happen. Similar fix is applicable
for FT-SAE. Handle the same.
Change-Id: I9ccc419bd439702041840b0194bb0622d7856255
CRs-Fixed: 2467813