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

From: Alex Elder
Date: Wed Mar 11 2020 - 08:33:47 EST


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 <elder@xxxxxxxxxx>
>> ---
>> 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/20200311024240.26834-1-elder@xxxxxxxxxx/

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
>