qcacld-3.0: Fix invalid BW vote for FISA aggregation case

Currently for FISA aggregated RX frame, one skb will contain 2~16
RX msdu, if only count 1 RX msdu into stats, BW vote is not right
that even if RX T-put > 1 Gbps, wlan only vote 4(high), this can not
satisfy the vote requirement for peak T-put > 2 Gbps which should be
5(very high) which then degrade the T-put.

Fix RX packets stats correctly for aggregated RX frame.

Change-Id: Idd0cee1b68555dedad49025c03a13a929ec2af1c
CRs-Fixed: 2838667
This commit is contained in:
Jinwei Chen 2020-12-28 00:09:44 -08:00
commit f8a401631f
2 changed files with 10 additions and 4 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -1117,6 +1117,8 @@ QDF_STATUS hdd_softap_rx_packet_cbk(void *adapter_context, qdf_nbuf_t rx_buf)
cpu_index = wlan_hdd_get_cpu();
++adapter->hdd_stats.tx_rx_stats.rx_packets[cpu_index];
++adapter->stats.rx_packets;
/* count aggregated RX frame into stats */
adapter->stats.rx_packets += qdf_nbuf_get_gso_segs(skb);
adapter->stats.rx_bytes += skb->len;
/* Send DHCP Indication to FW */

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2012-2020 The Linux Foundation. All rights reserved.
* Copyright (c) 2012-2021 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
@ -2313,7 +2313,8 @@ QDF_STATUS hdd_rx_deliver_to_stack(struct hdd_adapter *adapter,
adapter->hdd_stats.tx_rx_stats.rx_non_aggregated++;
/* Account for GRO/LRO ineligible packets, mostly UDP */
hdd_ctx->no_rx_offload_pkt_cnt++;
if (qdf_nbuf_get_gso_segs(skb) == 0)
hdd_ctx->no_rx_offload_pkt_cnt++;
if (qdf_likely((hdd_ctx->enable_dp_rx_threads ||
hdd_ctx->enable_rxthread) &&
@ -2371,7 +2372,8 @@ QDF_STATUS hdd_rx_deliver_to_stack(struct hdd_adapter *adapter,
adapter->hdd_stats.tx_rx_stats.rx_non_aggregated++;
/* Account for GRO/LRO ineligible packets, mostly UDP */
hdd_ctx->no_rx_offload_pkt_cnt++;
if (qdf_nbuf_get_gso_segs(skb) == 0)
hdd_ctx->no_rx_offload_pkt_cnt++;
if (qdf_likely((hdd_ctx->enable_dp_rx_threads ||
hdd_ctx->enable_rxthread) &&
@ -2599,6 +2601,8 @@ QDF_STATUS hdd_rx_packet_cbk(void *adapter_context,
skb->protocol = eth_type_trans(skb, skb->dev);
++adapter->hdd_stats.tx_rx_stats.rx_packets[cpu_index];
++adapter->stats.rx_packets;
/* count aggregated RX frame into stats */
adapter->stats.rx_packets += qdf_nbuf_get_gso_segs(skb);
adapter->stats.rx_bytes += skb->len;
/* Incr GW Rx count for NUD tracking based on GW mac addr */