qcacmn: Block Ack state machine enhancement in DP

Move the state to in_progress when we process addba
request and upon tx comletion of addba response, move
the state to active. Any addba request received during
in_progress is ignored and reo queue is updated with
window size 1 and set to inactive.

Change-Id: I69cfbc162d873f9e6842ca3e7971146dafba2695
Crs-fixed: 2188927
This commit is contained in:
Sumedh Baikady
2018-02-12 22:25:47 -08:00
committed by nshrivas
parent 121589c105
commit 1c61e0664d
6 changed files with 153 additions and 22 deletions

View File

@@ -951,6 +951,35 @@ cdp_soc_detach(ol_txrx_soc_handle soc)
soc->ops->cmn_drv_ops->txrx_soc_detach((void *)soc);
}
/**
* cdp_addba_resp_tx_completion() - Indicate addba response tx
* completion to dp to change tid state.
* @soc: soc handle
* @peer_handle: peer handle
* @tid: tid
* @status: Tx completion status
*
* Return: success/failure of tid update
*/
static inline int cdp_addba_resp_tx_completion(ol_txrx_soc_handle soc,
void *peer_handle,
uint8_t tid, int status)
{
if (!soc || !soc->ops) {
QDF_TRACE(QDF_MODULE_ID_CDP, QDF_TRACE_LEVEL_DEBUG,
"%s: Invalid Instance:", __func__);
QDF_BUG(0);
return 0;
}
if (!soc->ops->cmn_drv_ops ||
!soc->ops->cmn_drv_ops->addba_resp_tx_completion)
return 0;
return soc->ops->cmn_drv_ops->addba_resp_tx_completion(peer_handle, tid,
status);
}
static inline int cdp_addba_requestprocess(ol_txrx_soc_handle soc,
void *peer_handle, uint8_t dialogtoken, uint16_t tid,
uint16_t batimeout, uint16_t buffersize, uint16_t startseqnum)