We achieved best results by calling WaitForBuffer with a timeout of zero and continue processing packets in case there is no free buffer.