From 75355aa8f394844eb6c5cd4cd1b455d5728c9c35 Mon Sep 17 00:00:00 2001 From: Alok Kumar Date: Mon, 19 Mar 2018 17:32:58 +0530 Subject: [PATCH] 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 --- core/dp/txrx/ol_tx_send.c | 12 ++++++++++++ core/dp/txrx/ol_txrx.c | 22 ++++++++++++++++++++++ core/dp/txrx/ol_txrx_types.h | 5 +++++ 3 files changed, 39 insertions(+) diff --git a/core/dp/txrx/ol_tx_send.c b/core/dp/txrx/ol_tx_send.c index 06134c1e2866..f124323e209d 100644 --- a/core/dp/txrx/ol_tx_send.c +++ b/core/dp/txrx/ol_tx_send.c @@ -629,6 +629,17 @@ static inline void ol_tx_timestamp(ol_txrx_pdev_handle pdev, } #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 * @tx_desc: tx desc @@ -750,6 +761,7 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev, if (pkt_type_bitmap) ol_tx_update_connectivity_stats(tx_desc, netbuf, status); + ol_tx_update_ack_count(tx_desc, status); if (tx_desc->pkt_type != OL_TX_FRM_TSO) { packetdump_cb = pdev->ol_tx_packetdump_cb; diff --git a/core/dp/txrx/ol_txrx.c b/core/dp/txrx/ol_txrx.c index 4bc567d0c0b6..33e5c50b5d2e 100644 --- a/core/dp/txrx/ol_txrx.c +++ b/core/dp/txrx/ol_txrx.c @@ -2245,6 +2245,9 @@ ol_txrx_vdev_attach(struct cdp_pdev *ppdev, vdev->osif_flow_control_is_pause = 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 */ vdev->ll_pause.max_q_depth = 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; } +/** + * 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 /** @@ -5837,6 +5858,7 @@ static struct cdp_misc_ops ol_ops_misc = { .hl_tdls_flag_reset = ol_txrx_hl_tdls_flag_reset, .tx_non_std = ol_tx_non_std, .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, .txrx_data_stall_cb_register = ol_register_data_stall_detect_cb, .txrx_data_stall_cb_deregister = ol_deregister_data_stall_detect_cb, diff --git a/core/dp/txrx/ol_txrx_types.h b/core/dp/txrx/ol_txrx_types.h index 925788742add..c3f1e84299d1 100644 --- a/core/dp/txrx/ol_txrx_types.h +++ b/core/dp/txrx/ol_txrx_types.h @@ -1039,6 +1039,11 @@ struct ol_txrx_vdev_t { ol_txrx_rx_fp 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 { /* * If the vdev object couldn't be deleted immediately because