Lines Matching refs:vcc

37 static void modify_qos(struct atm_vcc *vcc, struct atmsvc_msg *msg)  in modify_qos()  argument
41 if (test_bit(ATM_VF_RELEASED, &vcc->flags) || in modify_qos()
42 !test_bit(ATM_VF_READY, &vcc->flags)) in modify_qos()
45 if (!vcc->dev->ops->change_qos) in modify_qos()
49 msg->reply = vcc->dev->ops->change_qos(vcc, &msg->qos, in modify_qos()
64 static int sigd_send(struct atm_vcc *vcc, struct sk_buff *skb) in sigd_send() argument
71 WARN_ON(refcount_sub_and_test(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc)); in sigd_send()
72 vcc = *(struct atm_vcc **) &msg->vcc; in sigd_send()
73 pr_debug("%d (0x%lx)\n", (int)msg->type, (unsigned long)vcc); in sigd_send()
74 sk = sk_atm(vcc); in sigd_send()
79 clear_bit(ATM_VF_WAITING, &vcc->flags); in sigd_send()
80 if (!*vcc->local.sas_addr.prv && !*vcc->local.sas_addr.pub) { in sigd_send()
81 vcc->local.sas_family = AF_ATMSVC; in sigd_send()
82 memcpy(vcc->local.sas_addr.prv, in sigd_send()
84 memcpy(vcc->local.sas_addr.pub, in sigd_send()
87 session_vcc = vcc->session ? vcc->session : vcc; in sigd_send()
97 clear_bit(ATM_VF_REGIS, &vcc->flags); in sigd_send()
98 clear_bit(ATM_VF_READY, &vcc->flags); in sigd_send()
100 clear_bit(ATM_VF_WAITING, &vcc->flags); in sigd_send()
103 vcc = *(struct atm_vcc **)&msg->listen_vcc; in sigd_send()
104 sk = sk_atm(vcc); in sigd_send()
108 sigd_enq(NULL, as_reject, vcc, NULL, NULL); in sigd_send()
120 set_bit(ATM_VF_RELEASED, &vcc->flags); in sigd_send()
121 vcc_release_async(vcc, msg->reply); in sigd_send()
124 modify_qos(vcc, msg); in sigd_send()
130 clear_bit(ATM_VF_WAITING, &vcc->flags); in sigd_send()
142 void sigd_enq2(struct atm_vcc *vcc, enum atmsvc_msg_type type, in sigd_enq2() argument
151 pr_debug("%d (0x%p)\n", (int)type, vcc); in sigd_enq2()
156 *(struct atm_vcc **) &msg->vcc = vcc; in sigd_enq2()
161 if (vcc) in sigd_enq2()
162 msg->sap = vcc->sap; in sigd_enq2()
165 if (vcc) in sigd_enq2()
166 msg->local = vcc->local; in sigd_enq2()
169 if (vcc) { in sigd_enq2()
170 if (type == as_connect && test_bit(ATM_VF_SESSION, &vcc->flags)) in sigd_enq2()
175 if (vcc) in sigd_enq2()
176 set_bit(ATM_VF_REGIS, &vcc->flags); in sigd_enq2()
179 void sigd_enq(struct atm_vcc *vcc, enum atmsvc_msg_type type, in sigd_enq() argument
183 sigd_enq2(vcc, type, listen_vcc, pvc, svc, vcc ? &vcc->qos : NULL, 0); in sigd_enq()
187 static void purge_vcc(struct atm_vcc *vcc) in purge_vcc() argument
189 if (sk_atm(vcc)->sk_family == PF_ATMSVC && in purge_vcc()
190 !test_bit(ATM_VF_META, &vcc->flags)) { in purge_vcc()
191 set_bit(ATM_VF_RELEASED, &vcc->flags); in purge_vcc()
192 clear_bit(ATM_VF_REGIS, &vcc->flags); in purge_vcc()
193 vcc_release_async(vcc, -EUNATCH); in purge_vcc()
197 static void sigd_close(struct atm_vcc *vcc) in sigd_close() argument
204 if (skb_peek(&sk_atm(vcc)->sk_receive_queue)) in sigd_close()
206 skb_queue_purge(&sk_atm(vcc)->sk_receive_queue); in sigd_close()
213 vcc = atm_sk(s); in sigd_close()
215 purge_vcc(vcc); in sigd_close()
233 int sigd_attach(struct atm_vcc *vcc) in sigd_attach() argument
238 sigd = vcc; in sigd_attach()
239 vcc->dev = &sigd_dev; in sigd_attach()
240 vcc_insert_socket(sk_atm(vcc)); in sigd_attach()
241 set_bit(ATM_VF_META, &vcc->flags); in sigd_attach()
242 set_bit(ATM_VF_READY, &vcc->flags); in sigd_attach()