In case where WDS ast entry is added and next hop
peer is deleted even before PEER map for ast entry
is received free the AST entry
Change-Id: Id65a5649665588e98f85fd0f363bc7d114c56828
CRs-Fixed: 3650748
Pine and Spruce supports 80P80 mode of operation in 5 GHz band
and hence opclass 130 is sent to the user application in
MESH_MAP_OPCLASS_FOR_CUR_HWMODE NL80211 command.
However, these chips support 80P80 mode of operation
only on CFI 138 and 155, but to the application all the 80 MHz
channels in the 5 GHz band are advertised as supported.
This causes the application's channel selection algorithm to fail.
The existing API reg_is_chan_supported() can determine if the input
frequency is 80P80 capable only if cfreq2 of the 80P80 channel is
provided and in reg_get_cfis_from_opclassmap_for_non6g() API, it is not
possible to determine all combinations of cfreq2 for the given primary
frequency. Hence, a call to is_freq_80p80_supported() is made to
determine if any 80P80 combination is possible for the given input
frequency.
Also, 6 GHz channels do not support 80P80 mode of operation.
reg_is_cfi_supported() does a lot of computation to find out that
80P80 is not supported. Hence, if the opclass entry
is 6 GHz 80P80, set 80p80_supported as false.
Hence, send only the supported 80P80 CFIs in the
supported channel list array in MESH_MAP_OPCLASS_FOR_CUR_HWMODE command.
CRs-Fixed: 3627501
Change-Id: Ib5d3e872b34b8df81b8466e877b10f2fd4e68e40
Modify return values in wlan_crypto_setkey to
reflect the exact error condition.
Change-Id: I21729bf999a6561d6282bb456451e1e1a0748609
CRs-Fixed: 3629285
Currently for any assoc failure the number of links part of the
association is reduced and retried with less number of partner links.
If the failure is due to PMKID retry to the same with the same number
of partner links instead of downgrading the links.
Change-Id: I65320d92b4b77d2ccfb20a05fbab2aa8377bb6fa
CRs-Fixed: 3653834
Host driver moves VDEV SM to IDLE_DUE_TO_LINK_SWITCH any link
switch failure to handle events such as DISCONNECT_REQ which
gets dropped if the VDEV is in INIT state.
Disconnect request on any ML VDEV initiates disconnect on partner
VDEVs as well if they are either in connected or connecting state
but not if in IDLE_DUE_TO_LINK_SWITCH state. This leaves the VDEV
in this new IDLE_DUE_TO_LINK_SWITCH state instead of in INIT state.
Include VDEVs which are in IDLE_DUE_TO_LINK_SWITCH during partner
VDEV disconnect so that VDEV SM moves to INIT.
Change-Id: I6e715c0bb94562be866e902009b3bfd7d2c60e8a
CRs-Fixed: 3659110
Currently 'reg_compute_pdev_current_chan_list' is called
twice as shown below, when 'wmi_reg_chan_list_cc_ext_event'
from FW is handled.
LIST_CC_EXT event:
reg_compute_pdev_current_chan_list() [ 1st call]
reg_send_scheduler_msg_nb()/reg_send_scheduler_msg_sb()
wlan_reg_decide_6g_ap_pwr_type()
reg_decide_6g_ap_pwr_type()
reg_set_ap_pwr_and_update_chan_list()
reg_compute_pdev_current_chan_list() [2nd call]
To solve this, do not call 'wlan_reg_decide_6g_ap_pwr_type'
from north bound or south bound callbacks.
However, the above fix creates another problem because the function
'reg_decide_6g_ap_pwr_type', in addition to calling
'reg_compute_pdev_current_chan_list', also sets the current 6 GHz
power type for the pdev. A proper place to set the 6 GHz
power type is in function 'reg_set_ap_pwr_type',
which currently does not set 6 GHz power type correctly.
Hence remove 'wlan_reg_decide_6g_ap_pwr_type' and
'reg_decide_6g_ap_pwr_type' functions and modify
'reg_set_ap_pwr_type' to set the best 6 GHz power type
based on the 6 GHz regulatory rules.
CRs-Fixed: 3609342
Change-Id: I1bdfd71245552a51fd5123931a7a6dcc16f2a942
Ring IPA TX doorbell with HW HP value to avoid out-of-sync
scenarios between WLAN and IPA after IPA pipes are disabled
and then re-enabled.
CRs-Fixed: 3479426
Change-Id: Ia88c0228759e241722fe31fd1a252e70484684e9
If diag events comes too frequently, it's hard to enter
runtime suspend, which does not make sense, as diag events
here are firmware debug logs.
To fix it, do not mark rtpm last busy for CE7 if the feature
WLAN_FEATURE_WMI_DIAG_OVER_CE7 is enabled.
Change-Id: I424eb345546a755c1f6995d1f8eeac71fa6c4615
CRs-Fixed: 3614793
After direct link WFDS QMI server is down, host driver
unmaps the IPCC MSI address. There is a possibility
where FW can still enqueue entries to direct link CE
resulting in a SMMU fault when CE HW raises interrupt
after copy operation.
Fix is to add support for disabling MSI for direct link
CEs and disable MSI prior to MSI address unmap.
CRs-Fixed: 3657150
Change-Id: I38ce3bcc143743884d5c464eae74c390bf32eab6
Adds qdf_ffs wrapper API for ffs(x) API.
Update the ring id min and max value for 'dp_mlo_reo_rings_map' ini.
Change-Id: I4ee202350dd63854fe75a20b1eab2173341b70ed
CRs-Fixed: 3655539
Currently the local_link_id is assigned to each
link peer, during peer setup, with an incremental
number, based on the number of peer setup being
done for the link peers corresponding to the same MLD.
The above logic does not handle the link switch case,
where any particular link peer can be created and deleted
multiple times, thereby leading to 'n' number of peer
setups, each assigning an incremental number as the
local_link_id to the link peer. Due to this the local_link_id
value will exceed the MAX_MLO_LINKS ceiling value, and
when this local_link_id is used to set the frequency band
it leads to an out-of-bound array access.
In order to fix the above mentioned scenario, maintain
a mapping of link peer mac address to local_link_id inside
the txrx_peer (common for all link peers) and use this mapping
table to get the local_link_id. This will make sure that during
any link re-purpose, the link peer being setup will regain the
local_link_id which it was assigned during the first time it was
setup.
Change-Id: Ia78413efe328c81bab74b3a048214d3807b6c6c4
CRs-Fixed: 3658539
Ping fails if the AP VAP is not a part of
bridge as it missed the DA Peer checks
Fix is to move the check of MLO dev ctx
after DA peer validation
Change-Id: I3386bd6a4c9a3574893bc836278d9fb02254645b
CRs-Fixed: 3653128
Host can disable AST indication from FW for WDS peer.
In that case there will be a mismatch in AST entries deleted
by host and by FW. Add check to print mismatch when AST
indication is enabled.
Change-Id: If0fb6dce58a95403a0d67db8ca8cf94946455002
CRs-Fixed: 3654166
Issue happens during following scenario:
1. Connecting to ML AP1 (with SSID1) and disconnect.
2. Connecting to ML AP2 (with SSID2), as part of that vdev
is destroyed and created but stored keys for AP1 are not reset.
3. Disconnect for ML AP2.
4. Connect to ML AP1.
Now host driver sends stored keys FW instead of the newly
generated keys sent by supplicant.
To fix this during ML dev initialization
clear the stored keys.
CRs-Fixed: 3649214
Change-Id: Ibffeb8b3108bf353e9140cbc901f99f08d9b0449
Provide support for bangradar with Frequency hopping radar type
as one of the parameters.
Add the parameter as part of the packed structure to be sent to FW.
Change-Id: I1c366c8f1c2033527bbd74f0ae6219225cafc4ed
CRs-Fixed: 3641574
Currently when processing the WBM error entries, if there
is an nbuf sanity check failure, i.e. paddr in the srng
entry does not match the paddr from the rx_descriptor, then
the rx_desc flag "unmapped" is being set, without the nbuf
being unmapped and the rx_desc is getting added to the freelist.
This results in the rx_descriptor being replenished with a
new buffer, and the existing nbuf is leaked (without being unmapped).
In order to fix this issue, do not modify any fields of the
rx_desc, since it will be moved to err_state, due to the
sanity failure. Also this rx_desc will not be added to the
freelist, since it should not be replenished due to err_state.
Change-Id: I394cbf884488e75423ada2ad69087c5280bc0ab0
CRs-Fixed: 3656509
If "override_ht20_40_24g" ini is set, the host driver disables
the HT40/HE40 caps for 2.4 GHz after connection via SET IE. The
firmware uses this for roam. However, if reassoc comes from userspace
with the HT40 cap different from the initial connect, then host
does not update the IEs based on new cap. This leads to mismatch
between user configuration and firmware roam.
To fix this, modify and send the HE40/HT40 caps via SET IE for
every connect request. Reset it after disconnection to the default
self cap.
Change-Id: I3de73d2ff2e5ebbbda530c29371edc0295ec608f
CRs-Fixed: 3655893
For MCC, dp_vdev_detach_wifi3->dp_vdev_id_map_tbl_remove
will happen before mlo dev ctxt detach from vdev destroy,
which will cause it access dp vdev with null pointer issue
(use-after-free).
So move the mlo dev context detach out from the function
wlan_objmgr_vdev_obj_destroy(), and will detach the mlo
dev context from hdd_vdev_destroy_event_wait for MCC and
meanwhile not impact win logic.
Change-Id: Id07db64a27cd7032ea45fb4661b54edb662010c7
CRs-Fixed: 3621883
Mark the packet buffer to indicate that it was the
packet which woke-up the system from suspend state.
Change-Id: Id4235461f90feef945f518e5ac01c28f35883285
CRs-Fixed: 3654812
Currently if txrx_peer is NULL in Tx completion or rx process
band update will not happen, which will result in invalid band
issue during connectivity logging.
To fix the issue maintain local link id and use link id to
find link peer and update band information in nbuf cb
based on peer frequency.
Change-Id: Ia5a6001fbc167a497660dc7be39a3e641dd28896
CRs-Fixed: 3654696
Make sure that the global dp tx desc pools are cleaned
up only once during MLO umac reset.
Change-Id: Id6e0ac6532b11ffb9ea190b6ab4d481fb486d853
CRs-Fixed: 3647660
When there are more than one audio transport mediums
are available, there is a possibility to switch the
audio transport medium from one medium to another
medium.
To provide this support to switch the audio transport
medium, and to indicate the status of the bearer
switch to fw, add WMI interface changes.
Change-Id: Ic9a2406e3be339b644ff8918a2a0f95705b0620b
CRs-Fixed: 3653960
Since sta don't send probe req to MBSSID AP, channel info in
link_info not update.
But station receive beacon and update info into scan_entry,
so when connect done, we can update link channel info from
scan_entry by bssid and freq.
Change-Id: Ie7058cf055847b709823a7ade89e074f718f03d6
CRs-Fixed: 3625825
Currently SW writes a magic number in the tx completion
ring descriptor after reaping from the ring. This magic
number is used to determine, if the HP of the srng has been
updated without the contents of the ring descriptor has been
written.
There were cases of such stale entries observed and as a SW
workaround, add a logic to wait for a specific timeout for
the contents of the ring descriptor to be updated before
moving on to process subsequent ring entries.
Change-Id: I17c0dc0ac55ca81dee3c0825ce934d60ccb1a720
CRs-Fixed: 3648443
One instance of an issue was observed, where there's an
SMMU fault due to an access to paddr, which has been unmapped,
but is shown as active/mapped from the rx_desc data.
Save the paddr of the previous buffer attach to the rx
descriptor to aid in debug. This is to confirm if the
paddr has got updated after the last replenish.
Change-Id: Ib8318883b273be8b722cefec16d18b45daf679a7
CRs-Fixed: 3642902
Add initialization value for bss_mld_addr in function
cm_check_and_prepare_roam_req().
Change-Id: Ic9ac9fd6f94343ff1bab8b45bac81e889a9dfe1f
CRs-Fixed: 3643137
Scenario:
STA connected to AP and another monitor interface is up,
monitor status ring filter will be configured. If TLV TAG
WIFIPHYRX_GENERIC_EHT_SIG_E is reported in monitor status
buffer, each single status buffer processing will add 1 to
ppdu_info->rx_status.num_eht_user_info_valid, but it never be
reset to 0 in this case. once > 4 times this kind of monitor
status buffer is processed, num_eht_user_info_valid will be
OOB of array ppdu_info->rx_status.eht_user_info.
Reset PPDU RX status when finished processing PPDU RX status.
Change-Id: Ie58e45b3a39b7b88b0f72df2ac3076ddf659147b
CRs-Fixed: 3649604
Issue is: During roaming when tx completion status for M2/M4 frames
are received before peer_id mapping is done, opmode is left to its
default value QDF_MAX_NO_OF_MODE. Because of this opmode value
connectivity log is skipped.
Fix is: In tx completion status path, if peer is NULL then derive
the vdev from the tx descriptor vdev_id, extract and set op_mode.
Change-Id: I4a15b01e792bf26276f529e64c67b0ba3ea5c9ac
CRs-Fixed: 3646119
Currently host is directly acting on the link_id for which link switch
is requested, if the link is already active on the other vdev if the
link switch is not sanitized resulting in firmware ending up
in bad state.
Reject the link switch if the link is already active on different vdev.
CRs-Fixed: 3635416
Change-Id: Idf445dcc487540c4faac7cf98abf7c214512d750
Currently during error process band is updated if txrx_peer is valid.
but in current logic txrx_peer was retrieved later which will always
result in condition failure and will cause band not to be update.
To fix the issue move getting txrx_peer part before band update.
Change-Id: I3ebec6d695e25c2a19304e11ec780215a26dd016
CRs-Fixed: 3648441
Remove PCI driver dependencies and move under Kernel flag
CONFIG_PCI for 16M Profile.
Change-Id: I46c060a8a6efca8b0b6866d54916a223082f46ee
CRs-Fixed: 3635697
In case of outdoor NULL response, currently the api
'reg_set_ap_pwr_and_update_chan_list' bypasses setting power
type when ap_pwr_type is REG_CURRENT_MAX_AP_TYPE
in order to update the current channel list to the upper layers.
Due to this, selecting best power mode
algorithm fails during the invalid case scenario (allowing
to operate in channel which is not in Outdoor SP channel list).
To fix this problem, remove check which bypasses setting power type in
the api reg_set_ap_pwr_and_update_chan_list.
This removal needs an additional change which will handle the updating of
current channel list, which is done in another change. Refer to
change Change-Id: I176a432a031af0170e8bc7dec9b417828595fd14
for more details.
Change-Id: I80e3a0d12afa175d30fa945fb83aa8b247bf3889
CRs-Fixed: 3641754
Currently, mlo_get_assoc_rsp provides assoc rsp pointer
every time even in case of reassociation where assoc rsp
is not valid which can cause issue in link_switch as assoc
rsp provided might be invalid.
Fix is to provide reassoc rsp if present in case assoc
rsp is not present.
Change-Id: I91715a39f77159b68eee5cc97dc291a09e21a897
CRs-Fixed: 3622768
In the case of MLO sta connection existing API won't be able
to find the mld peer resulting a traffic failure.
Use wrapper API to fetch the peer in multipass TX processing
which will search for both legacy and mld peer.
Change-Id: I161502aba224806914e54a3a04a06b75e52d65bb
CRs-Fixed: 3650259
Update the fixed param for UTF WMI command and event id.
Update the pdev_id in UTF command id.
Change-Id: I67d1e5698a31acd630a4c4f60410dff454999c5d
CRs-Fixed: 3648165
New API, reg_get_next_higher_bandwidth added to
get next higher bandwdith for the given channel width.
Add boundary check for channel width in
API get_next_lower_bandwith.
Change-Id: Icd250d0c518eda9749b25778427b1bffac66ad56
CRs-Fixed: 3636188