DragonFly kernel List (threaded) for 2008-06
DragonFly BSD
DragonFly kernel List (threaded) for 2008-06
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

Re: tcpcb (was Re: sockbuf (was Re: BGL-free net stack))


From: Aggelos Economopoulos <aoiko@xxxxxxxxxxxxxx>
Date: Mon, 16 Jun 2008 20:16:43 +0300

On Tuesday 10 June 2008, Aggelos Economopoulos wrote:
> On Tuesday 10 June 2008, Sepherosa Ziehau wrote:
[...]
> > Ah, I see.  Sorry, I misread the previous mail.  I think you could use
> > -1 in soport()
> 
> Any unused value would do, right? Isn't this a hint that we should just move
> pr_ctloutput to pru_ctloutput and add a PRU_CTLOUTPUT value?

What I've got seems to work (I can't easily test the ip_mroute changes), even
though I'm not completely happy with the implementation. You (I don't mean
just Sephe here) can get the changes by pulling the tcpcb branch from the git
repo at git://repo.or.cz/dragonfly/netmp.git or by fetching
http://leaf.dragonflybsd.org/~aggelos/B1-sopt.patch and applying it to HEAD.
Please test in your regular setup and report any errors ("works for me" is
interesting too). This patch does NOT contain any sockbuf changes and should
be quite safe. That said, don't run it on your production boxes yet.

I'd also like to know what the developers think about

int
kva_p(const void *addr)
{
	/* XXX: mapped? */
	return ((unsigned long)KvaStart <= (unsigned long)addr) &&
		((unsigned long)addr < (unsigned long)KvaEnd);
}

do we need such a function? Should it be quick-n-silly like above or
should it check if there is a page mapped on addr as well?

diffstat for the patch is

 kern/uipc_msg.c                 |   45 +++++++++++++++++----
 kern/uipc_socket.c              |   82 ++++++++++++++++++++++++++++++++++++++--
 net/dummynet/ip_dummynet_glue.c |    8 +--
 net/ip_mroute/ip_mroute.c       |   32 +++++++--------
 net/ipfw/ip_fw2.c               |   61 ++++++++++++++---------------
 net/netisr.h                    |    9 ----
 net/netmsg.h                    |    7 +++
 netinet/ip_output.c             |   56 ++++++++++++---------------
 netinet/tcp_usrreq.c            |   21 ++--------
 netinet6/ip6_output.c           |   34 ++++++----------
 sys/protosw.h                   |    5 +-
 sys/socketops.h                 |    2
 sys/socketvar.h                 |    5 ++
 13 files changed, 228 insertions(+), 139 deletions(-)

Aggelos



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]