• Vlastimil Setka's avatar
    altera_tse: Fixes in NAPI and interrupt handling paths · 8d4ac39d
    Vlastimil Setka authored
    Incorrect NAPI polling caused WARNING at net/core/dev.c net_rx_action.
    Some stability issues were also seen at high throughput and system
    load before this patch.
    
    This patch contains several changes in altera_tse_main.c:
    
    - tse_rx() is fixed to not process more than `limit` frames
    
    - tse_poll() is refactored to match NAPI logic
      - only received frames are counted for return value
      - removed bogus condition `(rxcomplete >= budget || txcomplete > 0)`
      - replace by: if (rxcomplete < budget) -> call __napi_complete and enable irq
    
    - altera_isr()
      - replace spin_lock_irqsave() by spin_lock() - we are in isr
      - use spinlocks just over irq manipulation, not over __napi_schedule
      - reset IRQ first, then disable and schedule napi
    
    This is a cleaned up resubmission from Vlastimil's recent submission.
    Signed-off-by: default avatarVlastimil Setka <setka@vsis.cz>
    Signed-off-by: default avatarRoman Pisl <rpisl@kky.zcu.cz>
    Signed-off-by: default avatarVince Bridgers <vbridger@opensource.altera.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8d4ac39d
altera_tse_main.c 40.7 KB