qcacld-3.0: Fix tx flow control inconsistency during ssr
qcacld-2.0 to qcacld-3.0 Propagation. Connection fails after ssr due to the tx queues are paused by tx flow control and ssr happens before tx resume, and the tx queues cannot be resumed because of the unpaired status of pause map. Resume tx queues and update pause map at the beginning of ssr if the tx queues are paused by tx flow control. CRs-Fixed: 2146129 Change-Id: Ib1ed8360c6effa4a47fc1702650375bf2380e65c
Tento commit je obsažen v:
@@ -5633,6 +5633,29 @@ static void hdd_reset_scan_operation(struct hdd_context *hdd_ctx,
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||
/**
|
||||
* hdd_adapter_abort_tx_flow() - Abort the tx flow control
|
||||
* @pAdapter: pointer to hdd_adapter_t
|
||||
*
|
||||
* Resume tx and stop the tx flow control timer if the tx is paused
|
||||
* and the flow control timer is running. This function is called by
|
||||
* SSR to avoid the inconsistency of tx status before and after SSR.
|
||||
*
|
||||
* Return: void
|
||||
*/
|
||||
static void hdd_adapter_abort_tx_flow(struct hdd_adapter *adapter)
|
||||
{
|
||||
if (adapter->hdd_stats.tx_rx_stats.is_txflow_paused &&
|
||||
QDF_TIMER_STATE_RUNNING ==
|
||||
qdf_mc_timer_get_current_state(
|
||||
&adapter->tx_flow_control_timer)) {
|
||||
hdd_tx_resume_timer_expired_handler(adapter);
|
||||
qdf_mc_timer_stop(&adapter->tx_flow_control_timer);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx)
|
||||
{
|
||||
struct hdd_adapter *adapter;
|
||||
@@ -5651,6 +5674,10 @@ QDF_STATUS hdd_reset_all_adapters(struct hdd_context *hdd_ctx)
|
||||
qdf_opmode_str(adapter->device_mode),
|
||||
adapter->device_mode);
|
||||
|
||||
#ifdef QCA_LL_LEGACY_TX_FLOW_CONTROL
|
||||
hdd_adapter_abort_tx_flow(adapter);
|
||||
#endif
|
||||
|
||||
if ((adapter->device_mode == QDF_STA_MODE) ||
|
||||
(adapter->device_mode == QDF_P2P_CLIENT_MODE)) {
|
||||
/* Stop tdls timers */
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele