aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wimax/i2400m/i2400m.h
diff options
context:
space:
mode:
authorInaky Perez-Gonzalez <inaky@linux.intel.com>2009-10-06 23:34:13 -0400
committerInaky Perez-Gonzalez <inaky@linux.intel.com>2009-10-19 02:56:18 -0400
commitb9ee95010bee6c0e17d18bc9d9c0cfab6e8cb73a (patch)
treed1fd6706e054bb337d3ac79e96e32d2ec5145047 /drivers/net/wimax/i2400m/i2400m.h
parent5eeae35b9a2e304fc4ae3d9eed63afeea23b482c (diff)
wimax/i2400m: fix deadlock: don't do BUS reset under i2400m->init_mutex
Since the addition of the pre/post reset handlers, it became clear that we cannot do a I2400M-RT-BUS type reset while holding the init_mutex, as in the case of USB, it will deadlock when trying to call i2400m_pre_reset(). Thus, the following changes: - clarify the fact that calling bus_reset() w/ I2400M_RT_BUS while holding init_mutex is a no-no. - i2400m_dev_reset_handle() will do a BUS reset to recover a gone device after unlocking init_mutex. - in the USB reset implementation, when cold and warm reset fails, fallback to QUEUING a usb reset, not executing a USB reset, so it happens from another context and does not deadlock. Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Diffstat (limited to 'drivers/net/wimax/i2400m/i2400m.h')
-rw-r--r--drivers/net/wimax/i2400m/i2400m.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wimax/i2400m/i2400m.h b/drivers/net/wimax/i2400m/i2400m.h
index 8fc8a0ca5126..f5ed7d5cee47 100644
--- a/drivers/net/wimax/i2400m/i2400m.h
+++ b/drivers/net/wimax/i2400m/i2400m.h
@@ -281,6 +281,9 @@ struct i2400m_barker_db;
281 * process, so it cannot rely on common infrastructure being laid 281 * process, so it cannot rely on common infrastructure being laid
282 * out. 282 * out.
283 * 283 *
284 * IMPORTANT: don't call reset on RT_BUS with i2400m->init_mutex
285 * held, as the .pre/.post reset handlers will deadlock.
286 *
284 * @bus_bm_retries: [fill] How many times shall a firmware upload / 287 * @bus_bm_retries: [fill] How many times shall a firmware upload /
285 * device initialization be retried? Different models of the same 288 * device initialization be retried? Different models of the same
286 * device might need different values, hence it is set by the 289 * device might need different values, hence it is set by the