The driver currently defines two different data structures to hold
Gateway Update parameters:
- legacy struct gateway_param_update_req
- unified WMI struct gateway_update_req_param
To align with the converged software architecture remove the legacy
definition and exclusively use the unified WMI definition.
Change-Id: Icc56c4d83808e3661593d2e4735533442d48eb7e
CRs-Fixed: 2404089
Some ini descriptions are different to common, and some of them
include wrong information, so correct them and use unified form.
Change-Id: I36348fb26a03cab254fd309d792125b8a21ad02f
CRs-Fixed: 2402446
Change I84b28aa734b570f0a7834fbac7d27e9c66b8b026 ("qcacmn: Replace
session_id in gateway_update_req_param") is renaming the legacy
identifier session_id to vdev_id, so concurrently change the usage in
the legacy project.
Change-Id: I2d24a54e80931a944580e968a841679d2da7b2a1
CRs-Fixed: 2404013
During TDLS componentization the legacy typedef tSirTdlsSendMgmtReq
was replicated, creating struct tdls_send_mgmt_request. Unfortunately
this left the driver with two different data structures which serve
the same purpose. Not only is this pointless, but due to the way in
which these structures are used there is an implicit requirement that
they be exactly identical. This approach is very fragile. To align
with the converged software architecture and to improve code
maintainability exclusively use the TDLS component struct.
Note that this struct must be promoted to be a public struct since it
is now accessed from outside the component.
Change-Id: I7d304d3d211101c7227ea621f307f91ff68a5753
CRs-Fixed: 2400767
As part of the original TDLS componentization the legacy typedef
tTdlsPeerStateParams was replicated as qca-wifi-host-cmn struct
tdls_peer_state_params. Subsequently when the TDLS component was
relocated back to qcacld-3.0 this struct was replicated again as
struct tdls_peer_update_state in the qcacld-3.0 TDLS public structs.
Unfortunately this left the driver with three different data
structures which serve the same purpose. Not only is this pointless,
but due to the way in which these structures are used there is an
implicit requirement that they be exactly identical. Further
complicating matters is the fact that these three structures each have
embedded structs which are also replicated. This approach is very
fragile since any change to any of these structs must be replicated
across the entire set. To align with the converged software
architecture and to improve code maintainability exclusively use the
TDLS public structs.
Change-Id: Id6d44a1bc0fe530957db3d9f9ab948e2af775433
CRs-Fixed: 2400766
Currently hdd_send_peer_status_ind_to_app() uses the legacy term
sessionId to reference a virtual device. To align with converged
naming rename this to vdev_id.
Change-Id: Iada1a4bd86bbe444bc899bbaa1e05daccc552904
CRs-Fixed: 2404161
Currently struct pe_session uses the legacy term smeSessionId. To
align with converged naming it is desirable to change this to vdev_id,
but due to the large number of places where smeSessionId is used it
will be difficult to modify all occurences at once. In order to allow
changes to "trickle in" replace the smeSessionId field with a union
that contains both a smeSessionId and a vdev_id field. This will allow
vdev_id and smeSessionId to both be used to access the same data item.
Subsequent changes can then replace references to smeSessionId with
vdev_id, and then once all references have been converted, replace the
union with a single vdev_id field.
Change-Id: Idfcf3edc801b5c6937b40bb24ab1c291cb7f415e
CRs-Fixed: 2404159
Currently struct csr_roam_session uses the legacy term sessionId. To
align with converged naming it is desirable to change this to vdev_id,
but due to the large number of places where sessionId is used it will
be difficult to modify all occurences at once. In order to allow
changes to "trickle in" replace the sessionId field with a union that
contains both a sessionId and a vdev_id field. This will allow vdev_id
and sessionId to both be used to access the same data item.
Subsequent changes can then replace references to sessionId with
vdev_id, and then once all references have been converted, replace the
union with a single vdev_id field.
Change-Id: I67877b9a407bb07ec9f6516a765ee511c9c933e9
CRs-Fixed: 2404157
To address kernel control flow integrity (CFI) issues related to type
mismatch, correct the input argument type for pe_handle_mgmt_frame().
Change-Id: I2617c55655ba0303b89580e58f1bc2ea2efcefb9
CRs-Fixed: 2402966
As part of DSC integration, use vdev op start/stop for appropriate
IOCTL handlers.
Change-Id: Ic2c96d9447f1a74733c3ad1dcc773f733fac10e6
CRs-Fixed: 2402144
There are several instances of incorrectly using EOK with QDF_STATUS.
Address all infractions in PMO.
Change-Id: I105498281ca90ff56465737041d204aeebaa86ec
CRs-Fixed: 2403940
A common pattern in WLAN to panic the driver is to log the reason and
then unconditionally panic. QDF_DEBUG_PANIC() takes a reason string to
help make the reason for the panic more obvious, but it is not always
used. Ensure all callers of QDF_DEBUG_PANIC() provide a reason string.
Change-Id: I3d23a8980adaeaa1a9798a4a6b0fba1f36eb52ad
CRs-Fixed: 2403829
Driver validates the authentication context and allows
connection with SAE AKM in either of the below cases,
1. Successful SAE authentication
2. Open authentication with a valid PMKID
Driver rejects association if none of these are met. Do not
create preauth node while sending assoc reject in these cases
as there is no need to maintain a preauth context. Stations
initiate a fresh SAE authentication in both of these cases and
a new node will be created.
Change-Id: Ic446add47358d01bf4b316aa9ac5bf86c33bf812
CRs-Fixed: 2396379
PMKID/PMKs present in PMK cache are no more valid after softap
stop/restart. Flush the cache when the stop_ap() is called.
Change-Id: I1772bc7e36e6c0ef4f65ed49544fcae0fc11ee70
CRs-Fixed: 2396375
SAE authentication is offloaded to hostapd and hostapd sends
authentication status to driver after the authentication
completion. But hostapd sends external authentication (e.g., SAE)
status after sending out the final auth frame(e.g., confirm
response in SAE). Driver may receive association request from
station before getting external auth status. Defer the
initialization of PE/SME entries corresponding to that station
till status is received from hostapd. Once status is received
from hostapd, PE entries can be initialized and send
assoc indication to SME.
Change-Id: Ice95519f2bf25d483cc164182b3f3be87f59884a
CRs-Fixed: 2396373
Split processing of assoc request frame and initialization of
PE/SME data structrures. This is needed to defer the initialization
of PE/SME entries on any external status. SAE authentication status
from hostapd is one such external status.
Change-Id: I9d7ced050441920505f0e12ab6b3ea9c672fe822
CRs-Fixed: 2396372
Connection with SAE AKM is allowed with
1. SAE authentication
2. Open authentication with valid PMKID
If the association request is with an SAE AKM and
open authentication, validate the PMKID and send
association response accordingly.
Change-Id: I0fb966af97b6df63bac2e1af2e1fe6ef6b289888
CRs-Fixed: 2396370
hostapd/wpa_supplicant sends PMKID in EXTERNAL_AUTH command.
Extract and cache the same.
Change-Id: If490c3fb7e0119910e73dffc8701434752aabd6c
CRs-Fixed: 2396367
An ancestor of the current driver used mailboxes for communication
between SME and LIM, and serialization/deserialization routines were
used to encode and decode the mailbox messages. This mechanism is no
longer in use, but there are remnants still present.
One such remnant is in lim_send_sme_deauth_ntf(). The logic for
creating the Deauth Indication uses a combination of direct structure
writes and serialized buffer writes. Bring this logic up to date by
removing all serialized buffer writes and exclusively use direct
structure writes.
Change-Id: I2d300e9a1f3b859b98455eb838f2bc9da93731dd
CRs-Fixed: 2402464
An ancestor of the current driver used mailboxes for communication
between SME and LIM, and serialization/deserialization routines were
used to encode and decode the mailbox messages. This mechanism is no
longer in use, but there are remnants still present.
One such remnant is the use of lim_get_session_info(). This API is
designed to extract the Session ID and the Transaction ID from a
serialized message. However this API is actually being used on
non-serialized messages, and as a result of struct padding by the
compiler it would never return a correct Transaction ID. Since we
should now never be sending serialized messages, remove the use of
lim_get_session_info() and instead directly access the elements in the
underlying structs.
Change-Id: Iadb548c36396226b14b904d3bd952c5b4260ff3b
CRs-Fixed: 2402359
Hostapd sends SAE authentication status with the NL command
NL80211_CMD_EXTERNAL_AUTH. Extract status and peer mac address
from the command data and set mlmState in preauth node accordingly.
Change-Id: If507a2f56c031ae1885a11d5f7cbe31a18aa8821
CRs-Fixed: 2396366
Add preauth node and mark state as eLIM_MLM_WT_SAE_AUTH_STATE
(waiting for SAE authentication) when SAE auth frame is received
from peer. State can be moved to authenticated when hostapd sends
SAE authentication status as success.
Change-Id: I7e1c326d54465d2bae86a9b0de5152196a9ce359
CRs-Fixed: 2396382
hostapd handles SAE authentication frames sent by a station.
Set the flag RXMGMT_FLAG_EXTERNAL_AUTH and forward them
to hostapd.
Change-Id: Ic1d6a560430307b899700f98d90a7dacfe741071
CRs-Fixed: 2396360
Process SAE authentication frames in SAP mode as well.
These frames will be forwarded to userspace for offloaded
SAE authentication.
Change-Id: Id385cd9394160f2fae1bee7e996fd879e0109235
CRs-Fixed: 2396359
hostapd/wpa_supplicant sends authentication frames through mgmt_tx
interface but may not fill sequence control. Fill the same.
Change-Id: I568b72590ce4280eaf9540dc07b38f87f10f019d
CRs-Fixed: 2396358
There are several instances of incorrectly using EOK with QDF_STATUS.
Address all infractions in WMA.
Change-Id: I1bc97c2ed8d4d9600dcbc07f57fccfe42d75d27e
CRs-Fixed: 2403943
When userspace disconnect is received, wlan_hdd_disconnect()
checks if roaming is in progress and waits for 4 secs if roaming
is in progress. The roaming_in_progress flag is set after
CSR receives SIR_ROAMING_START and is unset after CSR receives
SIR_ROAM_SYNCH_NAPI_OFF. Since SIR_ROAM_SYNCH_COMPLETE is
received after SIR_ROAM_SYNCH_NAPI_OFF and all the roaming state
machine activities like filling connection info, bss description
happens after SIR_ROAM_SYNCH_COMPLETE is received. So there
exists a race window between SIR_ROAM_SYNCH_NAPI_OFF and
SIR_ROAM_SYNCH_COMPLETE when the wlan_hdd_disconnect() could
proceed to free the session->pCurRoamProfile and
csr_roam_prepare_bss_config() tries to acces this when
SIR_ROAM_SYNCH_COMPLETE or SIR_ROAM_SYNCH_PROPOGATE is received.
This could result in null pointer dereference of pCurRoamProfile.
Call hdd_set_roaming_in_progress(false) in
hdd_sme_roam_callback() when SIR_ROAM_SYNCH_COMPLETE is received
Change-Id: Ic350d55e857ad950a0e630b07d75a5b1b572a75c
CRs-Fixed: 2399474