if there are no rx packets when is called (and while it waits 100ms), etherrxflush will give the head of the rx queue back to the interface but the interface doesn't know that, so the queue will be jamed, thus causing bootp to fail. Notes: Wed Sep 19 19:14:15 EDT 2007 geoff deferred. Reference: /n/sources/patch/saved/9load-bootp Date: Sat Jun 16 14:08:59 CES 2007 Signed-off-by: quanstro@quanstro.net Reviewed-by: geoff --- /sys/src/boot/pc/bootp.c Sat Jun 16 14:06:11 2007 +++ /sys/src/boot/pc/bootp.c Sat Jun 16 14:06:06 2007 @@ -472,7 +472,7 @@ myaddr.port = BPportsrc; memmove(myaddr.ea, ea, Eaddrlen); - etherrxflush(ctlrno); +// etherrxflush(ctlrno); for(i = 0; i < 10; i++) { server.ip = Bcastip; server.port = BPportdst;