PPC405GP Ethernet Driver

Ian Caddy ianc at goanna.iinet.net.au
Tue Aug 2 01:57:59 UTC 2005


Hi Byron,

Just a follow-up on Greg's email.  You are freeing the complete chain of 
mbufs associated with the packet, not just the first mbuf?

Once your driver completes transmission, you can use the following call 
instead of freeing each mbuf:

    m_freem(m);

which will free the complete chain, assuming you have finished 
transmitting the complete chain.

I hope this help,

Ian Caddy


Doyle, Bryon Thomas (Bryon) wrote:
> Thanks for your response, yeah I checked out my TX buffers and that's the only place I'm freeing up an mbuf. I think the problem may be in how I'm getting a new mbuf out of the pool in my RX task. I'm going over how I used some of the macros and comparing my usage to the usage in other RTEMS Drivers. Hopefully that will yield some results. Thanks Again
> 
> Bryon Doyle
> Bell Labs Summer Intern
> Lucent Technologies
> 
> -----Original Message-----
> From: gregory.menke at gsfc.nasa.gov [mailto:gregory.menke at gsfc.nasa.gov]
> Sent: Monday, August 01, 2005 3:08 PM
> To: Doyle, Bryon Thomas (Bryon)
> Cc: 'rtems-users at rtems.com'
> Subject: PPC405GP Ethernet Driver
> 
> 
> 
> Check your tx complete routine, you should be freeing the packets
> after they're transmitted- IIRC thats the only place your driver
> should free packet buffers.  Perhaps tx buffers are leaking...
> 
> Gregm
> 
> Doyle, Bryon Thomas (Bryon) writes:
>  > Hello, I have been posting over the last few weeks on some pointers
>  > how to write an Ethernet driver for the RTEMS gen405 BSP. Well,
>  > I've got it running at about 95% now and I've run into a snag. I
>  > seem to be running out of available "mbufs" after a few minutes of
>  > netdemo running on the board, and I don't know why. I run a ping -t
>  > on my development PC to test the network functionality, it runs
>  > great for a while then it starts timing out. Over my terminal
>  > connection to the board, I can run the statistics portion of
>  > netdemo and it shows that all 512 buffers are full with data. And
>  > when I try to run the UDP send command after pinging the board for
>  > a few minutes it freezes and prints out "waiting for available
>  > mbuf" every 30 seconds or so. Additionally, I am positive that the
>  > Ethernet controller's DMA is properly configured and all the wrap
>  > bits are set on the respective buffers. I am reluctant to simply
>  > add a call to m_freem(m) in my receive function out of fear of
>  > deleting a pa!  cket before the stack has finished processing it,
>  > and given a quick glance of some other drivers in the RTEMS tree, I
>  > did not notice any references to freeing up memory buffers after
>  > they are received. Any thoughts on why my driver is eating up
>  > mbufs?  Any help is always appreciated, and I plan on uploading my
>  > driver into the RTEMS CVS as soon as I get this problem fixed and
>  > feel comfortable with it working. Thanks Again.
>  > 
> 
> 

-- 
Ian Caddy
Goanna Technologies Pty Ltd
+61 8 9221 1860





More information about the users mailing list