[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY
From: |
Jared Grubb |
Subject: |
[lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY |
Date: |
Fri, 10 Aug 2007 15:20:04 +0000 |
User-agent: |
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6 |
Follow-up Comment #22, task #6735 (project lwip):
> But that would mean copying also for MACs that would support zero-copy
sending (like mine, currently!). I'd rather leave it with PBUF_REF and let the
driver copy everything but PBUF_RAM_NOCOPY. Which of course gives the problem
with chained pbufs containing e.g. PBUF_REF and PBUF_RAM_NOCOPY, but still,
some MACs would support zero-copy sending for UDP sockets.
I am suggesting that drivers, ARP, and IP protocols are completely zero-copy
-- and dont even check for it. TCP and UDP will be zero-copy as well, *except*
they will initially accept pbuf's from the user that require a copy. The
TCP/UDP output functions will check if any of the pbuf's submitted require a
copy, and will do a copy only if necessary.
If your application never asks for a copy (for example, uses a no-copy pbuf
type), then no copies are ever made.
In my opinion, the best place to copy is at the "top" of the stack right away
and never again. This is how BSD IPv6 works. This makes it much easier on the
driver.
_______________________________________________________
Reply to this item at:
<http://savannah.nongnu.org/task/?6735>
_______________________________________________
Message sent via/by Savannah
http://savannah.nongnu.org/
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Kieran Mansley, 2007/08/01
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/01
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Simon Goldschmidt, 2007/08/09
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/09
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jared Grubb, 2007/08/09
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Simon Goldschmidt, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY,
Jared Grubb <=
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jared Grubb, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jared Grubb, 2007/08/10
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Simon Goldschmidt, 2007/08/11
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/12
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Simon Goldschmidt, 2007/08/12
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Jonathan Larmour, 2007/08/12
- [lwip-devel] [task #6735] Provide new pbuf type: PBUF_RAM_NOCOPY, Kieran Mansley, 2007/08/29