Lines Matching refs:ch

36 mISDN_queue_message(struct mISDNchannel *ch, struct sk_buff *skb)
38 _queue_message(ch->st, skb);
45 struct mISDNchannel *ch;
48 list_for_each_entry(ch, &st->layer2, list) {
49 if (id == ch->nr)
52 ch = NULL;
55 return ch;
86 struct mISDNchannel *ch;
93 list_for_each_entry(ch, &st->layer2, list) {
94 if (list_is_last(&ch->list, &st->layer2)) {
101 ret = ch->send(ch, cskb);
105 "%s ch%d prim(%x) addr(%x)"
107 __func__, ch->nr,
108 hh->prim, ch->addr, ret);
112 printk(KERN_WARNING "%s ch%d addr %x no mem\n",
113 __func__, ch->nr, ch->addr);
118 list_for_each_entry(ch, &st->layer2, list) {
119 if ((hh->id & MISDN_ID_ADDR_MASK) == ch->addr) {
120 ret = ch->send(ch, skb);
143 struct mISDNchannel *ch;
162 ch = get_channel4id(st, hh->id);
163 if (ch)
164 return ch->send(ch, skb);
172 ch = get_channel4id(st, hh->id);
173 if (ch)
174 return ch->send(ch, skb);
325 l1_receive(struct mISDNchannel *ch, struct sk_buff *skb)
327 if (!ch->st)
330 _queue_message(ch->st, skb);
335 set_channel_address(struct mISDNchannel *ch, u_int sapi, u_int tei)
337 ch->addr = sapi | (tei << 8);
341 __add_layer2(struct mISDNchannel *ch, struct mISDNstack *st)
343 list_add_tail(&ch->list, &st->layer2);
347 add_layer2(struct mISDNchannel *ch, struct mISDNstack *st)
350 __add_layer2(ch, st);
355 st_own_ctrl(struct mISDNchannel *ch, u_int cmd, void *arg)
357 if (!ch->st || !ch->st->layer1)
359 return ch->st->layer1->ctrl(ch->st->layer1, cmd, arg);
417 connect_layer1(struct mISDNdevice *dev, struct mISDNchannel *ch,
420 struct mISDN_sock *msk = container_of(ch, struct mISDN_sock, ch);
434 ch->recv = mISDN_queue_message;
435 ch->peer = &dev->D.st->own;
436 ch->st = dev->D.st;
455 connect_Bstack(struct mISDNdevice *dev, struct mISDNchannel *ch,
467 ch->st = dev->D.st;
475 ch->recv = rq.ch->send;
476 ch->peer = rq.ch;
477 rq.ch->recv = ch->send;
478 rq.ch->peer = ch;
479 rq.ch->st = dev->D.st;
486 rq2.ch = ch;
490 ch->recv = rq2.ch->send;
491 ch->peer = rq2.ch;
492 rq2.ch->st = dev->D.st;
497 rq2.ch->ctrl(rq2.ch, CLOSE_CHANNEL, NULL);
500 rq2.ch->recv = rq.ch->send;
501 rq2.ch->peer = rq.ch;
502 rq.ch->recv = rq2.ch->send;
503 rq.ch->peer = rq2.ch;
504 rq.ch->st = dev->D.st;
506 ch->protocol = protocol;
507 ch->nr = rq.ch->nr;
512 create_l2entity(struct mISDNdevice *dev, struct mISDNchannel *ch,
533 ch->recv = mISDN_queue_message;
534 ch->peer = &dev->D.st->own;
535 ch->st = dev->D.st;
543 rq.ch = ch;
547 if ((protocol == ISDN_P_LAPD_NT) && !rq.ch)
549 add_layer2(rq.ch, dev->D.st);
550 rq.ch->recv = mISDN_queue_message;
551 rq.ch->peer = &dev->D.st->own;
552 rq.ch->ctrl(rq.ch, OPEN_CHANNEL, NULL); /* can't fail */
562 delete_channel(struct mISDNchannel *ch)
564 struct mISDN_sock *msk = container_of(ch, struct mISDN_sock, ch);
567 if (!ch->st) {
573 dev_name(&ch->st->dev->dev), ch->protocol);
574 if (ch->protocol >= ISDN_P_B_START) {
575 if (ch->peer) {
576 ch->peer->ctrl(ch->peer, CLOSE_CHANNEL, NULL);
577 ch->peer = NULL;
581 switch (ch->protocol) {
586 write_lock_bh(&ch->st->l1sock.lock);
588 write_unlock_bh(&ch->st->l1sock.lock);
589 ch->st->dev->D.ctrl(&ch->st->dev->D, CLOSE_CHANNEL, NULL);
592 pch = get_channel4id(ch->st, ch->nr);
594 mutex_lock(&ch->st->lmutex);
596 mutex_unlock(&ch->st->lmutex);
598 pch = ch->st->dev->teimgr;
605 pch = ch->st->dev->teimgr;