Thread (59 messages) 59 messages, 9 authors, 2019-07-03

Re: [PATCH v2 00/17] net: introduce Qualcomm IPA driver

From: Arnd Bergmann <arnd@arndb.de>
Date: 2019-06-12 15:06:37
Also in: linux-arm-kernel, linux-arm-msm, linux-devicetree, lkml

On Wed, Jun 12, 2019 at 4:28 PM Dan Williams [off-list ref] wrote:
On Wed, 2019-06-12 at 10:31 +0200, Arnd Bergmann wrote:
quoted
On Tue, Jun 11, 2019 at 7:23 PM Dan Williams [off-list ref] wrote:
I was trying to make the point that rmnet doesn't need to care about
how the QMAP packets get to the device itself; it can be pretty generic
so that it can be used by IPA/qmi_wwan/rmnet_smd/etc.
rmnet at the moment is completely generic in that regard already,
however it is implemented as a tunnel driver talking to another
device rather than an abstraction layer below that driver.
quoted
The current rmnet model is different in that by design the upper
layer
(rmnet) and the lower layer (qmi_wwan, ipa, ...) are kept independent
in
both directions, i.e. ipa has (almost) no knowledge of rmnet, and
just
has pointers to the other net_device:

       ipa_device
           net_device

       rmnet_port
           net_device

I understand that the rmnet model was intended to provide a cleaner
abstraction, but it's not how we normally structure subsystems in
Linux, and moving to a model more like how wireless_dev works
would improve both readability and performance, as you describe
it, it would be more like (ignoring for now the need for multiple
connections):

   ipa_dev
        rmnet_dev
               wwan_dev
                      net_device
Perhaps I'm assuming too much from this diagram but this shows a 1:1
between wwan_dev and "lower" devices.

What Johannes is proposing (IIRC) is something a bit looser where a
wwan_dev does not necessarily provide netdev itself, but is instead the
central point that various channels (control, data, gps, sim card, etc)
register with. That way the wwan_dev can provide an overall view of the
WWAN device to userspace, and userspace can talk to the wwan_dev to ask
the lower drivers (ipa, rmnet, etc) to create new channels (netdev,
tty, otherwise) when the control channel has told the modem firmware to
expect one.
Right, as I noted above, I simplified it a bit. We probably want to
have multiple net_device instances for an ipa_dev, so there has
to be a 1:n relationship instead of 1:1 at one of the intermediate
levels, but it's not obvious which level that should be.

In theory we could even have a single net_device instance correspond
to the ipa_dev, but then have multiple IP addresses bound to it,
so each IP address corresponds to a channel/queue/napi_struct,
but the user visible object remains a single device.

I trust that you and Johannes are more qualified than me to make
the call on that point.

       Arnd
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help