Currently, driver send a generic reason code
eSIR_MAC_DISASSOC_DUE_TO_INACTIVITY_REASON to userspace when a
STA kickout happens. Send eSIR_MAC_SA_QUERY_TIMEOUT when STA
kickout happens due to SA query timeout.
Send eSIR_MAC_PEER_XRETRY_FAIL when STA kickout happens due to
XRETRY failure.
Still host sends deauth frame with reason code
eSIR_MAC_DISASSOC_DUE_TO_INACTIVITY_REASON.
Change-Id: I72fa7406ef1b131ef3519bb6bef21cc52bc548cb
CRs-Fixed: 2624948
Firmware advertises WMI_SERVICE_ROAM_SCAN_CHANNEL_LIST_TO_HOST_SUPPORT
at the time of initialization. When user requests for roam scan channels
to driver using GETROAMSCANCHANNELS command, driver queries firmware for
roam scan channel list by sending wmi command with command id
WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID and vdev id.
Firmware response to WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID commmad is
WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID. This event has roam scan channel
list, vdev id, connected BSSID, command_response.
Firmware issues WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID event for two reasons,
one for GETROAMSCANCHANNELS command where firmware sets command_response=1
in wmi event and asynchronous event upon disconnection where firmware sets
command_response=0 in wmi event.
Change-Id: I690aca6c3f1e3aa7ae1fe54aadc839ea19446079
CRs-Fixed: 2621535
Add ini config required for FTM time sync feature.
"enable_time_sync_ftm"- ini to enable/disable the feature.
"time_sync_ftm_mode" - ini to configure the burst/aggregated mode.
In burst mode the offset derived for each RTT frame is sent by
firmware, in aggregated mode only one offset is sent by firmware.
"time_sync_ftm_role" - ini to configure slave(STA)/master(SAP) role.
Change-Id: I6a06d6fdc4c7556c32ab2d28f1cbaa936b98a85b
CRs-Fixed: 2618654
Add proper NULL check for ht_info before accessing the structure. This
field is sent as a part of the event from FW and could be NULL.
Change-Id: I55dd7dcbe4ecdafe6a97ebcf2c7d9f08af30d8a2
CRs-Fixed: 2615175
Enhance logs in policy mgr module to remove duplicate
or unwanted prints and keep only useful logs to debug.
Change-Id: Ifd585256955aceec29286d82838be0c588228c32
CRs-Fixed: 2614763
Process management Tx and Rx frames for packet capture mode
and post frames to the mon thread.
Change-Id: I14c0a1cf8a8aa4d4a4e16ad6200715b875611c81
CRs-Fixed: 2619317
Send vdev param command to FW for STA vdev to set the packet
capture mode. Send the command only if packet capture support
is enabled.
Change-Id: Ifed2431882b1f7d2869771e812daa5bcd5dc17e9
CRs-Fixed: 2619314
Combine and print channel for ACS and roam channels, instead
of printing one channel at a time.
Change-Id: I398678e1843849bdf4f4c72f0315c626c97438a6
CRs-Fixed: 2623805
Add BTM Query/Request prefix for BTM debug prints and Neighbor
Req/Resp prefix for Neighbor report logging. If the time
received from the firmware is zero, it implies AP has not sent
the response for the neighbor req/btm query. So log this info
as well. When channel count is zero, log that no channel update
from AP.
Refactor 11kv logging for more details.
Change-Id: I10bb731ce410215eb48322a2f8ad9ed8723e5270
CRs-Fixed: 2623418
Roam start indication received from FW during tdls setup procedure.
FW already deletes tdls peer before sending roam start indication
to host. If Wlan host now sends any tdls peer operation cmd it will
result in FW instability.
Fix to avoid sending any tdls peer operation cmd after receving
roam start indication from FW.
Change-Id: I6782950e5ad0a16b38736e0f26e6792b642b8b4e
CRs-Fixed: 2620308
Currently the driver extracts the reason code from notif instead
of notif_params. This results in wrong reason code being sent
to upper layers.
Extract disconnect reason code from notif_params when disconnect
event is received.
Change-Id: I808feecbb74a0a6c78fa31ca78b35c7318e5e9cb
CRs-Fixed: 2623415
After deauth/disassoc, roaming is triggered by the firmware and
if roaming failure occurs before handoff is started, then
firmware sends the WMI_ROAM_EVENTID event with deauth reason.
Currently unspecified reason is sent to the upper layers for
every emergency deauth roaming failure.
Extract the reason code from the deauth/disassoc frame sent by
the AP, received in WMI_ROAM_EVENTID.
Change-Id: I461a38e8a8e60fa26b2ace3f54a6f8208f00838d
CRs-Fixed: 2611473
Currently, wifi-pos uses channel number to get the fwr phymode.
For adding 6g support wifi-pos need to get the phymode from
frequency instead of channel number.
As a part of fix, Add handler for getting phymode based on
frequency
CRs-Fixed: 2617906
Change-Id: Ie65b3ed98760cef152df3697805593efbad4d5a1
Add vdev start check such that host does not send ARP_NS stats command
to FW when vdev is already stopped.
Change-Id: I94c0b4c26db3f48c7b2de1ad3003c0f0520fa396
CRs-Fixed: 2621587
As part of the vendor extended stats, add API to
request Rx hardware stats for a given vdev id.
Change-Id: I46d73de21724c4c5ebf4a78075b7b2c1d02fe92a
CRs-Fixed: 2605729
Add a new qca sub command QCA_NL80211_VENDOR_SUBCMD_BTC_CHAIN_MODE.
This command is used to set BT coex chain mode via
WMI_COEX_CONFIG_BTCOEX_SEPARATE_CHAIN_MODE, it has 2 args:
arg1: BTC chain mode, including shared (0, default) and separated(1).
arg2: force restart flag. true means doing vdev restart after applying
the new configurations; while false or NOT set means not.
CRs-Fixed: 2534768
Change-Id: I869096784e5089a6c90e94e76234cd13c9b1a13a
WoW wake-up reason code(string) is already logged and in some
cases wake-up reason code(int) is not populated by firmware
hence remove the redundant wake-up reason integer logging.
Change-Id: Ie8b21965bc9e56bcfe53a80893419a81bd0bed8c
CRs-fixed: 2619212
Currently, There is no check to validate vdev in function
wma_form_unit_test_cmd_and_send before sending command to
fw which may lead to fw crash due to invalid vdev id.
Fix is to add validation check for vdev before invoking
wmi_unified_unit_test_cmd and sme_send_unit_test_cmd.
Change-Id: I61db37417f05968365f210515c28eb6184279c77
CRs-Fixed: 2618295
Currently there are unnecessary/duplicate logging. Identify and
reduce those logs that are not necessary.
Change-Id: I648b84786f9009d45e54fa67c21c834a1eae1608
CRs-Fixed: 2617648
Currently, wma->peer_macaddr is passed as peer mac address for
NDP peer removal. This gets filled only when PEER_STATS_INFO is
queried from firmware. This is not the right mac address to be
sent for peer removal. Driver might attempt to remove an invalid
peer(or NULL) which leads to assertion in wma_remove_peer.
Get the peer mac address from tpDeleteStaParams which is
sent from lim and pass it to wma_remove_peer.
Change-Id: I90beb7edc1d6ad5790ed972dcb9d3ac42bc04ea7
CRs-Fixed: 2617918
lim_sta_send_add_bss_pre_assoc, sta_send_add_bss and
wma_send_peer_assoc have duplicate logs.
Also send_peer_assoc_cmd_tlv print all the required info with
flags and other params.
So remove the duplicate logs and keep only missing info in
sta_send_add_bss and wma_send_peer_assoc, which is not printed
anywhere.
Change-Id: Ic5aa63f1a4296553b584bcc768d8c5cb04ddddf3
CRs-Fixed: 2616910
As per the logic implemented in the FW, it will send a dummy event for
link layer stats in case the buffer allocation fails. In this case,
there can occur a scenario in host wherein we are not properly freeing
the previously allocated memory.
In the event handler wma_unified_link_radio_stats_event_handler, if the
event is dummy, we are updating the value of the num_radios inside
wma_handle->link_layer_results. This num_radios is later used to free
any allocated memory. On setting it to zero, we are preventing that
memfree to occur; leading to a memleak.
To fix this, in case there is a dummy event, first free any possible
previous results before setting the num_radios to be zero.
Change-Id: Ibe4ddf1a137a33130100483cefb004b7dae4ce02
CRs-Fixed: 2610754
Roaming logs are logging to kmsg, so unused diag log
sending API can be removed.
Remove unused roaming diag logs.
Change-Id: Idd5cfd2ad1f63394cb6b1872512bcc17307a78e6
CRs-Fixed: 2617079
Currently, the driver schedules the message to set
power save enable/disable to FW as part of the
set power mgmt command received from the userspace.
This command is then scheduled and is sent via
the scheduler thread.
Generally, userspace sets the power save disable
when it starts the DHCP process and enables the
power save back when the DHCP is completed.
DHCP packets are sent through the Datapath and the
PS enable/disable command would be sent via the
control path explained above.
the Race could happen that the scheduler was busy
with some other task and the PS disable command
was in the queue and the DHCP process began.
This would result in DHCP packets going to the peer
with PS enabled.
The fix is to set the power save enable/disable directly
instead of using the scheduler path.
Change-Id: I0f2aed37f875c283f318fb44bcc40d0ab401413a
CRs-Fixed: 2611480
Firmware advertises service capability bit
WMI_SERVICE_PEER_DELETE_NO_PEER_FLUSH_TIDS_CMD
when peer delete command takes care of flush
all tids functionality.
If this service bit is set advertised by FW
then host does not need to send the flush tid
command before sending the peer delete command.
Change-Id: I7838b1d0465fefd58eb8faf1d2d87beccf55134b
CRs-Fixed: 2609964
Add a new INI parameter "nan_separate_iface_support" to
indicate firmware that the host driver supports separate
interface for NAN Discovery.
Change-Id: I6fb313b02c5f3a05638e85494051fb003b2dd867
CRs-Fixed: 2612006
Currently, the driver rejects the roam stats event if any of the
roam trigger or roam scan or roam results tlv is not present.
Now the firmware will send neighbor report immediately after the
neighbor report response is received from AP instead of buffering
it.
So, handle roam stats event with neighbor report tlv alone and no
other tlv is present. Also update documentation for some static
functions
Change-Id: I8a697cda9945a7611930823dd7515bc36223f32a
CRs-Fixed: 2610358
In FTM mode, no peer is created in the host. Currently, since
peer_unmap_conf_support feature is enabled, FW is expecting
WMA_SEND_PEER_UNMAP_CONF from host to remove the peer Id from AST.
But host never send this WMI CMD in FTM mode.
Disable peer_unmap_conf_support in FTM mode which allow FW to
delete the peer Id without any WMI CMD expectation from host.
Change-Id: Idf9082adc81187346563f3aedf1f1657164f03cc
CRs-Fixed: 2608929
Add support to make event WMI_ROAM_PMKID_REQUEST_EVENTID as
wakable in FIPS case.
In FIPS Enabled case, for roaming Firmware sends PMKID request
to host as firmware is not supposed to do crypto functionality
with FIPS enabled.
Change-Id: I09b6b68f77ba75f9e5519ff18017c95d16771f52
CRs-Fixed: 2513790
Add support to fallback the PMKID generation from firmware to
wpa_supplicant.
In FIPS Enabled case, for roaming Firmware sends PMKID
request to host as firmware is not supposed to do crypto
functionality with FIPS enabled. Once the roam candidate
selection is done in the firmware, it sends the
WMI_ROAM_PMKID_REQUEST_EVENTID. After receiving this event
the host driver triggers an event to wpa_supplicant using
NL80211_CMD_PMKSA_CANDIDATE for PMKID generation. Then
wpa_supplicant responds with PMKID to host using
NL80211_CMD_SET_PMKSA. And host updates the wmi pmk cache
and indicates the firmware via WMI_PDEV_UPDATE_PMK_CACHE_CMDID
wmi command.
Change-Id: I7d33a2b92f97260fa5a7e742b6f877adc7eced55
CRs-Fixed: 2512955
Currently the roam trigger, roam scan , candidates and
roam result related logs are printed at debug level and wouldnot
appear at kmsg. These logs are needed at kmsg for roaming
related debug requirement.
Change-Id: I0d407d04606462c88cf15f3693994f7cf11f6602
CRs-Fixed: 2607349
Scenario:
1. Turn on SAP on channel 1 on 2.4ghz 20Mhz BW
2. Connect a STA to it.
3. Change the SAp channel to 36 80mhz BW
Observation:
STA changes the channel BW to 80 but SAP does not
send th packets in 80Mhz to the SAP.
Expectation: SAP should send the packets to STA on 80Mhz.
Issue:
SAP does not set the peer params to the FW for the peer
hence the FW keeps on sending the packets with 20Mhz
which was previously configured to it.
Fix:
Send peer params to FW for each peer so that the
packets can be sent by SAP on a max supported BW.
Change-Id: Ic9b310e67001d55b2b5427db0c2ab897ea36b6b0
CRs-Fixed: 2606872
Currently many layers store the datapath handles i.e.
pdev and vdev handles and use them for passing as an
argument to the CDP APIs. This gives way to possible
race conditions, where the datapath handle provided by
the outer layer might be a stale pointer, which in turn
leads to unexpected results.
Remove the storage and usage of all the datapath handles
from the layers currently using them.
- cds_context
- vdev objmgr
- pdev objmgr
Change-Id: Icf24bd3792af203d1a06e153f0badd6e7405559f
CRs-Fixed: 2602199
During 6ghz scan, host should not set HT/VHT flag
when sending configuration to FW via WMI_SCAN_CHAN_LIST_CMDID.
Change-Id: I5a58c775f173e90f91f6e7472ced3d59adfd8f73
CRs-Fixed: 2605744
Currently logs for invalid channel width are set as error logs,
if invalid channel width is passed to this api very frequently,
error logs are getting flooded.
To address this issue make the logs as rate limit.
Change-Id: I493002b63ab72438cce2b61c858a32acf12ea6b6
CRs-Fixed: 2607361
Send vdev param command to FW for STA vdev to set the packet
capture mode. Send the command only if packet capture support
is enabled.
Change-Id: I014acfc5d97a2bf00831259b9811b3c5bc7610a1
CRs-Fixed: 2528554
Currently cdp ops are given pdev/vdev/peer
handle as its arguments, which is directly
accessed in those APIs. This can cause a
race-condition in access of the respective
handles if it has been deleted in parallel.
Hence as a part of cdp convergence, pass only
the pdev_id or vdev_id or peer mac address,
which will be used to get the respective handles,
and hence avoiding the unwanted access of the
handles if it has been deleted.
Also remove the ops which are used to store
and retrieve such handles, that no more needed.
- register_peer
- clear_peer
- change_peer_state
- peer_get_ref_by_addr
- peer_release_ref
- peer_state_update
- get_vdev_by_sta_id
- register_ocb_peer
- get_peer_state
- get_vdev_for_peer
- update_ibss_add_peer_num_of_vdev
- remove_peers_for_vdev
- remove_peers_for_vdev_no_lock
- copy_mac_addr_raw
- add_last_real_peer
- is_vdev_restore_last_peer
- update_last_real_peer
- peer_detach_force_delete
Change-Id: I5134ca882f5fcf0e5941317e48712717eddb58fe
CRs-Fixed: 2541708