On Tuesday, January 29, 2002, at 08:26 AM, Andrew Gallatin wrote: Where do network drops typically happen in darwin? Eg, I'm seeing packets get dropped somewhere between udp_output() and my driver. (comparing counters in my driver and in udp_output()). The culprit is returning ENOBUFS. My driver has control of its own if_output (eg, its not going through IOKit). Packets get dropped in "the usual places": all along the path from udp_output to the inside of the driver. The ENOBUFS error crops up when there is no available buffer for some required use (e.g., failing on the allocation of an mbuf to hold the packet header). This is done in udp_output(), and un ip_output(). Is this driver "virtual", or does it deal with hardware? Since the BSD per-interface ifp->if_snd output queuing seems to be gone (or replaced somehow), I'm not sure where output queuing is happening. In Darwin, there is no enforced system queueing; the driver itself chooses the method of queueing, if any. Regards, Justin -- /~\ The ASCII Justin C. Walker, Curmudgeon-at-Large \ / Ribbon Campaign X Against HTML / \ Email
participants (1)
-
Justin C. Walker