Path: utzoo!attcan!uunet!image.soe.clarkson.edu!news From: nelson@sun.soe.clarkson.edu (Russ Nelson) Newsgroups: comp.protocols.tcp-ip.ibmpc Subject: Re: 3C501, packet drivers, and bootp Message-ID: Date: 22 Feb 90 20:36:05 GMT References: Sender: news@sun.soe.clarkson.edu Reply-To: nelson@clutx.clarkson.edu Organization: Clarkson University, Potsdam NY Lines: 39 In-reply-to: berger@andromeda.rutgers.edu.rutgers.edu's message of 19 Feb 90 21:37:22 GMT In article berger@andromeda.rutgers.edu.rutgers.edu (Theresa Berger) writes: I'm using what I believe is the current Clarkson packet driver for the 3C501 (dated 11/15/89). Bootp does not work with the packet driver, as far as we can tell the request never hits the wire. BTW, why doesn't it work? This is what happens: The send_pkt routine transmits the broadcast packet. The 3c501 tries to receive the packet. It will generate an interrupt that reports an error. The error will indicate that a packet was received while a packet was being sent. The interrupt routine nukes the packet being sent (I think). The correct solution is to keep the interrupt routine from nuking the packet. The enclosed solution waits for the packet to finish being sent while keeping interrupts off. Icky, but it works. Insert the following code fragment immediately before the "clc" that is immediately before the last "ret" in send_pkt. Reassemble. mov bx,20000 ;try this many times. send_pkt_4: in al,dx ;if not busy, exit. and al,IE_XMTBSY je send_pkt_5 dec bx jne send_pkt_4 mov dh,CANT_SEND ;timed out, can't send. stc ret send_pkt_5: -- --russ (nelson@clutx [.bitnet | .clarkson.edu]) Russ.Nelson@$315.268.6667 Violence never solves problems, it just changes them into more subtle problems