FW sends vdev stats on vdev down, current host
implementation does not process this event as host is
only processing the stats events for which stats are
requested.
On vdev down FW sends the last available vdev stats and
based on that host updates it's RSSI on disconnect.
With CP stats infrastructure host is not processing
this event and is not updating rssi on disconnect.
To address above issue add a logic to process all the
vdev stats event received by host.
Change-Id: I9a5c32d061562cd3e3741cd9fe4a69f3278e7a98
CRs-Fixed: 2497104
Smart monitor uses HOSTAP type and no subtype currently.
Also vdev_up is not sent for smart monitor vap. Therefore
target will not enable rx_unicast for this vap and in dfs
channel we dont receive pkts. To differentiate between
regular Host ap and smart monitor vap for target to enable
rx_unicast we send new subtype.
Change-Id: I6c82c152d75eefb608cd80279e60ce211e17b709
Crs-fixed: 2491087
For multi-radio SoCs, wmi handle is maintained per pdev to map to
separate copy engine used for sending WMI commands to taget. Add support
to send wifi position related WMI to send it per pdev.
Change-Id: I300be2bbfd77cb9390fef37b5b02a002284976e0
CRs-Fixed: 2495277
Add support to print vdev req/resp string
on target_if timer start conflict and timer
timeout handler
Change-Id: I0116c03089f4ab80623596bb9e8d0268efb0dd87
CRs-Fixed: 2495018
During radar detection, with subchannel marking enabled, when the mode
is HT160, the secondary segment center frequency is determined by
adding +40 offset to the 160 band center frequency.
Consider the case where AP comes in channel 116 HT160. In this case,
the secondary segment center frequency is 5530 which is -40 to the
160 band center frequency (5570).
Primary segment center frequency is 5610 (+40 offset).
Due to this wrong offset addition, the channels added as part of
radar detection are in the wrong segment.
Find proper secondary segment center frequency used for radar
detection.
Change-Id: Icb527fad4fd1317acf8c2b9c010a8ac6a765f985
CRs-Fixed: 2475720
Replace mlme void * data members having different types across
different drivers with specific type.
Change-Id: I4343800e836c8ae0996c19b39a420b314e465a75
CRs-Fixed: 2477457
Replace cp_stats void * data members having different types
across different drivers with specific type
Change-Id: I5497df358e495aaf187097b093622b34ab637f42
CRs-Fixed: 2477447
NS offload is not working for NaN mode because BSS peer is not set.
Hence, set the BSS peer for NaN mode as it is done for SAP/P2P GO.
Change-Id: I4c8fbd502cb1d90dd235ae35d0a85a9981e68773
CRs-Fixed: 2494515
Currently, mgmt_txrx_get_action_frm_subtype does not handle
ACTION_CATEGORY_FST. In case action_category is
ACTION_CATEGORY_FST, mgmt_txrx_get_action_frm_subtype
returns MGMT_FRM_UNSPECIFIED due to default handling. Function
tgt_mgmt_txrx_rx_frame_handler returns QDF_STATUS_E_FAILURE
on receiving MGMT_FRM_UNSPECIFIED frame type and drops mgmt
frames.
Fix is to add support for ACTION_CATEGORY_FST in
mgmt_txrx_get_action_frm_subtype to avoid drop of FST mgmt
frames. Add new management frames
MGMT_ACTION_FST_SETUP_REQ, MGMT_ACTION_FST_SETUP_RSP,
MGMT_ACTION_FST_TEAR_DOWN, MGMT_ACTION_FST_ACK_REQ,
MGMT_ACTION_FST_ACK_RSP, MGMT_ACTION_FST_ON_CHANNEL_TUNNEL.
Add handling for ACTION_CATEGORY_FST in
mgmt_txrx_get_action_frm_subtype, Find fst frame subtype and
return fst frame subtype from mgmt_get_fst_action_subtype
instead of returning MGMT_FRM_UNSPECIFIED in case FST
action_category is received.
Change-Id: I67b7c14f03cab252b13b677a2c9f20a327be24bd
CRs-Fixed: 2495273
Currently peer_adv_stats is present in peer_cp_stats structure
which is shared between WIN and MCL and only common features
should be part of this structure as peer_cp_stats is an
abstraction structure for WIN and MCL for cp stats component.
Since peer_adv_stats is MCL specific structure, this should be
moved to peer_mc_cp_stats which is MCL specific feature for
cp stats component.
Change-Id: Id46cdd153aa6b8137c24fdca30365221d2646d3f
CRs-Fixed: 2480147
Currently ext scan is enabled by default in driver which
is increasing driver size significantly and ext scan
is not getting used anymore.
Disable ext scan with feature flag CONFIG_FEATURE_WLAN_EXTSCAN
to reduce driver size and fix related compilation issue.
Change-Id: Id2344e6ed21caefa459773bb6e891ffb1e70cb92
CRs-Fixed: 2491455
Send proper minimum and maximum agile preCAC timeout values to the target
as part of starting agile DFS detector. Add a common agile preCAC
parameter structure with the timeout values, channel and width fields
which are to be sent as part of configuring agile detector.
Change-Id: If5f5b179aa12a6c549cb9a4402aa10e957129d78
CRs-Fixed: 2482929
For a 2.4 GHz pdev, dfs object is NULL and hence 'dfs is NULL' print is
in tgt_dfs_set_agile_precac_state().
To fix this, add non 5 GHz pdev check before dfs NULL check.
Change-Id: I32cf622d7b769ce841d30de538527639b87f459b
CRs-Fixed: 2490145
With the addition of the pdev restart command to handle multivdev restart,
a placeholder is required at the mlme to hold pdev restart attribute.
Change-Id: I885bf71d0e7977452120714a659e839769ade33e
CRs-Fixed: 2492531
While processing stats event there is an invalid debug
log which is always getting printed and resulting in
confusing loging.
Remove this invalid log from the stats event handling.
Change-Id: I5c60bf73b6b01afce82ebf93e19254f6e302042f
CRs-Fixed: 2493076
Currently vdev response start timer logic is in
target_if layer and stop timer logic is in tgt
layer which is asymmetry.
So, move stop timer logic from tgt layer to
target_if layer for vdev start, stop and delete.
Change-Id: Ia06e2e6d90cf9c4366d654e016e2eeab8c2a0719
CRs-Fixed: 2442199
Replace void * tgt_if_handle of objmgr psoc/pdev with
abstract type handles provided by target interface
Change-Id: I9e0ae991776daa0c25c4ad7b4e4dc022441318a3
CRs-Fixed: 2482708
As a part of regulatory update #29,MKK17 should support channels
until 5730MHz(including channel 144). But, it was missed in
regulatory update #29 and MKK17 supports channels only until
5710MHz(until channel 140).
Add channel 144 to MKK17.
Change-Id: Ic4b4c162f03a033b697764d65f4733b49e00c9c8
CRs-Fixed: 2489544
The host driver serialization module currently supports upto 4
commands in non scan pending queue. This is calculated at the
wlan_serialization_vdev_create_handler() as:
max_pending_cmds = (WLAN_SER_MAX_PENDING_CMDS /
WLAN_SER_MAX_VDEVS)
But in SAP case, if multiple STA sends deauth at the same time,
4 pending commands in non scan pending queue is not sufficient
and will result in only disassoc from the first 4 STA getting
honored.
The current host wlan driver supports 3 SAP mode and
2 STA vdevs amounting to a total of 5 vdevs supported.
So calculate the total non scan pending commands for
serialization based on the total peers supported for each
mode to fix this issue.
In SAP case, maximum 32 peer are supported and for STA case,
maximum 4 pending commands for serialization. So change the
max pending commands calculation as:
max_pending_cmds = (No. of sap modes supported * 32) +
(No .of STA modes supported *4 )
For MCL case the definition of WLAN_SER_MAX_PENDING_CMDS
will be moved to Kbuild.
For WIN case, the existing maximum count will be retained.
Change-Id: Iff1d9430b45e26812b600560b08e85e6040eafef
CRs-Fixed: 2483520
In wifi_pos_parse_req(), payload sections of nl attributes ATTR_DATA and
ATTR_META_DATA are type casted to driver internal structures tAniMsgHdr
and wifi_pos_field_info respectively without validating payload lengths
which can lead to buffer overread if the payload lengths are less than
size of internal structures.
To fix this, avoid type-cast and return error if payload lengths of nl
attributes ATTR_DATA and ATTR_META_DATA are less than size of tAniMsgHdr
and wifi_pos_field_info respectively.
Change-Id: Ie9e3197f2cd3852b394e834991aa8d3a5b530d85
CRs-Fixed: 2471275
Add API to support cancellation of a non-scan command to match with the
vdev and is a non-blocking serialization command.
Change-Id: I31556ea8f35b9caf314f10eba0f0f655e3fce806
CRs-Fixed: 2481935
Update regdb with QCA regulatory database version 29 with following
changes:
1) Create new full RD Def: APL9_MKKC and change Korea Country mapping to
APL9_MKKC.
2) Change APL9 to CTL Region MKK.
3) Change APL9 power to 23 for all 5GHz subbands.
4) Create new 2GHz RD Def: KRRA and Full RD Def: APL9_KRRA.
5) Create new MKK17_MKKC for Japan: Same as MKK5 but with added
channel 144 (Japan country code remains mapped to MKK5_MKKC for now).
6) Change Japan MKK5 lower bands to "indoor".
7) Change Canada in LA country table to FCC6_FCCA.
8) Change Georgia to ETSI1_World.
9) Change Dominican Republic to FCC3_FCCA.
10) Change Kenya to ETSI13_WORLD.
11) Change Kazakhstan to MKK5_MKKC.
12) New Countries added Aland Islands, Andorra, Antigua and Barbuda,
Cameroon, Cook Islands, Falkland Islands, Faroe Islands, French
Southern Territories, Georgia, Guernsey, Heard Island, Holy See, Isle
of Man, Jersey, Montserrat, New Caledonia, Niue, Norfolk Island, Saint
Helena, San Marino, Sao Tome, Sint Maarten, Svalbard, United States
Minor Outlying Islands and Virgin Islands (British).
Change-Id: Ic64ac96fa3e0828f628fecced66297ce176b3d3a
CRs-Fixed: 2475613 2454185
Currently, driver sets BSS peer and self peer to NULL
only in case of PEER AP/GO. It nither set BSS peer nor self peer
to NULL for GO/AP while de-attaching peers. This results in bss peer
use after free issue while stopping soft AP.
In order to fix this issue, the driver should set bss peer and self
peer to NULL for GO/AP as well.
Fix is to set bss peer and self peer to NULL for both PEER and AP
cases.
Change-Id: I055573c062c5a4e71fef2a699131e10fb6d97d71
CRs-Fixed: 2488371
The EN302_502 radar pattern is applicable in a predefined list of
regulatory domains (defined in DFS component). During radar table attach,
the current regulatory domain is checked if it is one of the
applicable regulatory domains.
The predefined EN302_502 applicable domains are:
ETSI11_WORLD
ETSI12_WORLD
ETSI13_WORLD
ETSI14_WORLD
Predefining these regulatory domain pair values in DFS component will
affect future regulatory updates that modify/add regulatory domains
to this list. Also, as per regulatory update #27, ETSI13_WORLD is not
EN302_502 applicable and ETSI15_WORLD is EN302_502 applicable.
Introduce a regulatory API(is_regdmn_en302502_applicable()) that finds if
the current regulatory domain pair is one of the EN302_502
applicable domains.
Modify the EN302_502 applicable regulatory domains as follows:
ETSI11_WORLD
ETSI12_WORLD
ETSI14_WORLD
ETSI15_WORLD
CRs-Fixed: 2390875
Change-Id: I78839a796eeb53a6b06b9fe66e8cae58de8838fa
When radar is found on Agile detector, the channels are not added to
NOL list and are only added to preCAC NOL list.
Add the radar affected channels, in Agile detector, to NOL list and to
preCAC NOL list based on the detector ID of the radar event received.
For subchannel marking, use agile channel instead of current operating
channel to the NOL when radar is found on agile detector.
Change-Id: Ifa61feeddbaaa81fe405972aa5826994a1383c00
CRs-Fixed: 2464929
In the current Agile DFS design it is assumed that the agile detector's
bandwidth is always 80Mhz. However, the agile detector inherits the
bandwidth of the current operating channel with the following
mapping:
Current Chan BW --- > AGILE BW
20 20
40 40
80/80+80/160 80
Provide support for Agile DFS on 20/40/80MHz channels based on the
current channel's bandwidth. Maintain a Binary Search Forest,
with each Binary Search Tree (BSTree) rooted by an 80MHz channel
structure. These BSTrees are connected by the preCAC list.
The primary key (identifier) of each node in the BSTree is an IEEE
channel. Each level of the BSTree has a unique bandwidth.
Remove the three existing precac lists: precac_required_list,
precac_done_list, precac nol_list.
Maintain
1) regular CAC and preCAC
2) regular NOL and preCAC NOL
information in the same Binary Search Forest.
Modify the following APIs to support the new framework.
1. Pick a channel for preCAC / Agile CAC.
(dfs_get_chan_from_precac_list, dfs_find_chan_for_agile_precac)
2. Reset the preCAC lists. (dfs_reset_precaclists)
3. If preCAC is done on a channel. (dfs_is_precac_done_on_ht20_40_80_chan,
dfs_is_precac_done_on_ht8080_ht160_chan)
4. Mark the channel as preCAC done / NOL. (dfs_mark_precac_nol,
dfs_mark_precac_done)
CRs-Fixed: 2464929
Change-Id: I6029ed919bd2275f46c4712ce1637ede4995557f
There are macro defined differenly for WIN and MCL
to pick up default INI value either for WIN or MCL.
The macro name uses WIN and MCL and also enabling the
right macro is controlled by CONFIG_MCL.
Replace the macro with CONFIG_AP_PLATFORM.
Change-Id: Ib5663532d45534cce1715ef06447116e2654e709
CRs-Fixed: 2484959
During abrupt channel change (e.g. iwconfig), the vap is brought
down and then brought back up. Now if the Agile detector is running
during this period, the detector is turned off as part of vap down.
When the vap comes back up, as part of starting the Agile detector,
a status of OCAC_SUCCESS and frequency of dfs->dfs_agile_precac_freq
is sent to the API (dfs_start_agile_precac_timer). The
dfs_agile_precac_freq variable was meant to be 0 as part of starting
the timer but since it was never cleared, that freq was moved to
Agile CAC done state immediately.
Clear the dfs_agile_precac_freq as part of vap down in addition to
stopping the Agile precac timer.
Change-Id: Ife117277a5d85911ae310e19a406f88fb9a544f0
CRs-Fixed: 2467077
MCL needs the interface type to query policy mgr for PCL
when selecting random channel. The existing API
utils_dfs_get_random_channel doesn't provide the vdev
type. Add new utils_dfs_get_vdev_random_channel
with vdev parameter to support P2P GO random channel
selection.
Change-Id: I0c6841b1692baca92730a6be73653282c98f1682
CRs-Fixed: 2467871
Add WMI support for vdev delete all
peer request which will replace individual peer
delete of peers under a vdev during vdev down.
Change-Id: Ia41ae5fbf96a75d2a3e608564742d2a43e0ed2cc
CRs-Fixed: 2456858
Add a new file ap_scan config file to store
scan params related to AP, as a part of
CONFIG_WIN cleanup
Change-Id: I195b0cc320bfc3e513a92c6710b003d0a029a510
In function reg_dmn_print_channels_in_opclass,
check for NULL pointer of the variable class
before dereferencing.
Change-Id: I6a17bf85b0a3dfbe1af9434583f31c96c268cc98
CRs-Fixed: 2470338
Add change to update the doc section for the list of commands supported
by the serialization module.
Change-Id: I3534d3798291fa259c8ee4de38df8c0e8649e5ab
CRs-Fixed: 2477833
Add umac/mlme support for vdev delete all
peer request which will replace individual peer
delete of peers under a vdev during vdev down.
Change-Id: I6afdfae619fce361acd60705fe2d7ad888a8e33e
CRs-Fixed: 2456858
Add lmac support for vdev delete all
peer request which will replace individual peer
delete for peers under a vdev during vdev down.
Change-Id: I98b5228c17b08eedd50b82372efe1b249cef2699
CRs-Fixed: 2477650
Do not configure legacy rate to FW if it is HE connection, otherwise
FW does not work.
Change-Id: I391e328ac71761722642f884e2be2b3eb15d2a1d
CRs-Fixed: 2475625
The old change I7e5a21601642e0d6afef73beeecf80a3e0475909
is missing when new scan mgr introduced, re-design the
change:
Traditionally full spectrum scan on STA/CLI is not
allowed when SAP/GO is already present on DFS channel.
With new generation of hardware, agile scan and
agile DFS scan features are supported which will
allow hardware to do full spectrum scan even if
SAP/GO is present on DFS channel.
Change-Id: I28e034627876b5460f85e74e66d6f4e7b2d5846c
CRs-Fixed: 2470935
CH_AVOID_RULE_DO_NOT_RESTART has existed, can be used to support
channel avoid event ignore feature by ini
restart_beaconing_on_chan_avoid_event.
In automobile special requirement, LTE co-ex event needs to be
ignored to avoid mcc.
Change-Id: If24c9132c0098f3c463d3eefc6e957335ddedef1
CRs-Fixed: 2476111
Currently the driver uses i both in outer and inner loop
which would corrupt the value of i and the loop would
never end.
Fix is to use another varibale j for the loop.
Change-Id: I6f64fb45d1007621b03fe93cd29da7d4c827a23f
CRs-Fixed: 2476402
When driver requests for stats to FW, FW sends response with
all the requested stats, in this case if the FW buffer gets
filled it sends the remaining stats in next event and FW keeps
sending the stats event until it sends all the requested stats.
FW sets is_last_event field in the response event if the event
is the last event for the requested stats.
Currently driver is parsing only first event and completing the
request from all these events and not checking the last event
bit when it requests for peer stats because of which some of the
stats are getting dropped.
To avoid above issue, add a logic to check the last event bit set
by FW and complete the request only if FW sets the last event bit
in the response event.
Change-Id: Ia3a2f2b4960579ac67bbf1354755af9c2098975a
CRs-Fixed: 2470910
Add support for target_if timer restart when
vdev mgmt ops request is queued though the intended
response corresponding to request is not yet received.
Change-Id: I08e474ac66a0c399a93ffbc4a24aab78084072d2
CRs-Fixed: 2463180
The driver uses a timer to check if there is a potential ref leak by
inducing assert if a given module does not release ref even when the
object is in L-state. But in case there is SSR/PDR, it might take more
time to clean up/release the refs. In this case, no assert should be
triggered.
Add a check in wlan_objmgr_iterate_log_del_obj_handler before calling
the assert API.
Change-Id: Ifb7568e11bff2b9fc610633af730461e33dc5539
CRs-Fixed: 2468301