Lines Matching refs:ch
42 mISDN_queue_message(struct mISDNchannel *ch, struct sk_buff *skb) in mISDN_queue_message() argument
44 _queue_message(ch->st, skb); in mISDN_queue_message()
51 struct mISDNchannel *ch; in get_channel4id() local
54 list_for_each_entry(ch, &st->layer2, list) { in get_channel4id()
55 if (id == ch->nr) in get_channel4id()
58 ch = NULL; in get_channel4id()
61 return ch; in get_channel4id()
93 struct mISDNchannel *ch; in send_layer2() local
100 list_for_each_entry(ch, &st->layer2, list) { in send_layer2()
101 if (list_is_last(&ch->list, &st->layer2)) { in send_layer2()
108 ret = ch->send(ch, cskb); in send_layer2()
114 __func__, ch->nr, in send_layer2()
115 hh->prim, ch->addr, ret); in send_layer2()
120 __func__, ch->nr, ch->addr); in send_layer2()
125 list_for_each_entry(ch, &st->layer2, list) { in send_layer2()
126 if ((hh->id & MISDN_ID_ADDR_MASK) == ch->addr) { in send_layer2()
127 ret = ch->send(ch, skb); in send_layer2()
151 struct mISDNchannel *ch; in send_msg_to_layer() local
170 ch = get_channel4id(st, hh->id); in send_msg_to_layer()
171 if (ch) in send_msg_to_layer()
172 return ch->send(ch, skb); in send_msg_to_layer()
180 ch = get_channel4id(st, hh->id); in send_msg_to_layer()
181 if (ch) in send_msg_to_layer()
182 return ch->send(ch, skb); in send_msg_to_layer()
333 l1_receive(struct mISDNchannel *ch, struct sk_buff *skb) in l1_receive() argument
335 if (!ch->st) in l1_receive()
338 _queue_message(ch->st, skb); in l1_receive()
343 set_channel_address(struct mISDNchannel *ch, u_int sapi, u_int tei) in set_channel_address() argument
345 ch->addr = sapi | (tei << 8); in set_channel_address()
349 __add_layer2(struct mISDNchannel *ch, struct mISDNstack *st) in __add_layer2() argument
351 list_add_tail(&ch->list, &st->layer2); in __add_layer2()
355 add_layer2(struct mISDNchannel *ch, struct mISDNstack *st) in add_layer2() argument
358 __add_layer2(ch, st); in add_layer2()
363 st_own_ctrl(struct mISDNchannel *ch, u_int cmd, void *arg) in st_own_ctrl() argument
365 if (!ch->st || !ch->st->layer1) in st_own_ctrl()
367 return ch->st->layer1->ctrl(ch->st->layer1, cmd, arg); in st_own_ctrl()
425 connect_layer1(struct mISDNdevice *dev, struct mISDNchannel *ch, in connect_layer1() argument
428 struct mISDN_sock *msk = container_of(ch, struct mISDN_sock, ch); in connect_layer1()
442 ch->recv = mISDN_queue_message; in connect_layer1()
443 ch->peer = &dev->D.st->own; in connect_layer1()
444 ch->st = dev->D.st; in connect_layer1()
463 connect_Bstack(struct mISDNdevice *dev, struct mISDNchannel *ch, in connect_Bstack() argument
475 ch->st = dev->D.st; in connect_Bstack()
483 ch->recv = rq.ch->send; in connect_Bstack()
484 ch->peer = rq.ch; in connect_Bstack()
485 rq.ch->recv = ch->send; in connect_Bstack()
486 rq.ch->peer = ch; in connect_Bstack()
487 rq.ch->st = dev->D.st; in connect_Bstack()
494 rq2.ch = ch; in connect_Bstack()
498 ch->recv = rq2.ch->send; in connect_Bstack()
499 ch->peer = rq2.ch; in connect_Bstack()
500 rq2.ch->st = dev->D.st; in connect_Bstack()
505 rq2.ch->ctrl(rq2.ch, CLOSE_CHANNEL, NULL); in connect_Bstack()
508 rq2.ch->recv = rq.ch->send; in connect_Bstack()
509 rq2.ch->peer = rq.ch; in connect_Bstack()
510 rq.ch->recv = rq2.ch->send; in connect_Bstack()
511 rq.ch->peer = rq2.ch; in connect_Bstack()
512 rq.ch->st = dev->D.st; in connect_Bstack()
514 ch->protocol = protocol; in connect_Bstack()
515 ch->nr = rq.ch->nr; in connect_Bstack()
520 create_l2entity(struct mISDNdevice *dev, struct mISDNchannel *ch, in create_l2entity() argument
540 ch->recv = mISDN_queue_message; in create_l2entity()
541 ch->peer = &dev->D.st->own; in create_l2entity()
542 ch->st = dev->D.st; in create_l2entity()
550 rq.ch = ch; in create_l2entity()
554 if ((protocol == ISDN_P_LAPD_NT) && !rq.ch) in create_l2entity()
556 add_layer2(rq.ch, dev->D.st); in create_l2entity()
557 rq.ch->recv = mISDN_queue_message; in create_l2entity()
558 rq.ch->peer = &dev->D.st->own; in create_l2entity()
559 rq.ch->ctrl(rq.ch, OPEN_CHANNEL, NULL); /* can't fail */ in create_l2entity()
569 delete_channel(struct mISDNchannel *ch) in delete_channel() argument
571 struct mISDN_sock *msk = container_of(ch, struct mISDN_sock, ch); in delete_channel()
574 if (!ch->st) { in delete_channel()
580 dev_name(&ch->st->dev->dev), ch->protocol); in delete_channel()
581 if (ch->protocol >= ISDN_P_B_START) { in delete_channel()
582 if (ch->peer) { in delete_channel()
583 ch->peer->ctrl(ch->peer, CLOSE_CHANNEL, NULL); in delete_channel()
584 ch->peer = NULL; in delete_channel()
588 switch (ch->protocol) { in delete_channel()
593 write_lock_bh(&ch->st->l1sock.lock); in delete_channel()
595 write_unlock_bh(&ch->st->l1sock.lock); in delete_channel()
596 ch->st->dev->D.ctrl(&ch->st->dev->D, CLOSE_CHANNEL, NULL); in delete_channel()
599 pch = get_channel4id(ch->st, ch->nr); in delete_channel()
601 mutex_lock(&ch->st->lmutex); in delete_channel()
603 mutex_unlock(&ch->st->lmutex); in delete_channel()
605 pch = ch->st->dev->teimgr; in delete_channel()
612 pch = ch->st->dev->teimgr; in delete_channel()