From 073685cd4311982603d7e5aa94e056b1c962c799 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Mon, 22 Mar 2021 14:05:53 +0530 Subject: [PATCH 01/11] msm: ipa3: Adding trace in lan path Adding trace in lan path. Change-Id: I633ab398c57ff84513db55d9e4fb8046d312febf Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa_dp.c | 9 ++- drivers/platform/msm/ipa/ipa_v3/ipa_trace.h | 88 ++++++++++++++++++++- 2 files changed, 92 insertions(+), 5 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c index b2b1903f7ac9..dd32f95b068d 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_dp.c @@ -2878,7 +2878,7 @@ static int ipa3_lan_rx_pyld_hdlr(struct sk_buff *skb, unsigned long ptr; IPA_DUMP_BUFF(skb->data, 0, skb->len); - + trace_ipa3_lan_rx_pyld_hdlr_entry(skb,sys->ep->client); if (skb->len == 0) { IPAERR("ZLT packet arrived to AP\n"); goto out; @@ -3160,6 +3160,7 @@ begin: out: ipa3_skb_recycle(skb); + trace_ipa3_lan_rx_pyld_hdlr_exit(sys->ep->client); return 0; } @@ -3426,6 +3427,7 @@ void ipa3_lan_rx_cb(void *priv, enum ipa_dp_evt_type evt, unsigned long data) void *client_priv; ipahal_pkt_status_parse_thin(rx_skb->data, &status); + trace_ipa3_lan_rx_cb_entry(status.endp_src_idx); src_pipe = status.endp_src_idx; metadata = status.metadata; ucp = status.ucp; @@ -3467,6 +3469,7 @@ void ipa3_lan_rx_cb(void *priv, enum ipa_dp_evt_type evt, unsigned long data) dev_kfree_skb_any(rx_skb); } + trace_ipa3_lan_rx_cb_exit(status.endp_src_idx); } static void ipa3_recycle_rx_wrapper(struct ipa3_rx_pkt_wrapper *rx_pkt) @@ -5239,6 +5242,7 @@ int ipa3_lan_rx_poll(u32 clnt_hdl, int weight) return cnt; } ep = &ipa3_ctx->ep[clnt_hdl]; + trace_ipa3_napi_poll_entry(ep->client); start_poll: /* @@ -5278,6 +5282,7 @@ start_poll: IPA_ACTIVE_CLIENTS_DEC_EP_NO_BLOCK(ep->client); } + trace_ipa3_napi_poll_exit(ep->client, cnt, ep->sys->len); return cnt; } @@ -5380,7 +5385,7 @@ start_poll: IPADBG_LOW("Client = %d not replenished free descripotrs\n", ep->client); } - trace_ipa3_napi_poll_exit(ep->client); + trace_ipa3_napi_poll_exit(ep->client, cnt, ep->sys->len); return cnt; } diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_trace.h b/drivers/platform/msm/ipa/ipa_v3/ipa_trace.h index e83e48251981..bbb8b78d66da 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_trace.h +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_trace.h @@ -230,19 +230,23 @@ TRACE_EVENT( TRACE_EVENT( ipa3_napi_poll_exit, - TP_PROTO(unsigned long client), + TP_PROTO(unsigned long client, u32 cnt, u32 len), - TP_ARGS(client), + TP_ARGS(client, cnt, len), TP_STRUCT__entry( __field(unsigned long, client) + __field(unsigned int, cnt) + __field(unsigned int, len) ), TP_fast_assign( __entry->client = client; + __entry->cnt = cnt; + __entry->len = len; ), - TP_printk("client=%lu", __entry->client) + TP_printk("client=%lu napi weight cnt = %d sys->len = %d", __entry->client, __entry->cnt, __entry->len) ); TRACE_EVENT( @@ -297,6 +301,84 @@ TRACE_EVENT( TP_printk("client=%lu", __entry->client) ); +TRACE_EVENT( + ipa3_lan_rx_pyld_hdlr_entry, + + TP_PROTO(const struct sk_buff *skb, unsigned long client), + + TP_ARGS(skb, client), + + TP_STRUCT__entry( + __field(unsigned int, len) + __field(unsigned int, data_len) + __field(unsigned long, client) + ), + + TP_fast_assign( + __entry->len = skb->len; + __entry->data_len = skb->data_len; + __entry->client = client; + ), + + TP_printk("len=%u data_len=%u client=%lu", + __entry->len, + __entry->data_len, + __entry->client) +); + +TRACE_EVENT( + ipa3_lan_rx_pyld_hdlr_exit, + + TP_PROTO(unsigned long client), + + TP_ARGS(client), + + TP_STRUCT__entry( + __field(unsigned long, client) + ), + + TP_fast_assign( + __entry->client = client; + ), + + TP_printk("client=%lu", __entry->client) +); + +TRACE_EVENT( + ipa3_lan_rx_cb_entry, + + TP_PROTO(unsigned long client), + + TP_ARGS(client), + + TP_STRUCT__entry( + __field(unsigned long, client) + ), + + TP_fast_assign( + __entry->client = client; + ), + + TP_printk("client=%lu", __entry->client) +); + +TRACE_EVENT( + ipa3_lan_rx_cb_exit, + + TP_PROTO(unsigned long client), + + TP_ARGS(client), + + TP_STRUCT__entry( + __field(unsigned long, client) + ), + + TP_fast_assign( + __entry->client = client; + ), + + TP_printk("client=%lu", __entry->client) +); #endif /* _IPA_TRACE_H */ /* This part must be outside protection */ From 16e70b68ee5064f0173d41acd2a74536951c8fab Mon Sep 17 00:00:00 2001 From: Sivan Reinstein Date: Wed, 12 May 2021 09:03:45 +0300 Subject: [PATCH 02/11] msm: ipa: Clear IEOB for stopped channels with MSI IRQ Clear IEOBs as part of CH stop for channels with MSI IRQ type Change-Id: I7b9af7f385b0876fc2f43314bd3588110911a021 Acked-by: Nadav Levintov Signed-off-by: Sivan Reinstein --- drivers/platform/msm/gsi/gsi.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c index e43c46c8acc2..09edf862f896 100644 --- a/drivers/platform/msm/gsi/gsi.c +++ b/drivers/platform/msm/gsi/gsi.c @@ -3213,6 +3213,7 @@ int gsi_stop_channel(unsigned long chan_hdl) int res; uint32_t val; struct gsi_chan_ctx *ctx; + unsigned long flags; if (!gsi_ctx) { pr_err("%s:%d gsi context not allocated\n", __func__, __LINE__); @@ -3279,6 +3280,15 @@ int gsi_stop_channel(unsigned long chan_hdl) goto free_lock; } + /* If channel is stopped succesfully and has an event with IRQ type MSI + - clear IEOB */ + if (ctx->evtr && ctx->evtr->props.intr == GSI_INTR_MSI) { + spin_lock_irqsave(&ctx->evtr->ring.slock, flags); + gsi_writel(1 << ctx->evtr->id, gsi_ctx->base + + GSI_EE_n_CNTXT_SRC_IEOB_IRQ_CLR_OFFS(gsi_ctx->per.ee)); + spin_unlock_irqrestore(&ctx->evtr->ring.slock, flags); + } + res = GSI_STATUS_SUCCESS; free_lock: From 5b981860651d94c23b9bd494a3a0ae017ac04a86 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Fri, 21 May 2021 15:13:45 +0530 Subject: [PATCH 03/11] msm: ipa3: Changes to call uC setup event ring in connect WDI pipes In some scenario before enabling the WDI pipe setup QUOTA monitor command sending to uC which leading to NULL pointer access. So adding changes to setup uC event from connect wdi API and sending set QUOTA monitor and BW monitor commands to if uC setup event ring completed. Change-Id: I82e27d58b0ba153e5139cf9b4d849edafd979bc4 Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa_uc.c | 10 ++++++ drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c | 32 ++++++++++---------- 2 files changed, 26 insertions(+), 16 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c b/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c index 9baf455257d1..b50625b5d688 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_uc.c @@ -1579,6 +1579,11 @@ int ipa3_uc_quota_monitor(uint64_t quota) struct IpaQuotaMonitoring_t *quota_info; IPADBG("Enter\n"); + if (!ipa3_ctx->uc_ctx.uc_event_ring_valid) { + IPADBG("uC event ring not initialized\n"); + return res; + } + cmd.size = sizeof(*quota_info); cmd.base = dma_alloc_coherent(ipa3_ctx->uc_pdev, cmd.size, &cmd.phys_base, GFP_KERNEL); @@ -1655,6 +1660,11 @@ int ipa3_uc_bw_monitor(struct ipa_wdi_bw_info *info) if (!info) return -EINVAL; + if (!ipa3_ctx->uc_ctx.uc_event_ring_valid) { + IPADBG("uC event ring not initialized\n"); + return res; + } + /* check max entry */ if (info->num > BW_MONITORING_MAX_THRESHOLD) { IPAERR("%d, support max %d bw monitor\n", info->num, diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c b/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c index 54f9f23b3b71..21d8d81d0ea0 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c @@ -569,6 +569,22 @@ int ipa3_conn_wdi3_pipes(struct ipa_wdi_conn_in_params *in, IPADBG("wdi_notify is null\n"); #endif + /* start uC event ring */ + if ((ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && + ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) || + ipa3_ctx->is_bw_monitor_supported) { + if (ipa3_ctx->uc_ctx.uc_loaded && + !ipa3_ctx->uc_ctx.uc_event_ring_valid) { + if (ipa3_uc_setup_event_ring()) { + IPAERR("failed to set uc_event ring\n"); + return -EFAULT; + } + } else + IPAERR("uc-loaded %d, ring-valid %d\n", + ipa3_ctx->uc_ctx.uc_loaded, + ipa3_ctx->uc_ctx.uc_event_ring_valid); + } + /* setup rx ep cfg */ ep_rx->valid = 1; ep_rx->client = rx_client; @@ -848,22 +864,6 @@ int ipa3_enable_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) IPA_ACTIVE_CLIENTS_INC_EP(ipa3_get_client_mapping(ipa_ep_idx_tx)); - /* start uC event ring */ - if ((ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && - ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) || - ipa3_ctx->is_bw_monitor_supported) { - if (ipa3_ctx->uc_ctx.uc_loaded && - !ipa3_ctx->uc_ctx.uc_event_ring_valid) { - if (ipa3_uc_setup_event_ring()) { - IPAERR("failed to set uc_event ring\n"); - return -EFAULT; - } - } else - IPAERR("uc-loaded %d, ring-valid %d\n", - ipa3_ctx->uc_ctx.uc_loaded, - ipa3_ctx->uc_ctx.uc_event_ring_valid); - } - /* enable data path */ result = ipa3_enable_data_path(ipa_ep_idx_rx); if (result) { From b24af4da495f4db3a2c3bf9d1a605fb1cbc27f4d Mon Sep 17 00:00:00 2001 From: Praveen Kurapati Date: Mon, 18 Jan 2021 04:32:32 +0530 Subject: [PATCH 04/11] msm: ipa: Add MONACO to dataipa MAKEFILE Add monaco target related chagnes to makefile. Change-Id: Ia7de369bbbd2ba1875f310e2cbe6849da66b3109 Signed-off-by: Praveen Kurapati --- drivers/platform/msm/Makefile | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/drivers/platform/msm/Makefile b/drivers/platform/msm/Makefile index 8572a5cf2cb7..66b0b0045ea5 100644 --- a/drivers/platform/msm/Makefile +++ b/drivers/platform/msm/Makefile @@ -39,6 +39,19 @@ include $(srctree)/techpack/dataipa/config/dataipa_gsi_V1_GKI.conf endif endif +ifeq ($(CONFIG_ARCH_MONACO), y) +LINUXINCLUDE += -include $(srctree)/techpack/dataipa/config/dataipa_gsi_V1.h +ifeq ($(CONFIG_QGKI),y) +include $(srctree)/techpack/dataipa/config/dataipa_gsi_V1_QGKI.conf +ifeq ($(CONFIG_LOCALVERSION), "-qgki-debug") +include $(srctree)/techpack/dataipa/config/dataipa_debug.conf +LINUXINCLUDE += -include $(srctree)/techpack/dataipa/config/dataipa_debug.h +endif +else +include $(srctree)/techpack/dataipa/config/dataipa_gsi_V1_GKI.conf +endif +endif + DATAIPADRVTOP = $(srctree)/techpack/dataipa/drivers/platform/msm ifneq (,$(filter $(CONFIG_IPA3),y m)) From 94386db8e65c8d00807613a0ce42d20f11e6c03b Mon Sep 17 00:00:00 2001 From: Praveen Kurapati Date: Tue, 9 Feb 2021 15:48:08 +0530 Subject: [PATCH 05/11] msm: ipa3: Add proper checks for low lat pipe and 32-bit specific For some targets lowlat support is not present. Add changes to check if low lat support is present or not. Also for 32-bit targets observed count shift error. Added proper checks to overcome the issue. Change-Id: Iab3b7d460b48ce8ff4e98da297eb2e7b69e3db13 Signed-off-by: Praveen Kurapati --- drivers/platform/msm/gsi/gsi_dbg.c | 5 +++-- drivers/platform/msm/ipa/ipa_v3/ipa.c | 13 ++++++++----- drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c | 2 +- drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c | 8 +++++--- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/drivers/platform/msm/gsi/gsi_dbg.c b/drivers/platform/msm/gsi/gsi_dbg.c index 5ffd2c8e22f5..960c444b1cc5 100644 --- a/drivers/platform/msm/gsi/gsi_dbg.c +++ b/drivers/platform/msm/gsi/gsi_dbg.c @@ -681,8 +681,9 @@ static ssize_t gsi_read_gsi_hw_profiling_stats(struct file *file, totalCycles = stats.mcs_busy_cnt + stats.mcs_idle_cnt + stats.bp_and_pending_cnt; if (totalCycles != 0) - util = (100 * (stats.mcs_busy_cnt + stats.bp_and_pending_cnt)) / - totalCycles; + util = div_u64( + 100 * (stats.mcs_busy_cnt + stats.bp_and_pending_cnt), + totalCycles); else util = 0; diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa.c b/drivers/platform/msm/ipa/ipa_v3/ipa.c index 50f571cd8320..1e109bb5e60d 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa.c @@ -7629,11 +7629,14 @@ static int ipa3_pre_init(const struct ipa3_plat_drv_res *resource_p, goto fail_wwan_init; } - result = ipa3_rmnet_ctl_init(); - if (result) { - IPAERR(":ipa3_rmnet_ctl_init err=%d\n", -result); - result = -ENODEV; - goto fail_rmnet_ctl_init; + if (ipa3_ctx->rmnet_ctl_enable) { + result = ipa3_rmnet_ctl_init(); + if (result) { + IPAERR(":ipa3_rmnet_ctl_init err=%d\n", + -result); + result = -ENODEV; + goto fail_rmnet_ctl_init; + } } } mutex_init(&ipa3_ctx->app_clock_vote.mutex); diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c b/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c index 21d8d81d0ea0..2a03574ef7d7 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c @@ -484,7 +484,7 @@ static int ipa3_wdi_gsi_db(phys_addr_t* db_addr, struct ipa3_ep_context *ep_ctx) /* write channel scratch */ memset(&gsi_ch_scratch, 0, sizeof(gsi_ch_scratch)); gsi_ch_scratch.wdi3.db_addr_wp_lsb = (u32)mem.phys_base; - gsi_ch_scratch.wdi3.db_addr_wp_msb = (u32)(mem.phys_base >> 32); + gsi_ch_scratch.wdi3.db_addr_wp_msb = (u32)((mem.phys_base & 0xFFFFFFFF00000000) >> 32); IPADBG("gsi written lsb value 0x%x\n", gsi_ch_scratch.wdi3.db_addr_wp_lsb); IPADBG("gsi written msb value 0x%x\n", gsi_ch_scratch.wdi3.db_addr_wp_msb); diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 84aaf08df871..7ac4f52e67af 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -2755,9 +2755,11 @@ static int ipa3_wwan_remove(struct platform_device *pdev) IPAWANINFO("rmnet_ipa started deinitialization\n"); mutex_lock(&rmnet_ipa3_ctx->pipe_handle_guard); - ret = ipa3_teardown_apps_low_lat_pipes(); - if (ret < 0) - IPAWANERR("Failed to teardown IPA->APPS qmap pipe\n"); + if (ipa3_ctx->rmnet_ctl_enable) { + ret = ipa3_teardown_apps_low_lat_pipes(); + if (ret < 0) + IPAWANERR("Failed to teardown IPA->APPS qmap pipe\n"); + } ret = ipa3_teardown_sys_pipe(rmnet_ipa3_ctx->ipa3_to_apps_hdl); if (ret < 0) IPAWANERR("Failed to teardown IPA->APPS pipe\n"); From 9eea30c773a123c62a988172e1b2780a80b38376 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Thu, 27 May 2021 13:35:09 +0530 Subject: [PATCH 06/11] msm: ipa3: Fix to changes the ring variable type With u16 variable not fitting the higher ring size. So adding changes to chnage ring type to u32. Change-Id: Ib16e2426071c642f7e25beb022661dfa914cd0c4 Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/gsi/gsi.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/platform/msm/gsi/gsi.h b/drivers/platform/msm/gsi/gsi.h index 261575ff3542..d5285138b01b 100644 --- a/drivers/platform/msm/gsi/gsi.h +++ b/drivers/platform/msm/gsi/gsi.h @@ -473,7 +473,7 @@ struct gsi_chan_props { uint8_t ch_id; unsigned long evt_ring_hdl; enum gsi_chan_ring_elem_size re_size; - uint16_t ring_len; + uint32_t ring_len; uint16_t max_re_expected; uint64_t ring_base_addr; uint8_t db_in_bytes; @@ -1151,7 +1151,7 @@ struct gsi_ring_ctx { uint64_t rp; uint64_t wp_local; uint64_t rp_local; - uint16_t len; + uint32_t len; uint8_t elem_sz; uint16_t max_num_elem; uint64_t end; From e16fcc6ee1c656f0ef346f724136740d34daab8c Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Tue, 1 Jun 2021 21:59:19 +0530 Subject: [PATCH 07/11] msm: ipa3: Fix to changes the ring variable type With u16 variable not fitting the higher ring size. So adding changes to change ring type to u32. Change-Id: I8443508fee8eb5180d5300611bc01bc4df68bcbd Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/gsi/gsi.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/msm/gsi/gsi.h b/drivers/platform/msm/gsi/gsi.h index d5285138b01b..284965c48010 100644 --- a/drivers/platform/msm/gsi/gsi.h +++ b/drivers/platform/msm/gsi/gsi.h @@ -190,7 +190,7 @@ struct gsi_evt_ring_props { enum gsi_evt_chtype intf; enum gsi_intr_type intr; enum gsi_evt_ring_elem_size re_size; - uint16_t ring_len; + uint32_t ring_len; uint64_t ring_base_addr; void *ring_base_vaddr; uint16_t int_modt; From 92fa5bc4f6da346356e2917624c56358c574eac3 Mon Sep 17 00:00:00 2001 From: Raghavendar rao l Date: Wed, 2 Jun 2021 14:53:41 +0530 Subject: [PATCH 08/11] msm: ipa: Issue with Pointer type conversion. Updated the pointer type cast with valid data type. Change-Id: Ibd1f87eab0aac78551f307534508cfa84eae988a Signed-off-by: Raghavendar rao l --- drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c index 3edca59dcf8c..a1befe6700d6 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c @@ -225,7 +225,7 @@ static struct ipahal_stats_init_pyld *ipahal_generate_init_pyld_flt_rt_v4_5( void *params, bool is_atomic_ctx) { struct ipahal_stats_init_pyld *pyld; - int num = (int)(params); + int num = *((int *)(params)); if (num > IPA_MAX_FLT_RT_CNT_INDEX || num <= 0) { From a890ae3b7b3459c0a57343ec029d8a42479cbca8 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Sat, 5 Jun 2021 00:37:20 +0530 Subject: [PATCH 09/11] msm: ipa3: Fix to use right casting to avoid the compilation issue Caller function passing the constant value converting to int pointer will cause the problem. Adding changes to use right casting to avoid compilation issue. Change-Id: I8440f16e4e53e0788c2d1eae35f4b6ebf3178ead Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c index a1befe6700d6..815b51ab3b13 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipahal/ipahal_hw_stats.c @@ -225,7 +225,7 @@ static struct ipahal_stats_init_pyld *ipahal_generate_init_pyld_flt_rt_v4_5( void *params, bool is_atomic_ctx) { struct ipahal_stats_init_pyld *pyld; - int num = *((int *)(params)); + int num = (uintptr_t)(params); if (num > IPA_MAX_FLT_RT_CNT_INDEX || num <= 0) { From b946aea8f0ac206aa7c00f66c98630afb168f889 Mon Sep 17 00:00:00 2001 From: Praveen Kurapati Date: Thu, 27 May 2021 22:55:17 +0530 Subject: [PATCH 10/11] msm: ipa3: Add check to avoid Quota indication for WLAN Quota indication is not yet supported on WLAN Iface. Add check to return if the request comes for WLAN Iface. Change-Id: Ib183d0ed21a87f6f759af8d4e5bc4093dffd9374 Signed-off-by: Praveen Kurapati --- drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 7ac4f52e67af..0a7e050d01d9 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -4279,6 +4279,10 @@ void ipa3_broadcast_quota_reach_ind(u32 mux_id, if (upstream_type == IPA_UPSTEAM_MAX) { IPAWANERR(" Wrong upstreamIface type %d\n", upstream_type); return; + } else if (upstream_type == IPA_UPSTEAM_WLAN) { + /* TODO: Fix this case when adding quota on WLAN Backhaul*/ + IPAWANERR_RL("Quota indication is not supported for WLAN\n"); + return; } else if (upstream_type == IPA_UPSTEAM_MODEM) { index = ipa3_find_mux_channel_index(mux_id); if (index == MAX_NUM_OF_MUX_CHANNEL) { From b3f4d167be4120ee8a84b33da22a0700dcacdf61 Mon Sep 17 00:00:00 2001 From: Praveen Kurapati Date: Sat, 12 Jun 2021 21:19:19 +0530 Subject: [PATCH 11/11] msm: ipa3: add rmnet_ctl enablement check Add changes to check if rmnet_ctl support present or not. Change-Id: Ic99811ffcedbe474eeb80637e61901b55e448372 Signed-off-by: Praveen Kurapati --- drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c | 27 ++++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 7ac4f52e67af..101dd17f89d7 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -1571,13 +1571,14 @@ static int handle3_ingress_format(struct net_device *dev, } IPAWANDBG("ingress WAN pipe setup successfully\n"); - ret = ipa3_setup_apps_low_lat_cons_pipe(); - if (ret) - goto low_lat_fail; + if (ipa3_ctx->rmnet_ctl_enable) { + ret = ipa3_setup_apps_low_lat_cons_pipe(); + if (ret) + goto low_lat_fail; - ingress_eps_mask |= IPA_AP_INGRESS_EP_LOW_LAT; - - IPAWANDBG("ingress low latency pipe setup successfully\n"); + ingress_eps_mask |= IPA_AP_INGRESS_EP_LOW_LAT; + IPAWANDBG("ingress low latency pipe setup successfully\n"); + } low_lat_fail: mutex_unlock(&rmnet_ipa3_ctx->pipe_handle_guard); @@ -1698,13 +1699,15 @@ static int handle3_egress_format(struct net_device *dev, return rc; } IPAWANDBG("engress WAN pipe setup successfully\n"); - rc = ipa3_setup_apps_low_lat_prod_pipe(); - if (rc) { - IPAWANERR("failed to setup egress low lat endpoint\n"); - mutex_unlock(&rmnet_ipa3_ctx->pipe_handle_guard); - goto low_lat_fail; + if (ipa3_ctx->rmnet_ctl_enable) { + rc = ipa3_setup_apps_low_lat_prod_pipe(); + if (rc) { + IPAWANERR("failed to setup egress low lat endpoint\n"); + mutex_unlock(&rmnet_ipa3_ctx->pipe_handle_guard); + goto low_lat_fail; + } + IPAWANDBG("engress low lat pipe setup successfully\n"); } - IPAWANDBG("engress low lat pipe setup successfully\n"); mutex_unlock(&rmnet_ipa3_ctx->pipe_handle_guard); low_lat_fail: