From owner-cvs-all Fri Jul 23 3:53: 1 1999 Delivered-To: cvs-all@freebsd.org Received: from inetfw.sonycsl.co.jp (inetfw.sonycsl.co.jp [203.137.129.4]) by hub.freebsd.org (Postfix) with ESMTP id E9FE914F8C; Fri, 23 Jul 1999 03:52:56 -0700 (PDT) (envelope-from kjc@csl.sony.co.jp) Received: from hotaka.csl.sony.co.jp (root@hotaka.csl.sony.co.jp [43.27.98.57]) by inetfw.sonycsl.co.jp (8.9.3+3.2W/3.7Ws3/99071615/smtpfeed 1.01) with ESMTP id TAA00297; Fri, 23 Jul 1999 19:50:07 +0900 (JST) Received: from localhost (kjc@[127.0.0.1]) by hotaka.csl.sony.co.jp (8.8.8/3.7Ws3/hotaka/99071615) with ESMTP id TAA00721; Fri, 23 Jul 1999 19:50:06 +0900 (JST) Message-Id: <199907231050.TAA00721@hotaka.csl.sony.co.jp> To: Poul-Henning Kamp Cc: Mike Smith , Peter Jeremy , cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org, jkh@FreeBSD.org Subject: Re: cvs commit: src/release/sysinstall tcpip.c In-reply-to: Your message of "Fri, 23 Jul 1999 10:10:58 +0200." <33651.932717458@critter.freebsd.dk> Date: Fri, 23 Jul 1999 19:50:05 +0900 From: Kenjiro Cho Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk Poul-Henning Kamp said: >> I would advocate the ether_input API. I have never heard of a 3rd >> party ethernet driver, and considering the number of changes we >> introduce between 3.x and 4.x anyway, driver compatibility is >> already pretty much shot anyway, so I think we should fix the >> API to do it "right" rather than fight for a compatibility which >> is at best of only marginal advantage to anybody. If we are going to change the network driver API, I want to push it further. (I briefly touched this point at USENIX.) - queueing should be taken out of drivers - redefine ifioctl handling - reorganize link-type/proocol specific handling Also, it would be nice to have a common interface layer (or it can be called "abstracted network device layer") that handles the following items: - bpf, bridging - fastforwarding - queueing, (multiprotocol) firewall (possible integration of ALTQ, dummynet, ipfw) - layered interfaces (subinterfaces (vlan or atm), multi-link, tunneling) This common interface layer will make future evolution easier. In this model, a driver simply passes a raw packet to if_input(), something like: if_input(ifp, m) { bpf_processing; /* link type specific processing */ (*ifp->if_input)(ifp, &m, &inq); if (m == NULL) return; IF_ENQUEUE(inq, m); schednetisr(inq); } On the sending side, if_output(ifp, m, dst, rt) { /* link type specific processing */ (*ifp->if_output)(ifp, m, dst, rt); IF_ENQUEUE(&ifp->if_snd, m); } if_start(ifp) { IF_DEQUEUE(&ifp->if_snd, m); if (m == NULL) return; process_bpf; /* call driver's start routine that sends out one packet */ (*ifp->if_start)(ifp, m); } Comments? -Kenjiro To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message