From owner-cvs-all Fri Jul 23 12:13:11 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 663FD14C38; Fri, 23 Jul 1999 12:13:05 -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 EAA08536; Sat, 24 Jul 1999 04:11:48 +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 EAA24974; Sat, 24 Jul 1999 04:11:47 +0900 (JST) Message-Id: <199907231911.EAA24974@hotaka.csl.sony.co.jp> To: Mike Smith Cc: cvs-all@FreeBSD.org, cvs-committers@FreeBSD.org Subject: Re: cvs commit: src/release/sysinstall tcpip.c In-reply-to: Your message of "Fri, 23 Jul 1999 10:22:54 MST." <199907231722.KAA03340@dingo.cdrom.com> Date: Sat, 24 Jul 1999 04:11:46 +0900 From: Kenjiro Cho Sender: owner-cvs-all@FreeBSD.ORG Precedence: bulk Mike Smith said: > 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 >> I don't like this one very much; it's one place where we would lose a >> great amount of efficiency. I'm not sure if it is a great amount or not, but there would be several different levels to clean up the queueing interface. For example, we can clean up the interface while maintaining the current structure. At least, I want to eliminate direct refenrences to "ifp->if_snd.ifq_head". [snip] > 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); > } >> This last fragment is unacceptable though; it's one of the massive >> inefficiencies in the Linux architecture and I don't think you'll ever >> sell a proposal that requires CPU intervention between each and >> every packet. By all means implement a per-interface flag that limits >> the number of datagrams that can be in the interface's private send >> queue at once (I think we already have one of those, actually) so that >> you can adjust the latency involved. Again, it is just a skelton for discussion and I'm not sure about the performance impact. If DMA chaining is a big win, we can do something like: if_start(ifp) { while (1) { IF_DEQUEUE(&ifp->if_snd, m); if (m == NULL) break; process_bpf; /* setup driver's DMA for this packet */ if ((*ifp->if_txsetup)(ifp, m) < 0) /* the driver couldn't set it up */ break; } if (have_packets_to_send) (*ifp->if_txstart)(ifp); /* kick DMA */ } -Kenjiro To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe cvs-all" in the body of the message