DPDK patches and discussions
 help / color / mirror / Atom feed
From: <shaibran@amazon.com>
To: <ferruh.yigit@amd.com>
Cc: <dev@dpdk.org>, Shai Brandes <shaibran@amazon.com>
Subject: [PATCH 20/33] net/ena/hal: check for existing keep alive notification
Date: Mon, 4 Mar 2024 11:01:23 +0200	[thread overview]
Message-ID: <20240304090136.861-21-shaibran@amazon.com> (raw)
In-Reply-To: <20240304090136.861-1-shaibran@amazon.com>

From: Shai Brandes <shaibran@amazon.com>

This commit adds an API to query the aenq on whether
there is a pending keep alive notification.

Signed-off-by: Shai Brandes <shaibran@amazon.com>
Reviewed-by: Amit Bernstein <amitbern@amazon.com>
---
 drivers/net/ena/hal/ena_com.c | 39 +++++++++++++++++++++++++++++++++++
 drivers/net/ena/hal/ena_com.h | 10 +++++++++
 2 files changed, 49 insertions(+)

diff --git a/drivers/net/ena/hal/ena_com.c b/drivers/net/ena/hal/ena_com.c
index 0d1f4dd715..7a23881667 100644
--- a/drivers/net/ena/hal/ena_com.c
+++ b/drivers/net/ena/hal/ena_com.c
@@ -2456,6 +2456,45 @@ void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data)
 	mmiowb();
 }
 
+bool ena_com_aenq_has_keep_alive(struct ena_com_dev *ena_dev)
+{
+	struct ena_admin_aenq_common_desc *aenq_common;
+	struct ena_com_aenq *aenq = &ena_dev->aenq;
+	struct ena_admin_aenq_entry *aenq_e;
+	u8 phase = aenq->phase;
+	u16 masked_head;
+
+	masked_head = aenq->head & (aenq->q_depth - 1);
+	aenq_e = &aenq->entries[masked_head]; /* Get first entry */
+	aenq_common = &aenq_e->aenq_common_desc;
+
+	/* Go over all the events */
+	while ((READ_ONCE8(aenq_common->flags) &
+		ENA_ADMIN_AENQ_COMMON_DESC_PHASE_MASK) == phase) {
+		/* Make sure the device finished writing the rest of the descriptor
+		 * before reading it.
+		 */
+		dma_rmb();
+
+		if (aenq_common->group == ENA_ADMIN_KEEP_ALIVE)
+			return true;
+
+		/* Get next event entry */
+		masked_head++;
+
+		if (unlikely(masked_head == aenq->q_depth)) {
+			masked_head = 0;
+			phase = !phase;
+		}
+
+		aenq_e = &aenq->entries[masked_head];
+		aenq_common = &aenq_e->aenq_common_desc;
+	}
+
+	return false;
+}
+
+
 int ena_com_dev_reset(struct ena_com_dev *ena_dev,
 		      enum ena_regs_reset_reason_types reset_reason)
 {
diff --git a/drivers/net/ena/hal/ena_com.h b/drivers/net/ena/hal/ena_com.h
index c999cd2381..737747f64b 100644
--- a/drivers/net/ena/hal/ena_com.h
+++ b/drivers/net/ena/hal/ena_com.h
@@ -639,6 +639,16 @@ void ena_com_admin_q_comp_intr_handler(struct ena_com_dev *ena_dev);
  */
 void ena_com_aenq_intr_handler(struct ena_com_dev *ena_dev, void *data);
 
+/* ena_com_aenq_has_keep_alive - Retrieve if there is a keep alive notification in the aenq
+ * @ena_dev: ENA communication layer struct
+ *
+ * This method goes over the async event notification queue and returns if there
+ * is a keep alive notification.
+ *
+ * @return - true if there is a keep alive notification in the aenq or false otherwise
+ */
+bool ena_com_aenq_has_keep_alive(struct ena_com_dev *ena_dev);
+
 /* ena_com_abort_admin_commands - Abort all the outstanding admin commands.
  * @ena_dev: ENA communication layer struct
  *
-- 
2.17.1


  parent reply	other threads:[~2024-03-04  9:05 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-04  9:01 [PATCH 00/33] net/ena: v2.9.0 driver release shaibran
2024-03-04  9:01 ` [PATCH 01/33] net/ena: rework the metrics multi-process functions shaibran
2024-03-04  9:01 ` [PATCH 02/33] net/ena: report new supported link speed capabilities shaibran
2024-03-04  9:01 ` [PATCH 03/33] net/ena: update imissed stat with Rx overruns shaibran
2024-03-04  9:01 ` [PATCH 04/33] net/ena: sub-optimal configuration notifications support shaibran
2024-03-04  9:01 ` [PATCH 05/33] net/ena: fix fast mbuf free shaibran
2024-03-04  9:01 ` [PATCH 06/33] net/ena: rename base folder to hal shaibran
2024-03-04  9:01 ` [PATCH 07/33] net/ena: restructure the llq policy setting process shaibran
2024-03-04  9:01 ` [PATCH 08/33] net/ena/hal: exponential backoff exp limit shaibran
2024-03-04  9:01 ` [PATCH 09/33] net/ena/hal: add a new csum offload bit shaibran
2024-03-04  9:01 ` [PATCH 10/33] net/ena/hal: added a bus parameter to ena memcpy macro shaibran
2024-03-04  9:01 ` [PATCH 11/33] net/ena/hal: optimize Rx ring submission queue shaibran
2024-03-04  9:01 ` [PATCH 12/33] net/ena/hal: rename fields in completion descriptors shaibran
2024-03-04  9:01 ` [PATCH 13/33] net/ena/hal: use correct read once on u8 field shaibran
2024-03-04  9:01 ` [PATCH 14/33] net/ena/hal: add completion descriptor corruption check shaibran
2024-03-04  9:01 ` [PATCH 15/33] net/ena/hal: malformed Tx descriptor error reason shaibran
2024-03-04  9:01 ` [PATCH 16/33] net/ena/hal: phc feature modifications shaibran
2024-03-04  9:01 ` [PATCH 17/33] net/ena/hal: restructure interrupt handling shaibran
2024-03-04  9:01 ` [PATCH 18/33] net/ena/hal: add unlikely to error checks shaibran
2024-03-04  9:01 ` [PATCH 19/33] net/ena/hal: missing admin interrupt reset reason shaibran
2024-03-04  9:01 ` shaibran [this message]
2024-03-04  9:01 ` [PATCH 21/33] net/ena/hal: modify memory barrier comment shaibran
2024-03-04  9:01 ` [PATCH 22/33] net/ena/hal: rework Rx ring submission queue shaibran
2024-03-04  9:01 ` [PATCH 23/33] net/ena/hal: remove operating system type enum shaibran
2024-03-04  9:01 ` [PATCH 24/33] net/ena/hal: handle command abort shaibran
2024-03-04  9:01 ` [PATCH 25/33] net/ena/hal: add support for device reset request shaibran
2024-03-04  9:01 ` [PATCH 26/33] net/ena: cosmetic changes shaibran
2024-03-04  9:01 ` [PATCH 27/33] net/ena/hal: modify customer metrics memory management shaibran
2024-03-04  9:01 ` [PATCH 28/33] net/ena/hal: cosmetic changes shaibran
2024-03-04  9:01 ` [PATCH 29/33] net/ena: update device-preferred size of rings shaibran
2024-03-04  9:01 ` [PATCH 30/33] net/ena: exhaust interrupt callbacks in device close shaibran
2024-03-04  9:01 ` [PATCH 31/33] net/ena: support max large llq depth from the device shaibran
2024-03-04  9:01 ` [PATCH 32/33] net/ena: control path pure polling mode shaibran
2024-03-04  9:01 ` [PATCH 33/33] net/ena: upgrade driver version to 2.9.0 shaibran

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=20240304090136.861-21-shaibran@amazon.com \
    --to=shaibran@amazon.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@amd.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).