tty: n_gsm: add enumeration for gsm encodings
JIRA: https://issues.redhat.com/browse/RHEL-24205 commit 19fb0a664f6448fe7d6a8105d25f308a28ba499d Author: Daniel Starke <daniel.starke@siemens.com> Date: Wed Aug 31 09:37:55 2022 +0200 tty: n_gsm: add enumeration for gsm encodings Add an enumeration for the gsm mux encoding types to improve code readability and to avoid invalid values. Only two values are defined by the standard: - basic option mode - advanced option mode (uses ISO HDLC standard transparency mechanism) Signed-off-by: Daniel Starke <daniel.starke@siemens.com> Link: https://lore.kernel.org/r/20220831073800.7459-1-daniel.starke@siemens.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Andrew Halaney <ahalaney@redhat.com>
This commit is contained in:
parent
d978c3eaca
commit
a052906f4b
|
@ -234,6 +234,11 @@ struct gsm_control {
|
|||
int error; /* Error if any */
|
||||
};
|
||||
|
||||
enum gsm_encoding {
|
||||
GSM_BASIC_OPT,
|
||||
GSM_ADV_OPT,
|
||||
};
|
||||
|
||||
enum gsm_mux_state {
|
||||
GSM_SEARCH,
|
||||
GSM_START,
|
||||
|
@ -280,7 +285,7 @@ struct gsm_mux {
|
|||
unsigned int address;
|
||||
unsigned int count;
|
||||
bool escape;
|
||||
int encoding;
|
||||
enum gsm_encoding encoding;
|
||||
u8 control;
|
||||
u8 fcs;
|
||||
u8 *txframe; /* TX framing buffer */
|
||||
|
@ -797,7 +802,7 @@ static int gsm_send(struct gsm_mux *gsm, int addr, int cr, int control)
|
|||
*dp++ = (addr << 2) | (ocr << 1) | EA;
|
||||
*dp++ = control;
|
||||
|
||||
if (gsm->encoding == 0)
|
||||
if (gsm->encoding == GSM_BASIC_OPT)
|
||||
*dp++ = EA; /* Length of data = 0 */
|
||||
|
||||
*dp = 0xFF - gsm_fcs_add_block(INIT_FCS, msg->data, dp - msg->data);
|
||||
|
@ -916,7 +921,7 @@ static int gsm_send_packet(struct gsm_mux *gsm, struct gsm_msg *msg)
|
|||
int len, ret;
|
||||
|
||||
|
||||
if (gsm->encoding == 0) {
|
||||
if (gsm->encoding == GSM_BASIC_OPT) {
|
||||
gsm->txframe[0] = GSM0_SOF;
|
||||
memcpy(gsm->txframe + 1, msg->data, msg->len);
|
||||
gsm->txframe[msg->len + 1] = GSM0_SOF;
|
||||
|
@ -1068,7 +1073,7 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg)
|
|||
u8 *fcs = dp + msg->len;
|
||||
|
||||
/* Fill in the header */
|
||||
if (gsm->encoding == 0) {
|
||||
if (gsm->encoding == GSM_BASIC_OPT) {
|
||||
if (msg->len < 128)
|
||||
*--dp = (msg->len << 1) | EA;
|
||||
else {
|
||||
|
@ -2868,7 +2873,7 @@ static int gsm_activate_mux(struct gsm_mux *gsm)
|
|||
if (dlci == NULL)
|
||||
return -ENOMEM;
|
||||
|
||||
if (gsm->encoding == 0)
|
||||
if (gsm->encoding == GSM_BASIC_OPT)
|
||||
gsm->receive = gsm0_receive;
|
||||
else
|
||||
gsm->receive = gsm1_receive;
|
||||
|
@ -2987,7 +2992,7 @@ static struct gsm_mux *gsm_alloc_mux(void)
|
|||
gsm->k = K;
|
||||
gsm->ftype = UIH;
|
||||
gsm->adaption = 1;
|
||||
gsm->encoding = 1;
|
||||
gsm->encoding = GSM_ADV_OPT;
|
||||
gsm->mru = 64; /* Default to encoding 1 so these should be 64 */
|
||||
gsm->mtu = 64;
|
||||
gsm->dead = true; /* Avoid early tty opens */
|
||||
|
@ -3095,7 +3100,7 @@ static int gsm_config(struct gsm_mux *gsm, struct gsm_config *c)
|
|||
gsm->initiator = c->initiator;
|
||||
gsm->mru = c->mru;
|
||||
gsm->mtu = c->mtu;
|
||||
gsm->encoding = c->encapsulation;
|
||||
gsm->encoding = c->encapsulation ? GSM_ADV_OPT : GSM_BASIC_OPT;
|
||||
gsm->adaption = c->adaption;
|
||||
gsm->n2 = c->n2;
|
||||
|
||||
|
@ -3322,8 +3327,7 @@ static int gsmld_open(struct tty_struct *tty)
|
|||
tty->receive_room = 65536;
|
||||
|
||||
/* Attach the initial passive connection */
|
||||
gsm->encoding = 1;
|
||||
|
||||
gsm->encoding = GSM_ADV_OPT;
|
||||
gsmld_attach_gsm(tty, gsm);
|
||||
|
||||
return 0;
|
||||
|
@ -3719,7 +3723,7 @@ static int gsm_modem_upd_via_msc(struct gsm_dlci *dlci, u8 brk)
|
|||
struct gsm_control *ctrl;
|
||||
int len = 2;
|
||||
|
||||
if (dlci->gsm->encoding != 0)
|
||||
if (dlci->gsm->encoding != GSM_BASIC_OPT)
|
||||
return 0;
|
||||
|
||||
modembits[0] = (dlci->addr << 2) | 2 | EA; /* DLCI, Valid, EA */
|
||||
|
@ -3750,7 +3754,7 @@ static int gsm_modem_update(struct gsm_dlci *dlci, u8 brk)
|
|||
/* Send convergence layer type 2 empty data frame. */
|
||||
gsm_modem_upd_via_data(dlci, brk);
|
||||
return 0;
|
||||
} else if (dlci->gsm->encoding == 0) {
|
||||
} else if (dlci->gsm->encoding == GSM_BASIC_OPT) {
|
||||
/* Send as MSC control message. */
|
||||
return gsm_modem_upd_via_msc(dlci, brk);
|
||||
}
|
||||
|
@ -3774,8 +3778,8 @@ static int gsm_carrier_raised(struct tty_port *port)
|
|||
* Basic mode with control channel in ADM mode may not respond
|
||||
* to CMD_MSC at all and modem_rx is empty.
|
||||
*/
|
||||
if (gsm->encoding == 0 && gsm->dlci[0]->mode == DLCI_MODE_ADM &&
|
||||
!dlci->modem_rx)
|
||||
if (gsm->encoding == GSM_BASIC_OPT &&
|
||||
gsm->dlci[0]->mode == DLCI_MODE_ADM && !dlci->modem_rx)
|
||||
return 1;
|
||||
|
||||
return dlci->modem_rx & TIOCM_CD;
|
||||
|
|
Loading…
Reference in New Issue