[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-Id: <20220831073800.7459-4-daniel.starke@siemens.com>
Date: Wed, 31 Aug 2022 09:37:58 +0200
From: "D. Starke" <daniel.starke@...mens.com>
To: linux-serial@...r.kernel.org, gregkh@...uxfoundation.org,
jirislaby@...nel.org
Cc: linux-kernel@...r.kernel.org,
Daniel Starke <daniel.starke@...mens.com>
Subject: [PATCH v3 4/6] tty: n_gsm: introduce gsm_control_command() function
From: Daniel Starke <daniel.starke@...mens.com>
Move the content of gsm_control_transmit() to a new function
gsm_control_command() with a more generic signature and analog to
gsm_control_reply(). Use this within gsm_control_transmit().
This is needed to simplify upcoming functional additions.
Signed-off-by: Daniel Starke <daniel.starke@...mens.com>
---
drivers/tty/n_gsm.c | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
Incorporated review comments from Jiri Slaby since v2:
- leading changed tab to space in function comment of gsm_control_command()
- made function parameter data to const in gsm_control_command()
- added extra line-feeds in gsm_control_command()
- kept signess and constness of other parameters in gsm_control_command()
to align with gsm_control_reply() as stated in the commit message;
possible changes here are subject to a different commit which should
keep the changes in alignment to the signature of gsm_control_reply()
Link: https://lore.kernel.org/all/fe014b7b-a1d2-9be9-625b-2f630934c56c@kernel.org/
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c
index 9d0b4f79b65a..e050d76385ba 100644
--- a/drivers/tty/n_gsm.c
+++ b/drivers/tty/n_gsm.c
@@ -1316,6 +1316,31 @@ static void gsm_dlci_data_kick(struct gsm_dlci *dlci)
*/
+/**
+ * gsm_control_command - send a command frame to a control
+ * @gsm: gsm channel
+ * @cmd: the command to use
+ * @data: data to follow encoded info
+ * @dlen: length of data
+ *
+ * Encode up and queue a UI/UIH frame containing our command.
+ */
+static int gsm_control_command(struct gsm_mux *gsm, int cmd, const u8 *data,
+ int dlen)
+{
+ struct gsm_msg *msg = gsm_data_alloc(gsm, 0, dlen + 2, gsm->ftype);
+
+ if (msg == NULL)
+ return -ENOMEM;
+
+ msg->data[0] = (cmd << 1) | CR | EA; /* Set C/R */
+ msg->data[1] = (dlen << 1) | EA;
+ memcpy(msg->data + 2, data, dlen);
+ gsm_data_queue(gsm->dlci[0], msg);
+
+ return 0;
+}
+
/**
* gsm_control_reply - send a response frame to a control
* @gsm: gsm channel
@@ -1621,13 +1646,7 @@ static void gsm_control_response(struct gsm_mux *gsm, unsigned int command,
static void gsm_control_transmit(struct gsm_mux *gsm, struct gsm_control *ctrl)
{
- struct gsm_msg *msg = gsm_data_alloc(gsm, 0, ctrl->len + 2, gsm->ftype);
- if (msg == NULL)
- return;
- msg->data[0] = (ctrl->cmd << 1) | CR | EA; /* command */
- msg->data[1] = (ctrl->len << 1) | EA;
- memcpy(msg->data + 2, ctrl->data, ctrl->len);
- gsm_data_queue(gsm->dlci[0], msg);
+ gsm_control_command(gsm, ctrl->cmd, ctrl->data, ctrl->len);
}
/**
--
2.34.1
Powered by blists - more mailing lists