DPDK patches and discussions
 help / color / mirror / Atom feed
From: Nilanjan Sarkar <nsarkar@sandvine.com>
To: "dev@dpdk.org" <dev@dpdk.org>
Subject: [dpdk-dev] [PATCH] eal: added new api to only enqueue a packet in tx buffer
Date: Thu, 8 Aug 2019 11:17:06 +0000	[thread overview]
Message-ID: <c097dcc9ad9c4b2b8cc1007b55715746@sandvine.com> (raw)

This api is similar like api `rte_eth_tx_buffer` except it
does not attempt to flush the buffer in case buffer is full.
The advantage is that, this api does not need port id and
queue id. In case port id and queue id are shared within threads
then application can not buffer a packet until it gets access
to port and queue. So this function segregate buffering
job from flushing job and thus removes dependency on port and queue.

Signed-off-by: Nilanjan Sarkar <nsarkar@sandvine.com>
---
lib/librte_ethdev/rte_ethdev.h | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index dc6596b..8055928 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -4569,6 +4569,37 @@ rte_eth_tx_buffer(uint16_t port_id, uint16_t queue_id,
        return rte_eth_tx_buffer_flush(port_id, queue_id, buffer);
}

+/**
+ * Buffer a single packet for future transmission on Tx buffer. This buffer
+ * can be sent to a port and queue of a NIC using rte_eth_tx_buffer_flush ()
+ * call.
+ *
+ * This function enqueues a packet to Tx buffer. In case there is no space
+ * in Tx buffer, this function fails.
+ * Tx buffer will be flushed using rte_eth_tx_buffer_flush () call. It is
+ * application's responsibility to flush the Tx buffer in regular interval.
+ *
+ * @param buffer
+ *  Buffer used to collect packets to be sent.
+ * @param tx_pkt
+ *  Pointer to the packet mbuf to be sent.
+ * @return
+ *  0 = packet has been buffered for later transmission
+ *  -1 = Packet can not be buffered since it reached limit
+ */
+
+static __rte_always_inline int8_t
+rte_eth_tx_enqueue(struct rte_eth_dev_tx_buffer *buffer, struct rte_mbuf *tx_pkt)
+{
+       if (buffer->length < buffer->size)
+       {
+               buffer->pkts[buffer->length++] = tx_pkt;
+               return 0;
+       }
+
+       return -1;
+}
+
#ifdef __cplusplus
}
#endif

--
2.7.4

Disclaimer:
This communication (including any attachments) is intended for the use of the intended recipient(s) only and may contain information that is considered confidential, proprietary, sensitive and/or otherwise legally protected. Any unauthorized use or dissemination of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the sender by return e-mail message and delete all copies of the original communication. Thank you for your cooperation.

             reply	other threads:[~2019-08-08 11:17 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-08-08 11:17 Nilanjan Sarkar [this message]
2019-08-08 11:53 Nilanjan Sarkar
2019-08-08 12:28 Nilanjan Sarkar
2019-10-18 16:24 ` Yigit, Ferruh
2019-11-11 16:56   ` Ferruh Yigit
2019-11-11 17:30     ` Thomas Monjalon
2019-11-12  7:17       ` Andrew Rybchenko
2019-08-21  5:59 Nilanjan Sarkar

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=c097dcc9ad9c4b2b8cc1007b55715746@sandvine.com \
    --to=nsarkar@sandvine.com \
    --cc=dev@dpdk.org \
    /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).