From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: Johannes Berg <johannes@sipsolutions.net>,
Alex Elder <elder@linaro.org>,
abhishek.esse@gmail.com, Ben Chan <benchan@google.com>,
Bjorn Andersson <bjorn.andersson@linaro.org>,
cpratapa@codeaurora.org, David Miller <davem@davemloft.net>,
Dan Williams <dcbw@redhat.com>, DTML <devicetree@vger.kernel.org>,
Eric Caruso <ejcaruso@google.com>,
evgreen@chromium.org,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
linux-arm-msm@vger.kernel.org,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
linux-soc@vger.kernel.org, Networking <netdev@vger.kernel.org>,
syadagir@codeaurora.org
Subject: Re: [PATCH v2 00/17] net: introduce Qualcomm IPA driver
Date: Tue, 18 Jun 2019 15:15:42 -0600 [thread overview]
Message-ID: <6c70950d0c78bc02a3d016918ec3929e@codeaurora.org> (raw)
In-Reply-To: <CAK8P3a2onXpxiE4y9PzRwuPM2dh=h_BKz7Eb0=LLPgBbZoK1bQ@mail.gmail.com>
On 2019-06-18 14:55, Arnd Bergmann wrote:
> On Tue, Jun 18, 2019 at 10:36 PM Johannes Berg
> <johannes@sipsolutions.net> wrote:
>>
>> On Tue, 2019-06-18 at 21:59 +0200, Arnd Bergmann wrote:
>> >
>> > From my understanding, the ioctl interface would create the lower
>> > netdev after talking to the firmware, and then user space would use
>> > the rmnet interface to create a matching upper-level device for that.
>> > This is an artifact of the strong separation of ipa and rmnet in the
>> > code.
>>
>> Huh. But if rmnet has muxing, and IPA supports that, why would you
>> ever
>> need multiple lower netdevs?
>
> From my reading of the code, there is always exactly a 1:1 relationship
> between an rmnet netdev an an ipa netdev. rmnet does the encapsulation/
> decapsulation of the qmap data and forwards it to the ipa netdev,
> which then just passes data through between a hardware queue and
> its netdevice.
>
There is a n:1 relationship between rmnet and IPA.
rmnet does the de-muxing to multiple netdevs based on the mux id
in the MAP header for RX packets and vice versa.
> [side note: on top of that, rmnet also does "aggregation", which may
> be a confusing term that only means transferring multiple frames
> at once]
>
>> > ipa definitely has multiple hardware queues, and the Alex'
>> > driver does implement the data path on those, just not the
>> > configuration to enable them.
>>
>> OK, but perhaps you don't actually have enough to use one for each
>> session?
>
> I'm lacking the terminology here, but what I understood was that
> the netdev and queue again map to a session.
>
>> > Guessing once more, I suspect the the XON/XOFF flow control
>> > was a workaround for the fact that rmnet and ipa have separate
>> > queues. The hardware channel on IPA may fill up, but user space
>> > talks to rmnet and still add more frames to it because it doesn't
>> > know IPA is busy.
>> >
>> > Another possible explanation would be that this is actually
>> > forwarding state from the base station to tell the driver to
>> > stop sending data over the air.
>>
>> Yeah, but if you actually have a hardware queue per upper netdev then
>> you don't really need this - you just stop the netdev queue when the
>> hardware queue is full, and you have flow control automatically.
>>
>> So I really don't see any reason to have these messages going back and
>> forth unless you plan to have multiple sessions muxed on a single
>> hardware queue.
>
Hardware may flow control specific PDNs (rmnet interfaces) based on QoS
-
not necessarily only in case of hardware queue full.
> Sure, I definitely understand what you mean, and I agree that would
> be the right way to do it. All I said is that this is not how it was
> done
> in rmnet (this was again my main concern about the rmnet design
> after I learned it was required for ipa) ;-)
>
> Arnd
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
WARNING: multiple messages have this Message-ID (diff)
From: Subash Abhinov Kasiviswanathan <subashab@codeaurora.org>
To: Arnd Bergmann <arnd@arndb.de>
Cc: DTML <devicetree@vger.kernel.org>,
syadagir@codeaurora.org, Eric Caruso <ejcaruso@google.com>,
David Miller <davem@davemloft.net>,
Dan Williams <dcbw@redhat.com>,
linux-arm-msm@vger.kernel.org,
Ilias Apalodimas <ilias.apalodimas@linaro.org>,
Linux Kernel Mailing List <linux-kernel@vger.kernel.org>,
evgreen@chromium.org,
Bjorn Andersson <bjorn.andersson@linaro.org>,
Networking <netdev@vger.kernel.org>,
Linux ARM <linux-arm-kernel@lists.infradead.org>,
Alex Elder <elder@linaro.org>,
Johannes Berg <johannes@sipsolutions.net>,
linux-soc@vger.kernel.org, abhishek.esse@gmail.com,
cpratapa@codeaurora.org, Ben Chan <benchan@google.com>
Subject: Re: [PATCH v2 00/17] net: introduce Qualcomm IPA driver
Date: Tue, 18 Jun 2019 15:15:42 -0600 [thread overview]
Message-ID: <6c70950d0c78bc02a3d016918ec3929e@codeaurora.org> (raw)
In-Reply-To: <CAK8P3a2onXpxiE4y9PzRwuPM2dh=h_BKz7Eb0=LLPgBbZoK1bQ@mail.gmail.com>
On 2019-06-18 14:55, Arnd Bergmann wrote:
> On Tue, Jun 18, 2019 at 10:36 PM Johannes Berg
> <johannes@sipsolutions.net> wrote:
>>
>> On Tue, 2019-06-18 at 21:59 +0200, Arnd Bergmann wrote:
>> >
>> > From my understanding, the ioctl interface would create the lower
>> > netdev after talking to the firmware, and then user space would use
>> > the rmnet interface to create a matching upper-level device for that.
>> > This is an artifact of the strong separation of ipa and rmnet in the
>> > code.
>>
>> Huh. But if rmnet has muxing, and IPA supports that, why would you
>> ever
>> need multiple lower netdevs?
>
> From my reading of the code, there is always exactly a 1:1 relationship
> between an rmnet netdev an an ipa netdev. rmnet does the encapsulation/
> decapsulation of the qmap data and forwards it to the ipa netdev,
> which then just passes data through between a hardware queue and
> its netdevice.
>
There is a n:1 relationship between rmnet and IPA.
rmnet does the de-muxing to multiple netdevs based on the mux id
in the MAP header for RX packets and vice versa.
> [side note: on top of that, rmnet also does "aggregation", which may
> be a confusing term that only means transferring multiple frames
> at once]
>
>> > ipa definitely has multiple hardware queues, and the Alex'
>> > driver does implement the data path on those, just not the
>> > configuration to enable them.
>>
>> OK, but perhaps you don't actually have enough to use one for each
>> session?
>
> I'm lacking the terminology here, but what I understood was that
> the netdev and queue again map to a session.
>
>> > Guessing once more, I suspect the the XON/XOFF flow control
>> > was a workaround for the fact that rmnet and ipa have separate
>> > queues. The hardware channel on IPA may fill up, but user space
>> > talks to rmnet and still add more frames to it because it doesn't
>> > know IPA is busy.
>> >
>> > Another possible explanation would be that this is actually
>> > forwarding state from the base station to tell the driver to
>> > stop sending data over the air.
>>
>> Yeah, but if you actually have a hardware queue per upper netdev then
>> you don't really need this - you just stop the netdev queue when the
>> hardware queue is full, and you have flow control automatically.
>>
>> So I really don't see any reason to have these messages going back and
>> forth unless you plan to have multiple sessions muxed on a single
>> hardware queue.
>
Hardware may flow control specific PDNs (rmnet interfaces) based on QoS
-
not necessarily only in case of hardware queue full.
> Sure, I definitely understand what you mean, and I agree that would
> be the right way to do it. All I said is that this is not how it was
> done
> in rmnet (this was again my main concern about the rmnet design
> after I learned it was required for ipa) ;-)
>
> Arnd
--
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum,
a Linux Foundation Collaborative Project
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
next prev parent reply other threads:[~2019-06-18 21:15 UTC|newest]
Thread overview: 227+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-31 3:53 [PATCH v2 00/17] net: introduce Qualcomm IPA driver Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 01/17] bitfield.h: add FIELD_MAX() and field_max() Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 02/17] dt-bindings: soc: qcom: add IPA bindings Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-06-10 22:08 ` Rob Herring
2019-06-10 22:08 ` Rob Herring
2019-06-11 2:11 ` Alex Elder
2019-06-11 2:11 ` Alex Elder
2019-07-03 15:09 ` Alex Elder
2019-07-03 15:09 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 03/17] soc: qcom: ipa: main code Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 21:50 ` David Miller
2019-05-31 21:50 ` David Miller
2019-05-31 22:25 ` Alex Elder
2019-05-31 22:25 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 04/17] soc: qcom: ipa: configuration data Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 05/17] soc: qcom: ipa: clocking, interrupts, and memory Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 06/17] soc: qcom: ipa: GSI headers Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 07/17] soc: qcom: ipa: the generic software interface Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 08/17] soc: qcom: ipa: GSI transactions Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 09/17] soc: qcom: ipa: IPA interface to GSI Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 10/17] soc: qcom: ipa: IPA endpoints Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 11/17] soc: qcom: ipa: immediate commands Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 12/17] soc: qcom: ipa: IPA network device and microcontroller Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 13/17] soc: qcom: ipa: AP/modem communications Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 14/17] soc: qcom: ipa: support build of IPA code Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 15/17] MAINTAINERS: add entry for the Qualcomm IPA driver Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 16/17] arm64: dts: sdm845: add IPA information Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 3:53 ` [PATCH v2 17/17] arm64: defconfig: enable build of IPA code Alex Elder
2019-05-31 3:53 ` Alex Elder
2019-05-31 14:58 ` [PATCH v2 00/17] net: introduce Qualcomm IPA driver Dan Williams
2019-05-31 14:58 ` Dan Williams
2019-05-31 16:36 ` Alex Elder
2019-05-31 16:36 ` Alex Elder
2019-05-31 19:19 ` Arnd Bergmann
2019-05-31 19:19 ` Arnd Bergmann
2019-05-31 20:47 ` Alex Elder
2019-05-31 20:47 ` Alex Elder
2019-05-31 21:12 ` Arnd Bergmann
2019-05-31 21:12 ` Arnd Bergmann
2019-05-31 22:08 ` Alex Elder
2019-05-31 22:08 ` Alex Elder
2019-06-07 17:43 ` Alex Elder
2019-06-07 17:43 ` Alex Elder
2019-05-31 23:33 ` Bjorn Andersson
2019-05-31 23:33 ` Bjorn Andersson
2019-05-31 23:59 ` Subash Abhinov Kasiviswanathan
2019-05-31 23:59 ` Subash Abhinov Kasiviswanathan
2019-06-03 10:04 ` Arnd Bergmann
2019-06-03 10:04 ` Arnd Bergmann
2019-06-03 13:32 ` Alex Elder
2019-06-03 13:32 ` Alex Elder
2019-06-04 8:13 ` Arnd Bergmann
2019-06-04 8:13 ` Arnd Bergmann
2019-06-04 15:18 ` Dan Williams
2019-06-04 15:18 ` Dan Williams
2019-06-04 20:04 ` Arnd Bergmann
2019-06-04 20:04 ` Arnd Bergmann
2019-06-04 21:29 ` Dan Williams
2019-06-04 21:29 ` Dan Williams
2019-06-06 17:42 ` Alex Elder
2019-06-06 17:42 ` Alex Elder
2019-06-11 8:12 ` Johannes Berg
2019-06-11 8:12 ` Johannes Berg
2019-06-11 11:56 ` Arnd Bergmann
2019-06-11 11:56 ` Arnd Bergmann
2019-06-11 15:53 ` Dan Williams
2019-06-11 15:53 ` Dan Williams
2019-06-11 16:52 ` Subash Abhinov Kasiviswanathan
2019-06-11 16:52 ` Subash Abhinov Kasiviswanathan
2019-06-11 17:22 ` Dan Williams
2019-06-11 17:22 ` Dan Williams
2019-06-12 8:31 ` Arnd Bergmann
2019-06-12 8:31 ` Arnd Bergmann
2019-06-12 14:27 ` Dan Williams
2019-06-12 14:27 ` Dan Williams
2019-06-12 15:06 ` Arnd Bergmann
2019-06-12 15:06 ` Arnd Bergmann
2019-06-17 11:42 ` Johannes Berg
2019-06-17 11:42 ` Johannes Berg
2019-06-17 12:25 ` Johannes Berg
2019-06-17 12:25 ` Johannes Berg
2019-06-17 12:25 ` Johannes Berg
2019-06-18 15:20 ` Alex Elder
2019-06-18 15:20 ` Alex Elder
2019-06-18 18:06 ` Dan Williams
2019-06-18 18:06 ` Dan Williams
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:21 ` Alex Elder
2019-06-25 14:14 ` Johannes Berg
2019-06-25 14:14 ` Johannes Berg
2019-06-26 13:36 ` Alex Elder
2019-06-26 13:36 ` Alex Elder
2019-06-26 17:55 ` Johannes Berg
2019-06-26 17:55 ` Johannes Berg
2019-06-26 17:55 ` Johannes Berg
2019-06-18 18:48 ` Johannes Berg
2019-06-18 18:48 ` Johannes Berg
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:21 ` Alex Elder
2019-06-18 13:45 ` Alex Elder
2019-06-18 13:45 ` Alex Elder
2019-06-18 19:03 ` Johannes Berg
2019-06-18 19:03 ` Johannes Berg
2019-06-18 20:09 ` Arnd Bergmann
2019-06-18 20:09 ` Arnd Bergmann
2019-06-18 20:15 ` Johannes Berg
2019-06-18 20:15 ` Johannes Berg
2019-06-18 20:15 ` Johannes Berg
2019-06-18 20:33 ` Arnd Bergmann
2019-06-18 20:33 ` Arnd Bergmann
2019-06-18 20:33 ` Arnd Bergmann
2019-06-18 20:39 ` Johannes Berg
2019-06-18 20:39 ` Johannes Berg
2019-06-18 21:06 ` Arnd Bergmann
2019-06-18 21:06 ` Arnd Bergmann
2019-06-19 20:56 ` Dan Williams
2019-06-19 20:56 ` Dan Williams
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:40 ` Arnd Bergmann
2019-06-24 16:40 ` Arnd Bergmann
2019-06-25 14:19 ` Johannes Berg
2019-06-25 14:19 ` Johannes Berg
2019-06-26 13:39 ` Alex Elder
2019-06-26 13:39 ` Alex Elder
2019-06-26 13:58 ` Arnd Bergmann
2019-06-26 13:58 ` Arnd Bergmann
2019-06-26 17:48 ` Johannes Berg
2019-06-26 17:48 ` Johannes Berg
2019-06-26 17:45 ` Johannes Berg
2019-06-26 17:45 ` Johannes Berg
2019-06-26 17:45 ` Johannes Berg
2019-06-26 13:51 ` Alex Elder
2019-06-26 13:51 ` Alex Elder
2019-06-17 11:28 ` Johannes Berg
2019-06-17 11:28 ` Johannes Berg
2019-06-17 11:28 ` Johannes Berg
2019-06-18 13:16 ` Alex Elder
2019-06-18 13:16 ` Alex Elder
2019-06-18 13:48 ` Arnd Bergmann
2019-06-18 13:48 ` Arnd Bergmann
2019-06-18 19:14 ` Johannes Berg
2019-06-18 19:14 ` Johannes Berg
2019-06-18 19:14 ` Johannes Berg
2019-06-18 19:59 ` Arnd Bergmann
2019-06-18 19:59 ` Arnd Bergmann
2019-06-18 19:59 ` Arnd Bergmann
2019-06-18 20:36 ` Johannes Berg
2019-06-18 20:36 ` Johannes Berg
2019-06-18 20:55 ` Arnd Bergmann
2019-06-18 20:55 ` Arnd Bergmann
2019-06-18 20:55 ` Arnd Bergmann
2019-06-18 21:02 ` Johannes Berg
2019-06-18 21:02 ` Johannes Berg
2019-06-18 21:02 ` Johannes Berg
2019-06-18 21:15 ` Subash Abhinov Kasiviswanathan [this message]
2019-06-18 21:15 ` Subash Abhinov Kasiviswanathan
2019-06-19 12:23 ` Arnd Bergmann
2019-06-19 12:23 ` Arnd Bergmann
2019-06-19 18:47 ` Subash Abhinov Kasiviswanathan
2019-06-19 18:47 ` Subash Abhinov Kasiviswanathan
2019-06-20 1:25 ` Dan Williams
2019-06-20 1:25 ` Dan Williams
2019-06-20 1:25 ` Dan Williams
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:21 ` Alex Elder
2019-06-17 12:14 ` Johannes Berg
2019-06-17 12:14 ` Johannes Berg
2019-06-18 14:00 ` Alex Elder
2019-06-18 14:00 ` Alex Elder
2019-06-18 19:22 ` Johannes Berg
2019-06-18 19:22 ` Johannes Berg
2019-06-18 19:22 ` Johannes Berg
2019-06-24 16:21 ` Alex Elder
2019-06-24 16:21 ` Alex Elder
2019-06-03 14:50 ` Dan Williams
2019-06-03 14:50 ` Dan Williams
2019-06-03 14:54 ` Dan Williams
2019-06-03 14:54 ` Dan Williams
2019-06-03 15:52 ` Alex Elder
2019-06-03 15:52 ` Alex Elder
2019-06-03 16:18 ` Dan Williams
2019-06-03 16:18 ` Dan Williams
2019-06-03 19:04 ` Subash Abhinov Kasiviswanathan
2019-06-03 19:04 ` Subash Abhinov Kasiviswanathan
2019-06-04 15:21 ` Dan Williams
2019-06-04 15:21 ` Dan Williams
2019-05-31 23:27 ` Bjorn Andersson
2019-05-31 23:27 ` Bjorn Andersson
2019-05-31 23:27 ` Bjorn Andersson
2019-06-10 2:44 ` Alex Elder
2019-06-10 2:44 ` Alex Elder
2019-06-20 13:41 ` [PATCH v2 05/17] soc: qcom: ipa: clocking, interrupts, and memory Hillf Danton
2019-06-20 13:41 ` Hillf Danton
2019-06-24 16:30 ` WWAN Controller Framework (was IPA [PATCH v2 00/17]) Alex Elder
2019-06-24 16:30 ` Alex Elder
2019-06-24 17:06 ` Alex Elder
2019-06-24 17:06 ` Alex Elder
2019-06-25 14:34 ` Johannes Berg
2019-06-25 14:34 ` Johannes Berg
2019-06-26 13:40 ` Alex Elder
2019-06-26 13:40 ` Alex Elder
2019-06-26 17:58 ` Johannes Berg
2019-06-26 17:58 ` Johannes Berg
2019-06-24 19:54 ` Dan Williams
2019-06-24 19:54 ` Dan Williams
2019-06-24 21:16 ` Alex Elder
2019-06-24 21:16 ` Alex Elder
2019-06-24 21:16 ` Alex Elder
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6c70950d0c78bc02a3d016918ec3929e@codeaurora.org \
--to=subashab@codeaurora.org \
--cc=abhishek.esse@gmail.com \
--cc=arnd@arndb.de \
--cc=benchan@google.com \
--cc=bjorn.andersson@linaro.org \
--cc=cpratapa@codeaurora.org \
--cc=davem@davemloft.net \
--cc=dcbw@redhat.com \
--cc=devicetree@vger.kernel.org \
--cc=ejcaruso@google.com \
--cc=elder@linaro.org \
--cc=evgreen@chromium.org \
--cc=ilias.apalodimas@linaro.org \
--cc=johannes@sipsolutions.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-soc@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=syadagir@codeaurora.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.