Re: [PATCH net-next v4 07/15] net: macb: introduce macb_context struct for buffer management
From: Théo Lebrun
Date: Fri Jul 24 2026 - 10:02:33 EST
Hello Nicolai,
On Sun Jul 19, 2026 at 12:38 PM CEST, Nicolai Buchwitz wrote:
> Hi Théo
>
> On 17.7.2026 21:48, Théo Lebrun wrote:
>> Whenever an operation requires buffer realloc, we close the interface,
>> update parameters and reopen. To improve reliability under memory
>> pressure, we should rather alloc new buffers, reconfigure HW and free
>> old buffers. This requires MACB to support having multiple "contexts"
>> in parallel.
>>
>> Introduce this concept by adding the macb_context struct, which owns
>> all
>> queue buffers and the parameters associated. We do not yet support
>> multiple contexts in parallel, because all functions access bp->ctx
>> (the currently active context) directly.
>>
>> Steps:
>>
>> - Introduce `struct macb_context` and its children `struct macb_rxq`
>> and `struct macb_txq`. Context fields are stolen from `struct macb`
>> and rxq/txq fields are from `struct macb_queue`.
>>
>> Making it two separate structs per queue simplifies accesses: we
>> grab
>> a txq/rxq local variable and access fields like txq->head instead of
>> queue->tx_head. It also anecdotally improves data locality.
>>
>> - macb_init_dflt() / macb_get_ringparam() do not access
>> bp->ctx->{rx,tx}_ring_size as they will/might run while interface is
>> offline and ctx is not NULL. Instead, introduce
>> bp->configured_{rx,tx}_ring_size which get updated on user requests.
>
> nit: In the commit message: "ctx is not NULL" should be "ctx is NULL".
Indeed. Interface offline == ctx is NULL.
Thanks,
--
Théo Lebrun, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com