From: John Daley Date: Sun, 10 Jul 2016 21:15:30 +0000 (-0700) Subject: net/enic: fix crash when changing number of queues X-Git-Tag: spdx-start~6155 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=954828b8be39f3b77a1869f0371bc9d759b075de;p=dpdk.git net/enic: fix crash when changing number of queues The check that all Tx and Rx queues were set up was not adequate when reconfiguring with a different number of queues. Only the number of completion queues (CQs) was being used to make the determination, but the CQ array is shared between the underlying Rx and Tx queues. Check that the internal Rx, Tx and CQs are all set up before completing port configuration. Fixes: fefed3d1e62c ("enic: new driver") Signed-off-by: John Daley Reviewed-by: Nelson Escobar --- diff --git a/drivers/net/enic/enic_ethdev.c b/drivers/net/enic/enic_ethdev.c index 3c87b49ead..21ac48f4b2 100644 --- a/drivers/net/enic/enic_ethdev.c +++ b/drivers/net/enic/enic_ethdev.c @@ -142,9 +142,21 @@ static int enicpmd_dev_setup_intr(struct enic *enic) if (!enic->cq[index].ctrl) break; } - if (enic->cq_count != index) return 0; + for (index = 0; index < enic->wq_count; index++) { + if (!enic->wq[index].ctrl) + break; + } + if (enic->wq_count != index) + return 0; + /* check start of packet (SOP) RQs only in case scatter is disabled. */ + for (index = 0; index < enic->rq_count; index++) { + if (!enic->rq[enic_sop_rq(index)].ctrl) + break; + } + if (enic->rq_count != index) + return 0; ret = enic_alloc_intr_resources(enic); if (ret) {