Lines Matching refs:vcc

18 extern int atm_init_aal5(struct atm_vcc *vcc); /* "raw" AAL5 transport */
25 struct atm_vcc *vcc; /* control VCC; NULL if detached */
43 static int atmtcp_send_control(struct atm_vcc *vcc,int type,
53 out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
58 out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
68 memset(&new_msg->vcc,0,sizeof(atm_kptr_t));
69 *(struct atm_vcc **) &new_msg->vcc = vcc;
70 old_test = test_bit(flag,&vcc->flags);
72 add_wait_queue(sk_sleep(sk_atm(vcc)), &wait);
73 while (test_bit(flag,&vcc->flags) == old_test) {
75 out_vcc = PRIV(vcc->dev) ? PRIV(vcc->dev)->vcc : NULL;
84 remove_wait_queue(sk_sleep(sk_atm(vcc)), &wait);
91 struct atm_vcc *vcc = *(struct atm_vcc **) &msg->vcc;
93 vcc->vpi = msg->addr.sap_addr.vpi;
94 vcc->vci = msg->addr.sap_addr.vci;
95 vcc->qos = msg->qos;
96 sk_atm(vcc)->sk_err = -msg->result;
99 change_bit(ATM_VF_READY,&vcc->flags);
102 change_bit(ATM_VF_ADDR,&vcc->flags);
109 wake_up(sk_sleep(sk_atm(vcc)));
120 static int atmtcp_v_open(struct atm_vcc *vcc)
124 short vpi = vcc->vpi;
125 int vci = vcc->vci;
135 msg.qos = vcc->qos;
136 set_bit(ATM_VF_ADDR,&vcc->flags);
137 clear_bit(ATM_VF_READY,&vcc->flags); /* just in case ... */
138 error = atmtcp_send_control(vcc,ATMTCP_CTRL_OPEN,&msg,ATM_VF_READY);
140 return -sk_atm(vcc)->sk_err;
144 static void atmtcp_v_close(struct atm_vcc *vcc)
150 msg.addr.sap_addr.vpi = vcc->vpi;
151 msg.addr.sap_addr.vci = vcc->vci;
152 clear_bit(ATM_VF_READY,&vcc->flags);
153 (void) atmtcp_send_control(vcc,ATMTCP_CTRL_CLOSE,&msg,ATM_VF_ADDR);
160 struct atm_vcc *vcc;
175 vcc = atm_sk(s);
176 if (vcc->dev != dev)
178 if ((vcc->vpi >> ci.vpi_bits) ||
179 (vcc->vci >> ci.vci_bits)) {
191 static int atmtcp_v_send(struct atm_vcc *vcc,struct sk_buff *skb)
199 if (vcc->qos.txtp.traffic_class == ATM_NONE) {
200 if (vcc->pop) vcc->pop(vcc,skb);
204 dev_data = PRIV(vcc->dev);
205 if (dev_data) out_vcc = dev_data->vcc;
207 if (vcc->pop) vcc->pop(vcc,skb);
210 atomic_inc(&vcc->stats->tx_err);
216 if (vcc->pop) vcc->pop(vcc,skb);
218 atomic_inc(&vcc->stats->tx_err);
222 hdr->vpi = htons(vcc->vpi);
223 hdr->vci = htons(vcc->vci);
226 if (vcc->pop) vcc->pop(vcc,skb);
229 atomic_inc(&vcc->stats->tx);
242 dev_data->vcc ? "" : "dis");
246 static void atmtcp_c_close(struct atm_vcc *vcc)
251 atmtcp_dev = (struct atm_dev *) vcc->dev_data;
253 dev_data->vcc = NULL;
258 vcc->dev_data = NULL;
266 struct atm_vcc *vcc;
272 vcc = atm_sk(s);
273 if (vcc->dev == dev &&
274 vcc->vci == vci && vcc->vpi == vpi &&
275 vcc->qos.rxtp.traffic_class != ATM_NONE) {
276 return vcc;
283 static int atmtcp_c_send(struct atm_vcc *vcc,struct sk_buff *skb)
294 dev = vcc->dev_data;
306 atomic_inc(&vcc->stats->tx_err);
318 atomic_inc(&vcc->stats->tx);
321 if (vcc->pop) vcc->pop(vcc,skb);
379 PRIV(dev)->vcc = NULL;
386 static int atmtcp_attach(struct atm_vcc *vcc,int itf)
397 if (PRIV(dev)->vcc) {
408 PRIV(dev)->vcc = vcc;
409 vcc->dev = &atmtcp_control_dev;
410 vcc_insert_socket(sk_atm(vcc));
411 set_bit(ATM_VF_META,&vcc->flags);
412 set_bit(ATM_VF_READY,&vcc->flags);
413 vcc->dev_data = dev;
414 (void) atm_init_aal5(vcc); /* @@@ losing AAL in transit ... */
415 vcc->stats = &atmtcp_control_dev.stats.aal5;
443 if (PRIV(dev)->vcc) {
456 struct atm_vcc *vcc = ATM_SD(sock);
466 err = atmtcp_attach(vcc, (int) arg);