Lines Matching refs:dch

248 	struct dchannel *dch = &hw->dch;  in hfcsusb_ph_info()  local
251 phi = kzalloc(struct_size(phi, bch, dch->dev.nrbchan), GFP_ATOMIC); in hfcsusb_ph_info()
255 phi->dch.ch.protocol = hw->protocol; in hfcsusb_ph_info()
256 phi->dch.ch.Flags = dch->Flags; in hfcsusb_ph_info()
257 phi->dch.state = dch->state; in hfcsusb_ph_info()
258 phi->dch.num_bch = dch->dev.nrbchan; in hfcsusb_ph_info()
259 for (i = 0; i < dch->dev.nrbchan; i++) { in hfcsusb_ph_info()
263 _queue_data(&dch->dev.D, MPH_INFORMATION_IND, MISDN_ID_ANY, in hfcsusb_ph_info()
264 struct_size(phi, bch, dch->dev.nrbchan), phi, GFP_ATOMIC); in hfcsusb_ph_info()
277 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfcusb_l2l1D() local
279 struct hfcsusb *hw = dch->hw; in hfcusb_l2l1D()
290 ret = dchannel_senddata(dch, skb); in hfcusb_l2l1D()
306 if (test_bit(FLG_ACTIVE, &dch->Flags)) { in hfcusb_l2l1D()
307 _queue_data(&dch->dev.D, in hfcusb_l2l1D()
314 &dch->Flags); in hfcusb_l2l1D()
318 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
326 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in hfcusb_l2l1D()
331 skb_queue_purge(&dch->squeue); in hfcusb_l2l1D()
332 if (dch->tx_skb) { in hfcusb_l2l1D()
333 dev_kfree_skb(dch->tx_skb); in hfcusb_l2l1D()
334 dch->tx_skb = NULL; in hfcusb_l2l1D()
336 dch->tx_idx = 0; in hfcusb_l2l1D()
337 if (dch->rx_skb) { in hfcusb_l2l1D()
338 dev_kfree_skb(dch->rx_skb); in hfcusb_l2l1D()
339 dch->rx_skb = NULL; in hfcusb_l2l1D()
341 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcusb_l2l1D()
344 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in hfcusb_l2l1D()
345 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in hfcusb_l2l1D()
349 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
363 hfc_l1callback(struct dchannel *dch, u_int cmd) in hfc_l1callback() argument
365 struct hfcsusb *hw = dch->hw; in hfc_l1callback()
379 skb_queue_purge(&dch->squeue); in hfc_l1callback()
380 if (dch->tx_skb) { in hfc_l1callback()
381 dev_kfree_skb(dch->tx_skb); in hfc_l1callback()
382 dch->tx_skb = NULL; in hfc_l1callback()
384 dch->tx_idx = 0; in hfc_l1callback()
385 if (dch->rx_skb) { in hfc_l1callback()
386 dev_kfree_skb(dch->rx_skb); in hfc_l1callback()
387 dch->rx_skb = NULL; in hfc_l1callback()
389 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfc_l1callback()
392 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
393 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
397 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
398 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
402 if (dch->debug & DEBUG_HW) in hfc_l1callback()
418 hw->name, __func__, hw->dch.dev.id, rq->adr.channel, in open_dchannel()
423 test_and_clear_bit(FLG_ACTIVE, &hw->dch.Flags); in open_dchannel()
441 err = create_l1(&hw->dch, hfc_l1callback); in open_dchannel()
453 if (((ch->protocol == ISDN_P_NT_S0) && (hw->dch.state == 3)) || in open_dchannel()
454 ((ch->protocol == ISDN_P_TE_S0) && (hw->dch.state == 7))) in open_dchannel()
520 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfc_dctrl() local
521 struct hfcsusb *hw = dch->hw; in hfc_dctrl()
525 if (dch->debug & DEBUG_HW) in hfc_dctrl()
544 hw->name, __func__, hw->dch.dev.id, in hfc_dctrl()
558 if (dch->debug & DEBUG_HW) in hfc_dctrl()
570 ph_state_te(struct dchannel *dch) in ph_state_te() argument
572 struct hfcsusb *hw = dch->hw; in ph_state_te()
575 if (dch->state <= HFC_MAX_TE_LAYER1_STATE) in ph_state_te()
577 HFC_TE_LAYER1_STATES[dch->state]); in ph_state_te()
580 hw->name, __func__, dch->state); in ph_state_te()
583 switch (dch->state) { in ph_state_te()
585 l1_event(dch->l1, HW_RESET_IND); in ph_state_te()
588 l1_event(dch->l1, HW_DEACT_IND); in ph_state_te()
592 l1_event(dch->l1, ANYSIGNAL); in ph_state_te()
595 l1_event(dch->l1, INFO2); in ph_state_te()
598 l1_event(dch->l1, INFO4_P8); in ph_state_te()
601 if (dch->state == 7) in ph_state_te()
611 ph_state_nt(struct dchannel *dch) in ph_state_nt() argument
613 struct hfcsusb *hw = dch->hw; in ph_state_nt()
616 if (dch->state <= HFC_MAX_NT_LAYER1_STATE) in ph_state_nt()
619 HFC_NT_LAYER1_STATES[dch->state]); in ph_state_nt()
623 hw->name, __func__, dch->state); in ph_state_nt()
626 switch (dch->state) { in ph_state_nt()
628 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
629 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in ph_state_nt()
639 hfcsusb_ph_command(dch->hw, HFC_L1_DEACTIVATE_NT); in ph_state_nt()
650 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
651 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_nt()
666 ph_state(struct dchannel *dch) in ph_state() argument
668 struct hfcsusb *hw = dch->hw; in ph_state()
671 ph_state_nt(dch); in ph_state()
673 ph_state_te(dch); in ph_state()
773 if (hw->dch.state == 3) in hfcsusb_ph_command()
774 _queue_data(&hw->dch.dev.D, PH_ACTIVATE_IND, in hfcsusb_ph_command()
814 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
819 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
826 if (fifo->dch) { in hfcsusb_rx_frame()
827 rx_skb = fifo->dch->rx_skb; in hfcsusb_rx_frame()
828 maxlen = fifo->dch->maxlen; in hfcsusb_rx_frame()
856 if (fifo->dch || fifo->ech) { in hfcsusb_rx_frame()
860 if (fifo->dch) in hfcsusb_rx_frame()
861 fifo->dch->rx_skb = rx_skb; in hfcsusb_rx_frame()
905 if (fifo->dch) in hfcsusb_rx_frame()
906 recv_Dchannel(fifo->dch); in hfcsusb_rx_frame()
912 &hw->dch); in hfcsusb_rx_frame()
1054 (s0_state != hw->dch.state)) { in rx_iso_complete()
1055 hw->dch.state = s0_state; in rx_iso_complete()
1056 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_iso_complete()
1126 if (hw->initdone && ((buf[0] >> 4) != hw->dch.state)) { in rx_int_complete()
1127 hw->dch.state = (buf[0] >> 4); in rx_int_complete()
1128 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_int_complete()
1174 if (fifo->dch) { in tx_iso_complete()
1175 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1176 tx_idx = &fifo->dch->tx_idx; in tx_iso_complete()
1335 if (fifo->dch && get_next_dframe(fifo->dch)) in tx_iso_complete()
1336 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1358 schedule_event(&hw->dch, FLG_PHCHANGE); in tx_iso_complete()
1758 l1_event(hw->dch.l1, CLOSE_CHANNEL); in release_hw()
1760 mISDN_unregister_device(&hw->dch.dev); in release_hw()
1763 mISDN_freedchannel(&hw->dch); in release_hw()
1844 mISDN_initdchannel(&hw->dch, MAX_DFRAME_LEN_L1, ph_state); in setup_instance()
1845 hw->dch.debug = debug & 0xFFFF; in setup_instance()
1846 hw->dch.hw = hw; in setup_instance()
1847 hw->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in setup_instance()
1848 hw->dch.dev.D.send = hfcusb_l2l1D; in setup_instance()
1849 hw->dch.dev.D.ctrl = hfc_dctrl; in setup_instance()
1855 hw->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_instance()
1857 hw->dch.dev.nrbchan = 2; in setup_instance()
1860 set_channelmap(i + 1, hw->dch.dev.channelmap); in setup_instance()
1867 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels); in setup_instance()
1874 hw->fifos[HFCUSB_D_TX].dch = &hw->dch; in setup_instance()
1875 hw->fifos[HFCUSB_D_RX].dch = &hw->dch; in setup_instance()
1888 err = mISDN_register_device(&hw->dch.dev, parent, hw->name); in setup_instance()
1901 mISDN_freedchannel(&hw->dch); in setup_instance()