• Jacob Keller's avatar
    ice: implement and use rd32_poll_timeout for ice_sq_done timeout · 5f6df173
    Jacob Keller authored
    The ice_sq_done function is used to check the control queue head register
    and determine whether or not the control queue processing is done. This
    function is called in a loop checking against jiffies for a specified
    timeout.
    
    The pattern of reading a register in a loop until a condition is true or a
    timeout is reached is a relatively common pattern. In fact, the kernel
    provides a read_poll_timeout function implementing this behavior in
    <linux/iopoll.h>
    
    Use of read_poll_timeout is preferred over directly coding these loops.
    However, using it in the ice driver is a bit more difficult because of the
    rd32 wrapper. Implement a rd32_poll_timeout wrapper based on
    read_poll_timeout.
    
    Refactor ice_sq_done to use rd32_poll_timeout, replacing the loop calling
    ice_sq_done in ice_sq_send_cmd. This simplifies the logic down to a single
    ice_sq_done() call.
    
    The implementation of rd32_poll_timeout uses microseconds for its timeout
    value, so update the CQ timeout macros used to be specified in microseconds
    units as well instead of using HZ for jiffies.
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Reviewed-by: default avatarPrzemek Kitszel <przemyslaw.kitszel@intel.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>
    5f6df173
ice_osdep.h 2.32 KB