]> git.baikalelectronics.ru Git - kernel.git/commit
net: ena: optimize data access in fast-path code
authorShay Agroskin <shayagr@amazon.com>
Tue, 8 Jun 2021 16:01:09 +0000 (19:01 +0300)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Jun 2021 21:41:09 +0000 (14:41 -0700)
commit95df5be9268bde6a91e87cddfb7edc96eef125d2
tree3173f991dc66fa004630ae262efd0be963ff40a9
parent7e3dbf23b8f27b94e9ec452e863ca1c9faabd456
net: ena: optimize data access in fast-path code

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: Sameeh Jubran <sameehj@amazon.com>
Signed-off-by: Shay Agroskin <shayagr@amazon.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amazon/ena/ena_eth_com.c
drivers/net/ethernet/amazon/ena/ena_netdev.c
drivers/net/ethernet/amazon/ena/ena_netdev.h