Loading dp/wifi3.0/dp_htt.c +15 −4 Original line number Diff line number Diff line Loading @@ -744,7 +744,7 @@ static int htt_h2t_ver_req_msg(struct htt_soc *soc) SET_HTC_PACKET_INFO_TX(&pkt->htc_pkt, dp_htt_h2t_send_complete_free_netbuf, qdf_nbuf_data(msg), qdf_nbuf_len(msg), soc->htc_endpoint, 1); /* tag - not relevant here */ HTC_TX_PACKET_TAG_RTPM_PUT_RC); SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, HTT_H2T_MSG_TYPE_VERSION_REQ, Loading Loading @@ -1746,7 +1746,7 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id, qdf_nbuf_data(htt_msg), qdf_nbuf_len(htt_msg), soc->htc_endpoint, 1); /* tag - not relevant here */ HTC_TX_PACKET_TAG_RUNTIME_PUT); /* tag for no FW response msg */ SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, htt_msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, Loading Loading @@ -3969,7 +3969,17 @@ static void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) case HTT_T2H_MSG_TYPE_VERSION_CONF: { /* * HTC maintains runtime pm count for H2T messages that * have a response msg from FW. This count ensures that * in the case FW does not sent out the response or host * did not process this indication runtime_put happens * properly in the cleanup path. */ if (htc_dec_return_runtime_cnt(soc->htc_soc) >= 0) htc_pm_runtime_put(soc->htc_soc); else soc->stats.htt_ver_req_put_skip++; soc->tgt_ver.major = HTT_VER_CONF_MAJOR_GET(*msg_word); soc->tgt_ver.minor = HTT_VER_CONF_MINOR_GET(*msg_word); QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_LOW, Loading Loading @@ -4581,7 +4591,8 @@ QDF_STATUS dp_h2t_cfg_stats_msg_send(struct dp_pdev *pdev, dp_htt_h2t_send_complete_free_netbuf, qdf_nbuf_data(msg), qdf_nbuf_len(msg), soc->htc_endpoint, 1); /* tag - not relevant here */ /* tag for no FW response msg */ HTC_TX_PACKET_TAG_RUNTIME_PUT); SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, HTT_H2T_MSG_TYPE_PPDU_STATS_CFG, Loading dp/wifi3.0/dp_htt.h +2 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,8 @@ struct htt_soc { struct { int htc_err_cnt; int htc_pkt_free; /* rtpm put skip count for ver req msg */ int htt_ver_req_put_skip; } stats; HTT_TX_MUTEX_TYPE htt_tx_mutex; Loading dp/wifi3.0/dp_ipa.c +13 −8 Original line number Diff line number Diff line Loading @@ -698,6 +698,7 @@ QDF_STATUS dp_ipa_set_doorbell_paddr(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) soc->reo_dest_ring[IPA_REO_DEST_RING_IDX].hal_srng; uint32_t tx_comp_doorbell_dmaaddr; uint32_t rx_ready_doorbell_dmaaddr; int ret = 0; if (!pdev) { dp_err("%s invalid instance", __func__); Loading @@ -712,13 +713,19 @@ QDF_STATUS dp_ipa_set_doorbell_paddr(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) ioremap(ipa_res->tx_comp_doorbell_paddr, 4); if (qdf_mem_smmu_s1_enabled(soc->osdev)) { pld_smmu_map(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, &tx_comp_doorbell_dmaaddr, sizeof(uint32_t)); ret = pld_smmu_map(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, &tx_comp_doorbell_dmaaddr, sizeof(uint32_t)); ipa_res->tx_comp_doorbell_paddr = tx_comp_doorbell_dmaaddr; qdf_assert_always(!ret); pld_smmu_map(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, &rx_ready_doorbell_dmaaddr, sizeof(uint32_t)); ret = pld_smmu_map(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, &rx_ready_doorbell_dmaaddr, sizeof(uint32_t)); ipa_res->rx_ready_doorbell_paddr = rx_ready_doorbell_dmaaddr; qdf_assert_always(!ret); } DP_IPA_SET_TX_DB_PADDR(soc, ipa_res); Loading Loading @@ -1620,14 +1627,12 @@ QDF_STATUS dp_ipa_cleanup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, ret = pld_smmu_unmap(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, sizeof(uint32_t)); if (ret) dp_err_rl("IPA RX DB smmu unmap failed"); qdf_assert_always(!ret); ret = pld_smmu_unmap(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, sizeof(uint32_t)); if (ret) dp_err_rl("IPA TX DB smmu unmap failed"); qdf_assert_always(!ret); } exit: Loading dp/wifi3.0/dp_peer.c +2 −0 Original line number Diff line number Diff line Loading @@ -3495,6 +3495,8 @@ QDF_STATUS dp_peer_state_update(struct cdp_soc_t *soc_hdl, uint8_t *peer_mac, } peer->state = state; peer->authorize = (state == OL_TXRX_PEER_STATE_AUTH) ? 1 : 0; dp_info("peer %pK state %d", peer, peer->state); /* ref_cnt is incremented inside dp_peer_find_hash_find(). * Decrement it here. Loading dp/wifi3.0/dp_types.h +1 −0 Original line number Diff line number Diff line Loading @@ -2481,6 +2481,7 @@ struct dp_fisa_rx_sw_ft { uint32_t last_hal_aggr_count; uint32_t cur_aggr_gso_size; struct udphdr *head_skb_udp_hdr; uint32_t reo_dest_indication; }; #define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_fisa_rx_sw_ft) Loading Loading
dp/wifi3.0/dp_htt.c +15 −4 Original line number Diff line number Diff line Loading @@ -744,7 +744,7 @@ static int htt_h2t_ver_req_msg(struct htt_soc *soc) SET_HTC_PACKET_INFO_TX(&pkt->htc_pkt, dp_htt_h2t_send_complete_free_netbuf, qdf_nbuf_data(msg), qdf_nbuf_len(msg), soc->htc_endpoint, 1); /* tag - not relevant here */ HTC_TX_PACKET_TAG_RTPM_PUT_RC); SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, HTT_H2T_MSG_TYPE_VERSION_REQ, Loading Loading @@ -1746,7 +1746,7 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id, qdf_nbuf_data(htt_msg), qdf_nbuf_len(htt_msg), soc->htc_endpoint, 1); /* tag - not relevant here */ HTC_TX_PACKET_TAG_RUNTIME_PUT); /* tag for no FW response msg */ SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, htt_msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, Loading Loading @@ -3969,7 +3969,17 @@ static void dp_htt_t2h_msg_handler(void *context, HTC_PACKET *pkt) case HTT_T2H_MSG_TYPE_VERSION_CONF: { /* * HTC maintains runtime pm count for H2T messages that * have a response msg from FW. This count ensures that * in the case FW does not sent out the response or host * did not process this indication runtime_put happens * properly in the cleanup path. */ if (htc_dec_return_runtime_cnt(soc->htc_soc) >= 0) htc_pm_runtime_put(soc->htc_soc); else soc->stats.htt_ver_req_put_skip++; soc->tgt_ver.major = HTT_VER_CONF_MAJOR_GET(*msg_word); soc->tgt_ver.minor = HTT_VER_CONF_MINOR_GET(*msg_word); QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_INFO_LOW, Loading Loading @@ -4581,7 +4591,8 @@ QDF_STATUS dp_h2t_cfg_stats_msg_send(struct dp_pdev *pdev, dp_htt_h2t_send_complete_free_netbuf, qdf_nbuf_data(msg), qdf_nbuf_len(msg), soc->htc_endpoint, 1); /* tag - not relevant here */ /* tag for no FW response msg */ HTC_TX_PACKET_TAG_RUNTIME_PUT); SET_HTC_PACKET_NET_BUF_CONTEXT(&pkt->htc_pkt, msg); status = DP_HTT_SEND_HTC_PKT(soc, pkt, HTT_H2T_MSG_TYPE_PPDU_STATS_CFG, Loading
dp/wifi3.0/dp_htt.h +2 −0 Original line number Diff line number Diff line Loading @@ -177,6 +177,8 @@ struct htt_soc { struct { int htc_err_cnt; int htc_pkt_free; /* rtpm put skip count for ver req msg */ int htt_ver_req_put_skip; } stats; HTT_TX_MUTEX_TYPE htt_tx_mutex; Loading
dp/wifi3.0/dp_ipa.c +13 −8 Original line number Diff line number Diff line Loading @@ -698,6 +698,7 @@ QDF_STATUS dp_ipa_set_doorbell_paddr(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) soc->reo_dest_ring[IPA_REO_DEST_RING_IDX].hal_srng; uint32_t tx_comp_doorbell_dmaaddr; uint32_t rx_ready_doorbell_dmaaddr; int ret = 0; if (!pdev) { dp_err("%s invalid instance", __func__); Loading @@ -712,13 +713,19 @@ QDF_STATUS dp_ipa_set_doorbell_paddr(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) ioremap(ipa_res->tx_comp_doorbell_paddr, 4); if (qdf_mem_smmu_s1_enabled(soc->osdev)) { pld_smmu_map(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, &tx_comp_doorbell_dmaaddr, sizeof(uint32_t)); ret = pld_smmu_map(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, &tx_comp_doorbell_dmaaddr, sizeof(uint32_t)); ipa_res->tx_comp_doorbell_paddr = tx_comp_doorbell_dmaaddr; qdf_assert_always(!ret); pld_smmu_map(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, &rx_ready_doorbell_dmaaddr, sizeof(uint32_t)); ret = pld_smmu_map(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, &rx_ready_doorbell_dmaaddr, sizeof(uint32_t)); ipa_res->rx_ready_doorbell_paddr = rx_ready_doorbell_dmaaddr; qdf_assert_always(!ret); } DP_IPA_SET_TX_DB_PADDR(soc, ipa_res); Loading Loading @@ -1620,14 +1627,12 @@ QDF_STATUS dp_ipa_cleanup(struct cdp_soc_t *soc_hdl, uint8_t pdev_id, ret = pld_smmu_unmap(soc->osdev->dev, ipa_res->rx_ready_doorbell_paddr, sizeof(uint32_t)); if (ret) dp_err_rl("IPA RX DB smmu unmap failed"); qdf_assert_always(!ret); ret = pld_smmu_unmap(soc->osdev->dev, ipa_res->tx_comp_doorbell_paddr, sizeof(uint32_t)); if (ret) dp_err_rl("IPA TX DB smmu unmap failed"); qdf_assert_always(!ret); } exit: Loading
dp/wifi3.0/dp_peer.c +2 −0 Original line number Diff line number Diff line Loading @@ -3495,6 +3495,8 @@ QDF_STATUS dp_peer_state_update(struct cdp_soc_t *soc_hdl, uint8_t *peer_mac, } peer->state = state; peer->authorize = (state == OL_TXRX_PEER_STATE_AUTH) ? 1 : 0; dp_info("peer %pK state %d", peer, peer->state); /* ref_cnt is incremented inside dp_peer_find_hash_find(). * Decrement it here. Loading
dp/wifi3.0/dp_types.h +1 −0 Original line number Diff line number Diff line Loading @@ -2481,6 +2481,7 @@ struct dp_fisa_rx_sw_ft { uint32_t last_hal_aggr_count; uint32_t cur_aggr_gso_size; struct udphdr *head_skb_udp_hdr; uint32_t reo_dest_indication; }; #define DP_RX_GET_SW_FT_ENTRY_SIZE sizeof(struct dp_fisa_rx_sw_ft) Loading