lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [lwip-users] Problem with do_writemore() + LWIP for AVR32


From: address@hidden
Subject: Re: [lwip-users] Problem with do_writemore() + LWIP for AVR32
Date: Fri, 11 Dec 2009 07:13:11 +0100
User-agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.6; de; rv:1.9.1.5) Gecko/20091204 Thunderbird/3.0

That file is written by ATMEL? I would have expected them to be able to read our example driver file... However, it seems like they have done it as they thought it has to be without really checking it :-( See below.

patelbaroda wrote:
This is the netif driver from lwip port to AVR32

[..]
static void ethernetif_input(void * pvParameters)
{
   struct netif      *netif = (struct netif *)pvParameters;
   struct pbuf       *p;


   for( ;; )
   {
     do
     {
       /* move received packet into a new pbuf */
       p = low_level_input( netif );
       if( p == NULL )
       {
         /* No packet could be read.  Wait a for an interrupt to tell us
         there is more data available. */
         vMACBWaitForInput(100);
       }
     }while( p == NULL );

     if( ERR_OK != ethernet_input( p, netif ) )
The above line is where your problems come from. It should read:

if(ERR_OK != netif->input(p, netif))

With that, tcpip_input (which is what netif->input points to, since it was passed to netif_add()) is called instead of ethernet_input, which makes sure that packets are first passed into the correct thread before being processed.

Simon
     {
       pbuf_free(p);
       p = NULL;
     }
   }
}





reply via email to

[Prev in Thread] Current Thread [Next in Thread]