Forráskód Böngészése

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
sandhu 4 éve
szülő
commit
f39a270b60
5 módosított fájl, 51 hozzáadás és 64 törlés
  1. 4 5
      dp/wifi3.0/dp_tx.c
  2. 21 0
      dp/wifi3.0/dp_tx.h
  3. 14 1
      qdf/inc/qdf_trace.h
  4. 7 25
      qdf/inc/qdf_types.h
  5. 5 33
      qdf/linux/src/qdf_trace.c

+ 4 - 5
dp/wifi3.0/dp_tx.c

@@ -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"

+ 21 - 0
dp/wifi3.0/dp_tx.h

@@ -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

+ 14 - 1
qdf/inc/qdf_trace.h

@@ -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);
 
 /**

+ 7 - 25
qdf/inc/qdf_types.h

@@ -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
 };
 
 /**

+ 5 - 33
qdf/linux/src/qdf_trace.c

@@ -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));
 }