Lines Matching refs:pvcc

106 	struct pppoatm_vcc *pvcc = from_tasklet(pvcc, t, wakeup_tasklet);  in pppoatm_wakeup_sender()  local
108 ppp_output_wakeup(&pvcc->chan); in pppoatm_wakeup_sender()
113 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_release_cb() local
124 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) in pppoatm_release_cb()
125 tasklet_schedule(&pvcc->wakeup_tasklet); in pppoatm_release_cb()
126 if (pvcc->old_release_cb) in pppoatm_release_cb()
127 pvcc->old_release_cb(atmvcc); in pppoatm_release_cb()
136 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_pop() local
138 pvcc->old_pop(atmvcc, skb); in pppoatm_pop()
139 atomic_dec(&pvcc->inflight); in pppoatm_pop()
159 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) in pppoatm_pop()
160 tasklet_schedule(&pvcc->wakeup_tasklet); in pppoatm_pop()
169 struct pppoatm_vcc *pvcc; in pppoatm_unassign_vcc() local
170 pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_unassign_vcc()
171 atmvcc->push = pvcc->old_push; in pppoatm_unassign_vcc()
172 atmvcc->pop = pvcc->old_pop; in pppoatm_unassign_vcc()
173 atmvcc->release_cb = pvcc->old_release_cb; in pppoatm_unassign_vcc()
174 tasklet_kill(&pvcc->wakeup_tasklet); in pppoatm_unassign_vcc()
175 ppp_unregister_channel(&pvcc->chan); in pppoatm_unassign_vcc()
177 kfree(pvcc); in pppoatm_unassign_vcc()
183 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_push() local
188 pr_debug("removing ATMPPP VCC %p\n", pvcc); in pppoatm_push()
189 module = pvcc->old_owner; in pppoatm_push()
196 switch (pvcc->encaps) { in pppoatm_push()
204 if (pvcc->chan.ppp == NULL) { /* Not bound yet! */ in pppoatm_push()
210 pvcc->encaps = e_llc; in pppoatm_push()
217 pvcc->encaps = e_vc; in pppoatm_push()
218 pvcc->chan.mtu += LLC_LEN; in pppoatm_push()
226 ppp_input(&pvcc->chan, skb); in pppoatm_push()
231 ppp_input_error(&pvcc->chan, 0); in pppoatm_push()
234 static int pppoatm_may_send(struct pppoatm_vcc *pvcc, int size) in pppoatm_may_send() argument
243 if (atm_may_send(pvcc->atmvcc, size) && in pppoatm_may_send()
244 atomic_inc_not_zero(&pvcc->inflight)) in pppoatm_may_send()
254 test_and_set_bit(BLOCKED, &pvcc->blocked); in pppoatm_may_send()
273 if (atm_may_send(pvcc->atmvcc, size) && in pppoatm_may_send()
274 atomic_inc_not_zero(&pvcc->inflight)) in pppoatm_may_send()
291 struct pppoatm_vcc *pvcc = chan_to_pvcc(chan); in pppoatm_send() local
295 ATM_SKB(skb)->vcc = pvcc->atmvcc; in pppoatm_send()
296 pr_debug("(skb=0x%p, vcc=0x%p)\n", skb, pvcc->atmvcc); in pppoatm_send()
297 if (skb->data[0] == '\0' && (pvcc->flags & SC_COMP_PROT)) in pppoatm_send()
308 test_and_set_bit(BLOCKED, &pvcc->blocked); in pppoatm_send()
319 switch (pvcc->encaps) { /* LLC encapsulation needed */ in pppoatm_send()
325 !pppoatm_may_send(pvcc, n->truesize)) { in pppoatm_send()
335 } else if (!pppoatm_may_send(pvcc, skb->truesize)) in pppoatm_send()
340 if (!pppoatm_may_send(pvcc, skb->truesize)) in pppoatm_send()
363 if ((pvcc->flags & SC_COMP_PROT) && skb_headroom(skb) > 0 && in pppoatm_send()
392 struct pppoatm_vcc *pvcc; in pppoatm_assign_vcc() local
400 pvcc = kzalloc(sizeof(*pvcc), GFP_KERNEL); in pppoatm_assign_vcc()
401 if (pvcc == NULL) in pppoatm_assign_vcc()
403 pvcc->atmvcc = atmvcc; in pppoatm_assign_vcc()
406 atomic_set(&pvcc->inflight, NONE_INFLIGHT); in pppoatm_assign_vcc()
407 pvcc->old_push = atmvcc->push; in pppoatm_assign_vcc()
408 pvcc->old_pop = atmvcc->pop; in pppoatm_assign_vcc()
409 pvcc->old_owner = atmvcc->owner; in pppoatm_assign_vcc()
410 pvcc->old_release_cb = atmvcc->release_cb; in pppoatm_assign_vcc()
411 pvcc->encaps = (enum pppoatm_encaps) be.encaps; in pppoatm_assign_vcc()
412 pvcc->chan.private = pvcc; in pppoatm_assign_vcc()
413 pvcc->chan.ops = &pppoatm_ops; in pppoatm_assign_vcc()
414 pvcc->chan.mtu = atmvcc->qos.txtp.max_sdu - PPP_HDRLEN - in pppoatm_assign_vcc()
416 tasklet_setup(&pvcc->wakeup_tasklet, pppoatm_wakeup_sender); in pppoatm_assign_vcc()
417 err = ppp_register_channel(&pvcc->chan); in pppoatm_assign_vcc()
419 kfree(pvcc); in pppoatm_assign_vcc()
422 atmvcc->user_back = pvcc; in pppoatm_assign_vcc()