Lines Matching refs:vcc
87 static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry);
90 static void mpoad_close(struct atm_vcc *vcc);
91 static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb);
93 static void mpc_push(struct atm_vcc *vcc, struct sk_buff *skb);
142 static struct mpoa_client *find_mpc_by_vcc(struct atm_vcc *vcc) in find_mpc_by_vcc() argument
148 if (mpc->mpoad_vcc == vcc) in find_mpc_by_vcc()
605 static int atm_mpoa_vcc_attach(struct atm_vcc *vcc, void __user *arg) in atm_mpoa_vcc_attach() argument
639 in_entry->shortcut = vcc; in atm_mpoa_vcc_attach()
645 vcc->proto_data = mpc->dev; in atm_mpoa_vcc_attach()
646 vcc->push = mpc_push; in atm_mpoa_vcc_attach()
654 static void mpc_vcc_close(struct atm_vcc *vcc, struct net_device *dev) in mpc_vcc_close() argument
667 in_entry = mpc->in_ops->get_by_vcc(vcc, mpc); in mpc_vcc_close()
674 eg_entry = mpc->eg_ops->get_by_vcc(vcc, mpc); in mpc_vcc_close()
685 static void mpc_push(struct atm_vcc *vcc, struct sk_buff *skb) in mpc_push() argument
687 struct net_device *dev = (struct net_device *)vcc->proto_data; in mpc_push()
697 mpc_vcc_close(vcc, dev); in mpc_push()
704 struct sock *sk = sk_atm(vcc); in mpc_push()
714 atm_return(vcc, skb->truesize); in mpc_push()
745 purge_egress_shortcut(vcc, NULL); in mpc_push()
755 eg->shortcut = vcc; in mpc_push()
795 static int atm_mpoa_mpoad_attach(struct atm_vcc *vcc, int arg) in atm_mpoa_mpoad_attach() argument
836 mpc->mpoad_vcc = vcc; in atm_mpoa_mpoad_attach()
837 vcc->dev = &mpc_dev; in atm_mpoa_mpoad_attach()
838 vcc_insert_socket(sk_atm(vcc)); in atm_mpoa_mpoad_attach()
839 set_bit(ATM_VF_META, &vcc->flags); in atm_mpoa_mpoad_attach()
840 set_bit(ATM_VF_READY, &vcc->flags); in atm_mpoa_mpoad_attach()
869 static void mpoad_close(struct atm_vcc *vcc) in mpoad_close() argument
874 mpc = find_mpc_by_vcc(vcc); in mpoad_close()
895 while ((skb = skb_dequeue(&sk_atm(vcc)->sk_receive_queue))) { in mpoad_close()
896 atm_return(vcc, skb->truesize); in mpoad_close()
908 static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb) in msg_from_mpoad() argument
911 struct mpoa_client *mpc = find_mpc_by_vcc(vcc); in msg_from_mpoad()
913 WARN_ON(refcount_sub_and_test(skb->truesize, &sk_atm(vcc)->sk_wmem_alloc)); in msg_from_mpoad()
1247 static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry) in purge_egress_shortcut() argument
1254 if (vcc == NULL) { in purge_egress_shortcut()
1272 atm_force_charge(vcc, skb->truesize); in purge_egress_shortcut()
1274 sk = sk_atm(vcc); in purge_egress_shortcut()
1450 struct atm_vcc *vcc = ATM_SD(sock); in atm_mpoa_ioctl() local
1460 err = atm_mpoa_mpoad_attach(vcc, (int)arg); in atm_mpoa_ioctl()
1465 err = atm_mpoa_vcc_attach(vcc, (void __user *)arg); in atm_mpoa_ioctl()