diff options
author | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-10-06 23:20:15 -0400 |
---|---|---|
committer | Inaky Perez-Gonzalez <inaky@linux.intel.com> | 2009-10-19 02:56:17 -0400 |
commit | 5eeae35b9a2e304fc4ae3d9eed63afeea23b482c (patch) | |
tree | 7d4dcc2d36785b78d990c02af968d61467000a40 /drivers/net/wimax | |
parent | 28cff50d99ce9a1db65b7d4dcdcc0f1f8d9f9309 (diff) |
wimax/i2400m: when stopping the device, cancel any pending message
The stop procedure for the device must make sure that any task that is
waiting on a message is properly cancelled.
This was being taken care of only by the __i2400m_dev_reset_handle()
path and the rest was working by chance because the waits have a
timeout.
Fixed by adding a proper cancellation in __i2400m_dev_stop().
Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Diffstat (limited to 'drivers/net/wimax')
-rw-r--r-- | drivers/net/wimax/i2400m/driver.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wimax/i2400m/driver.c b/drivers/net/wimax/i2400m/driver.c index 1f6aa2a55429..810eda7dbdba 100644 --- a/drivers/net/wimax/i2400m/driver.c +++ b/drivers/net/wimax/i2400m/driver.c | |||
@@ -537,6 +537,8 @@ void __i2400m_dev_stop(struct i2400m *i2400m) | |||
537 | 537 | ||
538 | d_fnstart(3, dev, "(i2400m %p)\n", i2400m); | 538 | d_fnstart(3, dev, "(i2400m %p)\n", i2400m); |
539 | wimax_state_change(wimax_dev, __WIMAX_ST_QUIESCING); | 539 | wimax_state_change(wimax_dev, __WIMAX_ST_QUIESCING); |
540 | i2400m_msg_to_dev_cancel_wait(i2400m, -EL3RST); | ||
541 | complete(&i2400m->msg_completion); | ||
540 | i2400m_net_wake_stop(i2400m); | 542 | i2400m_net_wake_stop(i2400m); |
541 | i2400m_dev_shutdown(i2400m); | 543 | i2400m_dev_shutdown(i2400m); |
542 | /* | 544 | /* |