DHCP frame usually can not be aggregated, but if they go to FISA
path which will require FISA resource support for them, this looks
is not necessary.
Bypass FISA path for RX DHCP frame.
Change-Id: Ic1eac06abb5790813ee4d17ec1df6b215a1bcdb5
CRs-Fixed: 2691447
Currently, we register the peer hang notifier when the peer unmap
timer elapses, but do not unregister it. We also pass the peer reference
for which the unmap timeout happened as part of the notifier registry.
Since we do not unregister the notfier, there are chances that we
call the notifier with a stale peer reference during the subsequent
hang event which results in a crash; avoid this by unregistering the
peer hang notifier as part of device recovery.
Change-Id: I36bd8d9c1b4e38e1ba9d8c16b79df7f0cd1c9f82
CRs-Fixed: 2688676
Convert the tx complete status or A_STATUS to the correct dp status
before pass to qdf_dp_trace_ptr
Change-Id: I1ad94c8c293c29c9789e6dc761244911a7520707
This reverts Change-Id: Iaf86c9da2a9946aac09867b5c46dcc79f1b5c37e.
That change fails build for GKI variant.
Change-Id: I6cd7322870023d245fe9d20250ceb0b5d738d214
CRs-Fixed: 2701642
Add support and use IS_ENABLED in code, if CONFIG_IPA3 config as
loadable kernel module.
Change-Id: Iaf86c9da2a9946aac09867b5c46dcc79f1b5c37e
CRs-Fixed: 2701642
This reverts Change-Id: Ib3e851c0822a85c4712a1b817cc19dfecf6d0e7a.
First we need to get ABI snapshot/Whitelist updated for the new
kernel API being used in this change and then only we can promote
this change. To unblock promotion, revert this change for now.
Change-Id: I8aae0fe64623034486c9db6275a16654119c06bd
CRs-Fixed: 2673959
Currently there is no vdev->osif_rx result check in fisa path,
so if vdev->osif_rx returns failure, the RX skb may not have been
handled and it may be leaked.
Add vdev->osif_rx failure handling to avoid skb leak.
Change-Id: I6c194c31bbe71cba5c56c2b93f505225de439b72
CRs-Fixed: 2695084
Kernel 5.4 has applied batched GRO_NORMAL packets processing
for all napi_gro_receive() users. this requires NAPI users to
call napi_complete_done() or napi_complete() at the end of every
polling to flush batched GRO_NORMAL packets.
However, by current wlan driver design, napi_gro_recevie()
is not happened in same NAPI polling context and done in another
thread context, it likely packets which have not been flushed from
napi->rx_list will get stall until next RX cycle.
Fix this by adding a manual flushing of the list right after
napi_gro_flush() call to mimic napi_complete() logics.
Change-Id: Ib3e851c0822a85c4712a1b817cc19dfecf6d0e7a
CRs-Fixed: 2673959
In dp_fisa_rx() function, L2 head pointer for fragment data is not
set correctly, actually it points to RX TLV header.
Skip RX TLV for RX fragment data.
Change-Id: Ie326734c657f45024a83792b103f931723148c92
CRs-Fixed: 2686851
In case of partial reorder, seq number is sent by FW
when first_msdu bit is set in msdu. For all other msdus host
maintain copy of cur_seq_num_hl in pdev.
cur_seq_num_hl gets updated when htt_rx_mpdu_desc_seq_num API
is called. Currently htt_rx_mpdu_desc_seq_num API is called
from multiple functions. Add update_seq_num flag to make sure that
cur_seq_num_hl updates only during store function.
Change-Id: Ie3178ee6d1642dbeaf0cea032dc80e0ecccc1dc2
CRs-Fixed: 2683869
In some case, FISA flush for one FISA entry is missed which
lead to some RX frames stay at FISA entry forever, this will
cause skb leak.
Do FISA flush per vdev when vdev detach to avoid skb leak.
Change-Id: Ie6bdf885c740a99b089290257ea6936d5804d142
CRs-Fixed: 2679221
Add support to parse the HTT_T2H_MSG_TYPE_CFR_DUMP_COMPL_IND
message. This target to host message is received when CFR feature
is enabled.
Change-Id: I592cd5ca663018f2958550e6e3e383bb796ee168
CRs-Fixed: 2680730
Cleanup logging, usage of %p or %pk will lead to information leak.
Always use %pK instead when ever logging the address.
Change-Id: Id60782855f242175183f88e9f1c2efb9eb578404
CRs-Fixed: 2677373
Cleanup logging, usage of %p or %pk will lead to information leak.
Always use %pK instead when ever logging the address.
Change-Id: Id11e1b52b394eb10bb2b32fc2ee2e04116f98026
CRs-Fixed: 2677373
peer_timer_bitmask of hang_data was uninitialized which may
contain a garbage value.
Initialized the variable with 0.
Change-Id: I5875bb0d121bcbf14a2afc9efec6697cf4b4dba4
CRs-Fixed: 2680955
Because of a race that happen during vdev delete, RX packets can get
queued to the RX thread after the RX flush (done as part of peer deletion)
and by the time RX thread is woken up for processing, the netdev pointer
would be NULL leading to a crash.
Avoid this by dropping pending frames in the RX thread during peer unmap
as well.
Change-Id: Id79d7d05c487fcabfd104a15dc4038d48703b07c
CRs-Fixed: 2681195
This is to fix the error of missing soc NULL check.
Before dereferencing soc for decoding pdev handle,
add the NULL check for soc.
Change-Id: Idade64fd88790e9a6faffceb99fc42dcd683677d
CRs-Fixed: 2668317
Add pointer 'vdev' null check for KW issue. In ol_tx_non_std()
when 'vdev' is null, return the pointer of msdu buffer.
Change-Id: Ic82db8c649de09dda42ae588bda7e58c036ae161
CRs-Fixed: 2645407
Remove ol recovery notifier to log ce info as the notifier
is added in hif layer.
Change-Id: Ia3b56f677d7207f7b650ee1060032c285fa946fe
CRs-Fixed: 2649143
Fix print format in core/dp/txrx3.0/dp_fisa_rx.c
Both cds_ieee80211_common_i.h and net/ieee80211_radiotap.h define
IEEE80211_CHAN_*, so only one header is needed in wlan_hdd_tx_rx.c
Change-Id: Ie9c3a7ea04e9b71acf96f007515a7ae6c0def938
CRs-Fixed: 2644359
Extend radiotap header to append ACK status and tx retry count
for packets sent to virtual mon interface.
Change-Id: If110a7de736c3efc0d477617089669104c6f1690
CRs-Fixed: 2627707
Issue happens as below scenaio:
1 suspend happens, but dp_rx_thread didn't finish in time,
so timeout happens for suspend_event, here suspend will
return success to kernel.
2 resume happens before dp_rx_thread to reset resume_event,
and resume finished.
3 if dp_rx_thread finished and blocking with resume_event,
and in following test, suspend didn't come(longer then
hang detect time).
4 hang detect will alarm.
Fix is to return failure if dp_rx_thread can't be suspend
in time. Suspend can triger again later.
Change-Id: Ifbfdef5bb1c8d6e00b8fa5cc5e6dc74d3495c9ea
CRs-Fixed: 2626468
Currently, Linux Kernel 4.9 doesn't support WDI3/WDI2 over GSI,
so it missed the definition of is_txr_rn_db_pcie_addr &
is_evt_rn_db_pcie_addr, and we should not call the relevant API
for Linux Kernel 4.9 + ROME target. So refine the function
ol_txrx_ipa_wdi_tx_smmu_params to fix compile issue.
Change-Id: I050d7f8613f9a5ae05d6a269dece53db624d18e2
Fisa flow in FT still exists even after vdev teardown. Same vdev
type is reinitialized with different vdev pointer.
So take care to update the fisa_flow vdev with current vdev.
Change-Id: Ib52c6d1ea5354532a42fd0065db740c96d78ebc6
CRs-Fixed: 2621691
Consider case where vdev is valid but deliver function
callback is deregistered. Check for null delivery function.
Change-Id: If17f1d680a10c2009a910172a66cd8dcf7cdffbd
CRs-Fixed: 2613162
As for WDI2 over gsi, IPA driver adds is_txr_rn_db_pcie_addr
and is_evt_rn_db_pcie_addr in ipa_wdi_pipe_setup_info and
ipa_wdi_pipe_setup_info_smmu these two structures to check
if doorbell address is PCIe mapped address or not. So, it
need to set such flag from wlan host driver for IPA transfer
and event rings.
Change-Id: Ic71a460c6e87f5b77be737fa9a8e860ab7424e82
Return control after dropping NULL vdev msdus and make sure to
NULL terminate the fisa_flow->head_skb.
Change-Id: I50e469f603b48cb578db30aaaaa9f974d469fde1
CRs-Fixed: 2613251
Validate vdev before delivering the packets for vdev.
Drop the packets if vdev is deleted.
Change-Id: If92d0fba04d96e3830bb4e6f04c395b4fcd54f84
CRs-Fixed: 2606760
Aggregate the UDP flow msdu in to jumbo msdu and deliver to stack.
Stack handling of jumbo msdu saves the CPU mips.
Change-Id: I5a5d3fdbf3037d3b538f737bf4de8edc06260ab1
CRs-Fixed: 2600268
Check the HW TLVs to identify if the flow is already programmed.
If flow doesnot exist make an entry to SW and HW flow table.
Invalidate FSE cache to make fse read updated FT entry
Change-Id: I6acc539c5c7994e438ebb2af9cb3bb5ecbf6e120
CRs-Fixed: 2600268
Removed ol_tx_hl_vdev_bundle_timer definition for
kernel v4.15 as __os_timer_shim will wrap the kernel
timer handler API prototype as per new definition for
kernel v4.15 and above.
Change-Id: I873ba706050ea8020e4af7133c86ef8aabb93d53
CRs-Fixed: 2602835
Currently many layers store the datapath handles i.e.
pdev and vdev handles and use them for passing as an
argument to the CDP APIs. This gives way to possible
race conditions, where the datapath handle provided by
the outer layer might be a stale pointer, which in turn
leads to unexpected results.
Remove the storage and usage of all the datapath handles
from the layers currently using them.
- cds_context
- vdev objmgr
- pdev objmgr
Change-Id: Icf24bd3792af203d1a06e153f0badd6e7405559f
CRs-Fixed: 2602199
Currently, sizeof(qdf_dma_addr_t) is 4 bytes, but IPA driver
and WLAN FW always use 8 bytes, we should follow up with them,
otherwise, the numbers of rx complete ring entries will not be
same in both sides. Meanwhile, for tx complete ring, during the
first time initialization, we fill the buffer address with 4
bytes, while GSI FW read 8 bytes address content from tx complete
ring, which should cause the GSI FW get invalid address on the half
way and cause the smmu fault issue. So fill 8 bytes length buffer
address to the tx complete ring can avoid such issue.
Change-Id: I61021627b634d4b1525727cc944ee410ed3154db