From: Alex Elder <elder@ieee.org>
To: Sireesh Kodali <sireeshkodali1@gmail.com>,
phone-devel@vger.kernel.org,
~postmarketos/upstreaming@lists.sr.ht, netdev@vger.kernel.org,
linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org,
elder@kernel.org
Subject: Re: [RFC PATCH 00/17] net: ipa: Add support for IPA v2.x
Date: Wed, 13 Oct 2021 17:27:25 -0500 [thread overview]
Message-ID: <09719f6e-a886-68b8-3fb9-cc0a92db41af@ieee.org> (raw)
In-Reply-To: <20210920030811.57273-1-sireeshkodali1@gmail.com>
On 9/19/21 10:07 PM, Sireesh Kodali wrote:
> Hi,
>
> This RFC patch series adds support for IPA v2, v2.5 and v2.6L
> (collectively referred to as IPA v2.x).
I'm sorry for the delay on this. I want to give this a
reasonable review, but it's been hard to prioritize doing
so. So for now I aim to give you some "easy" feedback,
knowing that this doesn't cover all issues. This is an
RFC, after all...
So this isn't a "real review" but I'll try to be helpful.
Overall, I appreciate how well you adhered to the patterns and
conventions used elsewhere in the driver. There are many levels
to that, but I think consistency is a huge factor in keeping
code maintainable. I didn't see all that many places where
I felt like whining about naming you used, or oddities in
indentation, and so on.
Abstracting the GSI layer seemed to be done more easily than
I expected. I didn't dive deep into the BAM code, and would
want to pay much closer attention to that in the future.
The BAM/GSI difference is the biggest one dividing IPA v3.0+
from its predecessors. But as you see, the 32- versus 64-bit
address and field size differences lead to some ugliness
that's hard to avoid.
Anyway, nice work; I hope my feedback is helpful.
-Alex
> Basic description:
> IPA v2.x is the older version of the IPA hardware found on Qualcomm
> SoCs. The biggest differences between v2.x and later versions are:
> - 32 bit hardware (the IPA microcontroler is 32 bit)
> - BAM (as opposed to GSI as a DMA transport)
> - Changes to the QMI init sequence (described in the commit message)
>
> The fact that IPA v2.x are 32 bit only affects us directly in the table
> init code. However, its impact is felt in other parts of the code, as it
> changes the size of fields of various structs (e.g. in the commands that
> can be sent).
>
> BAM support is already present in the mainline kernel, however it lacks
> two things:
> - Support for DMA metadata, to pass the size of the transaction from the
> hardware to the dma client
> - Support for immediate commands, which are needed to pass commands from
> the driver to the microcontroller
>
> Separate patch series have been created to deal with these (linked in
> the end)
>
> This patch series adds support for BAM as a transport by refactoring the
> current GSI code to create an abstract uniform API on top. This API
> allows the rest of the driver to handle DMA without worrying about the
> IPA version.
>
> The final thing that hasn't been touched by this patch series is the IPA
> resource manager. On the downstream CAF kernel, the driver seems to
> share the resource code between IPA v2.x and IPA v3.x, which should mean
> all it would take to add support for resources on IPA v2.x would be to
> add the definitions in the ipa_data.
>
> Testing:
> This patch series was tested on kernel version 5.13 on a phone with
> SDM625 (IPA v2.6L), and a phone with MSM8996 (IPA v2.5). The phone with
> IPA v2.5 was able to get an IP address using modem-manager, although
> sending/receiving packets was not tested. The phone with IPA v2.6L was
> able to get an IP, but was unable to send/receive packets. Its modem
> also relies on IPA v2.6l's compression/decompression support, and
> without this patch series, the modem simply crashes and restarts,
> waiting for the IPA block to come up.
>
> This patch series is based on code from the downstream CAF kernel v4.9
>
> There are some things in this patch series that would obviously not get
> accepted in their current form:
> - All IPA 2.x data is in a single file
> - Some stray printks might still be around
> - Some values have been hardcoded (e.g. the filter_map)
> Please excuse these
>
> Lastly, this patch series depends upon the following patches for BAM:
> [0]: https://lkml.org/lkml/2021/9/19/126
> [1]: https://lkml.org/lkml/2021/9/19/135
>
> Regards,
> Sireesh Kodali
>
> Sireesh Kodali (10):
> net: ipa: Add IPA v2.x register definitions
> net: ipa: Add support for using BAM as a DMA transport
> net: ipa: Add support for IPA v2.x commands and table init
> net: ipa: Add support for IPA v2.x endpoints
> net: ipa: Add support for IPA v2.x memory map
> net: ipa: Add support for IPA v2.x in the driver's QMI interface
> net: ipa: Add support for IPA v2 microcontroller
> net: ipa: Add IPA v2.6L initialization sequence support
> net: ipa: Add hw config describing IPA v2.x hardware
> dt-bindings: net: qcom,ipa: Add support for MSM8953 and MSM8996 IPA
>
> Vladimir Lypak (7):
> net: ipa: Correct ipa_status_opcode enumeration
> net: ipa: revert to IPA_TABLE_ENTRY_SIZE for 32-bit IPA support
> net: ipa: Refactor GSI code
> net: ipa: Establish ipa_dma interface
> net: ipa: Check interrupts for availability
> net: ipa: Add timeout for ipa_cmd_pipeline_clear_wait
> net: ipa: Add support for IPA v2.x interrupts
>
> .../devicetree/bindings/net/qcom,ipa.yaml | 2 +
> drivers/net/ipa/Makefile | 11 +-
> drivers/net/ipa/bam.c | 525 ++++++++++++++++++
> drivers/net/ipa/gsi.c | 322 ++++++-----
> drivers/net/ipa/ipa.h | 8 +-
> drivers/net/ipa/ipa_cmd.c | 244 +++++---
> drivers/net/ipa/ipa_cmd.h | 20 +-
> drivers/net/ipa/ipa_data-v2.c | 369 ++++++++++++
> drivers/net/ipa/ipa_data-v3.1.c | 2 +-
> drivers/net/ipa/ipa_data-v3.5.1.c | 2 +-
> drivers/net/ipa/ipa_data-v4.11.c | 2 +-
> drivers/net/ipa/ipa_data-v4.2.c | 2 +-
> drivers/net/ipa/ipa_data-v4.5.c | 2 +-
> drivers/net/ipa/ipa_data-v4.9.c | 2 +-
> drivers/net/ipa/ipa_data.h | 4 +
> drivers/net/ipa/{gsi.h => ipa_dma.h} | 179 +++---
> .../ipa/{gsi_private.h => ipa_dma_private.h} | 46 +-
> drivers/net/ipa/ipa_endpoint.c | 188 ++++---
> drivers/net/ipa/ipa_endpoint.h | 6 +-
> drivers/net/ipa/ipa_gsi.c | 18 +-
> drivers/net/ipa/ipa_gsi.h | 12 +-
> drivers/net/ipa/ipa_interrupt.c | 36 +-
> drivers/net/ipa/ipa_main.c | 82 ++-
> drivers/net/ipa/ipa_mem.c | 55 +-
> drivers/net/ipa/ipa_mem.h | 5 +-
> drivers/net/ipa/ipa_power.c | 4 +-
> drivers/net/ipa/ipa_qmi.c | 37 +-
> drivers/net/ipa/ipa_qmi.h | 10 +
> drivers/net/ipa/ipa_reg.h | 184 +++++-
> drivers/net/ipa/ipa_resource.c | 3 +
> drivers/net/ipa/ipa_smp2p.c | 11 +-
> drivers/net/ipa/ipa_sysfs.c | 6 +
> drivers/net/ipa/ipa_table.c | 86 +--
> drivers/net/ipa/ipa_table.h | 6 +-
> drivers/net/ipa/{gsi_trans.c => ipa_trans.c} | 182 +++---
> drivers/net/ipa/{gsi_trans.h => ipa_trans.h} | 78 +--
> drivers/net/ipa/ipa_uc.c | 96 ++--
> drivers/net/ipa/ipa_version.h | 12 +
> 38 files changed, 2133 insertions(+), 726 deletions(-)
> create mode 100644 drivers/net/ipa/bam.c
> create mode 100644 drivers/net/ipa/ipa_data-v2.c
> rename drivers/net/ipa/{gsi.h => ipa_dma.h} (57%)
> rename drivers/net/ipa/{gsi_private.h => ipa_dma_private.h} (66%)
> rename drivers/net/ipa/{gsi_trans.c => ipa_trans.c} (80%)
> rename drivers/net/ipa/{gsi_trans.h => ipa_trans.h} (71%)
>
prev parent reply other threads:[~2021-10-13 22:28 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-09-20 3:07 [RFC PATCH 00/17] net: ipa: Add support for IPA v2.x Sireesh Kodali
2021-09-20 3:07 ` [RFC PATCH 01/17] net: ipa: Correct ipa_status_opcode enumeration Sireesh Kodali
2021-10-13 22:28 ` Alex Elder
2021-10-18 16:12 ` Sireesh Kodali
2021-09-20 3:07 ` [RFC PATCH 02/17] net: ipa: revert to IPA_TABLE_ENTRY_SIZE for 32-bit IPA support Sireesh Kodali
2021-10-13 22:28 ` Alex Elder
2021-10-18 16:16 ` Sireesh Kodali
2021-09-20 3:07 ` [RFC PATCH 04/17] net: ipa: Establish ipa_dma interface Sireesh Kodali
2021-10-13 22:29 ` Alex Elder
2021-10-18 16:45 ` Sireesh Kodali
2021-09-20 3:07 ` [RFC PATCH 05/17] net: ipa: Check interrupts for availability Sireesh Kodali
2021-10-13 22:29 ` Alex Elder
2021-09-20 3:08 ` [RFC PATCH 06/17] net: ipa: Add timeout for ipa_cmd_pipeline_clear_wait Sireesh Kodali
2021-10-13 22:29 ` Alex Elder
2021-10-18 17:02 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 07/17] net: ipa: Add IPA v2.x register definitions Sireesh Kodali
2021-10-13 22:29 ` Alex Elder
2021-10-18 17:25 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 08/17] net: ipa: Add support for IPA v2.x interrupts Sireesh Kodali
2021-10-13 22:29 ` Alex Elder
2021-09-20 3:08 ` [RFC PATCH 09/17] net: ipa: Add support for using BAM as a DMA transport Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 17:30 ` Sireesh Kodali
2021-09-20 3:08 ` [PATCH 10/17] net: ipa: Add support for IPA v2.x commands and table init Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 18:13 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 11/17] net: ipa: Add support for IPA v2.x endpoints Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 18:17 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 12/17] net: ipa: Add support for IPA v2.x memory map Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 18:19 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 13/17] net: ipa: Add support for IPA v2.x in the driver's QMI interface Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 18:22 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 14/17] net: ipa: Add support for IPA v2 microcontroller Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-09-20 3:08 ` [RFC PATCH 15/17] net: ipa: Add IPA v2.6L initialization sequence support Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-09-20 3:08 ` [RFC PATCH 16/17] net: ipa: Add hw config describing IPA v2.x hardware Sireesh Kodali
2021-10-13 22:30 ` Alex Elder
2021-10-18 18:35 ` Sireesh Kodali
2021-09-20 3:08 ` [RFC PATCH 17/17] dt-bindings: net: qcom,ipa: Add support for MSM8953 and MSM8996 IPA Sireesh Kodali
2021-09-23 12:42 ` Rob Herring
2021-10-13 22:31 ` Alex Elder
2021-10-13 22:27 ` Alex Elder [this message]
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=09719f6e-a886-68b8-3fb9-cc0a92db41af@ieee.org \
--to=elder@ieee.org \
--cc=elder@kernel.org \
--cc=linux-arm-msm@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=phone-devel@vger.kernel.org \
--cc=sireeshkodali1@gmail.com \
--cc=~postmarketos/upstreaming@lists.sr.ht \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).