brvcc             153 net/atm/br2684.c 	struct br2684_vcc *brvcc;
brvcc             163 net/atm/br2684.c 		list_for_each_entry(brvcc, &BRPRIV(net_dev)->brvccs, brvccs) {
brvcc             164 net/atm/br2684.c 			atm_vcc = brvcc->atmvcc;
brvcc             165 net/atm/br2684.c 			if (atm_vcc && brvcc->atmvcc->dev == atm_dev) {
brvcc             187 net/atm/br2684.c 	struct br2684_vcc *brvcc = BR2684_VCC(vcc);
brvcc             189 net/atm/br2684.c 	pr_debug("(vcc %p ; net_dev %p )\n", vcc, brvcc->device);
brvcc             190 net/atm/br2684.c 	brvcc->old_pop(vcc, skb);
brvcc             193 net/atm/br2684.c 	if (atomic_inc_return(&brvcc->qspace) == 1)
brvcc             194 net/atm/br2684.c 		netif_wake_queue(brvcc->device);
brvcc             203 net/atm/br2684.c 			   struct br2684_vcc *brvcc)
brvcc             207 net/atm/br2684.c 	int minheadroom = (brvcc->encaps == e_llc) ?
brvcc             214 net/atm/br2684.c 		brvcc->copies_needed++;
brvcc             217 net/atm/br2684.c 			brvcc->copies_failed++;
brvcc             223 net/atm/br2684.c 	if (brvcc->encaps == e_llc) {
brvcc             254 net/atm/br2684.c 	ATM_SKB(skb)->vcc = atmvcc = brvcc->atmvcc;
brvcc             260 net/atm/br2684.c 	if (atomic_dec_return(&brvcc->qspace) < 1) {
brvcc             262 net/atm/br2684.c 		netif_stop_queue(brvcc->device);
brvcc             264 net/atm/br2684.c 		if (unlikely(atomic_read(&brvcc->qspace) > 0))
brvcc             265 net/atm/br2684.c 			netif_wake_queue(brvcc->device);
brvcc             276 net/atm/br2684.c 	struct br2684_vcc *brvcc = BR2684_VCC(atmvcc);
brvcc             278 net/atm/br2684.c 	if (atomic_read(&brvcc->qspace) > 0)
brvcc             279 net/atm/br2684.c 		netif_wake_queue(brvcc->device);
brvcc             281 net/atm/br2684.c 	if (brvcc->old_release_cb)
brvcc             282 net/atm/br2684.c 		brvcc->old_release_cb(atmvcc);
brvcc             295 net/atm/br2684.c 	struct br2684_vcc *brvcc;
brvcc             301 net/atm/br2684.c 	brvcc = pick_outgoing_vcc(skb, brdev);
brvcc             302 net/atm/br2684.c 	if (brvcc == NULL) {
brvcc             310 net/atm/br2684.c 	atmvcc = brvcc->atmvcc;
brvcc             323 net/atm/br2684.c 		netif_stop_queue(brvcc->device);
brvcc             328 net/atm/br2684.c 	if (!br2684_xmit_vcc(skb, dev, brvcc)) {
brvcc             362 net/atm/br2684.c 	struct br2684_vcc *brvcc;
brvcc             377 net/atm/br2684.c 			brvcc = NULL;
brvcc             379 net/atm/br2684.c 			brvcc = list_entry_brvcc(brdev->brvccs.next);
brvcc             381 net/atm/br2684.c 		if (brvcc == NULL)
brvcc             384 net/atm/br2684.c 		brvcc = BR2684_VCC(atmvcc);
brvcc             385 net/atm/br2684.c 	memcpy(&brvcc->filter, &fs.filter, sizeof(brvcc->filter));
brvcc             391 net/atm/br2684.c packet_fails_filter(__be16 type, struct br2684_vcc *brvcc, struct sk_buff *skb)
brvcc             393 net/atm/br2684.c 	if (brvcc->filter.netmask == 0)
brvcc             396 net/atm/br2684.c 	    (((struct iphdr *)(skb->data))->daddr & brvcc->filter.
brvcc             397 net/atm/br2684.c 	     netmask) == brvcc->filter.prefix)
brvcc             409 net/atm/br2684.c static void br2684_close_vcc(struct br2684_vcc *brvcc)
brvcc             411 net/atm/br2684.c 	pr_debug("removing VCC %p from dev %p\n", brvcc, brvcc->device);
brvcc             413 net/atm/br2684.c 	list_del(&brvcc->brvccs);
brvcc             415 net/atm/br2684.c 	brvcc->atmvcc->user_back = NULL;	/* what about vcc->recvq ??? */
brvcc             416 net/atm/br2684.c 	brvcc->atmvcc->release_cb = brvcc->old_release_cb;
brvcc             417 net/atm/br2684.c 	brvcc->old_push(brvcc->atmvcc, NULL);	/* pass on the bad news */
brvcc             418 net/atm/br2684.c 	module_put(brvcc->old_owner);
brvcc             419 net/atm/br2684.c 	kfree(brvcc);
brvcc             425 net/atm/br2684.c 	struct br2684_vcc *brvcc = BR2684_VCC(atmvcc);
brvcc             426 net/atm/br2684.c 	struct net_device *net_dev = brvcc->device;
brvcc             433 net/atm/br2684.c 		br2684_close_vcc(brvcc);
brvcc             447 net/atm/br2684.c 	if (brvcc->encaps == e_llc) {
brvcc             502 net/atm/br2684.c 	if (unlikely(packet_fails_filter(skb->protocol, brvcc, skb)))
brvcc             533 net/atm/br2684.c 	struct br2684_vcc *brvcc;
brvcc             541 net/atm/br2684.c 	brvcc = kzalloc(sizeof(struct br2684_vcc), GFP_KERNEL);
brvcc             542 net/atm/br2684.c 	if (!brvcc)
brvcc             550 net/atm/br2684.c 	atomic_set(&brvcc->qspace, 2);
brvcc             577 net/atm/br2684.c 	pr_debug("vcc=%p, encaps=%d, brvcc=%p\n", atmvcc, be.encaps, brvcc);
brvcc             585 net/atm/br2684.c 	list_add(&brvcc->brvccs, &brdev->brvccs);
brvcc             587 net/atm/br2684.c 	brvcc->device = net_dev;
brvcc             588 net/atm/br2684.c 	brvcc->atmvcc = atmvcc;
brvcc             589 net/atm/br2684.c 	atmvcc->user_back = brvcc;
brvcc             590 net/atm/br2684.c 	brvcc->encaps = (enum br2684_encaps)be.encaps;
brvcc             591 net/atm/br2684.c 	brvcc->old_push = atmvcc->push;
brvcc             592 net/atm/br2684.c 	brvcc->old_pop = atmvcc->pop;
brvcc             593 net/atm/br2684.c 	brvcc->old_release_cb = atmvcc->release_cb;
brvcc             594 net/atm/br2684.c 	brvcc->old_owner = atmvcc->owner;
brvcc             616 net/atm/br2684.c 	kfree(brvcc);
brvcc             788 net/atm/br2684.c 	const struct br2684_vcc *brvcc;
brvcc             796 net/atm/br2684.c 	list_for_each_entry(brvcc, &brdev->brvccs, brvccs) {
brvcc             799 net/atm/br2684.c 			   "\n", brvcc->atmvcc->dev->number,
brvcc             800 net/atm/br2684.c 			   brvcc->atmvcc->vpi, brvcc->atmvcc->vci,
brvcc             801 net/atm/br2684.c 			   (brvcc->encaps == e_llc) ? "LLC" : "VC",
brvcc             803 net/atm/br2684.c 			   brvcc->copies_failed, brvcc->copies_needed);
brvcc             805 net/atm/br2684.c 		if (brvcc->filter.netmask != 0)
brvcc             807 net/atm/br2684.c 				   &brvcc->filter.prefix,
brvcc             808 net/atm/br2684.c 				   &brvcc->filter.netmask);
brvcc             841 net/atm/br2684.c 	struct br2684_vcc *brvcc;
brvcc             855 net/atm/br2684.c 			brvcc = list_entry_brvcc(brdev->brvccs.next);
brvcc             856 net/atm/br2684.c 			br2684_close_vcc(brvcc);