Skip to content

Commit aa790db

Browse files
Padmanabh Ratnakardavem330
authored andcommitted
be2net: Fix issues in error recovery due to wrong queue state
During recovery from a FW error, destroy queue operation may fail. Queue should be marked as destroyed so that recovery code can recreate the queue. Also fix queue created state not getting checked at one instance. Signed-off-by: Padmanabh Ratnakar <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent db15dfa commit aa790db

File tree

1 file changed

+5
-4
lines changed

1 file changed

+5
-4
lines changed

drivers/net/ethernet/emulex/benet/be_cmds.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -681,6 +681,9 @@ static struct be_mcc_wrb *wrb_from_mccq(struct be_adapter *adapter)
681681
struct be_queue_info *mccq = &adapter->mcc_obj.q;
682682
struct be_mcc_wrb *wrb;
683683

684+
if (!mccq->created)
685+
return NULL;
686+
684687
if (atomic_read(&mccq->used) >= mccq->len) {
685688
dev_err(&adapter->pdev->dev, "Out of MCCQ wrbs\n");
686689
return NULL;
@@ -1235,8 +1238,7 @@ int be_cmd_q_destroy(struct be_adapter *adapter, struct be_queue_info *q,
12351238
req->id = cpu_to_le16(q->id);
12361239

12371240
status = be_mbox_notify_wait(adapter);
1238-
if (!status)
1239-
q->created = false;
1241+
q->created = false;
12401242

12411243
mutex_unlock(&adapter->mbox_lock);
12421244
return status;
@@ -1263,8 +1265,7 @@ int be_cmd_rxq_destroy(struct be_adapter *adapter, struct be_queue_info *q)
12631265
req->id = cpu_to_le16(q->id);
12641266

12651267
status = be_mcc_notify_wait(adapter);
1266-
if (!status)
1267-
q->created = false;
1268+
q->created = false;
12681269

12691270
err:
12701271
spin_unlock_bh(&adapter->mcc_lock);

0 commit comments

Comments
 (0)