Driver re-generates the RSNXE with length 1, if the peer AP
supports only 1 octet of RSNXE. During this IE creation,
driver creates an empty RSNXE if none of the caps are set
by userspace in the first octet.
To fix this, do not re-generate the RSNXE if none of the caps
are set in first octet.
Change-Id: I6ca855cd907e49af62d9afe804b9f73eea97332e
CRs-Fixed: 3901178
In lim_send_probe_req_mgmt_frame(), validate the pe session
before accessing it.
Change-Id: I96ebfc62c04e2e7323017732b6208da83919346c
CRs-Fixed: 3880869
Currently, wakelock is taken for all unicast packets.
Do not take wakelock if packet is IP multicast packet.
Change-Id: If197cbb58d1414adedb1d29f9c2bd67be83e95b4
CRs-Fixed: 3807621
Currently, wakelock is being taken for all unicast packets.
Do not take wake lock if it is a ARP packet but not local to
host.
Change-Id: Iff5de2b83a4b12692b2f3b82d58e0fc400326529
CRs-Fixed: 3838502
When MLO STA connects to a specified buggy MLO AP with PMKID in assoc
req, it consistently fails and then retries with a downgraded SLO
candidate, which eventually succeeds. However, the customer expects MLMR
connection.
To address this, when select this buggy AP, we avoid generating
downgraded SLO/11AX candidates, use full SAE auth instead of existed
PMKSA, and don't add PMKID in RSNIE of assoc req when connect.
If the MLMR assoc fails, assoc rejection is sent to upper layer,
not retry with SLO/11AX candidates. Instead, wpa_supplicant/aosp will
clear the PMKSA upon receiving an association rejection, and subsequent
retries will use full SAE authentication, resulting in a successful MLMR
connection.
Change-Id: I85f39f52e4dae8393bbf559969710f35447b8c0c
CRs-Fixed: 3888073
Currently CONFIG_PLD_SNOC_ICNSS_FLAG and CONFIG_ICNSS2_HELIUM
configs are not enabled in Bazel GKI config file of Adrastea for
parrot66 target. As a result host is not calling relevant PLD
API for driver registration during load. As a result seeing
Adrastea driver loaded for Moselle device.
To address this issue, enable CONFIG_PLD_SNOC_ICNSS_FLAG and
CONFIG_ICNSS2_HELIUM configs.
Change-Id: I7419eb1f6339e134a85729f25301913adf02e484
CRs-Fixed: 3898745
In __hdd_set_multicast_list(), mc_list_request->count is of
uint8_t type but the value is getting assigned from to
int type which may lead to overflow.
Fix is to change mc_list_request->count to int type
In check_disable_channels(), driver is not taking lock before
using hdd_ctx->original_channels. There could be possibility that
other api may change the value at the same time.
As part of fix take lock before using hdd_ctx->original_channels in
check_disable_channels()
Change-Id: I2ed53ca136f48034489a6fc3210ff3dfb77b4632
CRs-Fixed: 3882266
Issue #1:
When Legacy sta does TDLS with one link of ML Sta and then
moves to the other link AP due to roaming or other reason, then
the same STA can try TDLS on the other link.
While processing TDLS add sta, peer create is done. If duplicate
peer exists, then WMA returns error and add sta failure status
is given to userspace. But the allocated peer idx and sta_ds
are not cleaned up resulting in TDLS peer delete sent on
wrong vdev during disconnect because the peer delete is done
for the pe_session for all the AID present in the aid bitmap
that is stored in the PE session.
In this failure scenario peer object already exists but sta_ds
is not present.
Add duplicate peer detection in lim while checking for sta_ds
also to avoid cleanup failure & add proper error handling
in lim_process_tdls_add_sta_rsp() for failure case.
Issue #2:
When Link Switch happens, as part of the disconnect sequence
the TDLS peers are not deleted sometimes. This is because, TDLS
module posts delete all peers msg to lim, but the disconnect
defers other msgs and pe_session is deleted. When TDLS msg gets
processed, it checks for pe_session to delete all the peers
based on the peer AID bitmap stored in pe_session.
Since PE session was deleted, the peers are not deleted and AID
was also cleared. So the TDLS peers where not deleted during
subsequent disconnections also.
Delete all TDLS peers directly when disconnect start indication
is received in IF MGR without posting msg, similar to south
bound disconnect & roaming cases.
Change-Id: I403fe0022289d4a5d5b45fdd37477b89ce50ec1e
CRs-Fixed: 3823658
When the DUT sends TDLS setup response directly to peer without
sending TDLS discovery, the peer can send the addba request
frame and it can be received before TDLS_CHANGE_STA,
TDLS_ENABLE_LINK is done from userspace. So all the capabilities
of the TDLS peer are not available till then. This causes the
addba buffer size to be lower and ultimately lower throughput is
observed on the TDLS link.
Drop the ADDBA request from TDLS peer if ENABLE_LINK is not done,
so that the peer will retry the addba frame later.
CRs-Fixed: 3828017
Change-Id: I3617d42db0dca88e9244565ba00a9740dc7be18b
If DUT enters good rssi region from bad rssi region,
FW sends good rssi value to host via roam_msg_info event
with message id WMI_ROAM_MSG_CONNECTED_IN_POOR_RSSI.
Fix is to store “next RSSI threshold” value in vdev mlme
and update same when GETROAMTRIGGER is queried.
Change-Id: Icbf6cf050faab7e6f5dd418c07f6e94462e5c50a
CRs-Fixed: 3876356
When create vdev, CC is US, max_allowed_bw was 160 MHz, so host set EHT
cap without 320 MHz supported to F/W.
Then APPs reset CC to Japan, max_allowed_bw became 320 MHz, but host
didn’t update eht cap with 320 MHz to F/W correctly especially when
STA disconnected. So F/W can’t roamed to AP with 320 MHz BW.
To fix it, if max_allowed_bw become 320 MHz after CC changed, update eht
cap with 320 MHz supported to F/W correctly, if sta disconnected, update
CAP IE too.
Change-Id: Ifda240e6edd7fe123bf4f29b875d7792c1232463
CRs-Fixed: 3877506
Some IOT EHT APs do not respond to ML-probes. However, STA
does not support pure-EHT connections, therefore downgrade
the STA connection to 11ax for non-MLO APs.
Similarly, after 3 initial attempts of unicast join probing,
send the rest of the join probes as broadcast.
Change-Id: I9471c5b211f9480877c9c2475eaef93071b82734
CRs-Fixed: 3846888
Currently while calculating skb length for usable
channel list host doesn't consider space needed for
each nla_nest_start. Hence sometime seeing failure
in filling skb because less memory gets allocated.
To address this issue, add NLMSG_HDRLEN size for each
nest.
Change-Id: If630a48bb30e491651c775f5ffdb957626fdbfd9
CRs-Fixed: 3877033
When MSDU fails for checksum validation, do not aggregate those
packets and make sure current flow is flushed. Since checksum
failure packet data is not trust worthy it is not advisable to
build aggregated skb on top of checksum failure packets.
Change-Id: I09d8c4aeb656e6b0b5d268a60d72147534f2a2ab
CRs-Fixed: 3805053
1. Check if STA is present with MLD address,
this can happen if STA is non ML, so MLD address will be used as
address for connected STA.
2. Check if STA present with same MLD address as current SA,
this can happen if SAP is ML, so the MLD address will be
used as SA address for connected STA.
Change-Id: Id3f64a8937c257ea503a0e847f16e2b251b4ef81
CRs-Fixed: 3871110
Currently, stale cdp_soc member in dp_ctx is being accessed
when interface is being added after wlan is detached during
idle shutdown.
To fix this, set cdp_soc NULL in dp_ctx when wlan is detaching.
Change-Id: I922f92cb7ba22bf84f39a44b6d78cd4b36bea058
CRs-Fixed: 3872183
This change reverts the hard-coded downgrade of non-ML
APs to 11ax from I9471c5b211f9480877c9c2475eaef93071b82734.
Instead, do not send ML-probe or ML IE in assoc request, if
the AP does not support MLO. This keeps the connection as
11be.
Also, cleanup the unused variables in bss description and
keep it 4-bytes aligned.
Change-Id: I1aa681ecce04615f88d563c07d9c7e2ef10c1b92
CRs-Fixed: 3857042
In the api cm_roam_mgmt_frame_event(), the received frame info
is differentiated between legacy and MLO AP on the basis whether
the current vdev is a ML vdev or not. This results in undesired
logging of result during MLo to legacy AP roam failure case as
the vdev is still the ML vdev as it is maintaining the current
connection with the ML AP while the frame info data received
from FW is for legacy AP.
Add a band check when processing the roam frame info data
received from the FW as band info in roam frame data follows
the following format:
1. 0: if the FW tried to roam to a legacy AP
2. when tried to a MLO AP, it will represent the link it forms
association. The format as follows:
* BIT 0: When it is associated on 2 GHz link
* BIT 1: When it is associated on 5 GHz link
* BIT 2: when it is associated on 6 GHz link
Change-Id: I7854ef368776ba11d4cdc8aca28ac86c8c2f4efa
CRs-Fixed: 3866223
Currently, host driver updates the corresponding
info(6 GHz band disable/enable) to regulatory when the DRIVER
cmd SET_FCC_CHANNEL is received. It also updates the complete
RSO_CONFIG to firmware as band has changed. Firmware roaming
state machine gets restarted as all RSO params got updated.
But there is no need to update the complete RSO config as only
band has changed. This can avoid firmware roaming restart.
So, send only CHAN_LIST to fw when SET_FCC_CHANNEL command is
received.
Change-Id: I209ba1f50ec1e08767ab7384cc266864d412f523
CRs-Fixed: 3871985
scenario:
(1) P2P GO interface is getting down, dp_intf is deleted.
(2) dp_vdev has not been freed as it's waiting peer_unmap
for self bss peer.
(3) once host received peer_unmap, bss peer get freed and
trigger dp_vdev deleting, the callback vdev->vdev_del_notify
will try to access dp_link->dp_intf->dp_ctx, invalid dp_intf
is used.
Get dp_ctx by dp_get_context() as dp_intf might be invalid already
when dp_vdev deleting happen.
Change-Id: I8c36b124d11f7fd8acaeb066e08865092ad02ab2
CRs-Fixed: 3866027
If SAP start on 6 GHz, client associate request will not have HT
capability, so sta_ds->ch_width update too late in function
lim_update_sta_ds, but it is used by lim_populate_matching_rate_set
and lim_populate_eht_mcs_set, it lead to update 20 MHz eht mcs set
and caused other bandwidth eht mcs set not update and keep 0 finally
pass it to target. It will impact TX performance a lot.
Move forward functions to update sta_ds->ch_width for 6 GHz.
And update a typo of bw_160_rx_max_nss_for_mcs_10_and_11, it write
as tx.
Change-Id: I1c1cbe1daf8bfdf163d73c7aba5e7335e99e8157
CRs-Fixed: 3863495
race condiction may happen between thread left nbufs and NAPI RX nbuf.
Change is to make sure thread queue is clean before remove bh protect.
Change-Id: Icbc0d9b14cb7a1dd87f5b42f3e658531ed5bc3d9
CRs-Fixed: 3864304
currently if bss_max_idle_period is greater than default configured
value of sta_keep_alive then same value will be sent to FW. If any
AP sets bss_max_idle_period to greater than sta_keep_alive then reset
is not done on vdev stop due to which same value will be set for
new connection.
Fix is to not to send bss_max_idle_period as time period limit because
same value is updated in bss_max_idle_period of interface. So, default
configured value of sta_keep_alive_timer is required to be passed for
threshold validation. value reset is required once vdev stop happens
to avoid same keep alive even if bss_max_idle_period is not advertised
by AP.
CRs-Fixed: 3861815
Change-Id: I457a436a4c8a561600e93b3d5deaa0399fbd2c7d
Add link id to connect request for partner link roaming to
match with scan entry's self link id to avoid selecting
a candidate with same BSSID and MLD but different link id.
Change-Id: I4b903f2e64a9eb4cc9f197577b2b11ea657aa2b2
CRs-Fixed: 3843561