For wlan stop modules any pending vdevs flush happens as part
of pdev deinit. If in case of any peer ref count leak, driver
is stuck in dp_pdev_flush_pending_vdevs as the vdev is not getting
cleaned up. This is due to vdev's peer is not deleted. So during
force flush of vdev's peers set the ref count to one before peer
unmap handler.
Change-Id: Ie54996522eac870d00ea7a75c8db40a1cce09d2d
CRs-Fixed: 2658032
Read ini param 'full_mon_mode' and enable full
monitor mode support for qcn9000
CRs-Fixed: 2655293
Change-Id: I6550765246f6541453006fe2db28e01c8e06670c
Update QCA_NAPI_DEF_SCALE_BIN_SHIFT for defconfig builds to
the same value as the perf build.
Move the WLAN ext irqs to gold cores for defconfig builds.
Disable cpu isolation before moving the IRQs to gold cores.
Add the ability to move IRQs to gold cores when the cpus
hotplug in.
Change-Id: I4cfecd02a1a2200dc99adee9a324b90c877c13fd
CRs-Fixed: 2638820
The dp_should_timer_irq_yield should return the
status DP_TIMER_NO_YIELD when no yield condition
has been met. Currently its returning the status
DP_TIMER_TIME_EXHAUST which causes the timer to yield
before the expected time.
Fix the return status from dp_should_timer_irq_yield
Change-Id: Ia57aae635789f34e79285c27f5312ea38e07df5c
CRs-Fixed: 2659900
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
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
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
Dp_rx_vdev_detach() will flush all gro skb to make sure the
net_dev stored in skb is valid before this vdev is down, but
dp_rx_vdev_detach() is only invoked at the end of function
dp_vdev_detach_wifi3(). for some case, if there is still dp_peer
pending when execute dp_vdev_detach_wifi3(), dp_rx_vdev_detach()
won't be invoked.
Move dp_rx_vdev_detach() before pending peer detection in
dp_vdev_detach_wifi3() so that gro queue skb flushing can be
executed each time.
Change-Id: I0feea5b77de7efab884c0e5822c8671119892f7d
CRs-fixed: 2649385
Support RX 2K jump/OOR frame handling from REO2TCL ring.
(a) configure REO error destination ring register to route 2K jump
/OOR frame to REO2TCL ring.
(b) for 2K jump RX frame, only accept ARP frame and drop others,
meanwhile, send delba action frame to remote peer once receive first
2K jump data.
(c) for OOR RX frame, accept ARP/EAPOL/DHCP/IPV6_DHCP frame, otherwise
drop it.
Change-Id: I7cb33279a8ba543686da4eba547e40f86813e057
CRs-Fixed: 2631949
Enhanced channel frequency response (CFR) based on monitor status
ring, need to enable mon reap timer before starting CFR and disable
the timer after stopping CFR capture. This change adds interface to
enable/disable monitor status ring's reap timer.
Change-Id: I843433ac07c4d55e14b42855ee22779eb7ecb678
CRs-Fixed: 2639307
Restrict lock hold time in transmit path to only ring access time.
Also store lmac_id in vdev to avoid multi indirection.
Arrange fields in data structure for better alignment in data path access.
Change-Id: I1d32880ed88be486171be46281ec180d2a4906bf
In QCN9000, wbm release ring has msdu continuation bit
support for invld peer MPDUs. Host needs to form SG
buffer for packets with msdu continuation bit set
Change-Id: Ica03c78068d32d2c8dc609b9a50298b91dd48c0a
Initial changes for ipq5018 compilation.
Added device ID and target type checks for ipq5018 traget.
Change-Id: Ib86a371fbe66749fcb6d114e7a4a9931b684e03d
Add following changes:
a. Add CDP API to config full monitor mode
b. HTT configuration changes
c. Init/Deinit changes for full monitor mode resources
CRs-Fixed: 2632442
Change-Id: I06db5194031b3ea0f0c1e5deda20df4bc0faa0b9
Change the qdf_timer_stop to qdf_timer_sync_cancel (synchronized
timer stop), so it can wait till previous handler is completed
and then stop/delete the timer, to avoid race condition.
Also, call this qdf_timer_sync_cancel in dp_vdev_detach_wifi3,
to be symmetry with timer start in dp_vdev_attach_wifi3.
Change-Id: I3e975554b5492ccfc684ffe8b021c62ef39bf4d7
CRs-Fixed: 2644432
pdev_id is being initialized with 0. Since 0 is valid pdev_id, though
pdev is not present for that id, it is being accessed.
Initialized pdev_id to 0xFF by default. Added checks on API to
detect valid pdev_id value corresponding to lmac_id
Change-Id: I2b2a38783615494ccc08e265702815f7e562214b
Assign soc to dp_pdev soon after allocation, since the
soc pointer is required during deinit if pdev attach fails.
Change-Id: I87789deb82efe9f554b3310a904dd340c5eb9f7a
CRs-fixed: 2638378
In case the bus is in low power mode, the register writes (followed by a
memory barrier) may take a long time (~4ms). This can cause the caller
to block till the PCIe write is completed. Thus, even though PCI
writes are posted, it can still block the caller.
Hence, in case the bus is in low power mode (not in M0), or not in high
throughput scenarios, queue the register write in a workqueue. The
register write will happen in the delayed work context. In other cases,
i.e ,when the bus is not in low power mode or in high thoughput
scenarios, do the register writes in caller context.
Change-Id: Idf218e4581545bc6ac67b91d0f70d495387ca90e
CRs-Fixed: 2602029
Move RCC specific debug statistics to Data path
to avoid allocating nbuf for the PPDUs for which
MAC has not sent a Freeze TLV. Instead just update the
debug statistics at an earlier point irrespective of
MAC sending Freeze to PHY, to gather below information:
Status of number of PPDUs being captured by PHY
Status of MAC sending freeze TLV for the PPDUs
Update freeze reason for the number of PPDUs received
Add support to clear debug statistics at user's will.
Change-Id: I8def3ce1f3ecc0b169030704db3fb1fb1c0a20ee
CRs-Fixed: 2609604
Handle minidump logging using dynamic
configurablity options. Data structures
to be logged in minidump can be configured
using internal INI file.
Change-Id: I99f12b3f98c4a9c0e15c3e5d611019e6b8d0909a
Add code to move enum _ol_ath_param_t out from common DP code
and move it into OL layer
Change-Id: I92fa5f52c581a18449ab42da41ff5f6f1a2bc595
Crs-Fixed: 2560866
Currently if peer reference is reused valid flag is not set.
In peer delete function if valid flag is not set, function
returns with out decrementing the ref count and also not
releasing the local id. This leads to local id exhaustion if
back to back peer reuse happens which is common in case of back
to back roaming to same AP. As a result connection to AP fails
due to unavailability of local id. In this change set valid flag
if peer reference is reused.
Change-Id: Ibeccbc4d33aac9e4285b48a4b8abdd2276fd7ede
CRs-Fixed: 2624798
Break up the 2MB descriptor bank memory allocations for WBM
idle link ring. Use multiple page allocation and populate the
WBM idle link descriptor ring with physical addresses of each
DMA page allocated in the descriptor bank.
This is to ensure that no requests for contiguous memory
allocations are made that might result in allocation failures.
For MCL set the page size to 4KB and leave it to max_alloc_size
cfg ini param for WIN specific code.
Change-Id: Iec30321044827c0174366cc02df25a42d38309e0
CRs-Fixed: 2565817
Host queries for reo hw stats by sending reo queue status command
on all the rx tids. After sending host waits to receive for all the
rx tids reo hw stats. If the hw stats reo status is not received for
all the rx tids with in the specified timeout value corresponding
peers's reference is released. In parallel if disconnect happens
from userspace, there is always a chance to access the freed rxtid
reference in rx hw stats callback. So in case of rx hw stats event
timeout ignore processing the reo command status rx stats callback.
Change-Id: I0aba346a25564a3c29751f1f5a1d4e9204b93d33
CRs-Fixed: 2619720
Command ring is now renamed to credit ring on QCN9000
and used for credit based flow.
Renaming the ring to give meaningful name.
Change-Id: I726aed19477fcfb256e4e0cca8ddb9389035b58c
CRs-Fixed: 2562640
Peer key security type is set in cdp_set_pn_check,
this API is called in key install step, but only
update Ucast field even if in Mcast key install.
This may be set wrongly if Ucast and Mcast security
modes are different. Add a new API to set security
modes of differ key types separately.
Change-Id: Icaa63139d117de75633ca1f81eb618c6b9294b53
CRs-Fixed: 2617461
Increase the peer ref count before requesting for reo
queue stats and release the ref count after receiving
the queue stats on the reo status srng.
Change-Id: Ife3b87951e767414efa1bfb45486cd364578d2a7
CRs-Fixed: 2604862
Memory optimization of unused TX rings by not configuring rings that are
not being used. Configure 2 rings for host in the case of IPA, instead
of configuring 3. If IPA is disabled then configure only 1 set of TX
rings for host.
Change-Id: I251606c728f3020a13e45e8c8386970c8a641f0a
CRs-Fixed: 2530572
Currently if any layer tries to delete a peer which
has already been deleted, there is no check to stop
the delete operation. Deleting an already deleted peer
is incorrect.
Check if the peer is valid before we try to delete
the peer.
Change-Id: Icc280554a652e0ee3f1ea38c98fb130ea3c1ae80
CRs-Fixed: 2613595
Maintain packet counters for each peer based on protocol. Following 3
protocols are supported
* ICMP (IPv4)
* ARP (IPv4)
* EAP
Change-Id: I56dd9bbedd7b6698b7d155a524b242e8cabd76c3
CRs-Fixed: 2604877
A framework is added where the filters for every
mode are stored on a radio instance. Whenever a mode comes
up, it stores the filters in the radio and calls a
common API which iterates through all the enabled
mode filters and loops through them to create a
superset of filters which is sent to HTT.
This framework can be extended for new feature addition
which set filters for the monitor status and monitor
destination rings.
Change-Id: I9b739af2086bbe261b65c57af0a5bd867294f30f
CRs-Fixed: 2585872
pdev_id and mac_id were incorrectly passed
as arguments to dp_get_lmac_id_for_pdev_id
Fix passing the arguments in right order to
the API to access appropriate lmac_id
Change-Id: I42773a6ccae2f87f128d3c462e6a332fe658f45e
CRs-Fixed: 2611926
Replace QCA_WIFI_QCA8074_VP with CONFIG_WIFI_EMULATION_WIFI_3_0
since VP platform is not being used anymore.
Most of the parameters present inside QCA_WIFI_QCA8074_VP are related
to emulation timeouts. Hence replacing it with a more meaningful flag.
Change-Id: I22a0e5803e765333947f1613b376dcc6bd25b5af
AST entry delete logic has some conditional checks making code with respect
to HTT V1 and V2 messages making it tough to follow.
Change-Id: I229324446134b32021a956fb689e4726256fcc28