In current codeflow, we are maintaining the length of the TSO segments
belonging to one jumbo packet inside tso_info, which is common for
all the segments of one jumbo packet. This works if the length of
the segments (frag[1]) is the same. In case it is not, it ends up
assigning incorrect length to all the segments. This is resulting
GMS login failure.
Fix issue by maintaining the total length of the segment in the
qdf_tso_seg_t structure.
Re-factor code for easy readability
Add TSO_DEBUG prints which can be enabled (compile time) to debug
TSO issues
Change-Id: Ie0cf8434902c0713ef8d36dc36c105afa6b5eabc
CRs-Fixed: 1062556
(cherry picked from commit 0a851f054171cf4b2f5bd7e8cd6841e90d999928)
Fix below issues:
1) check cds_get_context results before use
2) remove function calls from ASSERTs
3) make sure variables are initialized before use
4) check pointers for NULL before dereferencing
Change-Id: Iac92e6f2d1030a7dd12469e34341135bea7c781f
CRs-Fixed: 1047286
(cherry picked from commit a2547fd35fc517abfbc96363768b5d036d59d057)
Fix some remaining u32 paddr references in htt and make sure
that they are defined as qdf_dma_addr_t.
Fix print %x's for such variables, as per printk-formats
document (use %llx and explicitly typecast the vars to uul).
Change-Id: I4bc25e631986d8343a704ac48fb7bdfe1717b396
CRs-Fixed: 1064917
Bitmasks should use atomic operations when they can be
modified in multiple contexts. Also sanitize msdu_id length
to avoid potential memory corruption.
Change-Id: I119916dba883ab7aa27d8c42035af5588774f535
CRs-Fixed: 1061195
Compilation error is seen for 32 bit builds in htt_tx_ipa_uc_wdi_tx_buf_alloc
as buffer_paddr, which is defined as unsigned long and will be a 32 bit bit
variable for 32 bit builds, is right shifted by 32 to get the high 32 bits
for fragment descriptor.
Instead of right shifting buffer_paddr by 32, use APIs lower_32_bits
and upper_32_bits.
Change-Id: I283792333075c11219a491d305b2822849c025f3
CRs-Fixed: 1062916
The htc_pm_runtime provide a convenience wrapper arround
the hif modules put/get apis
Change-Id: Ic2ef437390501e269278e68aa3a219364de8b2c0
CRs-Fixed: 1058274
Fix the address compare operation that is used for defragmentation.
Also add hook to release the debug qdf node.
Change-Id: I782e0234d5b61bb118578788947aa8b13e8e189c
CRs-Fixed: 1059538
Propagation from qcacld-2.0 to qcacld-3.0.
Add a capability in service bitmask to indicate that fw also supports
this feature of marking first packet after wow wakeup to maintain backward
compatibility.
Change-Id: I3d41f5425e3a170c046941a439d17e06df0c6bef
CRs-Fixed: 1021382
Propagation from qcacld-2.0 to qcacld-3.0.
Add support to mark the highest bit of the skb->mark for the first
packet after wow wakeup event from firmware
Change-Id: I877dd7af9a58ebc02d73461cc2a29e86a3945dec
CRs-Fixed: 989984
This reverts commit-id: "Ib028c29863d4e95ccac434f7d47bfedd59ef883f"
It caused peer object memory access after it was freed.
CRs-Fixed: 1057347
Change-Id: I99842eb646371e186ade3b126ea0e8f84b7f2187
Log rx packet in packetlog as per HTT_T2H_MSG_TYPE_RX_IN_ORD_PADDR_IND
message from firmware.
CRs-Fixed: 970647
Change-Id: I5773b67a9269063531d038d46ac404c978818dcc
While processing ROAM_OFFLOAD_SYNCH_IND, delete the peer entry
even if reference count is non-zero sine firmware has already
deleted that peer. It allows addition of new peer without waiting
for peer_unmap events. Fix the logic error in checking the timeout
in ol_txrx_peer_attach().
Change-Id: Ib028c29863d4e95ccac434f7d47bfedd59ef883f
CRs-Fixed: 1046754
The existing peer_map_unmap_lock in ol_txrx_peer_find_add_id
does not include call to ol_txrx_peer_unref_delete. The peer addition
handling needs to be atomic with peer reference deletion (in case peer
ref deletion is required).
Move the peer_map_unmap_lock to include ol_txrx_peer_unref_delete.
CRs-Fixed: 1056442
Change-Id: Ica15ea70527f0ea116b960dd7958da73f304288b
qcacld-2.0 to qcacld-3.0 propagation
Add additional argument in ol_tx_queue_free to indicate whether
txq is vdev or peer queues to avoid extracting peer_id in case of
vdev txq queue in ol_tx_queue_log_free function.
Change-Id: Ic521c23b4001f15a382e9435413cdafca0c8b49f
CRs-Fixed: 1023457
Classify tx packets at one place and store packet type in
skb cb structure to avoid multiple check to determine
packet type at various layers.
Change-Id: Id2ea9b08bdcbc62b1d96d983d19bcf71becc9c42
CRs-Fixed: 1022454
In case there are multiple copy engines (for example in ihelium), the
peer map and unmap handlers may be executed on different CPUs
concurrently. These functions access global peer data structures and are
not SMP-safe.
Re-factor the existing code to make it SMP-safe.
Change-Id: I3f52e17a80d7eae8d4c2fb88da7f57f64455b031
CRs-Fixed: 1050653
Place a big spinlock on the rxhash so that only one
activity happens on it at a time.
Change-Id: Id1a020f508b6232d401d44da1cd0b9592288c81c
CRs-Fixed: 1048807
Assign the list to null inside the spinlock such that no one else
can access the free nodes. Then free the list outside of the spinlock.
This spinlock was causing a watchdog bark.
Change-Id: I9a34c8c3ea8451004814bcabfcbb81744d71ec45
CRs-Fixed: 1052458
Propagation from qcacld-2.0 to qcacld-3.0.
Move QDF_NBUF_UPDATE_TX_PKT_COUNT in ol_tx_completion_handler to make
sure that netbuf is not accessed after it is freed.
Change-Id: Ifba9de788b11ce8cb323827d10f8005029609231
CRs-fixed: 1040612
Change to ensure that the vdev and txrx operations passed to
data path during vdev registration are valid.
Change-Id: I912194184ae65229ddd7243afa58c56f4579959a
CRs-Fixed: 1035414
FW common files needs to be in sync with host and fw.
Correct fw common references in dp layer with latest copy
of fw common files.
Change-Id: I194c25045ca978634027a94bc74f22253b1afc86
CRs-Fixed: 1012542
IPA WDI TX buffer should be used by IPA HW/WLAN FWHW during
WLAN activated. This memory is not used by HLOS. Then
coherent memory allocation is better for usage.
Change-Id: Icc96c54aca9fc986c231ac3173f54cf7c7f253aa
CRs-fixed: 1019762
Add tx schedular module, tx classify module within the data SW,
tx frame queues logging, group credit support and
send-recieve tx frames instance for HL system.
CRs-Fixed: 975526
Change-Id: If1655d4d832f88e565ab946ef9e9719f256ab7b1
Add support for HTT instance creation, initialization and
deletion, Host -> Target and Target -> Host HTT messages
exchange, receive and transmit aspects of HTT.
CRs-Fixed: 975526
Change-Id: Ie66a83b6efe216df192b033c9d137a93fdce688f
Datapath changes for WiSA specification.
- Multicast packets with 50000 as destination
port should go at 6Mbps.
- Multicast packets with 50001 as destination
port should go at 24Mbps.
Change-Id: Ic219f58f3e8b2f6863a275928429153defe63b5a
CRs-Fixed: 1010412
Enhance DPTRACE to support RX path and
add support for live mode.
Live mode will print info in kmsg and
log it in buffer as well.
To enable live mode use below command.
iwpriv wlan0 dump_dp_trace 1 0
Change-Id: Id309a4d75cec93654b4acac51e5be42eae7f0b35
CRs-Fixed: 1008087
Change unsigned long to uint64_t while updating intra bss forwarded
packets count to make sure that the assignment is compatible for all
architectures.
Change-Id: I6bc0e2d7524c117ce199b4a373f541fd06fc9ef8
CRs-Fixed: 996735
This enables the tracking of posted rx ring buffers. With this we can
identify if host/fw is wrong when we hit below issue:
"wlan: [0:E :QDF] rx hash: htt_rx_hash_list_lookup: no entry found for"
<physical address>
Change-Id: Ib973a2e2a69e881beddea23cdc1d2d994eeb1e12
CRs-Fixed: 864569
Do not reset vdev->rx callback in peer modification functions, same vdev
corresponds to multiple peer.
Without this TDLS handshake fails, vdev->rx null callback function
results in dropping of datapath packets.
Change-Id: I39b51d2596cde494bee888009583a42f12a3f068
CRs-Fixed: 1024298
Remove bus specific calls from data path layer.
Add sdio specific target address
Add sdio bundling rates in datapath layer.
Fix rx data callback for UMP system.
CRs-Fixed: 969334
Change-Id: I0cd45479ca89b97455b4a9c71ce326646f38a5f3
In TSO the higher bits in the 64 bit dma address are being ignored.
This is resulting in an incorrect address being programmed in the
fragment descriptor.
Change-Id: Id015e81212d2ded3f0716ca5cc06ae2220952270
CRs-Fixed: 1024169
Propagation from qcacld-2.0 to qcacld-3.0.
Initially, when a packet is forwarded from txrx layer, it is added in
count only once although the count should increase by 2 as there is one
rx packet and one tx packet that is not getting considered in the hdd
packet count.
Add code to ensure that when packet is forwarded from lower layers,
it get considered accurately in the packet count.
Change-Id: I47bc1e0ecfa2e831438534cf34d37086a306b4e9
CRs-Fixed: 996735
Propagation from qcacld-2.0 to qcacld-3.0.
Remove error print from kmsg as this print is unnecessary and
may flood the kmsg.
Change-Id: I0978f88af6677cb0c1e1db5eae7e5d6a69bd4b70
CRs-Fixed: 997243
Propagation from qcacld-2.0 to qcacld-3.0.
In lpm qos voting, no. of packets or bytes sent or received in a
particular amount of time is recorded and decision of disabling
or enabling lpm is done based on that. These packets are recorded
in HDD layer. In case when packets are forwarded to tx only, packets
don't come upto HDD layer and so in case of intra bss forwarding,
lpm qos voting is not being executed appropriately.
Add code to calculate the intra bss forwarded packets in txrx layer
and update them in calculating lpm qos voting.
Change-Id: I805663688cb300c8735b3e2f9680818a7b50bc9f
CRs-Fixed: 990868