Re: [PATCH v2 1/2] mailbox: add async request mechanism to empower controllers w/ hw queues
From: Tudor Ambarus <tudor.ambarus@linaro.org>
Date: 2024-10-21 06:18:11
Also in:
linux-samsung-soc, lkml
Hi, Jassi, On 10/18/24 8:49 AM, Tudor Ambarus wrote:
quoted
quoted
The active request is considered completed when TX completes. But it seems that TX is not in direct relation with RX,Correct, and it is not meant to be. You are assuming there is always an RX in response to a TX, which isNot really. If there's no response expected, clients can set req->rx to NULL. Then the controllers know that no response is expected and can complete the request when TX completes.quoted
not the case. Many platforms just send a message and only need to know when it is sent. Many platforms only listen for incoming messages.these 2 cases are covered with the req approach.quoted
Many platforms have TX and RX but not as parts of one exchange. InI don't think I understand this case. Is it related to what you describe below?quoted
fact, only minority of platforms expect RX after each TX. Btw, what ifRight, I noticed.quoted
some platform sends only and always after each receive? For theseThis case is covered as well with the req approach. One just needs to serialize the requests: ret = mbox_send_request(dc->mbox_chan, req1); ret = mbox_wait_request(ret, req1->wait); if (ret) return ret; // req1 completed, send req2 ret = mbox_send_request(dc->mbox_chan, req2); ret = mbox_wait_request(ret, req2->wait); if (ret) return ret; This shall work regardless if the client expects a response or not. If no response is expected, but just a TX completion, then the client can set req->rx = NULL.quoted
reasons, it is left to the user to tie an incoming RX to some previous TX, or not.
Is there a specific driver that I can look at in order to understand the case where RX is not tied to TX? It will speed me up a little. Also, if you think there's a better way to enable controllers to manage their hardware queues, please say. Thanks, ta