]> git.itanic.dy.fi Git - linux-stable/commitdiff
octeontx2-pf: Use default max_active works instead of one
authorSubbaraya Sundeep <sbhatta@marvell.com>
Mon, 18 Mar 2024 09:29:56 +0000 (14:59 +0530)
committerSasha Levin <sashal@kernel.org>
Tue, 26 Mar 2024 22:17:37 +0000 (18:17 -0400)
[ Upstream commit 7558ce0d974ced1dc07edc1197f750fe28c52e57 ]

Only one execution context for the workqueue used for PF and
VFs mailbox communication is incorrect since multiple works are
queued simultaneously by all the VFs and PF link UP messages.
Hence use default number of execution contexts by passing zero
as max_active to alloc_workqueue function. With this fix in place,
modify UP messages also to wait until completion.

Fixes: d424b6c02415 ("octeontx2-pf: Enable SRIOV and added VF mbox handling")
Signed-off-by: Subbaraya Sundeep <sbhatta@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/marvell/octeontx2/nic/otx2_pf.c

index 3c8841b35d0f76d65791026550f5bb58bd696c42..f85d38fab3211eaaf3d8f47b17fa6ceb3f269fe2 100644 (file)
@@ -584,8 +584,9 @@ static int otx2_pfvf_mbox_init(struct otx2_nic *pf, int numvfs)
        if (!pf->mbox_pfvf)
                return -ENOMEM;
 
-       pf->mbox_pfvf_wq = alloc_ordered_workqueue("otx2_pfvf_mailbox",
-                                                  WQ_HIGHPRI | WQ_MEM_RECLAIM);
+       pf->mbox_pfvf_wq = alloc_workqueue("otx2_pfvf_mailbox",
+                                          WQ_UNBOUND | WQ_HIGHPRI |
+                                          WQ_MEM_RECLAIM, 0);
        if (!pf->mbox_pfvf_wq)
                return -ENOMEM;
 
@@ -3146,7 +3147,7 @@ static void otx2_vf_link_event_task(struct work_struct *work)
 
        otx2_mbox_wait_for_zero(&pf->mbox_pfvf[0].mbox_up, vf_idx);
 
-       otx2_mbox_msg_send_up(&pf->mbox_pfvf[0].mbox_up, vf_idx);
+       otx2_sync_mbox_up_msg(&pf->mbox_pfvf[0], vf_idx);
 
        mutex_unlock(&pf->mbox.lock);
 }