Multiple functions running in different thread context can access
the ROC context or alter its elements, after the roc context is
freed or its elements are altered by other functions which can
lead to crash or some other issues.
To address this, protect ROC context and its elements with mutex.
The possible scenarios addressed are during roc callback, roc
timeout and cancel roc.
Change-Id: I2c79216f71c720cd4b555061e8a69adab50dda5e
CRs-Fixed: 2002644
Driver is missing couple of deregister handler while bringing down the
scheduler
Change-Id: I8fc181e621d56290623419bfc0fde896522e91e4
CRs-Fixed: 2001133
Currently in STA mode, host do not change the peer state to
associate state after successful connection. Hence other
components always find peer state as not associate.
As a part of this fix, move peer state to associate state.
Change-Id: Idf85e7f7b916c8c8ee19b117deb14696de8216e5
CRs-Fixed: 1115161
TDLS peer list is deleted before TDLS exit
called, due to this TDLS peer idle timer
resources are not cleared correctly and
causes memory leak in the system.
Make sure TDLS peer list is deleted only
in TDLS exit function.
Change-Id: I2885d0ff21fa55a0514c68c40a9a15200bc4ed9a
CRs-Fixed: 2002378
Some modules are not initialized with qdf debug framework.
Initialize the new modules with the qdf debug framwork.
Change-Id: I7ff85da52d2c6c042f81e28c9e7becbc7c0d0713
CRs-Fixed: 2002626
1) Add enhancements to the existing log prints for lFR3
with respect to host driver code.
2) Fix memory leak in Wma roaming config handler.
Change-Id: If3e26a7f374673a4c7c11862e94f042bcf9d3c58
CRs-Fixed: 1109354
qcacld3.0-1.1 to qcacld3.0-2.0 propagation
As part of connect, when Probe resp/beacon from AP is not received,
vdev stop is sent to firmware. PE session is deleted and join rsp
is sent to sme after posting vdev stop command without waiting for
vdev stop response from firmware. SME will try to connect to next
BSS and host sends create peer to firmware. Firmware is not yet
done with vdev stop and panics.
To fix this, add callback function in lim_set_link_state to inform
when vdev stop resp from firmware is received. Upon reception of
this do the PE session clean up and send join resp to SME.
Change-Id: I43665f14736472da8da70b9c87361be769de7fac
CRs-Fixed: 1112551
Propagation from qcacld-2.0 to qcacld-3.0.
Add support to dump information for ICMPV6 RS and RA packets in
wow wakeup stats.
Change-Id: I1a2852189664fff31e29b487d7a8c66ee83931c5
CRs-Fixed: 1115364
Propagation from qcacld-2.0 to qcacld-3.0.
Add logic to dump first 32 bytes for rx packets
in DPTRACE.
Change-Id: I950108b9d1c9094ce3d285493ee36bda4f9d7e41
CRs-Fixed: 1074551
Under situations where the driver detects wifi capabilities are not
being used, it cleans itself up transparently to the kernel and shuts
down. The kernel has been observed calling the stop AP callback in
these situations, even though no virtual devices are active, which
causes a crash. Gracefully reject the calls into stop AP by the
kernel in such cases.
Change-Id: Ic215b033526125412ebe12c0021c61b20f4c86a1
CRs-Fixed: 2001200
ieee80211_band has long since been deprecated and is superseded by
nl80211_band. Replace IEEE80211_BAND_2GHZ with NL80211_BAND_2GHZ to
prevent compilation issues against 4.7+ linux kernels.
Change-Id: I6a6fcc7eb88ff040504c8df22e779898a45081ae
CRs-Fixed: 2002311
The features exposed by the setMCBCFilter ioctl are exposed via newer,
standard APIs. Strip out setMCBCFilter, and replace it with instructions
for moving to the new APIs. Relatedly, clearMCBCFilter is not needed,
so remove it completely.
Change-Id: I091ca239240ea1b35afe755cfa791b83bcd91409
CRs-Fixed: 2000747
The global HDD context contains mc/bc filter setting fields that
ultimately go unused. Remove these fields and clean up call sites as
appropriate.
Change-Id: I51dcc45d7f2d5ac8a55574b0c6dc0b30458047b8
CRs-Fixed: 1116051
A new HDD Request Management framework is being deployed. One of the
requirements of that framework is that every request API must have a
provision for a caller-supplied context, and that caller-supplied
context must be returned to the caller when the callback function is
invoked.
Currently sme_encrypt_decrypt_msg() is not aligned with that
requirement. There is no provision for a caller-supplied context;
instead the HDD handle which is stored in the MAC context is always
returned.
In order to prepare sme_encrypt_decrypt_msg() for the HDD Request
Management framework update the curent implementation as follows:
1) Remove the separate registration and deregistration of the callback
function pointer, and instead make the callback function and
callback context parameters to sme_encrypt_decrypt_msg().
2) Pass the callback context when invoking the callback function.
Change-Id: I6e8c5405393f4cb732d9874ac07145caf5e95cac
CRs-Fixed: 2000026
A new HDD Request Management framework is being deployed. One of the
requirements of that framework is that every request API must have a
provision for a caller-supplied context, and that caller-supplied
context must be returned to the caller when the callback function is
invoked.
Currently sme_get_bpf_offload_capabilities() is not aligned with that
requirement. There is no provision for a caller-supplied context;
instead the HDD handle which is stored in the MAC context is always
returned.
In order to prepare sme_get_bpf_offload_capabilities() for the HDD
Request Management framework update the curent implementation as
follows:
1) Remove the separate registration and deregistration of the callback
function pointer, and instead make the callback function and
callback context parameters to sme_get_bpf_offload_capabilities().
2) Pass the callback context when invoking the callback function.
Change-Id: I3967fdf9b002d961b0ec9a7ea78e7783b47c50a3
CRs-Fixed: 2000024
Currently sme_get_link_speed() requires that the caller pass an
allocated buffer as the lsReq param. This violates the general
concensus that SME should make no assumptions about the buffers passed
to it by HDD.
Update the implementation such that SME allocates the buffer that will
be passed in the message, and update HDD to use the stack.
Note that this is a prerequisite for moving the linkspeed request
processing to the new HDD Request Management infrastructure.
Change-Id: I09257855c6c260bb4a6ca91eb79bb24813cc5efa
CRs-Fixed: 2000023
There is a possibility of excessive logging by logging thread
(cds_get_log_indicator) if SSR is in progress, which may lead
to thread stuck and thereby WD bark may happen.
Remove unnecessary log in cds_get_log_indicator, to stop excessive
logging, due to which thread is stuck.
Change-Id: I1747d92b23e208903452ad43b8c84c7b444db922
CRs-Fixed: 2001035
Memory leak in csr_scan_save_roam_offload_ap_to_scan_cache
due to not freeing memory allocated using
csr_get_parsed_bss_description_ies.
Free memory in csr_scan_save_roam_offload_ap_to_scan_cache
function.
Change-Id: I6487dc5964e0e671b429f256e001fcb9d117f44b
CRs-Fixed: 1116621
In hdd_bus_bw_work_handler() change the timer call from
qdf_timer_start to qdf_timer_mod as following race condition
could be possible:
1. Softirq fires and schedules the delayed work,
2. Disconnect reconnect occurs and timer gets stopped and
started from mc thread, and
3. The delayed work tries to do the add timer and kernel BUG ON
because the timer is already running.
CRs-Fixed: 1116652
Change-Id: I69ad49518c7b59b27069ed4212bebbc4992e3362
Invalidate the scan entry if there is no active session and
do not inform it to the user space.
Change-Id: I134cceef0cfc54f68966d3287d92bdf6b35e33fc
CRs-Fixed: 1114216
While sending WMI_REQUEST_STATS_CMDID, wma stores the request in a
allocated buffer, which is freed once firmware response is received.
However in case of driver unload, before we receive firmware event,
the buffer will not be freed and that will be leaked. Fix the memory
leak by checking for these buffers at time of wma_wmi_service_close.
Change-Id: Ie8fd5faec22ceaba415a26becf98030bc7cc13ce
CRs-Fixed: 1116622
Currently the default keep-alive interval is 30s. From testing we know
90s works just as well. Change the default keep-alive interval to 90s,
up from 30s, for additional power savings.
Change-Id: If6eda06447a459e2803a4919f46cf1e57c93670f
CRs-Fixed: 2001156
Currently, a null data packet keepalive method is used by default. Once
ipv4 address information is received, dynamically switch to using
gratuitous ARP for keepalive instead of null packets.
Change-Id: I475a4bf71376ab6be92fd81070ba7dce48f45151
CRs-Fixed: 2001249
Ensure that you continue processing the list of
network packets even if one of the packets in the queue
is erraneous.
Change-Id: I4962b2e7b83b9519e3da69165760e2ac4114fc20
CRs-Fixed: 2001835