The kernel-doc script identified some documentation issues in the
top-level ipa folder, so fix them.
Change-Id: Ie128c65a495bab06c5207fff768a111de6bab958
CRs-Fixed: 3420684
Currently, there is a compilation error on the
OWRT SI in the alternate code path when optional
dp feature is not enabled.
The caller wlan_ipa_wdi_init_set_opt_wifi_dp() passes an
argument of incompatible type. This change fixes the
compilation issue.
Change-Id: I1f2eecbb67bfb2ef17ee73ce2faedb85827b4bbc
CRs-Fixed: 3417214
Currently when filter addition request for two
filters is sent one by one, filter handle
is not set correctly. This change handles
the condition to assign the correct filter handle.
Change-Id: I1e3ae07ee7718cf533784861003a47e6678b51be
CRs-Fixed: 3410387
This change adds the optional wifi datapath feature
to transfer data to and from modem via WLAN.
By using the existing path between WLAN and IPA, this
change registers new interfaces between IPA and WLAN
to reserve, add, delete and release rx filters,
which are required for setting up CCE filter rules.
These filters help to determine which packets need
to be routed to IPA specific REO rings.
Change-Id: I17c2ab77ae343f15d6b79fa02bb70ed62294089c
CRs-Fixed: 3403314
As per kernel doc, this file does not have proper
comments and spelling mistake are present, due to
which WLAN Automated code review for kernel-doc
checker is giving error.
Fix is updating the comments based on Kernel-doc
guidelines and correct the spelling mistake.
Change-Id: I7f8b8505b9810de2678ecfa893be78c0451cf612
CRs-Fixed: 3368472
To support SMMU debug framework for IPA offload, change the
caller IPA component where SMMU map and unmap are done.
CRs-Fixed: 3255423
Change-Id: I5276c0b41c8e315940e8d4f5d3082d45b08b571b
Size of struct frag_header and struct ipa_header are passed to IPA
driver as destination mac address offset. Hence properly update
the definitions for KIWI family chipset so that correct offset can
be updated to IPA driver.
Change-Id: I3efdb8f4a7b4d79cf71fa5f82f3dfd356cb2b970
CRs-Fixed: 3275933
Change the Max number of session id support by IPA
to 7 as EasyMesh requires 7 vap per radio.
CRs-Fixed: 3259857
Change-Id: I24a98e10e46d3720b6e210d023c750d056786bbf
When EasyMesh feature is enable at compile time but not at runtime,
then the peer authorization is not proper.
Fix is to check for peer authentication irrespective of feature enable
at compile or runtime.
CRs-Fixed: 3252225
Change-Id: I5790e054c838114318f6e819a164b0a8c7b94c83
Create a new API to update wdi hdr type for IPA and Fix
the return type for cdp call.
CRs-Fixed: 3246990
Change-Id: Ic8adb1f46bfeda6598a01ffdda27339cfa04ee9d
Current IPA/WLAN driver does not support the WDS feature.
Packets are dropped if they came via end-node which is not
in direct connection with root AP.
Fix is to enable WDS support and update the same to IPA
driver and create/update AST entries for end-node in
roaming, new src port learn case. Send WDS support to IPA
at wdi init and AP client connect event.
CRs-Fixed: 3226348
Change-Id: I26211613334b33d0d601629405597be329a56774
IPA driver is not able to deregister the netdev iface
as the WLAN driver is unregistering the netdev before
giving event to the IPA driver, hence IPA driver is unable
to map the local iface mapping.
FIX is to pass the netdev interface id to IPA driver
so that IPA can get the correct netdev.
Change-Id: I6011bc01a56d90287e3a0f93b3cddf9e4b0fff9b
CRs-Fixed: 3165336
After enable and disable of both radio, If second radio is enabled
then the instance_id from wlan driver is passed wrongly to IPA driver
which is in leading to initializion of first radio on IPA driver side.
Fix is to take the instace id based on psoc id and set the prod and cons
pipes based on instance_id instead of IPA given handle.
Change-Id: I26f4f3fbd23284e79a380d212ad07aceac50f053
CRs-Fixed: 3179306
With multiple radio supporting IPA offload path, the g_ipa_config
is getting free when doing wifi unload for single radio, which is
leading to an issue of early free of g_ipa_config variable.
Fix is check if all the soc are down and then only free the
global struct for IPA.
Change-Id: If8fbc7a72c91a26e6f9e680711cd58429f8a1e99
CRs-Fixed: 3137091
While Unloading WIFI ko IPA deinit path is called thrice
and leading to double free issue which is causing kernal
panic, FIX is call the IPA deinit only once for each soc/pdev.
Change-Id: I3b5bd500afabe45cb8d1062e2c82a4b338f28544
CRs-Fixed: 3130590
2x_pdev changes are included mainly related to IPA
init for second pdev/radio and pipe enablement for
second pdev/radio, code changes can support n number
of radio for IPA, add support for new IPA API's.
Change-Id: Iac67e05e0f0098bdc24626fdbe59b89d768154cd
Spin_lock_bh is introduced in ipa wlan rx path by security fix
I0c0bc6e60efa193126ba1e3eca36c5e02f7f76a3,
wlan_ipa_w2i_cb->cdp_peer_state_get->dp_get_peer_state->
dp_peer_find_hash_find->qdf_spin_unlock_bh(&soc->peer_hash_lock),
which make rx pkt aggregation failed, for each rx pkt, once
put into backlog queue, net_rx soft irq is scheduled to handle it.
For each rx msdu, ipa rx work thread, net_rx soft irq and iperf/app
thread are scheduled, which make rx throughput failed to meet KPI.
To avoid spin_lock_bh, don't call cdp_peer_state_get for each rx pkt,
only call 1 time, and save peer auth state in IPA context, for following
pkts, just get peer auth state from IPA context without spin_lock_bh.
Change-Id: I36196bab4626194bda254219c4c44dc4f029cff0
CRs-Fixed: 3098860
To support 4 SAP concurrency on sdxlemur, it is required to extend IPA
max interface number to 4.
wlan_ipa_iface_2_client is for legacy chip which support MCC, it is not
useful for nowaday chip, just extend it to 4 interface with same
content as other interface to pass ipa setup.
And Fix a static analyze error about session_id.
Change-Id: I5f2a4a0e3ff943e15ab9907e206b64423002eccb
CRs-Fixed: 3092428
In dual SAP connection, calls only disable_pipes to disable IPA,
whereas during second SAP disconnection, to enable IPA, calls
wlan_ipa_uc_handle_first_con, which sends ipa_set_active MSG
as true to FW, for both Tx/Rx to resume.
So calling wlan_ipa_uc_handle_last_discon in dual SAP mode,
which sends ipa_set_active MSG as false to FW, to suspend.
Change-Id: I224e94a003030f497e15f242634f15d9c71b9ef0
CRs-Fixed: 3094276
SAP/GO D3 WoW feature is not supported when IPA is enabled and hence
disable SAP/GO D3 WoW features when IPA is enabled.
Change-Id: Ia3da37087a0ca79c81c546f43a0893e46cf08c3c
CRs-Fixed: 3015104
Fix AP+AP IPA offload path failure when NAPI over IPA enabled on mdm
platforms by adding QCA_CONFIG_RPS check.
QCA_CONFIG_RPS is same as CONFIG_RPS, default Y, but depend on CONFIG_SMP
as msm-5.4/net/Kconfig.
For AP+AP mode,
For LA, CONFIG_SMP on, then QCA_CONFIG_RPS on, use IPA exception path.
For mdm, CONFIG_SMP off, then QCA_CONFIG_RPS off, use IPA offload path.
For IPA napi enable status check, just use qdf_ipa_get_lan_rx_napi,
don't need MACRO IPA_LAN_RX_NAPI_SUPPORT.
Change-Id: I6b16f2a830d4e7829c9e539896ed2977895d367e
CRs-Fixed: 2992393
wlan_ipa_uc_loaded_uc_cb is an API that is registered to IPA driver.
Therefore when IPA uC is ready, IPA driver is likely to invoke this CB
into our driver. If it is invoked after a WLAN idle shutdown, ipa_obj
use-after-free will happen because ipa_obj is destroyed as part of
shutdown.
g_ipa_is_ready flag is cleared after ipa_obj is destroyed. Therefore
fix is to add a ipa_cb_is_ready check in wlan_ipa_uc_loaded_uc_cb to
ensure ipa_obj is allocated and not freed.
Change-Id: Id422c0780ab864936d9bc812a6078ea4c20ef2af
CRs-Fixed: 2975057
Reorder error checks in ipa_uc_ol_deinit, so it can
return immediately if IPA config is not enabled.
Change-Id: Ibf9f30650ce201eea562baf07b6dd9b83fd8dfff
CRs-Fixed: 2977474
Enable the wlan IPA events for P2P GO/CLI mode for qca6390 to avoid RX
packets get dropped due to IPA interface context is not created.
Change-Id: I1e2c5e4085874280779d8d8d07efdb1f33e6d90b
CRs-Fixed: 2853271
When ipa setup pipes fails in wlan_ipa_uc_ol_init API,
tx buff mapping is not done but during deinit path
tx buff unmapping is called without mapping.
Fix this by resetting uc_loaded flag to false when ipa pipes
setup failure is encountered.
Change-Id: Ic34320e56cee9e60381d9203dd95e268d0ef392b
CRs-Fixed: 2957612
In the scenario where ipa connect pipes fails in the
wlan_ipa_uc_loaded_handler API, uc_loaded flag is not
reset. As a result of this, in wlan_ipa_uc_ol_deinit,
ipa_tx_buf_smmu_unmap and ipa_wdi_disconn_pipes APIs are
invoked incorrectly.
Fix is to set the uc_loaded flag to true only if connect
pipes and tx_smmu mappings are successful in
wlan_ipa_uc_loaded_handler. Also, initialize the uc_op_work
in wlan_ipa_uc_ol_init prior to the uc_loaded check to
avoid a possible race condition which could also result
in the similar issue as above.
Change-Id: I119170413cb9b5e03ec476c9a69d9effaa460c01
CRs-Fixed: 2940833
Reset iface_context to NULL if max IPA interfaces reached to avoid to
cleanup the wrong interface context when setup IPA interface failure.
Change-Id: I2f19d62b9f76f826c2275a0d889b5f5a0a48a01f
CRs-Fixed: 2931966
Drop non-EAPOL/WAPI frames from unauthorized peer received
in the IPA exception path.
Change-Id: I0c0bc6e60efa193126ba1e3eca36c5e02f7f76a3
CRs-Fixed: 2860206
During DUT STA Rx over IPA, qdf_spin_unlock_bh is called as following.
__wlan_ipa_w2i_cb
->wlan_ipa_rx_intrabss_fwd
->cdp_ipa_rx_intrabss_fwd
->dp_ipa_rx_intrabss_fwd
->dp_vdev_get_ref_by_id
->qdf_spin_unlock_bh
netif_rx will raise NET_RX_SOFTIRQ in enqueue_to_backlog->
____napi_schedule even NAPI not enabled.
spin_unlock_bh will call do_softirq to execute NET_RX if NET_RX_SOFTIRQ
is raised.
If qdf_spin_unlock_bh is called in wlan_ipa_w2i_cb, once 1 skb received,
netif_rx is called, and NET_RX_SOFTIRQ and APP like iperf is scheduled,
too much context switch happens, CPU and power is wasted, Rx throughput
KPI failed on mdm platform which only has single 1.2G-1.5G CPU.
Fix it by avoiding intra bss forwarding for adapter in sta mode.
Change-Id: I264b14120b9998a56f6c1978f5a890615e6f837c
CRs-Fixed: 2915691
Currently, module 'm' is converted to 'y' in QGKI when
compiling. In Waipio, GKI2 is present in which 'm'
is not being converted and hence IPA_OFFLOAD is not enabled.
To fix this, checking if CONFIG_IPA3 is either set to y or m
and then enabling CONFIG_IPA_OFFLOAD.
From Kernel 5.10, few IPA functions are depreciated for which
putting the depreciated functions under kernel check condition.
Change-Id: Iba3735692267130b76a8eaaaeeb53c263f8f0ddf
CRs-Fixed: 2921600
Stop the BW monitoring and stats collection for IPA before
disabling the pipes. Add this to the the case where WLAN
is in SSR and IPA pipes are being disabled when last client
is disconnecting.
Change-Id: I29e8ec6d73287cf601f829e74ba03aa611564d3a
CRs-Fixed: 2922079
Use the global lock instead of the init_deinit_lock in the ipa_obj to
avoid access the invalid memory with ipa_obj->init_deinit_lock since
the ipa_obj will be freed after driver shutdown.
Change-Id: I98a844456873f60213fae19c237bb08b76b4846c
CRs-Fixed: 2887487