During cleanup path in STA mode, remove false assert as there is just self
dp_peer with no TX and RX TIDS setup.
Change-Id: Id6be7a6b3823c41ddbff67926bda240a4e9b6bd0
CRs-Fixed: 2547680
Add the following HAL macros:
1. HAL_RX_MSDU0_BUFFER_ADDR_LSB
2. HAL_RX_MSDU_DESC_INFO_PTR_GET
3. HAL_ENT_MPDU_DESC_INFO
4. HAL_DST_MPDU_DESC_INFO
Add relevant function pointers to retrieve
descriptor info from the macros based
on chipsets.
Change-Id: I99ce7566a668180c7849eedea915b6f23a8dbf35
CRs-Fixed: 2522133
Implement hal_rx_get_mpdu_sequence_control_valid
API based on the chipset as
the macro to retrieve sequence control valid
value is chipset dependent.
Change-Id: I01a006094d0330060e9ff1a91200c48c2426f38d
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_addr4 API based
on the chipset as the macro to retrieve
addr4 value is chipset dependent.
Change-Id: Ie35d01de1619a8ab540bb1b2019a15b436efb7d4
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_addr3 API
based on the chipset as
the macro to retrieve addr3 value is
chipset dependent.
Change-Id: I3983599b656e82170de5905c08daee3ec164e7a0
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_addr2 API
based on the chipset as
the macro to retrieve addr2 value is
chipset dependent.
Change-Id: I4026db892d4f2f41db72c50f780ba898b8a17fa7
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_addr1 API
based on the chipset as the macro to
retrieve addr1 value is
chipset dependent.
Change-Id: I7ed88f2243d397c9d605a08d3b93e17f0004c63d
CRs-Fixed: 2522133
Implement hal_rx_get_mpdu_frame_control_valid API
based on the chipset as the macro to retrieve
frame control valid value is chipset dependent.
Change-Id: I49d16ae44b2e9567ff746d2088058f0c1025ea40
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_fr_ds API
based on the chipset as the macro to
retrieve for_ds value is chipset
dependent.
Change-Id: I6d41d02ac50cae752567d98645f0447cc122a84f
CRs-Fixed: 2522133
Implement hal_rx_mpdu_get_to_ds API based
on the chipset as the macro to retrieve
to_ds bit value is chipset dependent.
Change-Id: I36d9d14e226bcc604b91d8aecbe52836c5a12272
CRs-Fixed: 2522133
Rx defrag waitlist was not getting cleared during dp_peer_rx_cleanup in
the case of STA mode even though the tid was getting deleted. This
created a scenario where the next time dp_rx_defrag_waitlist_remove was
called, it was trying to access now invalid memory. If a vdev was
disconnected in the middle of receiving traffic, then the tid would be
deleted but the rx frag waitlist would not. Upon reconnecting, the
reception of the next frag would cause a crash due to the now invalid
memory in the waitlist.
Change-Id: I5bb1a31f38fa45128d0f35fafaddaf729c99489d
CRs-Fixed: 2538879
Currently as part of rx frag packets handling, nbuf is unmapped,
but the corresponding rx desc unmapped bit is not set. The fragment
is stored until all the frags are received. Only after all the frags
are received defrag packet is reinjected back to reo. While in between
if driver is unloaded, as part of unload rx desc buffer pool is freed.
During buffer free corresponding rx desc unmapped bit is checked and
if the bit is not set buffer is unampped and then freed. This leads
of double unmap in case of the stored frag list buffers. As part of
this change set the unmapped bit during nbuf unmap.
Change-Id: I24cf1e88f3102bc985f95d2dc325509308a7bef9
CRs-Fixed: 2532302
Make change to remove usage of void pointers for
ring descriptors and instead use a opaque pointer
dp_ring_desc_t.
Change-Id: Ia1e9a3da9eaa3cccf297b2135b52a72f2fe21431
CRs-Fixed: 2484409
Add new CDP API cdp_register_rx_mic_error_ind_handler to
register rx mic error callback. Also, define new structure
cdp_rx_mic_err_info for holding MIC error information.
Change-Id: I4d5d6426b1d5f04848afd48f6dbf51edba291a20
CRs-Fixed: 2488424
In some case, HW will fill in unexpected peer_id into RX PKT TLV,
if this peer_id related peer is valid by coincidence, but actually
this peer won't do dp_peer_rx_init(like SAP Vdev self peer),
then invalid accessing to peer rx tid will happen.
do SW WAR that add checking about peer tid array, if not initialed,
free the rx nbuf.
Change-Id: Icf196b4f92eb341e1ace5128c681d24c41dff6cd
CRs-Fixed: 2468537
SMMU fault is seen in REO reinject path since skb buffer
is not mapped to IPA SMMU domain. Thus map skb buffer
to IPA domain in REO reinject path.
Change-Id: I293353bfce961324af6c6372611e8a57cc13f347
CRs-Fixed: 2463376
In Rx path, We really don't need to flush data and invalidate.
Hence replacing map/unmap flag to QDF_DMA_FROM_DEVICE.
Change-Id: I3de0c73e11a08a875114167a55fe9fe4432f1dd4
CRs-fixed: 2449712
certain fields are now retrieved from reo_destination
ring to nbuf cb. This avoids accessing the RX_TLVs
which are spread across two cache lines. This is
helping improve small pkt (64 byte) performance.
Change-Id: Iee95813356c3dd90ab2e8a2756913def89710fb1
CRs-Fixed: 2426703
Per the Linux Kernel coding style, as enforced by the kernel
checkpatch script, pointers should not be explicitly compared to
NULL. Therefore within dp replace any such comparisons with logical
operations performed on the pointer itself.
Change-Id: I61f3adab1208682d36235421f44a048e35df346d
CRs-Fixed: 2418258
discard fragmented pkts if msdu count is greater than 1
and also some code clean up
Change-Id: I1d0857b5e22f0e4763cfa355b8c92bde697d7540
CRs-Fixed: 2382353
Check if peer is valid before access during flush.
Check waitlist during peer cleanup even if REO queue was
not allocated, since these are independent.
Add a timeout to avoid calling flush function too frequently.
Change-Id: Ib8da2014f81a48ccc3ca6a330209a942ac0998a2
peer->rx_tid[tid].array is initiailized when peer TID is setup.
It seems like we are processing the fragmented Rx packet before peer
TID is setup. Drop the fragmented packet in this case.
Change-Id: Ic076e59a9074efff9fed9f9154aa973c41f67341
CRs-Fixed: 2388684
Reduce log level from info to debug level for
received fragmented packets in dp_rx_defrag path.
Change-Id: I0d1c7bf91e0337a56ea9e52565e0cbdf47a1772d
CRs-Fixed: 2385483
Link descriptors should be returned to WBM release ring if
fragments are not reinjected due to defrag errors.
Change-Id: Ia37db9f195f6848092918cf7cc221dc50e827ac5
Need to use tid_lock to protect the rx_tid data structure in the
dp_rx_reorder_flush_frag function. Or else there will be race
condition issues.
CRs-Fixed: 2357226
Change-Id: I860a64b529f0548eced7b537c4180a2c57175a56
Change rx defrag related log level from info to debug,
it's not necessary to print normal rx defrag operation related
log default, this can avoid panic caused by excessive logging
when receive lot of fragment data.
Change-Id: Id712d546a760377a6f59b321f73d7ae5ca4af564
CRs-Fixed: 2353869
Currently buffers reaped in REO exception ring handler are being
replenished into 5G MAC ring always.
Fix this by using appropriate MAC ring for replenish
Change-Id: I04f5a1179a7df4b018b6a0b435e2a0421ef534e5
The excessive/unnecessary ERROR level log during defrag_flush will
cause WDOG timeout on MSM platform. Also, it will lead to the
spinlock be held too long.
Move them out of spinlock, and de-priority/remove unnecessary one.
Change-Id: I3501e0e40a268f073c80ab36abfe762a007e5672
CRs-Fixed: 2342065
In rx defrag reo inject frame when next hop and cached tail pointer
becomes equal src ring next entry desc returned will be NULL. There
is no NULL check and NULL pointer is dereferenced. In this change
add NULL check and return error status when the next entry desc is
NULL.
Change-Id: I79ca6ba6e6501f03c0c5d188780745b6931102fe
CRs-Fixed: 2318701
1. Address out of bounds array access while
populating mcs rates.
2. Use cdp_sec_type enum inplace of htt_sec_type
for common code.
Change-Id: I0ae1e0acaf7422e73dc26befc9f066f3f424ec6b
CRs-Fixed: 2327153
Currently peer reference is used with out taking any ref count.
In parallel context execution on different core peer reference may
be cleaned up in peer unmap event. So take ref count while using
the peer reference and decrement after done with it.
Change-Id: I02ca172cbdc4309fabd3bbbad00940826662bbd3
CRs-Fixed: 2301963
Set the frag list of the nbuf of a RX defragmented pkt to NULL.
This list will be used to stich the fragmentation list.
Change-Id: I341b0085c123a72dcd74d7f76a4979286e75dc8e
CRs-Fixed: 2297483
Reduce the log level for TX/RX path stats
as excessive logging is causing timeouts.
Change-Id: I3c7ef1f75373bfd319b02aab98f5bef099086bac
CRs-Fixed: 2298368
Currently host is taking long time to process the peer unmap
event from FW which is executed in softirq context. Reason is
as part of unref delete spin lock is taken and error level logs
are logged and error level logs take more time to process when
some other printks are already in progress to write to console.
This is leading to change interface failure from SAP to STA as
due to longer time processing of peer unmap event.
Reduce the severity of log level such that logs are directed to
wifi logger logs instead to console.
Change-Id: I543619036aa06c9ac4d97d18e44465b3c9b71806
CRs-Fixed: 2271260
Clean up datapath component prints by correcting trace levels for
regularly occurring prints and removing newlines from converged
print APIs since qdf_trace_msh appends them by default.
Change-Id: Ie8fe319fcb737720f7400a165e134b6a18bd15b5
CRs-Fixed: 2243843
Add NULL check before dereferencing pointer in TKIP demic function
in RX defrag path.
Change-Id: Id13f91409c2891ae833e58e4c9d9d09231682f8a
CRs-Fixed: 2287517
Create separate individual hal_srng_table and hal register
offset in target specific source files. Create separate
functions for qca6290 and qca8074 for few hal rx tx
functions as the macro value differs between the chipsets.
Assign target specific hal tx, rx ops as part of hal_attach
and call respective hal tx, rx ops through callbacks.
Change-Id: Ibbf490c678c39fdd9d54191aad7aaec786db30ec
Add and initialize UMAC peer handle into DP peer structure as opaque
and to pass UMAC node structure to ol if layer for Block Ack and
rx_frag_tkip_demic functions.
Change-Id: If7c3faf859c97832c3c7f50fc163142b68eedeeb
CRs-Fixed: 2241356
There are two instances where peer ref counting leak has been observed
1) When DUT-STA is connected to AP1 and if it tries to roam to AP2 or
to same AP1 then as part of roam sync indication, it needs to delete
the old peer and create the new peer. Deletion of old peer is
happening through force delete operation which is No-OP for some of
the platforms. In such cases, do normal peer delete operation, so
that peer ref count can be deleted properly.
2) When looking up peer by its associated vdev, driver goes one by one
all peers and check their associated vdev and compare with given
vdev. If it doesn't find the match then it returns without releasing
the reference count.
CRs-Fixed: 2263607
Change-Id: Ibcad72943258e531e29498961d3d7e692fd05b36
structures
Rename osif_pdev to ctrl_pdev and os_if_vdev to ctrl_vdev in dp_pdev and
osif_dev structures respectively which are
pointing to objmgr_pdev and objmgr_vdev structures to maintain
uniformity
Change-Id: Ida95a1a90ea74513573f00c652338baee3df897a
CRs-Fixed: 2241362
1. Add CDP API to set encryption key in datapath.
Used to perform RX TKIP demic.
2. Fixes to RX TKIP demic function.
Change-Id: Ia14caeb71a320b4746f4303cf6611f1b6e4947ae
CRs-Fixed: 2214749