diff options
Diffstat (limited to 'include/linux')
71 files changed, 1015 insertions, 565 deletions
diff --git a/include/linux/amba/clcd.h b/include/linux/amba/clcd.h index 6b8d73dc1ab0..9cf64b1b688b 100644 --- a/include/linux/amba/clcd.h +++ b/include/linux/amba/clcd.h | |||
@@ -54,6 +54,7 @@ | |||
54 | #define CNTL_LCDBPP4 (2 << 1) | 54 | #define CNTL_LCDBPP4 (2 << 1) |
55 | #define CNTL_LCDBPP8 (3 << 1) | 55 | #define CNTL_LCDBPP8 (3 << 1) |
56 | #define CNTL_LCDBPP16 (4 << 1) | 56 | #define CNTL_LCDBPP16 (4 << 1) |
57 | #define CNTL_LCDBPP16_565 (6 << 1) | ||
57 | #define CNTL_LCDBPP24 (5 << 1) | 58 | #define CNTL_LCDBPP24 (5 << 1) |
58 | #define CNTL_LCDBW (1 << 4) | 59 | #define CNTL_LCDBW (1 << 4) |
59 | #define CNTL_LCDTFT (1 << 5) | 60 | #define CNTL_LCDTFT (1 << 5) |
@@ -209,7 +210,16 @@ static inline void clcdfb_decode(struct clcd_fb *fb, struct clcd_regs *regs) | |||
209 | val |= CNTL_LCDBPP8; | 210 | val |= CNTL_LCDBPP8; |
210 | break; | 211 | break; |
211 | case 16: | 212 | case 16: |
212 | val |= CNTL_LCDBPP16; | 213 | /* |
214 | * PL110 cannot choose between 5551 and 565 modes in | ||
215 | * its control register | ||
216 | */ | ||
217 | if ((fb->dev->periphid & 0x000fffff) == 0x00041110) | ||
218 | val |= CNTL_LCDBPP16; | ||
219 | else if (fb->fb.var.green.length == 5) | ||
220 | val |= CNTL_LCDBPP16; | ||
221 | else | ||
222 | val |= CNTL_LCDBPP16_565; | ||
213 | break; | 223 | break; |
214 | case 32: | 224 | case 32: |
215 | val |= CNTL_LCDBPP24; | 225 | val |= CNTL_LCDBPP24; |
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h index 7198f129e135..231ba090ae34 100644 --- a/include/linux/arcdevice.h +++ b/include/linux/arcdevice.h | |||
@@ -206,7 +206,6 @@ struct ArcProto { | |||
206 | 206 | ||
207 | extern struct ArcProto *arc_proto_map[256], *arc_proto_default, | 207 | extern struct ArcProto *arc_proto_map[256], *arc_proto_default, |
208 | *arc_bcast_proto, *arc_raw_proto; | 208 | *arc_bcast_proto, *arc_raw_proto; |
209 | extern struct ArcProto arc_proto_null; | ||
210 | 209 | ||
211 | 210 | ||
212 | /* | 211 | /* |
@@ -334,17 +333,9 @@ void arcnet_dump_skb(struct net_device *dev, struct sk_buff *skb, char *desc); | |||
334 | #define arcnet_dump_skb(dev,skb,desc) ; | 333 | #define arcnet_dump_skb(dev,skb,desc) ; |
335 | #endif | 334 | #endif |
336 | 335 | ||
337 | #if (ARCNET_DEBUG_MAX & D_RX) || (ARCNET_DEBUG_MAX & D_TX) | ||
338 | void arcnet_dump_packet(struct net_device *dev, int bufnum, char *desc, | ||
339 | int take_arcnet_lock); | ||
340 | #else | ||
341 | #define arcnet_dump_packet(dev, bufnum, desc,take_arcnet_lock) ; | ||
342 | #endif | ||
343 | |||
344 | void arcnet_unregister_proto(struct ArcProto *proto); | 336 | void arcnet_unregister_proto(struct ArcProto *proto); |
345 | irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs); | 337 | irqreturn_t arcnet_interrupt(int irq, void *dev_id, struct pt_regs *regs); |
346 | struct net_device *alloc_arcdev(char *name); | 338 | struct net_device *alloc_arcdev(char *name); |
347 | void arcnet_rx(struct net_device *dev, int bufnum); | ||
348 | 339 | ||
349 | #endif /* __KERNEL__ */ | 340 | #endif /* __KERNEL__ */ |
350 | #endif /* _LINUX_ARCDEVICE_H */ | 341 | #endif /* _LINUX_ARCDEVICE_H */ |
diff --git a/include/linux/ata.h b/include/linux/ata.h index e7b0c21f6cd4..206d859083ea 100644 --- a/include/linux/ata.h +++ b/include/linux/ata.h | |||
@@ -146,6 +146,8 @@ enum { | |||
146 | ATA_CMD_STANDBYNOW1 = 0xE0, | 146 | ATA_CMD_STANDBYNOW1 = 0xE0, |
147 | ATA_CMD_IDLEIMMEDIATE = 0xE1, | 147 | ATA_CMD_IDLEIMMEDIATE = 0xE1, |
148 | ATA_CMD_INIT_DEV_PARAMS = 0x91, | 148 | ATA_CMD_INIT_DEV_PARAMS = 0x91, |
149 | ATA_CMD_READ_NATIVE_MAX = 0xF8, | ||
150 | ATA_CMD_READ_NATIVE_MAX_EXT = 0x27, | ||
149 | 151 | ||
150 | /* SETFEATURES stuff */ | 152 | /* SETFEATURES stuff */ |
151 | SETFEATURES_XFER = 0x03, | 153 | SETFEATURES_XFER = 0x03, |
@@ -205,7 +207,6 @@ enum ata_tf_protocols { | |||
205 | ATA_PROT_UNKNOWN, /* unknown/invalid */ | 207 | ATA_PROT_UNKNOWN, /* unknown/invalid */ |
206 | ATA_PROT_NODATA, /* no data */ | 208 | ATA_PROT_NODATA, /* no data */ |
207 | ATA_PROT_PIO, /* PIO single sector */ | 209 | ATA_PROT_PIO, /* PIO single sector */ |
208 | ATA_PROT_PIO_MULT, /* PIO multiple sector */ | ||
209 | ATA_PROT_DMA, /* DMA */ | 210 | ATA_PROT_DMA, /* DMA */ |
210 | ATA_PROT_ATAPI, /* packet command, PIO data xfer*/ | 211 | ATA_PROT_ATAPI, /* packet command, PIO data xfer*/ |
211 | ATA_PROT_ATAPI_NODATA, /* packet command, no data */ | 212 | ATA_PROT_ATAPI_NODATA, /* packet command, no data */ |
@@ -248,18 +249,22 @@ struct ata_taskfile { | |||
248 | }; | 249 | }; |
249 | 250 | ||
250 | #define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0) | 251 | #define ata_id_is_ata(id) (((id)[0] & (1 << 15)) == 0) |
252 | #define ata_id_is_cfa(id) ((id)[0] == 0x848A) | ||
251 | #define ata_id_is_sata(id) ((id)[93] == 0) | 253 | #define ata_id_is_sata(id) ((id)[93] == 0) |
252 | #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6)) | 254 | #define ata_id_rahead_enabled(id) ((id)[85] & (1 << 6)) |
253 | #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5)) | 255 | #define ata_id_wcache_enabled(id) ((id)[85] & (1 << 5)) |
256 | #define ata_id_hpa_enabled(id) ((id)[85] & (1 << 10)) | ||
254 | #define ata_id_has_fua(id) ((id)[84] & (1 << 6)) | 257 | #define ata_id_has_fua(id) ((id)[84] & (1 << 6)) |
255 | #define ata_id_has_flush(id) ((id)[83] & (1 << 12)) | 258 | #define ata_id_has_flush(id) ((id)[83] & (1 << 12)) |
256 | #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13)) | 259 | #define ata_id_has_flush_ext(id) ((id)[83] & (1 << 13)) |
257 | #define ata_id_has_lba48(id) ((id)[83] & (1 << 10)) | 260 | #define ata_id_has_lba48(id) ((id)[83] & (1 << 10)) |
261 | #define ata_id_has_hpa(id) ((id)[82] & (1 << 10)) | ||
258 | #define ata_id_has_wcache(id) ((id)[82] & (1 << 5)) | 262 | #define ata_id_has_wcache(id) ((id)[82] & (1 << 5)) |
259 | #define ata_id_has_pm(id) ((id)[82] & (1 << 3)) | 263 | #define ata_id_has_pm(id) ((id)[82] & (1 << 3)) |
260 | #define ata_id_has_lba(id) ((id)[49] & (1 << 9)) | 264 | #define ata_id_has_lba(id) ((id)[49] & (1 << 9)) |
261 | #define ata_id_has_dma(id) ((id)[49] & (1 << 8)) | 265 | #define ata_id_has_dma(id) ((id)[49] & (1 << 8)) |
262 | #define ata_id_removeable(id) ((id)[0] & (1 << 7)) | 266 | #define ata_id_removeable(id) ((id)[0] & (1 << 7)) |
267 | #define ata_id_has_dword_io(id) ((id)[50] & (1 << 0)) | ||
263 | #define ata_id_u32(id,n) \ | 268 | #define ata_id_u32(id,n) \ |
264 | (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)])) | 269 | (((u32) (id)[(n) + 1] << 16) | ((u32) (id)[(n)])) |
265 | #define ata_id_u64(id,n) \ | 270 | #define ata_id_u64(id,n) \ |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 860e7a485a5f..56bb6a4e15f3 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
@@ -58,7 +58,7 @@ struct cfq_io_context { | |||
58 | * circular list of cfq_io_contexts belonging to a process io context | 58 | * circular list of cfq_io_contexts belonging to a process io context |
59 | */ | 59 | */ |
60 | struct list_head list; | 60 | struct list_head list; |
61 | struct cfq_queue *cfqq; | 61 | struct cfq_queue *cfqq[2]; |
62 | void *key; | 62 | void *key; |
63 | 63 | ||
64 | struct io_context *ioc; | 64 | struct io_context *ioc; |
@@ -69,6 +69,8 @@ struct cfq_io_context { | |||
69 | unsigned long ttime_samples; | 69 | unsigned long ttime_samples; |
70 | unsigned long ttime_mean; | 70 | unsigned long ttime_mean; |
71 | 71 | ||
72 | struct list_head queue_list; | ||
73 | |||
72 | void (*dtor)(struct cfq_io_context *); | 74 | void (*dtor)(struct cfq_io_context *); |
73 | void (*exit)(struct cfq_io_context *); | 75 | void (*exit)(struct cfq_io_context *); |
74 | }; | 76 | }; |
@@ -404,8 +406,6 @@ struct request_queue | |||
404 | 406 | ||
405 | struct blk_queue_tag *queue_tags; | 407 | struct blk_queue_tag *queue_tags; |
406 | 408 | ||
407 | atomic_t refcnt; | ||
408 | |||
409 | unsigned int nr_sorted; | 409 | unsigned int nr_sorted; |
410 | unsigned int in_flight; | 410 | unsigned int in_flight; |
411 | 411 | ||
@@ -424,6 +424,8 @@ struct request_queue | |||
424 | struct request pre_flush_rq, bar_rq, post_flush_rq; | 424 | struct request pre_flush_rq, bar_rq, post_flush_rq; |
425 | struct request *orig_bar_rq; | 425 | struct request *orig_bar_rq; |
426 | unsigned int bi_size; | 426 | unsigned int bi_size; |
427 | |||
428 | struct mutex sysfs_lock; | ||
427 | }; | 429 | }; |
428 | 430 | ||
429 | #define RQ_INACTIVE (-1) | 431 | #define RQ_INACTIVE (-1) |
@@ -725,7 +727,7 @@ extern long nr_blockdev_pages(void); | |||
725 | int blk_get_queue(request_queue_t *); | 727 | int blk_get_queue(request_queue_t *); |
726 | request_queue_t *blk_alloc_queue(gfp_t); | 728 | request_queue_t *blk_alloc_queue(gfp_t); |
727 | request_queue_t *blk_alloc_queue_node(gfp_t, int); | 729 | request_queue_t *blk_alloc_queue_node(gfp_t, int); |
728 | #define blk_put_queue(q) blk_cleanup_queue((q)) | 730 | extern void blk_put_queue(request_queue_t *); |
729 | 731 | ||
730 | /* | 732 | /* |
731 | * tag stuff | 733 | * tag stuff |
diff --git a/include/linux/cpu.h b/include/linux/cpu.h index 0ed1d4853c69..d612b89dce33 100644 --- a/include/linux/cpu.h +++ b/include/linux/cpu.h | |||
@@ -32,7 +32,7 @@ struct cpu { | |||
32 | }; | 32 | }; |
33 | 33 | ||
34 | extern int register_cpu(struct cpu *, int, struct node *); | 34 | extern int register_cpu(struct cpu *, int, struct node *); |
35 | extern struct sys_device *get_cpu_sysdev(int cpu); | 35 | extern struct sys_device *get_cpu_sysdev(unsigned cpu); |
36 | #ifdef CONFIG_HOTPLUG_CPU | 36 | #ifdef CONFIG_HOTPLUG_CPU |
37 | extern void unregister_cpu(struct cpu *, struct node *); | 37 | extern void unregister_cpu(struct cpu *, struct node *); |
38 | #endif | 38 | #endif |
diff --git a/include/linux/crypto.h b/include/linux/crypto.h index d88bf8aa8b47..0ab1bc1152ca 100644 --- a/include/linux/crypto.h +++ b/include/linux/crypto.h | |||
@@ -229,6 +229,8 @@ struct crypto_tfm { | |||
229 | } crt_u; | 229 | } crt_u; |
230 | 230 | ||
231 | struct crypto_alg *__crt_alg; | 231 | struct crypto_alg *__crt_alg; |
232 | |||
233 | char __crt_ctx[] __attribute__ ((__aligned__)); | ||
232 | }; | 234 | }; |
233 | 235 | ||
234 | /* | 236 | /* |
@@ -301,7 +303,13 @@ static inline unsigned int crypto_tfm_alg_alignmask(struct crypto_tfm *tfm) | |||
301 | 303 | ||
302 | static inline void *crypto_tfm_ctx(struct crypto_tfm *tfm) | 304 | static inline void *crypto_tfm_ctx(struct crypto_tfm *tfm) |
303 | { | 305 | { |
304 | return (void *)&tfm[1]; | 306 | return tfm->__crt_ctx; |
307 | } | ||
308 | |||
309 | static inline unsigned int crypto_tfm_ctx_alignment(void) | ||
310 | { | ||
311 | struct crypto_tfm *tfm; | ||
312 | return __alignof__(tfm->__crt_ctx); | ||
305 | } | 313 | } |
306 | 314 | ||
307 | /* | 315 | /* |
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 088529f54965..676333b9fad0 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
@@ -18,7 +18,7 @@ | |||
18 | * @dccph_seq - sequence number high or low order 24 bits, depends on dccph_x | 18 | * @dccph_seq - sequence number high or low order 24 bits, depends on dccph_x |
19 | */ | 19 | */ |
20 | struct dccp_hdr { | 20 | struct dccp_hdr { |
21 | __u16 dccph_sport, | 21 | __be16 dccph_sport, |
22 | dccph_dport; | 22 | dccph_dport; |
23 | __u8 dccph_doff; | 23 | __u8 dccph_doff; |
24 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 24 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
@@ -32,18 +32,18 @@ struct dccp_hdr { | |||
32 | #endif | 32 | #endif |
33 | __u16 dccph_checksum; | 33 | __u16 dccph_checksum; |
34 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 34 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
35 | __u32 dccph_x:1, | 35 | __u8 dccph_x:1, |
36 | dccph_type:4, | 36 | dccph_type:4, |
37 | dccph_reserved:3, | 37 | dccph_reserved:3; |
38 | dccph_seq:24; | ||
39 | #elif defined(__BIG_ENDIAN_BITFIELD) | 38 | #elif defined(__BIG_ENDIAN_BITFIELD) |
40 | __u32 dccph_reserved:3, | 39 | __u8 dccph_reserved:3, |
41 | dccph_type:4, | 40 | dccph_type:4, |
42 | dccph_x:1, | 41 | dccph_x:1; |
43 | dccph_seq:24; | ||
44 | #else | 42 | #else |
45 | #error "Adjust your <asm/byteorder.h> defines" | 43 | #error "Adjust your <asm/byteorder.h> defines" |
46 | #endif | 44 | #endif |
45 | __u8 dccph_seq2; | ||
46 | __be16 dccph_seq; | ||
47 | }; | 47 | }; |
48 | 48 | ||
49 | /** | 49 | /** |
@@ -52,7 +52,7 @@ struct dccp_hdr { | |||
52 | * @dccph_seq_low - low 24 bits of a 48 bit seq packet | 52 | * @dccph_seq_low - low 24 bits of a 48 bit seq packet |
53 | */ | 53 | */ |
54 | struct dccp_hdr_ext { | 54 | struct dccp_hdr_ext { |
55 | __u32 dccph_seq_low; | 55 | __be32 dccph_seq_low; |
56 | }; | 56 | }; |
57 | 57 | ||
58 | /** | 58 | /** |
@@ -62,7 +62,7 @@ struct dccp_hdr_ext { | |||
62 | * @dccph_req_options - list of options (must be a multiple of 32 bits | 62 | * @dccph_req_options - list of options (must be a multiple of 32 bits |
63 | */ | 63 | */ |
64 | struct dccp_hdr_request { | 64 | struct dccp_hdr_request { |
65 | __u32 dccph_req_service; | 65 | __be32 dccph_req_service; |
66 | }; | 66 | }; |
67 | /** | 67 | /** |
68 | * struct dccp_hdr_ack_bits - acknowledgment bits common to most packets | 68 | * struct dccp_hdr_ack_bits - acknowledgment bits common to most packets |
@@ -71,9 +71,9 @@ struct dccp_hdr_request { | |||
71 | * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR | 71 | * @dccph_resp_ack_nr_low - 48 bit ack number low order bits, contains GSR |
72 | */ | 72 | */ |
73 | struct dccp_hdr_ack_bits { | 73 | struct dccp_hdr_ack_bits { |
74 | __u32 dccph_reserved1:8, | 74 | __be16 dccph_reserved1; |
75 | dccph_ack_nr_high:24; | 75 | __be16 dccph_ack_nr_high; |
76 | __u32 dccph_ack_nr_low; | 76 | __be32 dccph_ack_nr_low; |
77 | }; | 77 | }; |
78 | /** | 78 | /** |
79 | * struct dccp_hdr_response - Conection initiation response header | 79 | * struct dccp_hdr_response - Conection initiation response header |
@@ -85,7 +85,7 @@ struct dccp_hdr_ack_bits { | |||
85 | */ | 85 | */ |
86 | struct dccp_hdr_response { | 86 | struct dccp_hdr_response { |
87 | struct dccp_hdr_ack_bits dccph_resp_ack; | 87 | struct dccp_hdr_ack_bits dccph_resp_ack; |
88 | __u32 dccph_resp_service; | 88 | __be32 dccph_resp_service; |
89 | }; | 89 | }; |
90 | 90 | ||
91 | /** | 91 | /** |
@@ -154,6 +154,10 @@ enum { | |||
154 | DCCPO_MANDATORY = 1, | 154 | DCCPO_MANDATORY = 1, |
155 | DCCPO_MIN_RESERVED = 3, | 155 | DCCPO_MIN_RESERVED = 3, |
156 | DCCPO_MAX_RESERVED = 31, | 156 | DCCPO_MAX_RESERVED = 31, |
157 | DCCPO_CHANGE_L = 32, | ||
158 | DCCPO_CONFIRM_L = 33, | ||
159 | DCCPO_CHANGE_R = 34, | ||
160 | DCCPO_CONFIRM_R = 35, | ||
157 | DCCPO_NDP_COUNT = 37, | 161 | DCCPO_NDP_COUNT = 37, |
158 | DCCPO_ACK_VECTOR_0 = 38, | 162 | DCCPO_ACK_VECTOR_0 = 38, |
159 | DCCPO_ACK_VECTOR_1 = 39, | 163 | DCCPO_ACK_VECTOR_1 = 39, |
@@ -168,7 +172,9 @@ enum { | |||
168 | /* DCCP features */ | 172 | /* DCCP features */ |
169 | enum { | 173 | enum { |
170 | DCCPF_RESERVED = 0, | 174 | DCCPF_RESERVED = 0, |
175 | DCCPF_CCID = 1, | ||
171 | DCCPF_SEQUENCE_WINDOW = 3, | 176 | DCCPF_SEQUENCE_WINDOW = 3, |
177 | DCCPF_ACK_RATIO = 5, | ||
172 | DCCPF_SEND_ACK_VECTOR = 6, | 178 | DCCPF_SEND_ACK_VECTOR = 6, |
173 | DCCPF_SEND_NDP_COUNT = 7, | 179 | DCCPF_SEND_NDP_COUNT = 7, |
174 | /* 10-127 reserved */ | 180 | /* 10-127 reserved */ |
@@ -176,9 +182,18 @@ enum { | |||
176 | DCCPF_MAX_CCID_SPECIFIC = 255, | 182 | DCCPF_MAX_CCID_SPECIFIC = 255, |
177 | }; | 183 | }; |
178 | 184 | ||
185 | /* this structure is argument to DCCP_SOCKOPT_CHANGE_X */ | ||
186 | struct dccp_so_feat { | ||
187 | __u8 dccpsf_feat; | ||
188 | __u8 *dccpsf_val; | ||
189 | __u8 dccpsf_len; | ||
190 | }; | ||
191 | |||
179 | /* DCCP socket options */ | 192 | /* DCCP socket options */ |
180 | #define DCCP_SOCKOPT_PACKET_SIZE 1 | 193 | #define DCCP_SOCKOPT_PACKET_SIZE 1 |
181 | #define DCCP_SOCKOPT_SERVICE 2 | 194 | #define DCCP_SOCKOPT_SERVICE 2 |
195 | #define DCCP_SOCKOPT_CHANGE_L 3 | ||
196 | #define DCCP_SOCKOPT_CHANGE_R 4 | ||
182 | #define DCCP_SOCKOPT_CCID_RX_INFO 128 | 197 | #define DCCP_SOCKOPT_CCID_RX_INFO 128 |
183 | #define DCCP_SOCKOPT_CCID_TX_INFO 192 | 198 | #define DCCP_SOCKOPT_CCID_TX_INFO 192 |
184 | 199 | ||
@@ -254,16 +269,12 @@ static inline unsigned int dccp_basic_hdr_len(const struct sk_buff *skb) | |||
254 | static inline __u64 dccp_hdr_seq(const struct sk_buff *skb) | 269 | static inline __u64 dccp_hdr_seq(const struct sk_buff *skb) |
255 | { | 270 | { |
256 | const struct dccp_hdr *dh = dccp_hdr(skb); | 271 | const struct dccp_hdr *dh = dccp_hdr(skb); |
257 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 272 | __u64 seq_nr = ntohs(dh->dccph_seq); |
258 | __u64 seq_nr = ntohl(dh->dccph_seq << 8); | ||
259 | #elif defined(__BIG_ENDIAN_BITFIELD) | ||
260 | __u64 seq_nr = ntohl(dh->dccph_seq); | ||
261 | #else | ||
262 | #error "Adjust your <asm/byteorder.h> defines" | ||
263 | #endif | ||
264 | 273 | ||
265 | if (dh->dccph_x != 0) | 274 | if (dh->dccph_x != 0) |
266 | seq_nr = (seq_nr << 32) + ntohl(dccp_hdrx(skb)->dccph_seq_low); | 275 | seq_nr = (seq_nr << 32) + ntohl(dccp_hdrx(skb)->dccph_seq_low); |
276 | else | ||
277 | seq_nr += (u32)dh->dccph_seq2 << 16; | ||
267 | 278 | ||
268 | return seq_nr; | 279 | return seq_nr; |
269 | } | 280 | } |
@@ -281,13 +292,7 @@ static inline struct dccp_hdr_ack_bits *dccp_hdr_ack_bits(const struct sk_buff * | |||
281 | static inline u64 dccp_hdr_ack_seq(const struct sk_buff *skb) | 292 | static inline u64 dccp_hdr_ack_seq(const struct sk_buff *skb) |
282 | { | 293 | { |
283 | const struct dccp_hdr_ack_bits *dhack = dccp_hdr_ack_bits(skb); | 294 | const struct dccp_hdr_ack_bits *dhack = dccp_hdr_ack_bits(skb); |
284 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 295 | return ((u64)ntohs(dhack->dccph_ack_nr_high) << 32) + ntohl(dhack->dccph_ack_nr_low); |
285 | return (((u64)ntohl(dhack->dccph_ack_nr_high << 8)) << 32) + ntohl(dhack->dccph_ack_nr_low); | ||
286 | #elif defined(__BIG_ENDIAN_BITFIELD) | ||
287 | return (((u64)ntohl(dhack->dccph_ack_nr_high)) << 32) + ntohl(dhack->dccph_ack_nr_low); | ||
288 | #else | ||
289 | #error "Adjust your <asm/byteorder.h> defines" | ||
290 | #endif | ||
291 | } | 296 | } |
292 | 297 | ||
293 | static inline struct dccp_hdr_response *dccp_hdr_response(struct sk_buff *skb) | 298 | static inline struct dccp_hdr_response *dccp_hdr_response(struct sk_buff *skb) |
@@ -314,38 +319,60 @@ static inline unsigned int dccp_hdr_len(const struct sk_buff *skb) | |||
314 | 319 | ||
315 | /* initial values for each feature */ | 320 | /* initial values for each feature */ |
316 | #define DCCPF_INITIAL_SEQUENCE_WINDOW 100 | 321 | #define DCCPF_INITIAL_SEQUENCE_WINDOW 100 |
317 | /* FIXME: for now we're using CCID 3 (TFRC) */ | 322 | #define DCCPF_INITIAL_ACK_RATIO 2 |
318 | #define DCCPF_INITIAL_CCID 3 | 323 | #define DCCPF_INITIAL_CCID 2 |
319 | #define DCCPF_INITIAL_SEND_ACK_VECTOR 0 | 324 | #define DCCPF_INITIAL_SEND_ACK_VECTOR 1 |
320 | /* FIXME: for now we're default to 1 but it should really be 0 */ | 325 | /* FIXME: for now we're default to 1 but it should really be 0 */ |
321 | #define DCCPF_INITIAL_SEND_NDP_COUNT 1 | 326 | #define DCCPF_INITIAL_SEND_NDP_COUNT 1 |
322 | 327 | ||
323 | #define DCCP_NDP_LIMIT 0xFFFFFF | 328 | #define DCCP_NDP_LIMIT 0xFFFFFF |
324 | 329 | ||
325 | /** | 330 | /** |
326 | * struct dccp_options - option values for a DCCP connection | 331 | * struct dccp_minisock - Minimal DCCP connection representation |
327 | * @dccpo_sequence_window - Sequence Window Feature (section 7.5.2) | 332 | * |
328 | * @dccpo_ccid - Congestion Control Id (CCID) (section 10) | 333 | * Will be used to pass the state from dccp_request_sock to dccp_sock. |
329 | * @dccpo_send_ack_vector - Send Ack Vector Feature (section 11.5) | 334 | * |
330 | * @dccpo_send_ndp_count - Send NDP Count Feature (7.7.2) | 335 | * @dccpms_sequence_window - Sequence Window Feature (section 7.5.2) |
336 | * @dccpms_ccid - Congestion Control Id (CCID) (section 10) | ||
337 | * @dccpms_send_ack_vector - Send Ack Vector Feature (section 11.5) | ||
338 | * @dccpms_send_ndp_count - Send NDP Count Feature (7.7.2) | ||
331 | */ | 339 | */ |
332 | struct dccp_options { | 340 | struct dccp_minisock { |
333 | __u64 dccpo_sequence_window; | 341 | __u64 dccpms_sequence_window; |
334 | __u8 dccpo_rx_ccid; | 342 | __u8 dccpms_rx_ccid; |
335 | __u8 dccpo_tx_ccid; | 343 | __u8 dccpms_tx_ccid; |
336 | __u8 dccpo_send_ack_vector; | 344 | __u8 dccpms_send_ack_vector; |
337 | __u8 dccpo_send_ndp_count; | 345 | __u8 dccpms_send_ndp_count; |
346 | __u8 dccpms_ack_ratio; | ||
347 | struct list_head dccpms_pending; | ||
348 | struct list_head dccpms_conf; | ||
349 | }; | ||
350 | |||
351 | struct dccp_opt_conf { | ||
352 | __u8 *dccpoc_val; | ||
353 | __u8 dccpoc_len; | ||
354 | }; | ||
355 | |||
356 | struct dccp_opt_pend { | ||
357 | struct list_head dccpop_node; | ||
358 | __u8 dccpop_type; | ||
359 | __u8 dccpop_feat; | ||
360 | __u8 *dccpop_val; | ||
361 | __u8 dccpop_len; | ||
362 | int dccpop_conf; | ||
363 | struct dccp_opt_conf *dccpop_sc; | ||
338 | }; | 364 | }; |
339 | 365 | ||
340 | extern void __dccp_options_init(struct dccp_options *dccpo); | 366 | extern void __dccp_minisock_init(struct dccp_minisock *dmsk); |
341 | extern void dccp_options_init(struct dccp_options *dccpo); | 367 | extern void dccp_minisock_init(struct dccp_minisock *dmsk); |
368 | |||
342 | extern int dccp_parse_options(struct sock *sk, struct sk_buff *skb); | 369 | extern int dccp_parse_options(struct sock *sk, struct sk_buff *skb); |
343 | 370 | ||
344 | struct dccp_request_sock { | 371 | struct dccp_request_sock { |
345 | struct inet_request_sock dreq_inet_rsk; | 372 | struct inet_request_sock dreq_inet_rsk; |
346 | __u64 dreq_iss; | 373 | __u64 dreq_iss; |
347 | __u64 dreq_isr; | 374 | __u64 dreq_isr; |
348 | __u32 dreq_service; | 375 | __be32 dreq_service; |
349 | }; | 376 | }; |
350 | 377 | ||
351 | static inline struct dccp_request_sock *dccp_rsk(const struct request_sock *req) | 378 | static inline struct dccp_request_sock *dccp_rsk(const struct request_sock *req) |
@@ -373,13 +400,13 @@ enum dccp_role { | |||
373 | 400 | ||
374 | struct dccp_service_list { | 401 | struct dccp_service_list { |
375 | __u32 dccpsl_nr; | 402 | __u32 dccpsl_nr; |
376 | __u32 dccpsl_list[0]; | 403 | __be32 dccpsl_list[0]; |
377 | }; | 404 | }; |
378 | 405 | ||
379 | #define DCCP_SERVICE_INVALID_VALUE htonl((__u32)-1) | 406 | #define DCCP_SERVICE_INVALID_VALUE htonl((__u32)-1) |
380 | 407 | ||
381 | static inline int dccp_list_has_service(const struct dccp_service_list *sl, | 408 | static inline int dccp_list_has_service(const struct dccp_service_list *sl, |
382 | const u32 service) | 409 | const __be32 service) |
383 | { | 410 | { |
384 | if (likely(sl != NULL)) { | 411 | if (likely(sl != NULL)) { |
385 | u32 i = sl->dccpsl_nr; | 412 | u32 i = sl->dccpsl_nr; |
@@ -425,17 +452,17 @@ struct dccp_sock { | |||
425 | __u64 dccps_gss; | 452 | __u64 dccps_gss; |
426 | __u64 dccps_gsr; | 453 | __u64 dccps_gsr; |
427 | __u64 dccps_gar; | 454 | __u64 dccps_gar; |
428 | __u32 dccps_service; | 455 | __be32 dccps_service; |
429 | struct dccp_service_list *dccps_service_list; | 456 | struct dccp_service_list *dccps_service_list; |
430 | struct timeval dccps_timestamp_time; | 457 | struct timeval dccps_timestamp_time; |
431 | __u32 dccps_timestamp_echo; | 458 | __u32 dccps_timestamp_echo; |
432 | __u32 dccps_packet_size; | 459 | __u32 dccps_packet_size; |
460 | __u16 dccps_l_ack_ratio; | ||
461 | __u16 dccps_r_ack_ratio; | ||
433 | unsigned long dccps_ndp_count; | 462 | unsigned long dccps_ndp_count; |
434 | __u32 dccps_mss_cache; | 463 | __u32 dccps_mss_cache; |
435 | struct dccp_options dccps_options; | 464 | struct dccp_minisock dccps_minisock; |
436 | struct dccp_ackvec *dccps_hc_rx_ackvec; | 465 | struct dccp_ackvec *dccps_hc_rx_ackvec; |
437 | void *dccps_hc_rx_ccid_private; | ||
438 | void *dccps_hc_tx_ccid_private; | ||
439 | struct ccid *dccps_hc_rx_ccid; | 466 | struct ccid *dccps_hc_rx_ccid; |
440 | struct ccid *dccps_hc_tx_ccid; | 467 | struct ccid *dccps_hc_tx_ccid; |
441 | struct dccp_options_received dccps_options_received; | 468 | struct dccp_options_received dccps_options_received; |
@@ -450,6 +477,11 @@ static inline struct dccp_sock *dccp_sk(const struct sock *sk) | |||
450 | return (struct dccp_sock *)sk; | 477 | return (struct dccp_sock *)sk; |
451 | } | 478 | } |
452 | 479 | ||
480 | static inline struct dccp_minisock *dccp_msk(const struct sock *sk) | ||
481 | { | ||
482 | return (struct dccp_minisock *)&dccp_sk(sk)->dccps_minisock; | ||
483 | } | ||
484 | |||
453 | static inline int dccp_service_not_initialized(const struct sock *sk) | 485 | static inline int dccp_service_not_initialized(const struct sock *sk) |
454 | { | 486 | { |
455 | return dccp_sk(sk)->dccps_service == DCCP_SERVICE_INVALID_VALUE; | 487 | return dccp_sk(sk)->dccps_service == DCCP_SERVICE_INVALID_VALUE; |
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h index a5fa6a6eede8..4b0428e335be 100644 --- a/include/linux/debugfs.h +++ b/include/linux/debugfs.h | |||
@@ -21,6 +21,11 @@ | |||
21 | 21 | ||
22 | struct file_operations; | 22 | struct file_operations; |
23 | 23 | ||
24 | struct debugfs_blob_wrapper { | ||
25 | void *data; | ||
26 | unsigned long size; | ||
27 | }; | ||
28 | |||
24 | #if defined(CONFIG_DEBUG_FS) | 29 | #if defined(CONFIG_DEBUG_FS) |
25 | struct dentry *debugfs_create_file(const char *name, mode_t mode, | 30 | struct dentry *debugfs_create_file(const char *name, mode_t mode, |
26 | struct dentry *parent, void *data, | 31 | struct dentry *parent, void *data, |
@@ -39,6 +44,9 @@ struct dentry *debugfs_create_u32(const char *name, mode_t mode, | |||
39 | struct dentry *debugfs_create_bool(const char *name, mode_t mode, | 44 | struct dentry *debugfs_create_bool(const char *name, mode_t mode, |
40 | struct dentry *parent, u32 *value); | 45 | struct dentry *parent, u32 *value); |
41 | 46 | ||
47 | struct dentry *debugfs_create_blob(const char *name, mode_t mode, | ||
48 | struct dentry *parent, | ||
49 | struct debugfs_blob_wrapper *blob); | ||
42 | #else | 50 | #else |
43 | 51 | ||
44 | #include <linux/err.h> | 52 | #include <linux/err.h> |
@@ -94,6 +102,13 @@ static inline struct dentry *debugfs_create_bool(const char *name, mode_t mode, | |||
94 | return ERR_PTR(-ENODEV); | 102 | return ERR_PTR(-ENODEV); |
95 | } | 103 | } |
96 | 104 | ||
105 | static inline struct dentry *debugfs_create_blob(const char *name, mode_t mode, | ||
106 | struct dentry *parent, | ||
107 | struct debugfs_blob_wrapper *blob) | ||
108 | { | ||
109 | return ERR_PTR(-ENODEV); | ||
110 | } | ||
111 | |||
97 | #endif | 112 | #endif |
98 | 113 | ||
99 | #endif | 114 | #endif |
diff --git a/include/linux/device.h b/include/linux/device.h index 58df18d9cd3e..f6e72a65a3f2 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
@@ -378,6 +378,7 @@ extern void device_bind_driver(struct device * dev); | |||
378 | extern void device_release_driver(struct device * dev); | 378 | extern void device_release_driver(struct device * dev); |
379 | extern int device_attach(struct device * dev); | 379 | extern int device_attach(struct device * dev); |
380 | extern void driver_attach(struct device_driver * drv); | 380 | extern void driver_attach(struct device_driver * drv); |
381 | extern void device_reprobe(struct device *dev); | ||
381 | 382 | ||
382 | 383 | ||
383 | /* | 384 | /* |
@@ -399,7 +400,7 @@ extern struct device * get_device(struct device * dev); | |||
399 | extern void put_device(struct device * dev); | 400 | extern void put_device(struct device * dev); |
400 | 401 | ||
401 | 402 | ||
402 | /* drivers/base/power.c */ | 403 | /* drivers/base/power/shutdown.c */ |
403 | extern void device_shutdown(void); | 404 | extern void device_shutdown(void); |
404 | 405 | ||
405 | 406 | ||
@@ -424,6 +425,8 @@ extern void firmware_unregister(struct subsystem *); | |||
424 | dev_printk(KERN_INFO , dev , format , ## arg) | 425 | dev_printk(KERN_INFO , dev , format , ## arg) |
425 | #define dev_warn(dev, format, arg...) \ | 426 | #define dev_warn(dev, format, arg...) \ |
426 | dev_printk(KERN_WARNING , dev , format , ## arg) | 427 | dev_printk(KERN_WARNING , dev , format , ## arg) |
428 | #define dev_notice(dev, format, arg...) \ | ||
429 | dev_printk(KERN_NOTICE , dev , format , ## arg) | ||
427 | 430 | ||
428 | /* Create alias, so I can be autoloaded. */ | 431 | /* Create alias, so I can be autoloaded. */ |
429 | #define MODULE_ALIAS_CHARDEV(major,minor) \ | 432 | #define MODULE_ALIAS_CHARDEV(major,minor) \ |
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index 2d80cc761a15..a8731062a74c 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
@@ -20,6 +20,7 @@ enum dma_data_direction { | |||
20 | #define DMA_31BIT_MASK 0x000000007fffffffULL | 20 | #define DMA_31BIT_MASK 0x000000007fffffffULL |
21 | #define DMA_30BIT_MASK 0x000000003fffffffULL | 21 | #define DMA_30BIT_MASK 0x000000003fffffffULL |
22 | #define DMA_29BIT_MASK 0x000000001fffffffULL | 22 | #define DMA_29BIT_MASK 0x000000001fffffffULL |
23 | #define DMA_28BIT_MASK 0x000000000fffffffULL | ||
23 | 24 | ||
24 | #include <asm/dma-mapping.h> | 25 | #include <asm/dma-mapping.h> |
25 | 26 | ||
diff --git a/include/linux/dn.h b/include/linux/dn.h index 782cae49e64c..10b6a6fd5837 100644 --- a/include/linux/dn.h +++ b/include/linux/dn.h | |||
@@ -71,17 +71,17 @@ | |||
71 | 71 | ||
72 | struct dn_naddr | 72 | struct dn_naddr |
73 | { | 73 | { |
74 | unsigned short a_len; | 74 | __le16 a_len; |
75 | unsigned char a_addr[DN_MAXADDL]; | 75 | __u8 a_addr[DN_MAXADDL]; /* Two bytes little endian */ |
76 | }; | 76 | }; |
77 | 77 | ||
78 | struct sockaddr_dn | 78 | struct sockaddr_dn |
79 | { | 79 | { |
80 | unsigned short sdn_family; | 80 | __u16 sdn_family; |
81 | unsigned char sdn_flags; | 81 | __u8 sdn_flags; |
82 | unsigned char sdn_objnum; | 82 | __u8 sdn_objnum; |
83 | unsigned short sdn_objnamel; | 83 | __le16 sdn_objnamel; |
84 | unsigned char sdn_objname[DN_MAXOBJL]; | 84 | __u8 sdn_objname[DN_MAXOBJL]; |
85 | struct dn_naddr sdn_add; | 85 | struct dn_naddr sdn_add; |
86 | }; | 86 | }; |
87 | #define sdn_nodeaddrl sdn_add.a_len /* Node address length */ | 87 | #define sdn_nodeaddrl sdn_add.a_len /* Node address length */ |
@@ -93,38 +93,38 @@ struct sockaddr_dn | |||
93 | * DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure | 93 | * DECnet set/get DSO_CONDATA, DSO_DISDATA (optional data) structure |
94 | */ | 94 | */ |
95 | struct optdata_dn { | 95 | struct optdata_dn { |
96 | unsigned short opt_status; /* Extended status return */ | 96 | __le16 opt_status; /* Extended status return */ |
97 | #define opt_sts opt_status | 97 | #define opt_sts opt_status |
98 | unsigned short opt_optl; /* Length of user data */ | 98 | __le16 opt_optl; /* Length of user data */ |
99 | unsigned char opt_data[16]; /* User data */ | 99 | __u8 opt_data[16]; /* User data */ |
100 | }; | 100 | }; |
101 | 101 | ||
102 | struct accessdata_dn | 102 | struct accessdata_dn |
103 | { | 103 | { |
104 | unsigned char acc_accl; | 104 | __u8 acc_accl; |
105 | unsigned char acc_acc[DN_MAXACCL]; | 105 | __u8 acc_acc[DN_MAXACCL]; |
106 | unsigned char acc_passl; | 106 | __u8 acc_passl; |
107 | unsigned char acc_pass[DN_MAXACCL]; | 107 | __u8 acc_pass[DN_MAXACCL]; |
108 | unsigned char acc_userl; | 108 | __u8 acc_userl; |
109 | unsigned char acc_user[DN_MAXACCL]; | 109 | __u8 acc_user[DN_MAXACCL]; |
110 | }; | 110 | }; |
111 | 111 | ||
112 | /* | 112 | /* |
113 | * DECnet logical link information structure | 113 | * DECnet logical link information structure |
114 | */ | 114 | */ |
115 | struct linkinfo_dn { | 115 | struct linkinfo_dn { |
116 | unsigned short idn_segsize; /* Segment size for link */ | 116 | __le16 idn_segsize; /* Segment size for link */ |
117 | unsigned char idn_linkstate; /* Logical link state */ | 117 | __u8 idn_linkstate; /* Logical link state */ |
118 | }; | 118 | }; |
119 | 119 | ||
120 | /* | 120 | /* |
121 | * Ethernet address format (for DECnet) | 121 | * Ethernet address format (for DECnet) |
122 | */ | 122 | */ |
123 | union etheraddress { | 123 | union etheraddress { |
124 | unsigned char dne_addr[6]; /* Full ethernet address */ | 124 | __u8 dne_addr[6]; /* Full ethernet address */ |
125 | struct { | 125 | struct { |
126 | unsigned char dne_hiord[4]; /* DECnet HIORD prefix */ | 126 | __u8 dne_hiord[4]; /* DECnet HIORD prefix */ |
127 | unsigned char dne_nodeaddr[2]; /* DECnet node address */ | 127 | __u8 dne_nodeaddr[2]; /* DECnet node address */ |
128 | } dne_remote; | 128 | } dne_remote; |
129 | }; | 129 | }; |
130 | 130 | ||
@@ -133,7 +133,7 @@ union etheraddress { | |||
133 | * DECnet physical socket address format | 133 | * DECnet physical socket address format |
134 | */ | 134 | */ |
135 | struct dn_addr { | 135 | struct dn_addr { |
136 | unsigned short dna_family; /* AF_DECnet */ | 136 | __le16 dna_family; /* AF_DECnet */ |
137 | union etheraddress dna_netaddr; /* DECnet ethernet address */ | 137 | union etheraddress dna_netaddr; /* DECnet ethernet address */ |
138 | }; | 138 | }; |
139 | 139 | ||
diff --git a/include/linux/dvb/audio.h b/include/linux/dvb/audio.h index 2b8797084685..0874a67c6b92 100644 --- a/include/linux/dvb/audio.h +++ b/include/linux/dvb/audio.h | |||
@@ -121,4 +121,17 @@ typedef uint16_t audio_attributes_t; | |||
121 | #define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t) | 121 | #define AUDIO_SET_ATTRIBUTES _IOW('o', 17, audio_attributes_t) |
122 | #define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t) | 122 | #define AUDIO_SET_KARAOKE _IOW('o', 18, audio_karaoke_t) |
123 | 123 | ||
124 | /** | ||
125 | * AUDIO_GET_PTS | ||
126 | * | ||
127 | * Read the 33 bit presentation time stamp as defined | ||
128 | * in ITU T-REC-H.222.0 / ISO/IEC 13818-1. | ||
129 | * | ||
130 | * The PTS should belong to the currently played | ||
131 | * frame if possible, but may also be a value close to it | ||
132 | * like the PTS of the last decoded frame or the last PTS | ||
133 | * extracted by the PES parser. | ||
134 | */ | ||
135 | #define AUDIO_GET_PTS _IOR('o', 19, __u64) | ||
136 | |||
124 | #endif /* _DVBAUDIO_H_ */ | 137 | #endif /* _DVBAUDIO_H_ */ |
diff --git a/include/linux/dvb/video.h b/include/linux/dvb/video.h index b81e58b2ebf8..faebfda397ff 100644 --- a/include/linux/dvb/video.h +++ b/include/linux/dvb/video.h | |||
@@ -200,4 +200,17 @@ typedef uint16_t video_attributes_t; | |||
200 | #define VIDEO_GET_SIZE _IOR('o', 55, video_size_t) | 200 | #define VIDEO_GET_SIZE _IOR('o', 55, video_size_t) |
201 | #define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int) | 201 | #define VIDEO_GET_FRAME_RATE _IOR('o', 56, unsigned int) |
202 | 202 | ||
203 | /** | ||
204 | * VIDEO_GET_PTS | ||
205 | * | ||
206 | * Read the 33 bit presentation time stamp as defined | ||
207 | * in ITU T-REC-H.222.0 / ISO/IEC 13818-1. | ||
208 | * | ||
209 | * The PTS should belong to the currently played | ||
210 | * frame if possible, but may also be a value close to it | ||
211 | * like the PTS of the last decoded frame or the last PTS | ||
212 | * extracted by the PES parser. | ||
213 | */ | ||
214 | #define VIDEO_GET_PTS _IOR('o', 57, __u64) | ||
215 | |||
203 | #endif /*_DVBVIDEO_H_*/ | 216 | #endif /*_DVBVIDEO_H_*/ |
diff --git a/include/linux/elevator.h b/include/linux/elevator.h index 18cf1f3e1184..ad133fcfb239 100644 --- a/include/linux/elevator.h +++ b/include/linux/elevator.h | |||
@@ -48,10 +48,17 @@ struct elevator_ops | |||
48 | 48 | ||
49 | elevator_init_fn *elevator_init_fn; | 49 | elevator_init_fn *elevator_init_fn; |
50 | elevator_exit_fn *elevator_exit_fn; | 50 | elevator_exit_fn *elevator_exit_fn; |
51 | void (*trim)(struct io_context *); | ||
51 | }; | 52 | }; |
52 | 53 | ||
53 | #define ELV_NAME_MAX (16) | 54 | #define ELV_NAME_MAX (16) |
54 | 55 | ||
56 | struct elv_fs_entry { | ||
57 | struct attribute attr; | ||
58 | ssize_t (*show)(elevator_t *, char *); | ||
59 | ssize_t (*store)(elevator_t *, const char *, size_t); | ||
60 | }; | ||
61 | |||
55 | /* | 62 | /* |
56 | * identifies an elevator type, such as AS or deadline | 63 | * identifies an elevator type, such as AS or deadline |
57 | */ | 64 | */ |
@@ -60,7 +67,7 @@ struct elevator_type | |||
60 | struct list_head list; | 67 | struct list_head list; |
61 | struct elevator_ops ops; | 68 | struct elevator_ops ops; |
62 | struct elevator_type *elevator_type; | 69 | struct elevator_type *elevator_type; |
63 | struct kobj_type *elevator_ktype; | 70 | struct elv_fs_entry *elevator_attrs; |
64 | char elevator_name[ELV_NAME_MAX]; | 71 | char elevator_name[ELV_NAME_MAX]; |
65 | struct module *elevator_owner; | 72 | struct module *elevator_owner; |
66 | }; | 73 | }; |
@@ -74,6 +81,7 @@ struct elevator_queue | |||
74 | void *elevator_data; | 81 | void *elevator_data; |
75 | struct kobject kobj; | 82 | struct kobject kobj; |
76 | struct elevator_type *elevator_type; | 83 | struct elevator_type *elevator_type; |
84 | struct mutex sysfs_lock; | ||
77 | }; | 85 | }; |
78 | 86 | ||
79 | /* | 87 | /* |
diff --git a/include/linux/fsl_devices.h b/include/linux/fsl_devices.h index a9f1cfd096ff..a3a0e078f79d 100644 --- a/include/linux/fsl_devices.h +++ b/include/linux/fsl_devices.h | |||
@@ -83,5 +83,32 @@ struct fsl_i2c_platform_data { | |||
83 | #define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001 | 83 | #define FSL_I2C_DEV_SEPARATE_DFSRR 0x00000001 |
84 | #define FSL_I2C_DEV_CLOCK_5200 0x00000002 | 84 | #define FSL_I2C_DEV_CLOCK_5200 0x00000002 |
85 | 85 | ||
86 | |||
87 | enum fsl_usb2_operating_modes { | ||
88 | FSL_USB2_MPH_HOST, | ||
89 | FSL_USB2_DR_HOST, | ||
90 | FSL_USB2_DR_DEVICE, | ||
91 | FSL_USB2_DR_OTG, | ||
92 | }; | ||
93 | |||
94 | enum fsl_usb2_phy_modes { | ||
95 | FSL_USB2_PHY_NONE, | ||
96 | FSL_USB2_PHY_ULPI, | ||
97 | FSL_USB2_PHY_UTMI, | ||
98 | FSL_USB2_PHY_UTMI_WIDE, | ||
99 | FSL_USB2_PHY_SERIAL, | ||
100 | }; | ||
101 | |||
102 | struct fsl_usb2_platform_data { | ||
103 | /* board specific information */ | ||
104 | enum fsl_usb2_operating_modes operating_mode; | ||
105 | enum fsl_usb2_phy_modes phy_mode; | ||
106 | unsigned int port_enables; | ||
107 | }; | ||
108 | |||
109 | /* Flags in fsl_usb2_mph_platform_data */ | ||
110 | #define FSL_USB2_PORT0_ENABLED 0x00000001 | ||
111 | #define FSL_USB2_PORT1_ENABLED 0x00000002 | ||
112 | |||
86 | #endif /* _FSL_DEVICE_H_ */ | 113 | #endif /* _FSL_DEVICE_H_ */ |
87 | #endif /* __KERNEL__ */ | 114 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 68d82ad6b17c..d6f1019625af 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
@@ -20,10 +20,7 @@ void unmap_hugepage_range(struct vm_area_struct *, unsigned long, unsigned long) | |||
20 | int hugetlb_prefault(struct address_space *, struct vm_area_struct *); | 20 | int hugetlb_prefault(struct address_space *, struct vm_area_struct *); |
21 | int hugetlb_report_meminfo(char *); | 21 | int hugetlb_report_meminfo(char *); |
22 | int hugetlb_report_node_meminfo(int, char *); | 22 | int hugetlb_report_node_meminfo(int, char *); |
23 | int is_hugepage_mem_enough(size_t); | ||
24 | unsigned long hugetlb_total_pages(void); | 23 | unsigned long hugetlb_total_pages(void); |
25 | struct page *alloc_huge_page(struct vm_area_struct *, unsigned long); | ||
26 | void free_huge_page(struct page *); | ||
27 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, | 24 | int hugetlb_fault(struct mm_struct *mm, struct vm_area_struct *vma, |
28 | unsigned long address, int write_access); | 25 | unsigned long address, int write_access); |
29 | 26 | ||
@@ -39,18 +36,35 @@ struct page *follow_huge_addr(struct mm_struct *mm, unsigned long address, | |||
39 | int write); | 36 | int write); |
40 | struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, | 37 | struct page *follow_huge_pmd(struct mm_struct *mm, unsigned long address, |
41 | pmd_t *pmd, int write); | 38 | pmd_t *pmd, int write); |
42 | int is_aligned_hugepage_range(unsigned long addr, unsigned long len); | ||
43 | int pmd_huge(pmd_t pmd); | 39 | int pmd_huge(pmd_t pmd); |
40 | void hugetlb_change_protection(struct vm_area_struct *vma, | ||
41 | unsigned long address, unsigned long end, pgprot_t newprot); | ||
44 | 42 | ||
45 | #ifndef ARCH_HAS_HUGEPAGE_ONLY_RANGE | 43 | #ifndef ARCH_HAS_HUGEPAGE_ONLY_RANGE |
46 | #define is_hugepage_only_range(mm, addr, len) 0 | 44 | #define is_hugepage_only_range(mm, addr, len) 0 |
47 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ | 45 | #endif |
48 | do { } while (0) | 46 | |
47 | #ifndef ARCH_HAS_HUGETLB_FREE_PGD_RANGE | ||
48 | #define hugetlb_free_pgd_range free_pgd_range | ||
49 | #else | ||
50 | void hugetlb_free_pgd_range(struct mmu_gather **tlb, unsigned long addr, | ||
51 | unsigned long end, unsigned long floor, | ||
52 | unsigned long ceiling); | ||
49 | #endif | 53 | #endif |
50 | 54 | ||
51 | #ifndef ARCH_HAS_PREPARE_HUGEPAGE_RANGE | 55 | #ifndef ARCH_HAS_PREPARE_HUGEPAGE_RANGE |
52 | #define prepare_hugepage_range(addr, len) \ | 56 | /* |
53 | is_aligned_hugepage_range(addr, len) | 57 | * If the arch doesn't supply something else, assume that hugepage |
58 | * size aligned regions are ok without further preparation. | ||
59 | */ | ||
60 | static inline int prepare_hugepage_range(unsigned long addr, unsigned long len) | ||
61 | { | ||
62 | if (len & ~HPAGE_MASK) | ||
63 | return -EINVAL; | ||
64 | if (addr & ~HPAGE_MASK) | ||
65 | return -EINVAL; | ||
66 | return 0; | ||
67 | } | ||
54 | #else | 68 | #else |
55 | int prepare_hugepage_range(unsigned long addr, unsigned long len); | 69 | int prepare_hugepage_range(unsigned long addr, unsigned long len); |
56 | #endif | 70 | #endif |
@@ -87,20 +101,17 @@ static inline unsigned long hugetlb_total_pages(void) | |||
87 | #define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; }) | 101 | #define copy_hugetlb_page_range(src, dst, vma) ({ BUG(); 0; }) |
88 | #define hugetlb_prefault(mapping, vma) ({ BUG(); 0; }) | 102 | #define hugetlb_prefault(mapping, vma) ({ BUG(); 0; }) |
89 | #define unmap_hugepage_range(vma, start, end) BUG() | 103 | #define unmap_hugepage_range(vma, start, end) BUG() |
90 | #define is_hugepage_mem_enough(size) 0 | ||
91 | #define hugetlb_report_meminfo(buf) 0 | 104 | #define hugetlb_report_meminfo(buf) 0 |
92 | #define hugetlb_report_node_meminfo(n, buf) 0 | 105 | #define hugetlb_report_node_meminfo(n, buf) 0 |
93 | #define follow_huge_pmd(mm, addr, pmd, write) NULL | 106 | #define follow_huge_pmd(mm, addr, pmd, write) NULL |
94 | #define is_aligned_hugepage_range(addr, len) 0 | ||
95 | #define prepare_hugepage_range(addr, len) (-EINVAL) | 107 | #define prepare_hugepage_range(addr, len) (-EINVAL) |
96 | #define pmd_huge(x) 0 | 108 | #define pmd_huge(x) 0 |
97 | #define is_hugepage_only_range(mm, addr, len) 0 | 109 | #define is_hugepage_only_range(mm, addr, len) 0 |
98 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) \ | 110 | #define hugetlb_free_pgd_range(tlb, addr, end, floor, ceiling) ({BUG(); 0; }) |
99 | do { } while (0) | ||
100 | #define alloc_huge_page(vma, addr) ({ NULL; }) | ||
101 | #define free_huge_page(p) ({ (void)(p); BUG(); }) | ||
102 | #define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; }) | 111 | #define hugetlb_fault(mm, vma, addr, write) ({ BUG(); 0; }) |
103 | 112 | ||
113 | #define hugetlb_change_protection(vma, address, end, newprot) | ||
114 | |||
104 | #ifndef HPAGE_MASK | 115 | #ifndef HPAGE_MASK |
105 | #define HPAGE_MASK PAGE_MASK /* Keep the compiler happy */ | 116 | #define HPAGE_MASK PAGE_MASK /* Keep the compiler happy */ |
106 | #define HPAGE_SIZE PAGE_SIZE | 117 | #define HPAGE_SIZE PAGE_SIZE |
@@ -128,6 +139,8 @@ struct hugetlbfs_sb_info { | |||
128 | 139 | ||
129 | struct hugetlbfs_inode_info { | 140 | struct hugetlbfs_inode_info { |
130 | struct shared_policy policy; | 141 | struct shared_policy policy; |
142 | /* Protected by the (global) hugetlb_lock */ | ||
143 | unsigned long prereserved_hpages; | ||
131 | struct inode vfs_inode; | 144 | struct inode vfs_inode; |
132 | }; | 145 | }; |
133 | 146 | ||
@@ -144,6 +157,10 @@ static inline struct hugetlbfs_sb_info *HUGETLBFS_SB(struct super_block *sb) | |||
144 | extern struct file_operations hugetlbfs_file_operations; | 157 | extern struct file_operations hugetlbfs_file_operations; |
145 | extern struct vm_operations_struct hugetlb_vm_ops; | 158 | extern struct vm_operations_struct hugetlb_vm_ops; |
146 | struct file *hugetlb_zero_setup(size_t); | 159 | struct file *hugetlb_zero_setup(size_t); |
160 | int hugetlb_extend_reservation(struct hugetlbfs_inode_info *info, | ||
161 | unsigned long atleast_hpages); | ||
162 | void hugetlb_truncate_reservation(struct hugetlbfs_inode_info *info, | ||
163 | unsigned long atmost_hpages); | ||
147 | int hugetlb_get_quota(struct address_space *mapping); | 164 | int hugetlb_get_quota(struct address_space *mapping); |
148 | void hugetlb_put_quota(struct address_space *mapping); | 165 | void hugetlb_put_quota(struct address_space *mapping); |
149 | 166 | ||
diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h index 0cf6c8b12caf..c771a7db9871 100644 --- a/include/linux/icmpv6.h +++ b/include/linux/icmpv6.h | |||
@@ -40,14 +40,16 @@ struct icmp6hdr { | |||
40 | struct icmpv6_nd_ra { | 40 | struct icmpv6_nd_ra { |
41 | __u8 hop_limit; | 41 | __u8 hop_limit; |
42 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 42 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
43 | __u8 reserved:6, | 43 | __u8 reserved:4, |
44 | router_pref:2, | ||
44 | other:1, | 45 | other:1, |
45 | managed:1; | 46 | managed:1; |
46 | 47 | ||
47 | #elif defined(__BIG_ENDIAN_BITFIELD) | 48 | #elif defined(__BIG_ENDIAN_BITFIELD) |
48 | __u8 managed:1, | 49 | __u8 managed:1, |
49 | other:1, | 50 | other:1, |
50 | reserved:6; | 51 | router_pref:2, |
52 | reserved:4; | ||
51 | #else | 53 | #else |
52 | #error "Please fix <asm/byteorder.h>" | 54 | #error "Please fix <asm/byteorder.h>" |
53 | #endif | 55 | #endif |
@@ -70,8 +72,13 @@ struct icmp6hdr { | |||
70 | #define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed | 72 | #define icmp6_addrconf_managed icmp6_dataun.u_nd_ra.managed |
71 | #define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other | 73 | #define icmp6_addrconf_other icmp6_dataun.u_nd_ra.other |
72 | #define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime | 74 | #define icmp6_rt_lifetime icmp6_dataun.u_nd_ra.rt_lifetime |
75 | #define icmp6_router_pref icmp6_dataun.u_nd_ra.router_pref | ||
73 | }; | 76 | }; |
74 | 77 | ||
78 | #define ICMPV6_ROUTER_PREF_LOW 0x3 | ||
79 | #define ICMPV6_ROUTER_PREF_MEDIUM 0x0 | ||
80 | #define ICMPV6_ROUTER_PREF_HIGH 0x1 | ||
81 | #define ICMPV6_ROUTER_PREF_INVALID 0x2 | ||
75 | 82 | ||
76 | #define ICMPV6_DEST_UNREACH 1 | 83 | #define ICMPV6_DEST_UNREACH 1 |
77 | #define ICMPV6_PKT_TOOBIG 2 | 84 | #define ICMPV6_PKT_TOOBIG 2 |
diff --git a/include/linux/if.h b/include/linux/if.h index ce627d9092ef..374e20ad8b0d 100644 --- a/include/linux/if.h +++ b/include/linux/if.h | |||
@@ -33,7 +33,7 @@ | |||
33 | #define IFF_LOOPBACK 0x8 /* is a loopback net */ | 33 | #define IFF_LOOPBACK 0x8 /* is a loopback net */ |
34 | #define IFF_POINTOPOINT 0x10 /* interface is has p-p link */ | 34 | #define IFF_POINTOPOINT 0x10 /* interface is has p-p link */ |
35 | #define IFF_NOTRAILERS 0x20 /* avoid use of trailers */ | 35 | #define IFF_NOTRAILERS 0x20 /* avoid use of trailers */ |
36 | #define IFF_RUNNING 0x40 /* interface running and carrier ok */ | 36 | #define IFF_RUNNING 0x40 /* interface RFC2863 OPER_UP */ |
37 | #define IFF_NOARP 0x80 /* no ARP protocol */ | 37 | #define IFF_NOARP 0x80 /* no ARP protocol */ |
38 | #define IFF_PROMISC 0x100 /* receive all packets */ | 38 | #define IFF_PROMISC 0x100 /* receive all packets */ |
39 | #define IFF_ALLMULTI 0x200 /* receive all multicast packets*/ | 39 | #define IFF_ALLMULTI 0x200 /* receive all multicast packets*/ |
@@ -43,15 +43,22 @@ | |||
43 | 43 | ||
44 | #define IFF_MULTICAST 0x1000 /* Supports multicast */ | 44 | #define IFF_MULTICAST 0x1000 /* Supports multicast */ |
45 | 45 | ||
46 | #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|IFF_MASTER|IFF_SLAVE|IFF_RUNNING) | ||
47 | |||
48 | #define IFF_PORTSEL 0x2000 /* can set media type */ | 46 | #define IFF_PORTSEL 0x2000 /* can set media type */ |
49 | #define IFF_AUTOMEDIA 0x4000 /* auto media select active */ | 47 | #define IFF_AUTOMEDIA 0x4000 /* auto media select active */ |
50 | #define IFF_DYNAMIC 0x8000 /* dialup device with changing addresses*/ | 48 | #define IFF_DYNAMIC 0x8000 /* dialup device with changing addresses*/ |
51 | 49 | ||
50 | #define IFF_LOWER_UP 0x10000 /* driver signals L1 up */ | ||
51 | #define IFF_DORMANT 0x20000 /* driver signals dormant */ | ||
52 | |||
53 | #define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST|\ | ||
54 | IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT) | ||
55 | |||
52 | /* Private (from user) interface flags (netdevice->priv_flags). */ | 56 | /* Private (from user) interface flags (netdevice->priv_flags). */ |
53 | #define IFF_802_1Q_VLAN 0x1 /* 802.1Q VLAN device. */ | 57 | #define IFF_802_1Q_VLAN 0x1 /* 802.1Q VLAN device. */ |
54 | #define IFF_EBRIDGE 0x2 /* Ethernet bridging device. */ | 58 | #define IFF_EBRIDGE 0x2 /* Ethernet bridging device. */ |
59 | #define IFF_SLAVE_INACTIVE 0x4 /* bonding slave not the curr. active */ | ||
60 | #define IFF_MASTER_8023AD 0x8 /* bonding master, 802.3ad. */ | ||
61 | #define IFF_MASTER_ALB 0x10 /* bonding master, balance-alb. */ | ||
55 | 62 | ||
56 | #define IF_GET_IFACE 0x0001 /* for querying only */ | 63 | #define IF_GET_IFACE 0x0001 /* for querying only */ |
57 | #define IF_GET_PROTO 0x0002 | 64 | #define IF_GET_PROTO 0x0002 |
@@ -80,6 +87,22 @@ | |||
80 | #define IF_PROTO_FR_ETH_PVC 0x200B | 87 | #define IF_PROTO_FR_ETH_PVC 0x200B |
81 | #define IF_PROTO_RAW 0x200C /* RAW Socket */ | 88 | #define IF_PROTO_RAW 0x200C /* RAW Socket */ |
82 | 89 | ||
90 | /* RFC 2863 operational status */ | ||
91 | enum { | ||
92 | IF_OPER_UNKNOWN, | ||
93 | IF_OPER_NOTPRESENT, | ||
94 | IF_OPER_DOWN, | ||
95 | IF_OPER_LOWERLAYERDOWN, | ||
96 | IF_OPER_TESTING, | ||
97 | IF_OPER_DORMANT, | ||
98 | IF_OPER_UP, | ||
99 | }; | ||
100 | |||
101 | /* link modes */ | ||
102 | enum { | ||
103 | IF_LINK_MODE_DEFAULT, | ||
104 | IF_LINK_MODE_DORMANT, /* limit upward transition to dormant */ | ||
105 | }; | ||
83 | 106 | ||
84 | /* | 107 | /* |
85 | * Device mapping structure. I'd just gone off and designed a | 108 | * Device mapping structure. I'd just gone off and designed a |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index 7a92c1ce1457..ab08f35cbc35 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
@@ -61,6 +61,7 @@ | |||
61 | #define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ | 61 | #define ETH_P_8021Q 0x8100 /* 802.1Q VLAN Extended Header */ |
62 | #define ETH_P_IPX 0x8137 /* IPX over DIX */ | 62 | #define ETH_P_IPX 0x8137 /* IPX over DIX */ |
63 | #define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ | 63 | #define ETH_P_IPV6 0x86DD /* IPv6 over bluebook */ |
64 | #define ETH_P_SLOW 0x8809 /* Slow Protocol. See 802.3ad 43B */ | ||
64 | #define ETH_P_WCCP 0x883E /* Web-cache coordination protocol | 65 | #define ETH_P_WCCP 0x883E /* Web-cache coordination protocol |
65 | * defined in draft-wilson-wrec-wccp-v2-00.txt */ | 66 | * defined in draft-wilson-wrec-wccp-v2-00.txt */ |
66 | #define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ | 67 | #define ETH_P_PPP_DISC 0x8863 /* PPPoE discovery messages */ |
diff --git a/include/linux/in.h b/include/linux/in.h index ba355384016a..94f557fa4636 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
@@ -72,6 +72,7 @@ struct in_addr { | |||
72 | #define IP_FREEBIND 15 | 72 | #define IP_FREEBIND 15 |
73 | #define IP_IPSEC_POLICY 16 | 73 | #define IP_IPSEC_POLICY 16 |
74 | #define IP_XFRM_POLICY 17 | 74 | #define IP_XFRM_POLICY 17 |
75 | #define IP_PASSSEC 18 | ||
75 | 76 | ||
76 | /* BSD compatibility */ | 77 | /* BSD compatibility */ |
77 | #define IP_RECVRETOPTS IP_RETOPTS | 78 | #define IP_RECVRETOPTS IP_RETOPTS |
diff --git a/include/linux/inetdevice.h b/include/linux/inetdevice.h index fd7af86151b1..92297ff24e85 100644 --- a/include/linux/inetdevice.h +++ b/include/linux/inetdevice.h | |||
@@ -25,6 +25,7 @@ struct ipv4_devconf | |||
25 | int arp_filter; | 25 | int arp_filter; |
26 | int arp_announce; | 26 | int arp_announce; |
27 | int arp_ignore; | 27 | int arp_ignore; |
28 | int arp_accept; | ||
28 | int medium_id; | 29 | int medium_id; |
29 | int no_xfrm; | 30 | int no_xfrm; |
30 | int no_policy; | 31 | int no_policy; |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 9c8f4c9ed429..1263d8cb3c18 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
@@ -145,6 +145,15 @@ struct ipv6_devconf { | |||
145 | __s32 max_desync_factor; | 145 | __s32 max_desync_factor; |
146 | #endif | 146 | #endif |
147 | __s32 max_addresses; | 147 | __s32 max_addresses; |
148 | __s32 accept_ra_defrtr; | ||
149 | __s32 accept_ra_pinfo; | ||
150 | #ifdef CONFIG_IPV6_ROUTER_PREF | ||
151 | __s32 accept_ra_rtr_pref; | ||
152 | __s32 rtr_probe_interval; | ||
153 | #ifdef CONFIG_IPV6_ROUTE_INFO | ||
154 | __s32 accept_ra_rt_info_max_plen; | ||
155 | #endif | ||
156 | #endif | ||
148 | void *sysctl; | 157 | void *sysctl; |
149 | }; | 158 | }; |
150 | 159 | ||
@@ -167,6 +176,11 @@ enum { | |||
167 | DEVCONF_MAX_DESYNC_FACTOR, | 176 | DEVCONF_MAX_DESYNC_FACTOR, |
168 | DEVCONF_MAX_ADDRESSES, | 177 | DEVCONF_MAX_ADDRESSES, |
169 | DEVCONF_FORCE_MLD_VERSION, | 178 | DEVCONF_FORCE_MLD_VERSION, |
179 | DEVCONF_ACCEPT_RA_DEFRTR, | ||
180 | DEVCONF_ACCEPT_RA_PINFO, | ||
181 | DEVCONF_ACCEPT_RA_RTR_PREF, | ||
182 | DEVCONF_RTR_PROBE_INTERVAL, | ||
183 | DEVCONF_ACCEPT_RA_RT_INFO_MAX_PLEN, | ||
170 | DEVCONF_MAX | 184 | DEVCONF_MAX |
171 | }; | 185 | }; |
172 | 186 | ||
diff --git a/include/linux/ipv6_route.h b/include/linux/ipv6_route.h index d7c41d1d706a..b323ff577967 100644 --- a/include/linux/ipv6_route.h +++ b/include/linux/ipv6_route.h | |||
@@ -23,12 +23,22 @@ | |||
23 | #define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ | 23 | #define RTF_NONEXTHOP 0x00200000 /* route with no nexthop */ |
24 | #define RTF_EXPIRES 0x00400000 | 24 | #define RTF_EXPIRES 0x00400000 |
25 | 25 | ||
26 | #define RTF_ROUTEINFO 0x00800000 /* route information - RA */ | ||
27 | |||
26 | #define RTF_CACHE 0x01000000 /* cache entry */ | 28 | #define RTF_CACHE 0x01000000 /* cache entry */ |
27 | #define RTF_FLOW 0x02000000 /* flow significant route */ | 29 | #define RTF_FLOW 0x02000000 /* flow significant route */ |
28 | #define RTF_POLICY 0x04000000 /* policy route */ | 30 | #define RTF_POLICY 0x04000000 /* policy route */ |
29 | 31 | ||
32 | #define RTF_PREF(pref) ((pref) << 27) | ||
33 | #define RTF_PREF_MASK 0x18000000 | ||
34 | |||
30 | #define RTF_LOCAL 0x80000000 | 35 | #define RTF_LOCAL 0x80000000 |
31 | 36 | ||
37 | #ifdef __KERNEL__ | ||
38 | #define IPV6_EXTRACT_PREF(flag) (((flag) & RTF_PREF_MASK) >> 27) | ||
39 | #define IPV6_DECODE_PREF(pref) ((pref) ^ 2) /* 1:low,2:med,3:high */ | ||
40 | #endif | ||
41 | |||
32 | struct in6_rtmsg { | 42 | struct in6_rtmsg { |
33 | struct in6_addr rtmsg_dst; | 43 | struct in6_addr rtmsg_dst; |
34 | struct in6_addr rtmsg_src; | 44 | struct in6_addr rtmsg_src; |
diff --git a/include/linux/irda.h b/include/linux/irda.h index 95dee174cdc5..09d8f105a5a8 100644 --- a/include/linux/irda.h +++ b/include/linux/irda.h | |||
@@ -76,6 +76,7 @@ typedef enum { | |||
76 | IRDA_MCP2120_DONGLE = 9, | 76 | IRDA_MCP2120_DONGLE = 9, |
77 | IRDA_ACT200L_DONGLE = 10, | 77 | IRDA_ACT200L_DONGLE = 10, |
78 | IRDA_MA600_DONGLE = 11, | 78 | IRDA_MA600_DONGLE = 11, |
79 | IRDA_TOIM3232_DONGLE = 12, | ||
79 | } IRDA_DONGLE; | 80 | } IRDA_DONGLE; |
80 | 81 | ||
81 | /* Protocol types to be used for SOCK_DGRAM */ | 82 | /* Protocol types to be used for SOCK_DGRAM */ |
diff --git a/include/linux/kobj_map.h b/include/linux/kobj_map.h index cbe7d8008042..bafe178a381f 100644 --- a/include/linux/kobj_map.h +++ b/include/linux/kobj_map.h | |||
@@ -1,6 +1,6 @@ | |||
1 | #ifdef __KERNEL__ | 1 | #ifdef __KERNEL__ |
2 | 2 | ||
3 | #include <asm/semaphore.h> | 3 | #include <linux/mutex.h> |
4 | 4 | ||
5 | typedef struct kobject *kobj_probe_t(dev_t, int *, void *); | 5 | typedef struct kobject *kobj_probe_t(dev_t, int *, void *); |
6 | struct kobj_map; | 6 | struct kobj_map; |
@@ -9,6 +9,6 @@ int kobj_map(struct kobj_map *, dev_t, unsigned long, struct module *, | |||
9 | kobj_probe_t *, int (*)(dev_t, void *), void *); | 9 | kobj_probe_t *, int (*)(dev_t, void *), void *); |
10 | void kobj_unmap(struct kobj_map *, dev_t, unsigned long); | 10 | void kobj_unmap(struct kobj_map *, dev_t, unsigned long); |
11 | struct kobject *kobj_lookup(struct kobj_map *, dev_t, int *); | 11 | struct kobject *kobj_lookup(struct kobj_map *, dev_t, int *); |
12 | struct kobj_map *kobj_map_init(kobj_probe_t *, struct semaphore *); | 12 | struct kobj_map *kobj_map_init(kobj_probe_t *, struct mutex *); |
13 | 13 | ||
14 | #endif | 14 | #endif |
diff --git a/include/linux/kobject.h b/include/linux/kobject.h index c374b5fa8d3b..4cb1214ec290 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h | |||
@@ -80,6 +80,8 @@ extern void kobject_unregister(struct kobject *); | |||
80 | extern struct kobject * kobject_get(struct kobject *); | 80 | extern struct kobject * kobject_get(struct kobject *); |
81 | extern void kobject_put(struct kobject *); | 81 | extern void kobject_put(struct kobject *); |
82 | 82 | ||
83 | extern struct kobject *kobject_add_dir(struct kobject *, const char *); | ||
84 | |||
83 | extern char * kobject_get_path(struct kobject *, gfp_t); | 85 | extern char * kobject_get_path(struct kobject *, gfp_t); |
84 | 86 | ||
85 | struct kobj_type { | 87 | struct kobj_type { |
@@ -255,7 +257,7 @@ struct subsys_attribute { | |||
255 | extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); | 257 | extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); |
256 | extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); | 258 | extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); |
257 | 259 | ||
258 | #if defined(CONFIG_HOTPLUG) & defined(CONFIG_NET) | 260 | #if defined(CONFIG_HOTPLUG) && defined(CONFIG_NET) |
259 | void kobject_uevent(struct kobject *kobj, enum kobject_action action); | 261 | void kobject_uevent(struct kobject *kobj, enum kobject_action action); |
260 | 262 | ||
261 | int add_uevent_var(char **envp, int num_envp, int *cur_index, | 263 | int add_uevent_var(char **envp, int num_envp, int *cur_index, |
diff --git a/include/linux/libata.h b/include/linux/libata.h index d051a823758b..b3d4c906e242 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
@@ -507,13 +507,13 @@ extern int ata_pci_init_one (struct pci_dev *pdev, struct ata_port_info **port_i | |||
507 | extern void ata_pci_remove_one (struct pci_dev *pdev); | 507 | extern void ata_pci_remove_one (struct pci_dev *pdev); |
508 | extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state); | 508 | extern int ata_pci_device_suspend(struct pci_dev *pdev, pm_message_t state); |
509 | extern int ata_pci_device_resume(struct pci_dev *pdev); | 509 | extern int ata_pci_device_resume(struct pci_dev *pdev); |
510 | extern int ata_pci_clear_simplex(struct pci_dev *pdev); | ||
510 | #endif /* CONFIG_PCI */ | 511 | #endif /* CONFIG_PCI */ |
511 | extern int ata_device_add(const struct ata_probe_ent *ent); | 512 | extern int ata_device_add(const struct ata_probe_ent *ent); |
512 | extern void ata_host_set_remove(struct ata_host_set *host_set); | 513 | extern void ata_host_set_remove(struct ata_host_set *host_set); |
513 | extern int ata_scsi_detect(struct scsi_host_template *sht); | 514 | extern int ata_scsi_detect(struct scsi_host_template *sht); |
514 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); | 515 | extern int ata_scsi_ioctl(struct scsi_device *dev, int cmd, void __user *arg); |
515 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); | 516 | extern int ata_scsi_queuecmd(struct scsi_cmnd *cmd, void (*done)(struct scsi_cmnd *)); |
516 | extern enum scsi_eh_timer_return ata_scsi_timed_out(struct scsi_cmnd *cmd); | ||
517 | extern int ata_scsi_error(struct Scsi_Host *host); | 517 | extern int ata_scsi_error(struct Scsi_Host *host); |
518 | extern void ata_eh_qc_complete(struct ata_queued_cmd *qc); | 518 | extern void ata_eh_qc_complete(struct ata_queued_cmd *qc); |
519 | extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); | 519 | extern void ata_eh_qc_retry(struct ata_queued_cmd *qc); |
@@ -548,6 +548,7 @@ extern void ata_port_stop (struct ata_port *ap); | |||
548 | extern void ata_host_stop (struct ata_host_set *host_set); | 548 | extern void ata_host_stop (struct ata_host_set *host_set); |
549 | extern irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs); | 549 | extern irqreturn_t ata_interrupt (int irq, void *dev_instance, struct pt_regs *regs); |
550 | extern void ata_qc_prep(struct ata_queued_cmd *qc); | 550 | extern void ata_qc_prep(struct ata_queued_cmd *qc); |
551 | extern void ata_noop_qc_prep(struct ata_queued_cmd *qc); | ||
551 | extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc); | 552 | extern unsigned int ata_qc_issue_prot(struct ata_queued_cmd *qc); |
552 | extern void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, | 553 | extern void ata_sg_init_one(struct ata_queued_cmd *qc, void *buf, |
553 | unsigned int buflen); | 554 | unsigned int buflen); |
@@ -614,7 +615,7 @@ extern void ata_pci_host_stop (struct ata_host_set *host_set); | |||
614 | extern struct ata_probe_ent * | 615 | extern struct ata_probe_ent * |
615 | ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int portmask); | 616 | ata_pci_init_native_mode(struct pci_dev *pdev, struct ata_port_info **port, int portmask); |
616 | extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); | 617 | extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); |
617 | 618 | extern unsigned long ata_pci_default_filter(const struct ata_port *, struct ata_device *, unsigned long); | |
618 | #endif /* CONFIG_PCI */ | 619 | #endif /* CONFIG_PCI */ |
619 | 620 | ||
620 | 621 | ||
diff --git a/include/linux/list.h b/include/linux/list.h index 47208bd99f9e..67258b47e9ca 100644 --- a/include/linux/list.h +++ b/include/linux/list.h | |||
@@ -411,6 +411,17 @@ static inline void list_splice_init(struct list_head *list, | |||
411 | pos = list_entry(pos->member.next, typeof(*pos), member)) | 411 | pos = list_entry(pos->member.next, typeof(*pos), member)) |
412 | 412 | ||
413 | /** | 413 | /** |
414 | * list_for_each_entry_from - iterate over list of given type | ||
415 | * continuing from existing point | ||
416 | * @pos: the type * to use as a loop counter. | ||
417 | * @head: the head for your list. | ||
418 | * @member: the name of the list_struct within the struct. | ||
419 | */ | ||
420 | #define list_for_each_entry_from(pos, head, member) \ | ||
421 | for (; prefetch(pos->member.next), &pos->member != (head); \ | ||
422 | pos = list_entry(pos->member.next, typeof(*pos), member)) | ||
423 | |||
424 | /** | ||
414 | * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry | 425 | * list_for_each_entry_safe - iterate over list of given type safe against removal of list entry |
415 | * @pos: the type * to use as a loop counter. | 426 | * @pos: the type * to use as a loop counter. |
416 | * @n: another type * to use as temporary storage | 427 | * @n: another type * to use as temporary storage |
@@ -438,6 +449,19 @@ static inline void list_splice_init(struct list_head *list, | |||
438 | pos = n, n = list_entry(n->member.next, typeof(*n), member)) | 449 | pos = n, n = list_entry(n->member.next, typeof(*n), member)) |
439 | 450 | ||
440 | /** | 451 | /** |
452 | * list_for_each_entry_safe_from - iterate over list of given type | ||
453 | * from existing point safe against removal of list entry | ||
454 | * @pos: the type * to use as a loop counter. | ||
455 | * @n: another type * to use as temporary storage | ||
456 | * @head: the head for your list. | ||
457 | * @member: the name of the list_struct within the struct. | ||
458 | */ | ||
459 | #define list_for_each_entry_safe_from(pos, n, head, member) \ | ||
460 | for (n = list_entry(pos->member.next, typeof(*pos), member); \ | ||
461 | &pos->member != (head); \ | ||
462 | pos = n, n = list_entry(n->member.next, typeof(*n), member)) | ||
463 | |||
464 | /** | ||
441 | * list_for_each_entry_safe_reverse - iterate backwards over list of given type safe against | 465 | * list_for_each_entry_safe_reverse - iterate backwards over list of given type safe against |
442 | * removal of list entry | 466 | * removal of list entry |
443 | * @pos: the type * to use as a loop counter. | 467 | * @pos: the type * to use as a loop counter. |
diff --git a/include/linux/migrate.h b/include/linux/migrate.h new file mode 100644 index 000000000000..7d09962c3c0b --- /dev/null +++ b/include/linux/migrate.h | |||
@@ -0,0 +1,36 @@ | |||
1 | #ifndef _LINUX_MIGRATE_H | ||
2 | #define _LINUX_MIGRATE_H | ||
3 | |||
4 | #include <linux/config.h> | ||
5 | #include <linux/mm.h> | ||
6 | |||
7 | #ifdef CONFIG_MIGRATION | ||
8 | extern int isolate_lru_page(struct page *p, struct list_head *pagelist); | ||
9 | extern int putback_lru_pages(struct list_head *l); | ||
10 | extern int migrate_page(struct page *, struct page *); | ||
11 | extern void migrate_page_copy(struct page *, struct page *); | ||
12 | extern int migrate_page_remove_references(struct page *, struct page *, int); | ||
13 | extern int migrate_pages(struct list_head *l, struct list_head *t, | ||
14 | struct list_head *moved, struct list_head *failed); | ||
15 | int migrate_pages_to(struct list_head *pagelist, | ||
16 | struct vm_area_struct *vma, int dest); | ||
17 | extern int fail_migrate_page(struct page *, struct page *); | ||
18 | |||
19 | extern int migrate_prep(void); | ||
20 | |||
21 | #else | ||
22 | |||
23 | static inline int isolate_lru_page(struct page *p, struct list_head *list) | ||
24 | { return -ENOSYS; } | ||
25 | static inline int putback_lru_pages(struct list_head *l) { return 0; } | ||
26 | static inline int migrate_pages(struct list_head *l, struct list_head *t, | ||
27 | struct list_head *moved, struct list_head *failed) { return -ENOSYS; } | ||
28 | |||
29 | static inline int migrate_prep(void) { return -ENOSYS; } | ||
30 | |||
31 | /* Possible settings for the migrate_page() method in address_operations */ | ||
32 | #define migrate_page NULL | ||
33 | #define fail_migrate_page NULL | ||
34 | |||
35 | #endif /* CONFIG_MIGRATION */ | ||
36 | #endif /* _LINUX_MIGRATE_H */ | ||
diff --git a/include/linux/mm.h b/include/linux/mm.h index 498ff8778fb6..6aa016f1d3ae 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
@@ -286,43 +286,34 @@ struct page { | |||
286 | * | 286 | * |
287 | * Also, many kernel routines increase the page count before a critical | 287 | * Also, many kernel routines increase the page count before a critical |
288 | * routine so they can be sure the page doesn't go away from under them. | 288 | * routine so they can be sure the page doesn't go away from under them. |
289 | * | ||
290 | * Since 2.6.6 (approx), a free page has ->_count = -1. This is so that we | ||
291 | * can use atomic_add_negative(-1, page->_count) to detect when the page | ||
292 | * becomes free and so that we can also use atomic_inc_and_test to atomically | ||
293 | * detect when we just tried to grab a ref on a page which some other CPU has | ||
294 | * already deemed to be freeable. | ||
295 | * | ||
296 | * NO code should make assumptions about this internal detail! Use the provided | ||
297 | * macros which retain the old rules: page_count(page) == 0 is a free page. | ||
298 | */ | 289 | */ |
299 | 290 | ||
300 | /* | 291 | /* |
301 | * Drop a ref, return true if the logical refcount fell to zero (the page has | 292 | * Drop a ref, return true if the logical refcount fell to zero (the page has |
302 | * no users) | 293 | * no users) |
303 | */ | 294 | */ |
304 | #define put_page_testzero(p) \ | 295 | static inline int put_page_testzero(struct page *page) |
305 | ({ \ | 296 | { |
306 | BUG_ON(atomic_read(&(p)->_count) == -1);\ | 297 | BUG_ON(atomic_read(&page->_count) == 0); |
307 | atomic_add_negative(-1, &(p)->_count); \ | 298 | return atomic_dec_and_test(&page->_count); |
308 | }) | 299 | } |
309 | 300 | ||
310 | /* | 301 | /* |
311 | * Grab a ref, return true if the page previously had a logical refcount of | 302 | * Try to grab a ref unless the page has a refcount of zero, return false if |
312 | * zero. ie: returns true if we just grabbed an already-deemed-to-be-free page | 303 | * that is the case. |
313 | */ | 304 | */ |
314 | #define get_page_testone(p) atomic_inc_and_test(&(p)->_count) | 305 | static inline int get_page_unless_zero(struct page *page) |
315 | 306 | { | |
316 | #define set_page_count(p,v) atomic_set(&(p)->_count, (v) - 1) | 307 | return atomic_inc_not_zero(&page->_count); |
317 | #define __put_page(p) atomic_dec(&(p)->_count) | 308 | } |
318 | 309 | ||
319 | extern void FASTCALL(__page_cache_release(struct page *)); | 310 | extern void FASTCALL(__page_cache_release(struct page *)); |
320 | 311 | ||
321 | static inline int page_count(struct page *page) | 312 | static inline int page_count(struct page *page) |
322 | { | 313 | { |
323 | if (PageCompound(page)) | 314 | if (unlikely(PageCompound(page))) |
324 | page = (struct page *)page_private(page); | 315 | page = (struct page *)page_private(page); |
325 | return atomic_read(&page->_count) + 1; | 316 | return atomic_read(&page->_count); |
326 | } | 317 | } |
327 | 318 | ||
328 | static inline void get_page(struct page *page) | 319 | static inline void get_page(struct page *page) |
@@ -332,8 +323,19 @@ static inline void get_page(struct page *page) | |||
332 | atomic_inc(&page->_count); | 323 | atomic_inc(&page->_count); |
333 | } | 324 | } |
334 | 325 | ||
326 | /* | ||
327 | * Setup the page count before being freed into the page allocator for | ||
328 | * the first time (boot or memory hotplug) | ||
329 | */ | ||
330 | static inline void init_page_count(struct page *page) | ||
331 | { | ||
332 | atomic_set(&page->_count, 1); | ||
333 | } | ||
334 | |||
335 | void put_page(struct page *page); | 335 | void put_page(struct page *page); |
336 | 336 | ||
337 | void split_page(struct page *page, unsigned int order); | ||
338 | |||
337 | /* | 339 | /* |
338 | * Multiple processes may "see" the same page. E.g. for untouched | 340 | * Multiple processes may "see" the same page. E.g. for untouched |
339 | * mappings of /dev/null, all processes see the same page full of | 341 | * mappings of /dev/null, all processes see the same page full of |
@@ -1046,7 +1048,7 @@ int in_gate_area_no_task(unsigned long addr); | |||
1046 | 1048 | ||
1047 | int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *, | 1049 | int drop_caches_sysctl_handler(struct ctl_table *, int, struct file *, |
1048 | void __user *, size_t *, loff_t *); | 1050 | void __user *, size_t *, loff_t *); |
1049 | int shrink_slab(unsigned long scanned, gfp_t gfp_mask, | 1051 | unsigned long shrink_slab(unsigned long scanned, gfp_t gfp_mask, |
1050 | unsigned long lru_pages); | 1052 | unsigned long lru_pages); |
1051 | void drop_pagecache(void); | 1053 | void drop_pagecache(void); |
1052 | void drop_slab(void); | 1054 | void drop_slab(void); |
diff --git a/include/linux/mm_inline.h b/include/linux/mm_inline.h index 8ac854f7f190..3b6723dfaff3 100644 --- a/include/linux/mm_inline.h +++ b/include/linux/mm_inline.h | |||
@@ -32,7 +32,7 @@ del_page_from_lru(struct zone *zone, struct page *page) | |||
32 | { | 32 | { |
33 | list_del(&page->lru); | 33 | list_del(&page->lru); |
34 | if (PageActive(page)) { | 34 | if (PageActive(page)) { |
35 | ClearPageActive(page); | 35 | __ClearPageActive(page); |
36 | zone->nr_active--; | 36 | zone->nr_active--; |
37 | } else { | 37 | } else { |
38 | zone->nr_inactive--; | 38 | zone->nr_inactive--; |
diff --git a/include/linux/module.h b/include/linux/module.h index 84d75f3a8aca..70bd843c71cb 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
@@ -198,6 +198,9 @@ void *__symbol_get_gpl(const char *symbol); | |||
198 | #define EXPORT_SYMBOL_GPL(sym) \ | 198 | #define EXPORT_SYMBOL_GPL(sym) \ |
199 | __EXPORT_SYMBOL(sym, "_gpl") | 199 | __EXPORT_SYMBOL(sym, "_gpl") |
200 | 200 | ||
201 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) \ | ||
202 | __EXPORT_SYMBOL(sym, "_gpl_future") | ||
203 | |||
201 | #endif | 204 | #endif |
202 | 205 | ||
203 | struct module_ref | 206 | struct module_ref |
@@ -242,6 +245,7 @@ struct module | |||
242 | /* Sysfs stuff. */ | 245 | /* Sysfs stuff. */ |
243 | struct module_kobject mkobj; | 246 | struct module_kobject mkobj; |
244 | struct module_param_attrs *param_attrs; | 247 | struct module_param_attrs *param_attrs; |
248 | struct module_attribute *modinfo_attrs; | ||
245 | const char *version; | 249 | const char *version; |
246 | const char *srcversion; | 250 | const char *srcversion; |
247 | 251 | ||
@@ -255,6 +259,11 @@ struct module | |||
255 | unsigned int num_gpl_syms; | 259 | unsigned int num_gpl_syms; |
256 | const unsigned long *gpl_crcs; | 260 | const unsigned long *gpl_crcs; |
257 | 261 | ||
262 | /* symbols that will be GPL-only in the near future. */ | ||
263 | const struct kernel_symbol *gpl_future_syms; | ||
264 | unsigned int num_gpl_future_syms; | ||
265 | const unsigned long *gpl_future_crcs; | ||
266 | |||
258 | /* Exception table */ | 267 | /* Exception table */ |
259 | unsigned int num_exentries; | 268 | unsigned int num_exentries; |
260 | const struct exception_table_entry *extable; | 269 | const struct exception_table_entry *extable; |
@@ -441,6 +450,7 @@ void module_remove_driver(struct device_driver *); | |||
441 | #else /* !CONFIG_MODULES... */ | 450 | #else /* !CONFIG_MODULES... */ |
442 | #define EXPORT_SYMBOL(sym) | 451 | #define EXPORT_SYMBOL(sym) |
443 | #define EXPORT_SYMBOL_GPL(sym) | 452 | #define EXPORT_SYMBOL_GPL(sym) |
453 | #define EXPORT_SYMBOL_GPL_FUTURE(sym) | ||
444 | 454 | ||
445 | /* Given an address, look for it in the exception tables. */ | 455 | /* Given an address, look for it in the exception tables. */ |
446 | static inline const struct exception_table_entry * | 456 | static inline const struct exception_table_entry * |
diff --git a/include/linux/msdos_fs.h b/include/linux/msdos_fs.h index e933e2a355ad..8bcd9450d926 100644 --- a/include/linux/msdos_fs.h +++ b/include/linux/msdos_fs.h | |||
@@ -199,7 +199,7 @@ struct fat_mount_options { | |||
199 | sys_immutable:1, /* set = system files are immutable */ | 199 | sys_immutable:1, /* set = system files are immutable */ |
200 | dotsOK:1, /* set = hidden and system files are named '.filename' */ | 200 | dotsOK:1, /* set = hidden and system files are named '.filename' */ |
201 | isvfat:1, /* 0=no vfat long filename support, 1=vfat support */ | 201 | isvfat:1, /* 0=no vfat long filename support, 1=vfat support */ |
202 | utf8:1, /* Use of UTF8 character set (Default) */ | 202 | utf8:1, /* Use of UTF-8 character set (Default) */ |
203 | unicode_xlate:1, /* create escape sequences for unhandled Unicode */ | 203 | unicode_xlate:1, /* create escape sequences for unhandled Unicode */ |
204 | numtail:1, /* Does first alias have a numeric '~1' type tail? */ | 204 | numtail:1, /* Does first alias have a numeric '~1' type tail? */ |
205 | atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */ | 205 | atari:1, /* Use Atari GEMDOS variation of MS-DOS fs */ |
diff --git a/include/linux/mv643xx.h b/include/linux/mv643xx.h index 0b08cd692201..955d3069d727 100644 --- a/include/linux/mv643xx.h +++ b/include/linux/mv643xx.h | |||
@@ -1214,6 +1214,7 @@ struct mv64xxx_i2c_pdata { | |||
1214 | #define MV643XX_ETH_FORCE_BP_MODE_NO_JAM 0 | 1214 | #define MV643XX_ETH_FORCE_BP_MODE_NO_JAM 0 |
1215 | #define MV643XX_ETH_FORCE_BP_MODE_JAM_TX (1<<7) | 1215 | #define MV643XX_ETH_FORCE_BP_MODE_JAM_TX (1<<7) |
1216 | #define MV643XX_ETH_FORCE_BP_MODE_JAM_TX_ON_RX_ERR (1<<8) | 1216 | #define MV643XX_ETH_FORCE_BP_MODE_JAM_TX_ON_RX_ERR (1<<8) |
1217 | #define MV643XX_ETH_SERIAL_PORT_CONTROL_RESERVED (1<<9) | ||
1217 | #define MV643XX_ETH_FORCE_LINK_FAIL 0 | 1218 | #define MV643XX_ETH_FORCE_LINK_FAIL 0 |
1218 | #define MV643XX_ETH_DO_NOT_FORCE_LINK_FAIL (1<<10) | 1219 | #define MV643XX_ETH_DO_NOT_FORCE_LINK_FAIL (1<<10) |
1219 | #define MV643XX_ETH_RETRANSMIT_16_ATTEMPTS 0 | 1220 | #define MV643XX_ETH_RETRANSMIT_16_ATTEMPTS 0 |
@@ -1243,6 +1244,8 @@ struct mv64xxx_i2c_pdata { | |||
1243 | #define MV643XX_ETH_SET_MII_SPEED_TO_10 0 | 1244 | #define MV643XX_ETH_SET_MII_SPEED_TO_10 0 |
1244 | #define MV643XX_ETH_SET_MII_SPEED_TO_100 (1<<24) | 1245 | #define MV643XX_ETH_SET_MII_SPEED_TO_100 (1<<24) |
1245 | 1246 | ||
1247 | #define MV643XX_ETH_MAX_RX_PACKET_MASK (0x7<<17) | ||
1248 | |||
1246 | #define MV643XX_ETH_PORT_SERIAL_CONTROL_DEFAULT_VALUE \ | 1249 | #define MV643XX_ETH_PORT_SERIAL_CONTROL_DEFAULT_VALUE \ |
1247 | MV643XX_ETH_DO_NOT_FORCE_LINK_PASS | \ | 1250 | MV643XX_ETH_DO_NOT_FORCE_LINK_PASS | \ |
1248 | MV643XX_ETH_ENABLE_AUTO_NEG_FOR_DUPLX | \ | 1251 | MV643XX_ETH_ENABLE_AUTO_NEG_FOR_DUPLX | \ |
@@ -1285,23 +1288,15 @@ struct mv64xxx_i2c_pdata { | |||
1285 | #define MV643XX_ETH_NAME "mv643xx_eth" | 1288 | #define MV643XX_ETH_NAME "mv643xx_eth" |
1286 | 1289 | ||
1287 | struct mv643xx_eth_platform_data { | 1290 | struct mv643xx_eth_platform_data { |
1288 | /* | ||
1289 | * Non-values for mac_addr, phy_addr, port_config, etc. | ||
1290 | * override the default value. Setting the corresponding | ||
1291 | * force_* field, causes the default value to be overridden | ||
1292 | * even when zero. | ||
1293 | */ | ||
1294 | unsigned int force_phy_addr:1; | ||
1295 | unsigned int force_port_config:1; | ||
1296 | unsigned int force_port_config_extend:1; | ||
1297 | unsigned int force_port_sdma_config:1; | ||
1298 | unsigned int force_port_serial_control:1; | ||
1299 | int phy_addr; | ||
1300 | char *mac_addr; /* pointer to mac address */ | 1291 | char *mac_addr; /* pointer to mac address */ |
1301 | u32 port_config; | 1292 | u16 force_phy_addr; /* force override if phy_addr == 0 */ |
1302 | u32 port_config_extend; | 1293 | u16 phy_addr; |
1303 | u32 port_sdma_config; | 1294 | |
1304 | u32 port_serial_control; | 1295 | /* If speed is 0, then speed and duplex are autonegotiated. */ |
1296 | int speed; /* 0, SPEED_10, SPEED_100, SPEED_1000 */ | ||
1297 | int duplex; /* DUPLEX_HALF or DUPLEX_FULL */ | ||
1298 | |||
1299 | /* non-zero values of the following fields override defaults */ | ||
1305 | u32 tx_queue_size; | 1300 | u32 tx_queue_size; |
1306 | u32 rx_queue_size; | 1301 | u32 rx_queue_size; |
1307 | u32 tx_sram_addr; | 1302 | u32 tx_sram_addr; |
diff --git a/include/linux/net.h b/include/linux/net.h index 28195a2d8ff0..84a490e5f0a1 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
@@ -143,12 +143,18 @@ struct proto_ops { | |||
143 | struct poll_table_struct *wait); | 143 | struct poll_table_struct *wait); |
144 | int (*ioctl) (struct socket *sock, unsigned int cmd, | 144 | int (*ioctl) (struct socket *sock, unsigned int cmd, |
145 | unsigned long arg); | 145 | unsigned long arg); |
146 | int (*compat_ioctl) (struct socket *sock, unsigned int cmd, | ||
147 | unsigned long arg); | ||
146 | int (*listen) (struct socket *sock, int len); | 148 | int (*listen) (struct socket *sock, int len); |
147 | int (*shutdown) (struct socket *sock, int flags); | 149 | int (*shutdown) (struct socket *sock, int flags); |
148 | int (*setsockopt)(struct socket *sock, int level, | 150 | int (*setsockopt)(struct socket *sock, int level, |
149 | int optname, char __user *optval, int optlen); | 151 | int optname, char __user *optval, int optlen); |
150 | int (*getsockopt)(struct socket *sock, int level, | 152 | int (*getsockopt)(struct socket *sock, int level, |
151 | int optname, char __user *optval, int __user *optlen); | 153 | int optname, char __user *optval, int __user *optlen); |
154 | int (*compat_setsockopt)(struct socket *sock, int level, | ||
155 | int optname, char __user *optval, int optlen); | ||
156 | int (*compat_getsockopt)(struct socket *sock, int level, | ||
157 | int optname, char __user *optval, int __user *optlen); | ||
152 | int (*sendmsg) (struct kiocb *iocb, struct socket *sock, | 158 | int (*sendmsg) (struct kiocb *iocb, struct socket *sock, |
153 | struct msghdr *m, size_t total_len); | 159 | struct msghdr *m, size_t total_len); |
154 | int (*recvmsg) (struct kiocb *iocb, struct socket *sock, | 160 | int (*recvmsg) (struct kiocb *iocb, struct socket *sock, |
@@ -247,6 +253,8 @@ SOCKCALL_UWRAP(name, poll, (struct file *file, struct socket *sock, struct poll_ | |||
247 | (file, sock, wait)) \ | 253 | (file, sock, wait)) \ |
248 | SOCKCALL_WRAP(name, ioctl, (struct socket *sock, unsigned int cmd, \ | 254 | SOCKCALL_WRAP(name, ioctl, (struct socket *sock, unsigned int cmd, \ |
249 | unsigned long arg), (sock, cmd, arg)) \ | 255 | unsigned long arg), (sock, cmd, arg)) \ |
256 | SOCKCALL_WRAP(name, compat_ioctl, (struct socket *sock, unsigned int cmd, \ | ||
257 | unsigned long arg), (sock, cmd, arg)) \ | ||
250 | SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \ | 258 | SOCKCALL_WRAP(name, listen, (struct socket *sock, int len), (sock, len)) \ |
251 | SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \ | 259 | SOCKCALL_WRAP(name, shutdown, (struct socket *sock, int flags), (sock, flags)) \ |
252 | SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \ | 260 | SOCKCALL_WRAP(name, setsockopt, (struct socket *sock, int level, int optname, \ |
@@ -271,6 +279,7 @@ static const struct proto_ops name##_ops = { \ | |||
271 | .getname = __lock_##name##_getname, \ | 279 | .getname = __lock_##name##_getname, \ |
272 | .poll = __lock_##name##_poll, \ | 280 | .poll = __lock_##name##_poll, \ |
273 | .ioctl = __lock_##name##_ioctl, \ | 281 | .ioctl = __lock_##name##_ioctl, \ |
282 | .compat_ioctl = __lock_##name##_compat_ioctl, \ | ||
274 | .listen = __lock_##name##_listen, \ | 283 | .listen = __lock_##name##_listen, \ |
275 | .shutdown = __lock_##name##_shutdown, \ | 284 | .shutdown = __lock_##name##_shutdown, \ |
276 | .setsockopt = __lock_##name##_setsockopt, \ | 285 | .setsockopt = __lock_##name##_setsockopt, \ |
@@ -279,6 +288,7 @@ static const struct proto_ops name##_ops = { \ | |||
279 | .recvmsg = __lock_##name##_recvmsg, \ | 288 | .recvmsg = __lock_##name##_recvmsg, \ |
280 | .mmap = __lock_##name##_mmap, \ | 289 | .mmap = __lock_##name##_mmap, \ |
281 | }; | 290 | }; |
291 | |||
282 | #endif | 292 | #endif |
283 | 293 | ||
284 | #define MODULE_ALIAS_NETPROTO(proto) \ | 294 | #define MODULE_ALIAS_NETPROTO(proto) \ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 7fda03d338d1..950dc55e5192 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -230,7 +230,8 @@ enum netdev_state_t | |||
230 | __LINK_STATE_SCHED, | 230 | __LINK_STATE_SCHED, |
231 | __LINK_STATE_NOCARRIER, | 231 | __LINK_STATE_NOCARRIER, |
232 | __LINK_STATE_RX_SCHED, | 232 | __LINK_STATE_RX_SCHED, |
233 | __LINK_STATE_LINKWATCH_PENDING | 233 | __LINK_STATE_LINKWATCH_PENDING, |
234 | __LINK_STATE_DORMANT, | ||
234 | }; | 235 | }; |
235 | 236 | ||
236 | 237 | ||
@@ -335,11 +336,14 @@ struct net_device | |||
335 | */ | 336 | */ |
336 | 337 | ||
337 | 338 | ||
338 | unsigned short flags; /* interface flags (a la BSD) */ | 339 | unsigned int flags; /* interface flags (a la BSD) */ |
339 | unsigned short gflags; | 340 | unsigned short gflags; |
340 | unsigned short priv_flags; /* Like 'flags' but invisible to userspace. */ | 341 | unsigned short priv_flags; /* Like 'flags' but invisible to userspace. */ |
341 | unsigned short padded; /* How much padding added by alloc_netdev() */ | 342 | unsigned short padded; /* How much padding added by alloc_netdev() */ |
342 | 343 | ||
344 | unsigned char operstate; /* RFC2863 operstate */ | ||
345 | unsigned char link_mode; /* mapping policy to operstate */ | ||
346 | |||
343 | unsigned mtu; /* interface MTU value */ | 347 | unsigned mtu; /* interface MTU value */ |
344 | unsigned short type; /* interface hardware type */ | 348 | unsigned short type; /* interface hardware type */ |
345 | unsigned short hard_header_len; /* hardware hdr length */ | 349 | unsigned short hard_header_len; /* hardware hdr length */ |
@@ -708,12 +712,18 @@ static inline void dev_put(struct net_device *dev) | |||
708 | atomic_dec(&dev->refcnt); | 712 | atomic_dec(&dev->refcnt); |
709 | } | 713 | } |
710 | 714 | ||
711 | #define __dev_put(dev) atomic_dec(&(dev)->refcnt) | 715 | static inline void dev_hold(struct net_device *dev) |
712 | #define dev_hold(dev) atomic_inc(&(dev)->refcnt) | 716 | { |
717 | atomic_inc(&dev->refcnt); | ||
718 | } | ||
713 | 719 | ||
714 | /* Carrier loss detection, dial on demand. The functions netif_carrier_on | 720 | /* Carrier loss detection, dial on demand. The functions netif_carrier_on |
715 | * and _off may be called from IRQ context, but it is caller | 721 | * and _off may be called from IRQ context, but it is caller |
716 | * who is responsible for serialization of these calls. | 722 | * who is responsible for serialization of these calls. |
723 | * | ||
724 | * The name carrier is inappropriate, these functions should really be | ||
725 | * called netif_lowerlayer_*() because they represent the state of any | ||
726 | * kind of lower layer not just hardware media. | ||
717 | */ | 727 | */ |
718 | 728 | ||
719 | extern void linkwatch_fire_event(struct net_device *dev); | 729 | extern void linkwatch_fire_event(struct net_device *dev); |
@@ -729,6 +739,29 @@ extern void netif_carrier_on(struct net_device *dev); | |||
729 | 739 | ||
730 | extern void netif_carrier_off(struct net_device *dev); | 740 | extern void netif_carrier_off(struct net_device *dev); |
731 | 741 | ||
742 | static inline void netif_dormant_on(struct net_device *dev) | ||
743 | { | ||
744 | if (!test_and_set_bit(__LINK_STATE_DORMANT, &dev->state)) | ||
745 | linkwatch_fire_event(dev); | ||
746 | } | ||
747 | |||
748 | static inline void netif_dormant_off(struct net_device *dev) | ||
749 | { | ||
750 | if (test_and_clear_bit(__LINK_STATE_DORMANT, &dev->state)) | ||
751 | linkwatch_fire_event(dev); | ||
752 | } | ||
753 | |||
754 | static inline int netif_dormant(const struct net_device *dev) | ||
755 | { | ||
756 | return test_bit(__LINK_STATE_DORMANT, &dev->state); | ||
757 | } | ||
758 | |||
759 | |||
760 | static inline int netif_oper_up(const struct net_device *dev) { | ||
761 | return (dev->operstate == IF_OPER_UP || | ||
762 | dev->operstate == IF_OPER_UNKNOWN /* backward compat */); | ||
763 | } | ||
764 | |||
732 | /* Hot-plugging. */ | 765 | /* Hot-plugging. */ |
733 | static inline int netif_device_present(struct net_device *dev) | 766 | static inline int netif_device_present(struct net_device *dev) |
734 | { | 767 | { |
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index 468896939843..412e52ca9720 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h | |||
@@ -80,10 +80,14 @@ struct nf_sockopt_ops | |||
80 | int set_optmin; | 80 | int set_optmin; |
81 | int set_optmax; | 81 | int set_optmax; |
82 | int (*set)(struct sock *sk, int optval, void __user *user, unsigned int len); | 82 | int (*set)(struct sock *sk, int optval, void __user *user, unsigned int len); |
83 | int (*compat_set)(struct sock *sk, int optval, | ||
84 | void __user *user, unsigned int len); | ||
83 | 85 | ||
84 | int get_optmin; | 86 | int get_optmin; |
85 | int get_optmax; | 87 | int get_optmax; |
86 | int (*get)(struct sock *sk, int optval, void __user *user, int *len); | 88 | int (*get)(struct sock *sk, int optval, void __user *user, int *len); |
89 | int (*compat_get)(struct sock *sk, int optval, | ||
90 | void __user *user, int *len); | ||
87 | 91 | ||
88 | /* Number of users inside set() or get(). */ | 92 | /* Number of users inside set() or get(). */ |
89 | unsigned int use; | 93 | unsigned int use; |
@@ -246,6 +250,11 @@ int nf_setsockopt(struct sock *sk, int pf, int optval, char __user *opt, | |||
246 | int nf_getsockopt(struct sock *sk, int pf, int optval, char __user *opt, | 250 | int nf_getsockopt(struct sock *sk, int pf, int optval, char __user *opt, |
247 | int *len); | 251 | int *len); |
248 | 252 | ||
253 | int compat_nf_setsockopt(struct sock *sk, int pf, int optval, | ||
254 | char __user *opt, int len); | ||
255 | int compat_nf_getsockopt(struct sock *sk, int pf, int optval, | ||
256 | char __user *opt, int *len); | ||
257 | |||
249 | /* Packet queuing */ | 258 | /* Packet queuing */ |
250 | struct nf_queue_handler { | 259 | struct nf_queue_handler { |
251 | int (*outfn)(struct sk_buff *skb, struct nf_info *info, | 260 | int (*outfn)(struct sk_buff *skb, struct nf_info *info, |
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index 934a2479f160..9f5b12cf489b 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h | |||
@@ -164,6 +164,7 @@ extern void nfattr_parse(struct nfattr *tb[], int maxattr, | |||
164 | __res; \ | 164 | __res; \ |
165 | }) | 165 | }) |
166 | 166 | ||
167 | extern int nfnetlink_has_listeners(unsigned int group); | ||
167 | extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, | 168 | extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, |
168 | int echo); | 169 | int echo); |
169 | extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags); | 170 | extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags); |
diff --git a/include/linux/netfilter/nfnetlink_log.h b/include/linux/netfilter/nfnetlink_log.h index b04b03880595..a7497c7436df 100644 --- a/include/linux/netfilter/nfnetlink_log.h +++ b/include/linux/netfilter/nfnetlink_log.h | |||
@@ -47,6 +47,8 @@ enum nfulnl_attr_type { | |||
47 | NFULA_PAYLOAD, /* opaque data payload */ | 47 | NFULA_PAYLOAD, /* opaque data payload */ |
48 | NFULA_PREFIX, /* string prefix */ | 48 | NFULA_PREFIX, /* string prefix */ |
49 | NFULA_UID, /* user id of socket */ | 49 | NFULA_UID, /* user id of socket */ |
50 | NFULA_SEQ, /* instance-local sequence number */ | ||
51 | NFULA_SEQ_GLOBAL, /* global sequence number */ | ||
50 | 52 | ||
51 | __NFULA_MAX | 53 | __NFULA_MAX |
52 | }; | 54 | }; |
@@ -77,6 +79,7 @@ enum nfulnl_attr_config { | |||
77 | NFULA_CFG_NLBUFSIZ, /* u_int32_t buffer size */ | 79 | NFULA_CFG_NLBUFSIZ, /* u_int32_t buffer size */ |
78 | NFULA_CFG_TIMEOUT, /* u_int32_t in 1/100 s */ | 80 | NFULA_CFG_TIMEOUT, /* u_int32_t in 1/100 s */ |
79 | NFULA_CFG_QTHRESH, /* u_int32_t */ | 81 | NFULA_CFG_QTHRESH, /* u_int32_t */ |
82 | NFULA_CFG_FLAGS, /* u_int16_t */ | ||
80 | __NFULA_CFG_MAX | 83 | __NFULA_CFG_MAX |
81 | }; | 84 | }; |
82 | #define NFULA_CFG_MAX (__NFULA_CFG_MAX -1) | 85 | #define NFULA_CFG_MAX (__NFULA_CFG_MAX -1) |
@@ -85,4 +88,7 @@ enum nfulnl_attr_config { | |||
85 | #define NFULNL_COPY_META 0x01 | 88 | #define NFULNL_COPY_META 0x01 |
86 | #define NFULNL_COPY_PACKET 0x02 | 89 | #define NFULNL_COPY_PACKET 0x02 |
87 | 90 | ||
91 | #define NFULNL_CFG_F_SEQ 0x0001 | ||
92 | #define NFULNL_CFG_F_SEQ_GLOBAL 0x0002 | ||
93 | |||
88 | #endif /* _NFNETLINK_LOG_H */ | 94 | #endif /* _NFNETLINK_LOG_H */ |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 6500d4e59d46..1350e47b0234 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
@@ -4,6 +4,62 @@ | |||
4 | #define XT_FUNCTION_MAXNAMELEN 30 | 4 | #define XT_FUNCTION_MAXNAMELEN 30 |
5 | #define XT_TABLE_MAXNAMELEN 32 | 5 | #define XT_TABLE_MAXNAMELEN 32 |
6 | 6 | ||
7 | struct xt_entry_match | ||
8 | { | ||
9 | union { | ||
10 | struct { | ||
11 | u_int16_t match_size; | ||
12 | |||
13 | /* Used by userspace */ | ||
14 | char name[XT_FUNCTION_MAXNAMELEN-1]; | ||
15 | |||
16 | u_int8_t revision; | ||
17 | } user; | ||
18 | struct { | ||
19 | u_int16_t match_size; | ||
20 | |||
21 | /* Used inside the kernel */ | ||
22 | struct xt_match *match; | ||
23 | } kernel; | ||
24 | |||
25 | /* Total length */ | ||
26 | u_int16_t match_size; | ||
27 | } u; | ||
28 | |||
29 | unsigned char data[0]; | ||
30 | }; | ||
31 | |||
32 | struct xt_entry_target | ||
33 | { | ||
34 | union { | ||
35 | struct { | ||
36 | u_int16_t target_size; | ||
37 | |||
38 | /* Used by userspace */ | ||
39 | char name[XT_FUNCTION_MAXNAMELEN-1]; | ||
40 | |||
41 | u_int8_t revision; | ||
42 | } user; | ||
43 | struct { | ||
44 | u_int16_t target_size; | ||
45 | |||
46 | /* Used inside the kernel */ | ||
47 | struct xt_target *target; | ||
48 | } kernel; | ||
49 | |||
50 | /* Total length */ | ||
51 | u_int16_t target_size; | ||
52 | } u; | ||
53 | |||
54 | unsigned char data[0]; | ||
55 | }; | ||
56 | |||
57 | struct xt_standard_target | ||
58 | { | ||
59 | struct xt_entry_target target; | ||
60 | int verdict; | ||
61 | }; | ||
62 | |||
7 | /* The argument to IPT_SO_GET_REVISION_*. Returns highest revision | 63 | /* The argument to IPT_SO_GET_REVISION_*. Returns highest revision |
8 | * kernel supports, if >= revision. */ | 64 | * kernel supports, if >= revision. */ |
9 | struct xt_get_revision | 65 | struct xt_get_revision |
@@ -92,8 +148,6 @@ struct xt_match | |||
92 | 148 | ||
93 | const char name[XT_FUNCTION_MAXNAMELEN-1]; | 149 | const char name[XT_FUNCTION_MAXNAMELEN-1]; |
94 | 150 | ||
95 | u_int8_t revision; | ||
96 | |||
97 | /* Return true or false: return FALSE and set *hotdrop = 1 to | 151 | /* Return true or false: return FALSE and set *hotdrop = 1 to |
98 | force immediate packet drop. */ | 152 | force immediate packet drop. */ |
99 | /* Arguments changed since 2.6.9, as this must now handle | 153 | /* Arguments changed since 2.6.9, as this must now handle |
@@ -102,6 +156,7 @@ struct xt_match | |||
102 | int (*match)(const struct sk_buff *skb, | 156 | int (*match)(const struct sk_buff *skb, |
103 | const struct net_device *in, | 157 | const struct net_device *in, |
104 | const struct net_device *out, | 158 | const struct net_device *out, |
159 | const struct xt_match *match, | ||
105 | const void *matchinfo, | 160 | const void *matchinfo, |
106 | int offset, | 161 | int offset, |
107 | unsigned int protoff, | 162 | unsigned int protoff, |
@@ -111,15 +166,25 @@ struct xt_match | |||
111 | /* Should return true or false. */ | 166 | /* Should return true or false. */ |
112 | int (*checkentry)(const char *tablename, | 167 | int (*checkentry)(const char *tablename, |
113 | const void *ip, | 168 | const void *ip, |
169 | const struct xt_match *match, | ||
114 | void *matchinfo, | 170 | void *matchinfo, |
115 | unsigned int matchinfosize, | 171 | unsigned int matchinfosize, |
116 | unsigned int hook_mask); | 172 | unsigned int hook_mask); |
117 | 173 | ||
118 | /* Called when entry of this type deleted. */ | 174 | /* Called when entry of this type deleted. */ |
119 | void (*destroy)(void *matchinfo, unsigned int matchinfosize); | 175 | void (*destroy)(const struct xt_match *match, void *matchinfo, |
176 | unsigned int matchinfosize); | ||
120 | 177 | ||
121 | /* Set this to THIS_MODULE if you are a module, otherwise NULL */ | 178 | /* Set this to THIS_MODULE if you are a module, otherwise NULL */ |
122 | struct module *me; | 179 | struct module *me; |
180 | |||
181 | char *table; | ||
182 | unsigned int matchsize; | ||
183 | unsigned int hooks; | ||
184 | unsigned short proto; | ||
185 | |||
186 | unsigned short family; | ||
187 | u_int8_t revision; | ||
123 | }; | 188 | }; |
124 | 189 | ||
125 | /* Registration hooks for targets. */ | 190 | /* Registration hooks for targets. */ |
@@ -129,8 +194,6 @@ struct xt_target | |||
129 | 194 | ||
130 | const char name[XT_FUNCTION_MAXNAMELEN-1]; | 195 | const char name[XT_FUNCTION_MAXNAMELEN-1]; |
131 | 196 | ||
132 | u_int8_t revision; | ||
133 | |||
134 | /* Returns verdict. Argument order changed since 2.6.9, as this | 197 | /* Returns verdict. Argument order changed since 2.6.9, as this |
135 | must now handle non-linear skbs, using skb_copy_bits and | 198 | must now handle non-linear skbs, using skb_copy_bits and |
136 | skb_ip_make_writable. */ | 199 | skb_ip_make_writable. */ |
@@ -138,6 +201,7 @@ struct xt_target | |||
138 | const struct net_device *in, | 201 | const struct net_device *in, |
139 | const struct net_device *out, | 202 | const struct net_device *out, |
140 | unsigned int hooknum, | 203 | unsigned int hooknum, |
204 | const struct xt_target *target, | ||
141 | const void *targinfo, | 205 | const void *targinfo, |
142 | void *userdata); | 206 | void *userdata); |
143 | 207 | ||
@@ -147,15 +211,25 @@ struct xt_target | |||
147 | /* Should return true or false. */ | 211 | /* Should return true or false. */ |
148 | int (*checkentry)(const char *tablename, | 212 | int (*checkentry)(const char *tablename, |
149 | const void *entry, | 213 | const void *entry, |
214 | const struct xt_target *target, | ||
150 | void *targinfo, | 215 | void *targinfo, |
151 | unsigned int targinfosize, | 216 | unsigned int targinfosize, |
152 | unsigned int hook_mask); | 217 | unsigned int hook_mask); |
153 | 218 | ||
154 | /* Called when entry of this type deleted. */ | 219 | /* Called when entry of this type deleted. */ |
155 | void (*destroy)(void *targinfo, unsigned int targinfosize); | 220 | void (*destroy)(const struct xt_target *target, void *targinfo, |
221 | unsigned int targinfosize); | ||
156 | 222 | ||
157 | /* Set this to THIS_MODULE if you are a module, otherwise NULL */ | 223 | /* Set this to THIS_MODULE if you are a module, otherwise NULL */ |
158 | struct module *me; | 224 | struct module *me; |
225 | |||
226 | char *table; | ||
227 | unsigned int targetsize; | ||
228 | unsigned int hooks; | ||
229 | unsigned short proto; | ||
230 | |||
231 | unsigned short family; | ||
232 | u_int8_t revision; | ||
159 | }; | 233 | }; |
160 | 234 | ||
161 | /* Furniture shopping... */ | 235 | /* Furniture shopping... */ |
@@ -202,10 +276,17 @@ struct xt_table_info | |||
202 | char *entries[NR_CPUS]; | 276 | char *entries[NR_CPUS]; |
203 | }; | 277 | }; |
204 | 278 | ||
205 | extern int xt_register_target(int af, struct xt_target *target); | 279 | extern int xt_register_target(struct xt_target *target); |
206 | extern void xt_unregister_target(int af, struct xt_target *target); | 280 | extern void xt_unregister_target(struct xt_target *target); |
207 | extern int xt_register_match(int af, struct xt_match *target); | 281 | extern int xt_register_match(struct xt_match *target); |
208 | extern void xt_unregister_match(int af, struct xt_match *target); | 282 | extern void xt_unregister_match(struct xt_match *target); |
283 | |||
284 | extern int xt_check_match(const struct xt_match *match, unsigned short family, | ||
285 | unsigned int size, const char *table, unsigned int hook, | ||
286 | unsigned short proto, int inv_proto); | ||
287 | extern int xt_check_target(const struct xt_target *target, unsigned short family, | ||
288 | unsigned int size, const char *table, unsigned int hook, | ||
289 | unsigned short proto, int inv_proto); | ||
209 | 290 | ||
210 | extern int xt_register_table(struct xt_table *table, | 291 | extern int xt_register_table(struct xt_table *table, |
211 | struct xt_table_info *bootstrap, | 292 | struct xt_table_info *bootstrap, |
diff --git a/include/linux/netfilter/xt_policy.h b/include/linux/netfilter/xt_policy.h new file mode 100644 index 000000000000..a8132ec076fb --- /dev/null +++ b/include/linux/netfilter/xt_policy.h | |||
@@ -0,0 +1,58 @@ | |||
1 | #ifndef _XT_POLICY_H | ||
2 | #define _XT_POLICY_H | ||
3 | |||
4 | #define XT_POLICY_MAX_ELEM 4 | ||
5 | |||
6 | enum xt_policy_flags | ||
7 | { | ||
8 | XT_POLICY_MATCH_IN = 0x1, | ||
9 | XT_POLICY_MATCH_OUT = 0x2, | ||
10 | XT_POLICY_MATCH_NONE = 0x4, | ||
11 | XT_POLICY_MATCH_STRICT = 0x8, | ||
12 | }; | ||
13 | |||
14 | enum xt_policy_modes | ||
15 | { | ||
16 | XT_POLICY_MODE_TRANSPORT, | ||
17 | XT_POLICY_MODE_TUNNEL | ||
18 | }; | ||
19 | |||
20 | struct xt_policy_spec | ||
21 | { | ||
22 | u_int8_t saddr:1, | ||
23 | daddr:1, | ||
24 | proto:1, | ||
25 | mode:1, | ||
26 | spi:1, | ||
27 | reqid:1; | ||
28 | }; | ||
29 | |||
30 | union xt_policy_addr | ||
31 | { | ||
32 | struct in_addr a4; | ||
33 | struct in6_addr a6; | ||
34 | }; | ||
35 | |||
36 | struct xt_policy_elem | ||
37 | { | ||
38 | union xt_policy_addr saddr; | ||
39 | union xt_policy_addr smask; | ||
40 | union xt_policy_addr daddr; | ||
41 | union xt_policy_addr dmask; | ||
42 | u_int32_t spi; | ||
43 | u_int32_t reqid; | ||
44 | u_int8_t proto; | ||
45 | u_int8_t mode; | ||
46 | |||
47 | struct xt_policy_spec match; | ||
48 | struct xt_policy_spec invert; | ||
49 | }; | ||
50 | |||
51 | struct xt_policy_info | ||
52 | { | ||
53 | struct xt_policy_elem pol[XT_POLICY_MAX_ELEM]; | ||
54 | u_int16_t flags; | ||
55 | u_int16_t len; | ||
56 | }; | ||
57 | |||
58 | #endif /* _XT_POLICY_H */ | ||
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h index fd21796e5131..62cc27daca4e 100644 --- a/include/linux/netfilter_arp/arp_tables.h +++ b/include/linux/netfilter_arp/arp_tables.h | |||
@@ -65,35 +65,8 @@ struct arpt_arp { | |||
65 | u_int16_t invflags; | 65 | u_int16_t invflags; |
66 | }; | 66 | }; |
67 | 67 | ||
68 | struct arpt_entry_target | 68 | #define arpt_entry_target xt_entry_target |
69 | { | 69 | #define arpt_standard_target xt_standard_target |
70 | union { | ||
71 | struct { | ||
72 | u_int16_t target_size; | ||
73 | |||
74 | /* Used by userspace */ | ||
75 | char name[ARPT_FUNCTION_MAXNAMELEN-1]; | ||
76 | u_int8_t revision; | ||
77 | } user; | ||
78 | struct { | ||
79 | u_int16_t target_size; | ||
80 | |||
81 | /* Used inside the kernel */ | ||
82 | struct arpt_target *target; | ||
83 | } kernel; | ||
84 | |||
85 | /* Total length */ | ||
86 | u_int16_t target_size; | ||
87 | } u; | ||
88 | |||
89 | unsigned char data[0]; | ||
90 | }; | ||
91 | |||
92 | struct arpt_standard_target | ||
93 | { | ||
94 | struct arpt_entry_target target; | ||
95 | int verdict; | ||
96 | }; | ||
97 | 70 | ||
98 | /* Values for "flag" field in struct arpt_ip (general arp structure). | 71 | /* Values for "flag" field in struct arpt_ip (general arp structure). |
99 | * No flags defined yet. | 72 | * No flags defined yet. |
@@ -263,8 +236,10 @@ static __inline__ struct arpt_entry_target *arpt_get_target(struct arpt_entry *e | |||
263 | */ | 236 | */ |
264 | #ifdef __KERNEL__ | 237 | #ifdef __KERNEL__ |
265 | 238 | ||
266 | #define arpt_register_target(tgt) xt_register_target(NF_ARP, tgt) | 239 | #define arpt_register_target(tgt) \ |
267 | #define arpt_unregister_target(tgt) xt_unregister_target(NF_ARP, tgt) | 240 | ({ (tgt)->family = NF_ARP; \ |
241 | xt_register_target(tgt); }) | ||
242 | #define arpt_unregister_target(tgt) xt_unregister_target(tgt) | ||
268 | 243 | ||
269 | extern int arpt_register_table(struct arpt_table *table, | 244 | extern int arpt_register_table(struct arpt_table *table, |
270 | const struct arpt_replace *repl); | 245 | const struct arpt_replace *repl); |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index de4d397865ce..a75b84bb9a88 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
@@ -47,22 +47,6 @@ enum nf_br_hook_priorities { | |||
47 | #define BRNF_BRIDGED 0x08 | 47 | #define BRNF_BRIDGED 0x08 |
48 | #define BRNF_NF_BRIDGE_PREROUTING 0x10 | 48 | #define BRNF_NF_BRIDGE_PREROUTING 0x10 |
49 | 49 | ||
50 | static inline | ||
51 | struct nf_bridge_info *nf_bridge_alloc(struct sk_buff *skb) | ||
52 | { | ||
53 | struct nf_bridge_info **nf_bridge = &(skb->nf_bridge); | ||
54 | |||
55 | if ((*nf_bridge = kmalloc(sizeof(**nf_bridge), GFP_ATOMIC)) != NULL) { | ||
56 | atomic_set(&(*nf_bridge)->use, 1); | ||
57 | (*nf_bridge)->mask = 0; | ||
58 | (*nf_bridge)->physindev = (*nf_bridge)->physoutdev = NULL; | ||
59 | #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE) | ||
60 | (*nf_bridge)->netoutdev = NULL; | ||
61 | #endif | ||
62 | } | ||
63 | |||
64 | return *nf_bridge; | ||
65 | } | ||
66 | 50 | ||
67 | /* Only used in br_forward.c */ | 51 | /* Only used in br_forward.c */ |
68 | static inline | 52 | static inline |
@@ -77,17 +61,6 @@ void nf_bridge_maybe_copy_header(struct sk_buff *skb) | |||
77 | } | 61 | } |
78 | } | 62 | } |
79 | 63 | ||
80 | static inline | ||
81 | void nf_bridge_save_header(struct sk_buff *skb) | ||
82 | { | ||
83 | int header_size = 16; | ||
84 | |||
85 | if (skb->protocol == __constant_htons(ETH_P_8021Q)) | ||
86 | header_size = 18; | ||
87 | |||
88 | memcpy(skb->nf_bridge->data, skb->data - header_size, header_size); | ||
89 | } | ||
90 | |||
91 | /* This is called by the IP fragmenting code and it ensures there is | 64 | /* This is called by the IP fragmenting code and it ensures there is |
92 | * enough room for the encapsulating header (if there is one). */ | 65 | * enough room for the encapsulating header (if there is one). */ |
93 | static inline | 66 | static inline |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack.h b/include/linux/netfilter_ipv4/ip_conntrack.h index 215765f043e6..f32d75c4f4cf 100644 --- a/include/linux/netfilter_ipv4/ip_conntrack.h +++ b/include/linux/netfilter_ipv4/ip_conntrack.h | |||
@@ -29,6 +29,7 @@ union ip_conntrack_expect_proto { | |||
29 | }; | 29 | }; |
30 | 30 | ||
31 | /* Add protocol helper include file here */ | 31 | /* Add protocol helper include file here */ |
32 | #include <linux/netfilter_ipv4/ip_conntrack_h323.h> | ||
32 | #include <linux/netfilter_ipv4/ip_conntrack_pptp.h> | 33 | #include <linux/netfilter_ipv4/ip_conntrack_pptp.h> |
33 | #include <linux/netfilter_ipv4/ip_conntrack_amanda.h> | 34 | #include <linux/netfilter_ipv4/ip_conntrack_amanda.h> |
34 | #include <linux/netfilter_ipv4/ip_conntrack_ftp.h> | 35 | #include <linux/netfilter_ipv4/ip_conntrack_ftp.h> |
@@ -37,6 +38,7 @@ union ip_conntrack_expect_proto { | |||
37 | /* per conntrack: application helper private data */ | 38 | /* per conntrack: application helper private data */ |
38 | union ip_conntrack_help { | 39 | union ip_conntrack_help { |
39 | /* insert conntrack helper private data (master) here */ | 40 | /* insert conntrack helper private data (master) here */ |
41 | struct ip_ct_h323_master ct_h323_info; | ||
40 | struct ip_ct_pptp_master ct_pptp_info; | 42 | struct ip_ct_pptp_master ct_pptp_info; |
41 | struct ip_ct_ftp_master ct_ftp_info; | 43 | struct ip_ct_ftp_master ct_ftp_info; |
42 | struct ip_ct_irc_master ct_irc_info; | 44 | struct ip_ct_irc_master ct_irc_info; |
diff --git a/include/linux/netfilter_ipv4/ip_conntrack_h323.h b/include/linux/netfilter_ipv4/ip_conntrack_h323.h new file mode 100644 index 000000000000..0987cea53840 --- /dev/null +++ b/include/linux/netfilter_ipv4/ip_conntrack_h323.h | |||
@@ -0,0 +1,30 @@ | |||
1 | #ifndef _IP_CONNTRACK_H323_H | ||
2 | #define _IP_CONNTRACK_H323_H | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | |||
6 | #define RAS_PORT 1719 | ||
7 | #define Q931_PORT 1720 | ||
8 | #define H323_RTP_CHANNEL_MAX 4 /* Audio, video, FAX and other */ | ||
9 | |||
10 | /* This structure exists only once per master */ | ||
11 | struct ip_ct_h323_master { | ||
12 | |||
13 | /* Original and NATed Q.931 or H.245 signal ports */ | ||
14 | u_int16_t sig_port[IP_CT_DIR_MAX]; | ||
15 | |||
16 | /* Original and NATed RTP ports */ | ||
17 | u_int16_t rtp_port[H323_RTP_CHANNEL_MAX][IP_CT_DIR_MAX]; | ||
18 | |||
19 | union { | ||
20 | /* RAS connection timeout */ | ||
21 | u_int32_t timeout; | ||
22 | |||
23 | /* Next TPKT length (for separate TPKT header and data) */ | ||
24 | u_int16_t tpkt_len[IP_CT_DIR_MAX]; | ||
25 | }; | ||
26 | }; | ||
27 | |||
28 | #endif | ||
29 | |||
30 | #endif | ||
diff --git a/include/linux/netfilter_ipv4/ip_nat.h b/include/linux/netfilter_ipv4/ip_nat.h index 41a107de17cf..e9f5ed1d9f68 100644 --- a/include/linux/netfilter_ipv4/ip_nat.h +++ b/include/linux/netfilter_ipv4/ip_nat.h | |||
@@ -23,7 +23,7 @@ struct ip_nat_seq { | |||
23 | * modification (if any) */ | 23 | * modification (if any) */ |
24 | u_int32_t correction_pos; | 24 | u_int32_t correction_pos; |
25 | /* sequence number offset before and after last modification */ | 25 | /* sequence number offset before and after last modification */ |
26 | int32_t offset_before, offset_after; | 26 | int16_t offset_before, offset_after; |
27 | }; | 27 | }; |
28 | 28 | ||
29 | /* Single range specification. */ | 29 | /* Single range specification. */ |
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h index 76ba24b68515..d5b8c0d6a12b 100644 --- a/include/linux/netfilter_ipv4/ip_tables.h +++ b/include/linux/netfilter_ipv4/ip_tables.h | |||
@@ -52,61 +52,9 @@ struct ipt_ip { | |||
52 | u_int8_t invflags; | 52 | u_int8_t invflags; |
53 | }; | 53 | }; |
54 | 54 | ||
55 | struct ipt_entry_match | 55 | #define ipt_entry_match xt_entry_match |
56 | { | 56 | #define ipt_entry_target xt_entry_target |
57 | union { | 57 | #define ipt_standard_target xt_standard_target |
58 | struct { | ||
59 | u_int16_t match_size; | ||
60 | |||
61 | /* Used by userspace */ | ||
62 | char name[IPT_FUNCTION_MAXNAMELEN-1]; | ||
63 | |||
64 | u_int8_t revision; | ||
65 | } user; | ||
66 | struct { | ||
67 | u_int16_t match_size; | ||
68 | |||
69 | /* Used inside the kernel */ | ||
70 | struct ipt_match *match; | ||
71 | } kernel; | ||
72 | |||
73 | /* Total length */ | ||
74 | u_int16_t match_size; | ||
75 | } u; | ||
76 | |||
77 | unsigned char data[0]; | ||
78 | }; | ||
79 | |||
80 | struct ipt_entry_target | ||
81 | { | ||
82 | union { | ||
83 | struct { | ||
84 | u_int16_t target_size; | ||
85 | |||
86 | /* Used by userspace */ | ||
87 | char name[IPT_FUNCTION_MAXNAMELEN-1]; | ||
88 | |||
89 | u_int8_t revision; | ||
90 | } user; | ||
91 | struct { | ||
92 | u_int16_t target_size; | ||
93 | |||
94 | /* Used inside the kernel */ | ||
95 | struct ipt_target *target; | ||
96 | } kernel; | ||
97 | |||
98 | /* Total length */ | ||
99 | u_int16_t target_size; | ||
100 | } u; | ||
101 | |||
102 | unsigned char data[0]; | ||
103 | }; | ||
104 | |||
105 | struct ipt_standard_target | ||
106 | { | ||
107 | struct ipt_entry_target target; | ||
108 | int verdict; | ||
109 | }; | ||
110 | 58 | ||
111 | #define ipt_counters xt_counters | 59 | #define ipt_counters xt_counters |
112 | 60 | ||
@@ -321,11 +269,15 @@ ipt_get_target(struct ipt_entry *e) | |||
321 | #include <linux/init.h> | 269 | #include <linux/init.h> |
322 | extern void ipt_init(void) __init; | 270 | extern void ipt_init(void) __init; |
323 | 271 | ||
324 | #define ipt_register_target(tgt) xt_register_target(AF_INET, tgt) | 272 | #define ipt_register_target(tgt) \ |
325 | #define ipt_unregister_target(tgt) xt_unregister_target(AF_INET, tgt) | 273 | ({ (tgt)->family = AF_INET; \ |
274 | xt_register_target(tgt); }) | ||
275 | #define ipt_unregister_target(tgt) xt_unregister_target(tgt) | ||
326 | 276 | ||
327 | #define ipt_register_match(mtch) xt_register_match(AF_INET, mtch) | 277 | #define ipt_register_match(mtch) \ |
328 | #define ipt_unregister_match(mtch) xt_unregister_match(AF_INET, mtch) | 278 | ({ (mtch)->family = AF_INET; \ |
279 | xt_register_match(mtch); }) | ||
280 | #define ipt_unregister_match(mtch) xt_unregister_match(mtch) | ||
329 | 281 | ||
330 | //#define ipt_register_table(tbl, repl) xt_register_table(AF_INET, tbl, repl) | 282 | //#define ipt_register_table(tbl, repl) xt_register_table(AF_INET, tbl, repl) |
331 | //#define ipt_unregister_table(tbl) xt_unregister_table(AF_INET, tbl) | 283 | //#define ipt_unregister_table(tbl) xt_unregister_table(AF_INET, tbl) |
diff --git a/include/linux/netfilter_ipv4/ipt_policy.h b/include/linux/netfilter_ipv4/ipt_policy.h index a3f6eff39d33..b9478a255301 100644 --- a/include/linux/netfilter_ipv4/ipt_policy.h +++ b/include/linux/netfilter_ipv4/ipt_policy.h | |||
@@ -1,58 +1,21 @@ | |||
1 | #ifndef _IPT_POLICY_H | 1 | #ifndef _IPT_POLICY_H |
2 | #define _IPT_POLICY_H | 2 | #define _IPT_POLICY_H |
3 | 3 | ||
4 | #define IPT_POLICY_MAX_ELEM 4 | 4 | #define IPT_POLICY_MAX_ELEM XT_POLICY_MAX_ELEM |
5 | 5 | ||
6 | enum ipt_policy_flags | 6 | /* ipt_policy_flags */ |
7 | { | 7 | #define IPT_POLICY_MATCH_IN XT_POLICY_MATCH_IN |
8 | IPT_POLICY_MATCH_IN = 0x1, | 8 | #define IPT_POLICY_MATCH_OUT XT_POLICY_MATCH_OUT |
9 | IPT_POLICY_MATCH_OUT = 0x2, | 9 | #define IPT_POLICY_MATCH_NONE XT_POLICY_MATCH_NONE |
10 | IPT_POLICY_MATCH_NONE = 0x4, | 10 | #define IPT_POLICY_MATCH_STRICT XT_POLICY_MATCH_STRICT |
11 | IPT_POLICY_MATCH_STRICT = 0x8, | 11 | |
12 | }; | 12 | /* ipt_policy_modes */ |
13 | 13 | #define IPT_POLICY_MODE_TRANSPORT XT_POLICY_MODE_TRANSPORT | |
14 | enum ipt_policy_modes | 14 | #define IPT_POLICY_MODE_TUNNEL XT_POLICY_MODE_TUNNEL |
15 | { | 15 | |
16 | IPT_POLICY_MODE_TRANSPORT, | 16 | #define ipt_policy_spec xt_policy_spec |
17 | IPT_POLICY_MODE_TUNNEL | 17 | #define ipt_policy_addr xt_policy_addr |
18 | }; | 18 | #define ipt_policy_elem xt_policy_elem |
19 | 19 | #define ipt_policy_info xt_policy_info | |
20 | struct ipt_policy_spec | ||
21 | { | ||
22 | u_int8_t saddr:1, | ||
23 | daddr:1, | ||
24 | proto:1, | ||
25 | mode:1, | ||
26 | spi:1, | ||
27 | reqid:1; | ||
28 | }; | ||
29 | |||
30 | union ipt_policy_addr | ||
31 | { | ||
32 | struct in_addr a4; | ||
33 | struct in6_addr a6; | ||
34 | }; | ||
35 | |||
36 | struct ipt_policy_elem | ||
37 | { | ||
38 | union ipt_policy_addr saddr; | ||
39 | union ipt_policy_addr smask; | ||
40 | union ipt_policy_addr daddr; | ||
41 | union ipt_policy_addr dmask; | ||
42 | u_int32_t spi; | ||
43 | u_int32_t reqid; | ||
44 | u_int8_t proto; | ||
45 | u_int8_t mode; | ||
46 | |||
47 | struct ipt_policy_spec match; | ||
48 | struct ipt_policy_spec invert; | ||
49 | }; | ||
50 | |||
51 | struct ipt_policy_info | ||
52 | { | ||
53 | struct ipt_policy_elem pol[IPT_POLICY_MAX_ELEM]; | ||
54 | u_int16_t flags; | ||
55 | u_int16_t len; | ||
56 | }; | ||
57 | 20 | ||
58 | #endif /* _IPT_POLICY_H */ | 21 | #endif /* _IPT_POLICY_H */ |
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index f249b574f0fa..d0d5d1ee4be3 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
@@ -56,60 +56,9 @@ struct ip6t_ip6 { | |||
56 | u_int8_t invflags; | 56 | u_int8_t invflags; |
57 | }; | 57 | }; |
58 | 58 | ||
59 | /* FIXME: If alignment in kernel different from userspace? --RR */ | 59 | #define ip6t_entry_match xt_entry_match |
60 | struct ip6t_entry_match | 60 | #define ip6t_entry_target xt_entry_target |
61 | { | 61 | #define ip6t_standard_target xt_standard_target |
62 | union { | ||
63 | struct { | ||
64 | u_int16_t match_size; | ||
65 | |||
66 | /* Used by userspace */ | ||
67 | char name[IP6T_FUNCTION_MAXNAMELEN-1]; | ||
68 | u_int8_t revision; | ||
69 | } user; | ||
70 | struct { | ||
71 | u_int16_t match_size; | ||
72 | |||
73 | /* Used inside the kernel */ | ||
74 | struct ip6t_match *match; | ||
75 | } kernel; | ||
76 | |||
77 | /* Total length */ | ||
78 | u_int16_t match_size; | ||
79 | } u; | ||
80 | |||
81 | unsigned char data[0]; | ||
82 | }; | ||
83 | |||
84 | struct ip6t_entry_target | ||
85 | { | ||
86 | union { | ||
87 | struct { | ||
88 | u_int16_t target_size; | ||
89 | |||
90 | /* Used by userspace */ | ||
91 | char name[IP6T_FUNCTION_MAXNAMELEN-1]; | ||
92 | u_int8_t revision; | ||
93 | } user; | ||
94 | struct { | ||
95 | u_int16_t target_size; | ||
96 | |||
97 | /* Used inside the kernel */ | ||
98 | struct ip6t_target *target; | ||
99 | } kernel; | ||
100 | |||
101 | /* Total length */ | ||
102 | u_int16_t target_size; | ||
103 | } u; | ||
104 | |||
105 | unsigned char data[0]; | ||
106 | }; | ||
107 | |||
108 | struct ip6t_standard_target | ||
109 | { | ||
110 | struct ip6t_entry_target target; | ||
111 | int verdict; | ||
112 | }; | ||
113 | 62 | ||
114 | #define ip6t_counters xt_counters | 63 | #define ip6t_counters xt_counters |
115 | 64 | ||
@@ -334,11 +283,15 @@ ip6t_get_target(struct ip6t_entry *e) | |||
334 | #include <linux/init.h> | 283 | #include <linux/init.h> |
335 | extern void ip6t_init(void) __init; | 284 | extern void ip6t_init(void) __init; |
336 | 285 | ||
337 | #define ip6t_register_target(tgt) xt_register_target(AF_INET6, tgt) | 286 | #define ip6t_register_target(tgt) \ |
338 | #define ip6t_unregister_target(tgt) xt_unregister_target(AF_INET6, tgt) | 287 | ({ (tgt)->family = AF_INET6; \ |
288 | xt_register_target(tgt); }) | ||
289 | #define ip6t_unregister_target(tgt) xt_unregister_target(tgt) | ||
339 | 290 | ||
340 | #define ip6t_register_match(match) xt_register_match(AF_INET6, match) | 291 | #define ip6t_register_match(match) \ |
341 | #define ip6t_unregister_match(match) xt_unregister_match(AF_INET6, match) | 292 | ({ (match)->family = AF_INET6; \ |
293 | xt_register_match(match); }) | ||
294 | #define ip6t_unregister_match(match) xt_unregister_match(match) | ||
342 | 295 | ||
343 | extern int ip6t_register_table(struct ip6t_table *table, | 296 | extern int ip6t_register_table(struct ip6t_table *table, |
344 | const struct ip6t_replace *repl); | 297 | const struct ip6t_replace *repl); |
diff --git a/include/linux/netfilter_ipv6/ip6t_policy.h b/include/linux/netfilter_ipv6/ip6t_policy.h index 671bd818300f..6bab3163d2fb 100644 --- a/include/linux/netfilter_ipv6/ip6t_policy.h +++ b/include/linux/netfilter_ipv6/ip6t_policy.h | |||
@@ -1,58 +1,21 @@ | |||
1 | #ifndef _IP6T_POLICY_H | 1 | #ifndef _IP6T_POLICY_H |
2 | #define _IP6T_POLICY_H | 2 | #define _IP6T_POLICY_H |
3 | 3 | ||
4 | #define IP6T_POLICY_MAX_ELEM 4 | 4 | #define IP6T_POLICY_MAX_ELEM XT_POLICY_MAX_ELEM |
5 | 5 | ||
6 | enum ip6t_policy_flags | 6 | /* ip6t_policy_flags */ |
7 | { | 7 | #define IP6T_POLICY_MATCH_IN XT_POLICY_MATCH_IN |
8 | IP6T_POLICY_MATCH_IN = 0x1, | 8 | #define IP6T_POLICY_MATCH_OUT XT_POLICY_MATCH_OUT |
9 | IP6T_POLICY_MATCH_OUT = 0x2, | 9 | #define IP6T_POLICY_MATCH_NONE XT_POLICY_MATCH_NONE |
10 | IP6T_POLICY_MATCH_NONE = 0x4, | 10 | #define IP6T_POLICY_MATCH_STRICT XT_POLICY_MATCH_STRICT |
11 | IP6T_POLICY_MATCH_STRICT = 0x8, | 11 | |
12 | }; | 12 | /* ip6t_policy_modes */ |
13 | 13 | #define IP6T_POLICY_MODE_TRANSPORT XT_POLICY_MODE_TRANSPORT | |
14 | enum ip6t_policy_modes | 14 | #define IP6T_POLICY_MODE_TUNNEL XT_POLICY_MODE_TUNNEL |
15 | { | 15 | |
16 | IP6T_POLICY_MODE_TRANSPORT, | 16 | #define ip6t_policy_spec xt_policy_spec |
17 | IP6T_POLICY_MODE_TUNNEL | 17 | #define ip6t_policy_addr xt_policy_addr |
18 | }; | 18 | #define ip6t_policy_elem xt_policy_elem |
19 | 19 | #define ip6t_policy_info xt_policy_info | |
20 | struct ip6t_policy_spec | ||
21 | { | ||
22 | u_int8_t saddr:1, | ||
23 | daddr:1, | ||
24 | proto:1, | ||
25 | mode:1, | ||
26 | spi:1, | ||
27 | reqid:1; | ||
28 | }; | ||
29 | |||
30 | union ip6t_policy_addr | ||
31 | { | ||
32 | struct in_addr a4; | ||
33 | struct in6_addr a6; | ||
34 | }; | ||
35 | |||
36 | struct ip6t_policy_elem | ||
37 | { | ||
38 | union ip6t_policy_addr saddr; | ||
39 | union ip6t_policy_addr smask; | ||
40 | union ip6t_policy_addr daddr; | ||
41 | union ip6t_policy_addr dmask; | ||
42 | u_int32_t spi; | ||
43 | u_int32_t reqid; | ||
44 | u_int8_t proto; | ||
45 | u_int8_t mode; | ||
46 | |||
47 | struct ip6t_policy_spec match; | ||
48 | struct ip6t_policy_spec invert; | ||
49 | }; | ||
50 | |||
51 | struct ip6t_policy_info | ||
52 | { | ||
53 | struct ip6t_policy_elem pol[IP6T_POLICY_MAX_ELEM]; | ||
54 | u_int16_t flags; | ||
55 | u_int16_t len; | ||
56 | }; | ||
57 | 20 | ||
58 | #endif /* _IP6T_POLICY_H */ | 21 | #endif /* _IP6T_POLICY_H */ |
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index c256ebe2a7b4..f8f3d1c927f8 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
@@ -151,6 +151,7 @@ struct netlink_skb_parms | |||
151 | 151 | ||
152 | extern struct sock *netlink_kernel_create(int unit, unsigned int groups, void (*input)(struct sock *sk, int len), struct module *module); | 152 | extern struct sock *netlink_kernel_create(int unit, unsigned int groups, void (*input)(struct sock *sk, int len), struct module *module); |
153 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); | 153 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); |
154 | extern int netlink_has_listeners(struct sock *sk, unsigned int group); | ||
154 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); | 155 | extern int netlink_unicast(struct sock *ssk, struct sk_buff *skb, __u32 pid, int nonblock); |
155 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, | 156 | extern int netlink_broadcast(struct sock *ssk, struct sk_buff *skb, __u32 pid, |
156 | __u32 group, gfp_t allocation); | 157 | __u32 group, gfp_t allocation); |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index d52999c43336..9ea629c02a4b 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
@@ -86,8 +86,9 @@ | |||
86 | * - The __xxx_page_state variants can be used safely when interrupts are | 86 | * - The __xxx_page_state variants can be used safely when interrupts are |
87 | * disabled. | 87 | * disabled. |
88 | * - The __xxx_page_state variants can be used if the field is only | 88 | * - The __xxx_page_state variants can be used if the field is only |
89 | * modified from process context, or only modified from interrupt context. | 89 | * modified from process context and protected from preemption, or only |
90 | * In this case, the field should be commented here. | 90 | * modified from interrupt context. In this case, the field should be |
91 | * commented here. | ||
91 | */ | 92 | */ |
92 | struct page_state { | 93 | struct page_state { |
93 | unsigned long nr_dirty; /* Dirty writeable pages */ | 94 | unsigned long nr_dirty; /* Dirty writeable pages */ |
@@ -239,22 +240,19 @@ extern void __mod_page_state_offset(unsigned long offset, unsigned long delta); | |||
239 | #define __ClearPageDirty(page) __clear_bit(PG_dirty, &(page)->flags) | 240 | #define __ClearPageDirty(page) __clear_bit(PG_dirty, &(page)->flags) |
240 | #define TestClearPageDirty(page) test_and_clear_bit(PG_dirty, &(page)->flags) | 241 | #define TestClearPageDirty(page) test_and_clear_bit(PG_dirty, &(page)->flags) |
241 | 242 | ||
242 | #define SetPageLRU(page) set_bit(PG_lru, &(page)->flags) | ||
243 | #define PageLRU(page) test_bit(PG_lru, &(page)->flags) | 243 | #define PageLRU(page) test_bit(PG_lru, &(page)->flags) |
244 | #define TestSetPageLRU(page) test_and_set_bit(PG_lru, &(page)->flags) | 244 | #define SetPageLRU(page) set_bit(PG_lru, &(page)->flags) |
245 | #define TestClearPageLRU(page) test_and_clear_bit(PG_lru, &(page)->flags) | 245 | #define ClearPageLRU(page) clear_bit(PG_lru, &(page)->flags) |
246 | #define __ClearPageLRU(page) __clear_bit(PG_lru, &(page)->flags) | ||
246 | 247 | ||
247 | #define PageActive(page) test_bit(PG_active, &(page)->flags) | 248 | #define PageActive(page) test_bit(PG_active, &(page)->flags) |
248 | #define SetPageActive(page) set_bit(PG_active, &(page)->flags) | 249 | #define SetPageActive(page) set_bit(PG_active, &(page)->flags) |
249 | #define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) | 250 | #define ClearPageActive(page) clear_bit(PG_active, &(page)->flags) |
250 | #define TestClearPageActive(page) test_and_clear_bit(PG_active, &(page)->flags) | 251 | #define __ClearPageActive(page) __clear_bit(PG_active, &(page)->flags) |
251 | #define TestSetPageActive(page) test_and_set_bit(PG_active, &(page)->flags) | ||
252 | 252 | ||
253 | #define PageSlab(page) test_bit(PG_slab, &(page)->flags) | 253 | #define PageSlab(page) test_bit(PG_slab, &(page)->flags) |
254 | #define SetPageSlab(page) set_bit(PG_slab, &(page)->flags) | 254 | #define __SetPageSlab(page) __set_bit(PG_slab, &(page)->flags) |
255 | #define ClearPageSlab(page) clear_bit(PG_slab, &(page)->flags) | 255 | #define __ClearPageSlab(page) __clear_bit(PG_slab, &(page)->flags) |
256 | #define TestClearPageSlab(page) test_and_clear_bit(PG_slab, &(page)->flags) | ||
257 | #define TestSetPageSlab(page) test_and_set_bit(PG_slab, &(page)->flags) | ||
258 | 256 | ||
259 | #ifdef CONFIG_HIGHMEM | 257 | #ifdef CONFIG_HIGHMEM |
260 | #define PageHighMem(page) is_highmem(page_zone(page)) | 258 | #define PageHighMem(page) is_highmem(page_zone(page)) |
@@ -329,8 +327,8 @@ extern void __mod_page_state_offset(unsigned long offset, unsigned long delta); | |||
329 | #define TestClearPageReclaim(page) test_and_clear_bit(PG_reclaim, &(page)->flags) | 327 | #define TestClearPageReclaim(page) test_and_clear_bit(PG_reclaim, &(page)->flags) |
330 | 328 | ||
331 | #define PageCompound(page) test_bit(PG_compound, &(page)->flags) | 329 | #define PageCompound(page) test_bit(PG_compound, &(page)->flags) |
332 | #define SetPageCompound(page) set_bit(PG_compound, &(page)->flags) | 330 | #define __SetPageCompound(page) __set_bit(PG_compound, &(page)->flags) |
333 | #define ClearPageCompound(page) clear_bit(PG_compound, &(page)->flags) | 331 | #define __ClearPageCompound(page) __clear_bit(PG_compound, &(page)->flags) |
334 | 332 | ||
335 | #ifdef CONFIG_SWAP | 333 | #ifdef CONFIG_SWAP |
336 | #define PageSwapCache(page) test_bit(PG_swapcache, &(page)->flags) | 334 | #define PageSwapCache(page) test_bit(PG_swapcache, &(page)->flags) |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 1709b5009d2e..ec3c32932620 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
@@ -852,6 +852,8 @@ | |||
852 | #define PCI_DEVICE_ID_QLOGIC_ISP2432 0x2432 | 852 | #define PCI_DEVICE_ID_QLOGIC_ISP2432 0x2432 |
853 | #define PCI_DEVICE_ID_QLOGIC_ISP2512 0x2512 | 853 | #define PCI_DEVICE_ID_QLOGIC_ISP2512 0x2512 |
854 | #define PCI_DEVICE_ID_QLOGIC_ISP2522 0x2522 | 854 | #define PCI_DEVICE_ID_QLOGIC_ISP2522 0x2522 |
855 | #define PCI_DEVICE_ID_QLOGIC_ISP5422 0x5422 | ||
856 | #define PCI_DEVICE_ID_QLOGIC_ISP5432 0x5432 | ||
855 | 857 | ||
856 | #define PCI_VENDOR_ID_CYRIX 0x1078 | 858 | #define PCI_VENDOR_ID_CYRIX 0x1078 |
857 | #define PCI_DEVICE_ID_CYRIX_5510 0x0000 | 859 | #define PCI_DEVICE_ID_CYRIX_5510 0x0000 |
@@ -1365,6 +1367,7 @@ | |||
1365 | #define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 | 1367 | #define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 |
1366 | #define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 | 1368 | #define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 |
1367 | #define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017 | 1369 | #define PCI_DEVICE_ID_SERVERWORKS_GCNB_LE 0x0017 |
1370 | #define PCI_DEVICE_ID_SERVERWORKS_EPB 0x0103 | ||
1368 | #define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200 | 1371 | #define PCI_DEVICE_ID_SERVERWORKS_OSB4 0x0200 |
1369 | #define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201 | 1372 | #define PCI_DEVICE_ID_SERVERWORKS_CSB5 0x0201 |
1370 | #define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203 | 1373 | #define PCI_DEVICE_ID_SERVERWORKS_CSB6 0x0203 |
@@ -1856,16 +1859,22 @@ | |||
1856 | #define PCI_DEVICE_ID_TIGON3_5705M 0x165d | 1859 | #define PCI_DEVICE_ID_TIGON3_5705M 0x165d |
1857 | #define PCI_DEVICE_ID_TIGON3_5705M_2 0x165e | 1860 | #define PCI_DEVICE_ID_TIGON3_5705M_2 0x165e |
1858 | #define PCI_DEVICE_ID_TIGON3_5714 0x1668 | 1861 | #define PCI_DEVICE_ID_TIGON3_5714 0x1668 |
1862 | #define PCI_DEVICE_ID_TIGON3_5714S 0x1669 | ||
1859 | #define PCI_DEVICE_ID_TIGON3_5780 0x166a | 1863 | #define PCI_DEVICE_ID_TIGON3_5780 0x166a |
1860 | #define PCI_DEVICE_ID_TIGON3_5780S 0x166b | 1864 | #define PCI_DEVICE_ID_TIGON3_5780S 0x166b |
1861 | #define PCI_DEVICE_ID_TIGON3_5705F 0x166e | 1865 | #define PCI_DEVICE_ID_TIGON3_5705F 0x166e |
1866 | #define PCI_DEVICE_ID_TIGON3_5754M 0x1672 | ||
1862 | #define PCI_DEVICE_ID_TIGON3_5750 0x1676 | 1867 | #define PCI_DEVICE_ID_TIGON3_5750 0x1676 |
1863 | #define PCI_DEVICE_ID_TIGON3_5751 0x1677 | 1868 | #define PCI_DEVICE_ID_TIGON3_5751 0x1677 |
1864 | #define PCI_DEVICE_ID_TIGON3_5715 0x1678 | 1869 | #define PCI_DEVICE_ID_TIGON3_5715 0x1678 |
1870 | #define PCI_DEVICE_ID_TIGON3_5715S 0x1679 | ||
1871 | #define PCI_DEVICE_ID_TIGON3_5754 0x167a | ||
1865 | #define PCI_DEVICE_ID_TIGON3_5750M 0x167c | 1872 | #define PCI_DEVICE_ID_TIGON3_5750M 0x167c |
1866 | #define PCI_DEVICE_ID_TIGON3_5751M 0x167d | 1873 | #define PCI_DEVICE_ID_TIGON3_5751M 0x167d |
1867 | #define PCI_DEVICE_ID_TIGON3_5751F 0x167e | 1874 | #define PCI_DEVICE_ID_TIGON3_5751F 0x167e |
1875 | #define PCI_DEVICE_ID_TIGON3_5787M 0x1693 | ||
1868 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 | 1876 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 |
1877 | #define PCI_DEVICE_ID_TIGON3_5787 0x169b | ||
1869 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c | 1878 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c |
1870 | #define PCI_DEVICE_ID_TIGON3_5789 0x169d | 1879 | #define PCI_DEVICE_ID_TIGON3_5789 0x169d |
1871 | #define PCI_DEVICE_ID_TIGON3_5702X 0x16a6 | 1880 | #define PCI_DEVICE_ID_TIGON3_5702X 0x16a6 |
diff --git a/include/linux/rtc.h b/include/linux/rtc.h index 0b2ba67ff13c..b739ac1f7ca0 100644 --- a/include/linux/rtc.h +++ b/include/linux/rtc.h | |||
@@ -11,8 +11,6 @@ | |||
11 | #ifndef _LINUX_RTC_H_ | 11 | #ifndef _LINUX_RTC_H_ |
12 | #define _LINUX_RTC_H_ | 12 | #define _LINUX_RTC_H_ |
13 | 13 | ||
14 | #include <linux/interrupt.h> | ||
15 | |||
16 | /* | 14 | /* |
17 | * The struct used to pass data via the following ioctl. Similar to the | 15 | * The struct used to pass data via the following ioctl. Similar to the |
18 | * struct tm in <time.h>, but it needs to be here so that the kernel | 16 | * struct tm in <time.h>, but it needs to be here so that the kernel |
@@ -95,6 +93,8 @@ struct rtc_pll_info { | |||
95 | 93 | ||
96 | #ifdef __KERNEL__ | 94 | #ifdef __KERNEL__ |
97 | 95 | ||
96 | #include <linux/interrupt.h> | ||
97 | |||
98 | typedef struct rtc_task { | 98 | typedef struct rtc_task { |
99 | void (*func)(void *private_data); | 99 | void (*func)(void *private_data); |
100 | void *private_data; | 100 | void *private_data; |
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index d50482ba27fe..d572d5376319 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
@@ -199,6 +199,7 @@ enum | |||
199 | #define RTPROT_BIRD 12 /* BIRD */ | 199 | #define RTPROT_BIRD 12 /* BIRD */ |
200 | #define RTPROT_DNROUTED 13 /* DECnet routing daemon */ | 200 | #define RTPROT_DNROUTED 13 /* DECnet routing daemon */ |
201 | #define RTPROT_XORP 14 /* XORP */ | 201 | #define RTPROT_XORP 14 /* XORP */ |
202 | #define RTPROT_NTK 15 /* Netsukuku */ | ||
202 | 203 | ||
203 | /* rtm_scope | 204 | /* rtm_scope |
204 | 205 | ||
@@ -733,6 +734,8 @@ enum | |||
733 | #define IFLA_MAP IFLA_MAP | 734 | #define IFLA_MAP IFLA_MAP |
734 | IFLA_WEIGHT, | 735 | IFLA_WEIGHT, |
735 | #define IFLA_WEIGHT IFLA_WEIGHT | 736 | #define IFLA_WEIGHT IFLA_WEIGHT |
737 | IFLA_OPERSTATE, | ||
738 | IFLA_LINKMODE, | ||
736 | __IFLA_MAX | 739 | __IFLA_MAX |
737 | }; | 740 | }; |
738 | 741 | ||
@@ -905,6 +908,7 @@ struct tcamsg | |||
905 | #ifdef __KERNEL__ | 908 | #ifdef __KERNEL__ |
906 | 909 | ||
907 | #include <linux/config.h> | 910 | #include <linux/config.h> |
911 | #include <linux/mutex.h> | ||
908 | 912 | ||
909 | extern size_t rtattr_strlcpy(char *dest, const struct rtattr *rta, size_t size); | 913 | extern size_t rtattr_strlcpy(char *dest, const struct rtattr *rta, size_t size); |
910 | static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) | 914 | static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str) |
@@ -1036,24 +1040,17 @@ __rta_reserve(struct sk_buff *skb, int attrtype, int attrlen) | |||
1036 | 1040 | ||
1037 | extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change); | 1041 | extern void rtmsg_ifinfo(int type, struct net_device *dev, unsigned change); |
1038 | 1042 | ||
1039 | extern struct semaphore rtnl_sem; | 1043 | /* RTNL is used as a global lock for all changes to network configuration */ |
1040 | |||
1041 | #define rtnl_shlock() down(&rtnl_sem) | ||
1042 | #define rtnl_shlock_nowait() down_trylock(&rtnl_sem) | ||
1043 | |||
1044 | #define rtnl_shunlock() do { up(&rtnl_sem); \ | ||
1045 | if (rtnl && rtnl->sk_receive_queue.qlen) \ | ||
1046 | rtnl->sk_data_ready(rtnl, 0); \ | ||
1047 | } while(0) | ||
1048 | |||
1049 | extern void rtnl_lock(void); | 1044 | extern void rtnl_lock(void); |
1050 | extern int rtnl_lock_interruptible(void); | ||
1051 | extern void rtnl_unlock(void); | 1045 | extern void rtnl_unlock(void); |
1046 | extern int rtnl_trylock(void); | ||
1047 | |||
1052 | extern void rtnetlink_init(void); | 1048 | extern void rtnetlink_init(void); |
1049 | extern void __rtnl_unlock(void); | ||
1053 | 1050 | ||
1054 | #define ASSERT_RTNL() do { \ | 1051 | #define ASSERT_RTNL() do { \ |
1055 | if (unlikely(down_trylock(&rtnl_sem) == 0)) { \ | 1052 | if (unlikely(rtnl_trylock())) { \ |
1056 | up(&rtnl_sem); \ | 1053 | rtnl_unlock(); \ |
1057 | printk(KERN_ERR "RTNL: assertion failed at %s (%d)\n", \ | 1054 | printk(KERN_ERR "RTNL: assertion failed at %s (%d)\n", \ |
1058 | __FILE__, __LINE__); \ | 1055 | __FILE__, __LINE__); \ |
1059 | dump_stack(); \ | 1056 | dump_stack(); \ |
diff --git a/include/linux/security.h b/include/linux/security.h index 7cbef482e13a..b18eb8cfa639 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
@@ -1286,7 +1286,8 @@ struct security_operations { | |||
1286 | int (*socket_setsockopt) (struct socket * sock, int level, int optname); | 1286 | int (*socket_setsockopt) (struct socket * sock, int level, int optname); |
1287 | int (*socket_shutdown) (struct socket * sock, int how); | 1287 | int (*socket_shutdown) (struct socket * sock, int how); |
1288 | int (*socket_sock_rcv_skb) (struct sock * sk, struct sk_buff * skb); | 1288 | int (*socket_sock_rcv_skb) (struct sock * sk, struct sk_buff * skb); |
1289 | int (*socket_getpeersec) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len); | 1289 | int (*socket_getpeersec_stream) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len); |
1290 | int (*socket_getpeersec_dgram) (struct sk_buff *skb, char **secdata, u32 *seclen); | ||
1290 | int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority); | 1291 | int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority); |
1291 | void (*sk_free_security) (struct sock *sk); | 1292 | void (*sk_free_security) (struct sock *sk); |
1292 | unsigned int (*sk_getsid) (struct sock *sk, struct flowi *fl, u8 dir); | 1293 | unsigned int (*sk_getsid) (struct sock *sk, struct flowi *fl, u8 dir); |
@@ -2741,10 +2742,16 @@ static inline int security_sock_rcv_skb (struct sock * sk, | |||
2741 | return security_ops->socket_sock_rcv_skb (sk, skb); | 2742 | return security_ops->socket_sock_rcv_skb (sk, skb); |
2742 | } | 2743 | } |
2743 | 2744 | ||
2744 | static inline int security_socket_getpeersec(struct socket *sock, char __user *optval, | 2745 | static inline int security_socket_getpeersec_stream(struct socket *sock, char __user *optval, |
2745 | int __user *optlen, unsigned len) | 2746 | int __user *optlen, unsigned len) |
2746 | { | 2747 | { |
2747 | return security_ops->socket_getpeersec(sock, optval, optlen, len); | 2748 | return security_ops->socket_getpeersec_stream(sock, optval, optlen, len); |
2749 | } | ||
2750 | |||
2751 | static inline int security_socket_getpeersec_dgram(struct sk_buff *skb, char **secdata, | ||
2752 | u32 *seclen) | ||
2753 | { | ||
2754 | return security_ops->socket_getpeersec_dgram(skb, secdata, seclen); | ||
2748 | } | 2755 | } |
2749 | 2756 | ||
2750 | static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) | 2757 | static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) |
@@ -2863,8 +2870,14 @@ static inline int security_sock_rcv_skb (struct sock * sk, | |||
2863 | return 0; | 2870 | return 0; |
2864 | } | 2871 | } |
2865 | 2872 | ||
2866 | static inline int security_socket_getpeersec(struct socket *sock, char __user *optval, | 2873 | static inline int security_socket_getpeersec_stream(struct socket *sock, char __user *optval, |
2867 | int __user *optlen, unsigned len) | 2874 | int __user *optlen, unsigned len) |
2875 | { | ||
2876 | return -ENOPROTOOPT; | ||
2877 | } | ||
2878 | |||
2879 | static inline int security_socket_getpeersec_dgram(struct sk_buff *skb, char **secdata, | ||
2880 | u32 *seclen) | ||
2868 | { | 2881 | { |
2869 | return -ENOPROTOOPT; | 2882 | return -ENOPROTOOPT; |
2870 | } | 2883 | } |
diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h index 4041122dabfc..c32e60e79dea 100644 --- a/include/linux/serial_core.h +++ b/include/linux/serial_core.h | |||
@@ -127,6 +127,9 @@ | |||
127 | /* Hilscher netx */ | 127 | /* Hilscher netx */ |
128 | #define PORT_NETX 71 | 128 | #define PORT_NETX 71 |
129 | 129 | ||
130 | /* SUN4V Hypervisor Console */ | ||
131 | #define PORT_SUNHV 72 | ||
132 | |||
130 | #ifdef __KERNEL__ | 133 | #ifdef __KERNEL__ |
131 | 134 | ||
132 | #include <linux/config.h> | 135 | #include <linux/config.h> |
@@ -366,6 +369,9 @@ void uart_parse_options(char *options, int *baud, int *parity, int *bits, | |||
366 | int uart_set_options(struct uart_port *port, struct console *co, int baud, | 369 | int uart_set_options(struct uart_port *port, struct console *co, int baud, |
367 | int parity, int bits, int flow); | 370 | int parity, int bits, int flow); |
368 | struct tty_driver *uart_console_device(struct console *co, int *index); | 371 | struct tty_driver *uart_console_device(struct console *co, int *index); |
372 | void uart_console_write(struct uart_port *port, const char *s, | ||
373 | unsigned int count, | ||
374 | void (*putchar)(struct uart_port *, int)); | ||
369 | 375 | ||
370 | /* | 376 | /* |
371 | * Port/driver registration/removal | 377 | * Port/driver registration/removal |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index ad7cc22bd424..613b9513f8b9 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -270,7 +270,6 @@ struct sk_buff { | |||
270 | 270 | ||
271 | void (*destructor)(struct sk_buff *skb); | 271 | void (*destructor)(struct sk_buff *skb); |
272 | #ifdef CONFIG_NETFILTER | 272 | #ifdef CONFIG_NETFILTER |
273 | __u32 nfmark; | ||
274 | struct nf_conntrack *nfct; | 273 | struct nf_conntrack *nfct; |
275 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | 274 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) |
276 | struct sk_buff *nfct_reasm; | 275 | struct sk_buff *nfct_reasm; |
@@ -278,6 +277,7 @@ struct sk_buff { | |||
278 | #ifdef CONFIG_BRIDGE_NETFILTER | 277 | #ifdef CONFIG_BRIDGE_NETFILTER |
279 | struct nf_bridge_info *nf_bridge; | 278 | struct nf_bridge_info *nf_bridge; |
280 | #endif | 279 | #endif |
280 | __u32 nfmark; | ||
281 | #endif /* CONFIG_NETFILTER */ | 281 | #endif /* CONFIG_NETFILTER */ |
282 | #ifdef CONFIG_NET_SCHED | 282 | #ifdef CONFIG_NET_SCHED |
283 | __u16 tc_index; /* traffic control index */ | 283 | __u16 tc_index; /* traffic control index */ |
@@ -304,6 +304,7 @@ struct sk_buff { | |||
304 | 304 | ||
305 | #include <asm/system.h> | 305 | #include <asm/system.h> |
306 | 306 | ||
307 | extern void kfree_skb(struct sk_buff *skb); | ||
307 | extern void __kfree_skb(struct sk_buff *skb); | 308 | extern void __kfree_skb(struct sk_buff *skb); |
308 | extern struct sk_buff *__alloc_skb(unsigned int size, | 309 | extern struct sk_buff *__alloc_skb(unsigned int size, |
309 | gfp_t priority, int fclone); | 310 | gfp_t priority, int fclone); |
@@ -404,22 +405,6 @@ static inline struct sk_buff *skb_get(struct sk_buff *skb) | |||
404 | */ | 405 | */ |
405 | 406 | ||
406 | /** | 407 | /** |
407 | * kfree_skb - free an sk_buff | ||
408 | * @skb: buffer to free | ||
409 | * | ||
410 | * Drop a reference to the buffer and free it if the usage count has | ||
411 | * hit zero. | ||
412 | */ | ||
413 | static inline void kfree_skb(struct sk_buff *skb) | ||
414 | { | ||
415 | if (likely(atomic_read(&skb->users) == 1)) | ||
416 | smp_rmb(); | ||
417 | else if (likely(!atomic_dec_and_test(&skb->users))) | ||
418 | return; | ||
419 | __kfree_skb(skb); | ||
420 | } | ||
421 | |||
422 | /** | ||
423 | * skb_cloned - is the buffer a clone | 408 | * skb_cloned - is the buffer a clone |
424 | * @skb: buffer to check | 409 | * @skb: buffer to check |
425 | * | 410 | * |
@@ -1174,12 +1159,14 @@ static inline int skb_linearize(struct sk_buff *skb, gfp_t gfp) | |||
1174 | */ | 1159 | */ |
1175 | 1160 | ||
1176 | static inline void skb_postpull_rcsum(struct sk_buff *skb, | 1161 | static inline void skb_postpull_rcsum(struct sk_buff *skb, |
1177 | const void *start, int len) | 1162 | const void *start, unsigned int len) |
1178 | { | 1163 | { |
1179 | if (skb->ip_summed == CHECKSUM_HW) | 1164 | if (skb->ip_summed == CHECKSUM_HW) |
1180 | skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); | 1165 | skb->csum = csum_sub(skb->csum, csum_partial(start, len, 0)); |
1181 | } | 1166 | } |
1182 | 1167 | ||
1168 | unsigned char *skb_pull_rcsum(struct sk_buff *skb, unsigned int len); | ||
1169 | |||
1183 | /** | 1170 | /** |
1184 | * pskb_trim_rcsum - trim received skb and update checksum | 1171 | * pskb_trim_rcsum - trim received skb and update checksum |
1185 | * @skb: buffer to trim | 1172 | * @skb: buffer to trim |
@@ -1351,16 +1338,6 @@ static inline void nf_conntrack_put_reasm(struct sk_buff *skb) | |||
1351 | kfree_skb(skb); | 1338 | kfree_skb(skb); |
1352 | } | 1339 | } |
1353 | #endif | 1340 | #endif |
1354 | static inline void nf_reset(struct sk_buff *skb) | ||
1355 | { | ||
1356 | nf_conntrack_put(skb->nfct); | ||
1357 | skb->nfct = NULL; | ||
1358 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | ||
1359 | nf_conntrack_put_reasm(skb->nfct_reasm); | ||
1360 | skb->nfct_reasm = NULL; | ||
1361 | #endif | ||
1362 | } | ||
1363 | |||
1364 | #ifdef CONFIG_BRIDGE_NETFILTER | 1341 | #ifdef CONFIG_BRIDGE_NETFILTER |
1365 | static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) | 1342 | static inline void nf_bridge_put(struct nf_bridge_info *nf_bridge) |
1366 | { | 1343 | { |
@@ -1373,6 +1350,20 @@ static inline void nf_bridge_get(struct nf_bridge_info *nf_bridge) | |||
1373 | atomic_inc(&nf_bridge->use); | 1350 | atomic_inc(&nf_bridge->use); |
1374 | } | 1351 | } |
1375 | #endif /* CONFIG_BRIDGE_NETFILTER */ | 1352 | #endif /* CONFIG_BRIDGE_NETFILTER */ |
1353 | static inline void nf_reset(struct sk_buff *skb) | ||
1354 | { | ||
1355 | nf_conntrack_put(skb->nfct); | ||
1356 | skb->nfct = NULL; | ||
1357 | #if defined(CONFIG_NF_CONNTRACK) || defined(CONFIG_NF_CONNTRACK_MODULE) | ||
1358 | nf_conntrack_put_reasm(skb->nfct_reasm); | ||
1359 | skb->nfct_reasm = NULL; | ||
1360 | #endif | ||
1361 | #ifdef CONFIG_BRIDGE_NETFILTER | ||
1362 | nf_bridge_put(skb->nf_bridge); | ||
1363 | skb->nf_bridge = NULL; | ||
1364 | #endif | ||
1365 | } | ||
1366 | |||
1376 | #else /* CONFIG_NETFILTER */ | 1367 | #else /* CONFIG_NETFILTER */ |
1377 | static inline void nf_reset(struct sk_buff *skb) {} | 1368 | static inline void nf_reset(struct sk_buff *skb) {} |
1378 | #endif /* CONFIG_NETFILTER */ | 1369 | #endif /* CONFIG_NETFILTER */ |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 8cf52939d0ab..2b28c849d75a 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
@@ -38,7 +38,6 @@ typedef struct kmem_cache kmem_cache_t; | |||
38 | #define SLAB_DEBUG_INITIAL 0x00000200UL /* Call constructor (as verifier) */ | 38 | #define SLAB_DEBUG_INITIAL 0x00000200UL /* Call constructor (as verifier) */ |
39 | #define SLAB_RED_ZONE 0x00000400UL /* Red zone objs in a cache */ | 39 | #define SLAB_RED_ZONE 0x00000400UL /* Red zone objs in a cache */ |
40 | #define SLAB_POISON 0x00000800UL /* Poison objects */ | 40 | #define SLAB_POISON 0x00000800UL /* Poison objects */ |
41 | #define SLAB_NO_REAP 0x00001000UL /* never reap from the cache */ | ||
42 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* align objs on a h/w cache lines */ | 41 | #define SLAB_HWCACHE_ALIGN 0x00002000UL /* align objs on a h/w cache lines */ |
43 | #define SLAB_CACHE_DMA 0x00004000UL /* use GFP_DMA memory */ | 42 | #define SLAB_CACHE_DMA 0x00004000UL /* use GFP_DMA memory */ |
44 | #define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* force alignment */ | 43 | #define SLAB_MUST_HWCACHE_ALIGN 0x00008000UL /* force alignment */ |
@@ -118,7 +117,7 @@ extern void *kzalloc(size_t, gfp_t); | |||
118 | */ | 117 | */ |
119 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) | 118 | static inline void *kcalloc(size_t n, size_t size, gfp_t flags) |
120 | { | 119 | { |
121 | if (n != 0 && size > INT_MAX / n) | 120 | if (n != 0 && size > ULONG_MAX / n) |
122 | return NULL; | 121 | return NULL; |
123 | return kzalloc(n * size, flags); | 122 | return kzalloc(n * size, flags); |
124 | } | 123 | } |
diff --git a/include/linux/smp.h b/include/linux/smp.h index 44153fdf73fc..d699a16b0cb2 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
@@ -52,23 +52,12 @@ extern void smp_cpus_done(unsigned int max_cpus); | |||
52 | /* | 52 | /* |
53 | * Call a function on all other processors | 53 | * Call a function on all other processors |
54 | */ | 54 | */ |
55 | extern int smp_call_function (void (*func) (void *info), void *info, | 55 | int smp_call_function(void(*func)(void *info), void *info, int retry, int wait); |
56 | int retry, int wait); | ||
57 | 56 | ||
58 | /* | 57 | /* |
59 | * Call a function on all processors | 58 | * Call a function on all processors |
60 | */ | 59 | */ |
61 | static inline int on_each_cpu(void (*func) (void *info), void *info, | 60 | int on_each_cpu(void (*func) (void *info), void *info, int retry, int wait); |
62 | int retry, int wait) | ||
63 | { | ||
64 | int ret = 0; | ||
65 | |||
66 | preempt_disable(); | ||
67 | ret = smp_call_function(func, info, retry, wait); | ||
68 | func(info); | ||
69 | preempt_enable(); | ||
70 | return ret; | ||
71 | } | ||
72 | 61 | ||
73 | #define MSG_ALL_BUT_SELF 0x8000 /* Assume <32768 CPU's */ | 62 | #define MSG_ALL_BUT_SELF 0x8000 /* Assume <32768 CPU's */ |
74 | #define MSG_ALL 0x8001 | 63 | #define MSG_ALL 0x8001 |
@@ -94,7 +83,13 @@ void smp_prepare_boot_cpu(void); | |||
94 | #define raw_smp_processor_id() 0 | 83 | #define raw_smp_processor_id() 0 |
95 | #define hard_smp_processor_id() 0 | 84 | #define hard_smp_processor_id() 0 |
96 | #define smp_call_function(func,info,retry,wait) ({ 0; }) | 85 | #define smp_call_function(func,info,retry,wait) ({ 0; }) |
97 | #define on_each_cpu(func,info,retry,wait) ({ func(info); 0; }) | 86 | #define on_each_cpu(func,info,retry,wait) \ |
87 | ({ \ | ||
88 | local_irq_disable(); \ | ||
89 | func(info); \ | ||
90 | local_irq_enable(); \ | ||
91 | 0; \ | ||
92 | }) | ||
98 | static inline void smp_send_reschedule(int cpu) { } | 93 | static inline void smp_send_reschedule(int cpu) { } |
99 | #define num_booting_cpus() 1 | 94 | #define num_booting_cpus() 1 |
100 | #define smp_prepare_boot_cpu() do {} while (0) | 95 | #define smp_prepare_boot_cpu() do {} while (0) |
diff --git a/include/linux/socket.h b/include/linux/socket.h index b02dda4ee83d..9ab2ddd80221 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
@@ -150,6 +150,7 @@ __KINLINE struct cmsghdr * cmsg_nxthdr (struct msghdr *__msg, struct cmsghdr *__ | |||
150 | 150 | ||
151 | #define SCM_RIGHTS 0x01 /* rw: access rights (array of int) */ | 151 | #define SCM_RIGHTS 0x01 /* rw: access rights (array of int) */ |
152 | #define SCM_CREDENTIALS 0x02 /* rw: struct ucred */ | 152 | #define SCM_CREDENTIALS 0x02 /* rw: struct ucred */ |
153 | #define SCM_SECURITY 0x03 /* rw: security label */ | ||
153 | 154 | ||
154 | struct ucred { | 155 | struct ucred { |
155 | __u32 pid; | 156 | __u32 pid; |
diff --git a/include/linux/sunrpc/svcsock.h b/include/linux/sunrpc/svcsock.h index d33c6face032..b4acb3d37c3f 100644 --- a/include/linux/sunrpc/svcsock.h +++ b/include/linux/sunrpc/svcsock.h | |||
@@ -36,7 +36,7 @@ struct svc_sock { | |||
36 | 36 | ||
37 | struct list_head sk_deferred; /* deferred requests that need to | 37 | struct list_head sk_deferred; /* deferred requests that need to |
38 | * be revisted */ | 38 | * be revisted */ |
39 | struct semaphore sk_sem; /* to serialize sending data */ | 39 | struct mutex sk_mutex; /* to serialize sending data */ |
40 | 40 | ||
41 | int (*sk_recvfrom)(struct svc_rqst *rqstp); | 41 | int (*sk_recvfrom)(struct svc_rqst *rqstp); |
42 | int (*sk_sendto)(struct svc_rqst *rqstp); | 42 | int (*sk_sendto)(struct svc_rqst *rqstp); |
diff --git a/include/linux/swap.h b/include/linux/swap.h index d572b19afb7d..12415dd94451 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
@@ -172,9 +172,24 @@ extern int rotate_reclaimable_page(struct page *page); | |||
172 | extern void swap_setup(void); | 172 | extern void swap_setup(void); |
173 | 173 | ||
174 | /* linux/mm/vmscan.c */ | 174 | /* linux/mm/vmscan.c */ |
175 | extern int try_to_free_pages(struct zone **, gfp_t); | 175 | extern unsigned long try_to_free_pages(struct zone **, gfp_t); |
176 | extern int shrink_all_memory(int); | 176 | extern unsigned long shrink_all_memory(unsigned long nr_pages); |
177 | extern int vm_swappiness; | 177 | extern int vm_swappiness; |
178 | extern int remove_mapping(struct address_space *mapping, struct page *page); | ||
179 | |||
180 | /* possible outcome of pageout() */ | ||
181 | typedef enum { | ||
182 | /* failed to write page out, page is locked */ | ||
183 | PAGE_KEEP, | ||
184 | /* move page to the active list, page is locked */ | ||
185 | PAGE_ACTIVATE, | ||
186 | /* page has been sent to the disk successfully, page is unlocked */ | ||
187 | PAGE_SUCCESS, | ||
188 | /* page is clean and locked */ | ||
189 | PAGE_CLEAN, | ||
190 | } pageout_t; | ||
191 | |||
192 | extern pageout_t pageout(struct page *page, struct address_space *mapping); | ||
178 | 193 | ||
179 | #ifdef CONFIG_NUMA | 194 | #ifdef CONFIG_NUMA |
180 | extern int zone_reclaim_mode; | 195 | extern int zone_reclaim_mode; |
@@ -188,25 +203,6 @@ static inline int zone_reclaim(struct zone *z, gfp_t mask, unsigned int order) | |||
188 | } | 203 | } |
189 | #endif | 204 | #endif |
190 | 205 | ||
191 | #ifdef CONFIG_MIGRATION | ||
192 | extern int isolate_lru_page(struct page *p); | ||
193 | extern int putback_lru_pages(struct list_head *l); | ||
194 | extern int migrate_page(struct page *, struct page *); | ||
195 | extern void migrate_page_copy(struct page *, struct page *); | ||
196 | extern int migrate_page_remove_references(struct page *, struct page *, int); | ||
197 | extern int migrate_pages(struct list_head *l, struct list_head *t, | ||
198 | struct list_head *moved, struct list_head *failed); | ||
199 | extern int fail_migrate_page(struct page *, struct page *); | ||
200 | #else | ||
201 | static inline int isolate_lru_page(struct page *p) { return -ENOSYS; } | ||
202 | static inline int putback_lru_pages(struct list_head *l) { return 0; } | ||
203 | static inline int migrate_pages(struct list_head *l, struct list_head *t, | ||
204 | struct list_head *moved, struct list_head *failed) { return -ENOSYS; } | ||
205 | /* Possible settings for the migrate_page() method in address_operations */ | ||
206 | #define migrate_page NULL | ||
207 | #define fail_migrate_page NULL | ||
208 | #endif | ||
209 | |||
210 | #ifdef CONFIG_MMU | 206 | #ifdef CONFIG_MMU |
211 | /* linux/mm/shmem.c */ | 207 | /* linux/mm/shmem.c */ |
212 | extern int shmem_unuse(swp_entry_t entry, struct page *page); | 208 | extern int shmem_unuse(swp_entry_t entry, struct page *page); |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index bac61db26456..76eaeff76f82 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
@@ -211,6 +211,7 @@ enum | |||
211 | NET_SCTP=17, | 211 | NET_SCTP=17, |
212 | NET_LLC=18, | 212 | NET_LLC=18, |
213 | NET_NETFILTER=19, | 213 | NET_NETFILTER=19, |
214 | NET_DCCP=20, | ||
214 | }; | 215 | }; |
215 | 216 | ||
216 | /* /proc/sys/kernel/random */ | 217 | /* /proc/sys/kernel/random */ |
@@ -261,6 +262,8 @@ enum | |||
261 | NET_CORE_DEV_WEIGHT=17, | 262 | NET_CORE_DEV_WEIGHT=17, |
262 | NET_CORE_SOMAXCONN=18, | 263 | NET_CORE_SOMAXCONN=18, |
263 | NET_CORE_BUDGET=19, | 264 | NET_CORE_BUDGET=19, |
265 | NET_CORE_AEVENT_ETIME=20, | ||
266 | NET_CORE_AEVENT_RSEQTH=21, | ||
264 | }; | 267 | }; |
265 | 268 | ||
266 | /* /proc/sys/net/ethernet */ | 269 | /* /proc/sys/net/ethernet */ |
@@ -397,6 +400,9 @@ enum | |||
397 | NET_TCP_CONG_CONTROL=110, | 400 | NET_TCP_CONG_CONTROL=110, |
398 | NET_TCP_ABC=111, | 401 | NET_TCP_ABC=111, |
399 | NET_IPV4_IPFRAG_MAX_DIST=112, | 402 | NET_IPV4_IPFRAG_MAX_DIST=112, |
403 | NET_TCP_MTU_PROBING=113, | ||
404 | NET_TCP_BASE_MSS=114, | ||
405 | NET_IPV4_TCP_WORKAROUND_SIGNED_WINDOWS=115, | ||
400 | }; | 406 | }; |
401 | 407 | ||
402 | enum { | 408 | enum { |
@@ -451,6 +457,7 @@ enum | |||
451 | NET_IPV4_CONF_ARP_ANNOUNCE=18, | 457 | NET_IPV4_CONF_ARP_ANNOUNCE=18, |
452 | NET_IPV4_CONF_ARP_IGNORE=19, | 458 | NET_IPV4_CONF_ARP_IGNORE=19, |
453 | NET_IPV4_CONF_PROMOTE_SECONDARIES=20, | 459 | NET_IPV4_CONF_PROMOTE_SECONDARIES=20, |
460 | NET_IPV4_CONF_ARP_ACCEPT=21, | ||
454 | __NET_IPV4_CONF_MAX | 461 | __NET_IPV4_CONF_MAX |
455 | }; | 462 | }; |
456 | 463 | ||
@@ -531,6 +538,11 @@ enum { | |||
531 | NET_IPV6_MAX_DESYNC_FACTOR=15, | 538 | NET_IPV6_MAX_DESYNC_FACTOR=15, |
532 | NET_IPV6_MAX_ADDRESSES=16, | 539 | NET_IPV6_MAX_ADDRESSES=16, |
533 | NET_IPV6_FORCE_MLD_VERSION=17, | 540 | NET_IPV6_FORCE_MLD_VERSION=17, |
541 | NET_IPV6_ACCEPT_RA_DEFRTR=18, | ||
542 | NET_IPV6_ACCEPT_RA_PINFO=19, | ||
543 | NET_IPV6_ACCEPT_RA_RTR_PREF=20, | ||
544 | NET_IPV6_RTR_PROBE_INTERVAL=21, | ||
545 | NET_IPV6_ACCEPT_RA_RT_INFO_MAX_PLEN=22, | ||
534 | __NET_IPV6_MAX | 546 | __NET_IPV6_MAX |
535 | }; | 547 | }; |
536 | 548 | ||
@@ -562,6 +574,21 @@ enum { | |||
562 | __NET_NEIGH_MAX | 574 | __NET_NEIGH_MAX |
563 | }; | 575 | }; |
564 | 576 | ||
577 | /* /proc/sys/net/dccp */ | ||
578 | enum { | ||
579 | NET_DCCP_DEFAULT=1, | ||
580 | }; | ||
581 | |||
582 | /* /proc/sys/net/dccp/default */ | ||
583 | enum { | ||
584 | NET_DCCP_DEFAULT_SEQ_WINDOW = 1, | ||
585 | NET_DCCP_DEFAULT_RX_CCID = 2, | ||
586 | NET_DCCP_DEFAULT_TX_CCID = 3, | ||
587 | NET_DCCP_DEFAULT_ACK_RATIO = 4, | ||
588 | NET_DCCP_DEFAULT_SEND_ACKVEC = 5, | ||
589 | NET_DCCP_DEFAULT_SEND_NDP = 6, | ||
590 | }; | ||
591 | |||
565 | /* /proc/sys/net/ipx */ | 592 | /* /proc/sys/net/ipx */ |
566 | enum { | 593 | enum { |
567 | NET_IPX_PPROP_BROADCASTING=1, | 594 | NET_IPX_PPROP_BROADCASTING=1, |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index f2bb2396853f..542d39596bd8 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
@@ -343,6 +343,12 @@ struct tcp_sock { | |||
343 | __u32 seq; | 343 | __u32 seq; |
344 | __u32 time; | 344 | __u32 time; |
345 | } rcvq_space; | 345 | } rcvq_space; |
346 | |||
347 | /* TCP-specific MTU probe information. */ | ||
348 | struct { | ||
349 | __u32 probe_seq_start; | ||
350 | __u32 probe_seq_end; | ||
351 | } mtu_probe; | ||
346 | }; | 352 | }; |
347 | 353 | ||
348 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) | 354 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 827cc6de5f5c..130d125fda12 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
@@ -1018,8 +1018,6 @@ extern int usb_get_descriptor(struct usb_device *dev, unsigned char desctype, | |||
1018 | unsigned char descindex, void *buf, int size); | 1018 | unsigned char descindex, void *buf, int size); |
1019 | extern int usb_get_status(struct usb_device *dev, | 1019 | extern int usb_get_status(struct usb_device *dev, |
1020 | int type, int target, void *data); | 1020 | int type, int target, void *data); |
1021 | extern int usb_get_string(struct usb_device *dev, | ||
1022 | unsigned short langid, unsigned char index, void *buf, int size); | ||
1023 | extern int usb_string(struct usb_device *dev, int index, | 1021 | extern int usb_string(struct usb_device *dev, int index, |
1024 | char *buf, size_t size); | 1022 | char *buf, size_t size); |
1025 | 1023 | ||
diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h index ff81117eb733..1d78870ed8af 100644 --- a/include/linux/usb_gadget.h +++ b/include/linux/usb_gadget.h | |||
@@ -801,7 +801,9 @@ struct usb_gadget_driver { | |||
801 | * Call this in your gadget driver's module initialization function, | 801 | * Call this in your gadget driver's module initialization function, |
802 | * to tell the underlying usb controller driver about your driver. | 802 | * to tell the underlying usb controller driver about your driver. |
803 | * The driver's bind() function will be called to bind it to a | 803 | * The driver's bind() function will be called to bind it to a |
804 | * gadget. This function must be called in a context that can sleep. | 804 | * gadget before this registration call returns. It's expected that |
805 | * the bind() functions will be in init sections. | ||
806 | * This function must be called in a context that can sleep. | ||
805 | */ | 807 | */ |
806 | int usb_gadget_register_driver (struct usb_gadget_driver *driver); | 808 | int usb_gadget_register_driver (struct usb_gadget_driver *driver); |
807 | 809 | ||
@@ -814,7 +816,8 @@ int usb_gadget_register_driver (struct usb_gadget_driver *driver); | |||
814 | * going away. If the controller is connected to a USB host, | 816 | * going away. If the controller is connected to a USB host, |
815 | * it will first disconnect(). The driver is also requested | 817 | * it will first disconnect(). The driver is also requested |
816 | * to unbind() and clean up any device state, before this procedure | 818 | * to unbind() and clean up any device state, before this procedure |
817 | * finally returns. | 819 | * finally returns. It's expected that the unbind() functions |
820 | * will in in exit sections, so may not be linked in some kernels. | ||
818 | * This function must be called in a context that can sleep. | 821 | * This function must be called in a context that can sleep. |
819 | */ | 822 | */ |
820 | int usb_gadget_unregister_driver (struct usb_gadget_driver *driver); | 823 | int usb_gadget_unregister_driver (struct usb_gadget_driver *driver); |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 5208b12d5550..724cfbf54b8a 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
@@ -17,11 +17,12 @@ | |||
17 | #include <linux/time.h> /* need struct timeval */ | 17 | #include <linux/time.h> /* need struct timeval */ |
18 | #include <linux/poll.h> | 18 | #include <linux/poll.h> |
19 | #include <linux/device.h> | 19 | #include <linux/device.h> |
20 | #include <linux/mutex.h> | ||
20 | #endif | 21 | #endif |
21 | #include <linux/compiler.h> /* need __user */ | 22 | #include <linux/compiler.h> /* need __user */ |
22 | 23 | ||
23 | 24 | ||
24 | #define OBSOLETE_OWNER 1 /* It will be removed for 2.6.15 */ | 25 | #define OBSOLETE_OWNER 1 /* It will be removed for 2.6.17 */ |
25 | #define HAVE_V4L2 1 | 26 | #define HAVE_V4L2 1 |
26 | 27 | ||
27 | /* | 28 | /* |
@@ -48,6 +49,16 @@ | |||
48 | 49 | ||
49 | #ifdef __KERNEL__ | 50 | #ifdef __KERNEL__ |
50 | 51 | ||
52 | /* Minor device allocation */ | ||
53 | #define MINOR_VFL_TYPE_GRABBER_MIN 0 | ||
54 | #define MINOR_VFL_TYPE_GRABBER_MAX 63 | ||
55 | #define MINOR_VFL_TYPE_RADIO_MIN 64 | ||
56 | #define MINOR_VFL_TYPE_RADIO_MAX 127 | ||
57 | #define MINOR_VFL_TYPE_VTX_MIN 192 | ||
58 | #define MINOR_VFL_TYPE_VTX_MAX 223 | ||
59 | #define MINOR_VFL_TYPE_VBI_MIN 224 | ||
60 | #define MINOR_VFL_TYPE_VBI_MAX 255 | ||
61 | |||
51 | #define VFL_TYPE_GRABBER 0 | 62 | #define VFL_TYPE_GRABBER 0 |
52 | #define VFL_TYPE_VBI 1 | 63 | #define VFL_TYPE_VBI 1 |
53 | #define VFL_TYPE_RADIO 2 | 64 | #define VFL_TYPE_RADIO 2 |
@@ -80,7 +91,7 @@ struct video_device | |||
80 | 91 | ||
81 | /* for videodev.c intenal usage -- please don't touch */ | 92 | /* for videodev.c intenal usage -- please don't touch */ |
82 | int users; /* video_exclusive_{open|close} ... */ | 93 | int users; /* video_exclusive_{open|close} ... */ |
83 | struct semaphore lock; /* ... helper function uses these */ | 94 | struct mutex lock; /* ... helper function uses these */ |
84 | char devfs_name[64]; /* devfs */ | 95 | char devfs_name[64]; /* devfs */ |
85 | struct class_device class_dev; /* sysfs */ | 96 | struct class_device class_dev; /* sysfs */ |
86 | }; | 97 | }; |
@@ -952,13 +963,68 @@ struct v4l2_sliced_vbi_format | |||
952 | __u32 reserved[2]; /* must be zero */ | 963 | __u32 reserved[2]; /* must be zero */ |
953 | }; | 964 | }; |
954 | 965 | ||
955 | #define V4L2_SLICED_TELETEXT_B (0x0001) | 966 | /* Teletext World System Teletext |
956 | #define V4L2_SLICED_VPS (0x0400) | 967 | (WST), defined on ITU-R BT.653-2 */ |
957 | #define V4L2_SLICED_CAPTION_525 (0x1000) | 968 | #define V4L2_SLICED_TELETEXT_PAL_B (0x000001) |
958 | #define V4L2_SLICED_WSS_625 (0x4000) | 969 | #define V4L2_SLICED_TELETEXT_PAL_C (0x000002) |
959 | 970 | #define V4L2_SLICED_TELETEXT_NTSC_B (0x000010) | |
960 | #define V4L2_SLICED_VBI_525 (V4L2_SLICED_CAPTION_525) | 971 | #define V4L2_SLICED_TELETEXT_SECAM (0x000020) |
961 | #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_B | V4L2_SLICED_VPS | V4L2_SLICED_WSS_625) | 972 | |
973 | /* Teletext North American Broadcast Teletext Specification | ||
974 | (NABTS), defined on ITU-R BT.653-2 */ | ||
975 | #define V4L2_SLICED_TELETEXT_NTSC_C (0x000040) | ||
976 | #define V4L2_SLICED_TELETEXT_NTSC_D (0x000080) | ||
977 | |||
978 | /* Video Program System, defined on ETS 300 231*/ | ||
979 | #define V4L2_SLICED_VPS (0x000400) | ||
980 | |||
981 | /* Closed Caption, defined on EIA-608 */ | ||
982 | #define V4L2_SLICED_CAPTION_525 (0x001000) | ||
983 | #define V4L2_SLICED_CAPTION_625 (0x002000) | ||
984 | |||
985 | /* Wide Screen System, defined on ITU-R BT1119.1 */ | ||
986 | #define V4L2_SLICED_WSS_625 (0x004000) | ||
987 | |||
988 | /* Wide Screen System, defined on IEC 61880 */ | ||
989 | #define V4L2_SLICED_WSS_525 (0x008000) | ||
990 | |||
991 | /* Vertical Interval Timecode (VITC), defined on SMPTE 12M */ | ||
992 | #define V4l2_SLICED_VITC_625 (0x010000) | ||
993 | #define V4l2_SLICED_VITC_525 (0x020000) | ||
994 | |||
995 | #define V4L2_SLICED_TELETEXT_B (V4L2_SLICED_TELETEXT_PAL_B |\ | ||
996 | V4L2_SLICED_TELETEXT_NTSC_B) | ||
997 | |||
998 | #define V4L2_SLICED_TELETEXT (V4L2_SLICED_TELETEXT_PAL_B |\ | ||
999 | V4L2_SLICED_TELETEXT_PAL_C |\ | ||
1000 | V4L2_SLICED_TELETEXT_SECAM |\ | ||
1001 | V4L2_SLICED_TELETEXT_NTSC_B |\ | ||
1002 | V4L2_SLICED_TELETEXT_NTSC_C |\ | ||
1003 | V4L2_SLICED_TELETEXT_NTSC_D) | ||
1004 | |||
1005 | #define V4L2_SLICED_CAPTION (V4L2_SLICED_CAPTION_525 |\ | ||
1006 | V4L2_SLICED_CAPTION_625) | ||
1007 | |||
1008 | #define V4L2_SLICED_WSS (V4L2_SLICED_WSS_525 |\ | ||
1009 | V4L2_SLICED_WSS_625) | ||
1010 | |||
1011 | #define V4L2_SLICED_VITC (V4L2_SLICED_VITC_525 |\ | ||
1012 | V4L2_SLICED_VITC_625) | ||
1013 | |||
1014 | #define V4L2_SLICED_VBI_525 (V4L2_SLICED_TELETEXT_NTSC_B |\ | ||
1015 | V4L2_SLICED_TELETEXT_NTSC_C |\ | ||
1016 | V4L2_SLICED_TELETEXT_NTSC_D |\ | ||
1017 | V4L2_SLICED_CAPTION_525 |\ | ||
1018 | V4L2_SLICED_WSS_525 |\ | ||
1019 | V4l2_SLICED_VITC_525) | ||
1020 | |||
1021 | #define V4L2_SLICED_VBI_625 (V4L2_SLICED_TELETEXT_PAL_B |\ | ||
1022 | V4L2_SLICED_TELETEXT_PAL_C |\ | ||
1023 | V4L2_SLICED_TELETEXT_SECAM |\ | ||
1024 | V4L2_SLICED_VPS |\ | ||
1025 | V4L2_SLICED_CAPTION_625 |\ | ||
1026 | V4L2_SLICED_WSS_625 |\ | ||
1027 | V4l2_SLICED_VITC_625) | ||
962 | 1028 | ||
963 | struct v4l2_sliced_vbi_cap | 1029 | struct v4l2_sliced_vbi_cap |
964 | { | 1030 | { |
diff --git a/include/linux/workqueue.h b/include/linux/workqueue.h index 86b111300231..957c21c16d62 100644 --- a/include/linux/workqueue.h +++ b/include/linux/workqueue.h | |||
@@ -20,6 +20,10 @@ struct work_struct { | |||
20 | struct timer_list timer; | 20 | struct timer_list timer; |
21 | }; | 21 | }; |
22 | 22 | ||
23 | struct execute_work { | ||
24 | struct work_struct work; | ||
25 | }; | ||
26 | |||
23 | #define __WORK_INITIALIZER(n, f, d) { \ | 27 | #define __WORK_INITIALIZER(n, f, d) { \ |
24 | .entry = { &(n).entry, &(n).entry }, \ | 28 | .entry = { &(n).entry, &(n).entry }, \ |
25 | .func = (f), \ | 29 | .func = (f), \ |
@@ -74,6 +78,8 @@ extern void init_workqueues(void); | |||
74 | void cancel_rearming_delayed_work(struct work_struct *work); | 78 | void cancel_rearming_delayed_work(struct work_struct *work); |
75 | void cancel_rearming_delayed_workqueue(struct workqueue_struct *, | 79 | void cancel_rearming_delayed_workqueue(struct workqueue_struct *, |
76 | struct work_struct *); | 80 | struct work_struct *); |
81 | int execute_in_process_context(void (*fn)(void *), void *, | ||
82 | struct execute_work *); | ||
77 | 83 | ||
78 | /* | 84 | /* |
79 | * Kill off a pending schedule_delayed_work(). Note that the work callback | 85 | * Kill off a pending schedule_delayed_work(). Note that the work callback |
diff --git a/include/linux/x25.h b/include/linux/x25.h index 16d44931afa0..d035e4e87d07 100644 --- a/include/linux/x25.h +++ b/include/linux/x25.h | |||
@@ -11,6 +11,8 @@ | |||
11 | #ifndef X25_KERNEL_H | 11 | #ifndef X25_KERNEL_H |
12 | #define X25_KERNEL_H | 12 | #define X25_KERNEL_H |
13 | 13 | ||
14 | #include <linux/types.h> | ||
15 | |||
14 | #define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0) | 16 | #define SIOCX25GSUBSCRIP (SIOCPROTOPRIVATE + 0) |
15 | #define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1) | 17 | #define SIOCX25SSUBSCRIP (SIOCPROTOPRIVATE + 1) |
16 | #define SIOCX25GFACILITIES (SIOCPROTOPRIVATE + 2) | 18 | #define SIOCX25GFACILITIES (SIOCPROTOPRIVATE + 2) |
@@ -21,6 +23,8 @@ | |||
21 | #define SIOCX25SCUDMATCHLEN (SIOCPROTOPRIVATE + 7) | 23 | #define SIOCX25SCUDMATCHLEN (SIOCPROTOPRIVATE + 7) |
22 | #define SIOCX25CALLACCPTAPPRV (SIOCPROTOPRIVATE + 8) | 24 | #define SIOCX25CALLACCPTAPPRV (SIOCPROTOPRIVATE + 8) |
23 | #define SIOCX25SENDCALLACCPT (SIOCPROTOPRIVATE + 9) | 25 | #define SIOCX25SENDCALLACCPT (SIOCPROTOPRIVATE + 9) |
26 | #define SIOCX25GDTEFACILITIES (SIOCPROTOPRIVATE + 10) | ||
27 | #define SIOCX25SDTEFACILITIES (SIOCPROTOPRIVATE + 11) | ||
24 | 28 | ||
25 | /* | 29 | /* |
26 | * Values for {get,set}sockopt. | 30 | * Values for {get,set}sockopt. |
@@ -77,6 +81,8 @@ struct x25_subscrip_struct { | |||
77 | #define X25_MASK_PACKET_SIZE 0x04 | 81 | #define X25_MASK_PACKET_SIZE 0x04 |
78 | #define X25_MASK_WINDOW_SIZE 0x08 | 82 | #define X25_MASK_WINDOW_SIZE 0x08 |
79 | 83 | ||
84 | #define X25_MASK_CALLING_AE 0x10 | ||
85 | #define X25_MASK_CALLED_AE 0x20 | ||
80 | 86 | ||
81 | 87 | ||
82 | /* | 88 | /* |
@@ -99,6 +105,26 @@ struct x25_facilities { | |||
99 | }; | 105 | }; |
100 | 106 | ||
101 | /* | 107 | /* |
108 | * ITU DTE facilities | ||
109 | * Only the called and calling address | ||
110 | * extension are currently implemented. | ||
111 | * The rest are in place to avoid the struct | ||
112 | * changing size if someone needs them later | ||
113 | */ | ||
114 | |||
115 | struct x25_dte_facilities { | ||
116 | __u16 delay_cumul; | ||
117 | __u16 delay_target; | ||
118 | __u16 delay_max; | ||
119 | __u8 min_throughput; | ||
120 | __u8 expedited; | ||
121 | __u8 calling_len; | ||
122 | __u8 called_len; | ||
123 | __u8 calling_ae[20]; | ||
124 | __u8 called_ae[20]; | ||
125 | }; | ||
126 | |||
127 | /* | ||
102 | * Call User Data structure. | 128 | * Call User Data structure. |
103 | */ | 129 | */ |
104 | struct x25_calluserdata { | 130 | struct x25_calluserdata { |
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 82fbb758e28f..6b42cc474c01 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
@@ -156,6 +156,10 @@ enum { | |||
156 | XFRM_MSG_FLUSHPOLICY, | 156 | XFRM_MSG_FLUSHPOLICY, |
157 | #define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY | 157 | #define XFRM_MSG_FLUSHPOLICY XFRM_MSG_FLUSHPOLICY |
158 | 158 | ||
159 | XFRM_MSG_NEWAE, | ||
160 | #define XFRM_MSG_NEWAE XFRM_MSG_NEWAE | ||
161 | XFRM_MSG_GETAE, | ||
162 | #define XFRM_MSG_GETAE XFRM_MSG_GETAE | ||
159 | __XFRM_MSG_MAX | 163 | __XFRM_MSG_MAX |
160 | }; | 164 | }; |
161 | #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1) | 165 | #define XFRM_MSG_MAX (__XFRM_MSG_MAX - 1) |
@@ -194,6 +198,21 @@ struct xfrm_encap_tmpl { | |||
194 | xfrm_address_t encap_oa; | 198 | xfrm_address_t encap_oa; |
195 | }; | 199 | }; |
196 | 200 | ||
201 | /* AEVENT flags */ | ||
202 | enum xfrm_ae_ftype_t { | ||
203 | XFRM_AE_UNSPEC, | ||
204 | XFRM_AE_RTHR=1, /* replay threshold*/ | ||
205 | XFRM_AE_RVAL=2, /* replay value */ | ||
206 | XFRM_AE_LVAL=4, /* lifetime value */ | ||
207 | XFRM_AE_ETHR=8, /* expiry timer threshold */ | ||
208 | XFRM_AE_CR=16, /* Event cause is replay update */ | ||
209 | XFRM_AE_CE=32, /* Event cause is timer expiry */ | ||
210 | XFRM_AE_CU=64, /* Event cause is policy update */ | ||
211 | __XFRM_AE_MAX | ||
212 | |||
213 | #define XFRM_AE_MAX (__XFRM_AE_MAX - 1) | ||
214 | }; | ||
215 | |||
197 | /* Netlink message attributes. */ | 216 | /* Netlink message attributes. */ |
198 | enum xfrm_attr_type_t { | 217 | enum xfrm_attr_type_t { |
199 | XFRMA_UNSPEC, | 218 | XFRMA_UNSPEC, |
@@ -205,6 +224,10 @@ enum xfrm_attr_type_t { | |||
205 | XFRMA_SA, | 224 | XFRMA_SA, |
206 | XFRMA_POLICY, | 225 | XFRMA_POLICY, |
207 | XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ | 226 | XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ |
227 | XFRMA_LTIME_VAL, | ||
228 | XFRMA_REPLAY_VAL, | ||
229 | XFRMA_REPLAY_THRESH, | ||
230 | XFRMA_ETIMER_THRESH, | ||
208 | __XFRMA_MAX | 231 | __XFRMA_MAX |
209 | 232 | ||
210 | #define XFRMA_MAX (__XFRMA_MAX - 1) | 233 | #define XFRMA_MAX (__XFRMA_MAX - 1) |
@@ -235,6 +258,11 @@ struct xfrm_usersa_id { | |||
235 | __u8 proto; | 258 | __u8 proto; |
236 | }; | 259 | }; |
237 | 260 | ||
261 | struct xfrm_aevent_id { | ||
262 | struct xfrm_usersa_id sa_id; | ||
263 | __u32 flags; | ||
264 | }; | ||
265 | |||
238 | struct xfrm_userspi_info { | 266 | struct xfrm_userspi_info { |
239 | struct xfrm_usersa_info info; | 267 | struct xfrm_usersa_info info; |
240 | __u32 min; | 268 | __u32 min; |
@@ -306,6 +334,8 @@ enum xfrm_nlgroups { | |||
306 | #define XFRMNLGRP_SA XFRMNLGRP_SA | 334 | #define XFRMNLGRP_SA XFRMNLGRP_SA |
307 | XFRMNLGRP_POLICY, | 335 | XFRMNLGRP_POLICY, |
308 | #define XFRMNLGRP_POLICY XFRMNLGRP_POLICY | 336 | #define XFRMNLGRP_POLICY XFRMNLGRP_POLICY |
337 | XFRMNLGRP_AEVENTS, | ||
338 | #define XFRMNLGRP_AEVENTS XFRMNLGRP_AEVENTS | ||
309 | __XFRMNLGRP_MAX | 339 | __XFRMNLGRP_MAX |
310 | }; | 340 | }; |
311 | #define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) | 341 | #define XFRMNLGRP_MAX (__XFRMNLGRP_MAX - 1) |