qcacmn: Tx desc alloc: remove default wakeup action

When the status is FLOW_POOL_ACTIVE_PAUSED, all queues are expected to
be paused. Still some on the fly packet can make it to the driver. In
such a case, the function dp_tx_desc_alloc takes a default action of
WLAN_WAKE_NON_PRIORITY_QUEUE. This is incorrect, since it will wake all
non priority queues, when they should be paused.
Make default action as WLAN_NETIF_ACTION_TYPE_NONE. If this is the
action to be taken, donot call the pause_cb from dp_tx_desc_alloc.

Rate limit log levels in case dp_tx_desc_alloc fails.

Change-Id: I1ef3018e90576d2c3aaa0d10d56e9b155681271b
CRs-Fixed: 2421813
This commit is contained in:
Mohit Khanna
2019-04-06 22:51:26 -07:00
committed by nshrivas
parent 3d91d4d32c
commit 6d22eeb468
3 changed files with 33 additions and 29 deletions

View File

@@ -217,7 +217,7 @@ dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id)
struct dp_tx_desc_s *tx_desc = NULL;
struct dp_tx_desc_pool_s *pool = &soc->tx_desc[desc_pool_id];
bool is_pause = false;
enum netif_action_type act = WLAN_WAKE_NON_PRIORITY_QUEUE;
enum netif_action_type act = WLAN_NETIF_ACTION_TYPE_NONE;
enum dp_fl_ctrl_threshold level = DP_TH_BE_BK;
if (qdf_likely(pool)) {
@@ -255,18 +255,22 @@ dp_tx_desc_alloc(struct dp_soc *soc, uint8_t desc_pool_id)
level = DP_TH_HI;
pool->status = FLOW_POOL_ACTIVE_PAUSED;
break;
case FLOW_POOL_ACTIVE_PAUSED:
act = WLAN_NETIF_ACTION_TYPE_NONE;
break;
default:
QDF_TRACE(QDF_MODULE_ID_DP,
QDF_TRACE_LEVEL_ERROR,
"%s %d pool is %d status!",
__func__, __LINE__,
dp_err_rl("pool status is %d!",
pool->status);
break;
}
pool->latest_pause_time[level] =
qdf_get_system_timestamp();
soc->pause_cb(desc_pool_id,
act, WLAN_DATA_FLOW_CONTROL);
if (act != WLAN_NETIF_ACTION_TYPE_NONE) {
pool->latest_pause_time[level] =
qdf_get_system_timestamp();
soc->pause_cb(desc_pool_id,
act,
WLAN_DATA_FLOW_CONTROL);
}
}
} else {
pool->pkt_drop_no_desc++;