Lines Matching refs:bcs

78 modejade(struct BCState *bcs, int mode, int bc)
80 struct IsdnCardState *cs = bcs->cs;
81 int jade = bcs->hw.hscx.hscx;
89 bcs->mode = mode;
90 bcs->channel = bc;
136 struct BCState *bcs = st->l1.bcs;
142 spin_lock_irqsave(&bcs->cs->lock, flags);
143 if (bcs->tx_skb) {
144 skb_queue_tail(&bcs->squeue, skb);
146 bcs->tx_skb = skb;
147 test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
148 bcs->hw.hscx.count = 0;
149 bcs->cs->BC_Send_Data(bcs);
151 spin_unlock_irqrestore(&bcs->cs->lock, flags);
154 spin_lock_irqsave(&bcs->cs->lock, flags);
155 if (bcs->tx_skb) {
158 test_and_set_bit(BC_FLG_BUSY, &bcs->Flag);
159 bcs->tx_skb = skb;
160 bcs->hw.hscx.count = 0;
161 bcs->cs->BC_Send_Data(bcs);
163 spin_unlock_irqrestore(&bcs->cs->lock, flags);
166 if (!bcs->tx_skb) {
173 spin_lock_irqsave(&bcs->cs->lock, flags);
174 test_and_set_bit(BC_FLG_ACTIV, &bcs->Flag);
175 modejade(bcs, st->l1.mode, st->l1.bc);
176 spin_unlock_irqrestore(&bcs->cs->lock, flags);
183 spin_lock_irqsave(&bcs->cs->lock, flags);
184 test_and_clear_bit(BC_FLG_ACTIV, &bcs->Flag);
185 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
186 modejade(bcs, 0, st->l1.bc);
187 spin_unlock_irqrestore(&bcs->cs->lock, flags);
194 close_jadestate(struct BCState *bcs)
196 modejade(bcs, 0, bcs->channel);
197 if (test_and_clear_bit(BC_FLG_INIT, &bcs->Flag)) {
198 kfree(bcs->hw.hscx.rcvbuf);
199 bcs->hw.hscx.rcvbuf = NULL;
200 kfree(bcs->blog);
201 bcs->blog = NULL;
202 skb_queue_purge(&bcs->rqueue);
203 skb_queue_purge(&bcs->squeue);
204 if (bcs->tx_skb) {
205 dev_kfree_skb_any(bcs->tx_skb);
206 bcs->tx_skb = NULL;
207 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
213 open_jadestate(struct IsdnCardState *cs, struct BCState *bcs)
215 if (!test_and_set_bit(BC_FLG_INIT, &bcs->Flag)) {
216 if (!(bcs->hw.hscx.rcvbuf = kmalloc(HSCX_BUFMAX, GFP_ATOMIC))) {
219 test_and_clear_bit(BC_FLG_INIT, &bcs->Flag);
222 if (!(bcs->blog = kmalloc(MAX_BLOG_SPACE, GFP_ATOMIC))) {
224 "HiSax: No memory for bcs->blog\n");
225 test_and_clear_bit(BC_FLG_INIT, &bcs->Flag);
226 kfree(bcs->hw.hscx.rcvbuf);
227 bcs->hw.hscx.rcvbuf = NULL;
230 skb_queue_head_init(&bcs->rqueue);
231 skb_queue_head_init(&bcs->squeue);
233 bcs->tx_skb = NULL;
234 test_and_clear_bit(BC_FLG_BUSY, &bcs->Flag);
235 bcs->event = 0;
236 bcs->hw.hscx.rcvidx = 0;
237 bcs->tx_cnt = 0;
243 setstack_jade(struct PStack *st, struct BCState *bcs)
245 bcs->channel = st->l1.bc;
246 if (open_jadestate(st->l1.hardware, bcs))
248 st->l1.bcs = bcs;
251 bcs->st = st;
285 cs->bcs[0].BC_SetStack = setstack_jade;
286 cs->bcs[1].BC_SetStack = setstack_jade;
287 cs->bcs[0].BC_Close = close_jadestate;
288 cs->bcs[1].BC_Close = close_jadestate;
289 cs->bcs[0].hw.hscx.hscx = 0;
290 cs->bcs[1].hw.hscx.hscx = 1;
311 modejade(cs->bcs, 0, 0);
312 modejade(cs->bcs + 1, 0, 0);