Many operations within the wlan driver occur in an asynchronous
manner. Requests are received by HDD via one of the kernel interfaces
(ioctl, nl80211, virtual file system, etc.). The requests are
translated to an internal format and are then passed to lower layers
for processing. For requests which require a response, that response
comes up from the lower layers in a separate thread of execution,
ultimately resulting in a call to a callback function that was
provided by HDD as part of the initial request. So a mechanism is
needed to synchronize the request and response.
Currently there are various mechanisms which perform these
synchronizations, but experience with them has revealed some flaws. So
a universal mechanism is needed to synchronize the request and
response which addresses all of the known flaws. This framework
provides that mechanism.
Change-Id: If4d5912710f8a3b5e87adf76f828a646b7cc2983
CRs-Fixed: 2005298
If the ROC is requested from the supplicant, the driver sends
scan request to the firmware. The driver start the timeout after
receiving ready on channel event from the firmware. While packet
transmission, if the channel is same and timer is not running,
the driver assumes that it is in the listen channel and thus
transmits the frame. But this condition even meets while the
driver waits for ready on channel event, and thus, it sends
the frame in the wrong channel.
The fix is to wait for the ready on channel event if the timer
is not running. The change also address that ROC is dequeued only
after cancel ROC is completed.
Change-Id: If35c75e4bda4f11913a1326896754f29ac43946a
CRs-Fixed: 2005917
Change signature of pe_handle_mgmt_frame, wma_form_rx_packet
and wma_mgmt_rx_process APIs by replacing rx params of type
void pointer with that of struct mgmt_rx_event_params pointer.
Change-Id: Idfa54f1c9bfec22a2cf2e98740765dcd797513df
CRs-Fixed: 1103247
Currently in IBSSS 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 IBSS peer state to associate state.
Change-Id: I21970ae723a3cecd797182c260692810625f2ace
CRs-Fixed: 2007648
Object manager provides reference count infrastructure for all 4
common objects: psoc, pdev, vdev and peer. Reference count APIs
provide protection from use after free scenarios by making sure
reference counted object is not freed prematurely while its still
in use. Reference count usage requires certain set of disciplines
from components for example:
1) A component 'C' is responsible for all its reference count
2) A component 'B' can't release reference count of a common object
taken by component 'A'
3) A component can't release a reference count which it has not
taken.
Enable reference count debug infrastructure such that wrong APIs
usage can be detected and fixed properly.
Change-Id: I7a5b92fe00a060eee15b74572d2624197b331894
CRs-Fixed: 2006322
Some functions are only used in the file which it is defined
in. Add "static" before function to fix compilation error.
Change-Id: Ie99c8e2a2c4dd6564c19876f8456a47786d3e5cb
CRs-Fixed: 1112463
Currently kernel LRO API is only provided in version 4.4. There will
be compilation error if kernel version < 4.4. Add fix to disable
LRO feature when linux kernel version < 4.4.
Change-Id: I69198e55bb3c4ee7c5844e2b7b55e12cb8075d7c
CRs-Fixed: 1112463
WLAN_FEATURE_LINK_LAYER_STATS is included in FEATURE_WLAN_TDLS in
wlan_hdd_cfg80211.h. It will lead cmpilation error when FEATURE_WLAN_TDLS
is disabled.Since WLAN_FEATURE_LINK_LAYER_STATS doesn't depend on
FEATURE_WLAN_TDLS, move WLAN_FEATURE_LINK_LAYER_STATS out of
FEATURE_WLAN_TDLS to resolve this issue.
Change-Id: I14f4b69a9868fcef7bf2aa9813ef562ad265acd9
CRs-Fixed: 1112463
WMI flush event handler is spamming kernel log buffer hence remove
it. Logger thread already logs when log message is delivered to
user space hence logging in WMI is not needed.
Change-Id: Ie8f8eb904f0417f83870058d7eac67622955b15a
CRs-Fixed: 2007373
Logging events should not be serialized to scheduler thread hence
de-serialize WMI debug flush log event id from scheduler thread
and register it to run in kernel's default event work queue.
Change-Id: I36d7542da43e6814b5bd50bdc8c166d1fc692e35
CRs-Fixed: 2006819
wma flush log event handler is registered during wma_start which
is not done until interface is up. This leads to excessive logging
from WMI layer because event handler is not registered. Move wma
flush log event handler registration to wma_open such that after
driver load FW log flush events are handled properly.
Change-Id: I5a76bbc7d53dacfd2c9bf7f15b73b46e0df85289
CRs-Fixed: 2006818
qcacld-2.0 to qcacld-3.0 propagation
Extended feature bits in wiphy structure should be populated during
wlan host driver startup to support beaconing at different data rate.
Currently legacy, HT and VHT rates are all supported.
Change-Id: Ic03dd1feb63144dddb813e6a1133fbfa48db8315
CRs-Fixed: 1097770
In the case of concurrency, when the session decrements, the
opportunistic timer is started. After a while, when the
opportunistic time is expired, and the hw mode change for SMM
is issued, and the same time new interface comes up, then the
new forms MCC with the existing connection instead of forming
DBS.
The change is to avoid the race condition to form MCC instead of
DBS.
Change-Id: I977039138509676b964ba089e3cb479cd16968bb
CRs-Fixed: 2006350
Add get and release reference counts for PSOC/PDEV/VDEV/PEER
objects reference storing and releasing as per the latest reference
count implementation.
Change-Id: I1715be7f8e47b52fa36bb070443051dd99703eb0
CRs-Fixed: 2001058
1. sdio related source files are not included due to
CONFIG_HIF_SDIO is not enabled.
Enabled CONFIG_HIF_SDIO if CONFIG_ROME_IF is sdio.
2. Paramters for nl_srv_init/nl_srv_exit are incorrect
if MULTI_IF_NAME is defined.
Correct the parameters, to align with the prototype.
Change-Id: I4e395e07b12e3b1904cabfa4a40fa10845d8e735
CRs-Fixed: 2004368
For HL target, CONFIG_HL_SUPPORT is enabled, which
cause sevaral compilation errors.
1. Couldn't find the definition of adf_xxx APIs.
Replace adf_xxx APIs with qdf_xxx APIs.
2. ol_tx_msdu_id_storage() return a wrong value,
implementation and definition mismatch.
Correct the return value to: pointer to tx desc_id.
3. Some of CONFIG_HL_SUPPORT/FEATURE_WLAN_TDLS feature
related code are not embraced by the macro properly.
Embrace the code with right macro for each feature.
Change-Id: Ibf09fd78f85327200dede8c32bc215208e54b798
CRs-Fixed: 2004340
Checkpatch reports multiple instances of the following in HDD:
WARNING: else is not generally useful after a break or return
Fix all such instances.
Change-Id: I1a0ed6ea49ada6f26c760f084337433b74a3bf83
CRs-Fixed: 2005433
The kernel checkpatch script has identified code in function
iw_get_policy_manager_ut_ops() that is not compliant with the coding
style, so fix it.
Change-Id: Icff0907c649fb7d7f7d72d1bc486e5c5c7c177d2
CRs-Fixed: 2005296
Hardware support max tx power as 22 instead of 30.
Fix this by supporting max power as 22.
Change-Id: I3645b47a575ffa8b8bcc85fe0dcbba4a630b078b
CRs-Fixed: 2005749
If user is issuing connect command again and again with some AP,
driver should first do a disconnect and wait for completion of disconnect.
Once disconnect is done, driver should start new connection.
Change-Id: I8d64384ea1feef1173800a6f2910945d9046020b
CRs-Fixed: 1114683
Remove all calls to cdp_remove_peers_for_vdev().
cdp_remove_peers_for_vdev() is called from vdev_resp_handler
to remove all vdev peers. All the peers associated with the vdev
are deleted before vdev stop and hence this call to
cdp_remove_peers_for_vdev() is redundant.
Delete only the self peer and remove the code to delete the
vdev peers.
Change-Id: I8a91509917a371b860058a66831d8417b3a78671
CRs-Fixed: 2002372