Loading dp/inc/cdp_txrx_cmn.h +14 −0 Original line number Diff line number Diff line Loading @@ -2545,4 +2545,18 @@ cdp_vdev_get_peer_mac_list(ol_txrx_soc_handle soc, (soc, vdev_id, newmac, mac_cnt); } /** * cdp_rx_get_pending() - Get number of pending frames of RX threads * @soc: opaque soc handle * Return: number of pending frames */ static inline int cdp_rx_get_pending(ol_txrx_soc_handle soc) { if (!soc || !soc->ol_ops || !soc->ol_ops->dp_rx_get_pending) return 0; return soc->ol_ops->dp_rx_get_pending(soc); } #endif /* _CDP_TXRX_CMN_H_ */ dp/inc/cdp_txrx_ops.h +2 −0 Original line number Diff line number Diff line Loading @@ -1119,6 +1119,8 @@ struct ol_if_ops { void (*dp_put_multi_pages)(uint32_t desc_type, struct qdf_mem_multi_page_t *pages); #endif int (*dp_rx_get_pending)(ol_txrx_soc_handle soc); /* TODO: Add any other control path calls required to OL_IF/WMA layer */ }; Loading dp/wifi3.0/dp_ipa.c +1 −1 Original line number Diff line number Diff line Loading @@ -815,7 +815,7 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) /* Call HAL API to remap REO rings to REO2IPA ring */ ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 1) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 2) | HAL_REO_REMAP_IX0(REO_REMAP_SW1, 2) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 3) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 4) | HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) | Loading dp/wifi3.0/dp_main.c +14 −0 Original line number Diff line number Diff line Loading @@ -10738,6 +10738,8 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) QDF_STATUS status; struct dp_req_rx_hw_stats_t *rx_hw_stats; int rx_stats_sent_cnt = 0; uint32_t last_rx_mpdu_received; uint32_t last_rx_mpdu_missed; if (!vdev) { dp_err("vdev is null for vdev_id: %u", vdev_id); Loading @@ -10762,6 +10764,12 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) qdf_event_reset(&soc->rx_hw_stats_event); qdf_spin_lock_bh(&soc->rx_hw_stats_lock); /* save the last soc cumulative stats and reset it to 0 */ last_rx_mpdu_received = soc->ext_stats.rx_mpdu_received; last_rx_mpdu_missed = soc->ext_stats.rx_mpdu_missed; soc->ext_stats.rx_mpdu_received = 0; soc->ext_stats.rx_mpdu_missed = 0; rx_stats_sent_cnt = dp_peer_rxtid_stats(peer, dp_rx_hw_stats_cb, rx_hw_stats); if (!rx_stats_sent_cnt) { Loading @@ -10785,6 +10793,12 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) dp_info("rx hw stats event timeout"); if (soc->is_last_stats_ctx_init) rx_hw_stats->is_query_timeout = true; /** * If query timeout happened, use the last saved stats * for this time query. */ soc->ext_stats.rx_mpdu_received = last_rx_mpdu_received; soc->ext_stats.rx_mpdu_missed = last_rx_mpdu_missed; } qdf_spin_unlock_bh(&soc->rx_hw_stats_lock); dp_peer_unref_delete(peer); Loading dp/wifi3.0/dp_rx.c +4 −0 Original line number Diff line number Diff line Loading @@ -2060,6 +2060,9 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, if (QDF_IS_STATUS_ERROR(status)) { if (qdf_unlikely(rx_desc && rx_desc->nbuf)) { qdf_assert_always(rx_desc->unmapped); dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, false); qdf_nbuf_unmap_single(soc->osdev, rx_desc->nbuf, QDF_DMA_FROM_DEVICE); Loading Loading @@ -2148,6 +2151,7 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, * move unmap after scattered msdu waiting break logic * in case double skb unmap happened. */ dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, false); qdf_nbuf_unmap_single(soc->osdev, rx_desc->nbuf, QDF_DMA_FROM_DEVICE); rx_desc->unmapped = 1; Loading Loading
dp/inc/cdp_txrx_cmn.h +14 −0 Original line number Diff line number Diff line Loading @@ -2545,4 +2545,18 @@ cdp_vdev_get_peer_mac_list(ol_txrx_soc_handle soc, (soc, vdev_id, newmac, mac_cnt); } /** * cdp_rx_get_pending() - Get number of pending frames of RX threads * @soc: opaque soc handle * Return: number of pending frames */ static inline int cdp_rx_get_pending(ol_txrx_soc_handle soc) { if (!soc || !soc->ol_ops || !soc->ol_ops->dp_rx_get_pending) return 0; return soc->ol_ops->dp_rx_get_pending(soc); } #endif /* _CDP_TXRX_CMN_H_ */
dp/inc/cdp_txrx_ops.h +2 −0 Original line number Diff line number Diff line Loading @@ -1119,6 +1119,8 @@ struct ol_if_ops { void (*dp_put_multi_pages)(uint32_t desc_type, struct qdf_mem_multi_page_t *pages); #endif int (*dp_rx_get_pending)(ol_txrx_soc_handle soc); /* TODO: Add any other control path calls required to OL_IF/WMA layer */ }; Loading
dp/wifi3.0/dp_ipa.c +1 −1 Original line number Diff line number Diff line Loading @@ -815,7 +815,7 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_soc_t *soc_hdl, uint8_t pdev_id) /* Call HAL API to remap REO rings to REO2IPA ring */ ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 1) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 2) | HAL_REO_REMAP_IX0(REO_REMAP_SW1, 2) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 3) | HAL_REO_REMAP_IX0(REO_REMAP_SW4, 4) | HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) | Loading
dp/wifi3.0/dp_main.c +14 −0 Original line number Diff line number Diff line Loading @@ -10738,6 +10738,8 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) QDF_STATUS status; struct dp_req_rx_hw_stats_t *rx_hw_stats; int rx_stats_sent_cnt = 0; uint32_t last_rx_mpdu_received; uint32_t last_rx_mpdu_missed; if (!vdev) { dp_err("vdev is null for vdev_id: %u", vdev_id); Loading @@ -10762,6 +10764,12 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) qdf_event_reset(&soc->rx_hw_stats_event); qdf_spin_lock_bh(&soc->rx_hw_stats_lock); /* save the last soc cumulative stats and reset it to 0 */ last_rx_mpdu_received = soc->ext_stats.rx_mpdu_received; last_rx_mpdu_missed = soc->ext_stats.rx_mpdu_missed; soc->ext_stats.rx_mpdu_received = 0; soc->ext_stats.rx_mpdu_missed = 0; rx_stats_sent_cnt = dp_peer_rxtid_stats(peer, dp_rx_hw_stats_cb, rx_hw_stats); if (!rx_stats_sent_cnt) { Loading @@ -10785,6 +10793,12 @@ dp_request_rx_hw_stats(struct cdp_soc_t *soc_hdl, uint8_t vdev_id) dp_info("rx hw stats event timeout"); if (soc->is_last_stats_ctx_init) rx_hw_stats->is_query_timeout = true; /** * If query timeout happened, use the last saved stats * for this time query. */ soc->ext_stats.rx_mpdu_received = last_rx_mpdu_received; soc->ext_stats.rx_mpdu_missed = last_rx_mpdu_missed; } qdf_spin_unlock_bh(&soc->rx_hw_stats_lock); dp_peer_unref_delete(peer); Loading
dp/wifi3.0/dp_rx.c +4 −0 Original line number Diff line number Diff line Loading @@ -2060,6 +2060,9 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, if (QDF_IS_STATUS_ERROR(status)) { if (qdf_unlikely(rx_desc && rx_desc->nbuf)) { qdf_assert_always(rx_desc->unmapped); dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, false); qdf_nbuf_unmap_single(soc->osdev, rx_desc->nbuf, QDF_DMA_FROM_DEVICE); Loading Loading @@ -2148,6 +2151,7 @@ uint32_t dp_rx_process(struct dp_intr *int_ctx, hal_ring_handle_t hal_ring_hdl, * move unmap after scattered msdu waiting break logic * in case double skb unmap happened. */ dp_ipa_handle_rx_buf_smmu_mapping(soc, rx_desc->nbuf, false); qdf_nbuf_unmap_single(soc->osdev, rx_desc->nbuf, QDF_DMA_FROM_DEVICE); rx_desc->unmapped = 1; Loading