Currently vdev deletion happens as a part of last
peer's unma and vdev creation happens in a different context invoked
by the upper layer in dp_vdev_attach_wifi3.
In a scenario when the old vdev is being deleted and a new one is being
created, with the same vdev id (e.g. P2p -> SAP transition), its
possible that the old and new vdevs co-exist in the pdev->vdev_list
at the same time. In such a case, the API (get_vdev_from_vdev_id) can
return the old stale vdev, even when a new vdev has been created. This
is not the expected behaviour.
Check for "delete.pending" flag before returning the vdev. If the flag
is set, skip that vdev.
Change some logging to dp_ logging functions.
CRs-Fixed: 2432430
Change-Id: Icadd84059dfbab12910678e5b24007010c15b6a8
Print OFDMA tx and rx rate stats received
from firmware as part of txrx_stats 9.
Change-Id: I081016480bdb0d161e33be7ee789497c43ad6cc0
CRs-Fixed: 2415731
The serialization active command removal can happen in two ways
1. Its through wlan_serialization_remove_cmd API
2. Command times out and command timeout handler is called.
In case, cmd times out and handler is called in scheduler
context and as part of the active cmd removal,
the active cmd is removed, and release cmd cb is called
which could delete the vdev(post last reference release).
Then as part of moving cmd from pending to active,
the vdev queues are null, and we see a panic.
We take a vdev reference, when timer for active cmd is started.
For active cmd removal through wlan_serialization_remove_cmd,
we release the reference when the timer is stopped.
To avoid vdev destroy, in case command times out,
and until the command timeout handling is completed,
we hold vdev reference from when timer is started,
until timer handler completes.
Change-Id: I16b6864f75e8bf354da6f8b16c3aaa6cf39d7ac7
CRs-Fixed: 2422422
The below ini values are added to enhance roaming in firmware:
1. "minimum_btm_candidate_score"
2. "roam_scan_inactivity_time"
3. "roam_inactive_data_packet_count"
4. "roam_scan_period_after_inactivity"
5. "btm_roam_score_delta"
6. "idle_roam_score_delta"
7. "btm_roam_trigger_min_rssi"
8. "idle_roam_trigger_min_rssi"
The values of "roam_scan_inactivity_time" ,
"roam_inactive_data_packet_count" and
"roam_scan_period_after_inactivity" will be sent over the
WMI_ROAM_SCAN_PERIOD wmi command.
"minimum_btm_candidate_score" value will be sent in the
WMI_ROAM_BTM_CONFIG_CMDID command.
The values of "btm_roam_score_delta", "idle_roam_score_delta"
"btm_roam_trigger_min_rssi" and "idle_roam_trigger_min_rssi"
will be sent over the WMI_AP_PROFILE command in new tlv.
Add WMI support to send the introduced ini values to
firmware.
Change-Id: I117ed7490d14730423654513f416115822230486
CRs-Fixed: 2435676
1. Currently, mapping multiple rings to same interrupt
context is misleading as we cannot identify the
interrupt source. Assign umac reo and wbm release ring
processing under different interrupt masks.
2. Map error rings processing under one interrupt context
as they are not frequent.
Change-Id: Ia2c4de29b99d1e25af7e2ce3068132f5995a9a95
CRs-Fixed: 2434741
Add vdev id into vdev_set_param structure for sending
WLAN_MLME_CFG_MIN_IDLE_INACTIVE_TIME
WLAN_MLME_CFG_MAX_IDLE_INACTIVE_TIME
WLAN_MLME_CFG_MAX_UNRESPONSIVE_INACTIVE_TIME
timeout values to FW during vdev create complete
Change-Id: I891a683ee270f057a9d02c47019e2297c43596f5
CRs-Fixed: 2419117
Currently, in case of SAP/GO present active dwell time of scan req
on STA iface is restricted. This can result in less scan time but
STA can miss some AP's. So, decrease dwell time only if some client
is connected to SAP or GO.
Change-Id: I46fb76792941b7c79f541b8b358d02bb944f0086
CRs-Fixed: 2436910
Qdf alloc api print the log in case of alloc failure and thus
the caller doesn't need to print the error again.
Remove the repetitive logs from wlan_scan_process_bcn_probe_rx_sync
and tgt_scan_bcn_probe_rx_callback. And fix check patch errors.
Change-Id: Ia340b71b5b476339d2ffe68b287b894ff6b532e8
CRs-Fixed: 2435932
To identify the reason for recovery, add parameter
"reason" for qdf_trigger_self_recovery.
And revise comment for qdf_hang_reason, replace "CDS"
with "QDF".
Change-Id: I8b388b5e83dbbdf29246c264ada56290f0dd3bfc
CRs-Fixed: 2431282
Compiler threw error -
implicit declaration of function 'qdf_dp_trace_apply_tput_policy'
when CONFIG_DP_TRACE not enabled.
Change-Id: Ia4e6fdf129b7fdc31c901b6fa78ce2cb0935b369
CRs-Fixed: 2433430
Send idle roam trigger monitor command to firmware based on
the SET SUSPEND mode command received from the user space.
The set suspend mode value sent will be used by firmware as
one of the parameters in determining if the device is in
idle state. When set suspend mode is 1, device is not in
idle state else the device is considered idle if idle state
data packet count, idle rssi, inactivity time criteria are met.
Add changes to send the idle trigger monitor value over the
wmi command WMI_IDLE_TRIGGER_MONITOR_CMDID.
Change-Id: I34632814a1e653fa87cfbab90c72ee1622dfd63c
CRs-Fixed: 2436222
On low memory system, skb allocation failures are observed in
dp_rx_buffers_replenish during driver loading phase within
dp_rx_pdev_attach code path. Per kernel memory team analysis,
failures are caused by large amount of atomic allocations.
Currently when replenishing RX buffers, srng spinlock is first
grabbed and then skb buffers are being requested, which makes
skb allocation happen in atomic context.
Fix is to create a new API for refilling rx buffers when
loading driver. In the API, skbs are allocated into a
pool without srng lock grabbed. Srng lock is grabbed only
when refilling already allocated skb to rxdma ring.
Change-Id: I9d45a42c9f2b0af7bf1d8031adb474d66ff9db59
CRs-Fixed: 2425798
qdf_tracker generically implements all of the logic necessary to
implement the qdf_nbuf map tracking. Rather than using the current
custom tracking solution for qdf_nbuf map tracking, use qdf_tracker
instead.
Change-Id: Id33138a9035653b45c66b712bd11e54873266a17
CRs-Fixed: 2425623
Any obj ref can be taken by modules. In the case the obj is logically
deleted but not deleted physically due to some pending reference not
released, it leads to memory curruption issues in unexpected places.
Debugging these issues becomes difficult as there is no indication where
the ref leak has happened. Especially when the curruption occurs before
stop_modules is called (where there is check for ref leaks)
To ease the process of debugging such issues, add a print to show the
modules holding the refs after logical deletion. Also, assert in
case any objs are in logically deleted state for longer than 10 secs.
Change-Id: I8fa55693c89f146d859cc9ec3355f5eb1e2c3853
CRs-Fixed: 2419733
Add wmi service bit: wmi_service_sta_plus_sta_support.
When this wmi service bit is set, firmware shall support simultaneous
connections on multiple STA interfaces.
If firmware doesn't set this service bit and if the host driver
doesn't check this bit before second STA connection, then firmware
shall reject connection by returning failure in VDEV_START_RESP_EVENTID.
Change-Id: I9e20911af5372b651586f25d9f13e4364c672435
CRs-Fixed: 2427202
Add support for new wmi command WMI_ROAM_DEAUTH_CONFIG_CMDID to
send disconnect roam trigger parameters and the new wmi command
WMI_ROAM_IDLE_CONFIG_CMDID is used to send the idle roam trigger
parameters.
Update the idle roam and disconnect roam parameters and send them
on the new wmi commands over wmi.
Change-Id: I57acb90266d506d37dcbb58d50ef23fadc439e46
CRs-Fixed: 2431502
The datatype of average and round up tx rate was uint32_t which truncates
the upper byte of the average and round up tx rate value.
changing the datatype of average and round up tx rate from uint32_t to
uint64_t.
Change-Id: I3809ba7cfc73ec0b4609981e70d57112ac958f33
CRs-Fixed: 2409751
Many of the fields in struct add_ts_param use camelCase which is
frowned upon by the Linux coding standard, so rename them to be
compliant.
Note that change I829ad0abb864f0a05047894bab9977d8529074dc
("qcacld-3.0: Align with the refined struct add_ts_param") is
interdependent with this change.
Change-Id: I421b670b86a7e1cecbe5a2686efefbbb6c455267
CRs-Fixed: 2433927
ce_send_entries_done_nolock_srng() source ring Tx completion processing
callback function making the redundant update of previous HP. Further
when actual Tx updates the HP results in 2nd HP update.
Because of race in hardware HP update detection, second write is lost.
Avoid this scenario by not updating HP in Tx completion processing.
Also remove unused ce_send_entries_done and ce_recv_entries_done APIs.
Change-Id: I1eb288cd7fb0ff418d4cec4f8d127cff8fc9822d
CRs-Fixed: 2407394
Add an API to add scan entry without posting it to scheduler thread.
This will be used to update the beacon/probe during roaming to new AP.
Change-Id: Ia53ba194032eb953c5b102b0cc406db12e58f42d
CRs-Fixed: 2435404
Hostapd requests igtk keys with keyix 4,5.
Adding support to wlan_crypto_getkey to send the igtk keys
for keyix 4,5. In absence of the patch, hostapd getkey
call for igtk keys will fail.
Change-Id: I32cd6b417aae92cf3b3ac17bb72e19b581d21bd6
In the current implementation, we print the ser history
from index 0 to the current index of the ciruclar buffer,
so when buffer overflows we print only few recent items.
Instead, we should print all the elements in the circular buffer
starting from current index to entire length of the circular buffer.
This will print all the elements in the circular buffer
when it overflows and also takes care of printing
required items when buffer is not overflown.
Change-Id: I6c54cb34de7a1ba24ee0204004cc9a203173c66b
CRs-Fixed: 2430483
Add a CDP function which processes the peer delete response
and deletes the static ast entry for the peer
Change-Id: Id646979ed07bd82609ca08e7ef3201382d07b1de
CRs-fixed: 2385115
In dp_peer_add_ast() call the CP callback inside ast lock
to ensure the ast add and delete commands are called in a
sequence
Change-Id: If76bf8dca34555e56074e74792f3283b6b5a28d3
CRs-fixed: 2424637
Its pretty common to simulate malformed beacon/brobe response
frames leading to print "Failed to create a scan entry".
Change-Id: Id89c4e66f0ac449b02e774067932e65d1da9ddc8
CRs-Fixed: 2431173
Move some stats from tgt_mc_cp_stats_extract_vdev_summary_stats
and target_if_cp_stats_extract_vdev_chain_rssi_stats, from kernel
to driver
Change-Id: I3475421828b51a229af4ac3ff6087d7ebb311c33
CRs-Fixed: 2430565
Add change to cleanup duplicate fields of
of vdev_mlme, which are also in mlme_channel_param
and their dependencies while updating
vdev_start_param. Cleanup unused mlme_cfg_ids.
Change-Id: Ie32971283a337f04692c0c0bc7f41fff75c090c3
CRs-Fixed: 2407953
On low memory system, skb allocation failures are observed in
dp_tx_ipa_uc_attach during driver loading phase. Per kernel
memory team analysis, failures are caused by large amount of
atomic allocations. Currently when allocating IPA TX skbs,
srng spinlock is first grabbed and then skb buffers are being
requested, which makes skb allocation happen in atomic context.
Fix is to make skb allocations with srng unlocked since it is
safe for race conditions during driver loading time. This ensures
skb allocations in process context.
Change-Id: I1624276c087c8247d672fb7cea5daded07ab93a3
CRs-Fixed: 2426489
The correct element number of param_tlvs->stats_per_channel_list is
actually param_tlvs->num_stats_per_channel_list and thus the
qdf_mem_copy() can actually copy more bytes than are in the buffer
causing a buffer overread.
Fix it by checking fix_param->num_channels against the actually
param_tlvs->num_stats_per_channel_list before doing memory copy.
Change-Id: I610920ac1d0a927a52de83935616e8e8fdfec7e7
CRs-Fixed: 2428212
Since umac cmd is specific to the module adding cmd to serialization
queue, an API is needed to validate the umac_cmd associated with that
serialization context holding the serialization queue lock.
Change-Id: Iadb4deb17ffabd780432a29e7cbd37024fd431fe
CRs-Fixed: 2430764
Count of MSDUs Tx with AMPDU aggregation and
MSDUs without AMPDU aggregation is maintained. This
count is obtained from per ppdu stats.
Change-Id: I7c38846534bbe5f2fd0a9b3602a9d453e1c1f449
Add change to support sending AMPDU/AMSDU custom aggregation
size to FW using converged MLME and target_if framework.
Change-Id: Icf665e3bf30c5ef5903342264e89776611c7774a
CRs-Fixed: 2430278
Set MaxMsgsPerBundledRecv in HTC_SETUP_COMPLETE_EX_MSG for USB,SDIO
interfaces.
This is required for enabling RX bundling.
Change-Id: Ifb6a9a7167701c051d405bfae125fcfd0c8c55c5
CRs-Fixed: 2414409
currently host will dump TLV with info level if HW indicate RX
data with invalid sw_peer_id, this will introduce excessive logging
issue, host panic.
degrade the log level to debug level.
Change-Id: Ia24f411bdfd9ec8e315874340d3bf046c245a72b
CRs-Fixed: 2420640
Remove usb_set_intfdata() as usb interface private data is not being
used in driver.
Change-Id: I65f718b8abe2f33ec7f180ec265baab9772d30d0
CRs-Fixed: 2427944
Move get macaddr from peer API at appropriate place instead of fetching
it everytime and not using it.
Change-Id: I01349a672215395795cd08cd65d98ad8a08b95b0
CRs-Fixed: 2431163
Add support to measure interrupt latencies, store them
in different "bins" and display the constructed histogram
through user command.
Change-Id: I268be6b39745d550ac7db5d321c2d1fdb2d17d41
CRs-Fixed: 2365812
When the status is FLOW_POOL_ACTIVE_PAUSED, all queues are expected to
be paused. Still some on the fly packet can make it to the driver. In
such a case, the function dp_tx_desc_alloc takes a default action of
WLAN_WAKE_NON_PRIORITY_QUEUE. This is incorrect, since it will wake all
non priority queues, when they should be paused.
Make default action as WLAN_NETIF_ACTION_TYPE_NONE. If this is the
action to be taken, donot call the pause_cb from dp_tx_desc_alloc.
Rate limit log levels in case dp_tx_desc_alloc fails.
Change-Id: I1ef3018e90576d2c3aaa0d10d56e9b155681271b
CRs-Fixed: 2421813