Lines Matching refs:vcc

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