Index: sys/net/bpf.c =================================================================== --- sys/net/bpf.c (revision 203456) +++ sys/net/bpf.c (working copy) @@ -694,9 +694,12 @@ * have arrived to fill the store buffer. */ while (d->bd_hbuf == NULL) { - if ((d->bd_immediate || timed_out) && d->bd_slen != 0) { + if ((d->bd_immediate || ioflag & O_NDELAY || timed_out) + && d->bd_slen != 0) { /* - * A packet(s) either arrived since the previous + * We're in immediate mode, or are reading + * in non-blocking mode, and a packet(s) + * either arrived since the previous * read or arrived while we were asleep. * Rotate the buffers and return what's here. */