em driver - issue #2

EM1897 at aol.com EM1897 at aol.com
Mon Feb 7 11:36:29 PST 2005


In a message dated 2/7/05 2:17:41 PM Eastern Standard Time, 
joerg at xxxxxxxxxxxxxxxxx writes:

>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 
have
>> buffers allocated, as would happen when one couldn't be replenished at 
receive
>> 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....





More information about the Users mailing list