Thread (13 messages) 13 messages, 6 authors, 2025-10-06

Re: [PATCH net-next v29 1/3] mailbox: add callback function for rx buffer allocation

From: Simon Horman <horms@kernel.org>
Date: 2025-09-26 14:13:33
Also in: lkml

On Thu, Sep 25, 2025 at 03:00:24PM -0400, Adam Young wrote:
quoted hunk ↗ jump to hunk
Allows the mailbox client to specify how to allocate the memory
that the mailbox controller uses to send the message to the client.

In the case of a network driver, the message should be allocated as
a struct sk_buff allocated and managed by the network subsystem.  The
two parameters passed back from the callback represent the sk_buff
itself and the data section inside the skbuff where the message gets
written.

For simpler cases where the client kmallocs a buffer or returns
static memory, both pointers should point to the same value.

Signed-off-by: Adam Young <redacted>
---
 include/linux/mailbox_client.h | 7 +++++++
 1 file changed, 7 insertions(+)
diff --git a/include/linux/mailbox_client.h b/include/linux/mailbox_client.h
index c6eea9afb943..901184d0515e 100644
--- a/include/linux/mailbox_client.h
+++ b/include/linux/mailbox_client.h
@@ -21,6 +21,12 @@ struct mbox_chan;
  * @knows_txdone:	If the client could run the TX state machine. Usually
  *			if the client receives some ACK packet for transmission.
  *			Unused if the controller already has TX_Done/RTR IRQ.
+ * @rx_alloc		Optional callback that allows the driver
@rx_alloc:
        ^^^

Flagged by ./scripts/kernel-doc -none -Wall
quoted hunk ↗ jump to hunk
+ *			to allocate the memory used for receiving
+ *			messages.  The handle parameter is the value to return
+ *			to the client,buffer is the location the mailbox should
+ *			write to, and size it the size of the buffer to allocate.
+ *			inside the buffer where the mailbox should write the data.
  * @rx_callback:	Atomic callback to provide client the data received
  * @tx_prepare: 	Atomic callback to ask client to prepare the payload
  *			before initiating the transmission if required.
@@ -32,6 +38,7 @@ struct mbox_client {
 	unsigned long tx_tout;
 	bool knows_txdone;
 
+	void (*rx_alloc)(struct mbox_client *cl, void **handle, void **buffer, int size);
 	void (*rx_callback)(struct mbox_client *cl, void *mssg);
 	void (*tx_prepare)(struct mbox_client *cl, void *mssg);
 	void (*tx_done)(struct mbox_client *cl, void *mssg, int r);
-- 
2.43.0
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help