qcacmn: Rearrange dp_tx_send_single
Rearrange dp_tx_send_single to avoid code duplication. Change-Id: I35d9f9c36ffecd00931d58b9f66ebc809320963f
This commit is contained in:

committed by
nshrivas

parent
3b0a0f19ce
commit
c13c930a62
@@ -867,16 +867,6 @@ struct dp_tx_desc_s *dp_tx_prepare_desc_single(struct dp_vdev *vdev,
|
|||||||
is_exception = 1;
|
is_exception = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qdf_unlikely(QDF_STATUS_SUCCESS !=
|
|
||||||
qdf_nbuf_map(soc->osdev, nbuf,
|
|
||||||
QDF_DMA_TO_DEVICE))) {
|
|
||||||
/* Handle failure */
|
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
|
||||||
"qdf_nbuf_map failed");
|
|
||||||
DP_STATS_INC(vdev, tx_i.dropped.dma_error, 1);
|
|
||||||
goto failure;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (qdf_unlikely(vdev->nawds_enabled)) {
|
if (qdf_unlikely(vdev->nawds_enabled)) {
|
||||||
eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
|
eh = (qdf_ether_header_t *)qdf_nbuf_data(nbuf);
|
||||||
if (DP_FRAME_IS_MULTICAST((eh)->ether_dhost)) {
|
if (DP_FRAME_IS_MULTICAST((eh)->ether_dhost)) {
|
||||||
@@ -1496,8 +1486,8 @@ static void dp_tx_get_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
*
|
*
|
||||||
* Return: void
|
* Return: void
|
||||||
*/
|
*/
|
||||||
static void dp_tx_classify_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
static inline void dp_tx_classify_tid(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
||||||
struct dp_tx_msdu_info_s *msdu_info)
|
struct dp_tx_msdu_info_s *msdu_info)
|
||||||
{
|
{
|
||||||
struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
|
struct dp_pdev *pdev = (struct dp_pdev *)vdev->pdev;
|
||||||
|
|
||||||
@@ -1625,6 +1615,7 @@ dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
QDF_STATUS status;
|
QDF_STATUS status;
|
||||||
struct dp_tx_queue *tx_q = &(msdu_info->tx_queue);
|
struct dp_tx_queue *tx_q = &(msdu_info->tx_queue);
|
||||||
uint16_t htt_tcl_metadata = 0;
|
uint16_t htt_tcl_metadata = 0;
|
||||||
|
enum cdp_tx_sw_drop drop_code = TX_MAX_DROP;
|
||||||
uint8_t tid = msdu_info->tid;
|
uint8_t tid = msdu_info->tid;
|
||||||
struct cdp_tid_tx_stats *tid_stats = NULL;
|
struct cdp_tid_tx_stats *tid_stats = NULL;
|
||||||
|
|
||||||
@@ -1634,11 +1625,8 @@ dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
if (!tx_desc) {
|
if (!tx_desc) {
|
||||||
dp_err_rl("Tx_desc prepare Fail vdev %pK queue %d",
|
dp_err_rl("Tx_desc prepare Fail vdev %pK queue %d",
|
||||||
vdev, tx_q->desc_pool_id);
|
vdev, tx_q->desc_pool_id);
|
||||||
dp_tx_get_tid(vdev, nbuf, msdu_info);
|
drop_code = TX_DESC_ERR;
|
||||||
tid_stats = &pdev->stats.tid_stats.
|
goto fail_return;
|
||||||
tid_tx_stats[tx_q->ring_id][msdu_info->tid];
|
|
||||||
tid_stats->swdrop_cnt[TX_DESC_ERR]++;
|
|
||||||
return nbuf;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (qdf_unlikely(soc->cce_disable)) {
|
if (qdf_unlikely(soc->cce_disable)) {
|
||||||
@@ -1662,11 +1650,21 @@ dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
} else
|
} else
|
||||||
htt_tcl_metadata = vdev->htt_tcl_metadata;
|
htt_tcl_metadata = vdev->htt_tcl_metadata;
|
||||||
|
|
||||||
|
|
||||||
if (msdu_info->exception_fw) {
|
if (msdu_info->exception_fw) {
|
||||||
HTT_TX_TCL_METADATA_VALID_HTT_SET(htt_tcl_metadata, 1);
|
HTT_TX_TCL_METADATA_VALID_HTT_SET(htt_tcl_metadata, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (qdf_unlikely(qdf_nbuf_map(soc->osdev, nbuf,
|
||||||
|
QDF_DMA_TO_DEVICE)
|
||||||
|
!= QDF_STATUS_SUCCESS)) {
|
||||||
|
/* Handle failure */
|
||||||
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||||
|
"qdf_nbuf_map failed");
|
||||||
|
DP_STATS_INC(vdev, tx_i.dropped.dma_error, 1);
|
||||||
|
drop_code = TX_DMA_MAP_ERR;
|
||||||
|
goto release_desc;
|
||||||
|
}
|
||||||
|
|
||||||
/* Enqueue the Tx MSDU descriptor to HW for transmit */
|
/* Enqueue the Tx MSDU descriptor to HW for transmit */
|
||||||
status = dp_tx_hw_enqueue(soc, vdev, tx_desc, tid,
|
status = dp_tx_hw_enqueue(soc, vdev, tx_desc, tid,
|
||||||
htt_tcl_metadata, tx_q->ring_id, tx_exc_metadata);
|
htt_tcl_metadata, tx_q->ring_id, tx_exc_metadata);
|
||||||
@@ -1675,16 +1673,21 @@ dp_tx_send_msdu_single(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||||
"%s Tx_hw_enqueue Fail tx_desc %pK queue %d",
|
"%s Tx_hw_enqueue Fail tx_desc %pK queue %d",
|
||||||
__func__, tx_desc, tx_q->ring_id);
|
__func__, tx_desc, tx_q->ring_id);
|
||||||
dp_tx_get_tid(vdev, nbuf, msdu_info);
|
|
||||||
tid_stats = &pdev->stats.tid_stats.
|
|
||||||
tid_tx_stats[tx_q->ring_id][tid];
|
|
||||||
tid_stats->swdrop_cnt[TX_HW_ENQUEUE]++;
|
|
||||||
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
|
|
||||||
qdf_nbuf_unmap(vdev->osdev, nbuf, QDF_DMA_TO_DEVICE);
|
qdf_nbuf_unmap(vdev->osdev, nbuf, QDF_DMA_TO_DEVICE);
|
||||||
return nbuf;
|
drop_code = TX_HW_ENQUEUE;
|
||||||
|
goto release_desc;
|
||||||
}
|
}
|
||||||
|
|
||||||
nbuf = NULL;
|
return NULL;
|
||||||
|
|
||||||
|
release_desc:
|
||||||
|
dp_tx_desc_release(tx_desc, tx_q->desc_pool_id);
|
||||||
|
|
||||||
|
fail_return:
|
||||||
|
dp_tx_get_tid(vdev, nbuf, msdu_info);
|
||||||
|
tid_stats = &pdev->stats.tid_stats.
|
||||||
|
tid_tx_stats[tx_q->ring_id][tid];
|
||||||
|
tid_stats->swdrop_cnt[drop_code]++;
|
||||||
return nbuf;
|
return nbuf;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1715,6 +1718,7 @@ qdf_nbuf_t dp_tx_send_msdu_multiple(struct dp_vdev *vdev, qdf_nbuf_t nbuf,
|
|||||||
uint16_t htt_tcl_metadata = 0;
|
uint16_t htt_tcl_metadata = 0;
|
||||||
struct dp_tx_queue *tx_q = &msdu_info->tx_queue;
|
struct dp_tx_queue *tx_q = &msdu_info->tx_queue;
|
||||||
struct cdp_tid_tx_stats *tid_stats = NULL;
|
struct cdp_tid_tx_stats *tid_stats = NULL;
|
||||||
|
|
||||||
if (qdf_unlikely(soc->cce_disable)) {
|
if (qdf_unlikely(soc->cce_disable)) {
|
||||||
is_cce_classified = dp_cce_classify(vdev, nbuf);
|
is_cce_classified = dp_cce_classify(vdev, nbuf);
|
||||||
if (is_cce_classified) {
|
if (is_cce_classified) {
|
||||||
|
@@ -904,6 +904,9 @@ struct dp_soc {
|
|||||||
/* OS device abstraction */
|
/* OS device abstraction */
|
||||||
qdf_device_t osdev;
|
qdf_device_t osdev;
|
||||||
|
|
||||||
|
/*cce disable*/
|
||||||
|
bool cce_disable;
|
||||||
|
|
||||||
/* WLAN config context */
|
/* WLAN config context */
|
||||||
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx;
|
struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx;
|
||||||
|
|
||||||
@@ -948,9 +951,6 @@ struct dp_soc {
|
|||||||
/* Number of PDEVs */
|
/* Number of PDEVs */
|
||||||
uint8_t pdev_count;
|
uint8_t pdev_count;
|
||||||
|
|
||||||
/*cce disable*/
|
|
||||||
bool cce_disable;
|
|
||||||
|
|
||||||
/*ast override support in HW*/
|
/*ast override support in HW*/
|
||||||
bool ast_override_support;
|
bool ast_override_support;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user