ice: implement AQ download pkg retry
BugLink: https://bugs.launchpad.net/bugs/2075154
[ Upstream commit a27f6ac9d404ea84196639dcc456f969ef813c0f ]
ice_aqc_opc_download_pkg (0x0C40) AQ sporadically returns error due
to FW issue. Fix this by retrying five times before moving to
Safe Mode. Sleep for 20 ms before retrying. This was tested with the
4.40 firmware.
Fixes: c764881096 ("ice: Implement Dynamic Device Personalization (DDP) download")
Reviewed-by: Michal Swiatkowski <michal.swiatkowski@linux.intel.com>
Signed-off-by: Wojciech Drewek <wojciech.drewek@intel.com>
Reviewed-by: Brett Creeley <brett.creeley@amd.com>
Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Manuel Diewald <manuel.diewald@canonical.com>
Signed-off-by: Stefan Bader <stefan.bader@canonical.com>
Signed-off-by: Roxana Nicolescu <roxana.nicolescu@canonical.com>
This commit is contained in:
committed by
Roxana Nicolescu
parent
b2e2927616
commit
2aa2e5bacf
@@ -1329,6 +1329,7 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
bool last = false;
|
||||
int try_cnt = 0;
|
||||
int status;
|
||||
|
||||
bh = (struct ice_buf_hdr *)(bufs + start + i);
|
||||
@@ -1336,8 +1337,26 @@ ice_dwnld_cfg_bufs_no_lock(struct ice_hw *hw, struct ice_buf *bufs, u32 start,
|
||||
if (indicate_last)
|
||||
last = ice_is_last_download_buffer(bh, i, count);
|
||||
|
||||
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE, last,
|
||||
&offset, &info, NULL);
|
||||
while (1) {
|
||||
status = ice_aq_download_pkg(hw, bh, ICE_PKG_BUF_SIZE,
|
||||
last, &offset, &info,
|
||||
NULL);
|
||||
if (hw->adminq.sq_last_status != ICE_AQ_RC_ENOSEC &&
|
||||
hw->adminq.sq_last_status != ICE_AQ_RC_EBADSIG)
|
||||
break;
|
||||
|
||||
try_cnt++;
|
||||
|
||||
if (try_cnt == 5)
|
||||
break;
|
||||
|
||||
msleep(20);
|
||||
}
|
||||
|
||||
if (try_cnt)
|
||||
dev_dbg(ice_hw_to_dev(hw),
|
||||
"ice_aq_download_pkg number of retries: %d\n",
|
||||
try_cnt);
|
||||
|
||||
/* Save AQ status from download package */
|
||||
if (status) {
|
||||
|
||||
Reference in New Issue
Block a user