Lines Matching refs:hdlcrx
118 while (s->hdlcrx.rx_state && num >= 8) {
119 if (s->hdlcrx.len >= sizeof(s->hdlcrx.buffer)) {
120 s->hdlcrx.rx_state = 0;
123 *s->hdlcrx.bp++ = bits >> (32-num);
124 s->hdlcrx.len++;
137 if (s->hdlcrx.len < 4)
139 if (!check_crc_ccitt(s->hdlcrx.buffer, s->hdlcrx.len))
141 pkt_len = s->hdlcrx.len - 2 + 1; /* KISS kludge */
149 memcpy(cp, s->hdlcrx.buffer, pkt_len - 1);
162 if (test_and_set_bit(0, &s->hdlcrx.in_hdlc_rx))
165 while (!hdlcdrv_hbuf_empty(&s->hdlcrx.hbuf)) {
166 word = hdlcdrv_hbuf_get(&s->hdlcrx.hbuf);
171 s->hdlcrx.bitstream >>= 16;
172 s->hdlcrx.bitstream |= word << 16;
173 s->hdlcrx.bitbuf >>= 16;
174 s->hdlcrx.bitbuf |= word << 16;
175 s->hdlcrx.numbits += 16;
181 if ((s->hdlcrx.bitstream & mask1) == mask1)
182 s->hdlcrx.rx_state = 0; /* abort received */
183 else if ((s->hdlcrx.bitstream & mask2) == mask3) {
185 if (s->hdlcrx.rx_state) {
186 hdlc_rx_add_bytes(s, s->hdlcrx.bitbuf
188 s->hdlcrx.numbits
192 s->hdlcrx.len = 0;
193 s->hdlcrx.bp = s->hdlcrx.buffer;
194 s->hdlcrx.rx_state = 1;
195 s->hdlcrx.numbits = i;
196 } else if ((s->hdlcrx.bitstream & mask4) == mask5) {
198 s->hdlcrx.numbits--;
199 s->hdlcrx.bitbuf = (s->hdlcrx.bitbuf & (~mask6)) |
200 ((s->hdlcrx.bitbuf & mask6) << 1);
203 s->hdlcrx.numbits -= hdlc_rx_add_bytes(s, s->hdlcrx.bitbuf,
204 s->hdlcrx.numbits);
206 clear_bit(0, &s->hdlcrx.in_hdlc_rx);
372 if (s->hdlcrx.dcd) {
444 s->hdlcrx.hbuf.rd = s->hdlcrx.hbuf.wr = 0;
445 s->hdlcrx.in_hdlc_rx = 0;
446 s->hdlcrx.rx_state = 0;
548 bi.data.cs.dcd = s->hdlcrx.dcd;
558 bi.data.ocs.dcd = s->hdlcrx.dcd;
640 spin_lock_init(&s->hdlcrx.hbuf.lock);
641 s->hdlcrx.hbuf.rd = s->hdlcrx.hbuf.wr = 0;
642 s->hdlcrx.in_hdlc_rx = 0;
643 s->hdlcrx.rx_state = 0;