There's a task on savannah on this (#7896 ): https://savannah.nongnu.org/task/?7896
Basically, the scheme will work on _POOL and _RAM pbufs, but not on _ROM/_REF pbufs, which is why usage of these types would have to be adjusted (including a copy-on-delayed-usage flag or something like that). However, as sad as it is, this won't be included in 1.3.1 as we first have to agree on one solution. Simon > > Hi, > > I'm porting lwip (using an RTOS and the socket API) and I have a > > question regarding the low_level_output function. > > If I can't send the pbuf immediately (netif busy), to avoid copying > > the pbuf, I'd like to do the following: > > * Increment the reference count to prevent lwip from re-using > > or freeing the pbuf. > > * Put the pbuf on my output queue and try to send it later. > > * Return ERR_OK. > > Later when the netif is not busy... > > * Remove the pbuf from my output queue. > > * Send the pbuf. > > * Free the pbuf. > > > > Will this scheme work with lwip? > > This is a very valid discussion point for the Stack, IMHO. > It is not really explicitly documented that the Stack will free the pbufs > for a packet after it handed it over to the driver layer. > If the Driver is sending asynchronously and the data is not memcpy'd by > the driver, the datablock might be allocated by someone else and > overwritten with other data. This might be an explaination for > mysteriously lost or changed packets. > Also given the fact that LwIP is a zero-copy stack, people might not > expect to memcpy stuff on the driver layer? > > I propose we do either of the following: > > 1) In the ethernetif-skeleton explicitly document the behavior and tell > the developer to memcpy the data if their transmission is async. > 2) See 1), but tell the developer to increment the reference count and > pbuf_free() themselves (probably faster than memcpy) > 3) Remove the freeing of the pbuf after handing it over to the driver > layer and document that and leave it to the driver developer to > pbuf_free() after the xmit is really done > > comments? > > regards, > Fabian -- Neu: GMX FreeDSL Komplettanschluss mit DSL 6.000 Flatrate + Telefonanschluss für nur 17,95 Euro/mtl.!* http://dslspecial.gmx.de/freedsl-surfflat/?ac=OM.AD.PD003K11308T4569a _______________________________________________ lwip-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/lwip-users
