Currently the legacy_osif_priv pointers in the Object Manager's pdev
and vdev objects are not populated. As a result it is not possible to
get the HDD object given an Object Manager object. Populate these
pointers to allow these lookups.
Change-Id: If5ee0c785d0496ee4f06f7d230fbcf6ba957b610
CRs-Fixed: 2119155
In order to support multiple nla_parse function signatures across
different kernel versions, a new hdd_nla_parse wrapper was introduced.
However, it is easy for propagations or new code to reintroduce
nla_parse. Redefine nla_parse to throw an error, to prevent the
function from being reintroduced into the code base.
Change-Id: I6e9b9cd60cee94dd9f94a067e7b9d964d60ae295
CRs-Fixed: 2116044
Currently hdd_wlan_start_modules() gets a pointer to the CDS Global
Context, and then in the failure path it dereferences this pointer to
call hdd_hif_close(). This is a layering violation -- HDD should not
be aware of the contents of the CDS Global Context and should not be
dereferencing the pointer.
Modify the code to use the exported cds_get_context() API to retrieve
this information.
Change-Id: I640bea70b50d5533afa1ee1b2e0cd6b9619a4ac2
CRs-Fixed: 2118692
In hdd_print_acl() the calls to SAP APIs are using a poorly named,
poorly typed variable. Recently all of the SAP APIs were reworked to
expose a clean interface, so update hdd_print_acl() to align with that
interface.
Change-Id: Ib10f5fc017589d13fe1ccfb758d9333daa0e3ac7
CRs-Fixed: 2118653
__con_mode_handler does not currently stop existing adapters before
stopping the driver module. In order to support runtime leak detection,
existing adapters should be stopped to avoid any false positives. Stop
any existing adapters before stopping the driver modules when changing
the connection mode.
Change-Id: I1ee369a75c74f889e06ee8a07a34f1b34120317e
CRs-Fixed: 2117892
There is a prototype for hdd_rx_mul_packet_cbk() but no
implementation, so remove this obviously obsolete prototype.
Change-Id: I9119bcb8baf9b9a04f5c99d39eb5a7abfa18607f
CRs-Fixed: 2118652
Before performing wow handshake, block unwanted traffic between the host
and firmware.
Change-Id: I977603b06639fe30816179defec337a2067fc210
CRs-Fixed: 2004308
qcacld-2.0 to qcacld-3.0 propagation
iw_setint_getnone can cause crash in monitor mode as hal
context is not initialized.
Modify the code to handle dereferencing hHal in Driver Monitor
mode.
CRs-Fixed: 1040579
Change-Id: If26cfab5374ac34c55e03b887c320c0736a9df23
For the hdd receive datapath reduce the log level
from INFO to DEBUG to avoid excessive logging.
Change-Id: I5d5881aeadcb5129e3c67c34402e29e732bae1a4
CRs-Fixed: 2105286
NDI does not need scan from userspace to establish connection
and it does not support scan request either. Hence reject scan
request on NDI vdev.
Change-Id: I58b0c899b6f1196f32a70e3f2c95d6ff839d4555
CRs-Fixed: 2115215
HDD defines a large set of WPS macros and enumerations which were
inherited from a prior version of the driver which implemented SAP WPS
in the driver itself. Now that SAP WPS is entirely handled by
userspace, these macros and enumerations are obsolete, so remove them.
Change-Id: Id8c9622c1e6429fcb64c3d292bc273bf49da79e4
CRs-Fixed: 2118451
Clear up tdls legacy init/deini, helper functions and structures.
Also remove legacy code in vendor nl80211 and iwpriv commands.
Change-Id: I983851d8cc0d3605c3d6bd0d8975c72844f71740
CRs-Fixed: 2105075
Clear up the tdls legacy functions which handle add/delete
tdls peer, tdls mgmt frame process and tdls_oper callback.
Change-Id: I8ba344ce5593df44bd15527e2ff68e872b6d23b8
CRs-Fixed: 2105075
Clear up the legacy tdls interfaces which handle
connect/disconnect notifications, scan and p2p
roc events.
Change-Id: Ia860904685fc4783453491effa4518777c7406d0
CRs-Fixed: 2105075
Currently, Host is operating into STA (mission mode) and scan
is pending into the pending queue. As a part of the mission
mode to ftm transition scan pending queue is not flushed. Hence
later during driver unload, host try to flush this pending
request but sta adpater is already freed during con mode
transition which lead to kernel panic.
As a part of this fix, Host ensures to flush pending scan
queue during con mode handling.
Change-Id: I13da323217a36777b9307c1bc76febc1a1b9b591
CRs-Fixed: 2082105
Compiler is throwing error - undefined variable 'bus_bw_work' after
MSM_PLATFORM disabled.
Wrap the related code within MSM_PLATFORM.
CRs-Fixed: 2113835
Change-Id: I628df9de911fb17670d63ce577a614408c545aec
Currently HDD sends a FW memory dump request to firmware without
checking support for this feature. This can lead to a crash as firmware
doesn't send the command response if feature is not supported.
Add a check in HDD so that the request is only sent when FW memory dump
capability is advertised by the firmware.
Change-Id: I73b980f50910e13aa5f2d2434f07b6f985dd5010
CRs-fixed: 1090806
Currently in hdd_wlan_shutdown() and hdd_wlan_re_init() there are
calls to cds_get_global_context(), but the returned context isn't
actually used, so remove these calls.
Change-Id: I21b2a4955d926fe0694f4f8a3097d9a5d5bef02e
CRs-Fixed: 2117018
Currently cds_init() returns a pointer to the CDS Global Context. At
one time this was necessary since it was required to subsequently pass
this context pointer to other CDS APIs. But now CDS internally
maintains a pointer to its context, and no CDS APIs now require this
pointer, so no longer return the pointer. The ultimate goal is to keep
all references to the CDS context inside CDS.
Change-Id: Id068a2d351e492eca7b84ef23f277939104c8b46
CRs-Fixed: 2117004
The pcds_context field in struct hdd_context is no longer referenced,
so remove the field along with the code that currently initializes it.
Change-Id: Ibac0eedfa0c1e2bd170af9f91812fd25c0ab3ce7
CRs-Fixed: 2116985
In hdd_softap_sta_deauth() and hdd_softap_sta_disassoc() there
currently exist debug logs which are logging the CDS context
pointer. These logs serve no useful purpose, so remove them.
Change-Id: I3844cb1346dcc6050ad16f28caf7b07b1e79cfe4
CRs-Fixed: 2116979
Currently HDD passes the CDS context to sme_get_rssi(), which in turn
passes it to csr_get_rssi(), which in turn uses it to populate the
p_cds_context field in the tAniGetRssiReq message. Upon processing of
this message by csr_update_rssi() the p_cds_context is checked for
NULL but is otherwise unused. Since the CDS context is not needed,
remove it from all of the RSSI APIs.
Change-Id: I5836e3192205576f6ff4614a29356e73fe674848
CRs-Fixed: 2116954
See change "qcacld-3.0: Refine API wlansap_open()" for the API history.
Update wlansap_get_chan_width() to use the true struct pointer type.
Change-Id: Iec86249524c042ae6dba818bb5983fd91d9e61fd
CRs-Fixed: 2116267
See change "qcacld-3.0: Refine API wlansap_open()" for the API
history. Rename wlansap_set_mode() to wlansap_set_acl_mode() to align
with the naming of the "get" function, and update it to use the true
struct pointer type.
Change-Id: Ic4ad32ffa222f5fc70b0619cb150d737a573c474
CRs-Fixed: 2116267
At one time the WLAN driver only supported a single SAP. At that time
most SAP APIs took the global context pointer as a param, and from
that they could extract the pointer to the one & only SAP context.
Later the MBSSID feature was added, and conditional compilation was
introduced such that either the global context pointer or a per-BSS
SAP context pointer was used. Finally in qcacld-3.0 the conditional
compilation was removed, leaving just the MBSSID behavior. However one
of the artifacts that was left behind was that the SAP APIs are
currently defined to take a void *context which prevents the compiler
from performing proper type checking.
Update wlansap_open() to return the true struct pointer type so that
it can then be used by other SAP APIs.
Change-Id: I216ed653e4feb9960357a168d4981e7a7a92411e
CRs-Fixed: 2116267
Currently sme_enable_uapsd_for_ac() & sme_disable_uapsd_for_ac() take
a cds_ctx parameter. This parameter is no longer used, so remove it.
Change-Id: I36e57975bcfeded648513dce79f32a2fd8f56f5a
CRs-Fixed: 2115518
Currently hdd_context_create() directly dereferences the global CDS
context pointer in order to save a pointer to the HDD context. This is
a layering violation. Instead update cds_set_context() to handle the
HDD context, and call that from hdd_context_create() to save the
pointer to the HDD context.
Change-Id: Ie54725225a7dd5653eeb35e94aa3f3a752edc62a
CRs-Fixed: 2115513
At one time the predecessor to the current driver was managed via
wireless extensions, but now the driver is managed by cfg80211. The
SAP implementation of SIOCSIWMLME now performs no useful actions, so
remove it.
Change-Id: I5da7e63d2efbc0d97dbdaec306bad2ae7a9cb0ef
CRs-Fixed: 2115350
At one time the predecessor to the current driver was managed via
wireless extensions, but now the driver is managed by cfg80211. The
SAP implementation of SIOCSIWENCODEEXT now performs no useful actions,
so remove it.
Change-Id: I10cb2a339a2a5f8be5114a6987a82f4fbad8b497
CRs-Fixed: 2115349
Change "qcacld-3.0: Remove obsolete SAP support for SIOCSIWAUTH"
removed the only caller of hdd_softap_tkip_mic_fail_counter_measure().
Since this function is now unused and obsolete, remove it.
Change-Id: If69881bbe922220341faad78bc992aa57d7e2f7c
CRs-Fixed: 2115340
At one time the predecessor to the current driver was managed via
wireless extensions, but now the driver is managed by cfg80211. The
SAP implementation of SIOCSIWAUTH now performs no useful actions, so
remove it.
Change-Id: If9b9fec53b8b594d50528f0fa8deaf611b39930e
CRs-Fixed: 2115339
At one time the predecessor to the current driver was managed via
wireless extensions, but now the driver is managed by cfg80211. The
SAP implementation of SIOCSIWGENIE now performs no useful actions, so
remove it.
Change-Id: Ia17f94ce648c41d7c25cf98ff1fbfbe5a5fc4c51
CRs-Fixed: 2114955
ARP/NS/NA packets will not get chance to be transmitted if
netif queues are paused due to low tx descriptor availability.
Send ARP/NS/NA packets from HI PRIO queue so that it can be transmitted
in noisy environment.
Change-Id: Ibb414463d1471c19d5db99e12517c77b02564318
CRs-Fixed: 2081348
Host driver is ignoring beacon/probe response update for SAP before
4-way handshakes completed. Due to this beacon/probe response is not
updated with the latest updates from the userspace. This can lead to
re-connection failure/delay after disconnect.
Change-Id: I3a735a2c867c4cfac9662551221fbf22d5afb29d
CRs-Fixed: 2027658
Current method for calculating LISTEN INTERVAL are static
configuration a.ka. ini based. Now OEM / USER want to take
control of setting LISTEN INTERVAL as per their applications
need. Once if USER configure the LISTEN INTERVAL value using
vendor command then host should avoid changing the LI value
during each suspend/resume. User LI value will be override
configuration. Once USER will Disable the LI using vendor
command then host can fallback to current default method.
Change-Id: Ia9b412b073c059df0cdff7bcda8198f7581e796d
CRs-Fixed: 2040298
Enable the TX orphan by ini key gEnableTxOrphan, which is protected by
TX flow control.
Change-Id: Ib8e6d88ea0c7fda62f2d13ae3c592866ddc82521
CRs-Fixed: 2115621
If the ssid_len was greater than the PRE_CAC_SSID string,
memcmp would do an out of bounds memory read. Fix by
adding a length check.
Change-Id: I0d72cfdb2faea74db06640df7418f2a7aecd9afb
CRs-Fixed: 2098988
The Wow pattern id should be identified unique for different vdevs of
legacy firmware, and latest firmware accept same Wow pattern id on
different vdevs.
This change is to differentiate this behavior using
WMI_SERVICE_UNIFIED_WOW_CAPABILITY flag, and supply a set of APIs to
manipulate pattern id.
Change-Id: I5fe7623a309a0c3baa14fb7312107c057e994462
CRs-Fixed: 2103017
When kernel panic happen, if WiFi FW is still active,
it may cause NOC errors/memory corruption, to avoid
this, inject a fw crash first.
Propagated from qcacld-2.0
Change-Id: I97a696a02dfd73aaca212ef1bca9f3597df1e382
CRs-Fixed: 2052332
Requirement to detect if a PLD OP has stuck for a long time.
Define a timer for 30 seconds and let it run during pld ops
probe, reinit, remove and shutdown. Upon expiry print important
debug information then either trigger recovery or BUG ON.
Change-Id: I6c132cb71917cec7dead9c6c91ce6778e20bffe7
CRs-Fixed: 2090785
In certain restart sequence of the modem, wlan driver is forcefully
removed and re-probed during the firmware ready. Supplicant receives
the RTM_DELLINK/RTM_NEWLINK events as part of unregistration of netdev
from remove and registration of the netdev again as part of re-probe.
As soon as the RTM_NEWLINK indication is received by the supplicant
it tries to bring up the interface, the request for bringing up
the interface is rejected by the driver since it is still in the
re-probing phase resulting in the scan failure and other failures.
To mitigate issue synchronize the interface up with the loading/unloading
of the driver.
Change-Id: Ie467e729a4736a0ee580c4df8d75099cf070d7bf
CRs-Fixed: 2058390
Packet filter params is supported only for Station mode presently,
configuring the filter for other modes results in failure in fw.
To mitigate the issue reject the packet filter for other modes than
Station mode.
CRs-Fixed: 2029356
Change-Id: Ic2c1786dcf8d8980a104af2ee6916489dd2ec423
Applications in the userspace can sleep on the RTM events from
the driver. One such application waiting of RTM_NEW_LINK indication
does interface up as soon as it recieves the indication, so the
kernel takes rtnl_lock to call the dev_open on the interface.
Load/unload of the driver and dev_open of the interfaces are
synchronized with hdd_init_deinit_lock. So the __hdd_open is waiting
on the hdd_init_deinit_lock which is currently held by the driver
loading context. After registering the interfaces driver goes to
register the netdev notifier which is blocked on the rtnl_lock
currently held by the dev_open resulting in deadlock.
To mitigate the issue register the netdev notifier before the
interfaces are registered.
Change-Id: Ibb0c187a43ad87fa535ff583316af430e1ddf04f
CRs-Fixed: 2078720
In the Loadonce unload never driver the modules_start and modules_stop
happen multiple times and presently the memory for target_name is
allocated multiple times during the start_modules but freed only
once during the module_exit, so when the driver is unloaded
this can result in a crash.
Moving this to stop_modules will help in freeing this everytimg.
Change-Id: I87a92c8b411fb0ae148a293d74e6914246b88014
CRs-Fixed: 2107392
In certain cases during the SSR/PDR after shutdown the interface
up of the driver can be invoked before complete recovery is completed.
This can lead to accessing the bus which is not clocked or other issues.
Block the interface up from the upper layer until the recovery is completed.
CRs-Fixed: 2096446
Change-Id: I6b6569a10520d58e005e56046288ccc10592f725
Roam sync indication checks for csr roam state to determine if user
disconnect is not in progress. But there can be a race condition
where the csr roam state is not updated by disconnect and while
roam sync check the state and proceed.
To fix this set the disconnect in progress flag in sme session
as soon as disconnect starts in HDD and use that to determine if user
disconnect is not in progress when roam sync is received.
Change-Id: Icf541b698eb194621d19b03f281ec3dfd552e373
CRs-Fixed: 2112912
Add support for handling vendor sub command
QCA_NL80211_VENDOR_SUBCMD_ACTIVE_TOS and parsing its attributes.
CRs-Fixed: 2069865
Change-Id: I38f761f20007a04063b0e0680793aedcabd02c6a