|
@@ -142,6 +142,7 @@ static int qed_spq_block(struct qed_hwfn *p_hwfn,
|
|
|
|
|
|
DP_INFO(p_hwfn, "Ramrod is stuck, requesting MCP drain\n");
|
|
|
rc = qed_mcp_drain(p_hwfn, p_ptt);
|
|
|
+ qed_ptt_release(p_hwfn, p_ptt);
|
|
|
if (rc) {
|
|
|
DP_NOTICE(p_hwfn, "MCP drain failed\n");
|
|
|
goto err;
|
|
@@ -150,18 +151,15 @@ static int qed_spq_block(struct qed_hwfn *p_hwfn,
|
|
|
/* Retry after drain */
|
|
|
rc = __qed_spq_block(p_hwfn, p_ent, p_fw_ret, true);
|
|
|
if (!rc)
|
|
|
- goto out;
|
|
|
+ return 0;
|
|
|
|
|
|
comp_done = (struct qed_spq_comp_done *)p_ent->comp_cb.cookie;
|
|
|
- if (comp_done->done == 1)
|
|
|
+ if (comp_done->done == 1) {
|
|
|
if (p_fw_ret)
|
|
|
*p_fw_ret = comp_done->fw_return_code;
|
|
|
-out:
|
|
|
- qed_ptt_release(p_hwfn, p_ptt);
|
|
|
- return 0;
|
|
|
-
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
err:
|
|
|
- qed_ptt_release(p_hwfn, p_ptt);
|
|
|
DP_NOTICE(p_hwfn,
|
|
|
"Ramrod is stuck [CID %08x cmd %02x protocol %02x echo %04x]\n",
|
|
|
le32_to_cpu(p_ent->elem.hdr.cid),
|