|
@@ -680,6 +680,10 @@ static QDF_STATUS dp_tx_prepare_tso(struct dp_vdev *vdev,
|
|
|
}
|
|
|
#endif
|
|
|
|
|
|
+QDF_COMPILE_TIME_ASSERT(dp_tx_htt_metadata_len_check,
|
|
|
+ (DP_TX_MSDU_INFO_META_DATA_DWORDS * 4 >=
|
|
|
+ sizeof(struct htt_tx_msdu_desc_ext2_t)));
|
|
|
+
|
|
|
/**
|
|
|
* dp_tx_prepare_ext_desc() - Allocate and prepare MSDU extension descriptor
|
|
|
* @vdev: DP Vdev handle
|
|
@@ -713,6 +717,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(&soc->num_tx_exception);
|
|
|
+ msdu_ext_desc->flags |= DP_TX_EXT_DESC_FLAG_METADATA_VALID;
|
|
|
}
|
|
|
|
|
|
switch (msdu_info->frm_type) {
|
|
@@ -1173,9 +1178,14 @@ static QDF_STATUS dp_tx_hw_enqueue(struct dp_soc *soc, struct dp_vdev *vdev,
|
|
|
hal_tx_desc_cached = (void *) cached_desc;
|
|
|
|
|
|
if (tx_desc->flags & DP_TX_DESC_FLAG_FRAG) {
|
|
|
- tx_desc->length = HAL_TX_EXT_DESC_WITH_META_DATA;
|
|
|
type = HAL_TX_BUF_TYPE_EXT_DESC;
|
|
|
tx_desc->dma_addr = tx_desc->msdu_ext_desc->paddr;
|
|
|
+
|
|
|
+ if (tx_desc->msdu_ext_desc->flags &
|
|
|
+ DP_TX_EXT_DESC_FLAG_METADATA_VALID)
|
|
|
+ tx_desc->length = HAL_TX_EXT_DESC_WITH_META_DATA;
|
|
|
+ else
|
|
|
+ tx_desc->length = HAL_TX_EXTENSION_DESC_LEN_BYTES;
|
|
|
} else {
|
|
|
tx_desc->length = qdf_nbuf_len(tx_desc->nbuf) -
|
|
|
tx_desc->pkt_offset;
|