• T
    can: c_can: Fix startup logic · bed11db3
    Thomas Gleixner 提交于
    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: NThomas Gleixner <tglx@linutronix.de>
    Tested-by: NAlexander Stein <alexander.stein@systec-electronic.com>
    Signed-off-by: NMarc Kleine-Budde <mkl@pengutronix.de>
    bed11db3
c_can.c 35.2 KB