qcacmn: Flush TxLookupQueue for WMI_CONTROL_SVC during htc_stop
TX comletion for WMI_FORCE_FW_HANG_CMDID would come after TARGET_STATUS_RESET is set. In such a senario, there would be memory leak. Flush TxLookupQueue for WMI_CONTROL_SVC during htc_stop. Since netbuf is freed in ISR, just free HTC frame here. Change-Id: I5fab3effda1db70fa9b1208c854231a88b48309b CRs-Fixed: 2242862
Esse commit está contido em:
13
htc/htc.c
13
htc/htc.c
@@ -187,7 +187,7 @@ static void htc_cleanup(HTC_TARGET *target)
|
||||
}
|
||||
#endif
|
||||
|
||||
htc_flush_endpoint_txlookupQ(target, ENDPOINT_0);
|
||||
htc_flush_endpoint_txlookupQ(target, ENDPOINT_0, true);
|
||||
|
||||
qdf_spinlock_destroy(&target->HTCLock);
|
||||
qdf_spinlock_destroy(&target->HTCRxLock);
|
||||
@@ -831,6 +831,17 @@ void htc_stop(HTC_HANDLE HTCHandle)
|
||||
UNLOCK_HTC_RX(target);
|
||||
#endif
|
||||
|
||||
/**
|
||||
* In SSR case, HTC tx completion callback for wmi will be blocked
|
||||
* by TARGET_STATUS_RESET and HTC packets will be left unfreed on
|
||||
* lookup queue.
|
||||
*/
|
||||
for (i = 0; i < ENDPOINT_MAX; i++) {
|
||||
pEndpoint = &target->endpoint[i];
|
||||
if (pEndpoint->service_id == WMI_CONTROL_SVC)
|
||||
htc_flush_endpoint_txlookupQ(target, i, false);
|
||||
}
|
||||
|
||||
reset_endpoint_states(target);
|
||||
|
||||
AR_DEBUG_PRINTF(ATH_DEBUG_TRC, ("-htc_stop\n"));
|
||||
|
Referência em uma nova issue
Block a user