Browse Source

Merge "qcacmn: Fix htt included bit set for mesh exception packets"

Linux Build Service Account 7 years ago
parent
commit
2dedc55d43
1 changed files with 13 additions and 7 deletions
  1. 13 7
      dp/wifi3.0/dp_tx.c

+ 13 - 7
dp/wifi3.0/dp_tx.c

@@ -230,8 +230,6 @@ static uint8_t dp_tx_prepare_htt_metadata(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
 
 	uint8_t *hdr = NULL;
 
-	HTT_TX_TCL_METADATA_VALID_HTT_SET(vdev->htt_tcl_metadata, 1);
-
 	/*
 	 * Metadata - HTT MSDU Extension header
 	 */
@@ -481,9 +479,7 @@ struct dp_tx_ext_desc_elem_s *dp_tx_prepare_ext_desc(struct dp_vdev *vdev,
 				&msdu_info->meta_data[0],
 				sizeof(struct htt_tx_msdu_desc_ext2_t));
 		qdf_atomic_inc(&vdev->pdev->num_tx_exception);
-		HTT_TX_TCL_METADATA_VALID_HTT_SET(vdev->htt_tcl_metadata, 1);
-	} else
-		HTT_TX_TCL_METADATA_VALID_HTT_SET(vdev->htt_tcl_metadata, 0);
+	}
 
 	switch (msdu_info->frm_type) {
 	case dp_tx_frm_sg:
@@ -1211,7 +1207,6 @@ static qdf_nbuf_t dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
 	uint16_t htt_tcl_metadata = 0;
 	uint8_t tid = msdu_info->tid;
 
-	HTT_TX_TCL_METADATA_VALID_HTT_SET(vdev->htt_tcl_metadata, 0);
 	/* Setup Tx descriptor for an MSDU, and MSDU extension descriptor */
 	tx_desc = dp_tx_prepare_desc_single(vdev, nbuf, tx_q->desc_pool_id,
 			msdu_info, tx_exc_metadata);
@@ -1252,6 +1247,11 @@ static qdf_nbuf_t dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
 	} else
 		htt_tcl_metadata = vdev->htt_tcl_metadata;
 
+
+	if (msdu_info->exception_fw) {
+		HTT_TX_TCL_METADATA_VALID_HTT_SET(htt_tcl_metadata, 1);
+	}
+
 	/* Enqueue the Tx MSDU descriptor to HW for transmit */
 	status = dp_tx_hw_enqueue(soc, vdev, tx_desc, tid,
 			htt_tcl_metadata, tx_q->ring_id, tx_exc_metadata);
@@ -1302,6 +1302,7 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
 	struct dp_tx_desc_s *tx_desc;
 	bool is_cce_classified = false;
 	QDF_STATUS status;
+	uint16_t htt_tcl_metadata = 0;
 
 	struct dp_tx_queue *tx_q = &msdu_info->tx_queue;
 	void *hal_srng = soc->tcl_data_ring[tx_q->ring_id].hal_srng;
@@ -1357,11 +1358,16 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
 		if (is_cce_classified)
 			tx_desc->flags |= DP_TX_DESC_FLAG_TO_FW;
 
+		htt_tcl_metadata = vdev->htt_tcl_metadata;
+		if (msdu_info->exception_fw) {
+			HTT_TX_TCL_METADATA_VALID_HTT_SET(htt_tcl_metadata, 1);
+		}
+
 		/*
 		 * Enqueue the Tx MSDU descriptor to HW for transmit
 		 */
 		status = dp_tx_hw_enqueue(soc, vdev, tx_desc, msdu_info->tid,
-			vdev->htt_tcl_metadata, tx_q->ring_id, NULL);
+			htt_tcl_metadata, tx_q->ring_id, NULL);
 
 		if (status != QDF_STATUS_SUCCESS) {
 			QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,