All of lore.kernel.org
 help / color / mirror / Atom feed
From: Reshma Pattan <reshma.pattan@intel.com>
To: dev@dpdk.org
Cc: Reshma Pattan <reshma.pattan@intel.com>
Subject: [PATCH v4 2/9] librte_ether: add new api rte_eth_add_first_rx_callback
Date: Mon, 23 May 2016 22:38:25 +0100	[thread overview]
Message-ID: <1464039512-2683-3-git-send-email-reshma.pattan@intel.com> (raw)
In-Reply-To: <1464039512-2683-1-git-send-email-reshma.pattan@intel.com>

Added new public api rte_eth_add_first_rx_callback to add given
callback as head of list.

Signed-off-by: Reshma Pattan <reshma.pattan@intel.com>
---
 lib/librte_ether/rte_ethdev.c          | 35 ++++++++++++++++++++++++++++++++++
 lib/librte_ether/rte_ethdev.h          | 27 ++++++++++++++++++++++++++
 lib/librte_ether/rte_ether_version.map |  6 ++++++
 3 files changed, 68 insertions(+)

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index cf25d8a..6331759 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -2959,6 +2959,41 @@ rte_eth_add_rx_callback(uint8_t port_id, uint16_t queue_id,
 }
 
 void *
+rte_eth_add_first_rx_callback(uint8_t port_id, uint16_t queue_id,
+		rte_rx_callback_fn fn, void *user_param)
+{
+#ifndef RTE_ETHDEV_RXTX_CALLBACKS
+	rte_errno = ENOTSUP;
+	return NULL;
+#endif
+	/* check input parameters */
+	if (!rte_eth_dev_is_valid_port(port_id) || fn == NULL ||
+			queue_id >= rte_eth_devices[port_id].data->nb_rx_queues) {
+		rte_errno = EINVAL;
+		return NULL;
+	}
+
+	struct rte_eth_rxtx_callback *cb = rte_zmalloc(NULL, sizeof(*cb), 0);
+
+	if (cb == NULL) {
+		rte_errno = ENOMEM;
+		return NULL;
+	}
+
+	cb->fn.rx = fn;
+	cb->param = user_param;
+
+	rte_spinlock_lock(&rte_eth_rx_cb_lock);
+	/* Add the callbacks at fisrt position*/
+	cb->next = rte_eth_devices[port_id].post_rx_burst_cbs[queue_id];
+	rte_smp_wmb();
+	rte_eth_devices[port_id].post_rx_burst_cbs[queue_id] = cb;
+	rte_spinlock_unlock(&rte_eth_rx_cb_lock);
+
+	return cb;
+}
+
+void *
 rte_eth_add_tx_callback(uint8_t port_id, uint16_t queue_id,
 		rte_tx_callback_fn fn, void *user_param)
 {
diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h
index 2757510..92b07a9 100644
--- a/lib/librte_ether/rte_ethdev.h
+++ b/lib/librte_ether/rte_ethdev.h
@@ -3825,6 +3825,33 @@ int rte_eth_dev_get_dcb_info(uint8_t port_id,
 void *rte_eth_add_rx_callback(uint8_t port_id, uint16_t queue_id,
 		rte_rx_callback_fn fn, void *user_param);
 
+/*
+* Add a callback that must be called first on packet RX on a given port and queue.
+*
+* This API configures a first function to be called for each burst of
+* packets received on a given NIC port queue. The return value is a pointer
+* that can be used to later remove the callback using
+* rte_eth_remove_rx_callback().
+*
+* Multiple functions are called in the order that they are added.
+*
+* @param port_id
+*   The port identifier of the Ethernet device.
+* @param queue_id
+*   The queue on the Ethernet device on which the callback is to be added.
+* @param fn
+*   The callback function
+* @param user_param
+*   A generic pointer parameter which will be passed to each invocation of the
+*   callback function on this port and queue.
+*
+* @return
+*   NULL on error.
+*   On success, a pointer value which can later be used to remove the callback.
+*/
+void *rte_eth_add_first_rx_callback(uint8_t port_id, uint16_t queue_id,
+		rte_rx_callback_fn fn, void *user_param);
+
 /**
  * Add a callback to be called on packet TX on a given port and queue.
  *
diff --git a/lib/librte_ether/rte_ether_version.map b/lib/librte_ether/rte_ether_version.map
index 214ecc7..c990b04 100644
--- a/lib/librte_ether/rte_ether_version.map
+++ b/lib/librte_ether/rte_ether_version.map
@@ -132,3 +132,9 @@ DPDK_16.04 {
 	rte_eth_tx_buffer_set_err_callback;
 
 } DPDK_2.2;
+
+DPDK_16.07 {
+	global:
+
+	rte_eth_add_first_rx_callback;
+} DPDK_16.04;
-- 
2.5.0

  parent reply	other threads:[~2016-05-23 21:47 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-05-06 10:55 [PATCH 0/5] add packet capture framework Reshma Pattan
2016-05-06 10:55 ` [PATCH 1/5] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-05-06 10:55 ` [PATCH 2/5] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-05-06 10:55 ` [PATCH 3/5] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-05-06 10:55 ` [PATCH 4/5] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-05-06 10:55 ` [PATCH 5/5] doc: update doc for packet capture framework Reshma Pattan
2016-05-10  9:39 ` [PATCHv2 0/5] add " Reshma Pattan
2016-05-10  9:39   ` [PATCHv2 1/5] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-05-10  9:39   ` [PATCHv2 2/5] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-05-10  9:40   ` [PATCHv2 3/5] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-05-10  9:40   ` [PATCHv2 4/5] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-05-10  9:40   ` [PATCHv2 5/5] doc: update doc for packet capture framework Reshma Pattan
2016-05-10 10:13   ` [PATCHv2 0/5] add " Remy Horton
2016-05-17 16:37   ` [PATCH v3 0/8] " Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 1/8] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 2/8] librte_ether: add new api rte_eth_add_first_rx_callback Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 3/8] librte_ether: add new fields to rte_eth_dev_info struct Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 4/8] librte_ether: make rte_eth_dev_get_port_by_name api public Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 5/8] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 6/8] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 7/8] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-05-17 16:37     ` [PATCH v3 8/8] doc: update doc for packet capture framework Reshma Pattan
2016-05-23 21:38     ` [PATCH v4 0/9] add " Reshma Pattan
2016-05-23 21:38       ` [PATCH v4 1/9] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-05-23 21:38       ` Reshma Pattan [this message]
2016-05-23 21:38       ` [PATCH v4 3/9] librte_ether: add new fields to rte_eth_dev_info struct Reshma Pattan
2016-05-23 22:24         ` Stephen Hemminger
2016-05-24  8:09           ` Pattan, Reshma
2016-05-23 21:38       ` [PATCH v4 4/9] librte_ether: make rte_eth_dev_get_port_by_name api public Reshma Pattan
2016-05-23 21:38       ` [PATCH v4 5/9] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-05-27 13:39         ` Ananyev, Konstantin
2016-05-27 14:54           ` Pattan, Reshma
2016-05-27 15:25             ` Ananyev, Konstantin
2016-05-31 14:55               ` Pattan, Reshma
2016-05-31 15:00           ` Pattan, Reshma
2016-05-23 21:38       ` [PATCH v4 6/9] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-05-27 15:21         ` Ananyev, Konstantin
2016-05-31 14:50           ` Pattan, Reshma
2016-05-31 17:21             ` Ananyev, Konstantin
2016-06-02 12:31               ` Pattan, Reshma
2016-06-02 14:22                 ` Ananyev, Konstantin
2016-05-23 21:38       ` [PATCH v4 7/9] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-05-23 21:38       ` [PATCH v4 8/9] doc: update doc for packet capture framework Reshma Pattan
2016-05-23 21:38       ` [PATCH v4 9/9] doc: announce ABI change for rte_eth_dev_info structure Reshma Pattan
2016-05-26  8:15       ` [PATCH v4 0/9] add packet capture framework Thomas Monjalon
2016-06-08 13:38       ` [PATCH v5 " Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 1/9] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 2/9] librte_ether: add new api rte_eth_add_first_rx_callback Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 3/9] librte_ether: add new fields to rte_eth_dev_info struct Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 4/9] librte_ether: make rte_eth_dev_get_port_by_name rte_eth_dev_get_name_by_port public Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 5/9] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 6/9] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 7/9] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-06-08 13:38         ` [PATCH v5 8/9] doc: update doc for packet capture framework Reshma Pattan
2016-06-08 16:02           ` Mcnamara, John
2016-06-08 13:38         ` [PATCH v5 9/9] doc: announce ABI change for rte_eth_dev_info structure Reshma Pattan
2016-06-08 16:15           ` Mcnamara, John
2016-06-09  8:50         ` [PATCH v6 0/8] add packet capture framework Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 1/8] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 2/8] librte_ether: add new api rte_eth_add_first_rx_callback Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 3/8] librte_ether: add new fields to rte_eth_dev_info struct Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 4/8] librte_ether: make rte_eth_dev_get_port_by_name rte_eth_dev_get_name_by_port public Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 5/8] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-06-09 15:59             ` Aaron Conole
2016-06-09 16:05               ` Ananyev, Konstantin
2016-06-09 17:23                 ` Aaron Conole
2016-06-09 19:32                   ` Ananyev, Konstantin
2016-06-09 19:56                     ` Aaron Conole
2016-06-10 16:22               ` Pattan, Reshma
2016-06-09  8:50           ` [PATCH v6 6/8] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 7/8] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-06-09  8:50           ` [PATCH v6 8/8] doc: update doc for packet capture framework Reshma Pattan
2016-06-09 16:10           ` [PATCH v7 0/8] add " Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 1/8] librte_ether: protect add/remove of rxtx callbacks with spinlocks Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 2/8] librte_ether: add new api rte_eth_add_first_rx_callback Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 3/8] librte_ether: add new fields to rte_eth_dev_info struct Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 4/8] librte_ether: make rte_eth_dev_get_port_by_name rte_eth_dev_get_name_by_port public Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 5/8] lib/librte_pdump: add new library for packet capturing support Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 6/8] app/pdump: add pdump tool for packet capturing Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 7/8] app/test-pmd: add pdump initialization uninitialization Reshma Pattan
2016-06-09 16:10             ` [PATCH v7 8/8] doc: update doc for packet capture framework Reshma Pattan
2016-06-09 17:34             ` [PATCH v7 0/8] add " Ananyev, Konstantin

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=1464039512-2683-3-git-send-email-reshma.pattan@intel.com \
    --to=reshma.pattan@intel.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.