Lines Matching refs:pvcc

111 	struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc);  in pppoatm_release_cb()  local
122 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) in pppoatm_release_cb()
123 tasklet_schedule(&pvcc->wakeup_tasklet); in pppoatm_release_cb()
124 if (pvcc->old_release_cb) in pppoatm_release_cb()
125 pvcc->old_release_cb(atmvcc); in pppoatm_release_cb()
134 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_pop() local
136 pvcc->old_pop(atmvcc, skb); in pppoatm_pop()
137 atomic_dec(&pvcc->inflight); in pppoatm_pop()
157 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) in pppoatm_pop()
158 tasklet_schedule(&pvcc->wakeup_tasklet); in pppoatm_pop()
167 struct pppoatm_vcc *pvcc; in pppoatm_unassign_vcc() local
168 pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_unassign_vcc()
169 atmvcc->push = pvcc->old_push; in pppoatm_unassign_vcc()
170 atmvcc->pop = pvcc->old_pop; in pppoatm_unassign_vcc()
171 atmvcc->release_cb = pvcc->old_release_cb; in pppoatm_unassign_vcc()
172 tasklet_kill(&pvcc->wakeup_tasklet); in pppoatm_unassign_vcc()
173 ppp_unregister_channel(&pvcc->chan); in pppoatm_unassign_vcc()
175 kfree(pvcc); in pppoatm_unassign_vcc()
181 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); in pppoatm_push() local
186 pr_debug("removing ATMPPP VCC %p\n", pvcc); in pppoatm_push()
187 module = pvcc->old_owner; in pppoatm_push()
194 switch (pvcc->encaps) { in pppoatm_push()
202 if (pvcc->chan.ppp == NULL) { /* Not bound yet! */ in pppoatm_push()
208 pvcc->encaps = e_llc; in pppoatm_push()
215 pvcc->encaps = e_vc; in pppoatm_push()
216 pvcc->chan.mtu += LLC_LEN; in pppoatm_push()
224 ppp_input(&pvcc->chan, skb); in pppoatm_push()
229 ppp_input_error(&pvcc->chan, 0); in pppoatm_push()
232 static int pppoatm_may_send(struct pppoatm_vcc *pvcc, int size) in pppoatm_may_send() argument
241 if (atm_may_send(pvcc->atmvcc, size) && in pppoatm_may_send()
242 atomic_inc_not_zero(&pvcc->inflight)) in pppoatm_may_send()
252 test_and_set_bit(BLOCKED, &pvcc->blocked); in pppoatm_may_send()
271 if (atm_may_send(pvcc->atmvcc, size) && in pppoatm_may_send()
272 atomic_inc_not_zero(&pvcc->inflight)) in pppoatm_may_send()
289 struct pppoatm_vcc *pvcc = chan_to_pvcc(chan); in pppoatm_send() local
293 ATM_SKB(skb)->vcc = pvcc->atmvcc; in pppoatm_send()
294 pr_debug("(skb=0x%p, vcc=0x%p)\n", skb, pvcc->atmvcc); in pppoatm_send()
295 if (skb->data[0] == '\0' && (pvcc->flags & SC_COMP_PROT)) in pppoatm_send()
306 test_and_set_bit(BLOCKED, &pvcc->blocked); in pppoatm_send()
317 switch (pvcc->encaps) { /* LLC encapsulation needed */ in pppoatm_send()
323 !pppoatm_may_send(pvcc, n->truesize)) { in pppoatm_send()
333 } else if (!pppoatm_may_send(pvcc, skb->truesize)) in pppoatm_send()
338 if (!pppoatm_may_send(pvcc, skb->truesize)) in pppoatm_send()
361 if ((pvcc->flags & SC_COMP_PROT) && skb_headroom(skb) > 0 && in pppoatm_send()
390 struct pppoatm_vcc *pvcc; in pppoatm_assign_vcc() local
402 pvcc = kzalloc(sizeof(*pvcc), GFP_KERNEL); in pppoatm_assign_vcc()
403 if (pvcc == NULL) in pppoatm_assign_vcc()
405 pvcc->atmvcc = atmvcc; in pppoatm_assign_vcc()
408 atomic_set(&pvcc->inflight, NONE_INFLIGHT); in pppoatm_assign_vcc()
409 pvcc->old_push = atmvcc->push; in pppoatm_assign_vcc()
410 pvcc->old_pop = atmvcc->pop; in pppoatm_assign_vcc()
411 pvcc->old_owner = atmvcc->owner; in pppoatm_assign_vcc()
412 pvcc->old_release_cb = atmvcc->release_cb; in pppoatm_assign_vcc()
413 pvcc->encaps = (enum pppoatm_encaps) be.encaps; in pppoatm_assign_vcc()
414 pvcc->chan.private = pvcc; in pppoatm_assign_vcc()
415 pvcc->chan.ops = &pppoatm_ops; in pppoatm_assign_vcc()
416 pvcc->chan.mtu = atmvcc->qos.txtp.max_sdu - PPP_HDRLEN - in pppoatm_assign_vcc()
418 pvcc->wakeup_tasklet = tasklet_proto; in pppoatm_assign_vcc()
419 pvcc->wakeup_tasklet.data = (unsigned long) &pvcc->chan; in pppoatm_assign_vcc()
420 err = ppp_register_channel(&pvcc->chan); in pppoatm_assign_vcc()
422 kfree(pvcc); in pppoatm_assign_vcc()
425 atmvcc->user_back = pvcc; in pppoatm_assign_vcc()