From db992c8a94d06a8e0905ad3055ddcf5219ab917a Mon Sep 17 00:00:00 2001 From: Karsten Keil Date: Wed, 8 Jul 2009 20:58:33 +0200 Subject: [PATCH] --- yaml --- r: 159057 b: refs/heads/master c: f3fad223ed69f406f33c9619c256858d5a5fc5c7 h: refs/heads/master i: 159055: b2805acad854cb9f08858a3231f556ca09530c68 v: v3 --- [refs] | 2 +- trunk/drivers/isdn/i4l/isdnhdlc.c | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/[refs] b/[refs] index 557f70ea880a..a97601bf1a50 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c38fc3bc2ecddd4f5278131603e6964cbed071b2 +refs/heads/master: f3fad223ed69f406f33c9619c256858d5a5fc5c7 diff --git a/trunk/drivers/isdn/i4l/isdnhdlc.c b/trunk/drivers/isdn/i4l/isdnhdlc.c index df345ce73f48..c989aa35dc2f 100644 --- a/trunk/drivers/isdn/i4l/isdnhdlc.c +++ b/trunk/drivers/isdn/i4l/isdnhdlc.c @@ -47,7 +47,7 @@ enum { HDLC_SEND_DATA, HDLC_SEND_CRC1, HDLC_SEND_FAST_FLAG, HDLC_SEND_FIRST_FLAG, HDLC_SEND_CRC2, HDLC_SEND_CLOSING_FLAG, HDLC_SEND_IDLE1, HDLC_SEND_FAST_IDLE, HDLC_SENDFLAG_B0, - HDLC_SENDFLAG_B1A6, HDLC_SENDFLAG_B7, STOPPED + HDLC_SENDFLAG_B1A6, HDLC_SENDFLAG_B7, STOPPED, HDLC_SENDFLAG_ONE }; void isdnhdlc_rcv_init(struct isdnhdlc_vars *hdlc, u32 features) @@ -362,6 +362,9 @@ int isdnhdlc_encode(struct isdnhdlc_vars *hdlc, const u8 *src, u16 slen, *count = slen; + /* special handling for one byte frames */ + if ((slen == 1) && (hdlc->state == HDLC_SEND_FAST_FLAG)) + hdlc->state = HDLC_SENDFLAG_ONE; while (dsize > 0) { if (hdlc->bit_shift == 0) { if (slen && !hdlc->do_closing) { @@ -407,6 +410,8 @@ int isdnhdlc_encode(struct isdnhdlc_vars *hdlc, const u8 *src, u16 slen, dsize--; break; } + /* fall through */ + case HDLC_SENDFLAG_ONE: if (hdlc->bit_shift == 8) { hdlc->cbin = hdlc->ffvalue >> (8 - hdlc->data_bits);