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()
334 skb_queue_splice_init(&dch->squeue, &free_queue); in hfcusb_l2l1D()
335 if (dch->tx_skb) { in hfcusb_l2l1D()
336 __skb_queue_tail(&free_queue, dch->tx_skb); in hfcusb_l2l1D()
337 dch->tx_skb = NULL; in hfcusb_l2l1D()
339 dch->tx_idx = 0; in hfcusb_l2l1D()
340 if (dch->rx_skb) { in hfcusb_l2l1D()
341 __skb_queue_tail(&free_queue, dch->rx_skb); in hfcusb_l2l1D()
342 dch->rx_skb = NULL; in hfcusb_l2l1D()
344 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfcusb_l2l1D()
348 if (test_and_clear_bit(FLG_L1_BUSY, &dch->Flags)) in hfcusb_l2l1D()
349 dchannel_sched_event(&hc->dch, D_CLEARBUSY); in hfcusb_l2l1D()
353 ret = l1_event(dch->l1, hh->prim); in hfcusb_l2l1D()
367 hfc_l1callback(struct dchannel *dch, u_int cmd) in hfc_l1callback() argument
369 struct hfcsusb *hw = dch->hw; in hfc_l1callback()
383 skb_queue_purge(&dch->squeue); in hfc_l1callback()
384 if (dch->tx_skb) { in hfc_l1callback()
385 dev_kfree_skb(dch->tx_skb); in hfc_l1callback()
386 dch->tx_skb = NULL; in hfc_l1callback()
388 dch->tx_idx = 0; in hfc_l1callback()
389 if (dch->rx_skb) { in hfc_l1callback()
390 dev_kfree_skb(dch->rx_skb); in hfc_l1callback()
391 dch->rx_skb = NULL; in hfc_l1callback()
393 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags); in hfc_l1callback()
396 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
397 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
401 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in hfc_l1callback()
402 _queue_data(&dch->dev.D, cmd, MISDN_ID_ANY, 0, NULL, in hfc_l1callback()
406 if (dch->debug & DEBUG_HW) in hfc_l1callback()
422 hw->name, __func__, hw->dch.dev.id, rq->adr.channel, in open_dchannel()
427 test_and_clear_bit(FLG_ACTIVE, &hw->dch.Flags); in open_dchannel()
445 err = create_l1(&hw->dch, hfc_l1callback); in open_dchannel()
457 if (((ch->protocol == ISDN_P_NT_S0) && (hw->dch.state == 3)) || in open_dchannel()
458 ((ch->protocol == ISDN_P_TE_S0) && (hw->dch.state == 7))) in open_dchannel()
524 struct dchannel *dch = container_of(dev, struct dchannel, dev); in hfc_dctrl() local
525 struct hfcsusb *hw = dch->hw; in hfc_dctrl()
529 if (dch->debug & DEBUG_HW) in hfc_dctrl()
548 hw->name, __func__, hw->dch.dev.id, in hfc_dctrl()
562 if (dch->debug & DEBUG_HW) in hfc_dctrl()
574 ph_state_te(struct dchannel *dch) in ph_state_te() argument
576 struct hfcsusb *hw = dch->hw; in ph_state_te()
579 if (dch->state <= HFC_MAX_TE_LAYER1_STATE) in ph_state_te()
581 HFC_TE_LAYER1_STATES[dch->state]); in ph_state_te()
584 hw->name, __func__, dch->state); in ph_state_te()
587 switch (dch->state) { in ph_state_te()
589 l1_event(dch->l1, HW_RESET_IND); in ph_state_te()
592 l1_event(dch->l1, HW_DEACT_IND); in ph_state_te()
596 l1_event(dch->l1, ANYSIGNAL); in ph_state_te()
599 l1_event(dch->l1, INFO2); in ph_state_te()
602 l1_event(dch->l1, INFO4_P8); in ph_state_te()
605 if (dch->state == 7) in ph_state_te()
615 ph_state_nt(struct dchannel *dch) in ph_state_nt() argument
617 struct hfcsusb *hw = dch->hw; in ph_state_nt()
620 if (dch->state <= HFC_MAX_NT_LAYER1_STATE) in ph_state_nt()
623 HFC_NT_LAYER1_STATES[dch->state]); in ph_state_nt()
627 hw->name, __func__, dch->state); in ph_state_nt()
630 switch (dch->state) { in ph_state_nt()
632 test_and_clear_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
633 test_and_clear_bit(FLG_L2_ACTIVATED, &dch->Flags); in ph_state_nt()
643 hfcsusb_ph_command(dch->hw, HFC_L1_DEACTIVATE_NT); in ph_state_nt()
654 test_and_set_bit(FLG_ACTIVE, &dch->Flags); in ph_state_nt()
655 _queue_data(&dch->dev.D, PH_ACTIVATE_IND, in ph_state_nt()
670 ph_state(struct dchannel *dch) in ph_state() argument
672 struct hfcsusb *hw = dch->hw; in ph_state()
675 ph_state_nt(dch); in ph_state()
677 ph_state_te(dch); in ph_state()
777 if (hw->dch.state == 3) in hfcsusb_ph_command()
778 _queue_data(&hw->dch.dev.D, PH_ACTIVATE_IND, in hfcsusb_ph_command()
818 fifo->dch, fifo->bch, fifo->ech); in hfcsusb_rx_frame()
823 if ((!!fifo->dch + !!fifo->bch + !!fifo->ech) != 1) { in hfcsusb_rx_frame()
830 if (fifo->dch) { in hfcsusb_rx_frame()
831 rx_skb = fifo->dch->rx_skb; in hfcsusb_rx_frame()
832 maxlen = fifo->dch->maxlen; in hfcsusb_rx_frame()
860 if (fifo->dch || fifo->ech) { in hfcsusb_rx_frame()
864 if (fifo->dch) in hfcsusb_rx_frame()
865 fifo->dch->rx_skb = rx_skb; in hfcsusb_rx_frame()
909 if (fifo->dch) in hfcsusb_rx_frame()
910 recv_Dchannel(fifo->dch); in hfcsusb_rx_frame()
916 &hw->dch); in hfcsusb_rx_frame()
1058 (s0_state != hw->dch.state)) { in rx_iso_complete()
1059 hw->dch.state = s0_state; in rx_iso_complete()
1060 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_iso_complete()
1130 if (hw->initdone && ((buf[0] >> 4) != hw->dch.state)) { in rx_int_complete()
1131 hw->dch.state = (buf[0] >> 4); in rx_int_complete()
1132 schedule_event(&hw->dch, FLG_PHCHANGE); in rx_int_complete()
1178 if (fifo->dch) { in tx_iso_complete()
1179 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1180 tx_idx = &fifo->dch->tx_idx; in tx_iso_complete()
1339 if (fifo->dch && get_next_dframe(fifo->dch)) in tx_iso_complete()
1340 tx_skb = fifo->dch->tx_skb; in tx_iso_complete()
1362 schedule_event(&hw->dch, FLG_PHCHANGE); in tx_iso_complete()
1762 l1_event(hw->dch.l1, CLOSE_CHANNEL); in release_hw()
1764 mISDN_unregister_device(&hw->dch.dev); in release_hw()
1767 mISDN_freedchannel(&hw->dch); in release_hw()
1848 mISDN_initdchannel(&hw->dch, MAX_DFRAME_LEN_L1, ph_state); in setup_instance()
1849 hw->dch.debug = debug & 0xFFFF; in setup_instance()
1850 hw->dch.hw = hw; in setup_instance()
1851 hw->dch.dev.Dprotocols = (1 << ISDN_P_TE_S0) | (1 << ISDN_P_NT_S0); in setup_instance()
1852 hw->dch.dev.D.send = hfcusb_l2l1D; in setup_instance()
1853 hw->dch.dev.D.ctrl = hfc_dctrl; in setup_instance()
1859 hw->dch.dev.Bprotocols = (1 << (ISDN_P_B_RAW & ISDN_P_B_MASK)) | in setup_instance()
1861 hw->dch.dev.nrbchan = 2; in setup_instance()
1864 set_channelmap(i + 1, hw->dch.dev.channelmap); in setup_instance()
1871 list_add(&hw->bch[i].ch.list, &hw->dch.dev.bchannels); in setup_instance()
1878 hw->fifos[HFCUSB_D_TX].dch = &hw->dch; in setup_instance()
1879 hw->fifos[HFCUSB_D_RX].dch = &hw->dch; in setup_instance()
1892 err = mISDN_register_device(&hw->dch.dev, parent, hw->name); in setup_instance()
1905 mISDN_freedchannel(&hw->dch); in setup_instance()