qcacmn: Exclude HTT metadata length when not in use during TX
Currently, when an extension descriptor is used during TX datapath, we use HTT metadata length + msdu extension descriptor length, even we do not fill HTT meta data. This is inefficient and hardware will end up doing DMA of extra HTT metadata, even when not needed. Include length of metadata in TCLdata command only if HTT metadata is filled in. Change-Id: Idd1b053c1c6bd8b39880efe5743980667454df0d CRs-Fixed: 2738733
这个提交包含在:
@@ -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;
|
||||
|
在新工单中引用
屏蔽一个用户