qcacld-3.0: Add intra bss forwarded packets count
Propagation from qcacld-2.0 to qcacld-3.0. In lpm qos voting, no. of packets or bytes sent or received in a particular amount of time is recorded and decision of disabling or enabling lpm is done based on that. These packets are recorded in HDD layer. In case when packets are forwarded to tx only, packets don't come upto HDD layer and so in case of intra bss forwarding, lpm qos voting is not being executed appropriately. Add code to calculate the intra bss forwarded packets in txrx layer and update them in calculating lpm qos voting. Change-Id: I805663688cb300c8735b3e2f9680818a7b50bc9f CRs-Fixed: 990868
Cette révision appartient à :

révisé par
Vishwajith Upendra

Parent
d39315d8cb
révision
11c874abae
@@ -39,6 +39,8 @@
|
||||
#include <ol_rx.h> /* ol_rx_deliver */
|
||||
#include <ol_txrx_internal.h> /* TXRX_ASSERT1 */
|
||||
#include <ol_tx.h>
|
||||
#include <ol_txrx.h>
|
||||
|
||||
/*
|
||||
* Porting from Ap11PrepareForwardedPacket.
|
||||
* This routine is called when a RX data frame from an associated station is
|
||||
@@ -197,6 +199,7 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
|
||||
qdf_net_buf_debug_release_skb(msdu);
|
||||
ol_rx_fwd_to_tx(tx_vdev, msdu);
|
||||
msdu = NULL; /* already handled this MSDU */
|
||||
vdev->fwd_to_tx_packets++;
|
||||
TXRX_STATS_ADD(pdev,
|
||||
pub.rx.intra_bss_fwd.packets_fwd, 1);
|
||||
} else {
|
||||
@@ -229,3 +232,27 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* ol_rx_get_fwd_to_tx_packet_count() - to get the total rx packets that has
|
||||
* been forwarded to tx without going to OS layer.
|
||||
*
|
||||
* @vdev_id: vdev id
|
||||
*
|
||||
* Return: forwarded packet count if vdev is valid
|
||||
* 0 if vdev is NULL
|
||||
*
|
||||
*/
|
||||
uint64_t ol_rx_get_fwd_to_tx_packet_count(uint8_t vdev_id)
|
||||
{
|
||||
struct ol_txrx_vdev_t *vdev = NULL;
|
||||
|
||||
vdev = (struct ol_txrx_vdev_t *)ol_txrx_get_vdev_from_vdev_id(vdev_id);
|
||||
if (!vdev) {
|
||||
TXRX_PRINT(TXRX_PRINT_LEVEL_ERR,
|
||||
"%s: vdev is NULL for vdev id %d", __func__, vdev_id);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return vdev->fwd_to_tx_packets;
|
||||
}
|
||||
|
||||
|
@@ -72,4 +72,9 @@ ol_rx_fwd_check(struct ol_txrx_vdev_t *vdev,
|
||||
struct ol_txrx_peer_t *peer,
|
||||
unsigned tid, qdf_nbuf_t msdu_list);
|
||||
|
||||
uint64_t
|
||||
ol_rx_get_fwd_to_tx_packet_count(
|
||||
uint8_t vdev_id);
|
||||
|
||||
|
||||
#endif /* _OL_RX_FWD_H_ */
|
||||
|
@@ -1145,6 +1145,7 @@ ol_txrx_vdev_attach(ol_txrx_pdev_handle pdev,
|
||||
vdev->safemode = 0;
|
||||
vdev->drop_unenc = 1;
|
||||
vdev->num_filters = 0;
|
||||
vdev->fwd_to_tx_packets = 0;
|
||||
|
||||
qdf_mem_copy(&vdev->mac_addr.raw[0], vdev_mac_addr,
|
||||
OL_TXRX_MAC_ADDR_LEN);
|
||||
|
@@ -880,6 +880,9 @@ struct ol_txrx_vdev_t {
|
||||
#ifdef QCA_LL_TX_FLOW_CONTROL_V2
|
||||
struct ol_tx_flow_pool_t *pool;
|
||||
#endif
|
||||
|
||||
/* packet count that only forwarded and not sent to OS layer */
|
||||
uint64_t fwd_to_tx_packets;
|
||||
};
|
||||
|
||||
struct ol_rx_reorder_array_elem_t {
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur