Lines Matching refs:bcs

76 /* values for bcs->apconnstate */
364 * @bcs: B channel descriptor structure.
370 void gigaset_skb_sent(struct bc_state *bcs, struct sk_buff *dskb)
372 struct cardstate *cs = bcs->cs;
374 struct gigaset_capi_appl *ap = bcs->ap;
379 ++bcs->trans_up;
387 if (bcs->apconnstate < APCONN_ACTIVE) {
399 bcs->channel + 1, CAPIMSG_HANDLE_REQ(req),
408 * @bcs: B channel descriptor structure.
415 void gigaset_skb_rcvd(struct bc_state *bcs, struct sk_buff *skb)
417 struct cardstate *cs = bcs->cs;
419 struct gigaset_capi_appl *ap = bcs->ap;
423 bcs->trans_down++;
432 if (bcs->apconnstate < APCONN_ACTIVE) {
450 CAPIMSG_SETPLCI_PART(skb->data, bcs->channel + 1);
466 * @bcs: B channel descriptor structure.
471 void gigaset_isdn_rcv_err(struct bc_state *bcs)
474 if (bcs->ignore) {
475 bcs->ignore--;
480 bcs->corrupted++;
498 struct bc_state *bcs = at_state->bcs;
513 if (!bcs)
518 iif->ctr.cnr | ((bcs->channel + 1) << 8));
629 spin_lock_irqsave(&bcs->aplock, flags);
630 if (bcs->ap != NULL || bcs->apconnstate != APCONN_NONE) {
632 __func__, bcs->ap, bcs->apconnstate);
633 bcs->ap = NULL;
634 bcs->apconnstate = APCONN_NONE;
636 spin_unlock_irqrestore(&bcs->aplock, flags);
660 spin_lock_irqsave(&bcs->aplock, flags);
661 ap->bcnext = bcs->ap;
662 bcs->ap = ap;
663 bcs->chstate |= CHS_NOTIFY_LL;
664 bcs->apconnstate = APCONN_SETUP;
665 spin_unlock_irqrestore(&bcs->aplock, flags);
676 return bcs->ap ? ICALL_ACCEPT : ICALL_IGNORE;
683 static void send_disconnect_ind(struct bc_state *bcs,
686 struct cardstate *cs = bcs->cs;
690 if (bcs->apconnstate == APCONN_NONE)
695 iif->ctr.cnr | ((bcs->channel + 1) << 8));
717 static void send_disconnect_b3_ind(struct bc_state *bcs,
720 struct cardstate *cs = bcs->cs;
725 if (bcs->apconnstate < APCONN_ACTIVE)
727 bcs->apconnstate = APCONN_SETUP;
731 iif->ctr.cnr | ((bcs->channel + 1) << 8) | (1 << 16));
749 * @bcs: B channel descriptor structure.
754 void gigaset_isdn_connD(struct bc_state *bcs)
756 struct cardstate *cs = bcs->cs;
763 spin_lock_irqsave(&bcs->aplock, flags);
764 ap = bcs->ap;
766 spin_unlock_irqrestore(&bcs->aplock, flags);
770 if (bcs->apconnstate == APCONN_NONE) {
771 spin_unlock_irqrestore(&bcs->aplock, flags);
776 spin_unlock_irqrestore(&bcs->aplock, flags);
781 send_disconnect_ind(bcs, ap->bcnext,
791 iif->ctr.cnr | ((bcs->channel + 1) << 8));
818 * @bcs: B channel descriptor structure.
823 void gigaset_isdn_hupD(struct bc_state *bcs)
833 spin_lock_irqsave(&bcs->aplock, flags);
834 while (bcs->ap != NULL) {
835 ap = bcs->ap;
836 bcs->ap = ap->bcnext;
837 spin_unlock_irqrestore(&bcs->aplock, flags);
838 send_disconnect_b3_ind(bcs, ap);
839 send_disconnect_ind(bcs, ap, 0);
840 spin_lock_irqsave(&bcs->aplock, flags);
842 bcs->apconnstate = APCONN_NONE;
843 spin_unlock_irqrestore(&bcs->aplock, flags);
848 * @bcs: B channel descriptor structure.
853 void gigaset_isdn_connB(struct bc_state *bcs)
855 struct cardstate *cs = bcs->cs;
863 spin_lock_irqsave(&bcs->aplock, flags);
864 ap = bcs->ap;
866 spin_unlock_irqrestore(&bcs->aplock, flags);
870 if (!bcs->apconnstate) {
871 spin_unlock_irqrestore(&bcs->aplock, flags);
883 if (bcs->apconnstate >= APCONN_ACTIVE) {
890 bcs->apconnstate = APCONN_ACTIVE;
892 spin_unlock_irqrestore(&bcs->aplock, flags);
898 send_disconnect_ind(bcs, ap->bcnext,
905 iif->ctr.cnr | ((bcs->channel + 1) << 8) | (1 << 16));
922 * @bcs: B channel descriptor structure.
927 void gigaset_isdn_hupB(struct bc_state *bcs)
929 struct gigaset_capi_appl *ap = bcs->ap;
938 send_disconnect_b3_ind(bcs, ap);
1032 static inline void remove_appl_from_channel(struct bc_state *bcs,
1035 struct cardstate *cs = bcs->cs;
1040 spin_lock_irqsave(&bcs->aplock, flags);
1041 bcap = bcs->ap;
1043 spin_unlock_irqrestore(&bcs->aplock, flags);
1049 bcs->ap = ap->bcnext;
1050 if (bcs->ap != NULL) {
1051 spin_unlock_irqrestore(&bcs->aplock, flags);
1056 prevconnstate = bcs->apconnstate;
1057 bcs->apconnstate = APCONN_NONE;
1058 spin_unlock_irqrestore(&bcs->aplock, flags);
1062 __func__, bcs->channel);
1063 gigaset_add_event(cs, &bcs->at_state,
1074 spin_unlock_irqrestore(&bcs->aplock, flags);
1079 spin_unlock_irqrestore(&bcs->aplock, flags);
1099 remove_appl_from_channel(&cs->bcs[ch], ap);
1334 struct bc_state *bcs;
1351 bcs = gigaset_get_free_channel(cs);
1352 if (!bcs) {
1358 spin_lock_irqsave(&bcs->aplock, flags);
1359 if (bcs->ap != NULL || bcs->apconnstate != APCONN_NONE)
1361 __func__, bcs->ap, bcs->apconnstate);
1363 bcs->ap = ap;
1364 bcs->apconnstate = APCONN_SETUP;
1365 spin_unlock_irqrestore(&bcs->aplock, flags);
1367 bcs->rx_bufsize = ap->rp.datablklen;
1368 dev_kfree_skb(bcs->rx_skb);
1369 gigaset_new_rx_skb(bcs);
1370 cmsg->adr.adrPLCI |= (bcs->channel + 1) << 8;
1534 bcs->proto2 = L2_HDLC;
1540 bcs->proto2 = L2_HDLC;
1543 bcs->proto2 = L2_VOICE;
1549 bcs->proto2 = L2_VOICE;
1569 snprintf(commands[AT_PROTO], 9, "^SBPR=%u\r", bcs->proto2);
1594 (unsigned) bcs->channel + 1);
1597 if (!gigaset_add_event(cs, &bcs->at_state, EV_DIAL, commands,
1598 bcs->at_state.seq_index, NULL)) {
1614 gigaset_free_channel(bcs);
1628 struct bc_state *bcs;
1649 bcs = cs->bcs + channel - 1;
1654 spin_lock_irqsave(&bcs->aplock, flags);
1655 while (bcs->ap != NULL) {
1656 oap = bcs->ap;
1657 bcs->ap = oap->bcnext;
1659 spin_unlock_irqrestore(&bcs->aplock, flags);
1660 send_disconnect_ind(bcs, oap,
1662 spin_lock_irqsave(&bcs->aplock, flags);
1666 bcs->ap = ap;
1667 spin_unlock_irqrestore(&bcs->aplock, flags);
1669 bcs->rx_bufsize = ap->rp.datablklen;
1670 dev_kfree_skb(bcs->rx_skb);
1671 gigaset_new_rx_skb(bcs);
1672 bcs->chstate |= CHS_NOTIFY_LL;
1676 bcs->proto2 = L2_HDLC;
1682 bcs->proto2 = L2_HDLC;
1685 bcs->proto2 = L2_VOICE;
1691 bcs->proto2 = L2_VOICE;
1728 if (!gigaset_add_event(cs, &cs->bcs[channel - 1].at_state,
1736 send_disconnect_ind(bcs, ap, 0);
1739 spin_lock_irqsave(&bcs->aplock, flags);
1740 if (bcs->ap == ap) {
1741 bcs->ap = ap->bcnext;
1742 if (bcs->ap == NULL) {
1744 bcs->apconnstate = APCONN_NONE;
1745 bcs->chstate &= ~CHS_NOTIFY_LL;
1747 spin_unlock_irqrestore(&bcs->aplock, flags);
1750 for (oap = bcs->ap; oap != NULL; oap = oap->bcnext) {
1753 spin_unlock_irqrestore(&bcs->aplock, flags);
1757 spin_unlock_irqrestore(&bcs->aplock, flags);
1764 spin_lock_irqsave(&bcs->aplock, flags);
1765 while (bcs->ap != NULL) {
1766 oap = bcs->ap;
1767 bcs->ap = oap->bcnext;
1769 spin_unlock_irqrestore(&bcs->aplock, flags);
1770 send_disconnect_ind(bcs, oap,
1772 spin_lock_irqsave(&bcs->aplock, flags);
1776 bcs->ap = ap;
1777 spin_unlock_irqrestore(&bcs->aplock, flags);
1782 if (!gigaset_add_event(cs, &cs->bcs[channel - 1].at_state,
1800 struct bc_state *bcs;
1819 bcs = &cs->bcs[channel - 1];
1822 bcs->apconnstate = APCONN_ACTIVE;
1847 struct bc_state *bcs;
1869 bcs = &cs->bcs[channel - 1];
1873 bcs->apconnstate = APCONN_SETUP;
1876 if (!gigaset_add_event(cs, &bcs->at_state,
1917 struct bc_state *bcs;
1938 bcs = cs->bcs + channel - 1;
1953 if (!bcs->apconnstate)
1957 if (bcs->apconnstate >= APCONN_ACTIVE) {
1959 bcs->apconnstate = APCONN_SETUP;
1997 if (!gigaset_add_event(cs, &bcs->at_state, EV_HUP, NULL, 0, NULL)) {
2017 struct bc_state *bcs;
2037 bcs = &cs->bcs[channel - 1];
2040 if (bcs->apconnstate < APCONN_ACTIVE) {
2047 if (!gigaset_add_event(cs, &bcs->at_state, EV_HUP, NULL, 0, NULL)) {
2069 struct bc_state *bcs;
2088 bcs = &cs->bcs[channel - 1];
2108 if (bcs->apconnstate < APCONN_ACTIVE) {
2119 if (cs->ops->send_skb(bcs, skb) < 0) {
2415 cs->bcs[i].corrupted);
2417 cs->bcs[i].trans_down);
2419 cs->bcs[i].trans_up);
2421 cs->bcs[i].chstate);
2422 switch (cs->bcs[i].proto2) {