• Przemek Kitszel's avatar
    ice: do not init struct ice_adapter more times than needed · 0f0023c6
    Przemek Kitszel authored
    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: default avatarWojciech Drewek <wojciech.drewek@intel.com>
    Signed-off-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.com>
    Reviewed-by: default avatarSimon Horman <horms@kernel.org>
    Reviewed-by: default avatarMichal Schmidt <mschmidt@redhat.com>
    Tested-by: Pucha Himasekhar Reddy <himasekharx.reddy.pucha@intel.com> (A Contingent worker at Intel)
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    0f0023c6
ice_adapter.c 3.03 KB