From: Steve Schrock <steve.schrock@getcruise.com>
To: ofono@lists.linux.dev
Cc: Steve Schrock <steve.schrock@getcruise.com>
Subject: [PATCH v3 3/4] qmi: Clean up the __debug_msg function
Date: Fri, 1 Mar 2024 16:18:47 -0600 [thread overview]
Message-ID: <20240301221851.1445586-3-steve.schrock@getcruise.com> (raw)
In-Reply-To: <20240301221851.1445586-1-steve.schrock@getcruise.com>
There was a lot of redundancy in the function and it was also not
ready to handle QRTR messages that do not have a QMUX header.
---
drivers/qmimodem/qmi.c | 140 +++++++++++++++++++----------------------
1 file changed, 65 insertions(+), 75 deletions(-)
diff --git a/drivers/qmimodem/qmi.c b/drivers/qmimodem/qmi.c
index a2a715e9..c65860ce 100644
--- a/drivers/qmimodem/qmi.c
+++ b/drivers/qmimodem/qmi.c
@@ -527,94 +527,49 @@ int qmi_error_to_ofono_cme(int qmi_error)
}
}
-static void __debug_msg(const char dir, const void *buf, size_t len,
- qmi_debug_func_t function, void *user_data)
+static void __debug_msg(char dir, const struct qmi_message_hdr *msg,
+ uint32_t service_type, uint8_t transaction_type,
+ uint16_t tid, uint8_t client, uint16_t overall_length,
+ qmi_debug_func_t function, void *user_data)
{
- const struct qmi_mux_hdr *hdr;
- const struct qmi_message_hdr *msg;
const char *service;
- const void *ptr;
+ const void *ptr = ((const void *) msg) + QMI_MESSAGE_HDR_SIZE;
uint16_t offset;
char strbuf[72 + 16], *str;
bool pending_print = false;
+ const char *transaction_type_string;
- if (!function || !len)
+ if (!function)
return;
- hdr = buf;
-
str = strbuf;
- service = __service_type_to_string(hdr->service);
+ service = __service_type_to_string(service_type);
if (service)
str += sprintf(str, "%c %s", dir, service);
else
- str += sprintf(str, "%c %d", dir, hdr->service);
-
- if (hdr->service == QMI_SERVICE_CONTROL) {
- const struct qmi_control_hdr *ctl;
- const char *type;
-
- ctl = buf + QMI_MUX_HDR_SIZE;
- msg = buf + QMI_MUX_HDR_SIZE + QMI_CONTROL_HDR_SIZE;
- ptr = buf + QMI_MUX_HDR_SIZE + QMI_CONTROL_HDR_SIZE +
- QMI_MESSAGE_HDR_SIZE;
-
- switch (ctl->type) {
- case 0x00:
- type = "_req";
- break;
- case 0x01:
- type = "_resp";
- break;
- case 0x02:
- type = "_ind";
- break;
- default:
- type = "";
- break;
- }
-
- str += sprintf(str, "%s msg=%d len=%d", type,
- L_LE16_TO_CPU(msg->message),
- L_LE16_TO_CPU(msg->length));
-
- str += sprintf(str, " [client=%d,type=%d,tid=%d,len=%d]",
- hdr->client, ctl->type,
- ctl->transaction,
- L_LE16_TO_CPU(hdr->length));
- } else {
- const struct qmi_service_hdr *srv;
- const char *type;
-
- srv = buf + QMI_MUX_HDR_SIZE;
- msg = buf + QMI_MUX_HDR_SIZE + QMI_SERVICE_HDR_SIZE;
- ptr = buf + QMI_MUX_HDR_SIZE + QMI_SERVICE_HDR_SIZE +
- QMI_MESSAGE_HDR_SIZE;
+ str += sprintf(str, "%c %d", dir, service_type);
- switch (srv->type) {
- case 0x00:
- type = "_req";
- break;
- case 0x02:
- type = "_resp";
- break;
- case 0x04:
- type = "_ind";
- break;
- default:
- type = "";
- break;
- }
+ switch (transaction_type) {
+ case 0x00:
+ transaction_type_string = "_req";
+ break;
+ case 0x01:
+ transaction_type_string = "_resp";
+ break;
+ case 0x02:
+ transaction_type_string = "_ind";
+ break;
+ default:
+ transaction_type_string = "";
+ break;
+ }
- str += sprintf(str, "%s msg=%d len=%d", type,
- L_LE16_TO_CPU(msg->message),
- L_LE16_TO_CPU(msg->length));
+ str += sprintf(str, "%s msg=%d len=%d", transaction_type_string,
+ L_LE16_TO_CPU(msg->message),
+ L_LE16_TO_CPU(msg->length));
- str += sprintf(str, " [client=%d,type=%d,tid=%d,len=%d]",
- hdr->client, srv->type,
- L_LE16_TO_CPU(srv->transaction),
- L_LE16_TO_CPU(hdr->length));
- }
+ str += sprintf(str, " [client=%d,type=%d,tid=%d,len=%d]",
+ client, transaction_type, tid, overall_length);
function(strbuf, user_data);
@@ -664,6 +619,41 @@ static void __debug_msg(const char dir, const void *buf, size_t len,
function(strbuf, user_data);
}
+static void __qmux_debug_msg(const char dir, const void *buf, size_t len,
+ qmi_debug_func_t function, void *user_data)
+{
+ const struct qmi_mux_hdr *hdr;
+ const struct qmi_message_hdr *msg;
+ uint8_t transaction_type;
+ uint16_t tid;
+
+ if (!len)
+ return;
+
+ hdr = buf;
+
+ if (hdr->service == QMI_SERVICE_CONTROL) {
+ const struct qmi_control_hdr *ctl;
+
+ ctl = buf + QMI_MUX_HDR_SIZE;
+ msg = buf + QMI_MUX_HDR_SIZE + QMI_CONTROL_HDR_SIZE;
+
+ transaction_type = ctl->type;
+ tid = ctl->transaction;
+ } else {
+ const struct qmi_service_hdr *srv;
+
+ srv = buf + QMI_MUX_HDR_SIZE;
+ msg = buf + QMI_MUX_HDR_SIZE + QMI_SERVICE_HDR_SIZE;
+
+ transaction_type = srv->type;
+ tid = L_LE16_TO_CPU(srv->transaction);
+ }
+
+ __debug_msg(dir, msg, hdr->service, transaction_type, tid, hdr->client,
+ L_LE16_TO_CPU(hdr->length), function, user_data);
+}
+
static void __debug_device(struct qmi_device *device,
const char *format, ...)
{
@@ -1284,7 +1274,7 @@ static int qmi_device_qmux_write(struct qmi_device *device,
l_util_hexdump(false, req->data, bytes_written,
device->debug_func, device->debug_data);
- __debug_msg(' ', req->data, bytes_written,
+ __qmux_debug_msg(' ', req->data, bytes_written,
device->debug_func, device->debug_data);
hdr = (struct qmi_mux_hdr *) req->data;
@@ -1371,7 +1361,7 @@ static bool received_qmux_data(struct l_io *io, void *user_data)
if (bytes_read - offset < len)
break;
- __debug_msg(' ', buf + offset, len,
+ __qmux_debug_msg(' ', buf + offset, len,
qmux->super.debug_func, qmux->super.debug_data);
msg = buf + offset + QMI_MUX_HDR_SIZE;
--
2.43.2
--
*Confidentiality Note:* We care about protecting our proprietary
information, confidential material, and trade secrets. This message may
contain some or all of those things. Cruise will suffer material harm if
anyone other than the intended recipient disseminates or takes any action
based on this message. If you have received this message (including any
attachments) in error, please delete it immediately and notify the sender
promptly.
next prev parent reply other threads:[~2024-03-01 22:19 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-01 22:18 [PATCH v3 1/4] qmi: Add an abstract group id to services and requests Steve Schrock
2024-03-01 22:18 ` [PATCH v3 2/4] qmi: Store the service info in the request Steve Schrock
2024-03-01 22:18 ` Steve Schrock [this message]
2024-03-01 22:18 ` [PATCH v3 4/4] qmi: Enable QRTR service writes and reads Steve Schrock
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240301221851.1445586-3-steve.schrock@getcruise.com \
--to=steve.schrock@getcruise.com \
--cc=ofono@lists.linux.dev \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).