[U-Boot] [PATCH] nios2: nios2-generic: do not allocate rx buf in net.c
Thomas Chou
thomas at wytron.com.tw
Fri Nov 6 05:52:39 CET 2015
Hi Marek,
On 2015年11月06日 09:40, Marek Vasut wrote:
> On Friday, November 06, 2015 at 12:47:13 AM, Thomas Chou wrote:
>> Hi Marek,
>
> Hi!
>
>> On 2015年11月06日 00:16, Marek Vasut wrote:
>>> On Thursday, November 05, 2015 at 09:42:43 AM, Thomas Chou wrote:
>>>> Do not allocate rx buf in net.c, because altera_tse allocates
>>>> its own rx buf in driver. This can save 6KB memory.
>>>>
>>>> Signed-off-by: Thomas Chou <thomas at wytron.com.tw>
>>>
>>> Shouldn't we instead fix the altera driver to use the pre-allocated
>>> buffer ?
>>
>> It should not. The drivers and devices are dynamically binding in driver
>> model. The buffers used by devices should be allocated per device. Eg,
>> there may be multiple ethernet devices and they should not use the same
>> pre-allocated rx bufs.
>
> Oh ok, I see your point now. But then, this allocation of buffers in the
> ethernet drivers becomes a boilerplate code, right ? So maybe there should
> be some mechanism in the network stack to allocate the buffers for the drivers
> to prevent duplication of code.
The pre-alloacted tx_buf is still in use by net/ . But most ethernet
drivers allocate their own rx_buf (perhaps as ring buffer). Most of them
use memalign(PKTSIZE_ALIGN), which is the same as
malloc_cache_aligned(PKTSIZE_ALIGN). Each driver may have different
requirement of size/number of the rx buf.
The driver passes the rx buf to net/ . And the net/ return the rx buf
with free_pkt() to the driver after use.
I think this scheme works fine. There not much duplication of code for
rx_buf allocation, which might be only a malloc_cache_aligned().
Best regards,
Thomas
More information about the U-Boot
mailing list