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 >