• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/isdn/gigaset/

Lines Matching refs:iwb

24 void gigaset_isowbuf_init(struct isowbuf_t *iwb, unsigned char idle)
26 iwb->read = 0;
27 iwb->nextread = 0;
28 iwb->write = 0;
29 atomic_set(&iwb->writesem, 1);
30 iwb->wbits = 0;
31 iwb->idle = idle;
32 memset(iwb->data + BAS_OUTBUFSIZE, idle, BAS_OUTBUFPAD);
38 static inline int isowbuf_freebytes(struct isowbuf_t *iwb)
42 read = iwb->read;
43 write = iwb->write;
61 static inline int isowbuf_startwrite(struct isowbuf_t *iwb)
63 if (!atomic_dec_and_test(&iwb->writesem)) {
64 atomic_inc(&iwb->writesem);
71 __func__, iwb->data[iwb->write], iwb->wbits);
79 static inline int isowbuf_donewrite(struct isowbuf_t *iwb)
81 int write = iwb->write;
82 atomic_inc(&iwb->writesem);
93 static inline void isowbuf_putbits(struct isowbuf_t *iwb, u32 data, int nbits)
95 int write = iwb->write;
96 data <<= iwb->wbits;
97 data |= iwb->data[write];
98 nbits += iwb->wbits;
100 iwb->data[write++] = data & 0xff;
105 iwb->wbits = nbits;
106 iwb->data[write] = data & 0xff;
107 iwb->write = write;
114 static inline void isowbuf_putflag(struct isowbuf_t *iwb)
119 isowbuf_putbits(iwb, 0x7e7e, 8);
121 write = iwb->write;
122 iwb->idle = iwb->data[write];
123 gig_dbg(DEBUG_ISO, "idle fill byte %02x", iwb->idle);
125 iwb->data[write] &= (1 << iwb->wbits) - 1;
134 int gigaset_isowbuf_getbytes(struct isowbuf_t *iwb, int size)
139 read = iwb->nextread;
140 write = iwb->write;
161 if (!isowbuf_startwrite(iwb))
164 write = iwb->write;
166 pbyte = iwb->data[write]; /* save
171 __func__, write, limit, iwb->idle);
173 memset(iwb->data + write, iwb->idle,
177 memset(iwb->data + write, iwb->idle,
185 iwb->data[limit] = pbyte; /* restore
187 iwb->write = limit;
189 isowbuf_donewrite(iwb);
198 iwb->data[dst++] = iwb->data[src++];
201 memset(iwb->data + dst, iwb->idle,
207 iwb->nextread = limit;
348 * iwb pointer to output buffer structure
354 static inline int hdlc_bitstuff_byte(struct isowbuf_t *iwb, unsigned char cin,
371 isowbuf_putbits(iwb, stuff, 8 + shiftinc);
390 * iwb pointer to output buffer structure
397 static inline int hdlc_buildframe(struct isowbuf_t *iwb,
405 if (isowbuf_freebytes(iwb) < count + count / 5 + 6 ||
406 !isowbuf_startwrite(iwb)) {
408 __func__, isowbuf_freebytes(iwb));
419 ones = hdlc_bitstuff_byte(iwb, c, ones);
426 ones = hdlc_bitstuff_byte(iwb, fcs & 0x00ff, ones);
427 ones = hdlc_bitstuff_byte(iwb, (fcs >> 8) & 0x00ff, ones);
430 isowbuf_putflag(iwb);
431 end = isowbuf_donewrite(iwb);
443 * iwb pointer to output buffer structure
450 static inline int trans_buildframe(struct isowbuf_t *iwb,
457 return iwb->write;
459 if (isowbuf_freebytes(iwb) < count ||
460 !isowbuf_startwrite(iwb)) {
468 write = iwb->write;
471 iwb->data[write++] = c;
474 iwb->write = write;
475 iwb->idle = c;
477 return isowbuf_donewrite(iwb);