summaryrefslogtreecommitdiffstats
path: root/drivers/net/wimax/i2400m
diff options
context:
space:
mode:
authorInaky Perez-Gonzalez <inaky@linux.intel.com>2009-10-07 05:20:15 +0200
committerInaky Perez-Gonzalez <inaky@linux.intel.com>2009-10-19 08:56:17 +0200
commit5eeae35b9a2e304fc4ae3d9eed63afeea23b482c (patch)
tree7d4dcc2d36785b78d990c02af968d61467000a40 /drivers/net/wimax/i2400m
parentwimax/i2400m: change the bcf_len to exclude the extended header size (diff)
downloadlinux-5eeae35b9a2e304fc4ae3d9eed63afeea23b482c.tar.xz
linux-5eeae35b9a2e304fc4ae3d9eed63afeea23b482c.zip
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/i2400m')
-rw-r--r--drivers/net/wimax/i2400m/driver.c2
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)
d_fnstart(3, dev, "(i2400m %p)\n", i2400m);
wimax_state_change(wimax_dev, __WIMAX_ST_QUIESCING);
+ i2400m_msg_to_dev_cancel_wait(i2400m, -EL3RST);
+ complete(&i2400m->msg_completion);
i2400m_net_wake_stop(i2400m);
i2400m_dev_shutdown(i2400m);
/*