[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <063D6719AE5E284EB5DD2968C1650D6D174C5C35@AcuExch.aculab.com>
Date: Tue, 7 Oct 2014 09:27:03 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Willem de Bruijn' <willemb@...gle.com>,
John Fastabend <john.fastabend@...il.com>
CC: Daniel Borkmann <dborkman@...hat.com>,
Florian Westphal <fw@...len.de>,
"gerlitz.or@...il.com" <gerlitz.or@...il.com>,
Hannes Frederic Sowa <hannes@...essinduktion.org>,
Network Development <netdev@...r.kernel.org>,
"john.ronciak@...el.com" <john.ronciak@...el.com>,
Amir Vadai <amirv@...lanox.com>,
Eric Dumazet <eric.dumazet@...il.com>,
"danny.zhou@...el.com" <danny.zhou@...el.com>
Subject: RE: [net-next PATCH v1 1/3] net: sched: af_packet support for
direct ring access
From: Willem de Bruijn
...
> When keeping the kernel in the loop, it is possible to do
> some basic sanity checking and transparently translate between
> vaddr and paddr, even when exposing the hardware descriptors
> directly.
The application could change the addresses after they have been
validated, but before they have been read by the device.
> Though at this point it may be just as cheap to expose
> an idealized virtualized descriptor format and copy fields between
> that and device descriptors.
That is (probably) the only scheme that stops the application
accessing random parts of physical memory.
> One assumption underlying exposing the hardware descriptors
> is that they are quire similar between devices. How true is this
> in the context of formats that span multiple descriptors?
I suspect you'd need to define complete ring entries for 'initial',
'middle', 'final' and 'complete' fragments, together with the
offsets and endianness (and size?) of the address and data fields.
Also whether there is a special 'last entry' in the ring.
Passing checksum offload flags through adds an extra level of complexity.
Rings like the xhci (actually USB, but could contain ethernet data)
require the 'owner' bit be written odd or even in alternating passes.
Actually mapping support for usbnet (especially xhci - usb3) might show
up some deficiencies in the definition.
You also need to know when transmits have completed.
This might be an 'owner' bit being cleared, but could be signalled
in an entirely different way.
David
Powered by blists - more mailing lists