2020-03-06 04:30:25

by Alex Elder

[permalink] [raw]
Subject: [PATCH v2 15/17] soc: qcom: ipa: support build of IPA code

Add build and Kconfig support for the Qualcomm IPA driver.

Signed-off-by: Alex Elder <[email protected]>
---
drivers/net/Kconfig | 2 ++
drivers/net/Makefile | 1 +
drivers/net/ipa/Kconfig | 19 +++++++++++++++++++
drivers/net/ipa/Makefile | 12 ++++++++++++
4 files changed, 34 insertions(+)
create mode 100644 drivers/net/ipa/Kconfig
create mode 100644 drivers/net/ipa/Makefile

diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
index 66e410e58c8e..02565bc2be8a 100644
--- a/drivers/net/Kconfig
+++ b/drivers/net/Kconfig
@@ -444,6 +444,8 @@ source "drivers/net/fddi/Kconfig"

source "drivers/net/hippi/Kconfig"

+source "drivers/net/ipa/Kconfig"
+
config NET_SB1000
tristate "General Instruments Surfboard 1000"
depends on PNP
diff --git a/drivers/net/Makefile b/drivers/net/Makefile
index 65967246f240..94b60800887a 100644
--- a/drivers/net/Makefile
+++ b/drivers/net/Makefile
@@ -47,6 +47,7 @@ obj-$(CONFIG_ETHERNET) += ethernet/
obj-$(CONFIG_FDDI) += fddi/
obj-$(CONFIG_HIPPI) += hippi/
obj-$(CONFIG_HAMRADIO) += hamradio/
+obj-$(CONFIG_QCOM_IPA) += ipa/
obj-$(CONFIG_PLIP) += plip/
obj-$(CONFIG_PPP) += ppp/
obj-$(CONFIG_PPP_ASYNC) += ppp/
diff --git a/drivers/net/ipa/Kconfig b/drivers/net/ipa/Kconfig
new file mode 100644
index 000000000000..b8cb7cadbf75
--- /dev/null
+++ b/drivers/net/ipa/Kconfig
@@ -0,0 +1,19 @@
+config QCOM_IPA
+ tristate "Qualcomm IPA support"
+ depends on ARCH_QCOM && 64BIT && NET
+ select QCOM_QMI_HELPERS
+ select QCOM_MDT_LOADER
+ default QCOM_Q6V5_COMMON
+ help
+ Choose Y or M here to include support for the Qualcomm
+ IP Accelerator (IPA), a hardware block present in some
+ Qualcomm SoCs. The IPA is a programmable protocol processor
+ that is capable of generic hardware handling of IP packets,
+ including routing, filtering, and NAT. Currently the IPA
+ driver supports only basic transport of network traffic
+ between the AP and modem, on the Qualcomm SDM845 SoC.
+
+ Note that if selected, the selection type must match that
+ of QCOM_Q6V5_COMMON (Y or M).
+
+ If unsure, say N.
diff --git a/drivers/net/ipa/Makefile b/drivers/net/ipa/Makefile
new file mode 100644
index 000000000000..afe5df1e6eee
--- /dev/null
+++ b/drivers/net/ipa/Makefile
@@ -0,0 +1,12 @@
+# Un-comment the next line if you want to validate configuration data
+#ccflags-y += -DIPA_VALIDATE
+
+obj-$(CONFIG_QCOM_IPA) += ipa.o
+
+ipa-y := ipa_main.o ipa_clock.o ipa_reg.o ipa_mem.o \
+ ipa_table.o ipa_interrupt.o gsi.o gsi_trans.o \
+ ipa_gsi.o ipa_smp2p.o ipa_uc.o \
+ ipa_endpoint.o ipa_cmd.o ipa_modem.o \
+ ipa_qmi.o ipa_qmi_msg.o
+
+ipa-y += ipa_data-sdm845.o ipa_data-sc7180.o
--
2.20.1


2020-03-11 10:55:48

by Jon Hunter

[permalink] [raw]
Subject: Re: [PATCH v2 15/17] soc: qcom: ipa: support build of IPA code


On 06/03/2020 04:28, Alex Elder wrote:
> Add build and Kconfig support for the Qualcomm IPA driver.
>
> Signed-off-by: Alex Elder <[email protected]>
> ---
> drivers/net/Kconfig | 2 ++
> drivers/net/Makefile | 1 +
> drivers/net/ipa/Kconfig | 19 +++++++++++++++++++
> drivers/net/ipa/Makefile | 12 ++++++++++++
> 4 files changed, 34 insertions(+)
> create mode 100644 drivers/net/ipa/Kconfig
> create mode 100644 drivers/net/ipa/Makefile
>
> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
> index 66e410e58c8e..02565bc2be8a 100644
> --- a/drivers/net/Kconfig
> +++ b/drivers/net/Kconfig
> @@ -444,6 +444,8 @@ source "drivers/net/fddi/Kconfig"
>
> source "drivers/net/hippi/Kconfig"
>
> +source "drivers/net/ipa/Kconfig"
> +
> config NET_SB1000
> tristate "General Instruments Surfboard 1000"
> depends on PNP
> diff --git a/drivers/net/Makefile b/drivers/net/Makefile
> index 65967246f240..94b60800887a 100644
> --- a/drivers/net/Makefile
> +++ b/drivers/net/Makefile
> @@ -47,6 +47,7 @@ obj-$(CONFIG_ETHERNET) += ethernet/
> obj-$(CONFIG_FDDI) += fddi/
> obj-$(CONFIG_HIPPI) += hippi/
> obj-$(CONFIG_HAMRADIO) += hamradio/
> +obj-$(CONFIG_QCOM_IPA) += ipa/
> obj-$(CONFIG_PLIP) += plip/
> obj-$(CONFIG_PPP) += ppp/
> obj-$(CONFIG_PPP_ASYNC) += ppp/
> diff --git a/drivers/net/ipa/Kconfig b/drivers/net/ipa/Kconfig
> new file mode 100644
> index 000000000000..b8cb7cadbf75
> --- /dev/null
> +++ b/drivers/net/ipa/Kconfig
> @@ -0,0 +1,19 @@
> +config QCOM_IPA
> + tristate "Qualcomm IPA support"
> + depends on ARCH_QCOM && 64BIT && NET
> + select QCOM_QMI_HELPERS
> + select QCOM_MDT_LOADER
> + default QCOM_Q6V5_COMMON
> + help
> + Choose Y or M here to include support for the Qualcomm
> + IP Accelerator (IPA), a hardware block present in some
> + Qualcomm SoCs. The IPA is a programmable protocol processor
> + that is capable of generic hardware handling of IP packets,
> + including routing, filtering, and NAT. Currently the IPA
> + driver supports only basic transport of network traffic
> + between the AP and modem, on the Qualcomm SDM845 SoC.
> +
> + Note that if selected, the selection type must match that
> + of QCOM_Q6V5_COMMON (Y or M).
> +
> + If unsure, say N.
> diff --git a/drivers/net/ipa/Makefile b/drivers/net/ipa/Makefile
> new file mode 100644
> index 000000000000..afe5df1e6eee
> --- /dev/null
> +++ b/drivers/net/ipa/Makefile
> @@ -0,0 +1,12 @@
> +# Un-comment the next line if you want to validate configuration data
> +#ccflags-y += -DIPA_VALIDATE
> +
> +obj-$(CONFIG_QCOM_IPA) += ipa.o
> +
> +ipa-y := ipa_main.o ipa_clock.o ipa_reg.o ipa_mem.o \
> + ipa_table.o ipa_interrupt.o gsi.o gsi_trans.o \
> + ipa_gsi.o ipa_smp2p.o ipa_uc.o \
> + ipa_endpoint.o ipa_cmd.o ipa_modem.o \
> + ipa_qmi.o ipa_qmi_msg.o
> +
> +ipa-y += ipa_data-sdm845.o ipa_data-sc7180.o


This patch is also causing build issues on the current -next ...

CC [M] drivers/net/ipa/gsi.o
In file included from include/linux/build_bug.h:5:0,
from include/linux/bitfield.h:10,
from drivers/net/ipa/gsi.c:9:
drivers/net/ipa/gsi.c: In function ‘gsi_validate_build’:
drivers/net/ipa/gsi.c:220:39: error: implicit declaration of function ‘field_max’ [-Werror=implicit-function-declaration]
BUILD_BUG_ON(GSI_RING_ELEMENT_SIZE > field_max(ELEMENT_SIZE_FMASK));
^
include/linux/compiler.h:374:9: note: in definition of macro ‘__compiletime_assert’
if (!(condition)) \
^~~~~~~~~
include/linux/compiler.h:394:2: note: in expansion of macro ‘_compiletime_assert’
_compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
^~~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^~~~~~~~~~~~~~~~~~
include/linux/build_bug.h:50:2: note: in expansion of macro ‘BUILD_BUG_ON_MSG’
BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
^~~~~~~~~~~~~~~~
drivers/net/ipa/gsi.c:220:2: note: in expansion of macro ‘BUILD_BUG_ON’
BUILD_BUG_ON(GSI_RING_ELEMENT_SIZE > field_max(ELEMENT_SIZE_FMASK));
^~~~~~~~~~~~

Jon

--
nvpublic

2020-03-11 12:34:15

by Alex Elder

[permalink] [raw]
Subject: Re: [PATCH v2 15/17] soc: qcom: ipa: support build of IPA code

On 3/11/20 5:54 AM, Jon Hunter wrote:
>
> On 06/03/2020 04:28, Alex Elder wrote:
>> Add build and Kconfig support for the Qualcomm IPA driver.
>>
>> Signed-off-by: Alex Elder <[email protected]>
>> ---
>> drivers/net/Kconfig | 2 ++
>> drivers/net/Makefile | 1 +
>> drivers/net/ipa/Kconfig | 19 +++++++++++++++++++
>> drivers/net/ipa/Makefile | 12 ++++++++++++
>> 4 files changed, 34 insertions(+)
>> create mode 100644 drivers/net/ipa/Kconfig
>> create mode 100644 drivers/net/ipa/Makefile
>>
>> diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig
>> index 66e410e58c8e..02565bc2be8a 100644
>> --- a/drivers/net/Kconfig
>> +++ b/drivers/net/Kconfig
>> @@ -444,6 +444,8 @@ source "drivers/net/fddi/Kconfig"
>>
>> source "drivers/net/hippi/Kconfig"
>>
>> +source "drivers/net/ipa/Kconfig"
>> +
>> config NET_SB1000
>> tristate "General Instruments Surfboard 1000"
>> depends on PNP
>> diff --git a/drivers/net/Makefile b/drivers/net/Makefile
>> index 65967246f240..94b60800887a 100644
>> --- a/drivers/net/Makefile
>> +++ b/drivers/net/Makefile
>> @@ -47,6 +47,7 @@ obj-$(CONFIG_ETHERNET) += ethernet/
>> obj-$(CONFIG_FDDI) += fddi/
>> obj-$(CONFIG_HIPPI) += hippi/
>> obj-$(CONFIG_HAMRADIO) += hamradio/
>> +obj-$(CONFIG_QCOM_IPA) += ipa/
>> obj-$(CONFIG_PLIP) += plip/
>> obj-$(CONFIG_PPP) += ppp/
>> obj-$(CONFIG_PPP_ASYNC) += ppp/
>> diff --git a/drivers/net/ipa/Kconfig b/drivers/net/ipa/Kconfig
>> new file mode 100644
>> index 000000000000..b8cb7cadbf75
>> --- /dev/null
>> +++ b/drivers/net/ipa/Kconfig
>> @@ -0,0 +1,19 @@
>> +config QCOM_IPA
>> + tristate "Qualcomm IPA support"
>> + depends on ARCH_QCOM && 64BIT && NET
>> + select QCOM_QMI_HELPERS
>> + select QCOM_MDT_LOADER
>> + default QCOM_Q6V5_COMMON
>> + help
>> + Choose Y or M here to include support for the Qualcomm
>> + IP Accelerator (IPA), a hardware block present in some
>> + Qualcomm SoCs. The IPA is a programmable protocol processor
>> + that is capable of generic hardware handling of IP packets,
>> + including routing, filtering, and NAT. Currently the IPA
>> + driver supports only basic transport of network traffic
>> + between the AP and modem, on the Qualcomm SDM845 SoC.
>> +
>> + Note that if selected, the selection type must match that
>> + of QCOM_Q6V5_COMMON (Y or M).
>> +
>> + If unsure, say N.
>> diff --git a/drivers/net/ipa/Makefile b/drivers/net/ipa/Makefile
>> new file mode 100644
>> index 000000000000..afe5df1e6eee
>> --- /dev/null
>> +++ b/drivers/net/ipa/Makefile
>> @@ -0,0 +1,12 @@
>> +# Un-comment the next line if you want to validate configuration data
>> +#ccflags-y += -DIPA_VALIDATE
>> +
>> +obj-$(CONFIG_QCOM_IPA) += ipa.o
>> +
>> +ipa-y := ipa_main.o ipa_clock.o ipa_reg.o ipa_mem.o \
>> + ipa_table.o ipa_interrupt.o gsi.o gsi_trans.o \
>> + ipa_gsi.o ipa_smp2p.o ipa_uc.o \
>> + ipa_endpoint.o ipa_cmd.o ipa_modem.o \
>> + ipa_qmi.o ipa_qmi_msg.o
>> +
>> +ipa-y += ipa_data-sdm845.o ipa_data-sc7180.
Yes, a needed patch defining field_max() is missing. I sent
an updated request to include it in net-next to resolve this
issue.

https://lore.kernel.org/netdev/[email protected]/

Thank you for pointing it out.

-Alex

> This patch is also causing build issues on the current -next ...
>
> CC [M] drivers/net/ipa/gsi.o
> In file included from include/linux/build_bug.h:5:0,
> from include/linux/bitfield.h:10,
> from drivers/net/ipa/gsi.c:9:
> drivers/net/ipa/gsi.c: In function ‘gsi_validate_build’:
> drivers/net/ipa/gsi.c:220:39: error: implicit declaration of function ‘field_max’ [-Werror=implicit-function-declaration]
> BUILD_BUG_ON(GSI_RING_ELEMENT_SIZE > field_max(ELEMENT_SIZE_FMASK));
> ^
> include/linux/compiler.h:374:9: note: in definition of macro ‘__compiletime_assert’
> if (!(condition)) \
> ^~~~~~~~~
> include/linux/compiler.h:394:2: note: in expansion of macro ‘_compiletime_assert’
> _compiletime_assert(condition, msg, __compiletime_assert_, __LINE__)
> ^~~~~~~~~~~~~~~~~~~
> include/linux/build_bug.h:39:37: note: in expansion of macro ‘compiletime_assert’
> #define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
> ^~~~~~~~~~~~~~~~~~
> include/linux/build_bug.h:50:2: note: in expansion of macro ‘BUILD_BUG_ON_MSG’
> BUILD_BUG_ON_MSG(condition, "BUILD_BUG_ON failed: " #condition)
> ^~~~~~~~~~~~~~~~
> drivers/net/ipa/gsi.c:220:2: note: in expansion of macro ‘BUILD_BUG_ON’
> BUILD_BUG_ON(GSI_RING_ELEMENT_SIZE > field_max(ELEMENT_SIZE_FMASK));
> ^~~~~~~~~~~~
>
> Jon
>