qca-wifi: Check peer capture enable while enqueuing MSDUS

this is done to queue frames when filtering and eventually free them
when the feature is disabled

Change-Id: I2dcaa1b354e8e2a0403cf438526a545669ed84e6
This commit is contained in:
Ruben Columbus
2019-10-08 14:49:31 -07:00
committed by Gerrit - the friendly Code Review server
parent 6012551d92
commit 6829a32527
4 changed files with 62 additions and 1 deletions

View File

@@ -180,6 +180,23 @@ void dp_peer_tid_queue_init(struct dp_peer *peer)
}
}
static
void dp_peer_tx_cap_tid_queue_flush(struct dp_peer *peer)
{
int tid;
struct dp_tx_tid *tx_tid;
for (tid = 0; tid < DP_MAX_TIDS; tid++) {
tx_tid = &peer->tx_capture.tx_tid[tid];
qdf_spin_lock_bh(&tx_tid->tid_lock);
qdf_nbuf_queue_free(&tx_tid->msdu_comp_q);
qdf_spin_unlock_bh(&tx_tid->tid_lock);
tx_tid->max_ppdu_id = 0;
}
}
/*
* dp_peer_tid_queue_cleanup() remove ppdu stats queue per TID
* @peer: Datapath peer
@@ -468,7 +485,7 @@ QDF_STATUS dp_tx_add_to_comp_queue(struct dp_soc *soc,
{
int ret = QDF_STATUS_E_FAILURE;
if ((desc->pdev->tx_capture_enabled != CDP_TX_ENH_CAPTURE_DISABLED) &&
if (peer && dp_peer_or_pdev_tx_cap_enabled(desc->pdev, peer) &&
((ts->status == HAL_TX_TQM_RR_FRAME_ACKED) ||
(ts->status == HAL_TX_TQM_RR_REM_CMD_TX) ||
((ts->status == HAL_TX_TQM_RR_REM_CMD_AGED) && ts->transmit_cnt))) {
@@ -3167,4 +3184,21 @@ QDF_STATUS dp_send_ack_frame_to_stack(struct dp_soc *soc,
return QDF_STATUS_SUCCESS;
}
/**
* dp_peer_set_tx_capture_enabled: Set tx_cap_enabled bit in peer
* @peer_handle: Peer handle
* @value: Enable/disable setting for tx_cap_enabled
*
* Return: None
*/
void
dp_peer_set_tx_capture_enabled(struct cdp_peer *peer_handle, bool value)
{
struct dp_peer *peer = (struct dp_peer *)peer_handle;
peer->tx_cap_enabled = value;
if (!value)
dp_peer_tx_cap_tid_queue_flush(peer);
}
#endif