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 sizeof(struct ph_info_dch) + dch->dev.nrbchan * in hfcsusb_ph_info()
276 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfcusb_l2l1D() local
278 struct hfcsusb *hw = dch->hw; in hfcusb_l2l1D()
289 ret = dchannel_senddata(dch, skb); in hfcusb_l2l1D()
305 if (test_bit(FLG_ACTIVE, &dch->Flags)) { in hfcusb_l2l1D()
306 _queue_data(&dch->dev.D, in hfcusb_l2l1D()
313 &dch->Flags); in hfcusb_l2l1D()
317 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
325 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in hfcusb_l2l1D()
330 skb_queue_purge(&dch->squeue); in hfcusb_l2l1D()
331 if (dch->tx_skb) { in hfcusb_l2l1D()
332 dev_kfree_skb(dch->tx_skb); in hfcusb_l2l1D()
333 dch->tx_skb = NULL; in hfcusb_l2l1D()
335 dch->tx_idx = 0; in hfcusb_l2l1D()
336 if (dch->rx_skb) { in hfcusb_l2l1D()
337 dev_kfree_skb(dch->rx_skb); in hfcusb_l2l1D()
338 dch->rx_skb = NULL; in hfcusb_l2l1D()
340 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcusb_l2l1D()
343 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in hfcusb_l2l1D()
344 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in hfcusb_l2l1D()
348 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()
419 hw->name, __func__, hw->dch.dev.id, rq->adr.channel, in open_dchannel()
424 test_and_clear_bit(FLG_ACTIVE, &hw->dch.Flags); in open_dchannel()
442 err = create_l1(&hw->dch, hfc_l1callback); in open_dchannel()
454 if (((ch->protocol == ISDN_P_NT_S0) && (hw->dch.state == 3)) || in open_dchannel()
455 ((ch->protocol == ISDN_P_TE_S0) && (hw->dch.state == 7))) in open_dchannel()
521 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfc_dctrl() local
522 struct hfcsusb *hw = dch->hw; in hfc_dctrl()
526 if (dch->debug & DEBUG_HW) in hfc_dctrl()
545 hw->name, __func__, hw->dch.dev.id, in hfc_dctrl()
559 if (dch->debug & DEBUG_HW) in hfc_dctrl()
571 ph_state_te(struct dchannel *dch) in ph_state_te() argument
573 struct hfcsusb *hw = dch->hw; in ph_state_te()
576 if (dch->state <= HFC_MAX_TE_LAYER1_STATE) in ph_state_te()
578 HFC_TE_LAYER1_STATES[dch->state]); in ph_state_te()
581 hw->name, __func__, dch->state); in ph_state_te()
584 switch (dch->state) { in ph_state_te()
586 l1_event(dch->l1, HW_RESET_IND); in ph_state_te()
589 l1_event(dch->l1, HW_DEACT_IND); in ph_state_te()
593 l1_event(dch->l1, ANYSIGNAL); in ph_state_te()
596 l1_event(dch->l1, INFO2); in ph_state_te()
599 l1_event(dch->l1, INFO4_P8); in ph_state_te()
602 if (dch->state == 7) in ph_state_te()
612 ph_state_nt(struct dchannel *dch) in ph_state_nt() argument
614 struct hfcsusb *hw = dch->hw; in ph_state_nt()
617 if (dch->state <= HFC_MAX_NT_LAYER1_STATE) in ph_state_nt()
620 HFC_NT_LAYER1_STATES[dch->state]); in ph_state_nt()
624 hw->name, __func__, dch->state); in ph_state_nt()
627 switch (dch->state) { in ph_state_nt()
629 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
630 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in ph_state_nt()
640 hfcsusb_ph_command(dch->hw, HFC_L1_DEACTIVATE_NT); in ph_state_nt()
651 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
652 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_nt()
667 ph_state(struct dchannel *dch) in ph_state() argument
669 struct hfcsusb *hw = dch->hw; in ph_state()
672 ph_state_nt(dch); in ph_state()
674 ph_state_te(dch); in ph_state()
775 if (hw->dch.state == 3) in hfcsusb_ph_command()
776 _queue_data(&hw->dch.dev.D, PH_ACTIVATE_IND, in hfcsusb_ph_command()
816 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
821 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
828 if (fifo->dch) { in hfcsusb_rx_frame()
829 rx_skb = fifo->dch->rx_skb; in hfcsusb_rx_frame()
830 maxlen = fifo->dch->maxlen; in hfcsusb_rx_frame()
858 if (fifo->dch || fifo->ech) { in hfcsusb_rx_frame()
862 if (fifo->dch) in hfcsusb_rx_frame()
863 fifo->dch->rx_skb = rx_skb; in hfcsusb_rx_frame()
907 if (fifo->dch) in hfcsusb_rx_frame()
908 recv_Dchannel(fifo->dch); in hfcsusb_rx_frame()
914 &hw->dch); in hfcsusb_rx_frame()
1056 (s0_state != hw->dch.state)) { in rx_iso_complete()
1057 hw->dch.state = s0_state; in rx_iso_complete()
1058 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_iso_complete()
1128 if (hw->initdone && ((buf[0] >> 4) != hw->dch.state)) { in rx_int_complete()
1129 hw->dch.state = (buf[0] >> 4); in rx_int_complete()
1130 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_int_complete()
1176 if (fifo->dch) { in tx_iso_complete()
1177 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1178 tx_idx = &fifo->dch->tx_idx; in tx_iso_complete()
1337 if (fifo->dch && get_next_dframe(fifo->dch)) in tx_iso_complete()
1338 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1360 schedule_event(&hw->dch, FLG_PHCHANGE); in tx_iso_complete()
1760 l1_event(hw->dch.l1, CLOSE_CHANNEL); in release_hw()
1762 mISDN_unregister_device(&hw->dch.dev); in release_hw()
1765 mISDN_freedchannel(&hw->dch); in release_hw()
1846 mISDN_initdchannel(&hw->dch, MAX_DFRAME_LEN_L1, ph_state); in setup_instance()
1847 hw->dch.debug = debug & 0xFFFF; in setup_instance()
1848 hw->dch.hw = hw; in setup_instance()
1849 hw->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in setup_instance()
1850 hw->dch.dev.D.send = hfcusb_l2l1D; in setup_instance()
1851 hw->dch.dev.D.ctrl = hfc_dctrl; in setup_instance()
1857 hw->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_instance()
1859 hw->dch.dev.nrbchan = 2; in setup_instance()
1862 set_channelmap(i + 1, hw->dch.dev.channelmap); in setup_instance()
1869 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels); in setup_instance()
1876 hw->fifos[HFCUSB_D_TX].dch = &hw->dch; in setup_instance()
1877 hw->fifos[HFCUSB_D_RX].dch = &hw->dch; in setup_instance()
1890 err = mISDN_register_device(&hw->dch.dev, parent, hw->name); in setup_instance()
1903 mISDN_freedchannel(&hw->dch); in setup_instance()