diff options
author | Thomas Gleixner <tglx@linutronix.de> | 2014-04-11 08:13:10 (GMT) |
---|---|---|
committer | Marc Kleine-Budde <mkl@pengutronix.de> | 2014-04-24 20:08:55 (GMT) |
commit | bed11db3d4095e5f818f5e8bf7f43ef2beb36d4e (patch) | |
tree | 71b380c8e8ef583fccf8217787d905cedb0b0e38 /mm | |
parent | 129eef2184218f4603f406945552ff4e58b05cf1 (diff) | |
download | linux-bed11db3d4095e5f818f5e8bf7f43ef2beb36d4e.tar.xz |
can: c_can: Fix startup logic
c_can_start() enables interrupts way too early. The first enabling
happens when setting the control mode in c_can_chip_config() and then
again at the end of the function.
But that happens before napi_enable() and that means that an interrupt
which comes in will disable interrupts again and call napi_schedule,
which ignores the request and the later napi_enable() is not making
thinks work either. So the interface is up with all device interrupts
disabled.
Move the device interrupt after napi_enable() and add it to the other
callsites of c_can_start() in c_can_set_mode() and c_can_power_up()
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Alexander Stein <alexander.stein@systec-electronic.com>
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Diffstat (limited to 'mm')
0 files changed, 0 insertions, 0 deletions