AP MODEM QMI HANDSHAKE(9)

πŸ“¦ version 7.3.1, in nixpkgs unstable

πŸ’… AP/Modem QMI Handshake(9) πŸ’…

okay bestie, welcome to the Kernel API Manual, section 9 β€” this is the AP/Modem QMI Handshake page, and it's literally the lore for how the AP and modem agree that everything is ready. ✨

The AP and modem perform a "handshake" at initialization time to ensure both sides know when everything is ready to begin operating. The AP driver (this code) uses two QMI handles (endpoints) for this: a client using a service on the modem, and a server to service modem requests (and to supply an indication message from the AP). Once the handshake is complete, the AP and modem may begin IPA operation. This occurs only when the AP IPA driver, modem IPA driver, and IPA microcontroller are ready. periodt.

The QMI service on the modem expects to receive an INIT_DRIVER request from the AP, which contains parameters used by the modem during initialization. The AP sends this request as soon as it knows the modem side service is available. The modem responds to this request, and if this response contains a success result, the AP knows the modem IPA driver is ready. 🫢

The modem is responsible for loading firmware on the IPA microcontroller. This occurs only during the initial modem boot. The modem sends a separate DRIVER_INIT_COMPLETE request to the AP to report that the microcontroller is ready. The AP may assume the microcontroller is ready and remain so (even if the modem reboots) once it has received and responded to this request.

There is one final exchange involved in the handshake. It is required on the initial modem boot, but optional (but in practice does occur) on subsequent boots. The modem expects to receive a final INIT_COMPLETE indication message from the AP when it is about to begin its normal operation. The AP will only send this message after it has received and responded to an INDICATION_REGISTER request from the modem.

So in summary:

  • Whenever the AP learns the modem has booted and its IPA QMI service is available, it sends an INIT_DRIVER request to the modem. The modem supplies a success response when it is ready to operate. πŸŽ€
  • On the initial boot, the modem sets up the IPA microcontroller, and sends a DRIVER_INIT_COMPLETE request to the AP when this is done.
  • When the modem is ready to receive an INIT_COMPLETE indication from the AP, it sends an INDICATION_REGISTER request to the AP.
  • On the initial modem boot, everything is ready when:
    • AP has received a success response from its INIT_DRIVER request
    • AP has responded to a DRIVER_INIT_COMPLETE request
    • AP has responded to an INDICATION_REGISTER request from the modem
    • AP has sent an INIT_COMPLETE indication to the modem
  • On subsequent modem boots, everything is ready when:
    • AP has received a success response from its INIT_DRIVER request
    • AP has responded to a DRIVER_INIT_COMPLETE request
    • The INDICATION_REGISTER request and INIT_COMPLETE indication are optional for non-initial modem boots, and have no bearing on the determination of when things are "ready"

πŸ‘€ SEE ALSO πŸ‘€

  • Kernel file ./drivers/net/ipa/ipa_qmi.c

okay that's the whole vibe πŸ’– β€” this page was hanging out at ./drivers/net/ipa, dated October 2026, and it's called AP/Modem QMI Handshake(9). slay, you got this πŸ’…βœ¨

πŸ“¦ where this page comes from