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:
@@ -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"
|
||||
|
@@ -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
|
||||
|
@@ -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);
|
||||
|
||||
/**
|
||||
|
@@ -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
|
||||
};
|
||||
|
||||
/**
|
||||
|
@@ -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));
|
||||
}
|
||||
|
Reference in New Issue
Block a user