Path: utzoo!utgpu!news-server.csri.toronto.edu!clyde.concordia.ca!uunet!decwrl!ucbvax!FTP.COM!jbvb From: jbvb@FTP.COM ("James B. Van Bokkelen") Newsgroups: comp.protocols.tcp-ip.ibmpc Subject: Re: ODI? Message-ID: <9008161321.AA06910@ftp.com> Date: 16 Aug 90 13:21:25 GMT Sender: daemon@ucbvax.BERKELEY.EDU Reply-To: jbvb-pd@ftp.com Organization: The Internet Lines: 40 From: Russ Nelson geoff@hinode.East.Sun.COM (Geoff Arnold @ Sun BOS) writes: Why not adopt PD instead? Because in principle I think that NDIS does demultiplexing "right" and ODLI and PD do it "wrong". If *that*'s your only objection to the PD, then we can bash jbvb@ftp.com over the head until he changes the spec to allow multiple drivers to be upcalled with the same packet. Then your application can just ask for all packets. The problem is of course the slow, DMA-based boards. The Packet Driver spec doesn't prevent a given driver from allowing simultaneous "match all" and "specific packet" handles. Our own NDIS-to-Packet-Driver doesn't (and won't) support multiple driver upcalls primarily because the NDIS spec doesn't guarantee that an NDIS driver can deliver the same packet to more than one stack, and we needed to minimize size. Version 1.10 of the packet driver spec is in the works. A revision of the as_send_pkt() function has been implemented and tested by Drew Perkins. Since Drew proposed the original version, and I don't know of anyone who implemented it, I am moved to include this in the new spec. However, I have seen requests for gather-mode on output. I am soliciting people to propose (write up and hopefully test) extensions to Drew's mechanism. As far as "look at the packet before it is copied to my buffer" goes, there are certainly a lot of free registers on the first 'receiver()' upcall. The 'get_parameters()' function allows the stack to determine the PDS revision the driver conforms to. Suppose that with v1.10 of the spec, if the DX register is non-zero on the 'AX == 0' upcall, it is the length of a 'look-ahead' buffer pointed to by register pair ES:DI. If the stack doesn't want the packet after all, it can just return an empty buffer pointer. One could also guarantee a minimum length of 60 bytes in Class 1, possibly larger in Class 3. James B. VanBokkelen 26 Princess St., Wakefield, MA 01880 FTP Software Inc. voice: (617) 246-0900 fax: (617) 246-0901