finally move buildroot-ng to trunk
[openwrt.git] / target / linux / brcm63xx-2.6 / patches / 100-binary_hacks.patch
1 diff -urN linux.old/include/asm-mips/cpu-info.h linux.dev/include/asm-mips/cpu-info.h
2 --- linux.old/include/asm-mips/cpu-info.h       2006-06-18 03:49:35.000000000 +0200
3 +++ linux.dev/include/asm-mips/cpu-info.h       2006-08-27 21:02:04.000000000 +0200
4 @@ -63,7 +63,6 @@
5          * Capability and feature descriptor structure for MIPS CPU
6          */
7         unsigned long           options;
8 -       unsigned long           ases;
9         unsigned int            processor_id;
10         unsigned int            fpu_id;
11         unsigned int            cputype;
12 @@ -84,6 +83,7 @@
13         int                     tc_id;   /* Thread Context number */
14  #endif /* CONFIG_MIPS_MT */
15         void                    *data;  /* Additional data */
16 +       unsigned long           ases;
17  } __attribute__((aligned(SMP_CACHE_BYTES)));
18  
19  extern struct cpuinfo_mips cpu_data[];
20
21 diff -urN linux.old/include/linux/netdevice.h linux.dev/include/linux/netdevice.h
22 --- linux.old/include/linux/netdevice.h 2006-06-18 03:49:35.000000000 +0200
23 +++ linux.dev/include/linux/netdevice.h 2006-08-27 21:02:04.000000000 +0200
24 @@ -266,8 +266,6 @@
25          * the interface.
26          */
27         char                    name[IFNAMSIZ];
28 -       /* device name hash chain */
29 -       struct hlist_node       name_hlist;
30  
31         /*
32          *      I/O specific fields
33 @@ -295,22 +293,6 @@
34  
35         /* ------- Fields preinitialized in Space.c finish here ------- */
36  
37 -       /* Net device features */
38 -       unsigned long           features;
39 -#define NETIF_F_SG             1       /* Scatter/gather IO. */
40 -#define NETIF_F_IP_CSUM                2       /* Can checksum only TCP/UDP over IPv4. */
41 -#define NETIF_F_NO_CSUM                4       /* Does not require checksum. F.e. loopack. */
42 -#define NETIF_F_HW_CSUM                8       /* Can checksum all the packets. */
43 -#define NETIF_F_HIGHDMA                32      /* Can DMA to high memory. */
44 -#define NETIF_F_FRAGLIST       64      /* Scatter/gather IO. */
45 -#define NETIF_F_HW_VLAN_TX     128     /* Transmit VLAN hw acceleration */
46 -#define NETIF_F_HW_VLAN_RX     256     /* Receive VLAN hw acceleration */
47 -#define NETIF_F_HW_VLAN_FILTER 512     /* Receive filtering on VLAN */
48 -#define NETIF_F_VLAN_CHALLENGED        1024    /* Device cannot handle VLAN packets */
49 -#define NETIF_F_TSO            2048    /* Can offload TCP/IP segmentation */
50 -#define NETIF_F_LLTX           4096    /* LockLess TX */
51 -#define NETIF_F_UFO             8192    /* Can offload UDP Large Send*/
52 -
53         struct net_device       *next_sched;
54  
55         /* Interface index. Unique device identifier    */
56 @@ -324,8 +306,6 @@
57         /* List of functions to handle Wireless Extensions (instead of ioctl).
58          * See <net/iw_handler.h> for details. Jean II */
59         const struct iw_handler_def *   wireless_handlers;
60 -       /* Instance data managed by the core of Wireless Extensions. */
61 -       struct iw_public_data * wireless_data;
62  
63         struct ethtool_ops *ethtool_ops;
64  
65 @@ -335,33 +315,37 @@
66          * will (read: may be cleaned up at will).
67          */
68  
69 +       /* These may be needed for future network-power-down code. */
70 +       unsigned long           trans_start;    /* Time (in jiffies) of last Tx */
71 +       unsigned long           last_rx;        /* Time of last Rx      */
72  
73 -       unsigned int            flags;  /* interface flags (a la BSD)   */
74 +       unsigned short          flags;  /* interface flags (a la BSD)   */
75         unsigned short          gflags;
76          unsigned short          priv_flags; /* Like 'flags' but invisible to userspace. */
77 -       unsigned short          padded; /* How much padding added by alloc_netdev() */
78 -
79 -       unsigned char           operstate; /* RFC2863 operstate */
80 -       unsigned char           link_mode; /* mapping policy to operstate */
81 +       unsigned short          __useless_padding;
82  
83         unsigned                mtu;    /* interface MTU value          */
84         unsigned short          type;   /* interface hardware type      */
85         unsigned short          hard_header_len;        /* hardware hdr length  */
86 +       void                    *priv;  /* pointer to private data      */
87  
88         struct net_device       *master; /* Pointer to master device of a group,
89                                           * which this device is member of.
90                                           */
91  
92         /* Interface address info. */
93 -       unsigned char           perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
94 +       unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add */
95 +       unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast 
96 +                                                       because most packets are unicast) */
97         unsigned char           addr_len;       /* hardware address length      */
98 -       unsigned short          dev_id;         /* for shared network cards */
99  
100         struct dev_mc_list      *mc_list;       /* Multicast mac addresses      */
101         int                     mc_count;       /* Number of installed mcasts   */
102         int                     promiscuity;
103         int                     allmulti;
104  
105 +       int                     watchdog_timeo; /* used by dev_watchdog() */
106 +       struct timer_list       watchdog_timer;
107  
108         /* Protocol specific pointers */
109         
110 @@ -378,29 +362,17 @@
111         struct list_head        poll_list ____cacheline_aligned_in_smp;
112                                         /* Link to poll list    */
113  
114 -       int                     (*poll) (struct net_device *dev, int *quota);
115         int                     quota;
116         int                     weight;
117 -       unsigned long           last_rx;        /* Time of last Rx      */
118         /* Interface address info used in eth_type_trans() */
119 -       unsigned char           dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast 
120 -                                                       because most packets are unicast) */
121 -
122 -       unsigned char           broadcast[MAX_ADDR_LEN];        /* hw bcast add */
123 -
124 -/*
125 - * Cache line mostly used on queue transmit path (qdisc)
126 - */
127 -       /* device queue lock */
128 -       spinlock_t              queue_lock ____cacheline_aligned_in_smp;
129         struct Qdisc            *qdisc;
130         struct Qdisc            *qdisc_sleeping;
131 +       struct Qdisc            *qdisc_ingress;
132         struct list_head        qdisc_list;
133         unsigned long           tx_queue_len;   /* Max frames per queue allowed */
134  
135         /* ingress path synchronizer */
136         spinlock_t              ingress_lock;
137 -       struct Qdisc            *qdisc_ingress;
138  
139  /*
140   * One part is mostly used on xmit path (device)
141 @@ -411,16 +383,13 @@
142            if nobody entered there.
143          */
144         int                     xmit_lock_owner;
145 -       void                    *priv;  /* pointer to private data      */
146 -       int                     (*hard_start_xmit) (struct sk_buff *skb,
147 -                                                   struct net_device *dev);
148 -       /* These may be needed for future network-power-down code. */
149 -       unsigned long           trans_start;    /* Time (in jiffies) of last Tx */
150 -
151 -       int                     watchdog_timeo; /* used by dev_watchdog() */
152 -       struct timer_list       watchdog_timer;
153  
154  /*
155 + * Cache line mostly used on queue transmit path (qdisc)
156 + */
157 +       /* device queue lock */
158 +       spinlock_t              queue_lock ____cacheline_aligned_in_smp;
159 +/*
160   * refcnt is a very hot point, so align it on SMP
161   */
162         /* Number of references to this device */
163 @@ -428,6 +397,8 @@
164  
165         /* delayed register/unregister */
166         struct list_head        todo_list;
167 +       /* device name hash chain */
168 +       struct hlist_node       name_hlist;
169         /* device index hash chain */
170         struct hlist_node       index_hlist;
171  
172 @@ -439,6 +410,22 @@
173                NETREG_RELEASED,         /* called free_netdev */
174         } reg_state;
175  
176 +       /* Net device features */
177 +       unsigned int            features;
178 +#define NETIF_F_SG             1       /* Scatter/gather IO. */
179 +#define NETIF_F_IP_CSUM                2       /* Can checksum only TCP/UDP over IPv4. */
180 +#define NETIF_F_NO_CSUM                4       /* Does not require checksum. F.e. loopack. */
181 +#define NETIF_F_HW_CSUM                8       /* Can checksum all the packets. */
182 +#define NETIF_F_HIGHDMA                32      /* Can DMA to high memory. */
183 +#define NETIF_F_FRAGLIST       64      /* Scatter/gather IO. */
184 +#define NETIF_F_HW_VLAN_TX     128     /* Transmit VLAN hw acceleration */
185 +#define NETIF_F_HW_VLAN_RX     256     /* Receive VLAN hw acceleration */
186 +#define NETIF_F_HW_VLAN_FILTER 512     /* Receive filtering on VLAN */
187 +#define NETIF_F_VLAN_CHALLENGED        1024    /* Device cannot handle VLAN packets */
188 +#define NETIF_F_TSO            2048    /* Can offload TCP/IP segmentation */
189 +#define NETIF_F_LLTX           4096    /* LockLess TX */
190 +#define NETIF_F_UFO             8192    /* Can offload UDP Large Send*/
191 +
192         /* Called after device is detached from network. */
193         void                    (*uninit)(struct net_device *dev);
194         /* Called after last user reference disappears. */
195 @@ -447,7 +434,10 @@
196         /* Pointers to interface service routines.      */
197         int                     (*open)(struct net_device *dev);
198         int                     (*stop)(struct net_device *dev);
199 +       int                     (*hard_start_xmit) (struct sk_buff *skb,
200 +                                                   struct net_device *dev);
201  #define HAVE_NETDEV_POLL
202 +       int                     (*poll) (struct net_device *dev, int *quota);
203         int                     (*hard_header) (struct sk_buff *skb,
204                                                 struct net_device *dev,
205                                                 unsigned short type,
206 @@ -490,6 +480,7 @@
207         int                     (*neigh_setup)(struct net_device *dev, struct neigh_parms *);
208  #ifdef CONFIG_NETPOLL
209         struct netpoll_info     *npinfo;
210 +       int netpoll_rx;
211  #endif
212  #ifdef CONFIG_NET_POLL_CONTROLLER
213         void                    (*poll_controller)(struct net_device *dev);
214 @@ -507,6 +498,17 @@
215         struct class_device     class_dev;
216         /* space for optional statistics and wireless sysfs groups */
217         struct attribute_group  *sysfs_groups[3];
218 +
219 +       unsigned char           operstate; /* RFC2863 operstate */
220 +       unsigned char           link_mode; /* mapping policy to operstate */
221 +       unsigned short          dev_id;         /* for shared network cards */
222 +
223 +       /* Instance data managed by the core of Wireless Extensions. */
224 +       struct iw_public_data * wireless_data;
225 +
226 +       unsigned char           perm_addr[MAX_ADDR_LEN]; /* permanent hw address */
227 +
228 +       unsigned short          padded; /* How much padding added by alloc_netdev() */
229  };
230  
231  #define        NETDEV_ALIGN            32
232 @@ -587,9 +589,10 @@
233  
234  struct softnet_data
235  {
236 -       struct net_device       *output_queue;
237 +       int         useless_padding[3];
238         struct sk_buff_head     input_pkt_queue;
239         struct list_head        poll_list;
240 +       struct net_device       *output_queue;
241         struct sk_buff          *completion_queue;
242  
243         struct net_device       backlog_dev;    /* Sorry. 8) */
244 diff -urN linux.old/include/linux/timer.h linux.dev/include/linux/timer.h
245 --- linux.old/include/linux/timer.h     2006-06-18 03:49:35.000000000 +0200
246 +++ linux.dev/include/linux/timer.h     2006-08-27 21:02:04.000000000 +0200
247 @@ -12,6 +12,9 @@
248         struct list_head entry;
249         unsigned long expires;
250  
251 +       spinlock_t lock;
252 +       unsigned long magic;
253 +
254         void (*function)(unsigned long);
255         unsigned long data;
256  
257 diff -urN linux.old/kernel/timer.c linux.dev/kernel/timer.c
258 --- linux.old/kernel/timer.c    2006-06-18 03:49:35.000000000 +0200
259 +++ linux.dev/kernel/timer.c    2006-08-27 21:02:04.000000000 +0200
260 @@ -147,6 +147,7 @@
261  {
262         timer->entry.next = NULL;
263         timer->base = per_cpu(tvec_bases, raw_smp_processor_id());
264 +       spin_lock_init(&timer->lock);
265  }
266  EXPORT_SYMBOL(init_timer);
267