From owner-p4-projects@FreeBSD.ORG Tue Dec 16 14:37:59 2008 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 422F61065675; Tue, 16 Dec 2008 14:37:59 +0000 (UTC) Delivered-To: perforce@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 060621065672 for ; Tue, 16 Dec 2008 14:37:59 +0000 (UTC) (envelope-from bz@freebsd.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id E723F8FC17 for ; Tue, 16 Dec 2008 14:37:58 +0000 (UTC) (envelope-from bz@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id mBGEbwNZ075148 for ; Tue, 16 Dec 2008 14:37:58 GMT (envelope-from bz@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id mBGEbw7R075146 for perforce@freebsd.org; Tue, 16 Dec 2008 14:37:58 GMT (envelope-from bz@freebsd.org) Date: Tue, 16 Dec 2008 14:37:58 GMT Message-Id: <200812161437.mBGEbw7R075146@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to bz@freebsd.org using -f From: "Bjoern A. Zeeb" To: Perforce Change Reviews Cc: Subject: PERFORCE change 154790 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 16 Dec 2008 14:37:59 -0000 http://perforce.freebsd.org/chv.cgi?CH=154790 Change 154790 by bz@bz_dumpster on 2008/12/16 14:37:17 Add if_epair(4) without if_reassign (will add that once I could test). Needs: netisr simulated hw queue re-thinking with rwatson's work in progres in the netisr branch and man page review. Affected files ... .. //depot/projects/vimage/src/share/man/man4/Makefile#2 edit .. //depot/projects/vimage/src/share/man/man4/altq.4#2 edit .. //depot/projects/vimage/src/share/man/man4/epair.4#1 add .. //depot/projects/vimage/src/sys/conf/NOTES#39 edit .. //depot/projects/vimage/src/sys/conf/files#51 edit .. //depot/projects/vimage/src/sys/modules/Makefile#36 edit .. //depot/projects/vimage/src/sys/modules/if_epair/Makefile#1 add .. //depot/projects/vimage/src/sys/net/if_epair.c#1 add .. //depot/projects/vimage/src/sys/net/netisr.c#13 edit .. //depot/projects/vimage/src/sys/net/netisr.h#4 edit Differences ... ==== //depot/projects/vimage/src/share/man/man4/Makefile#2 (text+ko) ==== @@ -86,6 +86,7 @@ em.4 \ en.4 \ enc.4 \ + epair.4 \ esp.4 \ et.4 \ exca.4 \ @@ -474,6 +475,7 @@ MLINKS+=em.4 if_em.4 MLINKS+=en.4 if_en.4 MLINKS+=enc.4 if_enc.4 +MLINKS+=epair.4 if_epair.4 MLINKS+=et.4 if_et.4 MLINKS+=faith.4 if_faith.4 MLINKS+=fatm.4 if_fatm.4 ==== //depot/projects/vimage/src/share/man/man4/altq.4#2 (text+ko) ==== @@ -129,6 +129,7 @@ .Xr ed 4 , .Xr em 4 , .Xr ep 4 , +.Xr epair 4 , .Xr fxp 4 , .Xr gem 4 , .Xr hme 4 , ==== //depot/projects/vimage/src/sys/conf/NOTES#39 (text+ko) ==== @@ -794,6 +794,7 @@ device carp #Common Address Redundancy Protocol device enc #IPsec interface device lagg #Link aggregation interface +device epair #Virtual cross-over Ethernet device ef # Multiple ethernet frames support options ETHER_II # enable Ethernet_II frame ==== //depot/projects/vimage/src/sys/conf/files#51 (text+ko) ==== @@ -2162,6 +2162,7 @@ net/if_edsc.c optional edsc net/if_ef.c optional ef net/if_enc.c optional enc +net/if_epair.c optional epair net/if_ethersubr.c optional ether \ compile-with "${NORMAL_C} -I$S/contrib/pf" net/if_faith.c optional faith ==== //depot/projects/vimage/src/sys/modules/Makefile#36 (text+ko) ==== @@ -111,6 +111,7 @@ if_disc \ if_edsc \ if_ef \ + if_epair \ if_faith \ if_gif \ if_gre \ ==== //depot/projects/vimage/src/sys/net/netisr.c#13 (text+ko) ==== @@ -62,6 +62,7 @@ netisr_t *ni_handler; struct ifqueue *ni_queue; int ni_flags; + void (*ni_handler_drained)(void); } netisrs[32]; static void *net_ih; @@ -73,7 +74,8 @@ } void -netisr_register(int num, netisr_t *handler, struct ifqueue *inq, int flags) +netisr_register2(int num, netisr_t *handler, void (*handler_drained)(void), + struct ifqueue *inq, int flags) { KASSERT(!(num < 0 || num >= (sizeof(netisrs)/sizeof(*netisrs))), @@ -83,9 +85,16 @@ netisrs[num].ni_handler = handler; netisrs[num].ni_queue = inq; netisrs[num].ni_flags = flags; + netisrs[num].ni_handler_drained = handler_drained; } void +netisr_register(int num, netisr_t *handler, struct ifqueue *inq, int flags) +{ + netisr_register2(num, handler, NULL, inq, flags); +} + +void netisr_unregister(int num) { struct netisr *ni; @@ -148,6 +157,8 @@ ni->ni_handler(m); CURVNET_RESTORE(); } + if (ni->ni_handler_drained) + ni->ni_handler_drained(); } /* ==== //depot/projects/vimage/src/sys/net/netisr.h#4 (text+ko) ==== @@ -45,6 +45,7 @@ * now implemented via a software ithread (SWI). */ #define NETISR_POLL 0 /* polling callback, must be first */ +#define NETISR_EPAIR 1 /* if_epair(4) soft interrupt */ #define NETISR_IP 2 /* same as AF_INET */ #define NETISR_ROUTE 14 /* routing socket */ #define NETISR_AARP 15 /* Appletalk ARP */ @@ -84,6 +85,7 @@ void netisr_dispatch(int, struct mbuf *); int netisr_queue(int, struct mbuf *); #define NETISR_FORCEQUEUE 0x0002 /* Force queued dispatch. */ +void netisr_register2(int, netisr_t *, void (*)(void), struct ifqueue *, int); void netisr_register(int, netisr_t *, struct ifqueue *, int); void netisr_unregister(int);