[PATCH net-next v29 1/3] mailbox: add callback function for rx buffer allocation
From: Adam Young
Date: Thu Sep 25 2025 - 15:01:17 EST
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 <admiyo@xxxxxxxxxxxxxxxxxxxxxx>
---
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
+ * 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