|
@@ -19845,8 +19845,8 @@ void hdd_driver_unload(void)
|
|
|
* trans are rejected via wlan_hdd_validate_context.
|
|
|
*/
|
|
|
status = osif_driver_sync_trans_start_wait(&driver_sync);
|
|
|
- QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
|
|
|
- if (QDF_IS_STATUS_ERROR(status)) {
|
|
|
+ if (QDF_IS_STATUS_ERROR(status) && status != -ETIMEDOUT) {
|
|
|
+ QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
|
|
|
hdd_err("Unable to unload wlan; status:%u", status);
|
|
|
hdd_place_marker(NULL, "UNLOAD FAILURE", NULL);
|
|
|
return;
|
|
@@ -19878,7 +19878,8 @@ void hdd_driver_unload(void)
|
|
|
* Stop the trans before calling unregister_driver as that involves a
|
|
|
* call to pld_remove which in itself is a psoc transaction
|
|
|
*/
|
|
|
- osif_driver_sync_trans_stop(driver_sync);
|
|
|
+ if (driver_sync)
|
|
|
+ osif_driver_sync_trans_stop(driver_sync);
|
|
|
|
|
|
hdd_distroy_wifi_feature_interface();
|
|
|
if (!soft_unload)
|
|
@@ -19888,15 +19889,16 @@ void hdd_driver_unload(void)
|
|
|
wlan_hdd_unregister_driver();
|
|
|
|
|
|
status = osif_driver_sync_trans_start_wait(&driver_sync);
|
|
|
- QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
|
|
|
- if (QDF_IS_STATUS_ERROR(status)) {
|
|
|
+ if (QDF_IS_STATUS_ERROR(status) && status != -ETIMEDOUT) {
|
|
|
+ QDF_BUG(QDF_IS_STATUS_SUCCESS(status));
|
|
|
hdd_err("Unable to unload wlan; status:%u", status);
|
|
|
hdd_place_marker(NULL, "UNLOAD FAILURE", NULL);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
osif_driver_sync_unregister();
|
|
|
- osif_driver_sync_wait_for_ops(driver_sync);
|
|
|
+ if (driver_sync)
|
|
|
+ osif_driver_sync_wait_for_ops(driver_sync);
|
|
|
|
|
|
hdd_driver_mode_change_unregister();
|
|
|
pld_deinit();
|
|
@@ -19906,9 +19908,10 @@ void hdd_driver_unload(void)
|
|
|
hdd_component_cb_deinit();
|
|
|
hdd_deinit();
|
|
|
|
|
|
- osif_driver_sync_trans_stop(driver_sync);
|
|
|
- osif_driver_sync_destroy(driver_sync);
|
|
|
-
|
|
|
+ if (driver_sync) {
|
|
|
+ osif_driver_sync_trans_stop(driver_sync);
|
|
|
+ osif_driver_sync_destroy(driver_sync);
|
|
|
+ }
|
|
|
osif_sync_deinit();
|
|
|
|
|
|
hdd_qdf_deinit();
|