Currently there are no hdd apis to check different
vdev states.
Add hdd apis to check if vdev is connecting to some ap
or disconnecting or vdev is in disconnected state with
the help of connection manager api for the same purpose.
Change-Id: I3b653fa1090a0e701f235520fa4e1028bac6ad7d
CRs-Fixed: 2853413
Currently host driver does not validate the mac address which
it receives from FW and based on this mac address host derives
remaining mac addresses. If mac address from FW is multicast
or broadcast address then it will be treated as invalid mac
address and adapter creation will fail.
To address above issue, accept mac address provided by FW only
if it is a valid mac address else derive all the mac address
based on driver's internal logic.
Change-Id: I4c4b60cac082680df90016ec4ba63f744353771c
CRs-Fixed: 2853417
Create TWT context in peer object to store the TWT session
related parameters. Introduce mlme api to get/set various
twt session parameters for the peer.
Block the below commands till TWT setup is complete.
TWT GET
TWT Pause
TWT resume
TWT terminate
Add new files for TWT specific functionality in MLME component:
components/mlme/core/inc/wlan_mlme_twt_api.h
components/mlme/dispatcher/inc/wlan_mlme_twt_public_struct.h
components/mlme/dispatcher/inc/wlan_mlme_twt_ucfg_api.h
components/mlme/core/src/wlan_mlme_twt_api.c
components/mlme/dispatcher/src/wlan_mlme_twt_ucfg_api.c
Also return error to userspace if back to back TWT setup
command is received before TWT setup response is received from
firmware or already TWT setup is complete for given dialog id
Change-Id: I61e24dd41dc9dcb78fdfe33ef8fa0ecb374a4a72
CRs-Fixed: 2847213
spin_is_locked() provided by kernel has statement that we should not
rely heavily on the return value, it only tells that the spinlock is
seen to be locked, not that it is locked on your CPU.
Further, on CONFIG_SMP=n builds with CONFIG_DEBUG_SPINLOCK=n, the
return value is always 0.
So we should not use QDF_BUG to test/assert its return value, only be
used for debugging purpose.
Change-Id: I8854ebc6b96698f5272d77750da7d18582a288e9
CRs-Fixed: 2852179
Currently, wait_for_key timer (hTimerWaitForKey and WaitForKeyTimerInfo)
are defined globally, which may cause issues in case of STA + STA.
In case of STA + STA, wait_for_key timer for each STA should get
start and stop independently.
In order to make wait_for_key timer per vdev context, move
hTimerWaitForKey and WaitForKeyTimerInfo to struct csr_roam_session.
Change-Id: Idfeea4a8ceee9ee77eb047283b40090f390f5484
CRs-Fixed: 2852960
Incorrect dialog id can cause add dialog request to target to fail.
Validate the id from user before sending it to the target.
Change-Id: Ib40b2554a1a420e9b799aab80a991fbab484667f
CRs-Fixed: 2827838
Issue1: Driver RTPM state is ON/NONE, Kernel state is RESUMING.
cdp_runtime_resume is already complete,
hif_pm_runtime_get return -E_INPROGRESS,
dp_tx_hw_enqueue will set the flush event,
but cdp_runtime_resume is already done,
this flush event will be handled only on next pkt tx.
Issue2: Driver RTPM state: Resuming
hif_pm_runtime_get returns -EBUSY,
dp_tx_hw_enqueue is interrupted by any IRQ,
cdp_runtime_resume is completed,
dp_tx_hw_enqueue will set the flush event,
This flush event will be handled only on next pkt tx.
Fix:
Introduce a link_state_up atomic variable in hif to track the link state
change by pld_cb.
Set atomic variable link_state_up=1 in pmo_core_psoc_bus_runtime_resume
just after pld_cb. pld_cb brings the PCIe bus out of suspend state.
Set atomic variable link_state_up=0 in pmo_core_psoc_bus_runtime_suspend
just before pld_cb. pld_cb puts the PCIe bus into suspend state.
Introduce dp_runtime_get and dp_runtime_put.
dp_runtime_get get refcount with increment of an atomic variable.
dp_runtime_put return refcount with decrement of this atomic variable.
If hif_pm_runtime_get returns -EBUSY or -EINPROGRESS,
take the dp runtime refcount using dp_runtime_get,
check if the link state is up, write TX ring HP,
return the dp runtime refcount using dp_runtime_put.
cdp_runtime_suspend should reject the suspend, if dp_runtime_get is non
zero.
cdp_runtime_resume should wait until dp_runtime_get becomes zero or time
out, then flush pending tx for runtime suspend.
Change-Id: I7f38b3dc6975fcc208ad85e913564dfef5cc1cb7
CRs-Fixed: 2849002
In beacon, if STA Channel Width is 1, indicate 40M width is supported,
but Secondary Channel Offset is 0, indicate 40M channel is disabled,
20M width should be set instead of 40M.
Refer 802.11-2016 Table 9-168 HT Operation element fields and
subfields.
Change-Id: Ifb130b3447e4f10723295b93e505df929a16486d
CRs-Fixed: 2854933
tSirProbeReq currently occupies 452 bytes on 32-bit platform and
could potentially lead to stack corruption. Therefore allocate
it on the heap to reduce stack size.
Change-Id: I6c86e09d188d886cd5bea8b3fd73238d9f97937d
CRs-Fixed: 2852289
During the driver unload whenever the recovery is triggered in
the current implementation the request is silently dropped, this
is resulting issues in other areas during the driver which is making
it harder to debug the issue.
Trigger system panic to debug the reason for recovery during the
driver unload.
Change-Id: I67c6c7e8b19dcc3371cd6691c0e3f19be4c33c46
CRs-Fixed: 2850591
Add support to get the TWT self and peer capabilities via the
QCA_WLAN_TWT_GET_CAPABILTIES vendor command.
High 16 bits - self capabilities,
Low 16 bits : peer device’s capabilities
The meaning of each bit is below:
Bit 0: Requester Support
Bit 1: Responder Support
Bit 2: Broadcast TWT Support
Bit 3: Flexible TWT Support
Bit 4: TWT Required
Change-Id: I78b0c5902c89fe3a8eec1697fa513aac3c2b7a36
CRs-Fixed: 2847177
Support has been added in common code to register both
common tx ops and MC/WIN specific tx ops. Add support to
register and tx ops for MC specific stats.
Change-Id: I4e5263e4685a707008ec3c5e96f50c707b071fe9
CRs-Fixed: 2851256
The hif_om_runtime_get logs the requester for resume
when the device is in runtime suspend/suspending state.
Due to such kind of logging from a softirq context, its
execution time will be longer and can block the execution
of other time critical softirqs.
Fix this by marking the call to hif_om_runtime_get as
a call from critical context and avoid the logging for
this call.
Change-Id: I2d7d0b3645f351af11a016bd45c5930f0df5401a
CRs-Fixed: 2850952
Record station connect/disconnect event for debug connectivity
issues. Dump the latest 20 records for unexpected disconnect case.
Change-Id: Ibf04b98a0124b84b77e3b5647e4d4234189b0ab2
CRs-Fixed: 2849471
Prevent RTPM wow when executing wow feature unit tests to avoid
conflicting wow states.
Change-Id: I279f99e5b66ad0a28bdcb8a54534b0b048db5acd
CRs-Fixed: 2853620
The new Android build infrastructure will invoke the Makefile
instead of invoking Kbuild. Update the Makefile logic to not
set KBUILD_OPTIONS if they are already set since this is an
indication that the Makefile is being invoked via Android.mk.
Change-Id: I0442d083be4a9e335d683ab864d5fa8a1f18ac4a
CRs-Fixed: 2852886
The Android build infrastructure is transitioning to a new
mechansim for building external modules. Update the qcacld-3.0
driver to use that mechanism for toro builds.
Change-Id: I7d73bc1ccbde5ecc74c661fd6e31525b266413cd
CRs-Fixed: 2852877
Currently in SAP and STA mode the driver advertises TWT
capabilities in the HE capabilities IE based on the below ini
values irrespective of the master ini "enable_twt" to enable
the twt feature:
"he_twt_requestor","he_twt_responder", "he_bcast_twt",
"he_flex_twt_sched".
So even with the ini is disabled, twt capabilities are advertised
Advertise TWT capability only if "enable_twt" ini is true.
Change-Id: Iae3a98ee339f3859391e0deb64ddd354634b0cbf
CRs-Fixed: 2844516
Currently there is no hdd api to check if vdev is associated
to some ap.
Add hdd api to check if vdev is associated with the help of
connection manager api for the same purpose.
Change-Id: I696980bc4235b738be8bdde5cfe4bf4157b45b6a
CRs-Fixed: 2852471
Add P2PGO support to get the remote peer stats for cfg80211
callback get_station.
Change-Id: I910e9c3edab481e8abc0f28f0a4b7df2b73c2c59
CRs-Fixed: 2851955
Currently, ongoing STA connection is not aborted when a
stop_adapter is received on SAP. This results in a peer leak in
the below scenario,
1. Turn on SAP.
2. Initiate STA connection to an SSID which has multiple BSSIDs in
dense environment. Connection gets retried to next BSSID when
it fails to connect to the current BSSID.
3. Turn off SAP while connection is happening. stop_bss command
doesn't get processed and waits in queue as the STA connection
is going on.
4. If stop_bss timer(10 seconds) expires while STA connection is
in progress, SAP vdev is destroyed without cleaning up self
peer. So, there would be a peer leak.
Abort the ongoing sta when SAP goes down, so that stop_bss gets
processed cleanly and self peer is also cleaned up.
Same is applicable for P2P_GO as well.
Change-Id: I888a602cd27a9bbec54fb356ed1488cd9fc2847c
CRs-Fixed: 2852023