From: Bruce Richardson <bruce.richardson@intel.com>
To: Vithal S Mohare <vmohare@arubanetworks.com>
Cc: "dev@dpdk.org" <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH RFC 0/3] DPDK ethdev callback support
Date: Tue, 23 Dec 2014 09:30:15 +0000 [thread overview]
Message-ID: <20141223093015.GD10244@bricha3-MOBL3> (raw)
In-Reply-To: <98DB008FA2AC6644B40AD8C766FAB271014BDE376A@BOREAL.arubanetworks.com>
On Tue, Dec 23, 2014 at 04:23:21AM +0000, Vithal S Mohare wrote:
> Hi Bruce,
>
> <snip>
> For example, for a port type that does not support RSS, a callback on RX can be configured to calculate a hash in software.
> </snip>
>
> Wondering if this callback will also be useful to bridge the gap of no RSS support for L2 packets. i.e. in the rx call-back handler, can applications calculate hash and feed it back so that spraying happens based on this? Now, all pure L2 packets (e.g. arp pkts) comes to rx-q 0 of the 'port'. Adding callback to [port][rx-q:0] would help?
>
> Thanks,
> -Vithal
Yes, that could work. The downside is that it is no faster than having an
app do the calculation itself, it's just perhaps a little easier to work with
in the app.
/Bruce
>
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Bruce Richardson
> Sent: Monday, December 22, 2014 10:17 PM
> To: dev@dpdk.org
> Subject: [dpdk-dev] [PATCH RFC 0/3] DPDK ethdev callback support
>
> This RFC is for a small addition to the ethdev library, to add in support for callbacks at the RX and TX stages. This allows packet processing to be done on packets before they get returned to applications using rte_eth_rx_burst call.
>
> Use case: the first use case for this is to enable a consistent set of packets mbufs to be received by applications irrespective of the NIC used to receive those. For example, for a port type that does not support RSS, a callback on RX can be configured to calculate a hash in software.
> Similarly, this mechanism can be used to add other information to mbufs as they are received, such as timestamps or sequence numbers, without cluttering up the main packet processing path with checks for whether packets have these fields filled in or not.
> A second use case is ease of intrumenting existing code. The example application shows how combining a timestamp insertion callback on RX can be paired with a latency calculation callback on TX to easily instrument any application for packet latency.
> A third use case is to potentially extend existing NIC capabilities beyond what is currently supported. For example, where flow director capabilities can match up to a certain limit of flows - in the thousands, in the case of NICs using the ixgbe driver - a callback can extend this to potentially millions of flows by using a software hash table lookup inline for packets that missing the hardware lookup filters. It would all appear transparent to the packet handling code in the main application.
>
> Future extensions: in future the ethdev library can be extended to provide a standard set of callbacks for use by drivers.
>
> For now this patch set is RFC and still needs additional work for creating a remove function for callbacks and to add in additional testing code.
> Since this adds in new code into the critical data path, I have run some performance tests using testpmd with the ixgbe vector drivers (i.e. the fastest, fast-path we have :-) ). Performance drops due to this patch seems minimal to non-existant, rough tests on my system indicate a drop of perhaps 1%.
>
> All feedback welcome.
>
> Bruce Richardson (3):
> ethdev: rename callbacks field to intr_cbs
> ethdev: Add in data rxtx callback support
> examples: example showing use of callbacks.
>
> app/test/virtual_pmd.c | 2 +-
> examples/rxtx_callbacks/Makefile | 57 +++++++++
> examples/rxtx_callbacks/basicfwd.c | 222 +++++++++++++++++++++++++++++++++
> examples/rxtx_callbacks/basicfwd.h | 46 +++++++
> lib/librte_ether/rte_ethdev.c | 103 +++++++++++++--
> lib/librte_ether/rte_ethdev.h | 125 ++++++++++++++++++-
> lib/librte_pmd_bond/rte_eth_bond_api.c | 2 +-
> 7 files changed, 543 insertions(+), 14 deletions(-) create mode 100644 examples/rxtx_callbacks/Makefile create mode 100644 examples/rxtx_callbacks/basicfwd.c
> create mode 100644 examples/rxtx_callbacks/basicfwd.h
>
> --
> 1.9.3
>
next prev parent reply other threads:[~2014-12-23 9:30 UTC|newest]
Thread overview: 73+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-12-22 16:47 Bruce Richardson
2014-12-22 16:47 ` [dpdk-dev] [PATCH RFC 1/3] ethdev: rename callbacks field to intr_cbs Bruce Richardson
2014-12-22 16:47 ` [dpdk-dev] [PATCH RFC 2/3] ethdev: Add in data rxtx callback support Bruce Richardson
2014-12-22 16:47 ` [dpdk-dev] [PATCH RFC 3/3] examples: example showing use of callbacks Bruce Richardson
2014-12-22 17:02 ` [dpdk-dev] [PATCH RFC 0/3] DPDK ethdev callback support Thomas Monjalon
2014-12-22 17:33 ` Bruce Richardson
2014-12-22 17:47 ` Neil Horman
2014-12-23 9:28 ` Bruce Richardson
2014-12-23 13:09 ` Neil Horman
2014-12-23 14:09 ` Bruce Richardson
2015-01-05 16:17 ` Bruce Richardson
2014-12-22 18:31 ` Stephen Hemminger
2014-12-23 9:29 ` Bruce Richardson
2014-12-23 4:23 ` Vithal S Mohare
2014-12-23 9:30 ` Bruce Richardson [this message]
2014-12-23 9:37 ` Vithal S Mohare
2014-12-24 1:43 ` Zhang, Helin
2014-12-24 5:06 ` Qiu, Michael
2015-02-12 19:57 ` [dpdk-dev] [PATCH " John McNamara
2015-02-12 19:57 ` [dpdk-dev] [PATCH 1/3] ethdev: rename callbacks field to intr_cbs John McNamara
2015-02-12 19:57 ` [dpdk-dev] [PATCH 2/3] ethdev: Add in data rxtx callback support John McNamara
2015-02-12 21:12 ` Neil Horman
2015-02-12 19:57 ` [dpdk-dev] [PATCH 3/3] examples: example showing use of callbacks John McNamara
2015-02-13 14:54 ` [dpdk-dev] [PATCH 0/3] DPDK ethdev callback support Declan Doherty
2015-02-13 15:39 ` [dpdk-dev] [PATCH v2 0/4] " John McNamara
2015-02-13 15:39 ` [dpdk-dev] [PATCH v2 1/4] ethdev: rename callbacks field to intr_cbs John McNamara
2015-02-13 16:06 ` Thomas Monjalon
2015-02-13 16:52 ` Thomas Monjalon
2015-02-13 15:39 ` [dpdk-dev] [PATCH v2 2/4] ethdev: Add in data rxtx callback support John McNamara
2015-02-13 16:33 ` Thomas Monjalon
2015-02-13 17:49 ` Bruce Richardson
2015-02-13 15:39 ` [dpdk-dev] [PATCH v2 3/4] examples: example showing use of callbacks John McNamara
2015-02-13 16:02 ` Thomas Monjalon
2015-02-16 14:33 ` Olivier MATZ
2015-02-16 15:16 ` Bruce Richardson
2015-02-16 17:34 ` Thomas Monjalon
2015-02-17 12:17 ` Declan Doherty
2015-02-17 12:25 ` Bruce Richardson
2015-02-17 13:28 ` Olivier MATZ
2015-02-17 13:50 ` Bruce Richardson
2015-02-17 15:49 ` Neil Horman
2015-02-17 16:00 ` Bruce Richardson
2015-02-17 16:08 ` Neil Horman
2015-02-17 16:15 ` Bruce Richardson
2015-02-17 19:27 ` Neil Horman
2015-02-17 15:32 ` Thomas Monjalon
2015-02-17 15:58 ` Bruce Richardson
2015-02-13 15:39 ` [dpdk-dev] [PATCH v2 4/4] abi: Added rxtx callback functions to ABI versioning John McNamara
2015-02-13 15:59 ` Thomas Monjalon
2015-02-13 15:48 ` [dpdk-dev] [PATCH v2 0/4] DPDK ethdev callback support Declan Doherty
2015-02-18 17:42 ` [dpdk-dev] [PATCH v3 0/3] " John McNamara
2015-02-18 17:42 ` [dpdk-dev] [PATCH v3 1/3] ethdev: Rename callbacks field to link_intr_cbs John McNamara
2015-02-18 17:42 ` [dpdk-dev] [PATCH v3 2/3] ethdev: Add rxtx callback support John McNamara
2015-02-18 18:19 ` Thomas Monjalon
2015-02-19 9:33 ` Mcnamara, John
2015-02-18 17:42 ` [dpdk-dev] [PATCH v3 3/3] examples: example showing use of callbacks John McNamara
2015-02-19 17:56 ` [dpdk-dev] [PATCH v4 0/3] DPDK ethdev callback support John McNamara
2015-02-19 17:56 ` [dpdk-dev] [PATCH v4 1/3] ethdev: rename callbacks field to link_intr_cbs John McNamara
2015-02-19 17:56 ` [dpdk-dev] [PATCH v4 2/3] ethdev: add optional rxtx callback support John McNamara
2015-02-20 10:06 ` Bruce Richardson
2015-02-20 10:31 ` Thomas Monjalon
2015-02-19 17:56 ` [dpdk-dev] [PATCH v4 3/3] examples: example showing use of callbacks John McNamara
2015-02-20 17:03 ` [dpdk-dev] [PATCH v5 0/3] DPDK ethdev callback support John McNamara
2015-02-20 17:03 ` [dpdk-dev] [PATCH v5 1/3] ethdev: rename callbacks field to link_intr_cbs John McNamara
2015-02-20 17:03 ` [dpdk-dev] [PATCH v5 2/3] ethdev: add optional rxtx callback support John McNamara
2015-02-23 15:11 ` Thomas Monjalon
2015-02-23 17:27 ` Mcnamara, John
2015-02-20 17:03 ` [dpdk-dev] [PATCH v5 3/3] examples: example showing use of callbacks John McNamara
2015-02-23 18:30 ` [dpdk-dev] [PATCH v6 0/3] DPDK ethdev callback support John McNamara
2015-02-23 18:30 ` [dpdk-dev] [PATCH v6 1/3] ethdev: rename callbacks field to link_intr_cbs John McNamara
2015-02-23 18:30 ` [dpdk-dev] [PATCH v6 2/3] ethdev: add optional rxtx callback support John McNamara
2015-02-23 18:30 ` [dpdk-dev] [PATCH v6 3/3] examples: example showing use of callbacks John McNamara
2015-02-23 23:39 ` [dpdk-dev] [PATCH v6 0/3] DPDK ethdev callback support Thomas Monjalon
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=20141223093015.GD10244@bricha3-MOBL3 \
--to=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=vmohare@arubanetworks.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).