Once Driver receives APF sub-command QCA_WLAN_SET_PACKET_FILTER,
it posts the message to SME and returns the context. In case
where vdev restarts before sending the APF command to WMI,
driver will drop it since Firmware cannot accept the command
while vdev is down. Upper layer will have no knowledge of this
failure since there is no acknowledgment mechanism for a
successful APF command sent to the Firmware. Once the vdev is up
again, upper layer will send next APF instructions and driver
will allow then to the Firmware. This is problematic since
Firmware cannot operate with the partial APF instructions since
the initial part was dropped.
Hold the vendor command context till the command is successfully
sent to the Firmware. Propagate the errors to the upper layer.
Change-Id: If3cd6fbc85f83c0d78e735e96c00011cd2fd9347
CRs-Fixed: 2350640
Add the following WMM config ini configs to MLME cfg:
1. CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME
2. CFG_QOS_WMM_BURST_SIZE_DEFN_NAME
3. CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME
4. CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME
Introduce the basic infra APIs related to these configs
from mlme.
Change-Id: I149971768a7193099926e2778f093dcd073f0461
CRs-Fixed: 2327692
There is a window where wmi commands are reaching HTC while HTC is
getting stopped in other context irrespective of wma_wmi_stop() which
will lead to memory leaks.
To avoid this issue, flush all scheduler message queues before
proceeding to htc_stop.
Change-Id: I4d0742d7b9df6a9b0401fd4e840ff6a667d353da
CRs-Fixed: 2352291
Currently when a VDEV response timer or Hold request timer expires,
the pointer to the request message is received as data from the
timer callback. The data is dereferenced to get the type and vdev_id
and the corresponding vdev request is found from the vdev resp queue
based on type and vdev_id.
In a scenario where the MC timer has expired and posted a message on
the SYS message queue for the scheduler thread to process and the
response from the FW for the VDEV request is received after the timer
is expired and posted, the response path handled in softirq context
frees the request memory. When the SYS message queue is processed by
the scheduler thread, the vdev resp timer API is called with a stale
pointer to data which has already been freed.
When the data is dereferenced to get the vdev_id and type, use-after-free
happens leading to assert. Since we have the address of the request
from the timer, instead of finding the request in vdev resp queue based
on vdev_id and type, the address based lookup needs to be done.
Lookup the vdev_resp_queue or the hold_req_queue for the request
using the address before dereferencing the request for vdev_id and
type.
Change-Id: I8f19cb81b28bd5500d6cb3aa3da73ebe7faa48b1
CRs-Fixed: 2344681
Add support to configure the FW to send the action frame in
HE trigger based PPDU.
Change-Id: Ie6df5b1cb40c7f1b18a9e86f90b4b8f44ba7bf6b
CRs-Fixed: 2311413
Currently, driver issues disconnection if only short/long
preamble caps changes occur. This results in frequent disconnections.
Firmware anyway doesn't take care of short/long preamble peer
capability so this shouldn't cause any side effect as most of the
peers today support short preamble.
Fix is to prevent disconnection if only short/long preamble caps
change occurs.
Change-Id: Iea80e06d10cdedfed77830f7757881046c929e48
CRs-Fixed: 2353787
In mlme_get_wep_key, the key_length is got from the caller is
hardcoded to value 13. This should be updated based on the
length of the key and passed to the caller. But it is not
updated and value 13 is used to copy the key, resulting in
decrypt failure.
Also add debug logs to print wep key id and length.
Pass the key length by call by reference to update the key
length
Change-Id: Ie1e56a80db27894bf9f0426728f9fb74a014679e
CRs-Fixed: 2351182
The following legacy TDLS enumerations are no longer used, having been
replaced by enum tdls_event_reason, so remove them:
- eWniTdlsTeardownReason
- ewni_tdls_connection_tracker_notification
Change-Id: I1fa0263dda1149c2247457f3e801da3b0f6c30ff
CRs-Fixed: 2353582
This reverts commit 2459533, which fixes WDI 1.0 MCC SMMU fault
but it's only a partial fix. And we also need 2490501 to be a
complete fix. But 2490501 has regressions and leads to NULL
dereference, and it's reverted in 2517642 until a new complete
fix is ready.
Based on above, revert 2459533 and WDI 1.0 MCC SMMU datapath
will be a known issue.
Change-Id: I6444bfd8552906d889531b7e77ca6aa6b6fa7d6d
CRs-Fixed: 2352927
The count of multicast filter entries recorded in adapter
is not updated when uplayer delete multicast filter from
IP table. It causes FW can't receive the WMI command which
was used to delete multicast filter.
Change-Id: If1af16048e4a4f69673c4294d846b36e77bbcb5d
CRs-Fixed: 2349236
There are currently multiple issues with sme_send_flush_logs_cmd_to_fw()
- Although this is an SME API the prototype is exposed in a CDS header
file
- The API is defined to take a mac context parameter which is unused
- Although the function returns QDF_STATUS, the only caller treats the
return value as an int errno
To address these issues
- Relocate the prototype to SME
- Remove the unused parameter
- Properly treat the return value as QDF_STATUS
Change-Id: Ia511565ee0b77148ee7cb1bf221e99a5b26ed446
CRs-Fixed: 2353530
The signature for sme_get_bss_transition_status() indicates it returns
an int errno, and that is what the only caller is currently expecting,
but in reality it returns QDF_STATUS. Since SME APIs are generally
expected to return QDF_STATUS, update the signature as well as the
caller to use QDF_STATUS.
Change-Id: I256fac3980ee55c6e797388df1ea7022fd9fe863
CRs-Fixed: 2353529
SME function sme_filter_scan_results() is unused, so remove it. Note
that the underlying CSR function, csr_scan_filter_results(), is still
used, invoked from other places within SME.
Change-Id: I19ad6bc45d196500ea77c89c50830224d1063aa4
CRs-Fixed: 2353528
A recent series of changes renamed many SME function parameters which
had "hal" in their names. Now clean up the documentation of those
parameters so that the description does not reference "hal".
Change-Id: I686143b1cf01cd68d133835180fcdc71e695f368
CRs-Fixed: 2353527
Function lim_process_del_ts_ind() is an obsolete remnant from a prior
version of the driver where Traffic Specification handling was
performed on the host. Since this is now handled in firmware, remove
the obsolete function.
Change-Id: I73155702fa0d034e3d7ffa81bef9bb1160a44ce5
CRs-Fixed: 2353427
LIM contains remnants of a HAL IND callback infrastructure including
lim_register_hal_ind_call_back() and lim_process_hal_ind_messages().
However nothing actually handles the WMA_REGISTER_PE_CALLBACK message
that is posted by lim_register_hal_ind_call_back(), so remove these
obsolete remnants of this infrastructure.
Change-Id: Ibd2ea16891a8752bfb4e473c4c1e74c8bb49e1d3
CRs-Fixed: 2353426
As part of CFG convergence, few INI parameters
were moved to under the CFG module but were
not cleaned up in the wlan_hdd_cfg files.
Cleanup the wlan_hdd_cfg files by removing
unused INI parameters
Change-Id: I8b90d11d613485d17fcfe7c4157001b7415f8cc8
CRs-Fixed: 2347108
In the fix Id1838939813e6cd2d52cee8720a1f4e0ca34329b, the condition to
check the number of args for the command unitTestCmd is set to greater
than equal to, which causes border cases to fail.
Fix the condition to pass correct number of arguments.
Change-Id: I4c6297fb112b4c60a4cb87ffaf0d3999ba798cd9
CRs-Fixed: 2353745
Currently event->vdev_id, recevied from the FW, is directly used
to refer to wma->interfaces without validating if the vdev_id is valid.
Add sanity check to make sure vdev_id is less than max_bssid before
using it.
Change-Id: I9fd97e430532c597a6c4b4e42b5dfaddba628ffb
CRs-Fixed: 2119442
In order to conform to the coding style rename parameters pMacAddress
and staId to function hdd_cfg_get_config().
Change-Id: Id4dcf625b4c8476631dccb6d9cbe2f6a63f74e4c
CRs-Fixed: 2352066
There is no iwpriv command to send STA/P2P_CLI connection information
to userspace. Implement "iwpriv wlan0 get_cxn_info" command
to send the information to userspace.
CRs-Fixed: 2342141
Change-Id: I39e461b62eb5263d7e185686ae42bdbbc8edec7a
Compiler threw error as -Werror=int-to-pointer-cast when casting
DMA address to void pointer.
Use %llx to print DMA address directly.
Change-Id: Icdcfcdd10400aa2fad64441aa863087cc1c3766e
CRs-Fixed: 2350605
In order to align with the Linux coding style replace all instances of
typedef tPESession with struct pe_session.
Change-Id: Id339ff06ca229506a82a9959d841f5c406a41b87
CRs-Fixed: 2352192
Rename struct sPESession to struct pe_session to align with the Linux
coding standard.
Change-Id: Ic14621ca23eac4a32468f2b53d249fc680fd7848
CRs-Fixed: 2352177