Searched refs:pvcc (Results 1 - 1 of 1) sorted by relevance

/linux-4.4.14/net/atm/
H A Dpppoatm.c114 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); pppoatm_release_cb() local
125 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) pppoatm_release_cb()
126 tasklet_schedule(&pvcc->wakeup_tasklet); pppoatm_release_cb()
127 if (pvcc->old_release_cb) pppoatm_release_cb()
128 pvcc->old_release_cb(atmvcc); pppoatm_release_cb()
137 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); pppoatm_pop() local
139 pvcc->old_pop(atmvcc, skb); pppoatm_pop()
140 atomic_dec(&pvcc->inflight); pppoatm_pop()
160 if (test_and_clear_bit(BLOCKED, &pvcc->blocked)) pppoatm_pop()
161 tasklet_schedule(&pvcc->wakeup_tasklet); pppoatm_pop()
170 struct pppoatm_vcc *pvcc; pppoatm_unassign_vcc() local
171 pvcc = atmvcc_to_pvcc(atmvcc); pppoatm_unassign_vcc()
172 atmvcc->push = pvcc->old_push; pppoatm_unassign_vcc()
173 atmvcc->pop = pvcc->old_pop; pppoatm_unassign_vcc()
174 atmvcc->release_cb = pvcc->old_release_cb; pppoatm_unassign_vcc()
175 tasklet_kill(&pvcc->wakeup_tasklet); pppoatm_unassign_vcc()
176 ppp_unregister_channel(&pvcc->chan); pppoatm_unassign_vcc()
178 kfree(pvcc); pppoatm_unassign_vcc()
184 struct pppoatm_vcc *pvcc = atmvcc_to_pvcc(atmvcc); pppoatm_push() local
189 pr_debug("removing ATMPPP VCC %p\n", pvcc); pppoatm_push()
190 module = pvcc->old_owner; pppoatm_push()
197 switch (pvcc->encaps) { pppoatm_push()
205 if (pvcc->chan.ppp == NULL) { /* Not bound yet! */ pppoatm_push()
211 pvcc->encaps = e_llc; pppoatm_push()
218 pvcc->encaps = e_vc; pppoatm_push()
219 pvcc->chan.mtu += LLC_LEN; pppoatm_push()
229 ppp_input(&pvcc->chan, skb); pppoatm_push()
234 ppp_input_error(&pvcc->chan, 0); pppoatm_push()
237 static int pppoatm_may_send(struct pppoatm_vcc *pvcc, int size) pppoatm_may_send() argument
246 if (atm_may_send(pvcc->atmvcc, size) && pppoatm_may_send()
247 atomic_inc_not_zero_hint(&pvcc->inflight, NONE_INFLIGHT)) pppoatm_may_send()
253 * *must* be set before we do the atomic_inc() on pvcc->inflight. pppoatm_may_send()
257 test_and_set_bit(BLOCKED, &pvcc->blocked); pppoatm_may_send()
276 if (atm_may_send(pvcc->atmvcc, size) && pppoatm_may_send()
277 atomic_inc_not_zero(&pvcc->inflight)) pppoatm_may_send()
294 struct pppoatm_vcc *pvcc = chan_to_pvcc(chan); pppoatm_send() local
298 ATM_SKB(skb)->vcc = pvcc->atmvcc; pppoatm_send()
299 pr_debug("(skb=0x%p, vcc=0x%p)\n", skb, pvcc->atmvcc); pppoatm_send()
300 if (skb->data[0] == '\0' && (pvcc->flags & SC_COMP_PROT)) pppoatm_send()
311 test_and_set_bit(BLOCKED, &pvcc->blocked); pppoatm_send()
322 switch (pvcc->encaps) { /* LLC encapsulation needed */ pppoatm_send()
328 !pppoatm_may_send(pvcc, n->truesize)) { pppoatm_send()
338 } else if (!pppoatm_may_send(pvcc, skb->truesize)) pppoatm_send()
343 if (!pppoatm_may_send(pvcc, skb->truesize)) pppoatm_send()
367 if ((pvcc->flags & SC_COMP_PROT) && skb_headroom(skb) > 0 && pppoatm_send()
396 struct pppoatm_vcc *pvcc; pppoatm_assign_vcc() local
408 pvcc = kzalloc(sizeof(*pvcc), GFP_KERNEL); pppoatm_assign_vcc()
409 if (pvcc == NULL) pppoatm_assign_vcc()
411 pvcc->atmvcc = atmvcc; pppoatm_assign_vcc()
414 atomic_set(&pvcc->inflight, NONE_INFLIGHT); pppoatm_assign_vcc()
415 pvcc->old_push = atmvcc->push; pppoatm_assign_vcc()
416 pvcc->old_pop = atmvcc->pop; pppoatm_assign_vcc()
417 pvcc->old_owner = atmvcc->owner; pppoatm_assign_vcc()
418 pvcc->old_release_cb = atmvcc->release_cb; pppoatm_assign_vcc()
419 pvcc->encaps = (enum pppoatm_encaps) be.encaps; pppoatm_assign_vcc()
420 pvcc->chan.private = pvcc; pppoatm_assign_vcc()
421 pvcc->chan.ops = &pppoatm_ops; pppoatm_assign_vcc()
422 pvcc->chan.mtu = atmvcc->qos.txtp.max_sdu - PPP_HDRLEN - pppoatm_assign_vcc()
424 pvcc->wakeup_tasklet = tasklet_proto; pppoatm_assign_vcc()
425 pvcc->wakeup_tasklet.data = (unsigned long) &pvcc->chan; pppoatm_assign_vcc()
426 err = ppp_register_channel(&pvcc->chan); pppoatm_assign_vcc()
428 kfree(pvcc); pppoatm_assign_vcc()
431 atmvcc->user_back = pvcc; pppoatm_assign_vcc()

Completed in 59 milliseconds