linux/drivers/net/ipa
Alex Elder 6fcd42242e soc: qcom: ipa: kill IPA_RX_BUFFER_ORDER
Don't assume the receive buffer size is a power-of-2 number of pages.
Instead, define the receive buffer size independently, and then
compute the page order from that size when needed.

This fixes a build problem that arises when the ARM64_PAGE_SHIFT
config option is set to have a page size greater than 4KB.  The
problem was identified by Linux Kernel Functional Testing.

The IPA code basically assumed the page size to be 4KB.  A larger page
size caused the receive buffer size to become correspondingly larger
(32KB or 128KB for ARM64_16K_PAGES and ARM64_64K_PAGES, respectively).
The receive buffer size is used to compute an "aggregation byte limit"
value that gets programmed into the hardware, and the large page sizes
caused that limit value to be too big to fit in a 5 bit field.  This
triggered a BUILD_BUG_ON() call in ipa_endpoint_validate_build().

This fix causes a lot of receive buffer memory to be wasted if
system is configured for page size greater than 4KB.  But such a
misguided configuration will now build successfully.

Reported-by: Naresh Kamboju <naresh.kamboju@linaro.org>
Signed-off-by: Alex Elder <elder@linaro.org>
Reviewed-by: Bjorn Andersson <bjorn.andersson@linaro.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
2020-03-21 19:46:43 -07:00
..
Kconfig remoteproc: clean up notification config 2020-03-16 17:31:51 -07:00
Makefile soc: qcom: ipa: support build of IPA code 2020-03-08 22:07:10 -07:00
gsi.c soc: qcom: ipa: the generic software interface 2020-03-08 22:07:09 -07:00
gsi.h soc: qcom: ipa: GSI headers 2020-03-08 22:07:09 -07:00
gsi_private.h soc: qcom: ipa: GSI headers 2020-03-08 22:07:09 -07:00
gsi_reg.h soc: qcom: ipa: GSI headers 2020-03-08 22:07:09 -07:00
gsi_trans.c soc: qcom: ipa: GSI transactions 2020-03-08 22:07:10 -07:00
gsi_trans.h soc: qcom: ipa: GSI transactions 2020-03-08 22:07:10 -07:00
ipa.h
ipa_clock.c soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_clock.h soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_cmd.c soc: qcom: ipa: immediate commands 2020-03-08 22:07:10 -07:00
ipa_cmd.h soc: qcom: ipa: immediate commands 2020-03-08 22:07:10 -07:00
ipa_data-sc7180.c
ipa_data-sdm845.c
ipa_data.h
ipa_endpoint.c soc: qcom: ipa: kill IPA_RX_BUFFER_ORDER 2020-03-21 19:46:43 -07:00
ipa_endpoint.h soc: qcom: ipa: IPA endpoints 2020-03-08 22:07:10 -07:00
ipa_gsi.c soc: qcom: ipa: IPA interface to GSI 2020-03-08 22:07:10 -07:00
ipa_gsi.h soc: qcom: ipa: IPA interface to GSI 2020-03-08 22:07:10 -07:00
ipa_interrupt.c soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_interrupt.h soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_main.c net: ipa: fix platform_no_drv_owner.cocci warnings 2020-03-19 21:01:20 -07:00
ipa_mem.c soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_mem.h soc: qcom: ipa: clocking, interrupts, and memory 2020-03-08 22:07:09 -07:00
ipa_modem.c soc: qcom: ipa: fix spelling mistake "cahces" -> "caches" 2020-03-11 23:34:32 -07:00
ipa_modem.h soc: qcom: ipa: modem and microcontroller 2020-03-08 22:07:10 -07:00
ipa_qmi.c soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_qmi.h soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_qmi_msg.c soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_qmi_msg.h soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_reg.c
ipa_reg.h
ipa_smp2p.c soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_smp2p.h soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_table.c soc: qcom: ipa: filter and routing tables 2020-03-08 22:07:10 -07:00
ipa_table.h soc: qcom: ipa: filter and routing tables 2020-03-08 22:07:10 -07:00
ipa_uc.c soc: qcom: ipa: modem and microcontroller 2020-03-08 22:07:10 -07:00
ipa_uc.h soc: qcom: ipa: modem and microcontroller 2020-03-08 22:07:10 -07:00
ipa_version.h