ice: do not init struct ice_adapter more times than needed
authorPrzemek Kitszel <przemyslaw.kitszel@intel.com>
Mon, 17 Jun 2024 13:24:07 +0000 (15:24 +0200)
committerTony Nguyen <anthony.l.nguyen@intel.com>
Fri, 28 Jun 2024 20:07:24 +0000 (13:07 -0700)
commit0f0023c649c7bc50543fbe6e1801eb6357b8bd63
tree26533d956e9728e8d420a45a649a5a68ff7883ff
parentfdd288e9b7647557c51a28e72fd1003e3a9bf906
ice: do not init struct ice_adapter more times than needed

Allocate and initialize struct ice_adapter object only once per physical
card instead of once per port. This is not a big deal by now, but we want
to extend this struct more and more in the near future. Our plans include
PTP stuff and a devlink instance representing whole-device/physical card.

Transactions requiring to be sleep-able (like those doing user (here ice)
memory allocation) must be performed with an additional (on top of xarray)
mutex. Adding it here removes need to xa_lock() manually.

Since this commit is a reimplementation of ice_adapter_get(), a rather new
scoped_guard() wrapper for locking is used to simplify the logic.

It's worth to mention that xa_insert() use gives us both slot reservation
and checks if it is already filled, what simplifies code a tiny bit.

Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Signed-off-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Reviewed-by: Michal Schmidt <mschmidt@redhat.com>
Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
drivers/net/ethernet/intel/ice/ice_adapter.c