diff --git a/dp/wifi3.0/dp_tx.c b/dp/wifi3.0/dp_tx.c index 2be6991169..a7b0dd2d78 100644 --- a/dp/wifi3.0/dp_tx.c +++ b/dp/wifi3.0/dp_tx.c @@ -3386,6 +3386,7 @@ void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc, struct dp_soc *soc = NULL; struct dp_vdev *vdev = tx_desc->vdev; qdf_nbuf_t nbuf = tx_desc->nbuf; + uint8_t dp_status; if (!vdev || !nbuf) { dp_info_rl("invalid tx descriptor. vdev or nbuf NULL"); @@ -3394,13 +3395,14 @@ void dp_tx_comp_process_tx_status(struct dp_tx_desc_s *tx_desc, eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf); + dp_status = qdf_dp_get_status_from_htt(ts->status); DPTRACE(qdf_dp_trace_ptr(tx_desc->nbuf, QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD, QDF_TRACE_DEFAULT_PDEV_ID, qdf_nbuf_data_addr(nbuf), sizeof(qdf_nbuf_data(nbuf)), tx_desc->id, - ts->status)); + dp_status)); QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, "-------------------- \n" diff --git a/qdf/inc/qdf_trace.h b/qdf/inc/qdf_trace.h index cfc389c124..dd6c28506d 100644 --- a/qdf/inc/qdf_trace.h +++ b/qdf/inc/qdf_trace.h @@ -773,6 +773,20 @@ qdf_dp_display_data_pkt_record(struct qdf_dp_trace_record_s *record, uint16_t rec_index, uint8_t pdev_id, uint8_t info); +/** + * qdf_dp_get_status_from_htt() - Convert htt tx status to qdf dp status + * @status : htt_tx_status which needs to be converted + * + * Return : the status that from qdf_dp_tx_rx_status + */ +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_htt(uint8_t status); +/** + * qdf_dp_get_status_from_a_status() - Convert A_STATUS to qdf dp status + * @status : A_STATUS which needs to be converted + * + * Return : the status that from qdf_dp_tx_rx_status + */ +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status); void qdf_dp_trace_ptr(qdf_nbuf_t nbuf, enum QDF_DP_TRACE_ID code, uint8_t pdev_id, uint8_t *data, uint8_t size, uint16_t msdu_id, uint16_t status); @@ -1033,6 +1047,18 @@ static inline void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype) { } + +static inline +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_htt(uint8_t status) +{ + return QDF_TX_RX_STATUS_OK; +} + +static inline +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status) +{ + return QDF_TX_RX_STATUS_OK; +} #endif void qdf_trace_display(void); diff --git a/qdf/inc/qdf_types.h b/qdf/inc/qdf_types.h index 840c09992f..be3187a68b 100644 --- a/qdf/inc/qdf_types.h +++ b/qdf/inc/qdf_types.h @@ -1378,6 +1378,37 @@ enum qdf_dp_tx_rx_status { QDF_TX_RX_STATUS_FW_DISCARD, QDF_TX_RX_STATUS_NO_ACK, QDF_TX_RX_STATUS_DROP, + QDF_TX_RX_STATUS_MAX, }; +/** + * enum qdf_dp_tx_comp_status - TX COMPL packet status + * @QDF_TX_COMP_STATUS_OK: successfully sent + acked + * @QDF_TX_COMP_STATUS_STAT_DISCARD: packet not sent in FW + * @QDF_TX_COMP_STATUS_STAT_NO_ACK: packet sent but no ack + * @QDF_TX_COMP_STATUS_STAT_POSTPONE: equal HTT_TX_COMPL_IND_STAT_POSTPONE + * @QDF_TX_COMP_STATUS_STAT_PEER_DEL: equal HTT_TX_COMPL_IND_STAT_PEER_DEL + * @QDF_TX_COMP_STATUS_STAT_DROP: packet dropped in FW + * @QDF_TX_COMP_STATUS_STAT_INSPECT: equal HTT_TX_COMPL_IND_STAT_HOST_INSPECT + */ +enum qdf_dp_tx_comp_status { + QDF_TX_COMP_STATUS_OK, + QDF_TX_COMP_STATUS_STAT_DISCARD, + QDF_TX_COMP_STATUS_STAT_NO_ACK, + QDF_TX_COMP_STATUS_STAT_POSTPONE, + QDF_TX_COMP_STATUS_STAT_PEER_DEL, + QDF_TX_COMP_STATUS_STAT_DROP, + QDF_TX_COMP_STATUS_STAT_INSPECT, + QDF_TX_COMP_STATUS_STAT_MAX, +}; + +/** + * enum qdf_dp_a_status - A_STATUS + * @QDF_A_STATUS_ERROR: Generic error return + * @QDF_A_STATUS_OK: success + */ +enum qdf_dp_a_status { + QDF_A_STATUS_ERROR = -1, + QDF_A_STATUS_OK, +}; #endif /* __QDF_TYPES_H */ diff --git a/qdf/linux/src/qdf_trace.c b/qdf/linux/src/qdf_trace.c index cbfae78c3c..87e61c7e85 100644 --- a/qdf/linux/src/qdf_trace.c +++ b/qdf/linux/src/qdf_trace.c @@ -2265,6 +2265,35 @@ void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype) } qdf_export_symbol(qdf_dp_track_noack_check); +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_htt(uint8_t status) +{ + switch (status) { + case QDF_TX_COMP_STATUS_OK: + return QDF_TX_RX_STATUS_OK; + case QDF_TX_COMP_STATUS_STAT_DISCARD: + case QDF_TX_COMP_STATUS_STAT_DROP: + return QDF_TX_RX_STATUS_FW_DISCARD; + case QDF_TX_COMP_STATUS_STAT_NO_ACK: + return QDF_TX_RX_STATUS_NO_ACK; + default: + return QDF_TX_RX_STATUS_MAX; + } +} + +qdf_export_symbol(qdf_dp_get_status_from_htt); + +enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status) +{ + if (status == QDF_A_STATUS_ERROR) + return QDF_TX_RX_STATUS_INVALID; + else if (status == QDF_A_STATUS_OK) + return QDF_TX_RX_STATUS_OK; + else + return QDF_TX_RX_STATUS_MAX; +} + +qdf_export_symbol(qdf_dp_get_status_from_a_status); + /** * qdf_dp_trace_ptr() - record dptrace * @code: dptrace code @@ -2287,12 +2316,12 @@ void qdf_dp_trace_ptr(qdf_nbuf_t nbuf, enum QDF_DP_TRACE_ID code, pkt_type = qdf_dp_get_pkt_proto_type(nbuf); if ((code == QDF_DP_TRACE_FREE_PACKET_PTR_RECORD || code == QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD) && - qdf_dp_proto_log_enable_check(pkt_type, status + 1)) + qdf_dp_proto_log_enable_check(pkt_type, status)) qdf_dp_log_proto_pkt_info(nbuf->data + QDF_NBUF_SRC_MAC_OFFSET, nbuf->data + QDF_NBUF_DEST_MAC_OFFSET, pkt_type, qdf_dp_get_pkt_subtype(nbuf, pkt_type), - QDF_TX, msdu_id, status + 1); + QDF_TX, msdu_id, status); if (qdf_dp_enable_check(nbuf, code, QDF_TX) == false) return;