DPDK patches and discussions
 help / color / mirror / Atom feed
From: Simei Su <simei.su@intel.com>
To: jingjing.wu@intel.com, beilei.xing@intel.com, qi.z.zhang@intel.com
Cc: dev@dpdk.org, mingxia.liu@intel.com, wenjing.qiao@intel.com,
	Simei Su <simei.su@intel.com>,
	Pavan Kumar Linga <pavan.kumar.linga@intel.com>
Subject: [PATCH v3 09/17] common/idpf/base: use local pointer before updating 'CQ out'
Date: Fri, 15 Sep 2023 10:17:22 +0800	[thread overview]
Message-ID: <20230915021730.2681882-10-simei.su@intel.com> (raw)
In-Reply-To: <20230915021730.2681882-1-simei.su@intel.com>

Instead of updating directly to 'cq_out' double pointer, use a
local pointer and update only when we return success.

Signed-off-by: Pavan Kumar Linga <pavan.kumar.linga@intel.com>
Signed-off-by: Simei Su <simei.su@intel.com>
---
 drivers/common/idpf/base/idpf_controlq.c | 43 +++++++++++++-----------
 1 file changed, 23 insertions(+), 20 deletions(-)

diff --git a/drivers/common/idpf/base/idpf_controlq.c b/drivers/common/idpf/base/idpf_controlq.c
index 6815153e1d..b84a1ea046 100644
--- a/drivers/common/idpf/base/idpf_controlq.c
+++ b/drivers/common/idpf/base/idpf_controlq.c
@@ -137,6 +137,7 @@ int idpf_ctlq_add(struct idpf_hw *hw,
 		  struct idpf_ctlq_create_info *qinfo,
 		  struct idpf_ctlq_info **cq_out)
 {
+	struct idpf_ctlq_info *cq;
 	bool is_rxq = false;
 	int status = 0;
 
@@ -145,26 +146,26 @@ int idpf_ctlq_add(struct idpf_hw *hw,
 	    qinfo->buf_size > IDPF_CTLQ_MAX_BUF_LEN)
 		return -EINVAL;
 
-	*cq_out = (struct idpf_ctlq_info *)
-		idpf_calloc(hw, 1, sizeof(struct idpf_ctlq_info));
-	if (!(*cq_out))
+	cq = (struct idpf_ctlq_info *)
+	     idpf_calloc(hw, 1, sizeof(struct idpf_ctlq_info));
+	if (!cq)
 		return -ENOMEM;
 
-	(*cq_out)->cq_type = qinfo->type;
-	(*cq_out)->q_id = qinfo->id;
-	(*cq_out)->buf_size = qinfo->buf_size;
-	(*cq_out)->ring_size = qinfo->len;
+	(cq)->cq_type = qinfo->type;
+	(cq)->q_id = qinfo->id;
+	(cq)->buf_size = qinfo->buf_size;
+	(cq)->ring_size = qinfo->len;
 
-	(*cq_out)->next_to_use = 0;
-	(*cq_out)->next_to_clean = 0;
-	(*cq_out)->next_to_post = (*cq_out)->ring_size - 1;
+	(cq)->next_to_use = 0;
+	(cq)->next_to_clean = 0;
+	(cq)->next_to_post = cq->ring_size - 1;
 
 	switch (qinfo->type) {
 	case IDPF_CTLQ_TYPE_MAILBOX_RX:
 		is_rxq = true;
 		/* fallthrough */
 	case IDPF_CTLQ_TYPE_MAILBOX_TX:
-		status = idpf_ctlq_alloc_ring_res(hw, *cq_out);
+		status = idpf_ctlq_alloc_ring_res(hw, cq);
 		break;
 	default:
 		status = -EINVAL;
@@ -175,33 +176,35 @@ int idpf_ctlq_add(struct idpf_hw *hw,
 		goto init_free_q;
 
 	if (is_rxq) {
-		idpf_ctlq_init_rxq_bufs(*cq_out);
+		idpf_ctlq_init_rxq_bufs(cq);
 	} else {
 		/* Allocate the array of msg pointers for TX queues */
-		(*cq_out)->bi.tx_msg = (struct idpf_ctlq_msg **)
+		cq->bi.tx_msg = (struct idpf_ctlq_msg **)
 			idpf_calloc(hw, qinfo->len,
 				    sizeof(struct idpf_ctlq_msg *));
-		if (!(*cq_out)->bi.tx_msg) {
+		if (!cq->bi.tx_msg) {
 			status = -ENOMEM;
 			goto init_dealloc_q_mem;
 		}
 	}
 
-	idpf_ctlq_setup_regs(*cq_out, qinfo);
+	idpf_ctlq_setup_regs(cq, qinfo);
 
-	idpf_ctlq_init_regs(hw, *cq_out, is_rxq);
+	idpf_ctlq_init_regs(hw, cq, is_rxq);
 
-	idpf_init_lock(&(*cq_out)->cq_lock);
+	idpf_init_lock(&(cq->cq_lock));
 
-	LIST_INSERT_HEAD(&hw->cq_list_head, (*cq_out), cq_list);
+	LIST_INSERT_HEAD(&hw->cq_list_head, cq, cq_list);
 
+	*cq_out = cq;
 	return status;
 
 init_dealloc_q_mem:
 	/* free ring buffers and the ring itself */
-	idpf_ctlq_dealloc_ring_res(hw, *cq_out);
+	idpf_ctlq_dealloc_ring_res(hw, cq);
 init_free_q:
-	idpf_free(hw, *cq_out);
+	idpf_free(hw, cq);
+	cq = NULL;
 
 	return status;
 }
-- 
2.25.1


  parent reply	other threads:[~2023-09-15  2:17 UTC|newest]

Thread overview: 85+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-09  1:32 [PATCH 00/14] update idpf base code Wenjing Qiao
2023-08-09  1:32 ` [PATCH 01/14] common/idpf/base: enable support for physical port stats Wenjing Qiao
2023-08-09  1:32 ` [PATCH 02/14] common/idpf/base: add miss completion capabilities Wenjing Qiao
2023-08-09  1:32 ` [PATCH 03/14] common/idpf/base: initial PTP support Wenjing Qiao
2023-08-09  2:22   ` Liu, Mingxia
2023-08-09  1:32 ` [PATCH 04/14] common/idpf/base: remove mailbox registers Wenjing Qiao
2023-08-09  1:32 ` [PATCH 05/14] common/idpf/base: add some adi specific fields Wenjing Qiao
2023-08-09  1:33 ` [PATCH 06/14] common/idpf/base: add necessary check Wenjing Qiao
2023-08-09  1:33 ` [PATCH 07/14] common/idpf/base: add union for SW cookie fields in ctlq msg Wenjing Qiao
2023-08-09  1:33 ` [PATCH 08/14] common/idpf/base: define non-flexible size structure for ADI Wenjing Qiao
2023-08-09  1:33 ` [PATCH 09/14] common/idpf/base: use local pointer before updating 'CQ out' Wenjing Qiao
2023-08-09  1:33 ` [PATCH 10/14] common/idpf/base: use 'void' return type Wenjing Qiao
2023-08-09  1:33 ` [PATCH 11/14] common/idpf/base: refactor descriptor 'ret val' stripping Wenjing Qiao
2023-08-09  1:33 ` [PATCH 12/14] common/idpf/base: refine comments and alignment Wenjing Qiao
2023-08-09  1:33 ` [PATCH 13/14] common/idpf/base: use GENMASK macro Wenjing Qiao
2023-08-09  1:33 ` [PATCH 14/14] common/idpf/base: use 'type functionname(args)' style Wenjing Qiao
2023-08-25 10:13 ` [PATCH v2 00/17] update idpf base code Simei Su
2023-08-25 10:13   ` [PATCH v2 01/17] common/idpf/base: enable support for physical port stats Simei Su
2023-08-25 10:13   ` [PATCH v2 02/17] common/idpf/base: add miss completion capabilities Simei Su
2023-08-25 10:13   ` [PATCH v2 03/17] common/idpf/base: initial PTP support Simei Su
2023-08-25 10:13   ` [PATCH v2 04/17] common/idpf/base: remove mailbox registers Simei Su
2023-08-25 10:13   ` [PATCH v2 05/17] common/idpf/base: add some adi specific fields Simei Su
2023-08-25 10:13   ` [PATCH v2 06/17] common/idpf/base: add necessary check Simei Su
2023-08-25 10:13   ` [PATCH v2 07/17] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-08-25 10:13   ` [PATCH v2 08/17] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-08-25 10:13   ` [PATCH v2 09/17] common/idpf/base: use local pointer before updating 'CQ out' Simei Su
2023-08-25 10:13   ` [PATCH v2 10/17] common/idpf/base: use 'void' return type Simei Su
2023-08-25 10:13   ` [PATCH v2 11/17] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-08-25 10:13   ` [PATCH v2 12/17] common/idpf/base: refine comments and alignment Simei Su
2023-08-25 10:13   ` [PATCH v2 13/17] common/idpf/base: use GENMASK macro Simei Su
2023-08-25 10:13   ` [PATCH v2 14/17] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-08-25 10:13   ` [PATCH v2 15/17] common/idpf/base: dont declare union with 'flex' Simei Su
2023-08-25 10:13   ` [PATCH v2 16/17] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-08-25 10:13   ` [PATCH v2 17/17] common/idpf/base: update version Simei Su
2023-09-15  2:17   ` [PATCH v3 00/17] update idpf base code Simei Su
2023-09-15  2:17     ` [PATCH v3 01/17] common/idpf/base: enable support for physical port stats Simei Su
2023-09-15  2:17     ` [PATCH v3 02/17] common/idpf/base: add miss completion capabilities Simei Su
2023-09-15  2:17     ` [PATCH v3 03/17] common/idpf/base: initial PTP support Simei Su
2023-09-15  2:17     ` [PATCH v3 04/17] common/idpf/base: remove mailbox registers Simei Su
2023-09-15  2:17     ` [PATCH v3 05/17] common/idpf/base: add some adi specific fields Simei Su
2023-09-15  2:17     ` [PATCH v3 06/17] common/idpf/base: add necessary check Simei Su
2023-09-15  2:17     ` [PATCH v3 07/17] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-09-15  2:17     ` [PATCH v3 08/17] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-09-15  2:17     ` Simei Su [this message]
2023-09-15  2:17     ` [PATCH v3 10/17] common/idpf/base: use 'void' return type Simei Su
2023-09-15  2:17     ` [PATCH v3 11/17] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-09-15  2:17     ` [PATCH v3 12/17] common/idpf/base: refine comments and alignment Simei Su
2023-09-15  2:17     ` [PATCH v3 13/17] common/idpf/base: use GENMASK macro Simei Su
2023-09-15  2:17     ` [PATCH v3 14/17] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-09-15  2:17     ` [PATCH v3 15/17] common/idpf/base: don't declare union with 'flex' Simei Su
2023-09-15  2:17     ` [PATCH v3 16/17] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-15  2:17     ` [PATCH v3 17/17] common/idpf/base: update version Simei Su
2023-09-15  5:44     ` [PATCH v3 00/17] update idpf base code Xing, Beilei
2023-09-18  2:11     ` [PATCH v4 00/18] " Simei Su
2023-09-18  2:11       ` [PATCH v4 01/18] common/idpf: refactor single queue Tx data path Simei Su
2023-09-18  2:11       ` [PATCH v4 02/18] common/idpf/base: enable support for physical port stats Simei Su
2023-09-18  2:11       ` [PATCH v4 03/18] common/idpf/base: add miss completion capabilities Simei Su
2023-09-18  2:11       ` [PATCH v4 04/18] common/idpf/base: initial PTP support Simei Su
2023-09-18  2:11       ` [PATCH v4 05/18] common/idpf/base: remove mailbox registers Simei Su
2023-09-18  2:11       ` [PATCH v4 06/18] common/idpf/base: add some adi specific fields Simei Su
2023-09-18  2:11       ` [PATCH v4 07/18] common/idpf/base: add necessary check Simei Su
2023-09-18  2:11       ` [PATCH v4 08/18] common/idpf/base: add union for SW cookie fields in ctlq msg Simei Su
2023-09-18  2:11       ` [PATCH v4 09/18] common/idpf/base: define non-flexible size structure for ADI Simei Su
2023-09-18  2:11       ` [PATCH v4 10/18] common/idpf/base: use local pointer before updating 'CQ out' Simei Su
2023-09-18  2:11       ` [PATCH v4 11/18] common/idpf/base: use 'void' return type Simei Su
2023-09-18  2:11       ` [PATCH v4 12/18] common/idpf/base: refactor descriptor 'ret val' stripping Simei Su
2023-09-18  2:11       ` [PATCH v4 13/18] common/idpf/base: refine comments and alignment Simei Su
2023-09-18  2:11       ` [PATCH v4 14/18] common/idpf/base: use GENMASK macro Simei Su
2023-09-18  2:11       ` [PATCH v4 15/18] common/idpf/base: use 'type functionname(args)' style Simei Su
2023-09-18  2:11       ` [PATCH v4 16/18] common/idpf/base: don't declare union with 'flex' Simei Su
2023-09-18  2:11       ` [PATCH v4 17/18] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-18  2:11       ` [PATCH v4 18/18] common/idpf/base: update version Simei Su
2023-09-20  6:22       ` [PATCH v5 00/11] update idpf base code Simei Su
2023-09-20  6:22         ` [PATCH v5 01/11] common/idpf: refactor single queue Tx data path Simei Su
2023-09-20  6:22         ` [PATCH v5 02/11] common/idpf/base: enable support for physical port stats Simei Su
2023-09-20  6:22         ` [PATCH v5 03/11] common/idpf/base: add miss completion capabilities Simei Su
2023-09-20  6:22         ` [PATCH v5 04/11] common/idpf/base: initialize PTP support Simei Su
2023-09-20  6:22         ` [PATCH v5 05/11] common/idpf/base: remove mailbox registers Simei Su
2023-09-20  6:22         ` [PATCH v5 06/11] common/idpf/base: refine structure and necessary check Simei Su
2023-09-20  6:22         ` [PATCH v5 07/11] common/idpf/base: add union for SW cookie fields Simei Su
2023-09-20  6:22         ` [PATCH v5 08/11] common/idpf/base: refine code and alignments Simei Su
2023-09-20  6:22         ` [PATCH v5 09/11] common/idpf/base: use GENMASK macro Simei Su
2023-09-20  6:22         ` [PATCH v5 10/11] common/idpf/base: remove unused Tx descriptor types Simei Su
2023-09-20  6:22         ` [PATCH v5 11/11] common/idpf/base: update version Simei Su
2023-09-21  1:21         ` [PATCH v5 00/11] update idpf base code Zhang, Qi Z

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20230915021730.2681882-10-simei.su@intel.com \
    --to=simei.su@intel.com \
    --cc=beilei.xing@intel.com \
    --cc=dev@dpdk.org \
    --cc=jingjing.wu@intel.com \
    --cc=mingxia.liu@intel.com \
    --cc=pavan.kumar.linga@intel.com \
    --cc=qi.z.zhang@intel.com \
    --cc=wenjing.qiao@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).