On Wed, Jun 26, 2019 at 3:39 PM Alex Elder <elder@xxxxxxxxxx> wrote: > On 6/25/19 9:19 AM, Johannes Berg wrote: > > On Mon, 2019-06-24 at 18:40 +0200, Arnd Bergmann wrote: > > > So, IOW, I'm not sure I see how you'd split that up. I guess you could > > if you actually do something like the "rmnet" model, and I suppose > > you're free to do that for IPA if you like, but I tend to think that's > > actually a burden, not a win since you just get more complex code that > > needs to interact with more pieces. A single driver for a single > > hardware that knows about the few types of channels seems simpler to me. > > > >> - to answer Johannes question, my understanding is that the interface > >> between kernel and firmware/hardware for IPA has a single 'struct > >> device' that is used for both the data and the control channels, > >> rather than having a data channel and an independent control device, > >> so this falls into the same category as the Intel one (please correct > >> me on that) > > I don't think that's quite right, but it might be partially > right. There is a single device representing IPA, but the > picture is a little more complicated. > > The IPA hardware is actually something that sits *between* the > AP and the modem. It implements one form of communication > pathway (IP data), but there are others (including QMI, which > presents a network-like interface but it's actually implemented > via clever use of shared memory and interrupts). Can you clarify how QMI fits in here? Do you mean one has to talk to both IPA and QMI to use the modem, or are these two alternative implementations for the same basic purpose? > > That sounds about the same then, right. > > > > Are the control channels to IPA are actually also tunnelled over the > > rmnet protocol? And even if they are, perhaps they have a different > > hardware queue or so? That'd be the case for Intel - different hardware > > queue, same (or at least similar) protocol spoken for the DMA hardware > > itself, but different contents of the messages obviously. > > I want to be careful talking about "control" but for IPA it comes > from user space. For the purpose of getting initial code upstream, > all of that control functionality (which was IOCTL based) has been > removed, and a fixed configuration is assumed. My previous understanding was that from the hardware perspective there is only one control interface, which is for IPA. Part of this is abstracted to user space with ioctl commands to the IPA driver, and then one must set up rmnet to match these by configuring an rmnet device over netlink messages from user space, but rmnet does not have a control protocol with the hardware. The exception here is the flow control, which is handled using in-band XON/OFF messages from the modem to rmnet (and corresponding Acks the other way) that IPA just passes through. If we also need to talk to QMI, that would be something completely different though. Arnd