• Jacob Keller's avatar
    ice: increase maximum wait time for flash write commands · 0ec86e8e
    Jacob Keller authored
    The ice driver needs to wait for a firmware response to each command to
    write a block of data to the scratch area used to update the device
    firmware. The driver currently waits for up to 1 second for this to be
    returned.
    
    It turns out that firmware might take longer than 1 second to return
    a completion in some cases. If this happens, the flash update will fail
    to complete.
    
    Fix this by increasing the maximum time that the driver will wait for
    both writing a block of data, and for activating the new NVM bank. The
    timeout for an erase command is already several minutes, as the firmware
    had to erase the entire bank which was already expected to take a minute
    or more in the worst case.
    
    In the case where firmware really won't respond, we will now take longer
    to fail. However, this ensures that if the firmware is simply slow to
    respond, the flash update can still complete. This new maximum timeout
    should not adversely increase the update time, as the implementation for
    wait_event_interruptible_timeout, and should wake very soon after we get
    a completion event. It is better for a flash update be slow but still
    succeed than to fail because we gave up too quickly.
    
    Fixes: d69ea414 ("ice: implement device flash update via devlink")
    Signed-off-by: default avatarJacob Keller <jacob.e.keller@intel.com>
    Tested-by: default avatarBrijesh Behera <brijeshx.behera@intel.com>
    Signed-off-by: default avatarTony Nguyen <anthony.l.nguyen@intel.com>
    0ec86e8e
ice_fw_update.c 24.2 KB