[ECOS] Re: Urgent Help: ether_demux function
Roy E Richardson
eng_at_play@cox.net
Tue Sep 20 03:39:00 GMT 2005
Perhaps I'm missing the point here, but when faced with an instance of a
consisently full queue, I have been taught to investigate the process(es)
that are to service that queue.
Given the limiting factor of 100 frames /sec. one can pretty much rule out
CPU cycle saturation as the root problem (unless we're using a Z80 timeframe
CPU or other really old HW), one has to ask if the blockage is due to some
thread priorites, or the like blocking the servicing of the queue?
what is the platform, and what is the "tick interval"
---- Original Message -----
From: <mkhoyila@uci.edu>
To: <ecos-discuss@ecos.sourceware.org>
Sent: Monday, September 19, 2005 5:46 PM
Subject: [ECOS] Re: Urgent Help: ether_demux function
> Hi Gary and Andew,
>
> I can see what the issue is, but I do not know how to solve. From my dsr I
> call:
>
> while ( !(pDevCtrl->rxBds[pDevCtrl->rxHeadIndex].status & DMA_OWN)
> (sc->funs->eth_drv->recv)(sc, pDevCtrl .....);
>
> this loops through as long as packets are coming and I checked from
> eth_drv.c the function ether_input.c is being called which calls
> ether_demux.
>
> ether_demux queue them in ip_input queue and schedule a software interrupt
> for ipintr to pick up the packets in the queue. if packets are coming
> beyond 100 packets/sec, then software interrupt is NOT generated and after
> first 50 packets received, all are dropped. ipintr is called at the end
> and at that time only first 50 packets are in the queue.
>
> Need help please. Thanks.
>
> Michael
>
>
>> On Fri, Sep 16, 2005 at 12:35:08PM -0700, mkhoyila@uci.edu wrote:
>>> I know that it is dropping packets because IF_QFULL(inq) is full. This
>>> does not seem correct to me since eCos should handle more traffic than
>>> 100
>>> packets/sec.
>>>
>>> Is there any issue with the driver or need to turn something on to make
>>> this happen.
>>>
>>> Thanks.
>>>
>>> michael
>>>
>>> ---------------------------- Original Message
>>> ----------------------------
>>> Subject: ether_demux function
>>> From: mkhoyila@uci.edu
>>> Date: Fri, September 16, 2005 12:10 pm
>>> To: ecos-discuss@ecos.sourceware.org
>>> --------------------------------------------------------------------------
>>>
>>> Hi Gary,
>>>
>>> Do you have any idea, why ether_demux drops packets when more than 100
>>> packet per second are sent via the driver (with 100 packets/sec with
>>> length of 60bytes each, no issues). Basically it only allows exactly 50
>>> packets thru and drops the rest. Thanks.
>>
>> You need to find out why the queue is overflowing. What is supposed to
>> take packets out of the queue? Why is it not? It sounds like a problem
>> with the transmit functions in your ethernet driver.
>>
>> Andrew
>>
>
>
>
> --
> Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
> and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
>
>
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list