common/sfc_efx/base: complete EvQ creation on Riverhead
authorIvan Malov <ivan.malov@oktetlabs.ru>
Thu, 24 Sep 2020 12:11:59 +0000 (13:11 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 30 Sep 2020 17:19:12 +0000 (19:19 +0200)
commit92fedcd3a5a9d90e1edc570a2886d414c4530cd0
tree7ef425ff5ae8344fc3935dc7bb2f2ae76bd11a69
parentb97bf1cac297ed5a6557dd59cc476498b8b069fb
common/sfc_efx/base: complete EvQ creation on Riverhead

Client drivers relying on interrupts will fail to complete event
queue creation on Riverhead boards as the latter have no support
for INIT_DONE events which means that it's useless to wait until
initialisation callback is triggered by interrupt-driven polling.

Client drivers which avoid interrupt-driven polling still handle
INIT_DONE events by direct polling and will fail to do so.

Solve this problem by adding an extra poll-once method which
will be called by client drivers after queue creation (probably,
with driver-specific lock being held). The method will invoke
initialisation callback on Riverhead and do nothing on the other
boards. Then the drivers will proceed with normal waiting which
will complete immediately in the case of Riverhead.

Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru>
Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
Reviewed-by: Andy Moreton <amoreton@xilinx.com>
drivers/common/sfc_efx/base/efx.h
drivers/common/sfc_efx/base/efx_ev.c
drivers/common/sfc_efx/base/hunt_nic.c
drivers/common/sfc_efx/base/medford2_nic.c
drivers/common/sfc_efx/base/medford_nic.c
drivers/common/sfc_efx/base/rhead_nic.c
drivers/common/sfc_efx/base/siena_nic.c
drivers/common/sfc_efx/rte_common_sfc_efx_version.map
drivers/net/sfc/sfc_ev.c