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_nbuf_data_addr(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);
@@ -4135,7 +4135,7 @@ void dp_tx_comp_process_tx_status(struct dp_soc *soc,
qdf_ether_header_t *eh;
struct dp_vdev *vdev = NULL;
qdf_nbuf_t nbuf = tx_desc->nbuf;
uint8_t dp_status;
enum qdf_dp_tx_rx_status dp_status;
if (!nbuf) {
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);
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,
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,
dp_status));
tx_desc->id, ts->status, dp_status));
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_DEBUG,
"-------------------- \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);
#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
* @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
*/
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,
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);
/**

View File

@@ -1433,10 +1433,12 @@ enum qdf_context_mode {
* enum qdf_dp_tx_rx_status - TX/RX packet status
* @QDF_TX_RX_STATUS_INVALID: default invalid status
* @QDF_TX_RX_STATUS_OK: successfully sent + acked
* @QDF_TX_RX_STATUS_FW_DISCARD: packet not sent
* @QDF_TX_RX_STATUS_NO_ACK: packet sent but no ack
* @QDF_TX_RX_STATUS_DROP: packet dropped in host
* @QDF_TX_RX_STATUS_DISCARD: queued but not sent over air
* @QDF_TX_RX_STATUS_NO_ACK: packet sent but no ack received
* @QDF_TX_RX_STATUS_DROP: packet dropped due to congestion
* @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 {
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_DROP,
QDF_TX_RX_STATUS_DOWNLOAD_SUCC,
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,
QDF_TX_RX_STATUS_DEFAULT,
QDF_TX_RX_STATUS_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);
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)
@@ -2293,23 +2276,12 @@ enum qdf_dp_tx_rx_status qdf_dp_get_status_from_a_status(uint8_t status)
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
* @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,
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;
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);
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))
qdf_dp_proto_log_enable_check(pkt_type, qdf_tx_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);
QDF_TX, msdu_id, qdf_tx_status);
if (qdf_dp_enable_check(nbuf, code, QDF_TX) == false)
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);
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_NBUF_CB_DP_TRACE_PRINT(nbuf));
}