The assumption of link info sub-element offset
starting after link_id in common info sub-element
is wrong. There are other non mandatory fields
in common info sub-element.
The actual offset of link info sub-element
starts after the length of common info length.
Change-Id: I23bb7b148a672d0a45b0e32932f4a15a7e584b72
CRs-Fixed: 3443099
Current code does not include hang event data to ssr driver dump.
Fix this by adding struct registration/unregistration.
Change-Id: I6c21cbf7b2d0a242e1469b32820373a61235ac7a
CRs-Fixed: 3443220
Current code doesn't have hif_ce_desc_history in ssr driver dump.
Fix this by adding the two data structs: hif_ce_desc_history_buff
and hif_ce_desc_history to the ssr driver dump regions.
Change-Id: I4b73dfe8909bd4f75cdf8c172c590c0aff3b1d1c
CRs-Fixed: 3443225
Hostapd sends RSNIE with around 18AKMs. However, the driver
data structures allow storage upto 6 AKMs only. Therefore,
the dot11f unpack modules returns BAD IE. The akm suite
however carries the parsed count of 18.
The HDD caller checks only DOT11F_FAILED, which doesn't cover
many of the DOT11F_xx failure status codes. Therefore, instead
of failing BSS, the IE is processed further and access of 18
contiguous AKMs takes place leading to OOB read crash.
To fix this, check for all the failure status code and stop
the BSS upon RSN/WPA/WAPI IE parse failure.
Change-Id: I16399c8a5bd61b09d29cd88e35c0ec441c6b9af4
CRs-Fixed: 3445762
SAE authentication happens with MLD address rather than link
addresses as it's common authentication for all links in an ML
connection. But OTA exchange of authentication frames happens
with a chosen link address from available links.
As userspace takes care of the SAE authentication, host driver
has to replace the rx SAE auth frame SA with peer MLD and DA with
self MLD address. Similarly for tx SAE auth frames, replace self
SA with link address and DA with peer link address.
Current change is to support the same for roaming case. Fetch the
MLD from scan cache corresponds to link address provided in roam
auth event and replace as mentioned above.
Change-Id: Ide15caa122f78301391b5ea891e2e6eaf4af8974
CRs-Fixed: 3441483
Currently the RX link speed reported is taken from driver instead
of FW. In light of performance, driver will stop reporting rates
info when throughput exceeds certain threshold. In that case, the
rates info to be reported is from parsing the rateflags from FW.
However, driver sometimes fails to get an appropriate MCS index
and has to assign 0 to it, which has unfriendly user experience
when too much MCS=0 occurs. To address this issue, first, update
the logic to ignore the throughput judgement to make sure that
the rates info to be reported is always from driver. Second, add
the function wlan_hdd_get_peer_rx_rate_stats() where wma_get_mcs
_idx() has been called, to prevent the already updated rates info
from corrupting by FW due to multi-thread. This change has little
impact on throughput because the function is not called frequently.
Change-Id: I73e874caa8e77325c9e81d0e5929e1ba539946a5
CRs-Fixed: 3434764
Obsolete TWT functions are still called in driver. As part of
removal, Remove these functions and use component function.
Change-Id: I43c804c3b9b8ecd116aefe58f230755c041ae1e9
CRs-Fixed: 3261499
In the driver, if CLUB_LL_STATS_AND_GET_STATION feature is
enabled, host requests Link Layer stats and station stats
from firmware periodically using a single WMI command.
Host then sends LL_STATS to userspace and caches station stats
in the adapter. Whenever userspace queries station stats, based
on the sta_stats_cached_timestamp, host returns cached stats
from adapter instead of sending a new WMI request.
The current issue, as part of station stats firmware also sends
connection_tx_power stats, which aren't cached into the adapter.
So, whenever userspace queries get_tx_power via nl commands,
host sends a WMI request to firmware for tx_power leading to
platform wakeups and power impacts.
To resolve this issue, cache the tx_power sent by firmware into
the adapter during station stats and return the cached value to
the user space.
Change-Id: Iaefc5629872431cbc6c24090b1edb6cebdad995a
CRs-Fixed: 3439323
Disconnection is logged even if keepalive indication is
sent to host after firmware sending final beacon miss
event.
Add two new roam failure reason code to indicate roam
failure and send final beacon miss.
ROAM_FAIL_REASON_NO_AP_FOUND_AND_FINAL_BMISS_SENT: Indicate
roam failure when no ap is found and final beacon miss
is sent.
ROAM_FAIL_REASON_NO_CAND_AP_FOUND_AND_FINAL_BMISS_SENT:
Indicate roam failure when no candidate ap is found and
final beacon miss is sent.
Change-Id: I6d7a6034f8be5388dd35dd3c05fecfd40a8d888d
CRs-Fixed: 3437060
Refactor the hdd_vdev_destroy() code to move deinit of various
components to new API.
Change-Id: I705c328e4296fa4bc939d5d8a6174a709ee751b1
CRs-Fixed: 3306914
umac serialization details should not be exposed to OSIF, currently
during the vdev deletion OSIF is directly calling serialization
resulting in layer violation.
Move the serialization call from OSIF to inside the umac.
Change-Id: Idd972f31b074d4281c5914c8e34deafd0d0da0d7
CRs-Fixed: 3397919
Remove the INIT_TX_RX_SUCCESS adapter flag as its
functionality is insignificant after DP componentization.
Change-Id: Ief86ab81c42b767113bde46252246fa8677588ce
CRs-Fixed: 3399329
Refactor the hdd_vdev_create() API to move device mode
based VDEV config to a new API.
The new API calls required configuration functions
based on the device mode.
Change-Id: I54c5412577b70d92652cb16fcfb10e4d69e6f6fd
CRs-Fixed: 3445149
Currently SIFS burst configuration is done from
osif layer though there isn't any dependency on
the osif layer.
Move the configuration of SIFS burst to post
vdev create.
Change-Id: Id1e6064164c0ea9d6ab5c5b1217c7c275fb45832
CRs-Fixed: 3297656
Introduce a new API to configure the rtt and ftm
parameters for the VDEV.
The API can later be used to configure the
rtt and ftm parameters on per VDEV of the adapter.
Change-Id: I9d7411fa76520b0a1876f38c27122a14a91826b7
CRs-Fixed: 3297665
Introduce a new API and use it to configure
the station context of the adapter.
Change-Id: Iee2af060ec3c74782127bd0f202719b4bfe3dab2
CRs-Fixed: 3297636
Currently, rssi, rssi_send, rssi_on_disconnect and snr members
are part of hdd_adapter.
Move following fields to link info
1) rssi
2) snr
3) rssi_on_disconnect
4) rssi_send
Change-Id: Iec76cdf51ed72adefacc4b77a6a2d1d8a28e96b6
CRs-Fixed: 3294941
In multi link connection, for partner link vdev power save
is not set if not associated.
So, check if the adapter is multi link instead of the vdev and
set power save for partner link vdev's as well.
Change-Id: I483a75ed0ab631e535d06d9bd4d08b8de986cd07
CRs-Fixed: 3417368
To support multiple VDEVs in single adapter, the VDEV
specific fields in hdd_adapter needs to be moved to
link specific data structure.
Move the following fields from hdd_adapter structure to
wlan_hdd_link_info structure.
1) vdev_id
2) vdev_lock
3) vdev
4) vdev_destroy_event
Change-Id: I80d0ed167ca31bff7445b9c7788c86ef6f776018
CRs-Fixed: 3291070
To support multiple links in single adapter, create a new
structure to hold per link info inside the hdd_adapter.
Create a new member in hdd_adapter to point to link zero
of this array of link info.
Move STA and AP context fields into per link info.
Change-Id: Ia1f01865277c3e08254f44a39ba6675a9fea6c65
CRs-Fixed: 3354572
WEXT ioctls are no longer supported by the wlan driver.
So, add a sysfs replacement to setdfsnol and getdfsnol commands.
file path: sys/class/net/wlanxx/dfsnol
where wlanxx is the adapter interface
usage: echo arg_0 > /sys/class/net/wlanxx/dfsnol
cat /sys/class/net/wlanxx/dfsnol
Change-Id: Ia8475b5c6ef39142def38eab0e777840af885c33
CRs-Fixed: 3431517
Update puncture bitmap along with channel to upper layer when channel
or puncture bitmap changed.
Change-Id: Idc0ffbd4358c328ba22453c6b523843c8d4fc486
CRs-Fixed: 3436336
Driver uses global value cac_state in mac_ctx->sap.SapDfsInfo
to record the CAC state of first SAP on DFS channel. If
first SAP CAC is completed, the second SAP can skip CAC
on the channel.
The problem is single SAP stop and restart the cac_state is
not updated and keep value of eSAP_DFS_SKIP_CAC. Then driver
skips the CAC for the SAP start.
Remove the global value cac_state in mac_ctx->sap.SapDfsInfo
and use API sap_plus_sap_cac_skip to check the other SAP's CAC
state dynamically.
Change-Id: Id486a6e605d08845f03b38450a2c021f76ae23f6
CRs-Fixed: 3426671
Currently hdd_get_sap_adapter_of_dfs() only check home channel is
DFS or not, but didn't consider other channel in bandwdith.
It caused can't get SAP adapter which home channel is non-DFS but
channel in bandwidth has DFS channel.
Update this function to check DFS with channel frequency and bandwidth.
Change-Id: Id12a73ac01d20116463718fe7cc66c46efad37e4
CRs-Fixed: 3422944
Current code doesn't allow output of hdd_dump_log_buffer to sysfs.
Fix this by adding sysfs output functionality.
Change-Id: I077c10e379e542ac99d8ebe01d68fe76a7470e39
CRs-Fixed: 3426193
Current code has hdd_dump_log_buffer and hdd_ioctl_log_buffer in
wlan_hdd_wext.c. This will not be included in build if wext is not
enabled. Fix this by moving the functions to wlan_hdd_ioctl.[ch].
Change-Id: Idb4824815890c605961e802e0d5a43ca2181a13d
CRs-Fixed: 3436349
In STA+P2P-GO DFS SCC concurrency when INI
g_move_sap_go_1st_on_dfs_sta_csa is set, the movement of P2P-GO / SAP
is reversed. i.e. upon getting CSA on STA interface, P2P-GO will move
first before STA's movement.
SCC is enforced after STA moves and observes 1st beacon on the new
channel. Add check here to avoid call to legacy flow of restarting
SAP / GO as this has to be triggered only when 1st beacon is observed.
This is applicable only for special case where SAP / GO moves 1st
before STA's movement.
Change-Id: I7e804a0f7e7d4c4739f05f68f471184503ca2930
CRs-Fixed: 3431391
Current code doesn't allow for custom print output for
hdd_dump_log_buffer.
Fix this by adding ability to pass custom print function.
Change-Id: I6a32008d8c18dbe02aada520d0e0bb168949ba80
CRs-Fixed: 3426192
Current code does not have a way to abstract printing to sysfs file
resulting in duplicate code when wanting to add sysfs output to
existing functionalities.
Fix this by creating API which allows for easy printing to a sysfs
file and is compatible with qdf_abstract_print.
Change-Id: Ide71dc1e5f869f03ce66500eed50bb55781dc228
CRs-Fixed: 3426189
Currently hdd_medium_assess_init() and hdd_medium_assess_deinit()
are being invoked from hdd_hostapd_sap_event_cb. Timer counter is
not being incremented properly for multiple SAP concurrencies.
Hence seeing assert during the timer deinit.
To address this issue invoke hdd_medium_assess_init() explicitly
from wlan_hdd_cfg80211_start_bss , wlan_hdd_start_sap and
hdd_restart_sap.
Change-Id: I03b2567fd25119ff82f2c85939c31eb0ccf6cdb7
CRs-Fixed: 3432439
In some race-condition, the adapter entry in the
adapter list gets deleted midway between an iteration
over the same list via another thread. Accessing this
stale entry leads to watchdog timeout due to infinite
loop.
Fix this by breaking out the iterator if the next iterator
entry is same as the current adapter entry being held.
Change-Id: Id91cbc43474927faec72a9e0dcaa56e935ccf63d
CRs-Fixed: 3390966
Noise floor value is got from fw and report it to
userspace by QCA_WLAN_VENDOR_ATTR_LL_STATS_IFACE_NF_CAL_VAL.
Change-Id: Ie5aabdd650b2d8b21dbfbe13a9f7da81e8684d13
CRs-Fixed: 3427742
If the non-pre-cac adapter stop got trigger first, non-pre-cac adapter will
get close but the pre-cac vdev is not cleaned up.
So, don't need to check for is pre-cac ON for non-pre-cac adapter.
Remove check for is pre-cac ON for non-pre-cac adapter in
hdd_stop_adapter_ext and wait for the pre-cac cleanup to complete first.
Change-Id: I03b46b7db849f45f7625bdd0666f63ba7820e0f1
CRs-Fixed: 3431907
On mode switch to SAP on primary interface, the
DP interface of associated link adapter is cleaned up.
However due to STA mode check, the DP interface of
unassociated link adapter is not removed from the list.
Instead of STA mode check to cleanup DP interface
in MLO interface unregister, cleanup the link adapter's
DP interface incase of unequal MAC and MLD address.
Change-Id: I0df46822cfa8ab7b9df5c20d1abb703a271a9038
CRs-Fixed: 3430112
As part of commit I6d04f0946e6735613a4cf3d4361bf31052314fa0
a vendor command was added to enable roam stats event.
This change registers callback to send the added vendor
command event to userspace.
Change-Id: I3c504797b1b9619d3e4ecc1c37256dea75127e14
CRs-Fixed: 3403536
Currently host sends improper rate flags and nss for 160 MHz he
operation for SAP big data stats as corresponding rate flags
aren't filled in to assoc indication params and don't have
support to fill he operation rate info in station info struct.
To address this issue, fill he rate flags into assoc indication
params and add support to fill he rate flags and nss info into
station info struct.
Change-Id: I653ed43fe95a881857b5ed8d17f7e1f1d0b31b77
CRs-Fixed: 3422220
The following patch removed the last use of the g_event_flags
member of struct hdd_context:
qcacld-3.0: Remove the logic to move ACS to pending
Change-Id I439398b406e9371a8e443f5409bd3f25b3062501
Since g_event_flags is now unused, remove it.
Change-Id: Ib81827dd9bd97950051084208a9d910620b8813d
CRs-Fixed: 3428706
The following patch added get_roam_chan_from_fw to struct hdd_config:
qcacld-3.0: Add support to get roam scan channels from fw
Change-Id I690aca6c3f1e3aa7ae1fe54aadc839ea19446079
However, that member isn't actually used, so remove it.
Change-Id: Icc490935c82396f5469be14812bb66dbb5299312
CRs-Fixed: 3424940
All usage of hdd_is_sta_authenticated() was removed by the patch:
qcacld-3.0: Code cleanup from HDD module
Change-Id If5f1cf432b5c02848202debee7de696b2f20be9a
Since hdd_is_sta_authenticated() is unused, remove it.
Change-Id: I777b8bb1ecda596d71744aa62be4b14dba71fe0e
CRs-Fixed: 3428727
A prototype for hdd_update_eht_cap_in_cfg() was added as part of:
qcacld-3.0: Add APIs to update 11be target capabilities
Change-Id Ib3baa41ea3d8ef2ce49b88e4b48d8bc29556cd66
But no actual function was added, so remove the unused prototype.
Change-Id: Ie96c86f9028f39438e6a135c9733465aaf52c12b
CRs-Fixed: 3428468
Function hdd_sme_open_session_callback() was removed by:
qcacld-3.0: Send the vdev create to firmware in the caller thread
Change-Id Iafb186b13d948e421d152c3142cb8614fdbbffa6
However, the prototype was not removed, so remove it now.
Change-Id: Iffa96f51b2e274ba3540dbeac3011819285f50a0
CRs-Fixed: 3428757
The function hdd_max_sta_vdev_count_reached() was removed by:
qcacld-3.0: Check for max allowed STA vdevs in hdd_start_adapter()
Change-Id I5b2dd09fb58aa3135743a029889e689729bd05a7
However, the prototype was not removed, so remove it now.
Change-Id: I3ca75963bb69f0d2fc5a27687566e70b11f02058
CRs-Fixed: 3428740
Handle Multi-Channel Concurrency low latency mode enable/disable.
The firmware will do optimization for low latency in Multi-Channel
concurrency state if enabled. And all existing user quota setting
will be overwritten by the target.
Change-Id: I99d909f0b76cfd3876254f9930644061ecd0ea0d
CRs-Fixed: 3411252
At present, driver move DFS SAP to STA's non DFS 5 GHz channel
before STA connects to 5 GHz AP. But need to make sure the
new SAP BW doesn't cover DFS sub channels and cause CAC.
Move the BW check and update logic to correct location to handle
such case.
Change-Id: I59cd1e8d92d978429f24963b9cb241d6f89f2307
CRs-Fixed: 3427862
Add sanity checking to fix the potential pointer dereferenced after call
the __cds_get_context or hdd_adapter_get_mac_handle.
Change-Id: I53bdfa8434bdbbd6b70b0d98469e05c2e05ead28
CRs-Fixed: 3426731
As part of P2P componentization, debug logic was moved from HDD to the
P2P component, see:
qcacld-3.0: Activate debug functions in P2P component
Change-Id I1ff627a553108c74be144232fd0a0406d88de395
and:
qcacld-3.0: Remove legacy P2P codes in HDD
Change-Id Idaaacac4fdaf1b964432c33c10b1c86f8a591c2d
However these changes left behind two action frame type "number to
string" tables which are also no longer used, so remove those as well.
Change-Id: I95c2b2b767007f852d9c7ce0acac92089dbf8f23
CRs-Fixed: 3426074
The enum oem_capability_mask was introduced by:
qcacld-3.0: Add support for get and set OEM capability
Change-Id I8c4a8c19633845750ec9d2492632471c68ba410d
However, the enum wasn't actually used by that patch, and instead
struct sme_oem_capability represents that information, so remove the
enum.
Change-Id: Ie52fa8d69c95c1021bf94b052f373e3e75da6f80
CRs-Fixed: 3425038