• Zakharov Vlad's avatar
    ezchip: nps_enet: check if napi has been completed · 358e78b5
    Zakharov Vlad authored
    After a new NAPI_STATE_MISSED state was added to NAPI we can get into
    this state and in such case we have to reschedule NAPI as some work is
    still pending and we have to process it. napi_complete_done() function
    returns false if we have to reschedule something (e.g. in case we were
    in MISSED state) as current polling have not been completed yet.
    
    nps_enet driver hasn't been verifying the return value of
    napi_complete_done() and has been forcibly enabling interrupts. That is
    not correct as we should not enable interrupts before we have processed
    all scheduled work. As a result we were getting trapped in interrupt
    hanlder chain as we had never been able to disabale ethernet
    interrupts again.
    
    So this patch makes nps_enet_poll() func verify return value of
    napi_complete_done() and enable interrupts only in case all scheduled
    work has been completed.
    Signed-off-by: default avatarVlad Zakharov <vzakhar@synopsys.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    358e78b5
nps_enet.c 19.2 KB