• Home
  • Raw
  • Download

Lines Matching refs:vcc

44 	struct atm_vcc *vcc = atm_sk(sk);  in __vcc_insert_socket()  local
45 struct hlist_head *head = &vcc_hash[vcc->vci & (VCC_HTABLE_SIZE - 1)]; in __vcc_insert_socket()
46 sk->sk_hash = vcc->vci & (VCC_HTABLE_SIZE - 1); in __vcc_insert_socket()
65 static struct sk_buff *alloc_tx(struct atm_vcc *vcc, unsigned int size) in alloc_tx() argument
68 struct sock *sk = sk_atm(vcc); in alloc_tx()
70 if (sk_wmem_alloc_get(sk) && !atm_may_send(vcc, size)) { in alloc_tx()
106 struct atm_vcc *vcc = atm_sk(sk); in vcc_writable() local
108 return (vcc->qos.txtp.max_sdu + in vcc_writable()
131 struct atm_vcc *vcc = atm_sk(sk); in vcc_release_cb() local
133 if (vcc->release_cb) in vcc_release_cb()
134 vcc->release_cb(vcc); in vcc_release_cb()
147 struct atm_vcc *vcc; in vcc_create() local
159 vcc = atm_sk(sk); in vcc_create()
160 vcc->dev = NULL; in vcc_create()
161 memset(&vcc->local, 0, sizeof(struct sockaddr_atmsvc)); in vcc_create()
162 memset(&vcc->remote, 0, sizeof(struct sockaddr_atmsvc)); in vcc_create()
163 vcc->qos.txtp.max_sdu = 1 << 16; /* for meta VCs */ in vcc_create()
166 vcc->push = NULL; in vcc_create()
167 vcc->pop = NULL; in vcc_create()
168 vcc->owner = NULL; in vcc_create()
169 vcc->push_oam = NULL; in vcc_create()
170 vcc->release_cb = NULL; in vcc_create()
171 vcc->vpi = vcc->vci = 0; /* no VCI/VPI yet */ in vcc_create()
172 vcc->atm_options = vcc->aal_options = 0; in vcc_create()
179 struct atm_vcc *vcc = atm_sk(sk); in vcc_destroy_socket() local
182 set_bit(ATM_VF_CLOSE, &vcc->flags); in vcc_destroy_socket()
183 clear_bit(ATM_VF_READY, &vcc->flags); in vcc_destroy_socket()
184 if (vcc->dev) { in vcc_destroy_socket()
185 if (vcc->dev->ops->close) in vcc_destroy_socket()
186 vcc->dev->ops->close(vcc); in vcc_destroy_socket()
187 if (vcc->push) in vcc_destroy_socket()
188 vcc->push(vcc, NULL); /* atmarpd has no push */ in vcc_destroy_socket()
189 module_put(vcc->owner); in vcc_destroy_socket()
192 atm_return(vcc, skb->truesize); in vcc_destroy_socket()
196 module_put(vcc->dev->ops->owner); in vcc_destroy_socket()
197 atm_dev_put(vcc->dev); in vcc_destroy_socket()
217 void vcc_release_async(struct atm_vcc *vcc, int reply) in vcc_release_async() argument
219 struct sock *sk = sk_atm(vcc); in vcc_release_async()
221 set_bit(ATM_VF_CLOSE, &vcc->flags); in vcc_release_async()
224 clear_bit(ATM_VF_WAITING, &vcc->flags); in vcc_release_async()
229 void vcc_process_recv_queue(struct atm_vcc *vcc) in vcc_process_recv_queue() argument
236 rq = &sk_atm(vcc)->sk_receive_queue; in vcc_process_recv_queue()
244 vcc->push(vcc, skb); in vcc_process_recv_queue()
275 struct atm_vcc *vcc; in atm_dev_release_vccs() local
278 vcc = atm_sk(s); in atm_dev_release_vccs()
279 if (vcc->dev == dev) { in atm_dev_release_vccs()
280 vcc_release_async(vcc, -EPIPE); in atm_dev_release_vccs()
317 static int check_ci(const struct atm_vcc *vcc, short vpi, int vci) in check_ci() argument
325 if (walk->dev != vcc->dev) in check_ci()
329 ATM_NONE && vcc->qos.txtp.traffic_class != ATM_NONE) || in check_ci()
331 vcc->qos.rxtp.traffic_class != ATM_NONE))) in check_ci()
342 static int find_ci(const struct atm_vcc *vcc, short *vpi, int *vci) in find_ci() argument
351 err = check_ci(vcc, *vpi, *vci); in find_ci()
357 else if (p >= 1 << vcc->dev->ci_range.vpi_bits) in find_ci()
361 else if (c < ATM_NOT_RSV_VCI || c >= 1 << vcc->dev->ci_range.vci_bits) in find_ci()
366 if (!check_ci(vcc, p, c)) { in find_ci()
373 if (c >= 1 << vcc->dev->ci_range.vci_bits) in find_ci()
379 if (p >= 1 << vcc->dev->ci_range.vpi_bits) in find_ci()
386 static int __vcc_connect(struct atm_vcc *vcc, struct atm_dev *dev, short vpi, in __vcc_connect() argument
389 struct sock *sk = sk_atm(vcc); in __vcc_connect()
401 vcc->dev = dev; in __vcc_connect()
404 (error = find_ci(vcc, &vpi, &vci))) { in __vcc_connect()
408 vcc->vpi = vpi; in __vcc_connect()
409 vcc->vci = vci; in __vcc_connect()
412 switch (vcc->qos.aal) { in __vcc_connect()
414 error = atm_init_aal0(vcc); in __vcc_connect()
415 vcc->stats = &dev->stats.aal0; in __vcc_connect()
418 error = atm_init_aal34(vcc); in __vcc_connect()
419 vcc->stats = &dev->stats.aal34; in __vcc_connect()
423 vcc->qos.aal = ATM_AAL5; in __vcc_connect()
426 error = atm_init_aal5(vcc); in __vcc_connect()
427 vcc->stats = &dev->stats.aal5; in __vcc_connect()
433 error = adjust_tp(&vcc->qos.txtp, vcc->qos.aal); in __vcc_connect()
435 error = adjust_tp(&vcc->qos.rxtp, vcc->qos.aal); in __vcc_connect()
438 pr_debug("VCC %d.%d, AAL %d\n", vpi, vci, vcc->qos.aal); in __vcc_connect()
440 vcc->qos.txtp.traffic_class, in __vcc_connect()
441 vcc->qos.txtp.min_pcr, in __vcc_connect()
442 vcc->qos.txtp.max_pcr, in __vcc_connect()
443 vcc->qos.txtp.max_sdu); in __vcc_connect()
445 vcc->qos.rxtp.traffic_class, in __vcc_connect()
446 vcc->qos.rxtp.min_pcr, in __vcc_connect()
447 vcc->qos.rxtp.max_pcr, in __vcc_connect()
448 vcc->qos.rxtp.max_sdu); in __vcc_connect()
451 error = dev->ops->open(vcc); in __vcc_connect()
462 vcc->dev = NULL; in __vcc_connect()
469 struct atm_vcc *vcc = ATM_SD(sock); in vcc_connect() local
481 clear_bit(ATM_VF_PARTIAL, &vcc->flags); in vcc_connect()
483 if (test_bit(ATM_VF_PARTIAL, &vcc->flags)) in vcc_connect()
487 vcc->qos.txtp.traffic_class, vcc->qos.txtp.min_pcr, in vcc_connect()
488 vcc->qos.txtp.max_pcr, vcc->qos.txtp.max_sdu, in vcc_connect()
489 vcc->qos.rxtp.traffic_class, vcc->qos.rxtp.min_pcr, in vcc_connect()
490 vcc->qos.rxtp.max_pcr, vcc->qos.rxtp.max_sdu, in vcc_connect()
491 vcc->qos.aal == ATM_AAL5 ? "" : in vcc_connect()
492 vcc->qos.aal == ATM_AAL0 ? "" : " ??? code ", in vcc_connect()
493 vcc->qos.aal == ATM_AAL0 ? 0 : vcc->qos.aal); in vcc_connect()
494 if (!test_bit(ATM_VF_HASQOS, &vcc->flags)) in vcc_connect()
496 if (vcc->qos.txtp.traffic_class == ATM_ANYCLASS || in vcc_connect()
497 vcc->qos.rxtp.traffic_class == ATM_ANYCLASS) in vcc_connect()
514 error = __vcc_connect(vcc, dev, vpi, vci); in vcc_connect()
520 set_bit(ATM_VF_PARTIAL, &vcc->flags); in vcc_connect()
530 struct atm_vcc *vcc; in vcc_recvmsg() local
543 vcc = ATM_SD(sock); in vcc_recvmsg()
544 if (test_bit(ATM_VF_RELEASED, &vcc->flags) || in vcc_recvmsg()
545 test_bit(ATM_VF_CLOSE, &vcc->flags) || in vcc_recvmsg()
546 !test_bit(ATM_VF_READY, &vcc->flags)) in vcc_recvmsg()
567 atm_return(vcc, skb->truesize); in vcc_recvmsg()
579 struct atm_vcc *vcc; in vcc_sendmsg() local
600 vcc = ATM_SD(sock); in vcc_sendmsg()
601 if (test_bit(ATM_VF_RELEASED, &vcc->flags) || in vcc_sendmsg()
602 test_bit(ATM_VF_CLOSE, &vcc->flags) || in vcc_sendmsg()
603 !test_bit(ATM_VF_READY, &vcc->flags)) { in vcc_sendmsg()
612 if (size < 0 || size > vcc->qos.txtp.max_sdu) { in vcc_sendmsg()
620 while (!(skb = alloc_tx(vcc, eff))) { in vcc_sendmsg()
630 if (test_bit(ATM_VF_RELEASED, &vcc->flags) || in vcc_sendmsg()
631 test_bit(ATM_VF_CLOSE, &vcc->flags) || in vcc_sendmsg()
632 !test_bit(ATM_VF_READY, &vcc->flags)) { in vcc_sendmsg()
643 ATM_SKB(skb)->atm_options = vcc->atm_options; in vcc_sendmsg()
651 error = vcc->dev->ops->send(vcc, skb); in vcc_sendmsg()
661 struct atm_vcc *vcc; in vcc_poll() local
667 vcc = ATM_SD(sock); in vcc_poll()
673 if (test_bit(ATM_VF_RELEASED, &vcc->flags) || in vcc_poll()
674 test_bit(ATM_VF_CLOSE, &vcc->flags)) in vcc_poll()
683 test_bit(ATM_VF_WAITING, &vcc->flags)) in vcc_poll()
686 if (vcc->qos.txtp.traffic_class != ATM_NONE && in vcc_poll()
693 static int atm_change_qos(struct atm_vcc *vcc, struct atm_qos *qos) in atm_change_qos() argument
701 if (qos->aal != vcc->qos.aal || in atm_change_qos()
702 qos->rxtp.traffic_class != vcc->qos.rxtp.traffic_class || in atm_change_qos()
703 qos->txtp.traffic_class != vcc->qos.txtp.traffic_class) in atm_change_qos()
710 if (!vcc->dev->ops->change_qos) in atm_change_qos()
712 if (sk_atm(vcc)->sk_family == AF_ATMPVC) in atm_change_qos()
713 return vcc->dev->ops->change_qos(vcc, qos, ATM_MF_SET); in atm_change_qos()
714 return svc_change_qos(vcc, qos); in atm_change_qos()
757 struct atm_vcc *vcc; in vcc_setsockopt() local
764 vcc = ATM_SD(sock); in vcc_setsockopt()
776 return atm_change_qos(vcc, &qos); in vcc_setsockopt()
779 vcc->qos = qos; in vcc_setsockopt()
780 set_bit(ATM_VF_HASQOS, &vcc->flags); in vcc_setsockopt()
787 vcc->atm_options |= ATM_ATMOPT_CLP; in vcc_setsockopt()
789 vcc->atm_options &= ~ATM_ATMOPT_CLP; in vcc_setsockopt()
796 if (!vcc->dev || !vcc->dev->ops->setsockopt) in vcc_setsockopt()
798 return vcc->dev->ops->setsockopt(vcc, level, optname, optval, optlen); in vcc_setsockopt()
804 struct atm_vcc *vcc; in vcc_getsockopt() local
812 vcc = ATM_SD(sock); in vcc_getsockopt()
815 if (!test_bit(ATM_VF_HASQOS, &vcc->flags)) in vcc_getsockopt()
817 return copy_to_user(optval, &vcc->qos, sizeof(vcc->qos)) in vcc_getsockopt()
820 return put_user(vcc->atm_options & ATM_ATMOPT_CLP ? 1 : 0, in vcc_getsockopt()
826 if (!vcc->dev || !test_bit(ATM_VF_ADDR, &vcc->flags)) in vcc_getsockopt()
830 pvc.sap_addr.itf = vcc->dev->number; in vcc_getsockopt()
831 pvc.sap_addr.vpi = vcc->vpi; in vcc_getsockopt()
832 pvc.sap_addr.vci = vcc->vci; in vcc_getsockopt()
840 if (!vcc->dev || !vcc->dev->ops->getsockopt) in vcc_getsockopt()
842 return vcc->dev->ops->getsockopt(vcc, level, optname, optval, len); in vcc_getsockopt()