Add support to handle twt_notify event. Firmware can
terminate a TWT session without a Host trigger due to internal
reasons. In that case it sends an event to notify that it is
again ready for a TWT session setup.
Change-Id: I3508687cee93e16a26221a1bc7ad9c626a4f4523
CRs-Fixed: 2847158
When a new connection is about to come up, host checks if current
concurrency combination including the new connection is allowed or
not based on the HW capability.
Firmware manages NAN + NDI by dividing up slots. Connection on NDI
is re-negotiable and therefore a 3rd connection with the same MAC
is possible.
Change-Id: I63e39c5cd4945cd308e475c1e03f676336c4e7c1
CRs-Fixed: 2841457
Don't allow TWT commands back to back till response for
existing command is not received.
Reject the new command till the existing command completion
event is received from firmware. Allow TWT teardown when
any other command is in progress after TWT setup is complete.
Change-Id: I9282230c7cb24691b44ddfd273972272fd80f44b
CRs-Fixed: 2853515
Stop all the TSPEC flows after roaming to new AP due to
disconnect roam trigger as the previoes TSPEC session is not
valid. Firmware clears the TSPEC session on deauth roaming and
doesn't include the RIC IE in roams followed by deauth trigger.
But host entry for the TSPEC flows exist and doesn't allow new
TSPEC session setup commands.
Clear all the TSPEC flows with older AP to allow new TSPEC
session creation with roamed AP due to disconnect roam trigger.
Change-Id: I9d75acba402e6d8380584fd1ffd310c2a21cd19d
CRs-Fixed: 2816035
To improve build time performance remove date and time
embedding from wifi DLKM Kbuild config.
Change-Id: I465699005b0e5eee762f528a8d8f102c1987b18e
CRs-Fixed: 2855334
Currently driver does not validate BW before it invokes the kernel
api cfg80211_get_chandef_type. There is a WARN_ON in kernel
if above api is invoked with invalid BW.
To address above issue add a logic to validate the BW
before driver invokes the kernel api.
Change-Id: Ie237aa46813bfa4206a1057a0418d9562dbbae75
CRs-Fixed: 2846462
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