Revert "qcacmn: Flush ME desc while mcast enhancement disable"
This reverts Change-Id: Ieeaab082d09135b4c803d68041ebf9b4bf7bb144 Change-Id: I4d4b07ae357cffea24c2975445120df79cbddc0d CRs-fixed: 2444484
This commit is contained in:

committed by
nshrivas

parent
480c931d7e
commit
ef40fec41d
@@ -208,7 +208,7 @@ static void dp_tx_tso_desc_release(struct dp_soc *soc,
|
|||||||
*
|
*
|
||||||
* Return:
|
* Return:
|
||||||
*/
|
*/
|
||||||
void
|
static void
|
||||||
dp_tx_desc_release(struct dp_tx_desc_s *tx_desc, uint8_t desc_pool_id)
|
dp_tx_desc_release(struct dp_tx_desc_s *tx_desc, uint8_t desc_pool_id)
|
||||||
{
|
{
|
||||||
struct dp_pdev *pdev = tx_desc->pdev;
|
struct dp_pdev *pdev = tx_desc->pdev;
|
||||||
@@ -2510,7 +2510,8 @@ dp_send_completion_to_stack(struct dp_soc *soc, struct dp_pdev *pdev,
|
|||||||
*
|
*
|
||||||
* Return: none
|
* Return: none
|
||||||
*/
|
*/
|
||||||
void dp_tx_comp_free_buf(struct dp_soc *soc, struct dp_tx_desc_s *desc)
|
static inline void dp_tx_comp_free_buf(struct dp_soc *soc,
|
||||||
|
struct dp_tx_desc_s *desc)
|
||||||
{
|
{
|
||||||
struct dp_vdev *vdev = desc->vdev;
|
struct dp_vdev *vdev = desc->vdev;
|
||||||
qdf_nbuf_t nbuf = desc->nbuf;
|
qdf_nbuf_t nbuf = desc->nbuf;
|
||||||
|
@@ -243,8 +243,4 @@ static inline void dp_tx_comp_process_exception(struct dp_tx_desc_s *tx_desc)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
/* TODO TX_FEATURE_NOT_YET */
|
/* TODO TX_FEATURE_NOT_YET */
|
||||||
|
|
||||||
void dp_tx_comp_free_buf(struct dp_soc *soc, struct dp_tx_desc_s *desc);
|
|
||||||
void dp_tx_desc_release(struct dp_tx_desc_s *tx_desc, uint8_t desc_pool_id);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@@ -140,7 +140,7 @@ dp_tx_me_exit(struct dp_pdev *pdev)
|
|||||||
qdf_spin_lock_bh(&pdev->tx_mutex);
|
qdf_spin_lock_bh(&pdev->tx_mutex);
|
||||||
}
|
}
|
||||||
if (pdev->me_buf.buf_in_use > 0) {
|
if (pdev->me_buf.buf_in_use > 0) {
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_FATAL,
|
||||||
"Tx-comp pending for %d "
|
"Tx-comp pending for %d "
|
||||||
"ME frames after waiting %ds!!",
|
"ME frames after waiting %ds!!",
|
||||||
pdev->me_buf.buf_in_use, wait_time);
|
pdev->me_buf.buf_in_use, wait_time);
|
||||||
@@ -157,49 +157,6 @@ dp_tx_me_exit(struct dp_pdev *pdev)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* dp_tx_me_desc_flush() - release me resources associated to tx_desc
|
|
||||||
* @pdev: DP_PDEV handle
|
|
||||||
*
|
|
||||||
* This function will free all outstanding ME buffer
|
|
||||||
* for which either free during
|
|
||||||
* completion didn't happened or completion is not
|
|
||||||
* received.
|
|
||||||
*/
|
|
||||||
void dp_tx_me_desc_flush(struct dp_pdev *pdev)
|
|
||||||
{
|
|
||||||
uint8_t i, num_pool;
|
|
||||||
uint32_t j;
|
|
||||||
uint32_t num_desc, page_id, offset;
|
|
||||||
uint16_t num_desc_per_page;
|
|
||||||
struct dp_soc *soc = pdev->soc;
|
|
||||||
struct dp_tx_desc_s *tx_desc = NULL;
|
|
||||||
struct dp_tx_desc_pool_s *tx_desc_pool = NULL;
|
|
||||||
|
|
||||||
num_desc = wlan_cfg_get_num_tx_desc(soc->wlan_cfg_ctx);
|
|
||||||
num_pool = wlan_cfg_get_num_tx_desc_pool(soc->wlan_cfg_ctx);
|
|
||||||
|
|
||||||
for (i = 0; i < num_pool; i++) {
|
|
||||||
tx_desc_pool = &soc->tx_desc[i];
|
|
||||||
if (!tx_desc_pool || !tx_desc_pool->desc_pages.cacheable_pages)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
num_desc_per_page =
|
|
||||||
tx_desc_pool->desc_pages.num_element_per_page;
|
|
||||||
for (j = 0; j < num_desc; j++) {
|
|
||||||
page_id = j / num_desc_per_page;
|
|
||||||
offset = j % num_desc_per_page;
|
|
||||||
tx_desc = dp_tx_desc_find(soc, i, page_id, offset);
|
|
||||||
|
|
||||||
if (tx_desc && (tx_desc->pdev == pdev) &&
|
|
||||||
(tx_desc->flags & DP_TX_DESC_FLAG_ME) &&
|
|
||||||
(tx_desc->flags & DP_TX_DESC_FLAG_ALLOCATED)) {
|
|
||||||
dp_tx_comp_free_buf(soc, tx_desc);
|
|
||||||
dp_tx_desc_release(tx_desc, i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* dp_tx_me_free_descriptor():free ME descriptor
|
* dp_tx_me_free_descriptor():free ME descriptor
|
||||||
* @pdev_handle:DP_PDEV handle
|
* @pdev_handle:DP_PDEV handle
|
||||||
@@ -212,7 +169,6 @@ dp_tx_me_free_descriptor(struct cdp_pdev *pdev_handle)
|
|||||||
struct dp_pdev *pdev = (struct dp_pdev *) pdev_handle;
|
struct dp_pdev *pdev = (struct dp_pdev *) pdev_handle;
|
||||||
qdf_atomic_dec(&pdev->mc_num_vap_attached);
|
qdf_atomic_dec(&pdev->mc_num_vap_attached);
|
||||||
if (atomic_read(&pdev->mc_num_vap_attached) == 0) {
|
if (atomic_read(&pdev->mc_num_vap_attached) == 0) {
|
||||||
dp_tx_me_desc_flush(pdev);
|
|
||||||
dp_tx_me_exit(pdev);
|
dp_tx_me_exit(pdev);
|
||||||
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_INFO,
|
||||||
"Disable MCAST_TO_UCAST");
|
"Disable MCAST_TO_UCAST");
|
||||||
|
Reference in New Issue
Block a user