Lines Matching refs:vcc
82 struct atm_vcc *vcc, struct sk_buff *skb);
94 static int lec_mcast_make(struct lec_priv *priv, struct atm_vcc *vcc);
100 struct atm_vcc *vcc,
101 void (*old_push)(struct atm_vcc *vcc,
103 static void lec_vcc_close(struct lec_priv *priv, struct atm_vcc *vcc);
182 lec_send(struct atm_vcc *vcc, struct sk_buff *skb)
187 ATM_SKB(skb)->vcc = vcc;
188 atm_account_tx(vcc, skb);
190 if (vcc->send(vcc, skb) < 0) {
212 struct atm_vcc *vcc;
281 /* Send to right vcc */
285 vcc = lec_arp_resolve(priv, dst, is_rdesc, &entry);
286 pr_debug("%s:vcc:%p vcc_flags:%lx, entry:%p\n",
287 dev->name, vcc, vcc ? vcc->flags : 0, entry);
288 if (!vcc || !test_bit(ATM_VF_READY, &vcc->flags)) {
303 dev->name, vcc->vpi, vcc->vci);
308 lec_send(vcc, skb2);
311 lec_send(vcc, skb);
313 if (!atm_may_send(vcc, 0)) {
314 struct lec_vcc_priv *vpriv = LEC_VCC_PRIV(vcc);
320 * vcc->pop() might have occurred in between, making
321 * the vcc usuable again. Since xmit is serialized,
325 if (atm_may_send(vcc, 0))
343 static int lec_atm_send(struct atm_vcc *vcc, struct sk_buff *skb)
347 struct net_device *dev = (struct net_device *)vcc->proto_data;
353 WARN_ON(refcount_sub_and_test(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc));
469 static void lec_atm_close(struct atm_vcc *vcc)
472 struct net_device *dev = (struct net_device *)vcc->proto_data;
481 if (skb_peek(&sk_atm(vcc)->sk_receive_queue))
483 while ((skb = skb_dequeue(&sk_atm(vcc)->sk_receive_queue))) {
484 atm_return(vcc, skb->truesize);
576 static int lec_is_data_direct(struct atm_vcc *vcc)
578 return ((vcc->sap.blli[0].l3.tr9577.snap[4] == LEC_DATA_DIRECT_8023) ||
579 (vcc->sap.blli[0].l3.tr9577.snap[4] == LEC_DATA_DIRECT_8025));
582 static void lec_push(struct atm_vcc *vcc, struct sk_buff *skb)
585 struct net_device *dev = (struct net_device *)vcc->proto_data;
589 printk(KERN_DEBUG "%s: vcc vpi:%d vci:%d\n",
590 dev->name, vcc->vpi, vcc->vci);
594 lec_vcc_close(priv, vcc);
610 struct sock *sk = sk_atm(vcc);
619 atm_return(vcc, skb->truesize);
637 if (lec_is_data_direct(vcc)) {
640 if (entry && entry->vcc != vcc) {
654 lec_arp_check_empties(priv, vcc, skb);
664 static void lec_pop(struct atm_vcc *vcc, struct sk_buff *skb)
666 struct lec_vcc_priv *vpriv = LEC_VCC_PRIV(vcc);
674 vpriv->old_pop(vcc, skb);
676 if (vpriv->xoff && atm_may_send(vcc, 0)) {
683 static int lec_vcc_attach(struct atm_vcc *vcc, void __user *arg)
703 vpriv->old_pop = vcc->pop;
704 vcc->user_back = vpriv;
705 vcc->pop = lec_pop;
707 &ioc_data, vcc, vcc->push);
708 vcc->proto_data = dev_lec[ioc_data.dev_num];
709 vcc->push = lec_push;
713 static int lec_mcast_attach(struct atm_vcc *vcc, int arg)
721 vcc->proto_data = dev_lec[arg];
722 return lec_mcast_make(netdev_priv(dev_lec[arg]), vcc);
726 static int lecd_attach(struct atm_vcc *vcc, int arg)
761 priv->lecd = vcc;
762 vcc->dev = &lecatm_dev;
763 vcc_insert_socket(sk_atm(vcc));
765 vcc->proto_data = dev_lec[i];
766 set_bit(ATM_VF_META, &vcc->flags);
767 set_bit(ATM_VF_READY, &vcc->flags);
810 if (entry->vcc)
811 seq_printf(seq, "%3d %3d ", entry->vcc->vpi, entry->vcc->vci);
998 struct atm_vcc *vcc = ATM_SD(sock);
1015 err = lecd_attach(vcc, (int)arg);
1020 err = lec_mcast_attach(vcc, (int)arg);
1023 err = lec_vcc_attach(vcc, (void __user *)arg);
1258 if (entry->vcc) {
1259 struct atm_vcc *vcc = entry->vcc;
1260 struct lec_vcc_priv *vpriv = LEC_VCC_PRIV(vcc);
1261 struct net_device *dev = (struct net_device *)vcc->proto_data;
1263 vcc->pop = vpriv->old_pop;
1267 vcc->user_back = NULL;
1268 vcc->push = entry->old_push;
1269 vcc_release_async(vcc, -EPIPE);
1270 entry->vcc = NULL;
1273 struct atm_vcc *vcc = entry->recv_vcc;
1274 struct lec_vcc_priv *vpriv = LEC_VCC_PRIV(vcc);
1277 vcc->user_back = NULL;
1378 rulla->vcc ? rulla->vcc->vpi : 0,
1379 rulla->vcc ? rulla->vcc->vci : 0,
1403 rulla->vcc ? rulla->vcc->vpi : 0,
1404 rulla->vcc ? rulla->vcc->vci : 0,
1425 rulla->vcc ? rulla->vcc->vpi : 0,
1426 rulla->vcc ? rulla->vcc->vci : 0,
1447 rulla->vcc ? rulla->vcc->vpi : 0,
1448 rulla->vcc ? rulla->vcc->vci : 0,
1579 /* Unknown/unused vcc expire, remove associated entry */
1591 to_remove->vcc ? to_remove->recv_vcc->vpi : 0,
1592 to_remove->vcc ? to_remove->recv_vcc->vci : 0);
1681 struct atm_vcc *vcc = entry->vcc;
1686 lec_send(vcc, skb);
1701 * Try to find vcc where mac_address is attached.
1735 found = entry->vcc;
1765 pr_debug("entry->status %d entry->vcc %p\n", entry->status,
1766 entry->vcc);
1861 tmp->vcc = entry->vcc;
1907 entry->vcc = tmp->vcc;
1934 struct atm_vcc *vcc,
1935 void (*old_push) (struct atm_vcc *vcc, struct sk_buff *skb))
1952 entry->recv_vcc = vcc;
1960 entry->recv_vcc = vcc;
1966 * Vcc which we don't want to make default vcc,
1976 entry->recv_vcc = vcc;
1996 entry->vcc ? entry->vcc->vci : 0,
2001 entry->vcc = vcc;
2037 pr_debug("After vcc was added\n");
2043 * from this vcc
2048 entry->vcc = vcc;
2057 pr_debug("After vcc was added\n");
2078 struct atm_vcc *vcc = entry->vcc;
2084 lec_send(vcc, skb);
2118 static int lec_mcast_make(struct lec_priv *priv, struct atm_vcc *vcc)
2132 vpriv->old_pop = vcc->pop;
2133 vcc->user_back = vpriv;
2134 vcc->pop = lec_pop;
2138 vcc->pop = vpriv->old_pop;
2143 memcpy(to_add->atm_addr, vcc->remote.sas_addr.prv, ATM_ESA_LEN);
2146 to_add->vcc = vcc;
2147 to_add->old_push = vcc->push;
2148 vcc->push = lec_push;
2149 priv->mcast_vcc = vcc;
2156 static void lec_vcc_close(struct lec_priv *priv, struct atm_vcc *vcc)
2163 pr_debug("LEC_ARP: lec_vcc_close vpi:%d vci:%d\n", vcc->vpi, vcc->vci);
2171 if (vcc == entry->vcc) {
2174 if (priv->mcast_vcc == vcc)
2182 if (entry->vcc == vcc) {
2192 if (entry->recv_vcc == vcc) {
2201 if (entry->recv_vcc == vcc) {
2215 struct atm_vcc *vcc, struct sk_buff *skb)
2226 if (vcc == entry->vcc) {