From 331eb9e6f7ee9dac5988a893b424aae366378842 Mon Sep 17 00:00:00 2001 From: jiad Date: Fri, 3 Aug 2018 10:36:32 +0800 Subject: [PATCH] qcacmn: Fix DP flow pool map for non-LFR3 roaming tx_desc allocation failures are observed when running roaming scenarios on Napier x86, where roaming offload is disabled (non-LFR3) and during roaming reassociation is sent by DUT. With Lithium_DP, tx_desc are pre-allocated within flow pool and flow pool map and unmap are currently hooked in policy manager when connection table is updated. In roaming scenario, flow pool is created when STA is associated with old AP. But new flow pool is not created but is reused with old AP since same flow pool id is passed from protocol stack. When old AP is removed from policy manager connection table, flow pool is thus unmapped which leads to EAPOL packets transmit failure due to unavailability of tx desc. Fix is to increate pool_create_cnt to avoid flow pool being unmapped. Change-Id: Ia912c1d7fe8319bece00869a9a47c8a760b17e2f CRs-Fixed: 2287284 --- dp/wifi3.0/dp_tx_flow_control.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dp/wifi3.0/dp_tx_flow_control.c b/dp/wifi3.0/dp_tx_flow_control.c index a635eb034327..fa32449cafc9 100644 --- a/dp/wifi3.0/dp_tx_flow_control.c +++ b/dp/wifi3.0/dp_tx_flow_control.c @@ -136,6 +136,9 @@ struct dp_tx_desc_pool_s *dp_tx_create_flow_pool(struct dp_soc *soc, pool->status = FLOW_POOL_ACTIVE_UNPAUSED; else pool->status = FLOW_POOL_ACTIVE_PAUSED; + + pool->pool_create_cnt++; + qdf_spin_unlock_bh(&pool->flow_pool_lock); return pool; }