From a1eb2af1f0a1e89ad168b0fcb8d65a59ab7f9ba7 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Fri, 29 Jan 2021 23:16:25 +0530 Subject: [PATCH 1/5] msm: ipa3: Adding wdii3 client support for yupik Adding wdi3 endpoint client support for yupik. Change-Id: I0f9f98dbf80dfa40c3f9528ec958ba4cf6326633 Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa_utils.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c index b413b866556d..ce5498d13e8b 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_utils.c @@ -3261,6 +3261,12 @@ static const struct ipa_ep_configuration ipa3_ep_mapping { 16, 7, 9, 9, IPA_EE_Q6, GSI_ESCAPE_BUF_ONLY, 0 } }, /* IPA_4_11 */ + [IPA_4_11][IPA_CLIENT_WLAN2_PROD] = { + true, IPA_v4_11_GROUP_UL_DL, + true, + IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, + QMB_MASTER_SELECT_DDR, + { 3, 3, 8, 16, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 } }, [IPA_4_11][IPA_CLIENT_WLAN1_PROD] = { true, IPA_v4_11_GROUP_UL_DL, true, @@ -3346,6 +3352,12 @@ static const struct ipa_ep_configuration ipa3_ep_mapping IPA_DPS_HPS_SEQ_TYPE_2ND_PKT_PROCESS_PASS_NO_DEC_UCP, QMB_MASTER_SELECT_DDR, { 1, 1, 8, 16, IPA_EE_AP } }, + [IPA_4_11][IPA_CLIENT_WLAN2_CONS] = { + true, IPA_v4_11_GROUP_UL_DL, + false, + IPA_DPS_HPS_SEQ_TYPE_INVALID, + QMB_MASTER_SELECT_DDR, + { 18, 9, 8, 14, IPA_EE_AP, GSI_SMART_PRE_FETCH, 3 } }, [IPA_4_11][IPA_CLIENT_WLAN1_CONS] = { true, IPA_v4_11_GROUP_UL_DL, false, From 95bcacd2ad39a00206e316d006d87078e8fe6140 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Fri, 29 Jan 2021 23:41:53 +0530 Subject: [PATCH 2/5] msm: ipa3: uC stats feature not support for yupik target uC stats feature not support for yupik target so disabling this API calling support. Change-Id: Iebd074f7cd5d4b57b8db3dc137684dbfc6317e0e Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) 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 0d4789a199bc..28636d8e5c7a 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_wdi3_i.c @@ -814,7 +814,8 @@ int ipa3_disconn_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) } ipa3_release_wdi3_gsi_smmu_mappings(IPA_WDI3_RX_DIR); - if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) + if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && + ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) ipa3_uc_debug_stats_dealloc(IPA_HW_PROTOCOL_WDI3); ipa3_delete_dflt_flt_rules(ipa_ep_idx_rx); memset(ep_rx, 0, sizeof(struct ipa3_ep_context)); @@ -848,7 +849,8 @@ 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) { + if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && + ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) { if (ipa3_ctx->uc_ctx.uc_loaded && !ipa3_ctx->uc_ctx.uc_event_ring_valid) { if (ipa3_uc_setup_event_ring()) { @@ -897,7 +899,8 @@ int ipa3_enable_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) goto fail_start_channel1; } /* start uC gsi dbg stats monitor */ - if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { + if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && + ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) { ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_WDI3].ch_id_info[0].ch_id = ep_rx->gsi_chan_hdl; ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_WDI3].ch_id_info[0].dir @@ -1005,7 +1008,8 @@ int ipa3_disable_wdi3_pipes(int ipa_ep_idx_tx, int ipa_ep_idx_rx) goto fail; } /* stop uC gsi dbg stats monitor */ - if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5) { + if (ipa3_ctx->ipa_hw_type >= IPA_HW_v4_5 && + ipa3_ctx->ipa_hw_type != IPA_HW_v4_11) { ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_WDI3].ch_id_info[0].ch_id = 0xff; ipa3_ctx->gsi_info[IPA_HW_PROTOCOL_WDI3].ch_id_info[0].dir From 17192351120bcd107a975a3104fd05c585008e75 Mon Sep 17 00:00:00 2001 From: Ashok Vuyyuru Date: Wed, 3 Feb 2021 16:02:33 +0530 Subject: [PATCH 3/5] msm: ipa3: Change to avoid the assert channel not allocated scenario When the modem channel not running if try to flow control the channel it will return not valid channel. Adding change to avoid the assert in this error condition. Change-Id: Ia9c32fbc11814e5fef3b7fbcc165439b5d03b2fa Signed-off-by: Ashok Vuyyuru --- drivers/platform/msm/gsi/gsi.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/drivers/platform/msm/gsi/gsi.c b/drivers/platform/msm/gsi/gsi.c index a79f3e5d9230..12d710737ffb 100644 --- a/drivers/platform/msm/gsi/gsi.c +++ b/drivers/platform/msm/gsi/gsi.c @@ -4772,13 +4772,15 @@ int gsi_flow_control_ee(unsigned int chan_idx, unsigned int ee, res = -GSI_STATUS_RES_ALLOC_FAILURE; goto free_lock; } else if (gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code == - GSI_GEN_EE_CMD_RETURN_CODE_INCORRECT_CHANNEL_TYPE || - gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code == - GSI_GEN_EE_CMD_RETURN_CODE_INCORRECT_CHANNEL_INDEX){ + GSI_GEN_EE_CMD_RETURN_CODE_INCORRECT_CHANNEL_TYPE) { GSIERR("chan_idx=%u ee=%u not in correct state\n", chan_idx, ee); GSI_ASSERT(); + } else if (gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code == + GSI_GEN_EE_CMD_RETURN_CODE_INCORRECT_CHANNEL_INDEX) { + GSIERR("Channel ID = %u ee = %u not allocated\n", chan_idx, ee); } + if (gsi_ctx->scratch.word0.s.generic_ee_cmd_return_code == 0) { GSIERR("No response received\n"); res = -GSI_STATUS_ERROR; From 839d05d11bd24d9e1049b8513219ec797a699aac Mon Sep 17 00:00:00 2001 From: raghavendar rao l Date: Thu, 4 Feb 2021 18:36:02 +0530 Subject: [PATCH 4/5] msm:qmi: Fix race condition Add changes to fix race condition while sending modem init QMI sync message. Change-Id: I2183dd2da40b589ccd628469273b33edc2ea399d Signed-off-by: Raghavendar rao l --- drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c b/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c index c8ef3a0e7bc5..e011fdcae27a 100644 --- a/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c +++ b/drivers/platform/msm/ipa/ipa_v3/ipa_qmi_service.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-only /* - * Copyright (c) 2013-2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2013-2021, The Linux Foundation. All rights reserved. */ #include @@ -1515,13 +1515,13 @@ static void ipa3_q6_clnt_svc_arrive(struct work_struct *work) IPAWANERR( "ipa3_qmi_init_modem_send_sync_msg failed due to SSR!\n"); /* Cleanup when ipa3_wwan_remove is called */ + mutex_lock(&ipa3_qmi_lock); if (ipa_q6_clnt != NULL) { - mutex_lock(&ipa3_qmi_lock); qmi_handle_release(ipa_q6_clnt); vfree(ipa_q6_clnt); ipa_q6_clnt = NULL; - mutex_unlock(&ipa3_qmi_lock); } + mutex_unlock(&ipa3_qmi_lock); IPAWANERR("Exit from service arrive fun\n"); return; } From db9f7f48ee970eebfbfac1e479ecba589e3d7d0b Mon Sep 17 00:00:00 2001 From: Michael Adisumarta Date: Fri, 11 Dec 2020 02:09:03 -0800 Subject: [PATCH 5/5] msm: ipa: Add a check to see if mtu is set or SET_MTU IOCTL Add an check for mtu set before sending an event to IPACM so MTU will always be nonzero. Change-Id: Ib8954865ba46743e143d72cf15d8bbce282aa013 Signed-off-by: Michael Adisumarta --- drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c index 4e447e453acb..de5d8d7ac681 100644 --- a/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c +++ b/drivers/platform/msm/ipa/ipa_v3/rmnet_ipa.c @@ -2144,11 +2144,12 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) if (mtu_v4_set && mtu_v6_set) iptype = IPA_IP_MAX; - rc = rmnet_ipa_send_set_mtu_notification( - ext_ioctl_data.u.mtu_params.if_name, - mux_channel[rmnet_index].mtu_v4, - mux_channel[rmnet_index].mtu_v6, - iptype); + if (mtu_v4_set || mtu_v6_set) + rc = rmnet_ipa_send_set_mtu_notification( + ext_ioctl_data.u.mtu_params.if_name, + mux_channel[rmnet_index].mtu_v4, + mux_channel[rmnet_index].mtu_v6, + iptype); break; default: