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


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]