Lines Matching refs:vcc

86 static void purge_egress_shortcut(struct atm_vcc *vcc, eg_cache_entry *entry);
89 static void mpoad_close(struct atm_vcc *vcc);
90 static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb);
92 static void mpc_push(struct atm_vcc *vcc, struct sk_buff *skb);
141 static struct mpoa_client *find_mpc_by_vcc(struct atm_vcc *vcc) in find_mpc_by_vcc() argument
147 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
837 mpc->mpoad_vcc = vcc; in atm_mpoa_mpoad_attach()
838 vcc->dev = &mpc_dev; in atm_mpoa_mpoad_attach()
839 vcc_insert_socket(sk_atm(vcc)); in atm_mpoa_mpoad_attach()
840 set_bit(ATM_VF_META, &vcc->flags); in atm_mpoa_mpoad_attach()
841 set_bit(ATM_VF_READY, &vcc->flags); in atm_mpoa_mpoad_attach()
870 static void mpoad_close(struct atm_vcc *vcc) in mpoad_close() argument
875 mpc = find_mpc_by_vcc(vcc); in mpoad_close()
896 while ((skb = skb_dequeue(&sk_atm(vcc)->sk_receive_queue))) { in mpoad_close()
897 atm_return(vcc, skb->truesize); in mpoad_close()
909 static int msg_from_mpoad(struct atm_vcc *vcc, struct sk_buff *skb) in msg_from_mpoad() argument
912 struct mpoa_client *mpc = find_mpc_by_vcc(vcc); in msg_from_mpoad()
914 atomic_sub(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()
1447 struct atm_vcc *vcc = ATM_SD(sock); in atm_mpoa_ioctl() local
1457 err = atm_mpoa_mpoad_attach(vcc, (int)arg); in atm_mpoa_ioctl()
1462 err = atm_mpoa_vcc_attach(vcc, (void __user *)arg); in atm_mpoa_ioctl()