qcacmn: Add function to convert Hw to qdf status

Enhance qdf tx rx to hw tx completion status mapping .Function
to convert Hw to qdf status.Add a additional func arg to qdf_dp_trace_ptr.
Add dummy func argument to existing qdf_dp_trace_ptr func calls.

Change-Id: I38865d63dc7383c55686d2d0187a262b3b6d5acc
CRs-Fixed: 2810601
This commit is contained in:
sandhu
2020-10-28 10:25:38 -07:00
committed by snandini
parent ca3d4fecef
commit f39a270b60
5 changed files with 51 additions and 64 deletions

View File

@@ -816,7 +816,7 @@ static void dp_tx_trace_pkt(qdf_nbuf_t skb, uint16_t msdu_id,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
qdf_nbuf_data_addr(skb), qdf_nbuf_data_addr(skb),
sizeof(qdf_nbuf_data(skb)), sizeof(qdf_nbuf_data(skb)),
msdu_id, vdev_id)); msdu_id, vdev_id, 0));
qdf_dp_trace_log_pkt(vdev_id, skb, QDF_TX, QDF_TRACE_DEFAULT_PDEV_ID); qdf_dp_trace_log_pkt(vdev_id, skb, QDF_TX, QDF_TRACE_DEFAULT_PDEV_ID);
@@ -4135,7 +4135,7 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
qdf_ether_header_t *eh; qdf_ether_header_t *eh;
struct dp_vdev *vdev = NULL; struct dp_vdev *vdev = NULL;
qdf_nbuf_t nbuf = tx_desc->nbuf; qdf_nbuf_t nbuf = tx_desc->nbuf;
uint8_t dp_status; enum qdf_dp_tx_rx_status dp_status;
if (!nbuf) { if (!nbuf) {
dp_info_rl("invalid tx descriptor. nbuf NULL"); dp_info_rl("invalid tx descriptor. nbuf NULL");
@@ -4145,14 +4145,13 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf); eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
length = qdf_nbuf_len(nbuf); length = qdf_nbuf_len(nbuf);
dp_status = qdf_dp_get_status_from_htt(ts->status); dp_status = dp_tx_hw_to_qdf(ts->status);
DPTRACE(qdf_dp_trace_ptr(tx_desc->nbuf, DPTRACE(qdf_dp_trace_ptr(tx_desc->nbuf,
QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD, QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD,
QDF_TRACE_DEFAULT_PDEV_ID, QDF_TRACE_DEFAULT_PDEV_ID,
qdf_nbuf_data_addr(nbuf), qdf_nbuf_data_addr(nbuf),
sizeof(qdf_nbuf_data(nbuf)), sizeof(qdf_nbuf_data(nbuf)),
tx_desc->id, tx_desc->id, ts->status, dp_status));
dp_status));
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG, QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
"-------------------- \n" "-------------------- \n"

View File

@@ -338,6 +338,27 @@ bool dp_tx_multipass_process(struct dp_soc *soc, struct dp_vdev *vdev,
void dp_tx_vdev_multipass_deinit(struct dp_vdev *vdev); void dp_tx_vdev_multipass_deinit(struct dp_vdev *vdev);
#endif #endif
/**
* dp_tx_hw_to_qdf()- convert hw status to qdf status
* @status: hw status
*
* Return: qdf tx rx status
*/
static inline enum qdf_dp_tx_rx_status dp_tx_hw_to_qdf(uint16_t status)
{
switch (status) {
case HAL_TX_TQM_RR_FRAME_ACKED:
return QDF_TX_RX_STATUS_OK;
case HAL_TX_TQM_RR_REM_CMD_REM:
case HAL_TX_TQM_RR_REM_CMD_TX:
case HAL_TX_TQM_RR_REM_CMD_NOTX:
case HAL_TX_TQM_RR_REM_CMD_AGED:
return QDF_TX_RX_STATUS_FW_DISCARD;
default:
return QDF_TX_RX_STATUS_DEFAULT;
}
}
/** /**
* dp_tx_get_queue() - Returns Tx queue IDs to be used for this Tx frame * dp_tx_get_queue() - Returns Tx queue IDs to be used for this Tx frame
* @vdev: DP Virtual device handle * @vdev: DP Virtual device handle

View File

@@ -791,9 +791,22 @@ enum qdf_dp_tx_rx_status qdf_dp_get_status_from_htt(uint8_t status);
* Return : the status that from qdf_dp_tx_rx_status * 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); enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status);
/**
* qdf_dp_trace_ptr() - record dptrace
* @code: dptrace code
* @pdev_id: pdev_id
* @data: data
* @size: size of data
* @msdu_id: msdu_id
* @status: return status
* @qdf_tx_status: qdf tx rx status
*
* Return: none
*/
void qdf_dp_trace_ptr(qdf_nbuf_t nbuf, enum QDF_DP_TRACE_ID code, 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, uint8_t pdev_id, uint8_t *data, uint8_t size,
uint16_t msdu_id, uint16_t status); uint16_t msdu_id, uint16_t buf_arg_status,
enum qdf_dp_tx_rx_status qdf_tx_status);
void qdf_dp_trace_throttle_live_mode(bool high_bw_request); void qdf_dp_trace_throttle_live_mode(bool high_bw_request);
/** /**

View File

@@ -1433,10 +1433,12 @@ enum qdf_context_mode {
* enum qdf_dp_tx_rx_status - TX/RX packet status * enum qdf_dp_tx_rx_status - TX/RX packet status
* @QDF_TX_RX_STATUS_INVALID: default invalid status * @QDF_TX_RX_STATUS_INVALID: default invalid status
* @QDF_TX_RX_STATUS_OK: successfully sent + acked * @QDF_TX_RX_STATUS_OK: successfully sent + acked
* @QDF_TX_RX_STATUS_FW_DISCARD: packet not sent * @QDF_TX_RX_STATUS_DISCARD: queued but not sent over air
* @QDF_TX_RX_STATUS_NO_ACK: packet sent but no ack * @QDF_TX_RX_STATUS_NO_ACK: packet sent but no ack received
* @QDF_TX_RX_STATUS_DROP: packet dropped in host * @QDF_TX_RX_STATUS_DROP: packet dropped due to congestion
* @QDF_TX_RX_STATUS_DOWNLOAD_SUCC: packet delivered to target * @QDF_TX_RX_STATUS_DOWNLOAD_SUCC: packet delivered to target
* @QDF_TX_RX_STATUS_DEFAULT: default status
* @QDF_TX_RX_STATUS_MAX:
*/ */
enum qdf_dp_tx_rx_status { enum qdf_dp_tx_rx_status {
QDF_TX_RX_STATUS_INVALID, QDF_TX_RX_STATUS_INVALID,
@@ -1445,28 +1447,8 @@ enum qdf_dp_tx_rx_status {
QDF_TX_RX_STATUS_NO_ACK, QDF_TX_RX_STATUS_NO_ACK,
QDF_TX_RX_STATUS_DROP, QDF_TX_RX_STATUS_DROP,
QDF_TX_RX_STATUS_DOWNLOAD_SUCC, QDF_TX_RX_STATUS_DOWNLOAD_SUCC,
QDF_TX_RX_STATUS_MAX, QDF_TX_RX_STATUS_DEFAULT,
}; 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,
}; };
/** /**

View File

@@ -2267,23 +2267,6 @@ void qdf_dp_track_noack_check(qdf_nbuf_t nbuf, enum qdf_proto_subtype *subtype)
} }
qdf_export_symbol(qdf_dp_track_noack_check); 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) enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status)
{ {
if (status == QDF_A_STATUS_ERROR) if (status == QDF_A_STATUS_ERROR)
@@ -2293,23 +2276,12 @@ enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status)
else else
return QDF_TX_RX_STATUS_MAX; return QDF_TX_RX_STATUS_MAX;
} }
qdf_export_symbol(qdf_dp_get_status_from_a_status); qdf_export_symbol(qdf_dp_get_status_from_a_status);
/**
* qdf_dp_trace_ptr() - record dptrace
* @code: dptrace code
* @pdev_id: pdev_id
* @data: data
* @size: size of data
* @msdu_id: msdu_id
* @status: return status
*
* Return: none
*/
void qdf_dp_trace_ptr(qdf_nbuf_t nbuf, enum QDF_DP_TRACE_ID code, 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, uint8_t pdev_id, uint8_t *data, uint8_t size,
uint16_t msdu_id, uint16_t status) uint16_t msdu_id, uint16_t buf_arg_status,
enum qdf_dp_tx_rx_status qdf_tx_status)
{ {
struct qdf_dp_trace_ptr_buf buf; struct qdf_dp_trace_ptr_buf buf;
int buf_size = sizeof(struct qdf_dp_trace_ptr_buf); int buf_size = sizeof(struct qdf_dp_trace_ptr_buf);
@@ -2318,12 +2290,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); pkt_type = qdf_dp_get_pkt_proto_type(nbuf);
if ((code == QDF_DP_TRACE_FREE_PACKET_PTR_RECORD || if ((code == QDF_DP_TRACE_FREE_PACKET_PTR_RECORD ||
code == QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD) && code == QDF_DP_TRACE_LI_DP_FREE_PACKET_PTR_RECORD) &&
qdf_dp_proto_log_enable_check(pkt_type, status)) qdf_dp_proto_log_enable_check(pkt_type, qdf_tx_status))
qdf_dp_log_proto_pkt_info(nbuf->data + QDF_NBUF_SRC_MAC_OFFSET, qdf_dp_log_proto_pkt_info(nbuf->data + QDF_NBUF_SRC_MAC_OFFSET,
nbuf->data + QDF_NBUF_DEST_MAC_OFFSET, nbuf->data + QDF_NBUF_DEST_MAC_OFFSET,
pkt_type, pkt_type,
qdf_dp_get_pkt_subtype(nbuf, pkt_type), qdf_dp_get_pkt_subtype(nbuf, pkt_type),
QDF_TX, msdu_id, status); QDF_TX, msdu_id, qdf_tx_status);
if (qdf_dp_enable_check(nbuf, code, QDF_TX) == false) if (qdf_dp_enable_check(nbuf, code, QDF_TX) == false)
return; return;
@@ -2333,7 +2305,7 @@ void qdf_dp_trace_ptr(qdf_nbuf_t nbuf, enum QDF_DP_TRACE_ID code,
qdf_mem_copy(&buf.cookie, data, size); qdf_mem_copy(&buf.cookie, data, size);
buf.msdu_id = msdu_id; buf.msdu_id = msdu_id;
buf.status = status; buf.status = buf_arg_status;
qdf_dp_add_record(code, pdev_id, (uint8_t *)&buf, buf_size, NULL, 0, qdf_dp_add_record(code, pdev_id, (uint8_t *)&buf, buf_size, NULL, 0,
QDF_NBUF_CB_DP_TRACE_PRINT(nbuf)); QDF_NBUF_CB_DP_TRACE_PRINT(nbuf));
} }