Lines Matching refs:st

30 _queue_message(struct mISDNstack *st, struct sk_buff *skb)  in _queue_message()  argument
37 skb_queue_tail(&st->msgq, skb); in _queue_message()
38 if (likely(!test_bit(mISDN_STACK_STOPPED, &st->status))) { in _queue_message()
39 test_and_set_bit(mISDN_STACK_WORK, &st->status); in _queue_message()
40 wake_up_interruptible(&st->workq); in _queue_message()
47 _queue_message(ch->st, skb); in mISDN_queue_message()
52 get_channel4id(struct mISDNstack *st, u_int id) in get_channel4id() argument
56 mutex_lock(&st->lmutex); in get_channel4id()
57 list_for_each_entry(ch, &st->layer2, list) { in get_channel4id()
63 mutex_unlock(&st->lmutex); in get_channel4id()
92 send_layer2(struct mISDNstack *st, struct sk_buff *skb) in send_layer2() argument
99 if (!st) in send_layer2()
101 mutex_lock(&st->lmutex); in send_layer2()
103 list_for_each_entry(ch, &st->layer2, list) { in send_layer2()
104 if (list_is_last(&ch->list, &st->layer2)) { in send_layer2()
128 list_for_each_entry(ch, &st->layer2, list) { in send_layer2()
136 ret = st->dev->teimgr->ctrl(st->dev->teimgr, CHECK_DATA, skb); in send_layer2()
145 mutex_unlock(&st->lmutex); in send_layer2()
151 send_msg_to_layer(struct mISDNstack *st, struct sk_buff *skb) in send_msg_to_layer() argument
162 if (!hlist_empty(&st->l1sock.head)) { in send_msg_to_layer()
164 send_socklist(&st->l1sock, skb); in send_msg_to_layer()
166 return st->layer1->send(st->layer1, skb); in send_msg_to_layer()
168 if (!hlist_empty(&st->l1sock.head)) in send_msg_to_layer()
169 send_socklist(&st->l1sock, skb); in send_msg_to_layer()
170 send_layer2(st, skb); in send_msg_to_layer()
173 ch = get_channel4id(st, hh->id); in send_msg_to_layer()
179 __func__, dev_name(&st->dev->dev), hh->prim, in send_msg_to_layer()
183 ch = get_channel4id(st, hh->id); in send_msg_to_layer()
189 __func__, dev_name(&st->dev->dev), hh->prim, in send_msg_to_layer()
194 __func__, dev_name(&st->dev->dev), hh->prim); in send_msg_to_layer()
200 do_clear_stack(struct mISDNstack *st) in do_clear_stack() argument
207 struct mISDNstack *st = data; in mISDNStackd() local
216 dev_name(&st->dev->dev)); in mISDNStackd()
218 if (st->notify != NULL) { in mISDNStackd()
219 complete(st->notify); in mISDNStackd()
220 st->notify = NULL; in mISDNStackd()
226 if (unlikely(test_bit(mISDN_STACK_STOPPED, &st->status))) { in mISDNStackd()
227 test_and_clear_bit(mISDN_STACK_WORK, &st->status); in mISDNStackd()
228 test_and_clear_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
230 test_and_set_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
231 while (test_bit(mISDN_STACK_WORK, &st->status)) { in mISDNStackd()
232 skb = skb_dequeue(&st->msgq); in mISDNStackd()
235 &st->status); in mISDNStackd()
237 skb = skb_dequeue(&st->msgq); in mISDNStackd()
241 &st->status); in mISDNStackd()
244 st->msg_cnt++; in mISDNStackd()
246 err = send_msg_to_layer(st, skb); in mISDNStackd()
252 __func__, dev_name(&st->dev->dev), in mISDNStackd()
259 &st->status))) { in mISDNStackd()
261 &st->status); in mISDNStackd()
263 &st->status); in mISDNStackd()
267 if (test_bit(mISDN_STACK_CLEARING, &st->status)) { in mISDNStackd()
268 test_and_set_bit(mISDN_STACK_STOPPED, &st->status); in mISDNStackd()
269 test_and_clear_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
270 do_clear_stack(st); in mISDNStackd()
271 test_and_clear_bit(mISDN_STACK_CLEARING, &st->status); in mISDNStackd()
272 test_and_set_bit(mISDN_STACK_RESTART, &st->status); in mISDNStackd()
274 if (test_and_clear_bit(mISDN_STACK_RESTART, &st->status)) { in mISDNStackd()
275 test_and_clear_bit(mISDN_STACK_STOPPED, &st->status); in mISDNStackd()
276 test_and_set_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
277 if (!skb_queue_empty(&st->msgq)) in mISDNStackd()
279 &st->status); in mISDNStackd()
281 if (test_bit(mISDN_STACK_ABORT, &st->status)) in mISDNStackd()
283 if (st->notify != NULL) { in mISDNStackd()
284 complete(st->notify); in mISDNStackd()
285 st->notify = NULL; in mISDNStackd()
288 st->sleep_cnt++; in mISDNStackd()
290 test_and_clear_bit(mISDN_STACK_ACTIVE, &st->status); in mISDNStackd()
291 wait_event_interruptible(st->workq, (st->status & in mISDNStackd()
295 __func__, dev_name(&st->dev->dev), st->status); in mISDNStackd()
296 test_and_set_bit(mISDN_STACK_ACTIVE, &st->status); in mISDNStackd()
298 test_and_clear_bit(mISDN_STACK_WAKEUP, &st->status); in mISDNStackd()
300 if (test_bit(mISDN_STACK_STOPPED, &st->status)) { in mISDNStackd()
301 test_and_clear_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
303 st->stopped_cnt++; in mISDNStackd()
310 dev_name(&st->dev->dev), st->msg_cnt, st->sleep_cnt, in mISDNStackd()
311 st->stopped_cnt); in mISDNStackd()
312 task_cputime(st->thread, &utime, &stime); in mISDNStackd()
315 dev_name(&st->dev->dev), utime, stime); in mISDNStackd()
318 dev_name(&st->dev->dev), st->thread->nvcsw, st->thread->nivcsw); in mISDNStackd()
320 dev_name(&st->dev->dev)); in mISDNStackd()
322 test_and_set_bit(mISDN_STACK_KILLED, &st->status); in mISDNStackd()
323 test_and_clear_bit(mISDN_STACK_RUNNING, &st->status); in mISDNStackd()
324 test_and_clear_bit(mISDN_STACK_ACTIVE, &st->status); in mISDNStackd()
325 test_and_clear_bit(mISDN_STACK_ABORT, &st->status); in mISDNStackd()
326 skb_queue_purge(&st->msgq); in mISDNStackd()
327 st->thread = NULL; in mISDNStackd()
328 if (st->notify != NULL) { in mISDNStackd()
329 complete(st->notify); in mISDNStackd()
330 st->notify = NULL; in mISDNStackd()
338 if (!ch->st) in l1_receive()
341 _queue_message(ch->st, skb); in l1_receive()
352 __add_layer2(struct mISDNchannel *ch, struct mISDNstack *st) in __add_layer2() argument
354 list_add_tail(&ch->list, &st->layer2); in __add_layer2()
358 add_layer2(struct mISDNchannel *ch, struct mISDNstack *st) in add_layer2() argument
360 mutex_lock(&st->lmutex); in add_layer2()
361 __add_layer2(ch, st); in add_layer2()
362 mutex_unlock(&st->lmutex); in add_layer2()
368 if (!ch->st || !ch->st->layer1) in st_own_ctrl()
370 return ch->st->layer1->ctrl(ch->st->layer1, cmd, arg); in st_own_ctrl()
392 dev->D.st = newst; in create_stack()
401 dev->teimgr->st = newst; in create_stack()
405 newst->own.st = newst; in create_stack()
446 ch->peer = &dev->D.st->own; in connect_layer1()
447 ch->st = dev->D.st; in connect_layer1()
455 write_lock_bh(&dev->D.st->l1sock.lock); in connect_layer1()
456 sk_add_node(&msk->sk, &dev->D.st->l1sock.head); in connect_layer1()
457 write_unlock_bh(&dev->D.st->l1sock.lock); in connect_layer1()
478 ch->st = dev->D.st; in connect_Bstack()
490 rq.ch->st = dev->D.st; in connect_Bstack()
503 rq2.ch->st = dev->D.st; in connect_Bstack()
515 rq.ch->st = dev->D.st; in connect_Bstack()
545 ch->peer = &dev->D.st->own; in create_l2entity()
546 ch->st = dev->D.st; in create_l2entity()
560 add_layer2(rq.ch, dev->D.st); in create_l2entity()
562 rq.ch->peer = &dev->D.st->own; in create_l2entity()
578 if (!ch->st) { in delete_channel()
584 dev_name(&ch->st->dev->dev), ch->protocol); in delete_channel()
597 write_lock_bh(&ch->st->l1sock.lock); in delete_channel()
599 write_unlock_bh(&ch->st->l1sock.lock); in delete_channel()
600 ch->st->dev->D.ctrl(&ch->st->dev->D, CLOSE_CHANNEL, NULL); in delete_channel()
603 pch = get_channel4id(ch->st, ch->nr); in delete_channel()
605 mutex_lock(&ch->st->lmutex); in delete_channel()
607 mutex_unlock(&ch->st->lmutex); in delete_channel()
609 pch = ch->st->dev->teimgr; in delete_channel()
616 pch = ch->st->dev->teimgr; in delete_channel()
632 struct mISDNstack *st = dev->D.st; in delete_stack() local
637 dev_name(&st->dev->dev)); in delete_stack()
640 if (st->thread) { in delete_stack()
641 if (st->notify) { in delete_stack()
644 complete(st->notify); in delete_stack()
646 st->notify = &done; in delete_stack()
647 test_and_set_bit(mISDN_STACK_ABORT, &st->status); in delete_stack()
648 test_and_set_bit(mISDN_STACK_WAKEUP, &st->status); in delete_stack()
649 wake_up_interruptible(&st->workq); in delete_stack()
652 if (!list_empty(&st->layer2)) in delete_stack()
655 if (!hlist_empty(&st->l1sock.head)) in delete_stack()
658 kfree(st); in delete_stack()