X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/ea69cda1d999824a532f6ea58deb11c1777ff8a7..3d542aac846e761a30ffa862288b30c0353540c9:/target/linux/generic-2.6/patches-2.6.24/601-br2684-routed-support.patch diff --git a/target/linux/generic-2.6/patches-2.6.24/601-br2684-routed-support.patch b/target/linux/generic-2.6/patches-2.6.24/601-br2684-routed-support.patch index 88a27f3f7..e53671ad3 100644 --- a/target/linux/generic-2.6/patches-2.6.24/601-br2684-routed-support.patch +++ b/target/linux/generic-2.6/patches-2.6.24/601-br2684-routed-support.patch @@ -1,6 +1,7 @@ -diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/linux/atmbr2684.h ---- linux-2.6.24.2/include/linux/atmbr2684.h 2008-02-11 05:51:11.000000000 +0000 -+++ linux-2.6.24.2-copy/include/linux/atmbr2684.h 2008-03-27 01:08:42.000000000 +0000 +Index: linux-2.6.24.7/include/linux/atmbr2684.h +=================================================================== +--- linux-2.6.24.7.orig/include/linux/atmbr2684.h ++++ linux-2.6.24.7/include/linux/atmbr2684.h @@ -14,6 +14,9 @@ #define BR2684_MEDIA_FDDI (3) #define BR2684_MEDIA_802_6 (4) /* 802.6 */ @@ -38,7 +39,7 @@ diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/l }; /* -@@ -55,10 +65,10 @@ +@@ -55,10 +65,10 @@ struct atm_newif_br2684 { #define BR2684_FIND_BYNUM (1) #define BR2684_FIND_BYIFNAME (2) struct br2684_if_spec { @@ -52,7 +53,7 @@ diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/l } spec; }; -@@ -68,16 +78,16 @@ +@@ -68,16 +78,16 @@ struct br2684_if_spec { * is per-backend specific */ struct atm_backend_br2684 { @@ -78,7 +79,7 @@ diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/l }; /* -@@ -86,8 +96,8 @@ +@@ -86,8 +96,8 @@ struct atm_backend_br2684 { * efficient per-if in/out filters, this support will be removed */ struct br2684_filter { @@ -89,7 +90,7 @@ diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/l }; struct br2684_filter_set { -@@ -95,7 +105,13 @@ +@@ -95,7 +105,13 @@ struct br2684_filter_set { struct br2684_filter filter; }; @@ -103,9 +104,10 @@ diff -Nur linux-2.6.24.2/include/linux/atmbr2684.h linux-2.6.24.2-copy/include/l #endif /* _LINUX_ATMBR2684_H */ + -diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c ---- linux-2.6.24.2/net/atm/br2684.c 2008-02-11 05:51:11.000000000 +0000 -+++ linux-2.6.24.2-copy/net/atm/br2684.c 2008-03-27 03:24:17.000000000 +0000 +Index: linux-2.6.24.7/net/atm/br2684.c +=================================================================== +--- linux-2.6.24.7.orig/net/atm/br2684.c ++++ linux-2.6.24.7/net/atm/br2684.c @@ -1,8 +1,10 @@ /* -Experimental ethernet netdevice using ATM AAL5 as underlying carrier @@ -121,7 +123,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c #include #include -@@ -39,21 +41,35 @@ +@@ -39,21 +41,35 @@ static void skb_debug(const struct sk_bu #define skb_debug(skb) do {} while (0) #endif @@ -164,7 +166,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c enum br2684_encaps encaps; struct list_head brvccs; #ifdef CONFIG_ATM_BR2684_IPFILTER -@@ -66,9 +82,10 @@ +@@ -66,9 +82,10 @@ struct br2684_dev { struct net_device *net_dev; struct list_head br2684_devs; int number; @@ -176,7 +178,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c }; /* -@@ -84,7 +101,7 @@ +@@ -84,7 +101,7 @@ static LIST_HEAD(br2684_devs); static inline struct br2684_dev *BRPRIV(const struct net_device *net_dev) { @@ -185,7 +187,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c } static inline struct net_device *list_entry_brdev(const struct list_head *le) -@@ -94,7 +111,7 @@ +@@ -94,7 +111,7 @@ static inline struct net_device *list_en static inline struct br2684_vcc *BR2684_VCC(const struct atm_vcc *atmvcc) { @@ -194,7 +196,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c } static inline struct br2684_vcc *list_entry_brvcc(const struct list_head *le) -@@ -132,10 +149,11 @@ +@@ -132,10 +149,11 @@ static struct net_device *br2684_find_de * otherwise false */ static int br2684_xmit_vcc(struct sk_buff *skb, struct br2684_dev *brdev, @@ -207,7 +209,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c if (skb_headroom(skb) < minheadroom) { struct sk_buff *skb2 = skb_realloc_headroom(skb, minheadroom); brvcc->copies_needed++; -@@ -146,23 +164,48 @@ +@@ -146,23 +164,48 @@ static int br2684_xmit_vcc(struct sk_buf } skb = skb2; } @@ -266,7 +268,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c atomic_add(skb->truesize, &sk_atm(atmvcc)->sk_wmem_alloc); ATM_SKB(skb)->atm_options = atmvcc->atm_options; brdev->stats.tx_packets++; -@@ -172,10 +215,9 @@ +@@ -172,10 +215,9 @@ static int br2684_xmit_vcc(struct sk_buf } static inline struct br2684_vcc *pick_outgoing_vcc(struct sk_buff *skb, @@ -279,7 +281,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c } static int br2684_start_xmit(struct sk_buff *skb, struct net_device *dev) -@@ -199,11 +241,10 @@ +@@ -199,11 +241,10 @@ static int br2684_start_xmit(struct sk_b /* * We should probably use netif_*_queue() here, but that * involves added complication. We need to walk before @@ -294,7 +296,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c brdev->stats.tx_errors++; brdev->stats.tx_fifo_errors++; } -@@ -217,12 +258,11 @@ +@@ -217,12 +258,11 @@ static struct net_device_stats *br2684_g return &BRPRIV(dev)->stats; } @@ -308,7 +310,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c static int br2684_mac_addr(struct net_device *dev, void *p) { int err = my_eth_mac_addr(dev, p); -@@ -233,7 +273,7 @@ +@@ -233,7 +273,7 @@ static int br2684_mac_addr(struct net_de #ifdef CONFIG_ATM_BR2684_IPFILTER /* this IOCTL is experimental. */ @@ -317,7 +319,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c { struct br2684_vcc *brvcc; struct br2684_filter_set fs; -@@ -243,13 +283,12 @@ +@@ -243,13 +283,12 @@ static int br2684_setfilt(struct atm_vcc if (fs.ifspec.method != BR2684_FIND_BYNOTHING) { /* * This is really a per-vcc thing, but we can also search @@ -333,7 +335,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c brvcc = NULL; else brvcc = list_entry_brvcc(brdev->brvccs.next); -@@ -267,15 +306,16 @@ +@@ -267,15 +306,16 @@ static inline int packet_fails_filter(__be16 type, struct br2684_vcc *brvcc, struct sk_buff *skb) { if (brvcc->filter.netmask == 0) @@ -354,7 +356,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c */ return 1; /* drop */ } -@@ -299,7 +339,6 @@ +@@ -299,7 +339,6 @@ static void br2684_push(struct atm_vcc * struct br2684_vcc *brvcc = BR2684_VCC(atmvcc); struct net_device *net_dev = brvcc->device; struct br2684_dev *brdev = BRPRIV(net_dev); @@ -362,7 +364,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c pr_debug("br2684_push\n"); -@@ -320,35 +359,58 @@ +@@ -320,35 +359,58 @@ static void br2684_push(struct atm_vcc * atm_return(atmvcc, skb->truesize); pr_debug("skb from brdev %p\n", brdev); if (brvcc->encaps == e_llc) { @@ -436,7 +438,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c #ifdef CONFIG_ATM_BR2684_IPFILTER if (unlikely(packet_fails_filter(skb->protocol, brvcc, skb))) { brdev->stats.rx_dropped++; -@@ -372,11 +434,12 @@ +@@ -372,11 +434,12 @@ static void br2684_push(struct atm_vcc * netif_rx(skb); } @@ -453,7 +455,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c int err; struct br2684_vcc *brvcc; struct sk_buff *skb; -@@ -395,7 +458,7 @@ +@@ -395,7 +458,7 @@ Note: we do not have explicit unassign, net_dev = br2684_find_dev(&be.ifspec); if (net_dev == NULL) { printk(KERN_ERR @@ -462,7 +464,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c err = -ENXIO; goto error; } -@@ -411,13 +474,15 @@ +@@ -411,13 +474,15 @@ Note: we do not have explicit unassign, } if (be.fcs_in != BR2684_FCSIN_NO || be.fcs_out != BR2684_FCSOUT_NO || be.fcs_auto || be.has_vpiid || be.send_padding || (be.encaps != @@ -482,7 +484,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c if (list_empty(&brdev->brvccs) && !brdev->mac_was_set) { unsigned char *esi = atmvcc->dev->esi; if (esi[0] | esi[1] | esi[2] | esi[3] | esi[4] | esi[5]) -@@ -430,7 +495,7 @@ +@@ -430,7 +495,7 @@ Note: we do not have explicit unassign, brvcc->device = net_dev; brvcc->atmvcc = atmvcc; atmvcc->user_back = brvcc; @@ -491,7 +493,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c brvcc->old_push = atmvcc->push; barrier(); atmvcc->push = br2684_push; -@@ -461,7 +526,7 @@ +@@ -461,7 +526,7 @@ Note: we do not have explicit unassign, } __module_get(THIS_MODULE); return 0; @@ -500,7 +502,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c write_unlock_irq(&devs_lock); kfree(brvcc); return err; -@@ -482,25 +547,52 @@ +@@ -482,25 +547,52 @@ static void br2684_setup(struct net_devi INIT_LIST_HEAD(&brdev->brvccs); } @@ -555,7 +557,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c if (!netdev) return -ENOMEM; -@@ -516,6 +608,7 @@ +@@ -516,6 +608,7 @@ static int br2684_create(void __user *ar } write_lock_irq(&devs_lock); @@ -563,7 +565,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c brdev->number = list_empty(&br2684_devs) ? 1 : BRPRIV(list_entry_brdev(br2684_devs.prev))->number + 1; list_add_tail(&brdev->br2684_devs, &br2684_devs); -@@ -528,16 +621,16 @@ +@@ -528,16 +621,16 @@ static int br2684_create(void __user *ar * -ENOIOCTLCMD for any unrecognized ioctl */ static int br2684_ioctl(struct socket *sock, unsigned int cmd, @@ -584,7 +586,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c err = get_user(b, (atm_backend_t __user *) argp); if (err) return -EFAULT; -@@ -549,7 +642,6 @@ +@@ -549,7 +642,6 @@ static int br2684_ioctl(struct socket *s return br2684_regvcc(atmvcc, argp); else return br2684_create(argp); @@ -592,7 +594,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c #ifdef CONFIG_ATM_BR2684_IPFILTER case BR2684_SETFILT: if (atmvcc->push != br2684_push) -@@ -557,6 +649,7 @@ +@@ -557,6 +649,7 @@ static int br2684_ioctl(struct socket *s if (!capable(CAP_NET_ADMIN)) return -EPERM; err = br2684_setfilt(atmvcc, argp); @@ -600,7 +602,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c return err; #endif /* CONFIG_ATM_BR2684_IPFILTER */ } -@@ -564,24 +657,25 @@ +@@ -564,24 +657,25 @@ static int br2684_ioctl(struct socket *s } static struct atm_ioctl br2684_ioctl_ops = { @@ -631,7 +633,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c { read_unlock(&devs_lock); } -@@ -589,7 +683,7 @@ +@@ -589,7 +683,7 @@ static void br2684_seq_stop(struct seq_f static int br2684_seq_show(struct seq_file *seq, void *v) { const struct br2684_dev *brdev = list_entry(v, struct br2684_dev, @@ -640,7 +642,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c const struct net_device *net_dev = brdev->net_dev; const struct br2684_vcc *brvcc; DECLARE_MAC_BUF(mac); -@@ -601,21 +695,19 @@ +@@ -601,21 +695,19 @@ static int br2684_seq_show(struct seq_fi brdev->mac_was_set ? "set" : "auto"); list_for_each_entry(brvcc, &brdev->brvccs, brvccs) { @@ -672,7 +674,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c #undef bs #undef b1 #endif /* CONFIG_ATM_BR2684_IPFILTER */ -@@ -625,9 +717,9 @@ +@@ -625,9 +717,9 @@ static int br2684_seq_show(struct seq_fi static const struct seq_operations br2684_seq_ops = { .start = br2684_seq_start, @@ -685,7 +687,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c }; static int br2684_proc_open(struct inode *inode, struct file *file) -@@ -636,26 +728,28 @@ +@@ -636,26 +728,28 @@ static int br2684_proc_open(struct inode } static const struct file_operations br2684_proc_ops = { @@ -723,7 +725,7 @@ diff -Nur linux-2.6.24.2/net/atm/br2684.c linux-2.6.24.2-copy/net/atm/br2684.c } static void __exit br2684_exit(void) -@@ -689,3 +783,4 @@ +@@ -689,3 +783,4 @@ module_exit(br2684_exit); MODULE_AUTHOR("Marcell GAL"); MODULE_DESCRIPTION("RFC2684 bridged protocols over ATM/AAL5"); MODULE_LICENSE("GPL");