Lines Matching refs:dch
16 struct dchannel *dch = container_of(ws, struct dchannel, workq);
20 if (test_and_clear_bit(FLG_RECVQUEUE, &dch->Flags)) {
21 while ((skb = skb_dequeue(&dch->rqueue))) {
22 if (likely(dch->dev.D.peer)) {
23 err = dch->dev.D.recv(dch->dev.D.peer, skb);
30 if (test_and_clear_bit(FLG_PHCHANGE, &dch->Flags)) {
31 if (dch->phfunc)
32 dch->phfunc(dch);
211 recv_Dchannel(struct dchannel *dch)
215 if (dch->rx_skb->len < 2) { /* at least 2 for sapi / tei */
216 dev_kfree_skb(dch->rx_skb);
217 dch->rx_skb = NULL;
220 hh = mISDN_HEAD_P(dch->rx_skb);
222 hh->id = get_sapi_tei(dch->rx_skb->data);
223 skb_queue_tail(&dch->rqueue, dch->rx_skb);
224 dch->rx_skb = NULL;
225 schedule_event(dch, FLG_RECVQUEUE);
230 recv_Echannel(struct dchannel *ech, struct dchannel *dch)
242 skb_queue_tail(&dch->rqueue, ech->rx_skb);
244 schedule_event(dch, FLG_RECVQUEUE);
284 recv_Dchannel_skb(struct dchannel *dch, struct sk_buff *skb)
286 skb_queue_tail(&dch->rqueue, skb);
287 schedule_event(dch, FLG_RECVQUEUE);
307 confirm_Dsend(struct dchannel *dch)
311 skb = _alloc_mISDN_skb(PH_DATA_CNF, mISDN_HEAD_ID(dch->tx_skb),
315 mISDN_HEAD_ID(dch->tx_skb));
318 skb_queue_tail(&dch->rqueue, skb);
319 schedule_event(dch, FLG_RECVQUEUE);
323 get_next_dframe(struct dchannel *dch)
325 dch->tx_idx = 0;
326 dch->tx_skb = skb_dequeue(&dch->squeue);
327 if (dch->tx_skb) {
328 confirm_Dsend(dch);
331 dch->tx_skb = NULL;
332 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags);