diff --git a/core/hdd/src/wlan_hdd_ipa.c b/core/hdd/src/wlan_hdd_ipa.c index 69ff23e46a7b..6e9eb7b80eb7 100644 --- a/core/hdd/src/wlan_hdd_ipa.c +++ b/core/hdd/src/wlan_hdd_ipa.c @@ -382,8 +382,15 @@ void hdd_ipa_send_skb_to_network(qdf_nbuf_t skb, qdf_netdev_t dev) cpu_index = wlan_hdd_get_cpu(); ++adapter->hdd_stats.tx_rx_stats.rx_packets[cpu_index]; - ++adapter->stats.rx_packets; - adapter->stats.rx_bytes += skb->len; + + /* + * Update STA RX exception packet stats. + * For SAP as part of IPA HW stats are updated. + */ + if (adapter->device_mode == QDF_STA_MODE) { + ++adapter->stats.rx_packets; + adapter->stats.rx_bytes += skb->len; + } result = hdd_ipa_aggregated_rx_ind(skb); if (result == NET_RX_SUCCESS) diff --git a/core/hdd/src/wlan_hdd_main.c b/core/hdd/src/wlan_hdd_main.c index 74c2036b05b7..1bb4f57794e4 100644 --- a/core/hdd/src/wlan_hdd_main.c +++ b/core/hdd/src/wlan_hdd_main.c @@ -7192,7 +7192,7 @@ static void hdd_bus_bw_work_handler(struct work_struct *work) { struct hdd_context *hdd_ctx = container_of(work, struct hdd_context, bus_bw_work); - struct hdd_adapter *adapter = NULL; + struct hdd_adapter *adapter = NULL, *con_sap_adapter = NULL; uint64_t tx_packets = 0, rx_packets = 0; uint64_t fwd_tx_packets = 0, fwd_rx_packets = 0; uint64_t fwd_tx_packets_diff = 0, fwd_rx_packets_diff = 0; @@ -7253,6 +7253,9 @@ static void hdd_bus_bw_work_handler(struct work_struct *work) } } + if (adapter->device_mode == QDF_SAP_MODE) + con_sap_adapter = adapter; + total_rx += adapter->stats.rx_packets; total_tx += adapter->stats.tx_packets; @@ -7280,6 +7283,11 @@ static void hdd_bus_bw_work_handler(struct work_struct *work) tx_packets += (uint64_t)ipa_tx_packets; rx_packets += (uint64_t)ipa_rx_packets; + if (con_sap_adapter) { + con_sap_adapter->stats.tx_packets += ipa_tx_packets; + con_sap_adapter->stats.rx_packets += ipa_rx_packets; + } + ucfg_ipa_set_perf_level(hdd_ctx->hdd_pdev, tx_packets, rx_packets); ucfg_ipa_uc_stat_request(hdd_ctx->hdd_pdev, 2); }