finally move buildroot-ng to trunk
[openwrt/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