Lines Matching refs:bch

148 	struct bchannel		bch[2];  member
321 if (test_bit(FLG_ACTIVE, &hc->bch[0].Flags) && in Sel_BCS()
322 (hc->bch[0].nr & channel)) in Sel_BCS()
323 return &hc->bch[0]; in Sel_BCS()
324 else if (test_bit(FLG_ACTIVE, &hc->bch[1].Flags) && in Sel_BCS()
325 (hc->bch[1].nr & channel)) in Sel_BCS()
326 return &hc->bch[1]; in Sel_BCS()
379 if (hc->bch[fifo].debug & DEBUG_HW_BCHANNEL) in hfcpci_clear_fifo_tx()
393 if (hc->bch[fifo].debug & DEBUG_HW_BCHANNEL) in hfcpci_clear_fifo_tx()
405 hfcpci_empty_bfifo(struct bchannel *bch, struct bzfifo *bz, in hfcpci_empty_bfifo() argument
412 if ((bch->debug & DEBUG_HW_BCHANNEL) && !(bch->debug & DEBUG_HW_BFIFO)) in hfcpci_empty_bfifo()
421 if (bch->debug & DEBUG_HW) in hfcpci_empty_bfifo()
425 bch->err_inv++; in hfcpci_empty_bfifo()
430 bch->rx_skb = mI_alloc_skb(count - 3, GFP_ATOMIC); in hfcpci_empty_bfifo()
431 if (!bch->rx_skb) { in hfcpci_empty_bfifo()
436 ptr = skb_put(bch->rx_skb, count); in hfcpci_empty_bfifo()
456 recv_Bchannel(bch, MISDN_ID_ANY, false); in hfcpci_empty_bfifo()
546 hfcpci_empty_fifo_trans(struct bchannel *bch, struct bzfifo *rxbz, in hfcpci_empty_fifo_trans() argument
575 if (test_bit(FLG_RX_OFF, &bch->Flags)) { in hfcpci_empty_fifo_trans()
576 bch->dropcnt += fcnt_rx; in hfcpci_empty_fifo_trans()
580 maxlen = bchannel_get_rxbuf(bch, fcnt_rx); in hfcpci_empty_fifo_trans()
583 bch->nr, fcnt_rx); in hfcpci_empty_fifo_trans()
585 ptr = skb_put(bch->rx_skb, fcnt_rx); in hfcpci_empty_fifo_trans()
602 recv_Bchannel(bch, fcnt_tx, false); /* bch, id, !force */ in hfcpci_empty_fifo_trans()
611 main_rec_hfcpci(struct bchannel *bch) in main_rec_hfcpci() argument
613 struct hfc_pci *hc = bch->hw; in main_rec_hfcpci()
620 if ((bch->nr & 2) && (!hc->hw.bswapped)) { in main_rec_hfcpci()
634 if (bch->debug & DEBUG_HW_BCHANNEL) in main_rec_hfcpci()
636 bch->nr, rxbz->f1, rxbz->f2); in main_rec_hfcpci()
643 if (bch->debug & DEBUG_HW_BCHANNEL) in main_rec_hfcpci()
646 bch->nr, le16_to_cpu(zp->z1), in main_rec_hfcpci()
648 hfcpci_empty_bfifo(bch, rxbz, bdata, rcnt); in main_rec_hfcpci()
661 } else if (test_bit(FLG_TRANSPARENT, &bch->Flags)) { in main_rec_hfcpci()
662 hfcpci_empty_fifo_trans(bch, rxbz, txbz, bdata); in main_rec_hfcpci()
752 hfcpci_fill_fifo(struct bchannel *bch) in hfcpci_fill_fifo() argument
754 struct hfc_pci *hc = bch->hw; in hfcpci_fill_fifo()
762 if ((bch->debug & DEBUG_HW_BCHANNEL) && !(bch->debug & DEBUG_HW_BFIFO)) in hfcpci_fill_fifo()
764 if ((!bch->tx_skb) || bch->tx_skb->len == 0) { in hfcpci_fill_fifo()
765 if (!test_bit(FLG_FILLEMPTY, &bch->Flags) && in hfcpci_fill_fifo()
766 !test_bit(FLG_TRANSPARENT, &bch->Flags)) in hfcpci_fill_fifo()
770 count = bch->tx_skb->len - bch->tx_idx; in hfcpci_fill_fifo()
772 if ((bch->nr & 2) && (!hc->hw.bswapped)) { in hfcpci_fill_fifo()
780 if (test_bit(FLG_TRANSPARENT, &bch->Flags)) { in hfcpci_fill_fifo()
783 if (bch->debug & DEBUG_HW_BCHANNEL) in hfcpci_fill_fifo()
785 "cnt(%d) z1(%x) z2(%x)\n", bch->nr, count, in hfcpci_fill_fifo()
790 if (test_bit(FLG_FILLEMPTY, &bch->Flags)) { in hfcpci_fill_fifo()
801 if (bch->debug & DEBUG_HW_BFIFO) in hfcpci_fill_fifo()
807 memset(dst, bch->fill[0], maxlen); /* first copy */ in hfcpci_fill_fifo()
811 memset(dst, bch->fill[0], count); in hfcpci_fill_fifo()
821 count = bch->tx_skb->len - bch->tx_idx; in hfcpci_fill_fifo()
832 src = bch->tx_skb->data + bch->tx_idx; in hfcpci_fill_fifo()
837 if (bch->debug & DEBUG_HW_BFIFO) in hfcpci_fill_fifo()
842 bch->tx_idx += count; in hfcpci_fill_fifo()
853 if (bch->tx_idx < bch->tx_skb->len) in hfcpci_fill_fifo()
855 dev_kfree_skb(bch->tx_skb); in hfcpci_fill_fifo()
856 if (get_next_bframe(bch)) in hfcpci_fill_fifo()
860 if (bch->debug & DEBUG_HW_BCHANNEL) in hfcpci_fill_fifo()
863 __func__, bch->nr, bz->f1, bz->f2, in hfcpci_fill_fifo()
869 if (bch->debug & DEBUG_HW_BCHANNEL) in hfcpci_fill_fifo()
880 if (bch->debug & DEBUG_HW_BCHANNEL) in hfcpci_fill_fifo()
882 bch->nr, count, maxlen); in hfcpci_fill_fifo()
885 if (bch->debug & DEBUG_HW_BCHANNEL) in hfcpci_fill_fifo()
895 src = bch->tx_skb->data + bch->tx_idx; /* source pointer */ in hfcpci_fill_fifo()
911 dev_kfree_skb(bch->tx_skb); in hfcpci_fill_fifo()
912 get_next_bframe(bch); in hfcpci_fill_fifo()
1130 tx_birq(struct bchannel *bch) in tx_birq() argument
1132 if (bch->tx_skb && bch->tx_idx < bch->tx_skb->len) in tx_birq()
1133 hfcpci_fill_fifo(bch); in tx_birq()
1135 if (bch->tx_skb) in tx_birq()
1136 dev_kfree_skb(bch->tx_skb); in tx_birq()
1137 if (get_next_bframe(bch)) in tx_birq()
1138 hfcpci_fill_fifo(bch); in tx_birq()
1160 struct bchannel *bch; in hfcpci_int() local
1202 bch = Sel_BCS(hc, hc->hw.bswapped ? 2 : 1); in hfcpci_int()
1203 if (bch) in hfcpci_int()
1204 main_rec_hfcpci(bch); in hfcpci_int()
1209 bch = Sel_BCS(hc, 2); in hfcpci_int()
1210 if (bch) in hfcpci_int()
1211 main_rec_hfcpci(bch); in hfcpci_int()
1216 bch = Sel_BCS(hc, hc->hw.bswapped ? 2 : 1); in hfcpci_int()
1217 if (bch) in hfcpci_int()
1218 tx_birq(bch); in hfcpci_int()
1223 bch = Sel_BCS(hc, 2); in hfcpci_int()
1224 if (bch) in hfcpci_int()
1225 tx_birq(bch); in hfcpci_int()
1252 mode_hfcpci(struct bchannel *bch, int bc, int protocol) in mode_hfcpci() argument
1254 struct hfc_pci *hc = bch->hw; in mode_hfcpci()
1258 if (bch->debug & DEBUG_HW_BCHANNEL) in mode_hfcpci()
1261 bch->state, protocol, bch->nr, bc); in mode_hfcpci()
1296 bch->state = -1; in mode_hfcpci()
1297 bch->nr = bc; in mode_hfcpci()
1299 if (bch->state == ISDN_P_NONE) in mode_hfcpci()
1318 if (bch->nr & 2) in mode_hfcpci()
1323 bch->state = ISDN_P_NONE; in mode_hfcpci()
1324 bch->nr = bc; in mode_hfcpci()
1325 test_and_clear_bit(FLG_HDLC, &bch->Flags); in mode_hfcpci()
1326 test_and_clear_bit(FLG_TRANSPARENT, &bch->Flags); in mode_hfcpci()
1329 bch->state = protocol; in mode_hfcpci()
1330 bch->nr = bc; in mode_hfcpci()
1361 test_and_set_bit(FLG_TRANSPARENT, &bch->Flags); in mode_hfcpci()
1364 bch->state = protocol; in mode_hfcpci()
1365 bch->nr = bc; in mode_hfcpci()
1390 test_and_set_bit(FLG_HDLC, &bch->Flags); in mode_hfcpci()
1444 set_hfcpci_rxtest(struct bchannel *bch, int protocol, int chan) in set_hfcpci_rxtest() argument
1446 struct hfc_pci *hc = bch->hw; in set_hfcpci_rxtest()
1448 if (bch->debug & DEBUG_HW_BCHANNEL) in set_hfcpci_rxtest()
1451 bch->state, protocol, bch->nr, chan); in set_hfcpci_rxtest()
1452 if (bch->nr != chan) { in set_hfcpci_rxtest()
1455 bch->nr, chan); in set_hfcpci_rxtest()
1460 bch->state = protocol; in set_hfcpci_rxtest()
1485 bch->state = protocol; in set_hfcpci_rxtest()
1519 deactivate_bchannel(struct bchannel *bch) in deactivate_bchannel() argument
1521 struct hfc_pci *hc = bch->hw; in deactivate_bchannel()
1525 mISDN_clear_bchannel(bch); in deactivate_bchannel()
1526 mode_hfcpci(bch, bch->nr, ISDN_P_NONE); in deactivate_bchannel()
1534 channel_bctrl(struct bchannel *bch, struct mISDN_ctrl_req *cq) in channel_bctrl() argument
1536 return mISDN_ctrl_bchannel(bch, cq); in channel_bctrl()
1541 struct bchannel *bch = container_of(ch, struct bchannel, ch); in hfc_bctrl() local
1542 struct hfc_pci *hc = bch->hw; in hfc_bctrl()
1546 if (bch->debug & DEBUG_HW) in hfc_bctrl()
1551 ret = set_hfcpci_rxtest(bch, ISDN_P_B_RAW, (int)(long)arg); in hfc_bctrl()
1556 ret = set_hfcpci_rxtest(bch, ISDN_P_B_HDLC, (int)(long)arg); in hfc_bctrl()
1561 mode_hfcpci(bch, bch->nr, ISDN_P_NONE); in hfc_bctrl()
1566 test_and_clear_bit(FLG_OPEN, &bch->Flags); in hfc_bctrl()
1567 deactivate_bchannel(bch); in hfc_bctrl()
1574 ret = channel_bctrl(bch, arg); in hfc_bctrl()
1673 struct bchannel *bch = container_of(ch, struct bchannel, ch); in hfcpci_l2l1B() local
1674 struct hfc_pci *hc = bch->hw; in hfcpci_l2l1B()
1682 ret = bchannel_senddata(bch, skb); in hfcpci_l2l1B()
1684 hfcpci_fill_fifo(bch); in hfcpci_l2l1B()
1691 if (!test_and_set_bit(FLG_ACTIVE, &bch->Flags)) in hfcpci_l2l1B()
1692 ret = mode_hfcpci(bch, bch->nr, ch->protocol); in hfcpci_l2l1B()
1701 deactivate_bchannel(bch); in hfcpci_l2l1B()
1724 mode_hfcpci(&hc->bch[0], 1, -1); in inithfcpci()
1725 mode_hfcpci(&hc->bch[1], 2, -1); in inithfcpci()
1943 struct bchannel *bch; in open_bchannel() local
1949 bch = &hc->bch[rq->adr.channel - 1]; in open_bchannel()
1950 if (test_and_set_bit(FLG_OPEN, &bch->Flags)) in open_bchannel()
1952 bch->ch.protocol = rq->protocol; in open_bchannel()
1953 rq->ch = &bch->ch; /* TODO: E-channel */ in open_bchannel()
2062 mode_hfcpci(&hc->bch[0], 1, ISDN_P_NONE); in release_card()
2063 mode_hfcpci(&hc->bch[1], 2, ISDN_P_NONE); in release_card()
2075 mISDN_freebchannel(&hc->bch[1]); in release_card()
2076 mISDN_freebchannel(&hc->bch[0]); in release_card()
2100 card->bch[i].nr = i + 1; in setup_card()
2102 card->bch[i].debug = debug; in setup_card()
2103 mISDN_initbchannel(&card->bch[i], MAX_DATA_MEM, poll >> 1); in setup_card()
2104 card->bch[i].hw = card; in setup_card()
2105 card->bch[i].ch.send = hfcpci_l2l1B; in setup_card()
2106 card->bch[i].ch.ctrl = hfc_bctrl; in setup_card()
2107 card->bch[i].ch.nr = i + 1; in setup_card()
2108 list_add(&card->bch[i].ch.list, &card->dch.dev.bchannels); in setup_card()
2121 mISDN_freebchannel(&card->bch[1]); in setup_card()
2122 mISDN_freebchannel(&card->bch[0]); in setup_card()
2274 struct bchannel *bch; in _hfcpci_softirq() local
2280 bch = Sel_BCS(hc, hc->hw.bswapped ? 2 : 1); in _hfcpci_softirq()
2281 if (bch && bch->state == ISDN_P_B_RAW) { /* B1 rx&tx */ in _hfcpci_softirq()
2282 main_rec_hfcpci(bch); in _hfcpci_softirq()
2283 tx_birq(bch); in _hfcpci_softirq()
2285 bch = Sel_BCS(hc, hc->hw.bswapped ? 1 : 2); in _hfcpci_softirq()
2286 if (bch && bch->state == ISDN_P_B_RAW) { /* B2 rx&tx */ in _hfcpci_softirq()
2287 main_rec_hfcpci(bch); in _hfcpci_softirq()
2288 tx_birq(bch); in _hfcpci_softirq()