• Shay Agroskin's avatar
    net: ena: optimize data access in fast-path code · e4ac382e
    Shay Agroskin authored
    This tweaks several small places to improve the data access in fast
    path:
    
    * Remove duplicates of first_interrupt flag and surround it with
      WRITE/READ_ONCE macros:
    
      The flag is used to detect HW disorders in its
      interrupt communication with the driver. The flag is set when an
      interrupt is received and used in the health check function
      (ena_timer_service()) to help it find irregularities.
    
    * Reorder some fields in ena_napi struct to take better advantage of
      cache access pattern.
    
    * Move XDP TX queue number to a variable to save its calculation for
      every packet.
    
    * Use likely in a condition to improve branch prediction
    
    The 'first_interrupt' and 'interrupt_masked' flags were moved to reside
    in the same cache line as the first fields of 'napi' struct. This
    placement ensures that all memory accessed during upper-half handler
    reside in the same cacheline (napi_schedule_irqoff() only accesses
    'state' and 'poll_list' fields which are at the beginning of napi
    struct).
    Signed-off-by: default avatarSameeh Jubran <sameehj@amazon.com>
    Signed-off-by: default avatarShay Agroskin <shayagr@amazon.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e4ac382e
ena_netdev.c 123 KB