Messages in this thread | | | Subject | Re: [PATCH 0/6] In-kernel QMI handling | From | Dan Williams <> | Date | Fri, 04 Aug 2017 10:36:07 -0500 |
| |
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 >
| |