qcacld-3.0: Add support for Tx OTA Ack stats
Add stats in vdev for Tx OTA success and failure count Change-Id: I6849dfc1d11351f5cc63acf3a22bf72a1ef8109c CRs-Fixed: 2211898
This commit is contained in:
@@ -629,6 +629,17 @@ static inline void ol_tx_timestamp(ol_txrx_pdev_handle pdev,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
static void ol_tx_update_ack_count(struct ol_tx_desc_t *tx_desc,
|
||||||
|
enum htt_tx_status status)
|
||||||
|
{
|
||||||
|
if (!tx_desc->vdev)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (status == htt_tx_status_ok)
|
||||||
|
++tx_desc->vdev->txrx_stats.txack_success;
|
||||||
|
else
|
||||||
|
++tx_desc->vdev->txrx_stats.txack_failed;
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* ol_tx_update_connectivity_stats() - update connectivity stats
|
* ol_tx_update_connectivity_stats() - update connectivity stats
|
||||||
* @tx_desc: tx desc
|
* @tx_desc: tx desc
|
||||||
@@ -750,6 +761,7 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev,
|
|||||||
if (pkt_type_bitmap)
|
if (pkt_type_bitmap)
|
||||||
ol_tx_update_connectivity_stats(tx_desc, netbuf,
|
ol_tx_update_connectivity_stats(tx_desc, netbuf,
|
||||||
status);
|
status);
|
||||||
|
ol_tx_update_ack_count(tx_desc, status);
|
||||||
|
|
||||||
if (tx_desc->pkt_type != OL_TX_FRM_TSO) {
|
if (tx_desc->pkt_type != OL_TX_FRM_TSO) {
|
||||||
packetdump_cb = pdev->ol_tx_packetdump_cb;
|
packetdump_cb = pdev->ol_tx_packetdump_cb;
|
||||||
|
@@ -2245,6 +2245,9 @@ ol_txrx_vdev_attach(struct cdp_pdev *ppdev,
|
|||||||
vdev->osif_flow_control_is_pause = NULL;
|
vdev->osif_flow_control_is_pause = NULL;
|
||||||
vdev->osif_fc_ctx = NULL;
|
vdev->osif_fc_ctx = NULL;
|
||||||
|
|
||||||
|
vdev->txrx_stats.txack_success = 0;
|
||||||
|
vdev->txrx_stats.txack_failed = 0;
|
||||||
|
|
||||||
/* Default MAX Q depth for every VDEV */
|
/* Default MAX Q depth for every VDEV */
|
||||||
vdev->ll_pause.max_q_depth =
|
vdev->ll_pause.max_q_depth =
|
||||||
ol_tx_cfg_max_tx_queue_depth_ll(vdev->pdev->ctrl_pdev);
|
ol_tx_cfg_max_tx_queue_depth_ll(vdev->pdev->ctrl_pdev);
|
||||||
@@ -4668,6 +4671,24 @@ static void ol_txrx_update_mac_id(uint8_t vdev_id, uint8_t mac_id)
|
|||||||
vdev->mac_id = mac_id;
|
vdev->mac_id = mac_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ol_txrx_get_tx_ack_count() - get tx ack count
|
||||||
|
* @vdev_id: vdev_id
|
||||||
|
*
|
||||||
|
* Return: tx ack count
|
||||||
|
*/
|
||||||
|
static uint32_t ol_txrx_get_tx_ack_stats(uint8_t vdev_id)
|
||||||
|
{
|
||||||
|
struct ol_txrx_vdev_t *vdev =
|
||||||
|
(struct ol_txrx_vdev_t *)ol_txrx_get_vdev_from_vdev_id(vdev_id);
|
||||||
|
if (!vdev) {
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_TXRX, QDF_TRACE_LEVEL_ERROR,
|
||||||
|
"%s: Invalid vdev_id %d", __func__, vdev_id);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return vdev->txrx_stats.txack_success;
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -5837,6 +5858,7 @@ static struct cdp_misc_ops ol_ops_misc = {
|
|||||||
.hl_tdls_flag_reset = ol_txrx_hl_tdls_flag_reset,
|
.hl_tdls_flag_reset = ol_txrx_hl_tdls_flag_reset,
|
||||||
.tx_non_std = ol_tx_non_std,
|
.tx_non_std = ol_tx_non_std,
|
||||||
.get_vdev_id = ol_txrx_get_vdev_id,
|
.get_vdev_id = ol_txrx_get_vdev_id,
|
||||||
|
.get_tx_ack_stats = ol_txrx_get_tx_ack_stats,
|
||||||
.set_wisa_mode = ol_txrx_set_wisa_mode,
|
.set_wisa_mode = ol_txrx_set_wisa_mode,
|
||||||
.txrx_data_stall_cb_register = ol_register_data_stall_detect_cb,
|
.txrx_data_stall_cb_register = ol_register_data_stall_detect_cb,
|
||||||
.txrx_data_stall_cb_deregister = ol_deregister_data_stall_detect_cb,
|
.txrx_data_stall_cb_deregister = ol_deregister_data_stall_detect_cb,
|
||||||
|
@@ -1039,6 +1039,11 @@ struct ol_txrx_vdev_t {
|
|||||||
ol_txrx_rx_fp rx; /* receive function used by this vdev */
|
ol_txrx_rx_fp rx; /* receive function used by this vdev */
|
||||||
ol_txrx_stats_rx_fp stats_rx; /* receive function used by this vdev */
|
ol_txrx_stats_rx_fp stats_rx; /* receive function used by this vdev */
|
||||||
|
|
||||||
|
struct {
|
||||||
|
uint32_t txack_success;
|
||||||
|
uint32_t txack_failed;
|
||||||
|
} txrx_stats;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
/*
|
/*
|
||||||
* If the vdev object couldn't be deleted immediately because
|
* If the vdev object couldn't be deleted immediately because
|
||||||
|
Reference in New Issue
Block a user