qcacld-3.0: Enable WDI3.0 IPA offload
Enable CONFIG_IPA
Change-Id: I20c6ce30034dd1c66bae32a2b7a891aa04bfa0f4
CRs-Fixed: 2085753
diff --git a/Kbuild b/Kbuild
index be8b7e5..9839e80 100644
--- a/Kbuild
+++ b/Kbuild
@@ -9,7 +9,6 @@
ifeq ($(CONFIG_CNSS_QCA6290), y)
CONFIG_LITHIUM := y
CONFIG_WLAN_FEATURE_11AX := y
- CONFIG_IPA := n
endif
ifeq ($(CONFIG_CLD_HL_SDIO_CORE), y)
@@ -2187,7 +2186,9 @@
CDEFINES += -DQCA_WIFI_QCA8074_VP
CDEFINES += -DDP_INTR_POLL_BASED
CDEFINES += -DTX_PER_PDEV_DESC_POOL
+ifneq ($(CONFIG_IPA_OFFLOAD), 1)
CDEFINES += -DWLAN_RX_HASH
+endif
CDEFINES += -DCONFIG_DP_TRACE
CDEFINES += -DFEATURE_TSO
CDEFINES += -DTSO_DEBUG_LOG_ENABLE
diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c
index 54e408b..4b80e38 100644
--- a/core/dp/txrx/ol_txrx.c
+++ b/core/dp/txrx/ol_txrx.c
@@ -335,10 +335,11 @@
return QDF_STATUS_SUCCESS;
}
-static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(uint8_t sta_id)
+static struct cdp_vdev *ol_txrx_get_vdev_by_sta_id(struct cdp_pdev *ppdev,
+ uint8_t sta_id)
{
+ struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;
struct ol_txrx_peer_t *peer = NULL;
- ol_txrx_pdev_handle pdev = NULL;
if (sta_id >= WLAN_MAX_STA_COUNT) {
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
@@ -346,7 +347,6 @@
return NULL;
}
- pdev = cds_get_context(QDF_MODULE_ID_TXRX);
if (!pdev) {
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_HIGH,
"PDEV not found for sta_id [%d]", sta_id);
@@ -377,8 +377,8 @@
* Return: peer handle if peer is found, NULL if peer is not found.
*/
void *ol_txrx_find_peer_by_addr(struct cdp_pdev *ppdev,
- uint8_t *peer_addr,
- uint8_t *peer_id)
+ uint8_t *peer_addr,
+ uint8_t *peer_id)
{
struct ol_txrx_peer_t *peer;
struct ol_txrx_pdev_t *pdev = (struct ol_txrx_pdev_t *)ppdev;
diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c
index 9059ed5..cf905a9 100644
--- a/core/hdd/src/wlan_hdd_assoc.c
+++ b/core/hdd/src/wlan_hdd_assoc.c
@@ -1885,6 +1885,7 @@
QDF_STATUS status = QDF_STATUS_SUCCESS;
void *soc = cds_get_context(QDF_MODULE_ID_SOC);
struct hdd_context *hdd_ctx;
+ void *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
struct wlan_objmgr_psoc **psoc;
if (!cbk_data)
@@ -1896,7 +1897,7 @@
if (!hdd_ctx->tdls_nap_active)
return status;
- data_vdev = cdp_peer_get_vdev_by_sta_id(soc, sta_id);
+ data_vdev = cdp_peer_get_vdev_by_sta_id(soc, pdev, sta_id);
if (NULL == data_vdev) {
status = QDF_STATUS_E_FAILURE;
return status;
diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c
index b748949..815277d 100644
--- a/core/hdd/src/wlan_hdd_ipa.c
+++ b/core/hdd/src/wlan_hdd_ipa.c
@@ -539,7 +539,7 @@
#define HDD_IPA_CHECK_HW() 0
#endif /* IPA3 */
-#define HDD_IPA_DBG_DUMP_RX_LEN 32
+#define HDD_IPA_DBG_DUMP_RX_LEN 84
#define HDD_IPA_DBG_DUMP_TX_LEN 48
static struct hdd_ipa_adapter_2_client {
@@ -1636,8 +1636,6 @@
(false == hdd_ipa->resource_loading)) {
*ipa_tx_diff = hdd_ipa->ipa_tx_packets_diff;
*ipa_rx_diff = hdd_ipa->ipa_rx_packets_diff;
- hdd_debug("STAT Query TX DIFF %d, RX DIFF %d",
- *ipa_tx_diff, *ipa_rx_diff);
}
qdf_mutex_release(&hdd_ipa->ipa_lock);
}
@@ -1685,7 +1683,6 @@
return;
}
- hdd_debug("STAT REQ Reason %d", reason);
qdf_mutex_acquire(&hdd_ipa->ipa_lock);
if ((HDD_IPA_UC_NUM_WDI_PIPE == hdd_ipa->activated_fw_pipe) &&
(false == hdd_ipa->resource_loading)) {
@@ -3931,11 +3928,14 @@
qdf_nbuf_t skb)
{
int ret = HDD_IPA_FORWARD_PKT_NONE;
+ void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+ struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
if ((desc & FW_RX_DESC_FORWARD_M)) {
if (!ol_txrx_fwd_desc_thresh_check(
- (struct ol_txrx_vdev_t *)ol_txrx_get_vdev_from_vdev_id(
- adapter->sessionId))) {
+ (struct ol_txrx_vdev_t *)cdp_get_vdev_from_vdev_id(soc,
+ (struct cdp_pdev *)pdev,
+ adapter->sessionId))) {
/* Drop the packet*/
hdd_ipa->stats.num_tx_fwd_err++;
kfree_skb(skb);
@@ -4761,6 +4761,8 @@
struct hdd_adapter *adapter, uint8_t sta_id)
{
struct hdd_ipa_iface_context *iface_context = NULL;
+ void *soc = cds_get_context(QDF_MODULE_ID_SOC);
+ struct ol_txrx_pdev_t *pdev = cds_get_context(QDF_MODULE_ID_TXRX);
void *tl_context = NULL;
int i, ret = 0;
@@ -4792,7 +4794,7 @@
iface_context->adapter = adapter;
iface_context->sta_id = sta_id;
tl_context = (void *)cdp_peer_get_vdev_by_sta_id(
- cds_get_context(QDF_MODULE_ID_SOC), sta_id);
+ soc, (struct cdp_pdev *)pdev, sta_id);
if (tl_context == NULL) {
HDD_IPA_LOG(QDF_TRACE_LEVEL_ERROR,
"Not able to get TL context sta_id: %d", sta_id);