Thank you for the info. I tried to implement it and when I am running it, I
cannot allocate a pbuf chain of pbufs from the pool. I attached the code of
the low_level_input() implementation. len had different values from 1500 to
100 to 10.
static struct pbuf *low_level_input(struct netif *netif)
> {
> struct pbuf *p;
> u16_t len=10;
>
> /* We allocate a pbuf chain of pbufs from the pool. */
> p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
> if (p != NULL)
> {
> KSZ8851SNL_receive(p->payload, &(p->len));
> LINK_STATS_INC(link.recv);
> } else
> {
> //TODO drop packet();
> LINK_STATS_INC(link.memerr);
> LINK_STATS_INC(link.drop);
> }
> return p;
> }
On Wed, Jun 27, 2012 at 3:29 PM, Simon Goldschmidt <[email protected]> wrote:
> Angel CODREAN <[email protected]> wrote:
> > LWIP_driver_input is the method I implemented in my driver in order to
> > receive packages from the ethernet driver
> >
> > /** Called when a packet is received */
> > err_t LWIP_driver_input(struct pbuf *pbuf, struct netif *netif)
> > {
> > struct pbuf *p=(struct pbuf*)malloc(sizeof(struct pbuf));
> > driver_receive(p->payload, &(p->tot_len));
> > ethernet_input(p, netif);
> > return ERR_OK;
> > }
>
> That is totally not the way it should be. Please have a look at the
> ethernetif.c skeleton file to see how a driver should interact with lwIP.
>
> LwIP will *never* call your LWIP_driver_input() function, it is up to you
> to schedule a call to this function (either by polling the driver or by
> getting an RX interrupt).
>
> Simon
> --
> NEU: FreePhone 3-fach-Flat mit kostenlosem Smartphone!
> Jetzt informieren: http://mobile.1und1.de/?ac=OM.PW.PW003K20328T7073a
>
> _______________________________________________
> lwip-users mailing list
> [email protected]
> https://lists.nongnu.org/mailman/listinfo/lwip-users
>
_______________________________________________
lwip-users mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/lwip-users