Return DP_SW2HW_MACID if per_pdev_lmac is set.
This is needed when we need to get target pdev_id without
doing pdev lookup.
Change-Id: If83f29bbcf23175708ba7eaf58e01e040ccb5a45
This mode is supported through hw_mode_id 7. A special mode for
IPQ8074 platform alone to bring up single pdev alone on 2G mode.
FW would advertise the mode 7 support through the WMI service
ready message and this mode will be the default mode for AP-HK10 alone.
Added new APIs in tgt_reg to get pdev_id from phy_id and vice versa.
Fixed all places where pdev_id is used to acces psoc regulatory params
and converted them into use phy_id
Change-Id: I14920627f5e4ddafcc37440fa3281150b65ff04f
CRs-fixed: 2653042
This mode is supported through hw_mode_id 7. A special mode for
IPQ8074 platform alone to bring up single pdev alone on 2G mode.
FW would advertise the mode 7 support through the WMI service
ready message and this mode will be the default mode for AP-HK10 alone.
Added preferred_hw_mode and target_pdev_id into dp structures so that
they can be used to configure the dp rings for this particular mode.
Also changed the lmac_id to target_pdev_id mapping for mode 7.
Change-Id: I3aae46fea13132eebaf7d37cff68ef517253d229
This mode is supported through hw_mode_id 7. A special mode for
IPQ8074 platform alone to bring up single pdev alone on 2G mode.
FW would advertise the mode 7 support through the WMI service
ready message and this mode will be the default mode for AP-HK10 alone.
Added a function to update the svc_id mappings for this mode as FW
requires WMI commands to be received through CE 7 for this mode.
Also adjusted the preferred mode precedence to give high precedence
to mode 7.
Change-Id: Id637c59e9528779e38737b7d74b000abf2e9db9d
As part of new kernels it is suggested to move to the upstreamed
wakelock apis for registration and unregistration.
Change-Id: I80b8dd85c6ad1b50951fff9da810e8e96a402752
CRs-Fixed: 2658888
Enable SW2TCL_CMD ring for data on QCN9000, QCA8074 V2/V1
and IPQ6018 targets.
Enabled 4th Tx ring for data enqueue to HW.
Transmit completions for packets from CPU0 and CPU3 are routed to
WBM2SW Completion ring 2.
WB2SW completion ring2 is mapped to CPU3.
Change-Id: Ied4c4704e1f8623e909ad45c547a611de26c7ec5
Use QDF_BUG instead of the qdf_assert. Since the qdf_assert is not
defined anymore.
Change-Id: I2bd46def51823829604b699321f9a02fcd3b07c6
CRs-Fixed: 2658545
In function 'target_if_vdev_mgr_multi_vdev_restart_get_ref',
'param->num_vdevs' may have chance to hold values larger than
WLAN_UMAC_PDEV_MAX_VDEVS which will result in OOB
when access array 'vdev_list' and array 'vdev_timer_started'.
This change add sanity check for 'param->num_vdevs'to avoid
OOB.
Change-Id: Iae431fdc7006fe8c80d15d400d8a0423e9284eb7
CRs-Fixed: 2644122
The WBM release ring size of 64 is a bit too
small for bursty nature of inwards traffic.
In monitor mode, there can be a huge ingress
of packets and returning the link descriptors
back to the WBM can fail due to its small size.
Increase the WBM release ring size to match the
RXDMA buffer ring.
Change-Id: I41c755f29566cd8cb99520736d34304344a82776
CRs-Fixed: 2650480
Currently, in monitor mode, once the status ring is reaped
we do not check again if there are new entries added in the
ring during the monitor ring descriptor processing. This
can cause backpressure on monitor rings when there is very
high throughput or a bursty inflow of packets.
Add the logic to continue reaping the monitor rings, until
the work budget or a time quota is not exhausted.
Change-Id: Iee95ac8aec92eabb3a8037b1dd9cf0c6e1dbe10b
CRs-Fixed: 2650480
Currently the timer handler, in monitor mode, is
try to process all the rings based on the mask. In
monitor mode only LMAC rings are to be processed
and the UMAC ring processing can be avoided.
Process only the LMAC rings for monitor mode.
Change-Id: Ie48722d80722350129b5c079b67ede06945f5849
CRs-Fixed: 2650480
In monitor mode, the link descriptor return failure
can occur many times, due to the timer interval.
Logging each failure on the console floods it with
too many unnecessary logs.
Ratelimit the link descriptor return failure in monitor
mode and also change its log level to info.
Change-Id: I5709a33087c6d9271d4246f04ef1acd274fba0f1
CRs-Fixed: 2650480
The current time interval for monitor mode timer is
10 milliseconds. This time interval is a bit too high
in case of high throughput sniffing, thereby causes
the monitor rings to be full before the timer interrupt
comes and reaps the ring.
Decrease the timer interval to 5 milliseconds
Change-Id: Ib074ef0c09fde995a7481c056ad70eb809c5a89e
CRs-Fixed: 2650480
The driver doesn't ageout connected BSS from rrm scan
result after the scan default ageout time. This results
in connected AP information sent in beacon report request
in table mode always.
Introduce scan api to get the scan age out time configured
from scan module. This value will be used as the threshold
in rrm scan filter.
Change-Id: Ib3981538faf179cff53936770f705d41922dca66
CRs-Fixed: 2650914
In mon dest ring, for m_copy mode, MGMT packets are received with
FCS error.Due to which multiple skbs (Head_skb with
attached frag_list) for single MPDU are sent to upper stack.
Add fix to drop FCS error frames in mcopy mode.
Change-Id: I6fbf2ea2bfdc489b56a412ece3c644ba2ce87929
Decouple software tx_descs from TCLring descriptors and Increase
TCLring descriptors max INI config limit to 2k to 32k.
Change-Id: I18d014cdb0c1e26b7661ff65aaa8dffe791d7163
CRs-Fixed: 2657056
The current API to get if a command is present in the active
queue was executed without the lock acquired. Here, at times
we get the queue size as one, and when we actually get the command
from the active queue, we get nothing.
This could be that the command from the active queue was removed
in another context almost at the same time, when we trying to read
the command from the active queue.
To avoid this, we do the operation of reading the queue size and
reading from the active queue with the queue locks held, so no
other context could remove the command from the active queue while
we are reading the command from the active queue.
CRs-Fixed: 2644038
Change-Id: Icca019320b1ba2d7d751432142b9bad50519d701
This is to enhance statics for runtime put/get, which is
to detect if there is mismatch for usage_count.
Change-Id: I24cddb9d10e4cb675c8375cbd0f589c7718bd680
CRs-Fixed: 2647972
As per IEEE 802.11 2016 specification Annex E Table E-5, add a new
operating class table for China.
Change-Id: I60d610d637c64df497c7c363a893b8f7efdc8a6c
CRs-Fixed: 2656789
Skip the freeze data and capture type related processing
if freeze data is invalid.
CRs-Fixed: 2637644
Change-Id: I97da3b9dc0d655e47dec534d04e0897af57e33d8
Currently the driver allows roaming to the BSSID
which it is already connected, which can lead to
many unexpected behaviour, for eg. if the SAP
to which the DUT is connected turns off, then the
DUT would try to roam to other BSSID of the same
SSID, and in case the SAP turns on back in time,
then the DUT would re-associate to the same BSSID.
Now if the subnet may change, and since the DHCP
does not happen again in roaming, it would then
lead to NUD failure.
Fix is to introduce an ini to allow/disallow
roaming to the same BSSID.
Change-Id: I38887bbfb74c4856a06956591be4159734f7fbf0
CRs-Fixed: 2650346
Problem:
1) When operating in 36VHT160 for example, if radar is hit without
bandwidth reduction dfs_radar_add_channel_list_to_nol_for_freq will add
only DFS channels (52,56,60,64) to NOL and disable them corresponding in
regulatory channel.
2)dfs_mark_precac_nol_for_freq will add all channel non-DFS(36,40,44,48)
and DFS (52,56,60,64) to preCAC nol. 3) after NOL expiry
non-DFS(36,40,44,48) will not be removed from the preCAC tree and
therefore cannot used (as part of the full 160Mhz channel) in future to
perform agile.
While processing RADAR the dfs_process_radar_ind() prepares the
list of frequencies (freq_list) to be added to NOL. This list
also contains the non-DFS channels.
Only DFS channels will be added to the NOL in
dfs_radar_add_channel_list_to_nol_for_freq() based on the channel state.
On adding to NOL, the channel state is also changed to disabled.
The subsequent APIs that will need to process
NOL(dfs_mark_precac_nol_for_freq() for instance) will have only the
freq_list. Since the channel state is also changed for DFS channels in
freq_list, these APIs cannot differentiate a NOL channel and nonDFS
channel (as channel state is not DFS for both). Thus not adding
NOL channels to PreCAC NOL list.
Solution:
Use the NOL frequency list (nol_freq_list) that is the output
of dfs_radar_add_channel_list_to_nol_for_freq() to process NOL.
CRs-Fixed: 2655016
Change-Id: If3608405a5e8e63d93157914080dde4c01c1e0bb
Crash happens if wma_handle->link_stats_results is allocated and
freed by two threads at the same time.
WMI event should be handled uniformly whether it is from htc or qmi
Change-Id: I415fd228d15c1342944e77a74e564fe46dd9a5c5
CRs-Fixed: 2648865
Since the precac tree now supports until 165MHz, the APIs to check
if the channel has done precac or not,
dfs_is_precac_done_on_ht20_40_80_chan_for_freq() and
dfs_is_precac_done_on_ht8080_ht160_chan() needs to be updated.
Change dfs_is_precac_done_on_ht20_40_80_chan_for_freq() to
dfs_is_precac_done_on_ht20_40_80_160_165_chan_for_freq() which can
check if precac is done on a 20/40/80/160/165MHz channel.
Change dfs_is_precac_done_on_ht8080_ht160_chan() to
dfs_is_precac_done_on_ht8080_chan() which can check if precac is done
on a given 80P80MHz channel other than the restricted 80P80MHz
(165MHz) channel.
Change-Id: I90312f968547d16b2d93783138c0f870439c6c26
CRs-Fixed: 2653171
Currently, the expectation from the BLM is to flush
all the BSSIDs which are present in the blacklist
when the user does an explicit on-off, which is
meeting the expectation, but the FW does not flush
this info which leads to async between the two.
Fix is to send zero blacklist BSSID to FW during
Wifi-off so that it also flushes the list.
Change-Id: I0b7c10a31c1e47dc40d0390697efe41232c61cb1
CRs-Fixed: 2654183
As part of new kernels it is suggested to move to the upstreamed
wakelock apis for registration and unregistration.
Change-Id: Icc2bdeb6201fc65d351f75c5b49968fd23e2bba8
CRs-Fixed: 2639311
Macro DMA_COHERENT_MASK_IPA_VER_3_AND_ABOVE is used in non
IPA offload case also so bring this macro definition out of
IPA offload feature and change it to DMA_COHERENT_MASK_DEFAULT.
Change-Id: Ib03aa8ae2938e1de1a957660923a711d452a9337
CRs-Fixed: 2649909
The vdev_resp timer status is a persistent variable that is not reset
after a cycle of send/timeout is completed. This causes the old value to
induce faulty behavior for the next cycle.
For example in the case when vdev_start response is dropped, the timer
status is set to TIMEDOUT and this status remains as such for the next
time vdev_start response is received successfully. In this case, instead
of deleting the timer, as the status is a faulty TIMEOUT - no action is
taken. This causes the kernel to assert.
To resolve the above issue, reset the vdev_resp->timer_status after
stopping the timer.
Change-Id: I8632c117753a7bb1f041d00c4d9395163732f5d9
CRs-Fixed: 2654040
Is some cases, FW wants to adjust BA session parameters
FW sends a HTT event and HOST helps to send out DELBA
and modify BA win size in the next round of ADDBA req/resp
exchange to reduce following RX AMPDU aggr-size
Change-Id: I97777ff59a18346f2cd4e2e562c8ae6acdcd69d7
CRs-Fixed: 2644641
Currently there is no provision to configure OCL mode in FW during
driver bootup.
To enable this configuration add a new WMI API wmi_unified_send_ocl_cmd.
Change-Id: Idb936172612ff2ed8ea029d8a363b758625eb97d
CRs-Fixed: 2647631
whenever there is a wmi command timeout and recovery is triggered,
the htc credit history gives insight into whether host had the credits
to send the command to firmware. Add the credit history from the
htc module.
Change-Id: Iaa760981296862f8af496a23e3c24bc2fda0fb55
CRs-Fixed: 2651744
MCL path add the desc back to freelist when FLUSH
failed. It may cause the CMD pending in free list
is even larger than REO_CMD_RING max size and lead CMD
flood then cause REO HW in an unexpected condition.
So it's needed to limit the number REO cmds in a batch
operation.
Change-Id: Ib6b97f0693feb7bb5829bda4683248b495b6c7b3
CRs-Fixed: 2642516
Add HIF_INFO to log the linkstate_vote value in the hif_vote_link_up()
and hif_vote_link_down() functions in order to log the occurences of
the rare event when we vote for link up/down.
Change-Id: I7549b3400977583bd2cd4ec4fcb3f16dd0865ce7
CRs-Fixed: 2648860
Initialize FFT bin boundaries of primary 80 MHz, 5 MHz
and secondary 80 MHz based on the relative position of
primary 80 MHz and secondary 80 MHz segment.
CRs-Fixed: 2653675
Change-Id: I0c9f1fbb55d1023b437c9787e753f3e154b5e08e