Initiate self recovery when firmware failed to send the unmap
event within unmap timeout OL_TXRX_PEER_UNMAP_TIMEOUT value.
Change-Id: I053e34682cb610cb258c7dabdb3f84a4b59525f1
CRs-Fixed: 2023387
Fix replenishing logic by taking care of fragments as well
in monitor mode. Also drop the packets with mpdu_length_err
bit set in rx attention desc and don't send those packets to
upper layers.
Change-Id: Iaeeb0e40e4988ca5a2d4c5e7c98ed3f82dfca533
CRs-Fixed: 2037633
A recent datapath bus suspend/resume change modified the API for the
corresponding callbacks. Update callsites to use the new APIs.
Change-Id: I8efc62ecab311e5ded3a393c11a436ce9204e72d
CRs-Fixed: 2047509
1. Add an extra parameter pdev id to
qdf_trace signatures to avoid compilation break.
2. This variable allows to collect records per pdev
for Lithium based chipsets.
3. Set this variable to a default value QDF_TRACE_DEFAULT_PDEV_ID
for older chipsets.
Change-Id: I2f4c2e3525ac0d1d53f1af3db7e43acadf6ab835
CRs-Fixed: 2049412
When data traffic is running on HL card, it will hit watchdog
bark issue. It's caused by wrong pointer usage in ol_tx_queue.c.
Add fix to sync with qcacld-2.0.
Change-Id: I7869ef86839e69e515ccd70795b3909abc09d46c
CRs-Fixed: 2053632
Changes done to head pointer in ol_rx_add_mpdu_to_list() is not
returned back to caller as arguments are sent as pass by value
Change-Id: Ie8c98af2ea4e03b0678df243aa0c832165494168
CRs-Fixed: 2046362
In ol_rx_fwd_check, do not remove nbuf Rx packet in case intra-bss
forwarded traffic. Regular Tx completion will take care to free the nbuf
and its tracking.
In ol_rx_defrag_decap_recombine(), it is callers responsibilty to free the
source nbuf if concatinate succeeds.
Change-Id: Iaf83524924e312bf819483de38603241f45170a5
CRs-Fixed: 2047377
Record ol rx indication events in a global ol rx indication record
buffer to have history of msdus received, no. of buffers replenished,
etc. in rx indication messages.
Change-Id: I96cf27a209c81208c6f6566b5e57116b2cf233e8
CRs-Fixed: 2012485
Modify the legacy LRO implementation which is in HDD to
use the implementation in QDF instead. This is to avoid
code duplication and to unify the LRO implementations for
Napier and Helium.
Change-Id: Ie9d3bb6d3dcda5a7d1d5fda6e7cbdef92be30461
CRs-Fixed: 2042812
Reduce the excessive failure logging of OL_TX_SEND. Make it as debug log
so that it will not hog the console. OL layer tx flow control stats will
catch the dropped packets.
Change-Id: I57feee9b4eeb7bf6c6c0c239c2a30041936fa758
CRs-Fixed: 2047953
vdev and pool could be NULL during processing the forwarding packets
processed during the driver deinit.
Add a code to return false if pool is NULL in ol_txrx_fwd_desc_thresh_
check(), then the caller will discard the packet without any further
processing.
Also return false when vdev is NULL.
Change-Id: I45afcbe0e8b953bd1be7b3f1f5315f35879edec5
CRs-Fixed: 1112619
Add TSO segment debug code, in a featurized way, so that
when disabled it will tolerate redundant returns to the internal
pool and when enabled will check sanity on free, and record a
history of last 16 actions on the segment in the object.
Goes with the corresponding cmn component counterpart.
Change-Id: Ifab52fc2032da4d53b708b3c6716d5270c0690c1
CRs-Fixed: 2031485
Fix memory leaks of TSO num segments by freeing remaining
TSO num segments in ol_tx_ll_fast and ol_tx_ll if somehow
allocated tx desc is NULL.
Change-Id: I577a95b784c776633cf685cd16b101755a48c521
CRs-Fixed: 2014587
Adding vdev id based sanity check while checking if tx desc
is already freed or not in ol_tx_free_descs_inuse().
Change-Id: Icfc66ccac6829f922a76c35a3309094f374fd022
CRs-Fixed: 2035470
ol_tx_flow_pool_map_handler() need not hold the lock to call pause_cb.
pause_map_lock will takecare of any contention between pause and unpause.
Change-Id: I1adcfc156db55946d3a647269ecc2c09ea7981ce
CRs-Fixed: 2037277
Add the following:
- Global cumulative counters for posted and received.
- CPU for each individual records
- Counters for refill timer starts
- iwpriv support (dumpStats 10) to dump the counters
CRs-Fixed: 2001331
Change-Id: I66a8a818ffa0b2522358bab404c92a3cdaa603f7
In case of parallel rx execution, fill_count was being updated
by multiple threads and this was causing fill_count to be incorrect
in parallel rx execution cases. This was causing rx ring to be under
filled and in time was causing rx starvation (data stall).
Fix this by:
- making sure that we always fill the right number of buffers based
on the msdu_count in the in_order_indication message.
- making sure that only one execution thread fills the ring
- making sure that the lock holder (filling the ring) does not
run too long by introducing a max fill limit, in which case the
filler will give up and the contender (the other rx execution
thread) takes the lock and fills the ring itself.
CRs-Fixed: 1103851
Change-Id: I59ee2903d51877afc112a1a76b7a5529f1c6a5c0
Make sure that peer is deleted at every path where
the ref-count is decremented and it reaches zero.
Change-Id: Ibaaae1e66855ebbd285b3647f9b862e823b6f335
CRs-Fixed: 1094439
When ol_txrx_pdev_post_attach fails, the return values are not
correctly set, and this could cause several issues.
Fix to assign return values correcly.
Change-Id: I43fb97bbdb10e019e02bf289f5b4995461eb75db
CRs-Fixed: 1113222
Add support to add memory tracking in tx path in WLAN driver using
already present infrastructure for memory tracking.
Change-Id: I6a2c9890e0af1fd51c4e2dfcded68f0075a3a4ef
CRs-Fixed: 2025668
Race condition is happening when tx traffic is running and simulataneously
suspend is going on. hdd_hard_start_xmit() is called under txq->__xmit_lock
and in case of low descriptor scenario, it goes to pause the netif queues
and trying to take adapter->pause_map_lock for doing so which is already
acquired by another thread. In another thread, suspend indication is being
preocessed and as a result is trying to pause netif queues with
netif_action WLAN_NETIF_TX_DISABLE which takes adapter->pause_map_lock and
then calls netif_tx_disable() which is trying to take txq->__xmit_lock
already taken by the thread executing hdd_hard_start_xmit(). This leads to
a deadlock situation.
Replace netif_tx_disable() with netif_tx_stop_all_queues() as
netif_tx_stop_all_queues() is doing the same thing as netif_tx_disable()
only without taking the txq->__xmit_lock which prevents this deadlock.
Change-Id: I5afafe6435707bd8f0e87972a740f908d06ce847
CRs-Fixed: 2030933
Add structure changes for querying WDI-stats, register the callback
functions for IPA to query WDI stats and sets the quota limit
Change-Id: I05d9d50fad735fa0a57c4de23c81461f6e12b648
CRs-Fixed: 1095710
Return failure if ce_send_fast fails and let caller, HDD free the Tx msdu.
If it happens to be TSO segment then free the to be trasmited TSO segments.
Change-Id: If3a16ca841e63e7941fe732013d3b3c351a4a286
CRs-Fixed: 2004780
Add ref_cnt implementation for flow pool to synchronize
usage and deletion of flow pool.
Change-Id: Idb52c74df6a771b776e3df6bf4aea5c150b5fc7a
CRs-Fixed: 2025757
Introduce different ol_trxrx print apis based on log levels.
Move the logs to appropriate log levels to reduce
the log spam in kmsg.
CRs-Fixed: 2019261
Change-Id: I14dfedb1a71b10043571112f05965935dd91a90e
In one version of ol_tx_ll_fast a null tx_desc will be dereferenced.
ol_tx_desc_vdev_update is called when tx_desc is guaranteed to not
be null. Move the vdev_id assignment into ol_tx_desc_vdev_update
to simplify the code and fix the null pointer dereference.
Change-Id: I01b2e81ee3f19cdf3f2f74ccc575df767891f472
CRs-Fixed: 2020708
Reduce the logging level to info so to reduce the spamming of kmsg and
avoid watchdog bite due to this.
Change-Id: I26ef04f7a82fc2e2a59da67a28dba2cf152ca251
CRs-Fixed: 2024738
In one of the recent fixes, we are setting the TSO seg contents to zero
when the segment is added back to the free list. The segment cookie is
not re-initalized at this point. Hence, when this segment is
re-allocated, it fails the cookie check and there is a system crash.
Fix the issue by reinitializing the segment cookie after zero-ing out
its contents.
Change-Id: I7947e3ce4f80f1b19ebf5ef73ff75dee19ec7364
CRs-Fixed: 2011786
On stability test bed a double free of TSO segment is reported via the
TX completion path. Made following changes -
- Check for duplicate TX completions before freeing TSO segments.
- Add debug logs to check if TX descriptors are being freed from the
control path.
Change-Id: I30178de90cd0161001ded70adc26066adc9cbcb3
CRs-Fixed: 2006868
Currently NAPI stats are retrieved as a part of iwpriv getStats command.
The buffer available for this command is limited and NAPI stats get
truncated.
Add a new dumpStats parameter (9) to dump NAPI stats.
The following command will dump NAPI Stats into kmsg.
>iwpriv wlan0 dumpStats 9
Cleanup existing getStats
Change-Id: I0d804295d96a495b4afa576c8258f08c9c2b9bbb
CRs-Fixed: 1076563
The dump_tx_desc function is called to report the number of freed and used
tx descriptors when a suspend is rejected by data path. The debug code
was directly referencing a data field whereas the code to check the freed
and used descriptors used a function that reports a different number under
certain compilation flags. Use the function in the debug statement such that
the value checked is the value printed.
Change-Id: Iad3f519dc88319c7a421f77376dd43e15e6eaf09
CRs-Fixed: 1113880
When flow pool is created, pool status is set to FLOW_POOL_ACTIVE_UNPAUSED
irrespective of whether netif queues are paused or not.
Also, when descriptors are transferred from invalid pool to deficient pool,
pool status is not checked. So, if deficient pool is paused, then even
after receiving required descriptors from invalid pool, its status and
netif queues will still remain paused due to which traffic will not be able
to resume ever.
Sync pool status with netif queue status by:
1) Unpausing netif queues as well when pool is created.
2) If deficient pool is paused and on receiving descriptors from invalid
pool, no. of descriptors goes beyond start threshold, unpause the
queues and set the pool status to FLOW_POOL_ACTIVE_UNPAUSED.
Change-Id: I69390e40130892d218372e4a8a0ab4b0c7b94b7e
CRs-Fixed: 2025759
Replace policy manager header file include as part of policy manager
moving to host common.
Change-Id: Ie1f9d6675cc373c3325c9e76514f48299932cdda
CRs-Fixed: 2009818
Free memory allocated in ol_tx_desc_dup_detect_init() and spinlock
created in ol_txrx_pdev_post_attach() in case of failure condiiton.
Change-Id: I7e3909622e5b63af2d20c2c8cc0a8cc4350e4085
CRs-Fixed: 2024377
Refactor flush rx queue function call based on soc by adding an
interface to CDP funtion indirection table.
Change-Id: I2d05acd023baf156c5b0752447d76d0e9e92ff53
CRs-fixed: 2023399
Separate out pdev detach processing as ol_txrx_pdev_detach()
and ol_txrx_pdev_pre_detach() corresponding to pdev attach
functions ol_txrx_pdev_attach() and ol_txrx_pdev_post_attach()
respectively.
Change-Id: I7fdbe70ad8262a57b61a742fcfb2779e323172af
CRs-Fixed: 2010653
Automated code style checker detected multiple instance of "no space
before tabs," so fix those issues.
Change-Id: I93248e3cfafa047c4fa8c9553769f9457086d01a
CRs-Fixed: 2021507