wimax/i2400m: when stopping the device, cancel any pending message
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Wed, 7 Oct 2009 03:20:15 +0000 (12:20 +0900)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Mon, 19 Oct 2009 06:56:17 +0000 (15:56 +0900)
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>
drivers/net/wimax/i2400m/driver.c

index 1f6aa2a..810eda7 100644 (file)
@@ -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);
        /*