DragonFly users List (threaded) for 2005-02
Re: em driver - issue #2
In a message dated 2/7/05 2:17:41 PM Eastern Standard Time,
>Yes, it is something we have to fix. But it is a bit complicated to do
>without breaking the whole abstraction. We don't want to have a global
>counter for unprocessed packages, because we could use mutexes in that
>case directly. Maybe an option to switch to DEVICE_POLLING under very
>high load combined with SMP save DEVICE_POLLING.
Device polling is really not an option. Having a system go into livelock for
a few seconds now and then is preferable to having it dump buckets of
packets as it does with device polling. A better solution for me would be
to change the m_getcl() to MB_WAIT. Its no more a hack to the system
than having to increase HZ and introduce polling latencies.
>> Joerge, I don't see where the em driver checks for descriptors that don't
>> buffers allocated, as would happen when one couldn't be replenished at
>> time. Is it completely broken in terms of handling this situation?
>It seems quite broken in that case. I think we have two possiblities.
>First as short term fix, just keep the mbuf loaded and count the
>packet as droped. Second, get the docu and fix it correctly.
Or add a cleanup routine that checks the ring when an event flag is
set. I don't think you'd need the docs to do that. It could be done in
the timer interrupt, or checked at each interrupt....