Lines Matching refs:pvcc

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