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