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);