From 6e1dde7e438625a027855e6ff00fe56b4432d32e Mon Sep 17 00:00:00 2001 From: Amit Mehta Date: Mon, 20 Jun 2022 12:51:27 +0530 Subject: [PATCH] qcacmn: Add QDF packet type enum Add new QDF enum for packet type and make changes to pass status and type to packetlog callback APIs as QDF type Change-Id: I423839e42b316ce43feaae34e297d3d8f0dee7ba CRs-Fixed: 3224881 --- dp/inc/cdp_txrx_cmn_struct.h | 4 +- qdf/inc/qdf_types.h | 16 ++++ utils/logging/src/wlan_logging_sock_svc.c | 105 ++++++++++++++++------ 3 files changed, 95 insertions(+), 30 deletions(-) diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index 390d5fb292..234bea1702 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/dp/inc/cdp_txrx_cmn_struct.h @@ -1009,8 +1009,8 @@ typedef void (*ol_txrx_pktdump_cb)(ol_txrx_soc_handle soc, uint8_t pdev_id, uint8_t vdev_id, qdf_nbuf_t netbuf, - uint8_t status, - uint8_t type); + enum qdf_dp_tx_rx_status status, + enum qdf_pkt_type type); /** * ol_txrx_get_tsf_time - callback to get tsf time diff --git a/qdf/inc/qdf_types.h b/qdf/inc/qdf_types.h index f385cf16ac..b7e93b97ea 100644 --- a/qdf/inc/qdf_types.h +++ b/qdf/inc/qdf_types.h @@ -1542,6 +1542,22 @@ enum qdf_dp_tx_rx_status { QDF_TX_RX_STATUS_MAX }; +/** + * enum qdf_pkt_type - TX/RX packet type + * @QDF_TX_MGMT_PKT: Tx Management Packet + * @QDF_TX_DATA_PKT: Tx data Packet + * @QDF_RX_MGMT_PKT: Rx Management Packet + * @QDF_RX_DATA_PKT: Rx data Packet + * @QDF_INVALID_PKT: Invalid Packet type + */ +enum qdf_pkt_type { + QDF_TX_MGMT_PKT, + QDF_TX_DATA_PKT, + QDF_RX_MGMT_PKT, + QDF_RX_DATA_PKT, + QDF_INVALID_PKT +}; + /** * enum qdf_dp_a_status - A_STATUS * @QDF_A_STATUS_ERROR: Generic error return diff --git a/utils/logging/src/wlan_logging_sock_svc.c b/utils/logging/src/wlan_logging_sock_svc.c index 2b47718981..bd20f62265 100644 --- a/utils/logging/src/wlan_logging_sock_svc.c +++ b/utils/logging/src/wlan_logging_sock_svc.c @@ -1,5 +1,6 @@ /* * Copyright (c) 2014-2021 The Linux Foundation. All rights reserved. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. 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 @@ -1484,33 +1485,76 @@ void wlan_pkt_stats_to_logger_thread(void *pl_hdr, void *pkt_dump, void *data) } /** - * driver_hal_status_map() - maps driver to hal - * status - * @status: status to be mapped - * - * This function is used to map driver to hal status - * - * Return: None + * qdf_hal_tx_status_map() - map Tx completion status with + * packet dump Tx status + * @status: Tx completion status * + * Return: packet dump tx_status enum */ -static void driver_hal_status_map(uint8_t *status) +static inline enum tx_pkt_fate +qdf_hal_tx_status_map(enum qdf_dp_tx_rx_status status) { - switch (*status) { - case tx_status_ok: - *status = TX_PKT_FATE_ACKED; - break; - case tx_status_discard: - *status = TX_PKT_FATE_DRV_DROP_OTHER; - break; - case tx_status_no_ack: - *status = TX_PKT_FATE_SENT; - break; - case tx_status_download_fail: - *status = TX_PKT_FATE_FW_QUEUED; - break; + switch (status) { + case QDF_TX_RX_STATUS_OK: + return TX_PKT_FATE_ACKED; + case QDF_TX_RX_STATUS_FW_DISCARD: + return TX_PKT_FATE_FW_DROP_OTHER; + case QDF_TX_RX_STATUS_NO_ACK: + return TX_PKT_FATE_SENT; + case QDF_TX_RX_STATUS_DROP: + return TX_PKT_FATE_DRV_DROP_OTHER; + case QDF_TX_RX_STATUS_DOWNLOAD_SUCC: + return TX_PKT_FATE_DRV_QUEUED; default: - *status = TX_PKT_FATE_DRV_DROP_OTHER; - break; + return TX_PKT_FATE_DRV_DROP_OTHER; + } +} + +/** + * qdf_hal_rx_status_map() - map Rx status with + * packet dump Rx status + * @status: Rx status + * + * Return: packet dump rx_status enum + */ +static inline enum rx_pkt_fate +qdf_hal_rx_status_map(enum qdf_dp_tx_rx_status status) +{ + switch (status) { + case QDF_TX_RX_STATUS_OK: + return RX_PKT_FATE_SUCCESS; + case QDF_TX_RX_STATUS_FW_DISCARD: + return RX_PKT_FATE_FW_DROP_OTHER; + case QDF_TX_RX_STATUS_DROP: + return RX_PKT_FATE_DRV_DROP_OTHER; + case QDF_TX_RX_STATUS_DOWNLOAD_SUCC: + return RX_PKT_FATE_DRV_QUEUED; + default: + return RX_PKT_FATE_DRV_DROP_OTHER; + } +} + +/** + * qdf_hal_pkt_type_map() - map qdf packet type with + * packet dump packet type + * @type: packet type + * + * Return: Packet dump packet type + */ +static inline enum pkt_type +qdf_hal_pkt_type_map(enum qdf_pkt_type type) +{ + switch (type) { + case QDF_TX_MGMT_PKT: + return TX_MGMT_PKT; + case QDF_TX_DATA_PKT: + return TX_DATA_PKT; + case QDF_RX_MGMT_PKT: + return RX_MGMT_PKT; + case QDF_RX_DATA_PKT: + return RX_DATA_PKT; + default: + return INVALID_PKT; } } @@ -1657,9 +1701,12 @@ static bool check_txrx_packetdump_count(uint8_t pdev_id) static void tx_packetdump_cb(ol_txrx_soc_handle soc, uint8_t pdev_id, uint8_t vdev_id, qdf_nbuf_t netbuf, - uint8_t status, uint8_t type) + enum qdf_dp_tx_rx_status status, + enum qdf_pkt_type type) { bool temp; + enum tx_pkt_fate tx_status = qdf_hal_tx_status_map(status); + enum pkt_type pkt_type = qdf_hal_pkt_type_map(type); if (!soc) return; @@ -1668,8 +1715,7 @@ static void tx_packetdump_cb(ol_txrx_soc_handle soc, if (temp) return; - driver_hal_status_map(&status); - send_packetdump(soc, vdev_id, netbuf, status, type); + send_packetdump(soc, vdev_id, netbuf, tx_status, pkt_type); } @@ -1691,9 +1737,12 @@ static void tx_packetdump_cb(ol_txrx_soc_handle soc, static void rx_packetdump_cb(ol_txrx_soc_handle soc, uint8_t pdev_id, uint8_t vdev_id, qdf_nbuf_t netbuf, - uint8_t status, uint8_t type) + enum qdf_dp_tx_rx_status status, + enum qdf_pkt_type type) { bool temp; + enum rx_pkt_fate rx_status = qdf_hal_rx_status_map(status); + enum pkt_type pkt_type = qdf_hal_pkt_type_map(type); if (!soc) return; @@ -1702,7 +1751,7 @@ static void rx_packetdump_cb(ol_txrx_soc_handle soc, if (temp) return; - send_packetdump(soc, vdev_id, netbuf, status, type); + send_packetdump(soc, vdev_id, netbuf, rx_status, pkt_type); } void wlan_register_txrx_packetdump(uint8_t pdev_id)