diff options
Diffstat (limited to 'drivers/tty/n_gsm.c')
| -rw-r--r-- | drivers/tty/n_gsm.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/tty/n_gsm.c b/drivers/tty/n_gsm.c index 04ef3ef0a422..c5f8e5bda2b2 100644 --- a/drivers/tty/n_gsm.c +++ b/drivers/tty/n_gsm.c | |||
| @@ -716,8 +716,8 @@ static void __gsm_data_queue(struct gsm_dlci *dlci, struct gsm_msg *msg) | |||
| 716 | if (msg->len < 128) | 716 | if (msg->len < 128) |
| 717 | *--dp = (msg->len << 1) | EA; | 717 | *--dp = (msg->len << 1) | EA; |
| 718 | else { | 718 | else { |
| 719 | *--dp = (msg->len >> 6) | EA; | 719 | *--dp = (msg->len >> 7); /* bits 7 - 15 */ |
| 720 | *--dp = (msg->len & 127) << 1; | 720 | *--dp = (msg->len & 127) << 1; /* bits 0 - 6 */ |
| 721 | } | 721 | } |
| 722 | } | 722 | } |
| 723 | 723 | ||
| @@ -968,6 +968,8 @@ static void gsm_control_reply(struct gsm_mux *gsm, int cmd, u8 *data, | |||
| 968 | { | 968 | { |
| 969 | struct gsm_msg *msg; | 969 | struct gsm_msg *msg; |
| 970 | msg = gsm_data_alloc(gsm, 0, dlen + 2, gsm->ftype); | 970 | msg = gsm_data_alloc(gsm, 0, dlen + 2, gsm->ftype); |
| 971 | if (msg == NULL) | ||
| 972 | return; | ||
| 971 | msg->data[0] = (cmd & 0xFE) << 1 | EA; /* Clear C/R */ | 973 | msg->data[0] = (cmd & 0xFE) << 1 | EA; /* Clear C/R */ |
| 972 | msg->data[1] = (dlen << 1) | EA; | 974 | msg->data[1] = (dlen << 1) | EA; |
| 973 | memcpy(msg->data + 2, data, dlen); | 975 | memcpy(msg->data + 2, data, dlen); |
| @@ -2375,6 +2377,7 @@ static int gsmld_config(struct tty_struct *tty, struct gsm_mux *gsm, | |||
| 2375 | gsm->mru = c->mru; | 2377 | gsm->mru = c->mru; |
| 2376 | gsm->encoding = c->encapsulation; | 2378 | gsm->encoding = c->encapsulation; |
| 2377 | gsm->adaption = c->adaption; | 2379 | gsm->adaption = c->adaption; |
| 2380 | gsm->n2 = c->n2; | ||
| 2378 | 2381 | ||
| 2379 | if (c->i == 1) | 2382 | if (c->i == 1) |
| 2380 | gsm->ftype = UIH; | 2383 | gsm->ftype = UIH; |
