diff --git a/drivers/platform/msm/ipa/ipa_client.c b/drivers/platform/msm/ipa/ipa_client.c index e954741672e..cfbedfbb6f4 100644 --- a/drivers/platform/msm/ipa/ipa_client.c +++ b/drivers/platform/msm/ipa/ipa_client.c @@ -31,56 +31,17 @@ static void ipa_enable_data_path(u32 clnt_hdl) static int ipa_disable_data_path(u32 clnt_hdl) { - DECLARE_COMPLETION_ONSTACK(tag_rsp); - struct ipa_desc desc = {0}; - struct ipa_ip_packet_tag cmd; struct ipa_ep_context *ep = &ipa_ctx->ep[clnt_hdl]; - struct ipa_tree_node *node; - int result = 0; if (ipa_ctx->ipa_hw_mode == IPA_HW_MODE_VIRTUAL) { /* IPA_HW_MODE_VIRTUAL lacks support for TAG IC & EP suspend */ return 0; } - node = kmem_cache_zalloc(ipa_ctx->tree_node_cache, GFP_KERNEL); - if (!node) { - IPAERR("failed to alloc tree node object\n"); - result = -ENOMEM; - goto fail_alloc; - } - if (ipa_ctx->ipa_hw_type == IPA_HW_v1_1 && !ep->suspended) { ipa_write_reg(ipa_ctx->mmio, IPA_ENDP_INIT_CTRL_n_OFST(clnt_hdl), 1); - cmd.tag = (u32) &tag_rsp; - - desc.pyld = &cmd; - desc.len = sizeof(struct ipa_ip_packet_tag); - desc.type = IPA_IMM_CMD_DESC; - desc.opcode = IPA_IP_PACKET_TAG; - - IPADBG("Wait on TAG %p clnt=%d\n", &tag_rsp, clnt_hdl); - - node->hdl = cmd.tag; - mutex_lock(&ipa_ctx->lock); - if (ipa_insert(&ipa_ctx->tag_tree, node)) { - IPAERR("failed to add to tree\n"); - result = -EINVAL; - mutex_unlock(&ipa_ctx->lock); - goto fail_insert; - } - mutex_unlock(&ipa_ctx->lock); - - if (ipa_send_cmd(1, &desc)) { - ipa_write_reg(ipa_ctx->mmio, - IPA_ENDP_INIT_CTRL_n_OFST(clnt_hdl), 0); - IPAERR("fail to send TAG command\n"); - result = -EPERM; - goto fail_send; - } - wait_for_completion(&tag_rsp); if (IPA_CLIENT_IS_CONS(ep->client) && ep->cfg.aggr.aggr_en == IPA_ENABLE_AGGR && ep->cfg.aggr.aggr_time_limit) @@ -89,13 +50,6 @@ static int ipa_disable_data_path(u32 clnt_hdl) } return 0; - -fail_send: - rb_erase(&node->node, &ipa_ctx->tag_tree); -fail_insert: - kmem_cache_free(ipa_ctx->tree_node_cache, node); -fail_alloc: - return result; } static int ipa_connect_configure_sps(const struct ipa_connect_params *in, diff --git a/drivers/platform/msm/ipa/ipa_dp.c b/drivers/platform/msm/ipa/ipa_dp.c index dabf86f2880..bd1da2c8895 100644 --- a/drivers/platform/msm/ipa/ipa_dp.c +++ b/drivers/platform/msm/ipa/ipa_dp.c @@ -528,8 +528,6 @@ int ipa_handle_rx_core(bool process_all, bool in_poll_state) struct ipa_sys_context *sys = &ipa_ctx->sys[IPA_A5_LAN_WAN_IN]; struct ipa_ep_context *ep; int cnt = 0; - struct completion *compl; - struct ipa_tree_node *node; unsigned int src_pipe; while ((in_poll_state ? atomic_read(&ipa_ctx->curr_polling_state) : @@ -584,35 +582,6 @@ int ipa_handle_rx_core(bool process_all, bool in_poll_state) IPA_STATS_INC_CNT(ipa_ctx->stats.rx_pkts); IPA_STATS_EXCP_CNT(mux_hdr->flags, ipa_ctx->stats.rx_excp_pkts); - if (unlikely(mux_hdr->flags & IPA_A5_MUX_HDR_EXCP_FLAG_TAG)) { - if (ipa_ctx->ipa_hw_mode != IPA_HW_MODE_VIRTUAL) { - /* retrieve the compl object from tag value */ - mux_hdr++; - compl = (struct completion *) - ntohl(*((u32 *)mux_hdr)); - IPADBG("%x %x %p\n", *(u32 *)mux_hdr, - *((u32 *)mux_hdr + 1), compl); - - mutex_lock(&ipa_ctx->lock); - node = ipa_search(&ipa_ctx->tag_tree, - (u32)compl); - if (node) { - complete_all(compl); - rb_erase(&node->node, - &ipa_ctx->tag_tree); - kmem_cache_free( - ipa_ctx->tree_node_cache, node); - } else { - WARN_ON(1); - } - mutex_unlock(&ipa_ctx->lock); - } - dev_kfree_skb(rx_skb); - ipa_replenish_rx_cache(); - ++cnt; - continue; - } - /* * Any packets arriving over AMPDU_TX should be dispatched * to the regular WLAN RX data-path.