Jonathan Larmour wrote:
Ed Sutter wrote:
What frees ipacket's memory? Is there any chance that memory can be
reused
before the pbuf is freed?

You may also need to consider the alignment of ipacket.
Jonathan,
Thanks for the response.  The underlying driver releases the buffer.
This is coordinated with details outside the scope of this problem.
It is the same packet buffer used in the working method that uses
PBUF_POOL for allocation.

Ah I see in the implementation of pbuf_header, that it can't expand
PBUF_REFs to the front. That will be your problem.

I think the only reason it doesn't do it is because there's no way to
sanity check that it's a valid thing to do.

Hmmmm...
If I can't use PBUF_RAW/PBUF_REF to allocate the pbuf, then does that
mean I have no choice but to do the loop of memcpy's like this...

+     p = pbuf_alloc(PBUF_RAW, len, PBUF_POOL);
+     if (p) {
+         for(q = p; q != NULL; q = q->next) {
+             memcpy(q->payload,ipkt, q->len);
+             ipkt += q->len;
+         }
+         ethernet_input(p, mynetifp);
+     }

to transfer the incoming buffer into the pbuf->payload buffers?
Or is there some other way to avoid that copy loop?
Ed


_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to