linux/drivers/net/ipa
Alex Elder 51c48ce264 net: ipa: signal when tag transfer completes
There are times, such as when the modem crashes, when we issue
commands to clear the IPA hardware pipeline.  These commands include
a data transfer command that delivers a small packet directly to the
default (AP<-LAN RX) endpoint.

The places that do this wait for the transactions that contain these
commands to complete, but the pipeline can't be assumed clear until
the sent packet has been *received*.

The small transfer will be delivered with a status structure, and
that status will indicate its tag is valid.  This is the only place
we send a tagged packet, so we use the tag to determine when the
pipeline clear packet has arrived.

Add a completion to the IPA structure to to be used to signal
the receipt of a pipeline clear packet.  Create a new function
ipa_cmd_pipeline_clear_wait() that will wait for that completion.

Reinitialize the completion whenever pipeline clear commands are
added to a transaction.  Extend ipa_endpoint_status_tag() to check
whether a packet whose status contains a valid tag was sent from the
AP->command TX endpoint, and if so, signal the new IPA completion.

Have all callers of ipa_cmd_pipeline_clear_add() wait for the
pipeline clear indication after the transaction that clears the
pipeline has completed.

Signed-off-by: Alex Elder <elder@linaro.org>
Acked-by: Willem de Bruijn <willemb@google.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2021-01-28 20:23:26 -08:00
..
gsi_private.h net: ipa: fix kerneldoc comments 2020-07-13 17:11:53 -07:00
gsi_reg.h net: ipa: adjust GSI register addresses 2020-11-28 12:13:55 -08:00
gsi_trans.c net: ipa: pass the correct size when freeing DMA memory 2020-12-04 14:38:44 -08:00
gsi_trans.h net: ipa: declare the page pointer type in "gsi_trans.h" 2021-01-09 13:51:37 -08:00
gsi.c net: ipa: disable IEOB interrupts before clearing 2021-01-23 13:16:00 -08:00
gsi.h net: ipa: support retries on generic GSI commands 2020-11-20 18:45:52 -08:00
ipa_clock.c net: ipa: allow arbitrary number of interconnects 2021-01-18 11:51:06 -08:00
ipa_clock.h net: ipa: define clock and interconnect data 2020-11-20 18:44:59 -08:00
ipa_cmd.c net: ipa: signal when tag transfer completes 2021-01-28 20:23:26 -08:00
ipa_cmd.h net: ipa: signal when tag transfer completes 2021-01-28 20:23:26 -08:00
ipa_data-sc7180.c net: ipa: allow arbitrary number of interconnects 2021-01-18 11:51:06 -08:00
ipa_data-sdm845.c net: ipa: allow arbitrary number of interconnects 2021-01-18 11:51:06 -08:00
ipa_data.h net: ipa: allow arbitrary number of interconnects 2021-01-18 11:51:06 -08:00
ipa_endpoint.c net: ipa: signal when tag transfer completes 2021-01-28 20:23:26 -08:00
ipa_endpoint.h net: ipa: define enumerated types consistently 2020-11-18 15:53:48 -08:00
ipa_gsi.c net: ipa: include declarations in "ipa_gsi.c" 2020-07-07 12:43:18 -07:00
ipa_gsi.h net: ipa: fix kerneldoc comments 2020-07-13 17:11:53 -07:00
ipa_interrupt.c net: ipa: fix two inconsistent IPA register names 2020-11-18 15:53:48 -08:00
ipa_interrupt.h net: ipa: move definition of enum ipa_irq_id 2020-11-18 15:53:49 -08:00
ipa_main.c net: ipa: signal when tag transfer completes 2021-01-28 20:23:26 -08:00
ipa_mem.c net: ipa: change a warning to debug 2020-11-11 14:07:00 -08:00
ipa_mem.h net: ipa: redefine struct ipa_mem_data 2020-05-04 11:26:55 -07:00
ipa_modem.c net: ipa: modem: add missing SET_NETDEV_DEV() for proper sysfs links 2021-01-08 18:45:35 -08:00
ipa_modem.h soc: qcom: ipa: modem and microcontroller 2020-03-08 22:07:10 -07:00
ipa_qmi_msg.c net: ipa: fix QMI structure definition bugs 2020-07-07 12:43:18 -07:00
ipa_qmi_msg.h net: ipa: define enumerated types consistently 2020-11-18 15:53:48 -08:00
ipa_qmi.c net: ipa: convert comma to semicolon 2020-12-09 16:23:08 -08:00
ipa_qmi.h soc: qcom: ipa: AP/modem communications 2020-03-08 22:07:10 -07:00
ipa_reg.c
ipa_reg.h net: ipa: set up IPA v4.5 Qtime configuration 2020-12-01 18:05:28 -08:00
ipa_smp2p.c drivers: ipa: fix typos for ipa_smp2p structure doc 2020-05-14 13:06:55 -07:00
ipa_smp2p.h net: ipa: fix kerneldoc comments 2020-07-13 17:11:53 -07:00
ipa_table.c net: ipa: share field mask values for IPA hash registers 2020-11-18 15:53:48 -08:00
ipa_table.h net: ipa: fix kerneldoc comments 2020-07-13 17:11:53 -07:00
ipa_uc.c net: ipa: a few last IPA register cleanups 2020-11-18 15:53:49 -08:00
ipa_uc.h soc: qcom: ipa: modem and microcontroller 2020-03-08 22:07:10 -07:00
ipa_version.h net: ipa: update IPA registers for IPA v4.5 2020-11-28 12:13:54 -08:00
ipa.h net: ipa: signal when tag transfer completes 2021-01-28 20:23:26 -08:00
Kconfig net: ipa: add config dependency on QCOM_SMEM 2021-01-12 20:11:38 -08:00
Makefile soc: qcom: ipa: support build of IPA code 2020-03-08 22:07:10 -07:00