linux/drivers/net/ipa
Alex Elder 4c9d631adb net: ipa: introduce channel flow control
One quirk for certain versions of IPA is that endpoint DELAY mode
does not work properly.  IPA DELAY mode prevents any packets from
being delivered to the IPA core for processing on a TX endpoint.
The AP uses DELAY mode when the modem crashes, to prevent modem TX
endpoints from generating traffic during crash recovery.  Without
this, there is a chance the hardware will stall during recovery from
a modem crash.

To achieve a similar effect, a GSI FLOW_CONTROLLED channel state
was created.  A STARTED TX channel can be placed in FLOW_CONTROLLED
state, which prevents the transfer of any more packets.  A channel
in FLOW_CONTROLLED state can be either returned to STARTED state, or
can be transitioned to STOPPED state.

Because this operates on GSI channels, two generic commands were
added to allow the AP to control this state for modem channels
(similar to the ALLOCATE and HALT channel commands).

Previously the code assumed this quirk only applied to IPA v4.2.
In fact, channel flow control (rather than endpoint DELAY mode)
should be used for all versions *starting* with IPA v4.2.

Signed-off-by: Alex Elder <elder@linaro.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-11-25 20:03:20 -08:00
..
gsi.c net: ipa: introduce channel flow control 2021-11-25 20:03:20 -08:00
gsi.h net: ipa: introduce channel flow control 2021-11-25 20:03:20 -08:00
gsi_private.h
gsi_reg.h net: ipa: introduce channel flow control 2021-11-25 20:03:20 -08:00
gsi_trans.c net: ipa: use WARN_ON() rather than assertions 2021-07-26 22:38:11 +01:00
gsi_trans.h
ipa.h net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_cmd.c net: ipa: use WARN_ON() rather than assertions 2021-07-26 22:38:11 +01:00
ipa_cmd.h net: ipa: kill the remaining conditional validation code 2021-07-26 22:38:11 +01:00
ipa_data-v3.1.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data-v3.5.1.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data-v4.2.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data-v4.5.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data-v4.9.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data-v4.11.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_data.h net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_endpoint.c net: ipa: introduce channel flow control 2021-11-25 20:03:20 -08:00
ipa_endpoint.h net: ipa: three small fixes 2021-04-09 20:57:26 -07:00
ipa_gsi.c
ipa_gsi.h
ipa_interrupt.c net: ipa: use autosuspend 2021-08-22 09:44:17 +01:00
ipa_interrupt.h net: ipa: set up IPA interrupts earlier 2021-07-26 23:09:18 +01:00
ipa_main.c net: ipa: kill ipa_modem_init() 2021-11-25 19:37:33 -08:00
ipa_mem.c net: ipa: Use 'for_each_clear_bit' when possible 2021-11-19 11:19:11 +00:00
ipa_mem.h net: ipa: don't index mem data array by ID 2021-06-10 14:50:08 -07:00
ipa_modem.c net: ipa: kill ipa_modem_init() 2021-11-25 19:37:33 -08:00
ipa_modem.h net: ipa: kill ipa_modem_init() 2021-11-25 19:37:33 -08:00
ipa_power.c net: ipa: rename "ipa_clock.c" 2021-08-22 09:44:17 +01:00
ipa_power.h net: ipa: rename "ipa_clock.c" 2021-08-22 09:44:17 +01:00
ipa_qmi.c net: ipa: kill ipa_modem_setup() 2021-07-26 23:09:18 +01:00
ipa_qmi.h net: ipa: kill ipa_modem_setup() 2021-07-26 23:09:18 +01:00
ipa_qmi_msg.c
ipa_qmi_msg.h
ipa_reg.c
ipa_reg.h net: ipa: use WARN_ON() rather than assertions 2021-07-26 22:38:11 +01:00
ipa_resource.c net/ipa: ipa_resource: Fix wrong for loop range 2021-11-12 19:59:45 -08:00
ipa_resource.h net: ipa: get rid of empty IPA functions 2021-04-09 20:57:25 -07:00
ipa_smp2p.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_smp2p.h net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_sysfs.c net: ipa: introduce sysfs code 2021-06-11 14:13:18 -07:00
ipa_sysfs.h net: ipa: introduce sysfs code 2021-06-11 14:13:18 -07:00
ipa_table.c net: ipa: zero unused portions of filter table memory 2021-11-25 19:37:33 -08:00
ipa_table.h net: ipa: always validate filter and route tables 2021-07-26 22:38:11 +01:00
ipa_uc.c net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_uc.h net: ipa: rename ipa_clock_* symbols 2021-08-22 09:44:17 +01:00
ipa_version.h net: ipa: introduce sysfs code 2021-06-11 14:13:18 -07:00
Kconfig qcom_scm: hide Kconfig symbol 2021-10-07 16:51:57 +02:00
Makefile net: ipa: rename "ipa_clock.c" 2021-08-22 09:44:17 +01:00