Lines Matching defs:dch
25 struct dchannel *dch = container_of(ws, struct dchannel, workq);
29 if (test_and_clear_bit(FLG_RECVQUEUE, &dch->Flags)) {
30 while ((skb = skb_dequeue(&dch->rqueue))) {
31 if (likely(dch->dev.D.peer)) {
32 err = dch->dev.D.recv(dch->dev.D.peer, skb);
39 if (test_and_clear_bit(FLG_PHCHANGE, &dch->Flags)) {
40 if (dch->phfunc)
41 dch->phfunc(dch);
162 recv_Dchannel(struct dchannel *dch)
166 if (dch->rx_skb->len < 2) { /* at least 2 for sapi / tei */
167 dev_kfree_skb(dch->rx_skb);
168 dch->rx_skb = NULL;
171 hh = mISDN_HEAD_P(dch->rx_skb);
173 hh->id = get_sapi_tei(dch->rx_skb->data);
174 skb_queue_tail(&dch->rqueue, dch->rx_skb);
175 dch->rx_skb = NULL;
176 schedule_event(dch, FLG_RECVQUEUE);
181 recv_Echannel(struct dchannel *ech, struct dchannel *dch)
193 skb_queue_tail(&dch->rqueue, ech->rx_skb);
195 schedule_event(dch, FLG_RECVQUEUE);
222 recv_Dchannel_skb(struct dchannel *dch, struct sk_buff *skb)
224 skb_queue_tail(&dch->rqueue, skb);
225 schedule_event(dch, FLG_RECVQUEUE);
245 confirm_Dsend(struct dchannel *dch)
249 skb = _alloc_mISDN_skb(PH_DATA_CNF, mISDN_HEAD_ID(dch->tx_skb),
253 mISDN_HEAD_ID(dch->tx_skb));
256 skb_queue_tail(&dch->rqueue, skb);
257 schedule_event(dch, FLG_RECVQUEUE);
261 get_next_dframe(struct dchannel *dch)
263 dch->tx_idx = 0;
264 dch->tx_skb = skb_dequeue(&dch->squeue);
265 if (dch->tx_skb) {
266 confirm_Dsend(dch);
269 dch->tx_skb = NULL;
270 test_and_clear_bit(FLG_TX_BUSY, &dch->Flags);