Athdiag procfs entry does not have address sanity check, this is
resulting in invalid ioread32/iowrite32 if out of PCIE BAR address
is used.
Fix this by allowing address with in PCIE BAR range.
Change-Id: I8365eacca7ccc4f489b7d0bda6c998384d0fec7b
CRs-Fixed: 2112270
wlan_serialization_activate_cmd() always activates first command from
active queue which creates issue for scan command related operations.
This issue has been brought in through:
I8c63dd15d7ab8612a87950a3c189e73d1436c26a
When there are multiple scan commands put in to active queue,
wlan_serialization_activate_cmd() will keep pulling first command and
activates it.
Fix: Enhance wlan_serialization_activate_cmd() API to activate the
command which has been put in a active queue.
Change-Id: Id72449cbee81b65977070a8bbec8e417eb2bb655
CRs-Fixed: 2136142
Header files are included in appropriate places to avoid compilation
errors. To disable/enable DFS component from non-common code at
compile time, use macro QCA_DFS_COMPONENT_ENABLE in config file.
Change-Id: I0d4fe27ee0d76412c109aa3f64485ea1ac2a5e3a
CRs-Fixed: 2134355
Stop the opportunistic timer & take action if needed when hdd stop
happens. Also, take action when set_hw_mode request to FW times out.
Change-Id: I32f1e38e93a5805e0d85b800cc4e070cd6f79669
CRs-Fixed: 2133388
Add WLAN_DEBUG_DFS_RANDOM_CHAN bit mask to enable/disable
random channel algorithm prints using DFS logging.
Change-Id: I77f01afcf59b8b790404eca8caa68c150a5d3ec2
CRs-Fixed: 2120265
Removed WIN based random channel selection algorithm.
To choose a new random channel, use converged random
channel algorithm.
Change-Id: I0ece0cb71ffeb694c9f5264d97a25e49d59b1ae8
CRs-Fixed: 2120265
1) Add support to use new random channel selection algorithm
from converged DFS component.
2) Move random channel filtering flags from dfs_internal.h to
dfs_ioctl.h as these flags are common between MLME and DFS
component.
Change-Id: I5ef789dd9e9c28706f1c581997a646a80caec5ee
CRs-Fixed: 2120265
If force SCC is set and SAP is active then all DFS/disabled
channels in PCL should have 0 weight to avoid the STA roaming
to these channels.
Change-Id: I4519c29477c5108f5131b7caa806505b69efea8b
CRs-Fixed: 2135750
num_msdu, qos and ppdu_type were being parsed incorrectly.
Parse them appropriately.
Change-Id: I665285bc0b628fd1d9459473d18ef62577bbd54e
CRs-Fixed: 2133732
Add support for sending periodic chan stats config command to target. Once
configured, host will receive the channel stats periodically as per the
configured period
Change-Id: Ic2b4692d0e2662ca590b925732f6cb33aac7a6de
CRs-Fixed: 2136759
wlan_serialization_timer can't be stopped before destroy it
always log: wlan_serialization_stop_timer: nothing to stop
No return in end of function
Change-Id: Ie40d8513ab5d7e84f21aebe720365d32b8205ea9
CRs-Fixed: 2133196
Issue description: When wlan_serialization_dequeue_cmd() gets called, it
will remove the command from active queue and try to move next pending
command from pending queue to active queue. But before it moves this
pending command to active queue completly, it calls the caller and
notify that command is activated through callback.
If that callback returns failure then serialization abandon the process
of moving it from pending to active. Now it again picks the same command
from pending and repeat the process. This creates unwanted recursion and
reference count mistakenly decremented multiple times.
Here is the recursion stack:
(a) wlan_serialization_move_pending_to_active()
(b) wlan_serialization_enqueue_cmd
(c) wlan_serialization_add_cmd_to_given_queue
(d) cmd_list->cmd.cmd_cb() fails
(e) wlan_serialization_put_back_to_global_list
(f) go back to (a) and repeat
Fix: Divide wlan_serialization_enqueue_cmd() API's logic in 2 parts.
1) Enqueue the command first through wlan_serialization_enqueue_cmd()
This ensures that command has been put in to given queue.
2) Once command has been put in to given queue and if this queue happen
to be active queue then activate the command through
wlan_serialization_activate_cmd()
Here is the stack after the fix:
(a) wlan_serialization_move_pending_to_active()
(b) wlan_serialization_enqueue_cmd
(c) wlan_serialization_add_cmd_to_given_queue
(d) returns WLAN_SER_CMD_ACTIVE or !WLAN_SER_CMD_ACTIVE
(a1) if (WLAN_SER_CMD_ACTIVE)
(b1) wlan_serialization_put_back_to_global_list() for pending cmd
(c1) wlan_serialization_activate_cmd()
(d1) if fail
(e1) wlan_serialization_put_back_to_global_list for active cmd
(f1) then repeat from (a)
(d2) if pass then return
(a2) if (!WLAN_SER_CMD_ACTIVE) then nothing to be done.
Change-Id: I8c63dd15d7ab8612a87950a3c189e73d1436c26a
CRs-Fixed: 2132975
When the wlan driver is suspending, the last thing it does is check to
see if the firmware has indicated a wakeup during the suspend process.
This is done by checking the initial wakeup flag, which is set when a
specific copy engine payload is received from firmware. For the new
dedicated wake MSI, only the wake signal is received, no payload. When
the wake MSI is toggled, set the initial wakeup flag to prevent race
conditions during the suspend process.
Change-Id: Id53cc7884431a437136d8dca068449bc5a25b87c
CRs-Fixed: 2133469
RCPI is measure of received RF power in the selected channel for a
received frame and is measured at the antenna connector and shall be
measured over an entire frame. It is a monotonically increasing,
logarithmic function of received power level.
Wlan firmware computes RCPI.
Add host support to query firmware for RCPI information of
peer mac address in sta, p2p client, softap and p2p go modes.
Change-Id: I27fe45e993bd9b157fe33ca08a56330c1c950d16
CRs-Fixed: 1093187
There is a race condition: during the peer is created and invoking
qdf_atomic_inc to increase the ref_cnt, another thread may firstly
use it by wlan_objmgr_peer_get_ref and wlan_objmgr_peer_release_ref.
Then wlan_objmgr_peer_obj_destroy was called and WLAN_OBJMGR_BUG(0)
happens.
Change-Id: Ic15bada7c70d799f808fe980ae52d4862789fe11
CRs-Fixed: 2133929
Separate tcp-delayed-ack and tcp-advanced-window-scaling triggers
so that these system parameters can be set separately.
Change-Id: If2f869243152e698409e8a38459f5fabe44f35cb
CRs-Fixed: 2133069
Add a circular buffer to hold roaming related debug log information
for peer and vdev operations in the driver. Purpose is to dump
this information after host or target crash. 256 entries will go
back much deeper into history than dmesg or wlan driver logs found
in crashScope. Information is dumped out as error messages from
crash detection points as necessary.
The support routines help to store the debug logs and dump them,
typically after peer related timeout or assert.
wlan_roam_next_debug_log_index () - Utility routine to compute next index
wlan_roam_debug_log() - Adds a log entry
wlan_roam_debug_string() - Returns debug log type string
wlan_roam_debug_dump() - Dump all wlan roam debug log records
Add new QDF module ID QDF_MODULE_ID_ROAM_DEBUG.
CRs-Fixed: 1116078
Change-Id: If2077f560405ec0414d08ef4ece0fb0d2db2ccc7
Setting Gratious ARP request through iwpriv command is
not supported.
Add condition to set Gratious ARP request as method in
Keep Alive functionality
CRs-Fixed: 1114602
Change-Id: I299d39131e7ab0ebae6bd10f41bc4549debda048
There is a memory leak for RX path of SDIO WLAN if skb allocation
fails. Add condition check and free all resources for scenario.
Change-Id: Ic4a58d3d4e93f1d6d57bfb045dfdeb131b24f72a
CRs-Fixed: 2128051
Remove the code related to mmap functionality for pktlog
as it is no longer used/required.
Change-Id: Ib031148985055201810a7c32347c2e6efea57f35
CRs-Fixed: 2133878
Restrict the pktlog buffer size to a minimum of 1MB and maximum
of 16MB using pktlogconf tool or through sysctl command.
Change-Id: I1c67ed724c512f57c5d6e555be14b0b0e23d203f
CRs-Fixed: 2133723
Private ioctls for external acs operation like
set icm active, get channel load info, clear chan load info,
get nominal noise floor were transported and
handled by spectral module. We seperate this ioctls
from spectral by adding new IWPRIVs(get_icm_active,
set_icm_active, get_nominal_nf, clear_chan_info)and
moving their handlers out of spectral.
CRs-Fixed: 2126313
Change-Id: I8c6b56b85d566f5bc7f6217f6fbc99fa23171cdd
It is required to send vdev-param HEOP to the target with
updated bss-color to enable HE BSS Color feature. Add
necessary code to support this.
Change-Id: I826bc5387dad8d044abcbc9cbdf69e93b59beb39
CRs-fixed: 2126605
In coex mode, BT throughput test cases are getting effected as
driver is selecting non-DBS scan policy for directed scan requests.
FW is going to use only one MAC for scan when performing non-DBS
scan which inturn increases the total scan duration.
This increase in total scan duration has effect on BT throughput
test cases.
Select DBS scan policy if atleast one session is in connected
state.
CRs-Fixed: 2084608
Change-Id: I6fba26accbaed4d57c6c56a782e570b534af43c4
Update dbs scan policy as HDD_SCAN_DBS_POLICY_FORCE_NONDBS if
the scan request is for directed SSID or directed BSSID.
CRs-Fixed: 2084612
Change-Id: I9d720770e2e364ca5cb01bb5fe137f7248593398
PO = Partial Offload
FO = Full offload
If the channel list preparation is handled in the same thread
of execution then call to scheduler is not required.
Change-Id: I46bf07ac14c1101de5e00165f34e937ab939659e
CRs-Fixed: 2124580
Problem:
Memory is allocated for avoid_freq_ind in reg_call_chan_change_cbks
function and freed when avoid_freq_ind is NULL.
Solution:
Memory is freed when avoid_freq_ind is not NULL.
Change-Id: I263441c5b05755054ee581b20af191d93c3dea5e
CRs-Fixed: 2124580
Improve reliability of skb allocations from non atomic callers
by letting them sleep.
Change-Id: If5a594519902ebe549fbc1ebd8c0eb97679cdcae
CRs-Fixed: 2127770
Add "static" before some functions which only be used in 1 file to
resolve the compilation error.
Change-Id: I5bf80fe2e124bf4258c9bfdc997a5423773ca474
CRs-Fixed: 2010227
Add user configuration parameters to configure the number of
probes in scan request and probe repeate time during scan
Change-Id: I65a3734d8080d8adfe3e9ffa26905e6adc196197
CRs-Fixed: 2071697
Problem:
In 2.4GHz Taiwan country code, channel 8 shows HT40PLUS/HE40PLUS
supported. As per latest regulatory sheet, channel 8 should
support only HT20/HE20 and HT40MINUS/HE40MINUS.
Root Cause:
When populating the master channel list, channel 12 is marked as
enabled for bw 10MHz. Therefore, for channel 8 HT40PLUS/HE40PLUS
flag is enabled.
Solution:
Channel map defines the min and max BW for each channel. The
solution here is to define the (min, max) as (20, 40)MHz instead
of (2, 40)MHz for 2GHz channels. That way, channel 12 would not
be marked as enabled for TW.
Change-Id: If208c23d1341f7fc90d6714ec09de6deafc455d4
CRs-Fixed: 2124202
On high throughput mode, send a message to perfd, through
cnss-daemon, to set the min freq for perf cluster to 700 KHz,
and release it on transition to low throughput.
Goes with corresponding changes on cnss-daemon (1834087).
Change-Id: I9c5c701fa33992e44fc3bad5e58599da0b45cbd7
CRs-Fixed: 2133069
Currently in interrupt handler of per CE, spin lock is taken for
send or receive and returns with out releasing the lock held if
target register access is not allowed. This condition will lead
to kernel panic if some other context is trying for the same lock.
Change-Id: I115f6fbb006d28097168342aa4add3526ad3939d
CRs-Fixed: 2077464
For FT_PSK connection, we use WLAN_AKM_FT_IEEE8021X to make the
security match which causes can't find the candidate AP, the fix
is to use WLAN_AKM_FT_PSK instead.
Change-Id: Ic11fa8e47ccee04621e3bb9491f138c425c91cee
CRs-Fixed: 2131598
Spinlock "lro_unloading_lock" was required to synchronize the LRO
instance being deleted when there is LRO packet inflight.
With LRO moved to qdf and LRO is tied to hif_napi, LRO instance is
active with life time of the driver. So no need to protect via lock.
Change-Id: I06f7b43e80ddf0ce5e096351b38ce954eb634a95
CRs-Fixed: 2028318
While transmitting p2p mgmt action tx frame, there is no check for
minimum payload length which can result in buffer over-read.
To avoid this, add check for header and payload length.
Change-Id: I9e3b4ef0878d934f3425d91bb6ea4a37b1892a3d
CRs-Fixed: 2103849
When BMI failed in sdio, hif_sdio_dev->claimed_ctx is not set as valid
value. Then scn, ol_sc can't be freed through hif_disable_bus as usual.
To fix this memory leak, free scn, ol_sc in hif_sdio_close.
Change-Id: I96b9b7c86ea6e84a32eec1c57c27ef042673e2e1
CRs-Fixed: 2131452
Add sanity check for pktlog messages, as we have seen a single case
of inconsisten nbuf. Assert if fails.
Change-Id: I6a076c4dfaa2ff8e1972dd795cadeca1302b2c0e
CRs-Fixed: 2131952