|
@@ -629,6 +629,37 @@ static inline void ol_tx_timestamp(ol_txrx_pdev_handle pdev,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+/**
|
|
|
+ * ol_tx_update_connectivity_stats() - update connectivity stats
|
|
|
+ * @tx_desc: tx desc
|
|
|
+ * @netbuf: buffer
|
|
|
+ * @status: htt status
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * Return: none
|
|
|
+ */
|
|
|
+static void ol_tx_update_connectivity_stats(struct ol_tx_desc_t *tx_desc,
|
|
|
+ qdf_nbuf_t netbuf,
|
|
|
+ enum htt_tx_status status)
|
|
|
+{
|
|
|
+ void *osif_dev;
|
|
|
+ ol_txrx_stats_rx_fp stats_rx = NULL;
|
|
|
+ uint8_t pkt_type = 0;
|
|
|
+
|
|
|
+ qdf_assert(tx_desc);
|
|
|
+ osif_dev = tx_desc->vdev->osif_dev;
|
|
|
+ stats_rx = tx_desc->vdev->stats_rx;
|
|
|
+
|
|
|
+ if (stats_rx) {
|
|
|
+ if (status != htt_tx_status_download_fail)
|
|
|
+ stats_rx(netbuf, osif_dev,
|
|
|
+ PKT_TYPE_TX_HOST_FW_SENT, &pkt_type);
|
|
|
+ if (status == htt_tx_status_ok)
|
|
|
+ stats_rx(netbuf, osif_dev,
|
|
|
+ PKT_TYPE_TX_ACK_CNT, &pkt_type);
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
/**
|
|
|
* ol_tx_update_arp_stats() - update ARP packet TX stats
|
|
|
* @tx_desc: tx desc
|
|
@@ -671,6 +702,7 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev,
|
|
|
struct ol_tx_desc_t *tx_desc;
|
|
|
uint32_t byte_cnt = 0;
|
|
|
qdf_nbuf_t netbuf;
|
|
|
+ uint32_t pkt_type_bitmap;
|
|
|
tp_ol_packetdump_cb packetdump_cb;
|
|
|
uint32_t is_tx_desc_freed = 0;
|
|
|
struct htt_tx_compl_ind_append_tx_tstamp *txtstamp_list = NULL;
|
|
@@ -712,6 +744,13 @@ ol_tx_completion_handler(ol_txrx_pdev_handle pdev,
|
|
|
ol_tx_update_arp_stats(tx_desc, netbuf, status);
|
|
|
}
|
|
|
|
|
|
+ /* track connectivity stats */
|
|
|
+ pkt_type_bitmap = cds_get_connectivity_stats_pkt_bitmap(
|
|
|
+ tx_desc->vdev->osif_dev);
|
|
|
+ if (pkt_type_bitmap)
|
|
|
+ ol_tx_update_connectivity_stats(tx_desc, netbuf,
|
|
|
+ status);
|
|
|
+
|
|
|
if (tx_desc->pkt_type != OL_TX_FRM_TSO) {
|
|
|
packetdump_cb = pdev->ol_tx_packetdump_cb;
|
|
|
if (packetdump_cb)
|