This is the mail archive of the ecos-discuss@sourceware.org mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Re: Urgent Help: ether_demux function


I am arriving at the same conclusion.

Platform: MIPS
Ticks from support.c:

int hz = 100;
int tick = 10000;  // usec per "tick"

Thanks.

MHK

> 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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]