Hi Tudor, On Tue, Oct 22, 2024 at 8:27 AM Tudor Ambarus <tudor.ambarus@xxxxxxxxxx> wrote: > > Hi, Jassi, > > On 10/21/24 5:32 PM, Jassi Brar wrote: > >> On 10/18/24 8:49 AM, Tudor Ambarus wrote: > > > >> The active request is considered completed when TX completes. But it seems > >> that TX is not in direct relation with RX, > > > > TX and RX are assumed independent operations (which they are). > > TX is sending a message/request to the remote successfully. 'Success' > > can be indicated by any of the three methods TXDONE_BY_{POLLING, IRQ, > > ACK}. > > You seem to assume it should always be an ACK where we receive an > > acknowledgment/response packet, which is not the case. > > My controller driver indeed ties TX to RX and considers the request > completed when the RX completes. > Does your controller require RX or the protocol? I suspect the latter. Anyway, the former is also supported by TXDONE_BY_ACK already. > > > >> Is there a specific driver that I can look at in order to understand the > >> case where RX is not tied to TX? > > > > Many... > > * The remote end owns sensors and can asynchronously send, say > > thermal, notifications to Linux. > > * On some platform the RX may be asynchronous, that is sent later > > with some identifying tag of the past TX. > > * Just reverse the roles of local and remote - remote sends us a > > request (RX for us) and we are supposed to send a response (TX). > > I was hoping for a name of a driver, but I guess I can find them out > eventually. > Do these usecases seem impossible to you? Many users are not upstream that we care about as long as we are not making some corrective change. > > > >> Also, if you think there's a better way to enable controllers to manage > >> their hardware queues, please say. > >> > > Tying RX to TX has nothing to do with hardware queues. There can be a > > Right, I agree. > > > hardware queue and the protocol can still be > > "local-to-remote-broadcast". > > > > While I don't think we need the "Rx is in relation to some past Tx" > > api, I am open to ideas to better utilize h/w queues. > > > > The h/w TX queue/fifo may hold, say, 8 messages while the controller > > transmits them to the remote. Currently it is implemented by > > .last_tx_done() returning true as long as fifo is not full. > > The other option, to have more than one TX in-flight, only complicates > > the mailbox api without fetching any real benefits because the > > protocol would still need to handle cases like Tx was successful but > > the remote rejected the request or the Rx failed on the h/w fifo > > (there could be rx-fifo too, right). Is where I am at right now. > > > No worries, I'm confident we'll reach a conclusion. > > It's true I implemented just my use case, but that doesn't mean that the > "request" approach can't be extended for current users. > Sorry, I am not sure we should make the api dance around your usecase. If your usecase is not currently handled, please let me know. We can discuss that. Thanks.