From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: "Van Haaren, Harry" <harry.van.haaren@intel.com>
Cc: "Vangati, Narender" <narender.vangati@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>, "Eads, Gage" <gage.eads@intel.com>
Subject: Re: [dpdk-dev] [RFC] [PATCH v2] libeventdev: event driven programming model framework for DPDK
Date: Wed, 2 Nov 2016 13:36:34 +0530 [thread overview]
Message-ID: <20161102080632.GA21820@localhost.localdomain> (raw)
In-Reply-To: <E923DB57A917B54B9182A2E928D00FA6129AE01B@IRSMSX102.ger.corp.intel.com>
On Fri, Oct 28, 2016 at 01:48:57PM +0000, Van Haaren, Harry wrote:
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jerin Jacob
> > Sent: Tuesday, October 25, 2016 6:49 PM
> <snip>
> >
> > Hi Community,
> >
> > So far, I have received constructive feedback from Intel, NXP and Linaro folks.
> > Let me know, if anyone else interested in contributing to the definition of eventdev?
> >
> > If there are no major issues in proposed spec, then Cavium would like work on
> > implementing and up-streaming the common code(lib/librte_eventdev/) and
> > an associated HW driver.(Requested minor changes of v2 will be addressed
> > in next version).
>
>
> Hi All,
>
> I've been looking at the eventdev API from a use-case point of view, and I'm unclear on a how the API caters for two uses. I have simplified these as much as possible, think of them as a theoretical unit-test for the API :)
>
>
> Fragmentation:
> 1. Dequeue 8 packets
> 2. Process 2 packets
> 3. Processing 3rd, this packet needs fragmentation into two packets
> 4. Process remaining 5 packets as normal
>
> What function calls does the application make to achieve this?
> In particular, I'm referring to how can the scheduler know that the 3rd packet is the one being fragmented, and how to keep packet order valid.
>
OK. I will try to share my views on IP fragmentation on event _HW_
models(at least on Cavium HW) then we can see, how we can converge.
First, The fragmentation specific logic should be decoupled from the event
model as it specific to packet and L3 layer(Not specific to generic event)
Now, let us consider the fragmentation handling with non-burst case and single flow.
The following text outlines the event flow
a)Setup an event device with single event queue
b)Link multiple ports to single event queue
c)Event producer enqueues p0..p7 packets to event queue with ORDERED
type.(let's assume p2 packet needs to be fragmented i.e application
needs to create p2.0 and p2.1 from p2)
d)Since it is an ORDERED type, p0 to p7 packets are distributed to multiple
ports in parallel(assigned to each lcore or lightweight thread)
e) each lcore/lightweight thread get the packet from designated event port
and process them in parallel and enqueue back to ATOMIC type to maintain
ordering
f)The one lcore dequeues the p2 packet, understands it needs to be
fragmented due to MTU size etc. So it calls rte_ipv4_fragment_packet()
and store the fragmented packet p2.0 and p2.1 in private area of p2 mbuf.
and as usual like other workers, it enqueues p2 to atomic queue for maintaining
the order.
g)On the atomic flow, when lcore dequeues packets, then it comes in order p0..p7.
The application sends p0 to p7 on the wire. When application checks the p2 mbuf
private area it understands it is fragmented and then sends p2.0 and p2.1
on the wire.
OR
skip the fragmentation step in (f) and in step (g),
while processing the p2, run over rte_ipv4_fragment_packet() and split the packet
and transmit the packets(in case application don't want to deal with mbuf private area)
Now, When it comes to BURST scheme. We are planning to create a SW
structure as a virtual event port and associate N (N=rte_event_port_dequeue_depth())
physical HW event ports to the virtual port.
That way, it just come as an extension to non burst API and on the
release call have explicit "index" and identify the physical event port
associated with the virtual port.
/Jerin
>
> Dropping packets:
> 1. Dequeue 8 packets
> 2. Process 2 packets
> 3. Processing 3rd, this packet needs to be dropped
> 4. Process remaining 5 packets as normal
>
> What function calls does the application make to achieve this?
> Again, in particular how does the scheduler know that the 3rd packet is being dropped.
rte_event_release(..,..,3)??
>
>
> Regards, -Harry
next prev parent reply other threads:[~2016-11-02 8:06 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-10-04 21:49 [dpdk-dev] [RFC] " Vangati, Narender
2016-10-05 7:24 ` Jerin Jacob
2016-10-07 10:40 ` Hemant Agrawal
2016-10-09 8:27 ` Jerin Jacob
2016-10-11 19:30 ` [dpdk-dev] [RFC] [PATCH v2] " Jerin Jacob
2016-10-14 4:14 ` Bill Fischofer
2016-10-14 9:26 ` Jerin Jacob
2016-10-14 10:30 ` Hemant Agrawal
2016-10-14 12:52 ` Jerin Jacob
2016-10-14 15:00 ` Eads, Gage
2016-10-17 4:18 ` Jerin Jacob
2016-10-17 20:26 ` Eads, Gage
2016-10-18 11:19 ` Jerin Jacob
2016-10-14 16:02 ` Bruce Richardson
2016-10-17 5:10 ` Jerin Jacob
2016-10-25 17:49 ` Jerin Jacob
2016-10-26 12:11 ` Van Haaren, Harry
2016-10-26 12:24 ` Jerin Jacob
2016-10-26 12:54 ` Bruce Richardson
2016-10-28 3:01 ` Jerin Jacob
2016-10-28 8:36 ` Bruce Richardson
2016-10-28 9:06 ` Jerin Jacob
2016-11-02 11:25 ` Jerin Jacob
2016-11-02 11:35 ` Bruce Richardson
2016-11-02 13:09 ` Jerin Jacob
2016-11-02 13:56 ` Bruce Richardson
2016-11-02 14:54 ` Jerin Jacob
2016-10-26 18:37 ` Vincent Jardin
2016-10-28 13:10 ` Van Haaren, Harry
2016-11-02 10:47 ` Jerin Jacob
2016-11-02 11:45 ` Bruce Richardson
2016-11-02 12:34 ` Jerin Jacob
2016-10-26 12:43 ` Bruce Richardson
2016-10-26 17:30 ` Jerin Jacob
2016-10-28 13:48 ` Van Haaren, Harry
2016-10-28 14:16 ` Bruce Richardson
2016-11-02 8:59 ` Jerin Jacob
2016-11-02 8:06 ` Jerin Jacob [this message]
2016-11-02 11:48 ` Bruce Richardson
2016-11-02 12:57 ` Jerin Jacob
2016-10-14 15:00 Francois Ozog
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=20161102080632.GA21820@localhost.localdomain \
--to=jerin.jacob@caviumnetworks.com \
--cc=dev@dpdk.org \
--cc=gage.eads@intel.com \
--cc=harry.van.haaren@intel.com \
--cc=narender.vangati@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).