Lines Matching refs:dch

262 	struct dchannel *dch = &hw->dch;  in hfcsusb_ph_info()  local
266 dch->dev.nrbchan * sizeof(struct ph_info_ch), GFP_ATOMIC); in hfcsusb_ph_info()
267 phi->dch.ch.protocol = hw->protocol; in hfcsusb_ph_info()
268 phi->dch.ch.Flags = dch->Flags; in hfcsusb_ph_info()
269 phi->dch.state = dch->state; in hfcsusb_ph_info()
270 phi->dch.num_bch = dch->dev.nrbchan; in hfcsusb_ph_info()
271 for (i = 0; i < dch->dev.nrbchan; i++) { in hfcsusb_ph_info()
275 _queue_data(&dch->dev.D, MPH_INFORMATION_IND, MISDN_ID_ANY, in hfcsusb_ph_info()
276 sizeof(struct ph_info_dch) + dch->dev.nrbchan * in hfcsusb_ph_info()
288 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfcusb_l2l1D() local
290 struct hfcsusb *hw = dch->hw; in hfcusb_l2l1D()
301 ret = dchannel_senddata(dch, skb); in hfcusb_l2l1D()
317 if (test_bit(FLG_ACTIVE, &dch->Flags)) { in hfcusb_l2l1D()
318 _queue_data(&dch->dev.D, in hfcusb_l2l1D()
325 &dch->Flags); in hfcusb_l2l1D()
329 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
337 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in hfcusb_l2l1D()
342 skb_queue_purge(&dch->squeue); in hfcusb_l2l1D()
343 if (dch->tx_skb) { in hfcusb_l2l1D()
344 dev_kfree_skb(dch->tx_skb); in hfcusb_l2l1D()
345 dch->tx_skb = NULL; in hfcusb_l2l1D()
347 dch->tx_idx = 0; in hfcusb_l2l1D()
348 if (dch->rx_skb) { in hfcusb_l2l1D()
349 dev_kfree_skb(dch->rx_skb); in hfcusb_l2l1D()
350 dch->rx_skb = NULL; in hfcusb_l2l1D()
352 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcusb_l2l1D()
355 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in hfcusb_l2l1D()
356 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in hfcusb_l2l1D()
360 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
375 hfc_l1callback(struct dchannel *dch, u_int cmd) in hfc_l1callback() argument
377 struct hfcsusb *hw = dch->hw; in hfc_l1callback()
391 skb_queue_purge(&dch->squeue); in hfc_l1callback()
392 if (dch->tx_skb) { in hfc_l1callback()
393 dev_kfree_skb(dch->tx_skb); in hfc_l1callback()
394 dch->tx_skb = NULL; in hfc_l1callback()
396 dch->tx_idx = 0; in hfc_l1callback()
397 if (dch->rx_skb) { in hfc_l1callback()
398 dev_kfree_skb(dch->rx_skb); in hfc_l1callback()
399 dch->rx_skb = NULL; in hfc_l1callback()
401 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfc_l1callback()
404 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
405 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
409 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
410 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
414 if (dch->debug & DEBUG_HW) in hfc_l1callback()
431 hw->name, __func__, hw->dch.dev.id, rq->adr.channel, in open_dchannel()
436 test_and_clear_bit(FLG_ACTIVE, &hw->dch.Flags); in open_dchannel()
454 err = create_l1(&hw->dch, hfc_l1callback); in open_dchannel()
466 if (((ch->protocol == ISDN_P_NT_S0) && (hw->dch.state == 3)) || in open_dchannel()
467 ((ch->protocol == ISDN_P_TE_S0) && (hw->dch.state == 7))) in open_dchannel()
533 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfc_dctrl() local
534 struct hfcsusb *hw = dch->hw; in hfc_dctrl()
538 if (dch->debug & DEBUG_HW) in hfc_dctrl()
557 hw->name, __func__, hw->dch.dev.id, in hfc_dctrl()
571 if (dch->debug & DEBUG_HW) in hfc_dctrl()
583 ph_state_te(struct dchannel *dch) in ph_state_te() argument
585 struct hfcsusb *hw = dch->hw; in ph_state_te()
588 if (dch->state <= HFC_MAX_TE_LAYER1_STATE) in ph_state_te()
590 HFC_TE_LAYER1_STATES[dch->state]); in ph_state_te()
593 hw->name, __func__, dch->state); in ph_state_te()
596 switch (dch->state) { in ph_state_te()
598 l1_event(dch->l1, HW_RESET_IND); in ph_state_te()
601 l1_event(dch->l1, HW_DEACT_IND); in ph_state_te()
605 l1_event(dch->l1, ANYSIGNAL); in ph_state_te()
608 l1_event(dch->l1, INFO2); in ph_state_te()
611 l1_event(dch->l1, INFO4_P8); in ph_state_te()
614 if (dch->state == 7) in ph_state_te()
624 ph_state_nt(struct dchannel *dch) in ph_state_nt() argument
626 struct hfcsusb *hw = dch->hw; in ph_state_nt()
629 if (dch->state <= HFC_MAX_NT_LAYER1_STATE) in ph_state_nt()
632 HFC_NT_LAYER1_STATES[dch->state]); in ph_state_nt()
636 hw->name, __func__, dch->state); in ph_state_nt()
639 switch (dch->state) { in ph_state_nt()
641 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
642 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in ph_state_nt()
652 hfcsusb_ph_command(dch->hw, HFC_L1_DEACTIVATE_NT); in ph_state_nt()
663 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
664 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_nt()
679 ph_state(struct dchannel *dch) in ph_state() argument
681 struct hfcsusb *hw = dch->hw; in ph_state()
684 ph_state_nt(dch); in ph_state()
686 ph_state_te(dch); in ph_state()
787 if (hw->dch.state == 3) in hfcsusb_ph_command()
788 _queue_data(&hw->dch.dev.D, PH_ACTIVATE_IND, in hfcsusb_ph_command()
827 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
832 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
839 if (fifo->dch) { in hfcsusb_rx_frame()
840 rx_skb = fifo->dch->rx_skb; in hfcsusb_rx_frame()
841 maxlen = fifo->dch->maxlen; in hfcsusb_rx_frame()
869 if (fifo->dch || fifo->ech) { in hfcsusb_rx_frame()
873 if (fifo->dch) in hfcsusb_rx_frame()
874 fifo->dch->rx_skb = rx_skb; in hfcsusb_rx_frame()
918 if (fifo->dch) in hfcsusb_rx_frame()
919 recv_Dchannel(fifo->dch); in hfcsusb_rx_frame()
925 &hw->dch); in hfcsusb_rx_frame()
1066 (s0_state != hw->dch.state)) { in rx_iso_complete()
1067 hw->dch.state = s0_state; in rx_iso_complete()
1068 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_iso_complete()
1137 if (hw->initdone && ((buf[0] >> 4) != hw->dch.state)) { in rx_int_complete()
1138 hw->dch.state = (buf[0] >> 4); in rx_int_complete()
1139 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_int_complete()
1184 if (fifo->dch) { in tx_iso_complete()
1185 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1186 tx_idx = &fifo->dch->tx_idx; in tx_iso_complete()
1345 if (fifo->dch && get_next_dframe(fifo->dch)) in tx_iso_complete()
1346 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1368 schedule_event(&hw->dch, FLG_PHCHANGE); in tx_iso_complete()
1757 l1_event(hw->dch.l1, CLOSE_CHANNEL); in release_hw()
1759 mISDN_unregister_device(&hw->dch.dev); in release_hw()
1762 mISDN_freedchannel(&hw->dch); in release_hw()
1843 mISDN_initdchannel(&hw->dch, MAX_DFRAME_LEN_L1, ph_state); in setup_instance()
1844 hw->dch.debug = debug & 0xFFFF; in setup_instance()
1845 hw->dch.hw = hw; in setup_instance()
1846 hw->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in setup_instance()
1847 hw->dch.dev.D.send = hfcusb_l2l1D; in setup_instance()
1848 hw->dch.dev.D.ctrl = hfc_dctrl; in setup_instance()
1854 hw->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_instance()
1856 hw->dch.dev.nrbchan = 2; in setup_instance()
1859 set_channelmap(i + 1, hw->dch.dev.channelmap); in setup_instance()
1866 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels); in setup_instance()
1873 hw->fifos[HFCUSB_D_TX].dch = &hw->dch; in setup_instance()
1874 hw->fifos[HFCUSB_D_RX].dch = &hw->dch; in setup_instance()
1887 err = mISDN_register_device(&hw->dch.dev, parent, hw->name); in setup_instance()
1900 mISDN_freedchannel(&hw->dch); in setup_instance()