qcacmn: Add Support for Inspect Path for Lithium
Add peer-id in the meta data for the reinjected by the FW and queue them to the HW. Change-Id: I3f25d5f928b6891c06cad6ce3ed81df77d4e33ed CRs-Fixed: 2024450
This commit is contained in:
@@ -1423,22 +1423,71 @@ static
|
||||
void dp_tx_reinject_handler(struct dp_tx_desc_s *tx_desc, uint8_t *status)
|
||||
{
|
||||
struct dp_vdev *vdev;
|
||||
struct dp_peer *peer = NULL;
|
||||
uint32_t peer_id = HTT_INVALID_PEER;
|
||||
qdf_nbuf_t nbuf = tx_desc->nbuf;
|
||||
qdf_nbuf_t nbuf_copy = NULL;
|
||||
struct dp_tx_msdu_info_s msdu_info;
|
||||
|
||||
vdev = tx_desc->vdev;
|
||||
|
||||
qdf_assert(vdev);
|
||||
|
||||
qdf_mem_set(&msdu_info, sizeof(msdu_info), 0x0);
|
||||
|
||||
dp_tx_get_queue(vdev, nbuf, &msdu_info.tx_queue);
|
||||
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||
"%s Tx reinject path\n", __func__);
|
||||
|
||||
DP_STATS_INC_PKT(vdev, tx_i.reinject_pkts, 1,
|
||||
qdf_nbuf_len(tx_desc->nbuf));
|
||||
|
||||
if (!vdev->osif_proxy_arp) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
|
||||
"function pointer to proxy arp not present\n");
|
||||
return;
|
||||
}
|
||||
|
||||
if (qdf_unlikely(vdev->mesh_vdev)) {
|
||||
DP_TX_FREE_SINGLE_BUF(vdev->pdev->soc, tx_desc->nbuf);
|
||||
} else
|
||||
dp_tx_send(vdev, tx_desc->nbuf);
|
||||
} else {
|
||||
TAILQ_FOREACH(peer, &vdev->peer_list, peer_list_elem) {
|
||||
if ((peer->peer_ids[0] != HTT_INVALID_PEER) &&
|
||||
(peer->bss_peer || peer->nawds_enabled)
|
||||
&& !(vdev->osif_proxy_arp(
|
||||
vdev->osif_vdev,
|
||||
nbuf))) {
|
||||
nbuf_copy = qdf_nbuf_copy(nbuf);
|
||||
|
||||
if (!nbuf_copy) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
FL("nbuf copy failed"));
|
||||
break;
|
||||
}
|
||||
|
||||
if (peer->nawds_enabled)
|
||||
peer_id = peer->peer_ids[0];
|
||||
else
|
||||
peer_id = HTT_INVALID_PEER;
|
||||
|
||||
nbuf_copy = dp_tx_send_msdu_single(vdev,
|
||||
nbuf_copy, msdu_info.tid,
|
||||
&msdu_info.tx_queue,
|
||||
msdu_info.meta_data, peer_id);
|
||||
|
||||
if (nbuf_copy) {
|
||||
QDF_TRACE(QDF_MODULE_ID_DP,
|
||||
QDF_TRACE_LEVEL_ERROR,
|
||||
FL("pkt send failed"));
|
||||
qdf_nbuf_free(nbuf_copy);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
qdf_nbuf_free(nbuf);
|
||||
dp_tx_desc_release(tx_desc, tx_desc->pool_id);
|
||||
}
|
||||
|
||||
|
مرجع در شماره جدید
Block a user