qcacld-3.0: Start inactivity timer for hdd_open

There can be deadlock on iff_up on anyone of mutex's like
init_deinit_lock, iface_change_lock. To catch what caused the
deadlock start the inactivity timer to root-cause the issue

CRs-Fixed: 2120569
Change-Id: I830cc4127a9c0691ee44a5e2c56c871471d638db
This commit is contained in:
Arunk Khandavalli
2017-10-04 14:49:51 +05:30
gecommit door Gerrit - the friendly Code Review server
bovenliggende a92f8cc9a1
commit e9ef42ae0c
2 gewijzigde bestanden met toevoegingen van 8 en 1 verwijderingen

Bestand weergeven

@@ -1851,12 +1851,14 @@ struct hdd_channel_info {
* @eHDD_DRV_OP_REMOVE: Refers to .remove operation
* @eHDD_DRV_OP_SHUTDOWN: Refers to .shutdown operation
* @eHDD_DRV_OP_REINIT: Refers to .reinit operation
* @eHDD_DRV_OP_IFF_UP: Refers to IFF_UP operation
*/
enum {
eHDD_DRV_OP_PROBE = 0,
eHDD_DRV_OP_REMOVE,
eHDD_DRV_OP_SHUTDOWN,
eHDD_DRV_OP_REINIT
eHDD_DRV_OP_REINIT,
eHDD_DRV_OP_IFF_UP
};
/*

Bestand weergeven

@@ -2625,7 +2625,9 @@ static int hdd_open(struct net_device *dev)
int ret;
cds_ssr_protect(__func__);
hdd_start_driver_ops_timer(eHDD_DRV_OP_IFF_UP);
ret = __hdd_open(dev);
hdd_stop_driver_ops_timer();
cds_ssr_unprotect(__func__);
return ret;
@@ -12783,6 +12785,9 @@ void hdd_start_driver_ops_timer(int drv_op)
case eHDD_DRV_OP_REINIT:
memcpy(drv_ops_string, "reinit", sizeof("reinit"));
break;
case eHDD_DRV_OP_IFF_UP:
memcpy(drv_ops_string, "iff_up", sizeof("iff_up"));
break;
}
qdf_timer_start(&hdd_drv_ops_inactivity_timer,