Re: [PATCH 0/6] In-kernel QMI handling
flat view
From: Dan Williams <hidden>
Date: 2017-08-04 15:37:27
Also in:
linux-arm-msm, lkml
On Fri, 2017-08-04 at 07:59 -0700, Bjorn Andersson wrote:
This series starts by moving the common definitions of the QMUX protocol to the uapi header, as they are shared with clients - both in kernel and userspace. This series then introduces in-kernel helper functions for aiding the handling of QMI encoded messages in the kernel. QMI encoding is a wire-format used in exchanging messages between the majority of QRTR clients and services.
This raises a few red-flags for me. So far, we've kept almost everything QMI related in userspace and handled all QMI control-channel messages from libraries like libqmi or uqmi via the cdc-wdm driver and the "rmnet" interface via the qmi_wwan driver. The kernel drivers just serve as the transport. Can you describe what kinds of in-kernel drivers need to actually parse QMI messages as part of their operation? Dan
It then adds an abstractions to reduce the duplication of common code in drivers that needs to query the name server and send and receive encoded messages to a remote service. Finally it introduces a sample implementation for showing QRTR and the QMI helpers in action. The sample device instantiates in response to finding the "test service" and implements the "test protocol". Bjorn Andersson (6): net: qrtr: Invoke sk_error_report() after setting sk_err net: qrtr: Move constants to header file net: qrtr: Add control packet definition to uapi soc: qcom: Introduce QMI encoder/decoder soc: qcom: Introduce QMI helpers samples: Introduce Qualcomm QRTR sample client drivers/soc/qcom/Kconfig | 8 + drivers/soc/qcom/Makefile | 3 + drivers/soc/qcom/qmi_encdec.c | 812 ++++++++++++++++++++++++++++++++++++++ drivers/soc/qcom/qmi_interface.c | 540 +++++++++++++++++++++++++ include/linux/soc/qcom/qmi.h | 249 ++++++++++++ include/uapi/linux/qrtr.h | 35 ++ net/qrtr/qrtr.c | 16 +- samples/Kconfig | 8 + samples/Makefile | 2 +- samples/qrtr/Makefile | 1 + samples/qrtr/qrtr_sample_client.c | 603 ++++++++++++++++++++++++++++ 11 files changed, 2261 insertions(+), 16 deletions(-) create mode 100644 drivers/soc/qcom/qmi_encdec.c create mode 100644 drivers/soc/qcom/qmi_interface.c create mode 100644 include/linux/soc/qcom/qmi.h create mode 100644 samples/qrtr/Makefile create mode 100644 samples/qrtr/qrtr_sample_client.c