diff options
Diffstat (limited to 'include/linux')
36 files changed, 551 insertions, 343 deletions
diff --git a/include/linux/bio.h b/include/linux/bio.h index 685fd3720df5..b60ffe32cd21 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -292,6 +292,8 @@ extern struct bio *bio_clone(struct bio *, gfp_t); | |||
| 292 | extern void bio_init(struct bio *); | 292 | extern void bio_init(struct bio *); |
| 293 | 293 | ||
| 294 | extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); | 294 | extern int bio_add_page(struct bio *, struct page *, unsigned int,unsigned int); |
| 295 | extern int bio_add_pc_page(struct request_queue *, struct bio *, struct page *, | ||
| 296 | unsigned int, unsigned int); | ||
| 295 | extern int bio_get_nr_vecs(struct block_device *); | 297 | extern int bio_get_nr_vecs(struct block_device *); |
| 296 | extern struct bio *bio_map_user(struct request_queue *, struct block_device *, | 298 | extern struct bio *bio_map_user(struct request_queue *, struct block_device *, |
| 297 | unsigned long, unsigned int, int); | 299 | unsigned long, unsigned int, int); |
diff --git a/include/linux/bitops.h b/include/linux/bitops.h index 38c2fb7ebe09..6a2a19f14bb2 100644 --- a/include/linux/bitops.h +++ b/include/linux/bitops.h | |||
| @@ -76,6 +76,15 @@ static __inline__ int generic_fls(int x) | |||
| 76 | */ | 76 | */ |
| 77 | #include <asm/bitops.h> | 77 | #include <asm/bitops.h> |
| 78 | 78 | ||
| 79 | |||
| 80 | static inline int generic_fls64(__u64 x) | ||
| 81 | { | ||
| 82 | __u32 h = x >> 32; | ||
| 83 | if (h) | ||
| 84 | return fls(x) + 32; | ||
| 85 | return fls(x); | ||
| 86 | } | ||
| 87 | |||
| 79 | static __inline__ int get_bitmask_order(unsigned int count) | 88 | static __inline__ int get_bitmask_order(unsigned int count) |
| 80 | { | 89 | { |
| 81 | int order; | 90 | int order; |
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index a33a31e71bbc..a18500d196e1 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -184,6 +184,7 @@ struct request { | |||
| 184 | void *sense; | 184 | void *sense; |
| 185 | 185 | ||
| 186 | unsigned int timeout; | 186 | unsigned int timeout; |
| 187 | int retries; | ||
| 187 | 188 | ||
| 188 | /* | 189 | /* |
| 189 | * For Power Management requests | 190 | * For Power Management requests |
| @@ -558,6 +559,7 @@ extern void blk_unregister_queue(struct gendisk *disk); | |||
| 558 | extern void register_disk(struct gendisk *dev); | 559 | extern void register_disk(struct gendisk *dev); |
| 559 | extern void generic_make_request(struct bio *bio); | 560 | extern void generic_make_request(struct bio *bio); |
| 560 | extern void blk_put_request(struct request *); | 561 | extern void blk_put_request(struct request *); |
| 562 | extern void __blk_put_request(request_queue_t *, struct request *); | ||
| 561 | extern void blk_end_sync_rq(struct request *rq); | 563 | extern void blk_end_sync_rq(struct request *rq); |
| 562 | extern void blk_attempt_remerge(request_queue_t *, struct request *); | 564 | extern void blk_attempt_remerge(request_queue_t *, struct request *); |
| 563 | extern struct request *blk_get_request(request_queue_t *, int, gfp_t); | 565 | extern struct request *blk_get_request(request_queue_t *, int, gfp_t); |
| @@ -579,6 +581,10 @@ extern int blk_rq_map_kern(request_queue_t *, struct request *, void *, unsigned | |||
| 579 | extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int); | 581 | extern int blk_rq_map_user_iov(request_queue_t *, struct request *, struct sg_iovec *, int); |
| 580 | extern int blk_execute_rq(request_queue_t *, struct gendisk *, | 582 | extern int blk_execute_rq(request_queue_t *, struct gendisk *, |
| 581 | struct request *, int); | 583 | struct request *, int); |
| 584 | extern void blk_execute_rq_nowait(request_queue_t *, struct gendisk *, | ||
| 585 | struct request *, int, | ||
| 586 | void (*done)(struct request *)); | ||
| 587 | |||
| 582 | static inline request_queue_t *bdev_get_queue(struct block_device *bdev) | 588 | static inline request_queue_t *bdev_get_queue(struct block_device *bdev) |
| 583 | { | 589 | { |
| 584 | return bdev->bd_disk->queue; | 590 | return bdev->bd_disk->queue; |
| @@ -696,7 +702,8 @@ extern int blkdev_issue_flush(struct block_device *, sector_t *); | |||
| 696 | 702 | ||
| 697 | #define MAX_PHYS_SEGMENTS 128 | 703 | #define MAX_PHYS_SEGMENTS 128 |
| 698 | #define MAX_HW_SEGMENTS 128 | 704 | #define MAX_HW_SEGMENTS 128 |
| 699 | #define MAX_SECTORS 255 | 705 | #define SAFE_MAX_SECTORS 255 |
| 706 | #define BLK_DEF_MAX_SECTORS 1024 | ||
| 700 | 707 | ||
| 701 | #define MAX_SEGMENT_SIZE 65536 | 708 | #define MAX_SEGMENT_SIZE 65536 |
| 702 | 709 | ||
diff --git a/include/linux/cpufreq.h b/include/linux/cpufreq.h index d068176b7ad7..c31650df9241 100644 --- a/include/linux/cpufreq.h +++ b/include/linux/cpufreq.h | |||
| @@ -256,6 +256,16 @@ int cpufreq_update_policy(unsigned int cpu); | |||
| 256 | /* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */ | 256 | /* query the current CPU frequency (in kHz). If zero, cpufreq couldn't detect it */ |
| 257 | unsigned int cpufreq_get(unsigned int cpu); | 257 | unsigned int cpufreq_get(unsigned int cpu); |
| 258 | 258 | ||
| 259 | /* query the last known CPU freq (in kHz). If zero, cpufreq couldn't detect it */ | ||
| 260 | #ifdef CONFIG_CPU_FREQ | ||
| 261 | unsigned int cpufreq_quick_get(unsigned int cpu); | ||
| 262 | #else | ||
| 263 | static inline unsigned int cpufreq_quick_get(unsigned int cpu) | ||
| 264 | { | ||
| 265 | return 0; | ||
| 266 | } | ||
| 267 | #endif | ||
| 268 | |||
| 259 | 269 | ||
| 260 | /********************************************************************* | 270 | /********************************************************************* |
| 261 | * CPUFREQ DEFAULT GOVERNOR * | 271 | * CPUFREQ DEFAULT GOVERNOR * |
diff --git a/include/linux/dccp.h b/include/linux/dccp.h index 71fab4311e92..088529f54965 100644 --- a/include/linux/dccp.h +++ b/include/linux/dccp.h | |||
| @@ -192,10 +192,9 @@ enum { | |||
| 192 | #include <linux/workqueue.h> | 192 | #include <linux/workqueue.h> |
| 193 | 193 | ||
| 194 | #include <net/inet_connection_sock.h> | 194 | #include <net/inet_connection_sock.h> |
| 195 | #include <net/inet_sock.h> | ||
| 195 | #include <net/inet_timewait_sock.h> | 196 | #include <net/inet_timewait_sock.h> |
| 196 | #include <net/sock.h> | ||
| 197 | #include <net/tcp_states.h> | 197 | #include <net/tcp_states.h> |
| 198 | #include <net/tcp.h> | ||
| 199 | 198 | ||
| 200 | enum dccp_state { | 199 | enum dccp_state { |
| 201 | DCCP_OPEN = TCP_ESTABLISHED, | 200 | DCCP_OPEN = TCP_ESTABLISHED, |
| @@ -408,8 +407,6 @@ struct dccp_ackvec; | |||
| 408 | * @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss | 407 | * @dccps_gar - greatest valid ack number received on a non-Sync; initialized to %dccps_iss |
| 409 | * @dccps_timestamp_time - time of latest TIMESTAMP option | 408 | * @dccps_timestamp_time - time of latest TIMESTAMP option |
| 410 | * @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option | 409 | * @dccps_timestamp_echo - latest timestamp received on a TIMESTAMP option |
| 411 | * @dccps_ext_header_len - network protocol overhead (IP/IPv6 options) | ||
| 412 | * @dccps_pmtu_cookie - Last pmtu seen by socket | ||
| 413 | * @dccps_packet_size - Set thru setsockopt | 410 | * @dccps_packet_size - Set thru setsockopt |
| 414 | * @dccps_role - Role of this sock, one of %dccp_role | 411 | * @dccps_role - Role of this sock, one of %dccp_role |
| 415 | * @dccps_ndp_count - number of Non Data Packets since last data packet | 412 | * @dccps_ndp_count - number of Non Data Packets since last data packet |
| @@ -434,8 +431,6 @@ struct dccp_sock { | |||
| 434 | __u32 dccps_timestamp_echo; | 431 | __u32 dccps_timestamp_echo; |
| 435 | __u32 dccps_packet_size; | 432 | __u32 dccps_packet_size; |
| 436 | unsigned long dccps_ndp_count; | 433 | unsigned long dccps_ndp_count; |
| 437 | __u16 dccps_ext_header_len; | ||
| 438 | __u32 dccps_pmtu_cookie; | ||
| 439 | __u32 dccps_mss_cache; | 434 | __u32 dccps_mss_cache; |
| 440 | struct dccp_options dccps_options; | 435 | struct dccp_options dccps_options; |
| 441 | struct dccp_ackvec *dccps_hc_rx_ackvec; | 436 | struct dccp_ackvec *dccps_hc_rx_ackvec; |
diff --git a/include/linux/device.h b/include/linux/device.h index 17cbc6db67b4..0cdee78e5ce1 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -47,8 +47,8 @@ struct bus_type { | |||
| 47 | struct driver_attribute * drv_attrs; | 47 | struct driver_attribute * drv_attrs; |
| 48 | 48 | ||
| 49 | int (*match)(struct device * dev, struct device_driver * drv); | 49 | int (*match)(struct device * dev, struct device_driver * drv); |
| 50 | int (*hotplug) (struct device *dev, char **envp, | 50 | int (*uevent)(struct device *dev, char **envp, |
| 51 | int num_envp, char *buffer, int buffer_size); | 51 | int num_envp, char *buffer, int buffer_size); |
| 52 | int (*suspend)(struct device * dev, pm_message_t state); | 52 | int (*suspend)(struct device * dev, pm_message_t state); |
| 53 | int (*resume)(struct device * dev); | 53 | int (*resume)(struct device * dev); |
| 54 | }; | 54 | }; |
| @@ -151,7 +151,7 @@ struct class { | |||
| 151 | struct class_attribute * class_attrs; | 151 | struct class_attribute * class_attrs; |
| 152 | struct class_device_attribute * class_dev_attrs; | 152 | struct class_device_attribute * class_dev_attrs; |
| 153 | 153 | ||
| 154 | int (*hotplug)(struct class_device *dev, char **envp, | 154 | int (*uevent)(struct class_device *dev, char **envp, |
| 155 | int num_envp, char *buffer, int buffer_size); | 155 | int num_envp, char *buffer, int buffer_size); |
| 156 | 156 | ||
| 157 | void (*release)(struct class_device *dev); | 157 | void (*release)(struct class_device *dev); |
| @@ -209,9 +209,9 @@ extern int class_device_create_file(struct class_device *, | |||
| 209 | * set, this will be called instead of the class specific release function. | 209 | * set, this will be called instead of the class specific release function. |
| 210 | * Only use this if you want to override the default release function, like | 210 | * Only use this if you want to override the default release function, like |
| 211 | * when you are nesting class_device structures. | 211 | * when you are nesting class_device structures. |
| 212 | * @hotplug: pointer to a hotplug function for this struct class_device. If | 212 | * @uevent: pointer to a uevent function for this struct class_device. If |
| 213 | * set, this will be called instead of the class specific hotplug function. | 213 | * set, this will be called instead of the class specific uevent function. |
| 214 | * Only use this if you want to override the default hotplug function, like | 214 | * Only use this if you want to override the default uevent function, like |
| 215 | * when you are nesting class_device structures. | 215 | * when you are nesting class_device structures. |
| 216 | */ | 216 | */ |
| 217 | struct class_device { | 217 | struct class_device { |
| @@ -227,7 +227,7 @@ struct class_device { | |||
| 227 | struct class_device *parent; /* parent of this child device, if there is one */ | 227 | struct class_device *parent; /* parent of this child device, if there is one */ |
| 228 | 228 | ||
| 229 | void (*release)(struct class_device *dev); | 229 | void (*release)(struct class_device *dev); |
| 230 | int (*hotplug)(struct class_device *dev, char **envp, | 230 | int (*uevent)(struct class_device *dev, char **envp, |
| 231 | int num_envp, char *buffer, int buffer_size); | 231 | int num_envp, char *buffer, int buffer_size); |
| 232 | char class_id[BUS_ID_SIZE]; /* unique to this class */ | 232 | char class_id[BUS_ID_SIZE]; /* unique to this class */ |
| 233 | }; | 233 | }; |
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index 5f49a30eb6f2..745c988359c0 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h | |||
| @@ -63,10 +63,11 @@ static inline int is_zero_ether_addr(const u8 *addr) | |||
| 63 | * @addr: Pointer to a six-byte array containing the Ethernet address | 63 | * @addr: Pointer to a six-byte array containing the Ethernet address |
| 64 | * | 64 | * |
| 65 | * Return true if the address is a multicast address. | 65 | * Return true if the address is a multicast address. |
| 66 | * By definition the broadcast address is also a multicast address. | ||
| 66 | */ | 67 | */ |
| 67 | static inline int is_multicast_ether_addr(const u8 *addr) | 68 | static inline int is_multicast_ether_addr(const u8 *addr) |
| 68 | { | 69 | { |
| 69 | return ((addr[0] != 0xff) && (0x01 & addr[0])); | 70 | return (0x01 & addr[0]); |
| 70 | } | 71 | } |
| 71 | 72 | ||
| 72 | /** | 73 | /** |
diff --git a/include/linux/firmware.h b/include/linux/firmware.h index 2063c0839d4f..2d716080be4a 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h | |||
| @@ -14,7 +14,7 @@ struct device; | |||
| 14 | int request_firmware(const struct firmware **fw, const char *name, | 14 | int request_firmware(const struct firmware **fw, const char *name, |
| 15 | struct device *device); | 15 | struct device *device); |
| 16 | int request_firmware_nowait( | 16 | int request_firmware_nowait( |
| 17 | struct module *module, int hotplug, | 17 | struct module *module, int uevent, |
| 18 | const char *name, struct device *device, void *context, | 18 | const char *name, struct device *device, void *context, |
| 19 | void (*cont)(const struct firmware *fw, void *context)); | 19 | void (*cont)(const struct firmware *fw, void *context)); |
| 20 | 20 | ||
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h index e677f73f13dd..4fab3d0a4bce 100644 --- a/include/linux/if_pppox.h +++ b/include/linux/if_pppox.h | |||
| @@ -157,8 +157,7 @@ struct pppox_proto { | |||
| 157 | extern int register_pppox_proto(int proto_num, struct pppox_proto *pp); | 157 | extern int register_pppox_proto(int proto_num, struct pppox_proto *pp); |
| 158 | extern void unregister_pppox_proto(int proto_num); | 158 | extern void unregister_pppox_proto(int proto_num); |
| 159 | extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */ | 159 | extern void pppox_unbind_sock(struct sock *sk);/* delete ppp-channel binding */ |
| 160 | extern int pppox_channel_ioctl(struct ppp_channel *pc, unsigned int cmd, | 160 | extern int pppox_ioctl(struct socket *sock, unsigned int cmd, unsigned long arg); |
| 161 | unsigned long arg); | ||
| 162 | 161 | ||
| 163 | /* PPPoX socket states */ | 162 | /* PPPoX socket states */ |
| 164 | enum { | 163 | enum { |
diff --git a/include/linux/input.h b/include/linux/input.h index 3c5823368ddb..6d4cc3c110d6 100644 --- a/include/linux/input.h +++ b/include/linux/input.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #include <linux/time.h> | 13 | #include <linux/time.h> |
| 14 | #include <linux/list.h> | 14 | #include <linux/list.h> |
| 15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
| 16 | #include <linux/mod_devicetable.h> | ||
| 16 | #else | 17 | #else |
| 17 | #include <sys/time.h> | 18 | #include <sys/time.h> |
| 18 | #include <sys/ioctl.h> | 19 | #include <sys/ioctl.h> |
| @@ -511,6 +512,8 @@ struct input_absinfo { | |||
| 511 | #define KEY_FN_S 0x1e3 | 512 | #define KEY_FN_S 0x1e3 |
| 512 | #define KEY_FN_B 0x1e4 | 513 | #define KEY_FN_B 0x1e4 |
| 513 | 514 | ||
| 515 | /* We avoid low common keys in module aliases so they don't get huge. */ | ||
| 516 | #define KEY_MIN_INTERESTING KEY_MUTE | ||
| 514 | #define KEY_MAX 0x1ff | 517 | #define KEY_MAX 0x1ff |
| 515 | 518 | ||
| 516 | /* | 519 | /* |
| @@ -793,6 +796,44 @@ struct ff_effect { | |||
| 793 | 796 | ||
| 794 | #define FF_MAX 0x7f | 797 | #define FF_MAX 0x7f |
| 795 | 798 | ||
| 799 | struct input_device_id { | ||
| 800 | |||
| 801 | kernel_ulong_t flags; | ||
| 802 | |||
| 803 | struct input_id id; | ||
| 804 | |||
| 805 | kernel_ulong_t evbit[EV_MAX/BITS_PER_LONG+1]; | ||
| 806 | kernel_ulong_t keybit[KEY_MAX/BITS_PER_LONG+1]; | ||
| 807 | kernel_ulong_t relbit[REL_MAX/BITS_PER_LONG+1]; | ||
| 808 | kernel_ulong_t absbit[ABS_MAX/BITS_PER_LONG+1]; | ||
| 809 | kernel_ulong_t mscbit[MSC_MAX/BITS_PER_LONG+1]; | ||
| 810 | kernel_ulong_t ledbit[LED_MAX/BITS_PER_LONG+1]; | ||
| 811 | kernel_ulong_t sndbit[SND_MAX/BITS_PER_LONG+1]; | ||
| 812 | kernel_ulong_t ffbit[FF_MAX/BITS_PER_LONG+1]; | ||
| 813 | kernel_ulong_t swbit[SW_MAX/BITS_PER_LONG+1]; | ||
| 814 | |||
| 815 | kernel_ulong_t driver_info; | ||
| 816 | }; | ||
| 817 | |||
| 818 | /* | ||
| 819 | * Structure for hotplug & device<->driver matching. | ||
| 820 | */ | ||
| 821 | |||
| 822 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | ||
| 823 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 | ||
| 824 | #define INPUT_DEVICE_ID_MATCH_PRODUCT 4 | ||
| 825 | #define INPUT_DEVICE_ID_MATCH_VERSION 8 | ||
| 826 | |||
| 827 | #define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 | ||
| 828 | #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 | ||
| 829 | #define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 | ||
| 830 | #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 | ||
| 831 | #define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 | ||
| 832 | #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 | ||
| 833 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 | ||
| 834 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 | ||
| 835 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 | ||
| 836 | |||
| 796 | #ifdef __KERNEL__ | 837 | #ifdef __KERNEL__ |
| 797 | 838 | ||
| 798 | /* | 839 | /* |
| @@ -901,49 +942,11 @@ struct input_dev { | |||
| 901 | }; | 942 | }; |
| 902 | #define to_input_dev(d) container_of(d, struct input_dev, cdev) | 943 | #define to_input_dev(d) container_of(d, struct input_dev, cdev) |
| 903 | 944 | ||
| 904 | /* | ||
| 905 | * Structure for hotplug & device<->driver matching. | ||
| 906 | */ | ||
| 907 | |||
| 908 | #define INPUT_DEVICE_ID_MATCH_BUS 1 | ||
| 909 | #define INPUT_DEVICE_ID_MATCH_VENDOR 2 | ||
| 910 | #define INPUT_DEVICE_ID_MATCH_PRODUCT 4 | ||
| 911 | #define INPUT_DEVICE_ID_MATCH_VERSION 8 | ||
| 912 | |||
| 913 | #define INPUT_DEVICE_ID_MATCH_EVBIT 0x010 | ||
| 914 | #define INPUT_DEVICE_ID_MATCH_KEYBIT 0x020 | ||
| 915 | #define INPUT_DEVICE_ID_MATCH_RELBIT 0x040 | ||
| 916 | #define INPUT_DEVICE_ID_MATCH_ABSBIT 0x080 | ||
| 917 | #define INPUT_DEVICE_ID_MATCH_MSCIT 0x100 | ||
| 918 | #define INPUT_DEVICE_ID_MATCH_LEDBIT 0x200 | ||
| 919 | #define INPUT_DEVICE_ID_MATCH_SNDBIT 0x400 | ||
| 920 | #define INPUT_DEVICE_ID_MATCH_FFBIT 0x800 | ||
| 921 | #define INPUT_DEVICE_ID_MATCH_SWBIT 0x1000 | ||
| 922 | |||
| 923 | #define INPUT_DEVICE_ID_MATCH_DEVICE\ | 945 | #define INPUT_DEVICE_ID_MATCH_DEVICE\ |
| 924 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) | 946 | (INPUT_DEVICE_ID_MATCH_BUS | INPUT_DEVICE_ID_MATCH_VENDOR | INPUT_DEVICE_ID_MATCH_PRODUCT) |
| 925 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ | 947 | #define INPUT_DEVICE_ID_MATCH_DEVICE_AND_VERSION\ |
| 926 | (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) | 948 | (INPUT_DEVICE_ID_MATCH_DEVICE | INPUT_DEVICE_ID_MATCH_VERSION) |
| 927 | 949 | ||
| 928 | struct input_device_id { | ||
| 929 | |||
| 930 | unsigned long flags; | ||
| 931 | |||
| 932 | struct input_id id; | ||
| 933 | |||
| 934 | unsigned long evbit[NBITS(EV_MAX)]; | ||
| 935 | unsigned long keybit[NBITS(KEY_MAX)]; | ||
| 936 | unsigned long relbit[NBITS(REL_MAX)]; | ||
| 937 | unsigned long absbit[NBITS(ABS_MAX)]; | ||
| 938 | unsigned long mscbit[NBITS(MSC_MAX)]; | ||
| 939 | unsigned long ledbit[NBITS(LED_MAX)]; | ||
| 940 | unsigned long sndbit[NBITS(SND_MAX)]; | ||
| 941 | unsigned long ffbit[NBITS(FF_MAX)]; | ||
| 942 | unsigned long swbit[NBITS(SW_MAX)]; | ||
| 943 | |||
| 944 | unsigned long driver_info; | ||
| 945 | }; | ||
| 946 | |||
| 947 | struct input_handle; | 950 | struct input_handle; |
| 948 | 951 | ||
| 949 | struct input_handler { | 952 | struct input_handler { |
diff --git a/include/linux/ip.h b/include/linux/ip.h index 33e8a19a1a0f..9e2eb9a602eb 100644 --- a/include/linux/ip.h +++ b/include/linux/ip.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | */ | 16 | */ |
| 17 | #ifndef _LINUX_IP_H | 17 | #ifndef _LINUX_IP_H |
| 18 | #define _LINUX_IP_H | 18 | #define _LINUX_IP_H |
| 19 | #include <linux/types.h> | ||
| 19 | #include <asm/byteorder.h> | 20 | #include <asm/byteorder.h> |
| 20 | 21 | ||
| 21 | #define IPTOS_TOS_MASK 0x1E | 22 | #define IPTOS_TOS_MASK 0x1E |
| @@ -78,126 +79,6 @@ | |||
| 78 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ | 79 | #define IPOPT_TS_TSANDADDR 1 /* timestamps and addresses */ |
| 79 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ | 80 | #define IPOPT_TS_PRESPEC 3 /* specified modules only */ |
| 80 | 81 | ||
| 81 | #ifdef __KERNEL__ | ||
| 82 | #include <linux/config.h> | ||
| 83 | #include <linux/types.h> | ||
| 84 | #include <net/request_sock.h> | ||
| 85 | #include <net/sock.h> | ||
| 86 | #include <linux/igmp.h> | ||
| 87 | #include <net/flow.h> | ||
| 88 | |||
| 89 | struct ip_options { | ||
| 90 | __u32 faddr; /* Saved first hop address */ | ||
| 91 | unsigned char optlen; | ||
| 92 | unsigned char srr; | ||
| 93 | unsigned char rr; | ||
| 94 | unsigned char ts; | ||
| 95 | unsigned char is_setbyuser:1, /* Set by setsockopt? */ | ||
| 96 | is_data:1, /* Options in __data, rather than skb */ | ||
| 97 | is_strictroute:1, /* Strict source route */ | ||
| 98 | srr_is_hit:1, /* Packet destination addr was our one */ | ||
| 99 | is_changed:1, /* IP checksum more not valid */ | ||
| 100 | rr_needaddr:1, /* Need to record addr of outgoing dev */ | ||
| 101 | ts_needtime:1, /* Need to record timestamp */ | ||
| 102 | ts_needaddr:1; /* Need to record addr of outgoing dev */ | ||
| 103 | unsigned char router_alert; | ||
| 104 | unsigned char __pad1; | ||
| 105 | unsigned char __pad2; | ||
| 106 | unsigned char __data[0]; | ||
| 107 | }; | ||
| 108 | |||
| 109 | #define optlength(opt) (sizeof(struct ip_options) + opt->optlen) | ||
| 110 | |||
| 111 | struct inet_request_sock { | ||
| 112 | struct request_sock req; | ||
| 113 | u32 loc_addr; | ||
| 114 | u32 rmt_addr; | ||
| 115 | u16 rmt_port; | ||
| 116 | u16 snd_wscale : 4, | ||
| 117 | rcv_wscale : 4, | ||
| 118 | tstamp_ok : 1, | ||
| 119 | sack_ok : 1, | ||
| 120 | wscale_ok : 1, | ||
| 121 | ecn_ok : 1, | ||
| 122 | acked : 1; | ||
| 123 | struct ip_options *opt; | ||
| 124 | }; | ||
| 125 | |||
| 126 | static inline struct inet_request_sock *inet_rsk(const struct request_sock *sk) | ||
| 127 | { | ||
| 128 | return (struct inet_request_sock *)sk; | ||
| 129 | } | ||
| 130 | |||
| 131 | struct ipv6_pinfo; | ||
| 132 | |||
| 133 | struct inet_sock { | ||
| 134 | /* sk and pinet6 has to be the first two members of inet_sock */ | ||
| 135 | struct sock sk; | ||
| 136 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | ||
| 137 | struct ipv6_pinfo *pinet6; | ||
| 138 | #endif | ||
| 139 | /* Socket demultiplex comparisons on incoming packets. */ | ||
| 140 | __u32 daddr; /* Foreign IPv4 addr */ | ||
| 141 | __u32 rcv_saddr; /* Bound local IPv4 addr */ | ||
| 142 | __u16 dport; /* Destination port */ | ||
| 143 | __u16 num; /* Local port */ | ||
| 144 | __u32 saddr; /* Sending source */ | ||
| 145 | __s16 uc_ttl; /* Unicast TTL */ | ||
| 146 | __u16 cmsg_flags; | ||
| 147 | struct ip_options *opt; | ||
| 148 | __u16 sport; /* Source port */ | ||
| 149 | __u16 id; /* ID counter for DF pkts */ | ||
| 150 | __u8 tos; /* TOS */ | ||
| 151 | __u8 mc_ttl; /* Multicasting TTL */ | ||
| 152 | __u8 pmtudisc; | ||
| 153 | unsigned recverr : 1, | ||
| 154 | freebind : 1, | ||
| 155 | hdrincl : 1, | ||
| 156 | mc_loop : 1; | ||
| 157 | int mc_index; /* Multicast device index */ | ||
| 158 | __u32 mc_addr; | ||
| 159 | struct ip_mc_socklist *mc_list; /* Group array */ | ||
| 160 | /* | ||
| 161 | * Following members are used to retain the infomation to build | ||
| 162 | * an ip header on each ip fragmentation while the socket is corked. | ||
| 163 | */ | ||
| 164 | struct { | ||
| 165 | unsigned int flags; | ||
| 166 | unsigned int fragsize; | ||
| 167 | struct ip_options *opt; | ||
| 168 | struct rtable *rt; | ||
| 169 | int length; /* Total length of all frames */ | ||
| 170 | u32 addr; | ||
| 171 | struct flowi fl; | ||
| 172 | } cork; | ||
| 173 | }; | ||
| 174 | |||
| 175 | #define IPCORK_OPT 1 /* ip-options has been held in ipcork.opt */ | ||
| 176 | #define IPCORK_ALLFRAG 2 /* always fragment (for ipv6 for now) */ | ||
| 177 | |||
| 178 | static inline struct inet_sock *inet_sk(const struct sock *sk) | ||
| 179 | { | ||
| 180 | return (struct inet_sock *)sk; | ||
| 181 | } | ||
| 182 | |||
| 183 | static inline void __inet_sk_copy_descendant(struct sock *sk_to, | ||
| 184 | const struct sock *sk_from, | ||
| 185 | const int ancestor_size) | ||
| 186 | { | ||
| 187 | memcpy(inet_sk(sk_to) + 1, inet_sk(sk_from) + 1, | ||
| 188 | sk_from->sk_prot->obj_size - ancestor_size); | ||
| 189 | } | ||
| 190 | #if !(defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE)) | ||
| 191 | static inline void inet_sk_copy_descendant(struct sock *sk_to, | ||
| 192 | const struct sock *sk_from) | ||
| 193 | { | ||
| 194 | __inet_sk_copy_descendant(sk_to, sk_from, sizeof(struct inet_sock)); | ||
| 195 | } | ||
| 196 | #endif | ||
| 197 | #endif | ||
| 198 | |||
| 199 | extern int inet_sk_rebuild_header(struct sock *sk); | ||
| 200 | |||
| 201 | struct iphdr { | 82 | struct iphdr { |
| 202 | #if defined(__LITTLE_ENDIAN_BITFIELD) | 83 | #if defined(__LITTLE_ENDIAN_BITFIELD) |
| 203 | __u8 ihl:4, | 84 | __u8 ihl:4, |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index e0b922785d98..93bbed5c6cf4 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
| @@ -171,12 +171,13 @@ enum { | |||
| 171 | }; | 171 | }; |
| 172 | 172 | ||
| 173 | #ifdef __KERNEL__ | 173 | #ifdef __KERNEL__ |
| 174 | #include <linux/in6.h> /* struct sockaddr_in6 */ | ||
| 175 | #include <linux/icmpv6.h> | 174 | #include <linux/icmpv6.h> |
| 176 | #include <net/if_inet6.h> /* struct ipv6_mc_socklist */ | ||
| 177 | #include <linux/tcp.h> | 175 | #include <linux/tcp.h> |
| 178 | #include <linux/udp.h> | 176 | #include <linux/udp.h> |
| 179 | 177 | ||
| 178 | #include <net/if_inet6.h> /* struct ipv6_mc_socklist */ | ||
| 179 | #include <net/inet_sock.h> | ||
| 180 | |||
| 180 | /* | 181 | /* |
| 181 | This structure contains results of exthdrs parsing | 182 | This structure contains results of exthdrs parsing |
| 182 | as offsets from skb->nh. | 183 | as offsets from skb->nh. |
| @@ -199,18 +200,17 @@ static inline int inet6_iif(const struct sk_buff *skb) | |||
| 199 | return IP6CB(skb)->iif; | 200 | return IP6CB(skb)->iif; |
| 200 | } | 201 | } |
| 201 | 202 | ||
| 202 | struct tcp6_request_sock { | 203 | struct inet6_request_sock { |
| 203 | struct tcp_request_sock req; | ||
| 204 | struct in6_addr loc_addr; | 204 | struct in6_addr loc_addr; |
| 205 | struct in6_addr rmt_addr; | 205 | struct in6_addr rmt_addr; |
| 206 | struct sk_buff *pktopts; | 206 | struct sk_buff *pktopts; |
| 207 | int iif; | 207 | int iif; |
| 208 | }; | 208 | }; |
| 209 | 209 | ||
| 210 | static inline struct tcp6_request_sock *tcp6_rsk(const struct request_sock *sk) | 210 | struct tcp6_request_sock { |
| 211 | { | 211 | struct tcp_request_sock tcp6rsk_tcp; |
| 212 | return (struct tcp6_request_sock *)sk; | 212 | struct inet6_request_sock tcp6rsk_inet6; |
| 213 | } | 213 | }; |
| 214 | 214 | ||
| 215 | /** | 215 | /** |
| 216 | * struct ipv6_pinfo - ipv6 private area | 216 | * struct ipv6_pinfo - ipv6 private area |
| @@ -298,12 +298,36 @@ struct tcp6_sock { | |||
| 298 | struct ipv6_pinfo inet6; | 298 | struct ipv6_pinfo inet6; |
| 299 | }; | 299 | }; |
| 300 | 300 | ||
| 301 | extern int inet6_sk_rebuild_header(struct sock *sk); | ||
| 302 | |||
| 301 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) | 303 | #if defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) |
| 302 | static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) | 304 | static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) |
| 303 | { | 305 | { |
| 304 | return inet_sk(__sk)->pinet6; | 306 | return inet_sk(__sk)->pinet6; |
| 305 | } | 307 | } |
| 306 | 308 | ||
| 309 | static inline struct inet6_request_sock * | ||
| 310 | inet6_rsk(const struct request_sock *rsk) | ||
| 311 | { | ||
| 312 | return (struct inet6_request_sock *)(((u8 *)rsk) + | ||
| 313 | inet_rsk(rsk)->inet6_rsk_offset); | ||
| 314 | } | ||
| 315 | |||
| 316 | static inline u32 inet6_rsk_offset(struct request_sock *rsk) | ||
| 317 | { | ||
| 318 | return rsk->rsk_ops->obj_size - sizeof(struct inet6_request_sock); | ||
| 319 | } | ||
| 320 | |||
| 321 | static inline struct request_sock *inet6_reqsk_alloc(struct request_sock_ops *ops) | ||
| 322 | { | ||
| 323 | struct request_sock *req = reqsk_alloc(ops); | ||
| 324 | |||
| 325 | if (req != NULL) | ||
| 326 | inet_rsk(req)->inet6_rsk_offset = inet6_rsk_offset(req); | ||
| 327 | |||
| 328 | return req; | ||
| 329 | } | ||
| 330 | |||
| 307 | static inline struct raw6_sock *raw6_sk(const struct sock *sk) | 331 | static inline struct raw6_sock *raw6_sk(const struct sock *sk) |
| 308 | { | 332 | { |
| 309 | return (struct raw6_sock *)sk; | 333 | return (struct raw6_sock *)sk; |
| @@ -323,28 +347,37 @@ static inline void inet_sk_copy_descendant(struct sock *sk_to, | |||
| 323 | #define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only) | 347 | #define __ipv6_only_sock(sk) (inet6_sk(sk)->ipv6only) |
| 324 | #define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk)) | 348 | #define ipv6_only_sock(sk) ((sk)->sk_family == PF_INET6 && __ipv6_only_sock(sk)) |
| 325 | 349 | ||
| 326 | #include <linux/tcp.h> | 350 | struct inet6_timewait_sock { |
| 351 | struct in6_addr tw_v6_daddr; | ||
| 352 | struct in6_addr tw_v6_rcv_saddr; | ||
| 353 | }; | ||
| 327 | 354 | ||
| 328 | struct tcp6_timewait_sock { | 355 | struct tcp6_timewait_sock { |
| 329 | struct tcp_timewait_sock tw_v6_sk; | 356 | struct tcp_timewait_sock tcp6tw_tcp; |
| 330 | struct in6_addr tw_v6_daddr; | 357 | struct inet6_timewait_sock tcp6tw_inet6; |
| 331 | struct in6_addr tw_v6_rcv_saddr; | ||
| 332 | }; | 358 | }; |
| 333 | 359 | ||
| 334 | static inline struct tcp6_timewait_sock *tcp6_twsk(const struct sock *sk) | 360 | static inline u16 inet6_tw_offset(const struct proto *prot) |
| 335 | { | 361 | { |
| 336 | return (struct tcp6_timewait_sock *)sk; | 362 | return prot->twsk_prot->twsk_obj_size - |
| 363 | sizeof(struct inet6_timewait_sock); | ||
| 337 | } | 364 | } |
| 338 | 365 | ||
| 339 | static inline struct in6_addr *__tcp_v6_rcv_saddr(const struct sock *sk) | 366 | static inline struct inet6_timewait_sock *inet6_twsk(const struct sock *sk) |
| 367 | { | ||
| 368 | return (struct inet6_timewait_sock *)(((u8 *)sk) + | ||
| 369 | inet_twsk(sk)->tw_ipv6_offset); | ||
| 370 | } | ||
| 371 | |||
| 372 | static inline struct in6_addr *__inet6_rcv_saddr(const struct sock *sk) | ||
| 340 | { | 373 | { |
| 341 | return likely(sk->sk_state != TCP_TIME_WAIT) ? | 374 | return likely(sk->sk_state != TCP_TIME_WAIT) ? |
| 342 | &inet6_sk(sk)->rcv_saddr : &tcp6_twsk(sk)->tw_v6_rcv_saddr; | 375 | &inet6_sk(sk)->rcv_saddr : &inet6_twsk(sk)->tw_v6_rcv_saddr; |
| 343 | } | 376 | } |
| 344 | 377 | ||
| 345 | static inline struct in6_addr *tcp_v6_rcv_saddr(const struct sock *sk) | 378 | static inline struct in6_addr *inet6_rcv_saddr(const struct sock *sk) |
| 346 | { | 379 | { |
| 347 | return sk->sk_family == AF_INET6 ? __tcp_v6_rcv_saddr(sk) : NULL; | 380 | return sk->sk_family == AF_INET6 ? __inet6_rcv_saddr(sk) : NULL; |
| 348 | } | 381 | } |
| 349 | 382 | ||
| 350 | static inline int inet_v6_ipv6only(const struct sock *sk) | 383 | static inline int inet_v6_ipv6only(const struct sock *sk) |
| @@ -361,13 +394,19 @@ static inline struct ipv6_pinfo * inet6_sk(const struct sock *__sk) | |||
| 361 | return NULL; | 394 | return NULL; |
| 362 | } | 395 | } |
| 363 | 396 | ||
| 397 | static inline struct inet6_request_sock * | ||
| 398 | inet6_rsk(const struct request_sock *rsk) | ||
| 399 | { | ||
| 400 | return NULL; | ||
| 401 | } | ||
| 402 | |||
| 364 | static inline struct raw6_sock *raw6_sk(const struct sock *sk) | 403 | static inline struct raw6_sock *raw6_sk(const struct sock *sk) |
| 365 | { | 404 | { |
| 366 | return NULL; | 405 | return NULL; |
| 367 | } | 406 | } |
| 368 | 407 | ||
| 369 | #define __tcp_v6_rcv_saddr(__sk) NULL | 408 | #define __inet6_rcv_saddr(__sk) NULL |
| 370 | #define tcp_v6_rcv_saddr(__sk) NULL | 409 | #define inet6_rcv_saddr(__sk) NULL |
| 371 | #define tcp_twsk_ipv6only(__sk) 0 | 410 | #define tcp_twsk_ipv6only(__sk) 0 |
| 372 | #define inet_v6_ipv6only(__sk) 0 | 411 | #define inet_v6_ipv6only(__sk) 0 |
| 373 | #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */ | 412 | #endif /* defined(CONFIG_IPV6) || defined(CONFIG_IPV6_MODULE) */ |
diff --git a/include/linux/kobject.h b/include/linux/kobject.h index 7f7403aa4a41..2a8d8da70961 100644 --- a/include/linux/kobject.h +++ b/include/linux/kobject.h | |||
| @@ -23,14 +23,27 @@ | |||
| 23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
| 24 | #include <linux/rwsem.h> | 24 | #include <linux/rwsem.h> |
| 25 | #include <linux/kref.h> | 25 | #include <linux/kref.h> |
| 26 | #include <linux/kobject_uevent.h> | ||
| 27 | #include <linux/kernel.h> | 26 | #include <linux/kernel.h> |
| 28 | #include <asm/atomic.h> | 27 | #include <asm/atomic.h> |
| 29 | 28 | ||
| 30 | #define KOBJ_NAME_LEN 20 | 29 | #define KOBJ_NAME_LEN 20 |
| 30 | #define UEVENT_HELPER_PATH_LEN 256 | ||
| 31 | 31 | ||
| 32 | /* counter to tag the hotplug event, read only except for the kobject core */ | 32 | /* path to the userspace helper executed on an event */ |
| 33 | extern u64 hotplug_seqnum; | 33 | extern char uevent_helper[]; |
| 34 | |||
| 35 | /* counter to tag the uevent, read only except for the kobject core */ | ||
| 36 | extern u64 uevent_seqnum; | ||
| 37 | |||
| 38 | /* the actions here must match the proper string in lib/kobject_uevent.c */ | ||
| 39 | typedef int __bitwise kobject_action_t; | ||
| 40 | enum kobject_action { | ||
| 41 | KOBJ_ADD = (__force kobject_action_t) 0x01, /* exclusive to core */ | ||
| 42 | KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* exclusive to core */ | ||
| 43 | KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* device state change */ | ||
| 44 | KOBJ_OFFLINE = (__force kobject_action_t) 0x04, /* device offline */ | ||
| 45 | KOBJ_ONLINE = (__force kobject_action_t) 0x05, /* device online */ | ||
| 46 | }; | ||
| 34 | 47 | ||
| 35 | struct kobject { | 48 | struct kobject { |
| 36 | const char * k_name; | 49 | const char * k_name; |
| @@ -87,15 +100,14 @@ struct kobj_type { | |||
| 87 | * of object; multiple ksets can belong to one subsystem. All | 100 | * of object; multiple ksets can belong to one subsystem. All |
| 88 | * ksets of a subsystem share the subsystem's lock. | 101 | * ksets of a subsystem share the subsystem's lock. |
| 89 | * | 102 | * |
| 90 | * Each kset can support hotplugging; if it does, it will be given | 103 | * Each kset can support specific event variables; it can |
| 91 | * the opportunity to filter out specific kobjects from being | 104 | * supress the event generation or add subsystem specific |
| 92 | * reported, as well as to add its own "data" elements to the | 105 | * variables carried with the event. |
| 93 | * environment being passed to the hotplug helper. | ||
| 94 | */ | 106 | */ |
| 95 | struct kset_hotplug_ops { | 107 | struct kset_uevent_ops { |
| 96 | int (*filter)(struct kset *kset, struct kobject *kobj); | 108 | int (*filter)(struct kset *kset, struct kobject *kobj); |
| 97 | const char *(*name)(struct kset *kset, struct kobject *kobj); | 109 | const char *(*name)(struct kset *kset, struct kobject *kobj); |
| 98 | int (*hotplug)(struct kset *kset, struct kobject *kobj, char **envp, | 110 | int (*uevent)(struct kset *kset, struct kobject *kobj, char **envp, |
| 99 | int num_envp, char *buffer, int buffer_size); | 111 | int num_envp, char *buffer, int buffer_size); |
| 100 | }; | 112 | }; |
| 101 | 113 | ||
| @@ -105,7 +117,7 @@ struct kset { | |||
| 105 | struct list_head list; | 117 | struct list_head list; |
| 106 | spinlock_t list_lock; | 118 | spinlock_t list_lock; |
| 107 | struct kobject kobj; | 119 | struct kobject kobj; |
| 108 | struct kset_hotplug_ops * hotplug_ops; | 120 | struct kset_uevent_ops * uevent_ops; |
| 109 | }; | 121 | }; |
| 110 | 122 | ||
| 111 | 123 | ||
| @@ -153,20 +165,20 @@ struct subsystem { | |||
| 153 | struct rw_semaphore rwsem; | 165 | struct rw_semaphore rwsem; |
| 154 | }; | 166 | }; |
| 155 | 167 | ||
| 156 | #define decl_subsys(_name,_type,_hotplug_ops) \ | 168 | #define decl_subsys(_name,_type,_uevent_ops) \ |
| 157 | struct subsystem _name##_subsys = { \ | 169 | struct subsystem _name##_subsys = { \ |
| 158 | .kset = { \ | 170 | .kset = { \ |
| 159 | .kobj = { .name = __stringify(_name) }, \ | 171 | .kobj = { .name = __stringify(_name) }, \ |
| 160 | .ktype = _type, \ | 172 | .ktype = _type, \ |
| 161 | .hotplug_ops =_hotplug_ops, \ | 173 | .uevent_ops =_uevent_ops, \ |
| 162 | } \ | 174 | } \ |
| 163 | } | 175 | } |
| 164 | #define decl_subsys_name(_varname,_name,_type,_hotplug_ops) \ | 176 | #define decl_subsys_name(_varname,_name,_type,_uevent_ops) \ |
| 165 | struct subsystem _varname##_subsys = { \ | 177 | struct subsystem _varname##_subsys = { \ |
| 166 | .kset = { \ | 178 | .kset = { \ |
| 167 | .kobj = { .name = __stringify(_name) }, \ | 179 | .kobj = { .name = __stringify(_name) }, \ |
| 168 | .ktype = _type, \ | 180 | .ktype = _type, \ |
| 169 | .hotplug_ops =_hotplug_ops, \ | 181 | .uevent_ops =_uevent_ops, \ |
| 170 | } \ | 182 | } \ |
| 171 | } | 183 | } |
| 172 | 184 | ||
| @@ -241,15 +253,17 @@ struct subsys_attribute { | |||
| 241 | extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); | 253 | extern int subsys_create_file(struct subsystem * , struct subsys_attribute *); |
| 242 | extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); | 254 | extern void subsys_remove_file(struct subsystem * , struct subsys_attribute *); |
| 243 | 255 | ||
| 244 | #ifdef CONFIG_HOTPLUG | 256 | #if defined(CONFIG_HOTPLUG) & defined(CONFIG_NET) |
| 245 | void kobject_hotplug(struct kobject *kobj, enum kobject_action action); | 257 | void kobject_uevent(struct kobject *kobj, enum kobject_action action); |
| 246 | int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, | 258 | |
| 259 | int add_uevent_var(char **envp, int num_envp, int *cur_index, | ||
| 247 | char *buffer, int buffer_size, int *cur_len, | 260 | char *buffer, int buffer_size, int *cur_len, |
| 248 | const char *format, ...) | 261 | const char *format, ...) |
| 249 | __attribute__((format (printf, 7, 8))); | 262 | __attribute__((format (printf, 7, 8))); |
| 250 | #else | 263 | #else |
| 251 | static inline void kobject_hotplug(struct kobject *kobj, enum kobject_action action) { } | 264 | static inline void kobject_uevent(struct kobject *kobj, enum kobject_action action) { } |
| 252 | static inline int add_hotplug_env_var(char **envp, int num_envp, int *cur_index, | 265 | |
| 266 | static inline int add_uevent_var(char **envp, int num_envp, int *cur_index, | ||
| 253 | char *buffer, int buffer_size, int *cur_len, | 267 | char *buffer, int buffer_size, int *cur_len, |
| 254 | const char *format, ...) | 268 | const char *format, ...) |
| 255 | { return 0; } | 269 | { return 0; } |
diff --git a/include/linux/kobject_uevent.h b/include/linux/kobject_uevent.h deleted file mode 100644 index aa664fe7e561..000000000000 --- a/include/linux/kobject_uevent.h +++ /dev/null | |||
| @@ -1,57 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * kobject_uevent.h - list of kobject user events that can be generated | ||
| 3 | * | ||
| 4 | * Copyright (C) 2004 IBM Corp. | ||
| 5 | * Copyright (C) 2004 Greg Kroah-Hartman <greg@kroah.com> | ||
| 6 | * | ||
| 7 | * This file is released under the GPLv2. | ||
| 8 | * | ||
| 9 | */ | ||
| 10 | |||
| 11 | #ifndef _KOBJECT_EVENT_H_ | ||
| 12 | #define _KOBJECT_EVENT_H_ | ||
| 13 | |||
| 14 | #define HOTPLUG_PATH_LEN 256 | ||
| 15 | |||
| 16 | /* path to the hotplug userspace helper executed on an event */ | ||
| 17 | extern char hotplug_path[]; | ||
| 18 | |||
| 19 | /* | ||
| 20 | * If you add an action here, you must also add the proper string to the | ||
| 21 | * lib/kobject_uevent.c file. | ||
| 22 | */ | ||
| 23 | typedef int __bitwise kobject_action_t; | ||
| 24 | enum kobject_action { | ||
| 25 | KOBJ_ADD = (__force kobject_action_t) 0x01, /* add event, for hotplug */ | ||
| 26 | KOBJ_REMOVE = (__force kobject_action_t) 0x02, /* remove event, for hotplug */ | ||
| 27 | KOBJ_CHANGE = (__force kobject_action_t) 0x03, /* a sysfs attribute file has changed */ | ||
| 28 | KOBJ_MOUNT = (__force kobject_action_t) 0x04, /* mount event for block devices */ | ||
| 29 | KOBJ_UMOUNT = (__force kobject_action_t) 0x05, /* umount event for block devices */ | ||
| 30 | KOBJ_OFFLINE = (__force kobject_action_t) 0x06, /* offline event for hotplug devices */ | ||
| 31 | KOBJ_ONLINE = (__force kobject_action_t) 0x07, /* online event for hotplug devices */ | ||
| 32 | }; | ||
| 33 | |||
| 34 | |||
| 35 | #ifdef CONFIG_KOBJECT_UEVENT | ||
| 36 | int kobject_uevent(struct kobject *kobj, | ||
| 37 | enum kobject_action action, | ||
| 38 | struct attribute *attr); | ||
| 39 | int kobject_uevent_atomic(struct kobject *kobj, | ||
| 40 | enum kobject_action action, | ||
| 41 | struct attribute *attr); | ||
| 42 | #else | ||
| 43 | static inline int kobject_uevent(struct kobject *kobj, | ||
| 44 | enum kobject_action action, | ||
| 45 | struct attribute *attr) | ||
| 46 | { | ||
| 47 | return 0; | ||
| 48 | } | ||
| 49 | static inline int kobject_uevent_atomic(struct kobject *kobj, | ||
| 50 | enum kobject_action action, | ||
| 51 | struct attribute *attr) | ||
| 52 | { | ||
| 53 | return 0; | ||
| 54 | } | ||
| 55 | #endif | ||
| 56 | |||
| 57 | #endif | ||
diff --git a/include/linux/libata.h b/include/linux/libata.h index 41ea7dbc1755..e828e172ccbf 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -136,6 +136,8 @@ enum { | |||
| 136 | ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* hueristic */ | 136 | ATA_TMOUT_BOOT_QUICK = 7 * HZ, /* hueristic */ |
| 137 | ATA_TMOUT_CDB = 30 * HZ, | 137 | ATA_TMOUT_CDB = 30 * HZ, |
| 138 | ATA_TMOUT_CDB_QUICK = 5 * HZ, | 138 | ATA_TMOUT_CDB_QUICK = 5 * HZ, |
| 139 | ATA_TMOUT_INTERNAL = 30 * HZ, | ||
| 140 | ATA_TMOUT_INTERNAL_QUICK = 5 * HZ, | ||
| 139 | 141 | ||
| 140 | /* ATA bus states */ | 142 | /* ATA bus states */ |
| 141 | BUS_UNKNOWN = 0, | 143 | BUS_UNKNOWN = 0, |
| @@ -195,7 +197,7 @@ struct ata_port; | |||
| 195 | struct ata_queued_cmd; | 197 | struct ata_queued_cmd; |
| 196 | 198 | ||
| 197 | /* typedefs */ | 199 | /* typedefs */ |
| 198 | typedef int (*ata_qc_cb_t) (struct ata_queued_cmd *qc, unsigned int err_mask); | 200 | typedef int (*ata_qc_cb_t) (struct ata_queued_cmd *qc); |
| 199 | 201 | ||
| 200 | struct ata_ioports { | 202 | struct ata_ioports { |
| 201 | unsigned long cmd_addr; | 203 | unsigned long cmd_addr; |
| @@ -280,9 +282,9 @@ struct ata_queued_cmd { | |||
| 280 | /* DO NOT iterate over __sg manually, use ata_for_each_sg() */ | 282 | /* DO NOT iterate over __sg manually, use ata_for_each_sg() */ |
| 281 | struct scatterlist *__sg; | 283 | struct scatterlist *__sg; |
| 282 | 284 | ||
| 283 | ata_qc_cb_t complete_fn; | 285 | unsigned int err_mask; |
| 284 | 286 | ||
| 285 | struct completion *waiting; | 287 | ata_qc_cb_t complete_fn; |
| 286 | 288 | ||
| 287 | void *private_data; | 289 | void *private_data; |
| 288 | }; | 290 | }; |
| @@ -331,8 +333,6 @@ struct ata_port { | |||
| 331 | 333 | ||
| 332 | u8 ctl; /* cache of ATA control register */ | 334 | u8 ctl; /* cache of ATA control register */ |
| 333 | u8 last_ctl; /* Cache last written value */ | 335 | u8 last_ctl; /* Cache last written value */ |
| 334 | unsigned int bus_state; | ||
| 335 | unsigned int port_state; | ||
| 336 | unsigned int pio_mask; | 336 | unsigned int pio_mask; |
| 337 | unsigned int mwdma_mask; | 337 | unsigned int mwdma_mask; |
| 338 | unsigned int udma_mask; | 338 | unsigned int udma_mask; |
| @@ -478,7 +478,7 @@ extern void ata_bmdma_start (struct ata_queued_cmd *qc); | |||
| 478 | extern void ata_bmdma_stop(struct ata_queued_cmd *qc); | 478 | extern void ata_bmdma_stop(struct ata_queued_cmd *qc); |
| 479 | extern u8 ata_bmdma_status(struct ata_port *ap); | 479 | extern u8 ata_bmdma_status(struct ata_port *ap); |
| 480 | extern void ata_bmdma_irq_clear(struct ata_port *ap); | 480 | extern void ata_bmdma_irq_clear(struct ata_port *ap); |
| 481 | extern void ata_qc_complete(struct ata_queued_cmd *qc, unsigned int err_mask); | 481 | extern void ata_qc_complete(struct ata_queued_cmd *qc); |
| 482 | extern void ata_eng_timeout(struct ata_port *ap); | 482 | extern void ata_eng_timeout(struct ata_port *ap); |
| 483 | extern void ata_scsi_simulate(u16 *id, struct scsi_cmnd *cmd, | 483 | extern void ata_scsi_simulate(u16 *id, struct scsi_cmnd *cmd, |
| 484 | void (*done)(struct scsi_cmnd *)); | 484 | void (*done)(struct scsi_cmnd *)); |
| @@ -670,6 +670,7 @@ static inline void ata_qc_reinit(struct ata_queued_cmd *qc) | |||
| 670 | qc->cursect = qc->cursg = qc->cursg_ofs = 0; | 670 | qc->cursect = qc->cursg = qc->cursg_ofs = 0; |
| 671 | qc->nsect = 0; | 671 | qc->nsect = 0; |
| 672 | qc->nbytes = qc->curbytes = 0; | 672 | qc->nbytes = qc->curbytes = 0; |
| 673 | qc->err_mask = 0; | ||
| 673 | 674 | ||
| 674 | ata_tf_init(qc->ap, &qc->tf, qc->dev->devno); | 675 | ata_tf_init(qc->ap, &qc->tf, qc->dev->devno); |
| 675 | } | 676 | } |
diff --git a/include/linux/net.h b/include/linux/net.h index d6a41e6577f6..28195a2d8ff0 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
| @@ -107,7 +107,7 @@ enum sock_type { | |||
| 107 | struct socket { | 107 | struct socket { |
| 108 | socket_state state; | 108 | socket_state state; |
| 109 | unsigned long flags; | 109 | unsigned long flags; |
| 110 | struct proto_ops *ops; | 110 | const struct proto_ops *ops; |
| 111 | struct fasync_struct *fasync_list; | 111 | struct fasync_struct *fasync_list; |
| 112 | struct file *file; | 112 | struct file *file; |
| 113 | struct sock *sk; | 113 | struct sock *sk; |
| @@ -260,7 +260,7 @@ SOCKCALL_WRAP(name, recvmsg, (struct kiocb *iocb, struct socket *sock, struct ms | |||
| 260 | SOCKCALL_WRAP(name, mmap, (struct file *file, struct socket *sock, struct vm_area_struct *vma), \ | 260 | SOCKCALL_WRAP(name, mmap, (struct file *file, struct socket *sock, struct vm_area_struct *vma), \ |
| 261 | (file, sock, vma)) \ | 261 | (file, sock, vma)) \ |
| 262 | \ | 262 | \ |
| 263 | static struct proto_ops name##_ops = { \ | 263 | static const struct proto_ops name##_ops = { \ |
| 264 | .family = fam, \ | 264 | .family = fam, \ |
| 265 | .owner = THIS_MODULE, \ | 265 | .owner = THIS_MODULE, \ |
| 266 | .release = __lock_##name##_release, \ | 266 | .release = __lock_##name##_release, \ |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 936f8b76114e..7fda03d338d1 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -684,6 +684,7 @@ extern int netif_rx(struct sk_buff *skb); | |||
| 684 | extern int netif_rx_ni(struct sk_buff *skb); | 684 | extern int netif_rx_ni(struct sk_buff *skb); |
| 685 | #define HAVE_NETIF_RECEIVE_SKB 1 | 685 | #define HAVE_NETIF_RECEIVE_SKB 1 |
| 686 | extern int netif_receive_skb(struct sk_buff *skb); | 686 | extern int netif_receive_skb(struct sk_buff *skb); |
| 687 | extern int dev_valid_name(const char *name); | ||
| 687 | extern int dev_ioctl(unsigned int cmd, void __user *); | 688 | extern int dev_ioctl(unsigned int cmd, void __user *); |
| 688 | extern int dev_ethtool(struct ifreq *); | 689 | extern int dev_ethtool(struct ifreq *); |
| 689 | extern unsigned dev_get_flags(const struct net_device *); | 690 | extern unsigned dev_get_flags(const struct net_device *); |
| @@ -801,12 +802,16 @@ static inline u32 netif_msg_init(int debug_value, int default_msg_enable_bits) | |||
| 801 | return (1 << debug_value) - 1; | 802 | return (1 << debug_value) - 1; |
| 802 | } | 803 | } |
| 803 | 804 | ||
| 804 | /* Schedule rx intr now? */ | 805 | /* Test if receive needs to be scheduled */ |
| 806 | static inline int __netif_rx_schedule_prep(struct net_device *dev) | ||
| 807 | { | ||
| 808 | return !test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state); | ||
| 809 | } | ||
| 805 | 810 | ||
| 811 | /* Test if receive needs to be scheduled but only if up */ | ||
| 806 | static inline int netif_rx_schedule_prep(struct net_device *dev) | 812 | static inline int netif_rx_schedule_prep(struct net_device *dev) |
| 807 | { | 813 | { |
| 808 | return netif_running(dev) && | 814 | return netif_running(dev) && __netif_rx_schedule_prep(dev); |
| 809 | !test_and_set_bit(__LINK_STATE_RX_SCHED, &dev->state); | ||
| 810 | } | 815 | } |
| 811 | 816 | ||
| 812 | /* Add interface to tail of rx poll list. This assumes that _prep has | 817 | /* Add interface to tail of rx poll list. This assumes that _prep has |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index 4db67b3b05cc..4f01710485cd 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #define PCI_CLASS_STORAGE_FLOPPY 0x0102 | 15 | #define PCI_CLASS_STORAGE_FLOPPY 0x0102 |
| 16 | #define PCI_CLASS_STORAGE_IPI 0x0103 | 16 | #define PCI_CLASS_STORAGE_IPI 0x0103 |
| 17 | #define PCI_CLASS_STORAGE_RAID 0x0104 | 17 | #define PCI_CLASS_STORAGE_RAID 0x0104 |
| 18 | #define PCI_CLASS_STORAGE_SAS 0x0107 | ||
| 18 | #define PCI_CLASS_STORAGE_OTHER 0x0180 | 19 | #define PCI_CLASS_STORAGE_OTHER 0x0180 |
| 19 | 20 | ||
| 20 | #define PCI_BASE_CLASS_NETWORK 0x02 | 21 | #define PCI_BASE_CLASS_NETWORK 0x02 |
| @@ -376,6 +377,10 @@ | |||
| 376 | #define PCI_DEVICE_ID_NS_87560_USB 0x0012 | 377 | #define PCI_DEVICE_ID_NS_87560_USB 0x0012 |
| 377 | #define PCI_DEVICE_ID_NS_83815 0x0020 | 378 | #define PCI_DEVICE_ID_NS_83815 0x0020 |
| 378 | #define PCI_DEVICE_ID_NS_83820 0x0022 | 379 | #define PCI_DEVICE_ID_NS_83820 0x0022 |
| 380 | #define PCI_DEVICE_ID_NS_CS5535_IDE 0x002d | ||
| 381 | #define PCI_DEVICE_ID_NS_CS5535_AUDIO 0x002e | ||
| 382 | #define PCI_DEVICE_ID_NS_CS5535_USB 0x002f | ||
| 383 | #define PCI_DEVICE_ID_NS_CS5535_VIDEO 0x0030 | ||
| 379 | #define PCI_DEVICE_ID_NS_SATURN 0x0035 | 384 | #define PCI_DEVICE_ID_NS_SATURN 0x0035 |
| 380 | #define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500 | 385 | #define PCI_DEVICE_ID_NS_SCx200_BRIDGE 0x0500 |
| 381 | #define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501 | 386 | #define PCI_DEVICE_ID_NS_SCx200_SMI 0x0501 |
diff --git a/include/linux/pfkeyv2.h b/include/linux/pfkeyv2.h index 724066778aff..6351c4055ace 100644 --- a/include/linux/pfkeyv2.h +++ b/include/linux/pfkeyv2.h | |||
| @@ -216,6 +216,16 @@ struct sadb_x_nat_t_port { | |||
| 216 | } __attribute__((packed)); | 216 | } __attribute__((packed)); |
| 217 | /* sizeof(struct sadb_x_nat_t_port) == 8 */ | 217 | /* sizeof(struct sadb_x_nat_t_port) == 8 */ |
| 218 | 218 | ||
| 219 | /* Generic LSM security context */ | ||
| 220 | struct sadb_x_sec_ctx { | ||
| 221 | uint16_t sadb_x_sec_len; | ||
| 222 | uint16_t sadb_x_sec_exttype; | ||
| 223 | uint8_t sadb_x_ctx_alg; /* LSMs: e.g., selinux == 1 */ | ||
| 224 | uint8_t sadb_x_ctx_doi; | ||
| 225 | uint16_t sadb_x_ctx_len; | ||
| 226 | } __attribute__((packed)); | ||
| 227 | /* sizeof(struct sadb_sec_ctx) = 8 */ | ||
| 228 | |||
| 219 | /* Message types */ | 229 | /* Message types */ |
| 220 | #define SADB_RESERVED 0 | 230 | #define SADB_RESERVED 0 |
| 221 | #define SADB_GETSPI 1 | 231 | #define SADB_GETSPI 1 |
| @@ -325,7 +335,8 @@ struct sadb_x_nat_t_port { | |||
| 325 | #define SADB_X_EXT_NAT_T_SPORT 21 | 335 | #define SADB_X_EXT_NAT_T_SPORT 21 |
| 326 | #define SADB_X_EXT_NAT_T_DPORT 22 | 336 | #define SADB_X_EXT_NAT_T_DPORT 22 |
| 327 | #define SADB_X_EXT_NAT_T_OA 23 | 337 | #define SADB_X_EXT_NAT_T_OA 23 |
| 328 | #define SADB_EXT_MAX 23 | 338 | #define SADB_X_EXT_SEC_CTX 24 |
| 339 | #define SADB_EXT_MAX 24 | ||
| 329 | 340 | ||
| 330 | /* Identity Extension values */ | 341 | /* Identity Extension values */ |
| 331 | #define SADB_IDENTTYPE_RESERVED 0 | 342 | #define SADB_IDENTTYPE_RESERVED 0 |
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h index e87b233615b3..d10f35338507 100644 --- a/include/linux/pkt_sched.h +++ b/include/linux/pkt_sched.h | |||
| @@ -429,6 +429,7 @@ enum | |||
| 429 | TCA_NETEM_CORR, | 429 | TCA_NETEM_CORR, |
| 430 | TCA_NETEM_DELAY_DIST, | 430 | TCA_NETEM_DELAY_DIST, |
| 431 | TCA_NETEM_REORDER, | 431 | TCA_NETEM_REORDER, |
| 432 | TCA_NETEM_CORRUPT, | ||
| 432 | __TCA_NETEM_MAX, | 433 | __TCA_NETEM_MAX, |
| 433 | }; | 434 | }; |
| 434 | 435 | ||
| @@ -457,6 +458,12 @@ struct tc_netem_reorder | |||
| 457 | __u32 correlation; | 458 | __u32 correlation; |
| 458 | }; | 459 | }; |
| 459 | 460 | ||
| 461 | struct tc_netem_corrupt | ||
| 462 | { | ||
| 463 | __u32 probability; | ||
| 464 | __u32 correlation; | ||
| 465 | }; | ||
| 466 | |||
| 460 | #define NETEM_DIST_SCALE 8192 | 467 | #define NETEM_DIST_SCALE 8192 |
| 461 | 468 | ||
| 462 | #endif | 469 | #endif |
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 17e336f40b47..782090c68932 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
| @@ -41,6 +41,7 @@ extern struct platform_device *platform_device_alloc(const char *name, unsigned | |||
| 41 | extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num); | 41 | extern int platform_device_add_resources(struct platform_device *pdev, struct resource *res, unsigned int num); |
| 42 | extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size); | 42 | extern int platform_device_add_data(struct platform_device *pdev, void *data, size_t size); |
| 43 | extern int platform_device_add(struct platform_device *pdev); | 43 | extern int platform_device_add(struct platform_device *pdev); |
| 44 | extern void platform_device_del(struct platform_device *pdev); | ||
| 44 | extern void platform_device_put(struct platform_device *pdev); | 45 | extern void platform_device_put(struct platform_device *pdev); |
| 45 | 46 | ||
| 46 | struct platform_driver { | 47 | struct platform_driver { |
diff --git a/include/linux/pnp.h b/include/linux/pnp.h index 584d57cb393a..93b0959eb40f 100644 --- a/include/linux/pnp.h +++ b/include/linux/pnp.h | |||
| @@ -162,6 +162,7 @@ struct pnp_card_link { | |||
| 162 | struct pnp_card * card; | 162 | struct pnp_card * card; |
| 163 | struct pnp_card_driver * driver; | 163 | struct pnp_card_driver * driver; |
| 164 | void * driver_data; | 164 | void * driver_data; |
| 165 | pm_message_t pm_state; | ||
| 165 | }; | 166 | }; |
| 166 | 167 | ||
| 167 | static inline void *pnp_get_card_drvdata (struct pnp_card_link *pcard) | 168 | static inline void *pnp_get_card_drvdata (struct pnp_card_link *pcard) |
| @@ -294,6 +295,8 @@ struct pnp_driver { | |||
| 294 | unsigned int flags; | 295 | unsigned int flags; |
| 295 | int (*probe) (struct pnp_dev *dev, const struct pnp_device_id *dev_id); | 296 | int (*probe) (struct pnp_dev *dev, const struct pnp_device_id *dev_id); |
| 296 | void (*remove) (struct pnp_dev *dev); | 297 | void (*remove) (struct pnp_dev *dev); |
| 298 | int (*suspend) (struct pnp_dev *dev, pm_message_t state); | ||
| 299 | int (*resume) (struct pnp_dev *dev); | ||
| 297 | struct device_driver driver; | 300 | struct device_driver driver; |
| 298 | }; | 301 | }; |
| 299 | 302 | ||
| @@ -306,6 +309,8 @@ struct pnp_card_driver { | |||
| 306 | unsigned int flags; | 309 | unsigned int flags; |
| 307 | int (*probe) (struct pnp_card_link *card, const struct pnp_card_device_id *card_id); | 310 | int (*probe) (struct pnp_card_link *card, const struct pnp_card_device_id *card_id); |
| 308 | void (*remove) (struct pnp_card_link *card); | 311 | void (*remove) (struct pnp_card_link *card); |
| 312 | int (*suspend) (struct pnp_card_link *card, pm_message_t state); | ||
| 313 | int (*resume) (struct pnp_card_link *card); | ||
| 309 | struct pnp_driver link; | 314 | struct pnp_driver link; |
| 310 | }; | 315 | }; |
| 311 | 316 | ||
| @@ -380,6 +385,8 @@ void pnp_init_resource_table(struct pnp_resource_table *table); | |||
| 380 | int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode); | 385 | int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode); |
| 381 | int pnp_auto_config_dev(struct pnp_dev *dev); | 386 | int pnp_auto_config_dev(struct pnp_dev *dev); |
| 382 | int pnp_validate_config(struct pnp_dev *dev); | 387 | int pnp_validate_config(struct pnp_dev *dev); |
| 388 | int pnp_start_dev(struct pnp_dev *dev); | ||
| 389 | int pnp_stop_dev(struct pnp_dev *dev); | ||
| 383 | int pnp_activate_dev(struct pnp_dev *dev); | 390 | int pnp_activate_dev(struct pnp_dev *dev); |
| 384 | int pnp_disable_dev(struct pnp_dev *dev); | 391 | int pnp_disable_dev(struct pnp_dev *dev); |
| 385 | void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size); | 392 | void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size); |
| @@ -423,6 +430,8 @@ static inline void pnp_init_resource_table(struct pnp_resource_table *table) { } | |||
| 423 | static inline int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode) { return -ENODEV; } | 430 | static inline int pnp_manual_config_dev(struct pnp_dev *dev, struct pnp_resource_table *res, int mode) { return -ENODEV; } |
| 424 | static inline int pnp_auto_config_dev(struct pnp_dev *dev) { return -ENODEV; } | 431 | static inline int pnp_auto_config_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 425 | static inline int pnp_validate_config(struct pnp_dev *dev) { return -ENODEV; } | 432 | static inline int pnp_validate_config(struct pnp_dev *dev) { return -ENODEV; } |
| 433 | static inline int pnp_start_dev(struct pnp_dev *dev) { return -ENODEV; } | ||
| 434 | static inline int pnp_stop_dev(struct pnp_dev *dev) { return -ENODEV; } | ||
| 426 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } | 435 | static inline int pnp_activate_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 427 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } | 436 | static inline int pnp_disable_dev(struct pnp_dev *dev) { return -ENODEV; } |
| 428 | static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { } | 437 | static inline void pnp_resource_change(struct resource *resource, unsigned long start, unsigned long size) { } |
diff --git a/include/linux/random.h b/include/linux/random.h index 7b2adb3322d5..5d6456bcdeba 100644 --- a/include/linux/random.h +++ b/include/linux/random.h | |||
| @@ -52,9 +52,9 @@ extern void get_random_bytes(void *buf, int nbytes); | |||
| 52 | void generate_random_uuid(unsigned char uuid_out[16]); | 52 | void generate_random_uuid(unsigned char uuid_out[16]); |
| 53 | 53 | ||
| 54 | extern __u32 secure_ip_id(__u32 daddr); | 54 | extern __u32 secure_ip_id(__u32 daddr); |
| 55 | extern u32 secure_tcp_port_ephemeral(__u32 saddr, __u32 daddr, __u16 dport); | 55 | extern u32 secure_ipv4_port_ephemeral(__u32 saddr, __u32 daddr, __u16 dport); |
| 56 | extern u32 secure_tcpv6_port_ephemeral(const __u32 *saddr, const __u32 *daddr, | 56 | extern u32 secure_ipv6_port_ephemeral(const __u32 *saddr, const __u32 *daddr, |
| 57 | __u16 dport); | 57 | __u16 dport); |
| 58 | extern __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr, | 58 | extern __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr, |
| 59 | __u16 sport, __u16 dport); | 59 | __u16 sport, __u16 dport); |
| 60 | extern __u32 secure_tcpv6_sequence_number(__u32 *saddr, __u32 *daddr, | 60 | extern __u32 secure_tcpv6_sequence_number(__u32 *saddr, __u32 *daddr, |
diff --git a/include/linux/security.h b/include/linux/security.h index f7e0ae018712..ef753654daa5 100644 --- a/include/linux/security.h +++ b/include/linux/security.h | |||
| @@ -59,6 +59,12 @@ struct sk_buff; | |||
| 59 | struct sock; | 59 | struct sock; |
| 60 | struct sockaddr; | 60 | struct sockaddr; |
| 61 | struct socket; | 61 | struct socket; |
| 62 | struct flowi; | ||
| 63 | struct dst_entry; | ||
| 64 | struct xfrm_selector; | ||
| 65 | struct xfrm_policy; | ||
| 66 | struct xfrm_state; | ||
| 67 | struct xfrm_user_sec_ctx; | ||
| 62 | 68 | ||
| 63 | extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb); | 69 | extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb); |
| 64 | extern int cap_netlink_recv(struct sk_buff *skb); | 70 | extern int cap_netlink_recv(struct sk_buff *skb); |
| @@ -788,6 +794,52 @@ struct swap_info_struct; | |||
| 788 | * which is used to copy security attributes between local stream sockets. | 794 | * which is used to copy security attributes between local stream sockets. |
| 789 | * @sk_free_security: | 795 | * @sk_free_security: |
| 790 | * Deallocate security structure. | 796 | * Deallocate security structure. |
| 797 | * @sk_getsid: | ||
| 798 | * Retrieve the LSM-specific sid for the sock to enable caching of network | ||
| 799 | * authorizations. | ||
| 800 | * | ||
| 801 | * Security hooks for XFRM operations. | ||
| 802 | * | ||
| 803 | * @xfrm_policy_alloc_security: | ||
| 804 | * @xp contains the xfrm_policy being added to Security Policy Database | ||
| 805 | * used by the XFRM system. | ||
| 806 | * @sec_ctx contains the security context information being provided by | ||
| 807 | * the user-level policy update program (e.g., setkey). | ||
| 808 | * Allocate a security structure to the xp->selector.security field. | ||
| 809 | * The security field is initialized to NULL when the xfrm_policy is | ||
| 810 | * allocated. | ||
| 811 | * Return 0 if operation was successful (memory to allocate, legal context) | ||
| 812 | * @xfrm_policy_clone_security: | ||
| 813 | * @old contains an existing xfrm_policy in the SPD. | ||
| 814 | * @new contains a new xfrm_policy being cloned from old. | ||
| 815 | * Allocate a security structure to the new->selector.security field | ||
| 816 | * that contains the information from the old->selector.security field. | ||
| 817 | * Return 0 if operation was successful (memory to allocate). | ||
| 818 | * @xfrm_policy_free_security: | ||
| 819 | * @xp contains the xfrm_policy | ||
| 820 | * Deallocate xp->selector.security. | ||
| 821 | * @xfrm_state_alloc_security: | ||
| 822 | * @x contains the xfrm_state being added to the Security Association | ||
| 823 | * Database by the XFRM system. | ||
| 824 | * @sec_ctx contains the security context information being provided by | ||
| 825 | * the user-level SA generation program (e.g., setkey or racoon). | ||
| 826 | * Allocate a security structure to the x->sel.security field. The | ||
| 827 | * security field is initialized to NULL when the xfrm_state is | ||
| 828 | * allocated. | ||
| 829 | * Return 0 if operation was successful (memory to allocate, legal context). | ||
| 830 | * @xfrm_state_free_security: | ||
| 831 | * @x contains the xfrm_state. | ||
| 832 | * Deallocate x>sel.security. | ||
| 833 | * @xfrm_policy_lookup: | ||
| 834 | * @xp contains the xfrm_policy for which the access control is being | ||
| 835 | * checked. | ||
| 836 | * @sk_sid contains the sock security label that is used to authorize | ||
| 837 | * access to the policy xp. | ||
| 838 | * @dir contains the direction of the flow (input or output). | ||
| 839 | * Check permission when a sock selects a xfrm_policy for processing | ||
| 840 | * XFRMs on a packet. The hook is called when selecting either a | ||
| 841 | * per-socket policy or a generic xfrm policy. | ||
| 842 | * Return 0 if permission is granted. | ||
| 791 | * | 843 | * |
| 792 | * Security hooks affecting all Key Management operations | 844 | * Security hooks affecting all Key Management operations |
| 793 | * | 845 | * |
| @@ -1237,8 +1289,18 @@ struct security_operations { | |||
| 1237 | int (*socket_getpeersec) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len); | 1289 | int (*socket_getpeersec) (struct socket *sock, char __user *optval, int __user *optlen, unsigned len); |
| 1238 | int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority); | 1290 | int (*sk_alloc_security) (struct sock *sk, int family, gfp_t priority); |
| 1239 | void (*sk_free_security) (struct sock *sk); | 1291 | void (*sk_free_security) (struct sock *sk); |
| 1292 | unsigned int (*sk_getsid) (struct sock *sk, struct flowi *fl, u8 dir); | ||
| 1240 | #endif /* CONFIG_SECURITY_NETWORK */ | 1293 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 1241 | 1294 | ||
| 1295 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | ||
| 1296 | int (*xfrm_policy_alloc_security) (struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx); | ||
| 1297 | int (*xfrm_policy_clone_security) (struct xfrm_policy *old, struct xfrm_policy *new); | ||
| 1298 | void (*xfrm_policy_free_security) (struct xfrm_policy *xp); | ||
| 1299 | int (*xfrm_state_alloc_security) (struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx); | ||
| 1300 | void (*xfrm_state_free_security) (struct xfrm_state *x); | ||
| 1301 | int (*xfrm_policy_lookup)(struct xfrm_policy *xp, u32 sk_sid, u8 dir); | ||
| 1302 | #endif /* CONFIG_SECURITY_NETWORK_XFRM */ | ||
| 1303 | |||
| 1242 | /* key management security hooks */ | 1304 | /* key management security hooks */ |
| 1243 | #ifdef CONFIG_KEYS | 1305 | #ifdef CONFIG_KEYS |
| 1244 | int (*key_alloc)(struct key *key); | 1306 | int (*key_alloc)(struct key *key); |
| @@ -2679,6 +2741,11 @@ static inline void security_sk_free(struct sock *sk) | |||
| 2679 | { | 2741 | { |
| 2680 | return security_ops->sk_free_security(sk); | 2742 | return security_ops->sk_free_security(sk); |
| 2681 | } | 2743 | } |
| 2744 | |||
| 2745 | static inline unsigned int security_sk_sid(struct sock *sk, struct flowi *fl, u8 dir) | ||
| 2746 | { | ||
| 2747 | return security_ops->sk_getsid(sk, fl, dir); | ||
| 2748 | } | ||
| 2682 | #else /* CONFIG_SECURITY_NETWORK */ | 2749 | #else /* CONFIG_SECURITY_NETWORK */ |
| 2683 | static inline int security_unix_stream_connect(struct socket * sock, | 2750 | static inline int security_unix_stream_connect(struct socket * sock, |
| 2684 | struct socket * other, | 2751 | struct socket * other, |
| @@ -2795,8 +2862,73 @@ static inline int security_sk_alloc(struct sock *sk, int family, gfp_t priority) | |||
| 2795 | static inline void security_sk_free(struct sock *sk) | 2862 | static inline void security_sk_free(struct sock *sk) |
| 2796 | { | 2863 | { |
| 2797 | } | 2864 | } |
| 2865 | |||
| 2866 | static inline unsigned int security_sk_sid(struct sock *sk, struct flowi *fl, u8 dir) | ||
| 2867 | { | ||
| 2868 | return 0; | ||
| 2869 | } | ||
| 2798 | #endif /* CONFIG_SECURITY_NETWORK */ | 2870 | #endif /* CONFIG_SECURITY_NETWORK */ |
| 2799 | 2871 | ||
| 2872 | #ifdef CONFIG_SECURITY_NETWORK_XFRM | ||
| 2873 | static inline int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx) | ||
| 2874 | { | ||
| 2875 | return security_ops->xfrm_policy_alloc_security(xp, sec_ctx); | ||
| 2876 | } | ||
| 2877 | |||
| 2878 | static inline int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new) | ||
| 2879 | { | ||
| 2880 | return security_ops->xfrm_policy_clone_security(old, new); | ||
| 2881 | } | ||
| 2882 | |||
| 2883 | static inline void security_xfrm_policy_free(struct xfrm_policy *xp) | ||
| 2884 | { | ||
| 2885 | security_ops->xfrm_policy_free_security(xp); | ||
| 2886 | } | ||
| 2887 | |||
| 2888 | static inline int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx) | ||
| 2889 | { | ||
| 2890 | return security_ops->xfrm_state_alloc_security(x, sec_ctx); | ||
| 2891 | } | ||
| 2892 | |||
| 2893 | static inline void security_xfrm_state_free(struct xfrm_state *x) | ||
| 2894 | { | ||
| 2895 | security_ops->xfrm_state_free_security(x); | ||
| 2896 | } | ||
| 2897 | |||
| 2898 | static inline int security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir) | ||
| 2899 | { | ||
| 2900 | return security_ops->xfrm_policy_lookup(xp, sk_sid, dir); | ||
| 2901 | } | ||
| 2902 | #else /* CONFIG_SECURITY_NETWORK_XFRM */ | ||
| 2903 | static inline int security_xfrm_policy_alloc(struct xfrm_policy *xp, struct xfrm_user_sec_ctx *sec_ctx) | ||
| 2904 | { | ||
| 2905 | return 0; | ||
| 2906 | } | ||
| 2907 | |||
| 2908 | static inline int security_xfrm_policy_clone(struct xfrm_policy *old, struct xfrm_policy *new) | ||
| 2909 | { | ||
| 2910 | return 0; | ||
| 2911 | } | ||
| 2912 | |||
| 2913 | static inline void security_xfrm_policy_free(struct xfrm_policy *xp) | ||
| 2914 | { | ||
| 2915 | } | ||
| 2916 | |||
| 2917 | static inline int security_xfrm_state_alloc(struct xfrm_state *x, struct xfrm_user_sec_ctx *sec_ctx) | ||
| 2918 | { | ||
| 2919 | return 0; | ||
| 2920 | } | ||
| 2921 | |||
| 2922 | static inline void security_xfrm_state_free(struct xfrm_state *x) | ||
| 2923 | { | ||
| 2924 | } | ||
| 2925 | |||
| 2926 | static inline int security_xfrm_policy_lookup(struct xfrm_policy *xp, u32 sk_sid, u8 dir) | ||
| 2927 | { | ||
| 2928 | return 0; | ||
| 2929 | } | ||
| 2930 | #endif /* CONFIG_SECURITY_NETWORK_XFRM */ | ||
| 2931 | |||
| 2800 | #ifdef CONFIG_KEYS | 2932 | #ifdef CONFIG_KEYS |
| 2801 | #ifdef CONFIG_SECURITY | 2933 | #ifdef CONFIG_SECURITY |
| 2802 | static inline int security_key_alloc(struct key *key) | 2934 | static inline int security_key_alloc(struct key *key) |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 8c5d6001a923..483cfc47ec34 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -32,7 +32,6 @@ | |||
| 32 | 32 | ||
| 33 | #define HAVE_ALLOC_SKB /* For the drivers to know */ | 33 | #define HAVE_ALLOC_SKB /* For the drivers to know */ |
| 34 | #define HAVE_ALIGNABLE_SKB /* Ditto 8) */ | 34 | #define HAVE_ALIGNABLE_SKB /* Ditto 8) */ |
| 35 | #define SLAB_SKB /* Slabified skbuffs */ | ||
| 36 | 35 | ||
| 37 | #define CHECKSUM_NONE 0 | 36 | #define CHECKSUM_NONE 0 |
| 38 | #define CHECKSUM_HW 1 | 37 | #define CHECKSUM_HW 1 |
| @@ -134,7 +133,7 @@ struct skb_frag_struct { | |||
| 134 | */ | 133 | */ |
| 135 | struct skb_shared_info { | 134 | struct skb_shared_info { |
| 136 | atomic_t dataref; | 135 | atomic_t dataref; |
| 137 | unsigned int nr_frags; | 136 | unsigned short nr_frags; |
| 138 | unsigned short tso_size; | 137 | unsigned short tso_size; |
| 139 | unsigned short tso_segs; | 138 | unsigned short tso_segs; |
| 140 | unsigned short ufo_size; | 139 | unsigned short ufo_size; |
| @@ -1239,6 +1238,8 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, | |||
| 1239 | int hlen, | 1238 | int hlen, |
| 1240 | struct iovec *iov); | 1239 | struct iovec *iov); |
| 1241 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); | 1240 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); |
| 1241 | extern void skb_kill_datagram(struct sock *sk, struct sk_buff *skb, | ||
| 1242 | unsigned int flags); | ||
| 1242 | extern unsigned int skb_checksum(const struct sk_buff *skb, int offset, | 1243 | extern unsigned int skb_checksum(const struct sk_buff *skb, int offset, |
| 1243 | int len, unsigned int csum); | 1244 | int len, unsigned int csum); |
| 1244 | extern int skb_copy_bits(const struct sk_buff *skb, int offset, | 1245 | extern int skb_copy_bits(const struct sk_buff *skb, int offset, |
diff --git a/include/linux/socket.h b/include/linux/socket.h index 1739c2d5b95b..9f4019156fd8 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
| @@ -27,7 +27,6 @@ struct __kernel_sockaddr_storage { | |||
| 27 | #include <linux/compiler.h> /* __user */ | 27 | #include <linux/compiler.h> /* __user */ |
| 28 | 28 | ||
| 29 | extern int sysctl_somaxconn; | 29 | extern int sysctl_somaxconn; |
| 30 | extern void sock_init(void); | ||
| 31 | #ifdef CONFIG_PROC_FS | 30 | #ifdef CONFIG_PROC_FS |
| 32 | struct seq_file; | 31 | struct seq_file; |
| 33 | extern void socket_seq_show(struct seq_file *seq); | 32 | extern void socket_seq_show(struct seq_file *seq); |
diff --git a/include/linux/spinlock.h b/include/linux/spinlock.h index 0e9682c9def5..799be6747944 100644 --- a/include/linux/spinlock.h +++ b/include/linux/spinlock.h | |||
| @@ -59,8 +59,7 @@ | |||
| 59 | /* | 59 | /* |
| 60 | * Must define these before including other files, inline functions need them | 60 | * Must define these before including other files, inline functions need them |
| 61 | */ | 61 | */ |
| 62 | #define LOCK_SECTION_NAME \ | 62 | #define LOCK_SECTION_NAME ".text.lock."KBUILD_BASENAME |
| 63 | ".text.lock." __stringify(KBUILD_BASENAME) | ||
| 64 | 63 | ||
| 65 | #define LOCK_SECTION_START(extra) \ | 64 | #define LOCK_SECTION_START(extra) \ |
| 66 | ".subsection 1\n\t" \ | 65 | ".subsection 1\n\t" \ |
diff --git a/include/linux/sysctl.h b/include/linux/sysctl.h index 4be34ef8c2f7..a9b80fc7f0f3 100644 --- a/include/linux/sysctl.h +++ b/include/linux/sysctl.h | |||
| @@ -124,7 +124,7 @@ enum | |||
| 124 | KERN_OVERFLOWUID=46, /* int: overflow UID */ | 124 | KERN_OVERFLOWUID=46, /* int: overflow UID */ |
| 125 | KERN_OVERFLOWGID=47, /* int: overflow GID */ | 125 | KERN_OVERFLOWGID=47, /* int: overflow GID */ |
| 126 | KERN_SHMPATH=48, /* string: path to shm fs */ | 126 | KERN_SHMPATH=48, /* string: path to shm fs */ |
| 127 | KERN_HOTPLUG=49, /* string: path to hotplug policy agent */ | 127 | KERN_HOTPLUG=49, /* string: path to uevent helper (deprecated) */ |
| 128 | KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */ | 128 | KERN_IEEE_EMULATION_WARNINGS=50, /* int: unimplemented ieee instructions */ |
| 129 | KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */ | 129 | KERN_S390_USER_DEBUG_LOGGING=51, /* int: dumps of user faults */ |
| 130 | KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ | 130 | KERN_CORE_USES_PID=52, /* int: use core or core.%pid */ |
| @@ -390,6 +390,7 @@ enum | |||
| 390 | NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, | 390 | NET_IPV4_ICMP_ERRORS_USE_INBOUND_IFADDR=109, |
| 391 | NET_TCP_CONG_CONTROL=110, | 391 | NET_TCP_CONG_CONTROL=110, |
| 392 | NET_TCP_ABC=111, | 392 | NET_TCP_ABC=111, |
| 393 | NET_IPV4_IPFRAG_MAX_DIST=112, | ||
| 393 | }; | 394 | }; |
| 394 | 395 | ||
| 395 | enum { | 396 | enum { |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 0e1da6602e05..f2bb2396853f 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -55,22 +55,6 @@ struct tcphdr { | |||
| 55 | __u16 urg_ptr; | 55 | __u16 urg_ptr; |
| 56 | }; | 56 | }; |
| 57 | 57 | ||
| 58 | #define TCP_ACTION_FIN (1 << 7) | ||
| 59 | |||
| 60 | enum { | ||
| 61 | TCPF_ESTABLISHED = (1 << 1), | ||
| 62 | TCPF_SYN_SENT = (1 << 2), | ||
| 63 | TCPF_SYN_RECV = (1 << 3), | ||
| 64 | TCPF_FIN_WAIT1 = (1 << 4), | ||
| 65 | TCPF_FIN_WAIT2 = (1 << 5), | ||
| 66 | TCPF_TIME_WAIT = (1 << 6), | ||
| 67 | TCPF_CLOSE = (1 << 7), | ||
| 68 | TCPF_CLOSE_WAIT = (1 << 8), | ||
| 69 | TCPF_LAST_ACK = (1 << 9), | ||
| 70 | TCPF_LISTEN = (1 << 10), | ||
| 71 | TCPF_CLOSING = (1 << 11) | ||
| 72 | }; | ||
| 73 | |||
| 74 | /* | 58 | /* |
| 75 | * The union cast uses a gcc extension to avoid aliasing problems | 59 | * The union cast uses a gcc extension to avoid aliasing problems |
| 76 | * (union is compatible to any of its members) | 60 | * (union is compatible to any of its members) |
| @@ -254,10 +238,9 @@ struct tcp_sock { | |||
| 254 | __u32 snd_wl1; /* Sequence for window update */ | 238 | __u32 snd_wl1; /* Sequence for window update */ |
| 255 | __u32 snd_wnd; /* The window we expect to receive */ | 239 | __u32 snd_wnd; /* The window we expect to receive */ |
| 256 | __u32 max_window; /* Maximal window ever seen from peer */ | 240 | __u32 max_window; /* Maximal window ever seen from peer */ |
| 257 | __u32 pmtu_cookie; /* Last pmtu seen by socket */ | ||
| 258 | __u32 mss_cache; /* Cached effective mss, not including SACKS */ | 241 | __u32 mss_cache; /* Cached effective mss, not including SACKS */ |
| 259 | __u16 xmit_size_goal; /* Goal for segmenting output packets */ | 242 | __u16 xmit_size_goal; /* Goal for segmenting output packets */ |
| 260 | __u16 ext_header_len; /* Network protocol overhead (IP/IPv6 options) */ | 243 | /* XXX Two bytes hole, try to pack */ |
| 261 | 244 | ||
| 262 | __u32 window_clamp; /* Maximal window to advertise */ | 245 | __u32 window_clamp; /* Maximal window to advertise */ |
| 263 | __u32 rcv_ssthresh; /* Current window clamp */ | 246 | __u32 rcv_ssthresh; /* Current window clamp */ |
| @@ -295,8 +278,6 @@ struct tcp_sock { | |||
| 295 | 278 | ||
| 296 | struct sk_buff_head out_of_order_queue; /* Out of order segments go here */ | 279 | struct sk_buff_head out_of_order_queue; /* Out of order segments go here */ |
| 297 | 280 | ||
| 298 | struct tcp_func *af_specific; /* Operations which are AF_INET{4,6} specific */ | ||
| 299 | |||
| 300 | __u32 rcv_wnd; /* Current receiver window */ | 281 | __u32 rcv_wnd; /* Current receiver window */ |
| 301 | __u32 rcv_wup; /* rcv_nxt on last window update sent */ | 282 | __u32 rcv_wup; /* rcv_nxt on last window update sent */ |
| 302 | __u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ | 283 | __u32 write_seq; /* Tail(+1) of data held in tcp send buffer */ |
diff --git a/include/linux/udf_fs.h b/include/linux/udf_fs.h index 46e2bb945353..36c684e1b110 100644 --- a/include/linux/udf_fs.h +++ b/include/linux/udf_fs.h | |||
| @@ -13,11 +13,6 @@ | |||
| 13 | * http://www.osta.org/ * http://www.ecma.ch/ | 13 | * http://www.osta.org/ * http://www.ecma.ch/ |
| 14 | * http://www.iso.org/ | 14 | * http://www.iso.org/ |
| 15 | * | 15 | * |
| 16 | * CONTACTS | ||
| 17 | * E-mail regarding any portion of the Linux UDF file system should be | ||
| 18 | * directed to the development team mailing list (run by majordomo): | ||
| 19 | * linux_udf@hpesjro.fc.hp.com | ||
| 20 | * | ||
| 21 | * COPYRIGHT | 16 | * COPYRIGHT |
| 22 | * This file is distributed under the terms of the GNU General Public | 17 | * This file is distributed under the terms of the GNU General Public |
| 23 | * License (GPL). Copies of the GPL can be obtained from: | 18 | * License (GPL). Copies of the GPL can be obtained from: |
diff --git a/include/linux/udf_fs_i.h b/include/linux/udf_fs_i.h index 62b15a4214e6..1e7508420fcf 100644 --- a/include/linux/udf_fs_i.h +++ b/include/linux/udf_fs_i.h | |||
| @@ -3,11 +3,6 @@ | |||
| 3 | * | 3 | * |
| 4 | * This file is intended for the Linux kernel/module. | 4 | * This file is intended for the Linux kernel/module. |
| 5 | * | 5 | * |
| 6 | * CONTACTS | ||
| 7 | * E-mail regarding any portion of the Linux UDF file system should be | ||
| 8 | * directed to the development team mailing list (run by majordomo): | ||
| 9 | * linux_udf@hpesjro.fc.hp.com | ||
| 10 | * | ||
| 11 | * COPYRIGHT | 6 | * COPYRIGHT |
| 12 | * This file is distributed under the terms of the GNU General Public | 7 | * This file is distributed under the terms of the GNU General Public |
| 13 | * License (GPL). Copies of the GPL can be obtained from: | 8 | * License (GPL). Copies of the GPL can be obtained from: |
diff --git a/include/linux/udf_fs_sb.h b/include/linux/udf_fs_sb.h index 1966a6dbb4b6..b15ff2e99c91 100644 --- a/include/linux/udf_fs_sb.h +++ b/include/linux/udf_fs_sb.h | |||
| @@ -3,11 +3,6 @@ | |||
| 3 | * | 3 | * |
| 4 | * This include file is for the Linux kernel/module. | 4 | * This include file is for the Linux kernel/module. |
| 5 | * | 5 | * |
| 6 | * CONTACTS | ||
| 7 | * E-mail regarding any portion of the Linux UDF file system should be | ||
| 8 | * directed to the development team mailing list (run by majordomo): | ||
| 9 | * linux_udf@hpesjro.fc.hp.com | ||
| 10 | * | ||
| 11 | * COPYRIGHT | 6 | * COPYRIGHT |
| 12 | * This file is distributed under the terms of the GNU General Public | 7 | * This file is distributed under the terms of the GNU General Public |
| 13 | * License (GPL). Copies of the GPL can be obtained from: | 8 | * License (GPL). Copies of the GPL can be obtained from: |
diff --git a/include/linux/udp.h b/include/linux/udp.h index b60e0b4a25c4..85a55658831c 100644 --- a/include/linux/udp.h +++ b/include/linux/udp.h | |||
| @@ -35,10 +35,10 @@ struct udphdr { | |||
| 35 | #define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */ | 35 | #define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */ |
| 36 | 36 | ||
| 37 | #ifdef __KERNEL__ | 37 | #ifdef __KERNEL__ |
| 38 | |||
| 39 | #include <linux/config.h> | 38 | #include <linux/config.h> |
| 40 | #include <net/sock.h> | 39 | #include <linux/types.h> |
| 41 | #include <linux/ip.h> | 40 | |
| 41 | #include <net/inet_sock.h> | ||
| 42 | 42 | ||
| 43 | struct udp_sock { | 43 | struct udp_sock { |
| 44 | /* inet_sock has to be the first member */ | 44 | /* inet_sock has to be the first member */ |
diff --git a/include/linux/usb.h b/include/linux/usb.h index d81b050e5955..827cc6de5f5c 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -225,7 +225,7 @@ struct usb_interface_cache { | |||
| 225 | * Device drivers should not attempt to activate configurations. The choice | 225 | * Device drivers should not attempt to activate configurations. The choice |
| 226 | * of which configuration to install is a policy decision based on such | 226 | * of which configuration to install is a policy decision based on such |
| 227 | * considerations as available power, functionality provided, and the user's | 227 | * considerations as available power, functionality provided, and the user's |
| 228 | * desires (expressed through hotplug scripts). However, drivers can call | 228 | * desires (expressed through userspace tools). However, drivers can call |
| 229 | * usb_reset_configuration() to reinitialize the current configuration and | 229 | * usb_reset_configuration() to reinitialize the current configuration and |
| 230 | * all its interfaces. | 230 | * all its interfaces. |
| 231 | */ | 231 | */ |
| @@ -329,8 +329,6 @@ struct usb_device { | |||
| 329 | struct usb_tt *tt; /* low/full speed dev, highspeed hub */ | 329 | struct usb_tt *tt; /* low/full speed dev, highspeed hub */ |
| 330 | int ttport; /* device port on that tt hub */ | 330 | int ttport; /* device port on that tt hub */ |
| 331 | 331 | ||
| 332 | struct semaphore serialize; | ||
| 333 | |||
| 334 | unsigned int toggle[2]; /* one bit for each endpoint | 332 | unsigned int toggle[2]; /* one bit for each endpoint |
| 335 | * ([0] = IN, [1] = OUT) */ | 333 | * ([0] = IN, [1] = OUT) */ |
| 336 | 334 | ||
| @@ -349,6 +347,9 @@ struct usb_device { | |||
| 349 | 347 | ||
| 350 | char **rawdescriptors; /* Raw descriptors for each config */ | 348 | char **rawdescriptors; /* Raw descriptors for each config */ |
| 351 | 349 | ||
| 350 | unsigned short bus_mA; /* Current available from the bus */ | ||
| 351 | u8 portnum; /* Parent port number (origin 1) */ | ||
| 352 | |||
| 352 | int have_langid; /* whether string_langid is valid */ | 353 | int have_langid; /* whether string_langid is valid */ |
| 353 | int string_langid; /* language ID for strings */ | 354 | int string_langid; /* language ID for strings */ |
| 354 | 355 | ||
| @@ -377,11 +378,12 @@ struct usb_device { | |||
| 377 | extern struct usb_device *usb_get_dev(struct usb_device *dev); | 378 | extern struct usb_device *usb_get_dev(struct usb_device *dev); |
| 378 | extern void usb_put_dev(struct usb_device *dev); | 379 | extern void usb_put_dev(struct usb_device *dev); |
| 379 | 380 | ||
| 380 | extern void usb_lock_device(struct usb_device *udev); | 381 | /* USB device locking */ |
| 381 | extern int usb_trylock_device(struct usb_device *udev); | 382 | #define usb_lock_device(udev) down(&(udev)->dev.sem) |
| 383 | #define usb_unlock_device(udev) up(&(udev)->dev.sem) | ||
| 384 | #define usb_trylock_device(udev) down_trylock(&(udev)->dev.sem) | ||
| 382 | extern int usb_lock_device_for_reset(struct usb_device *udev, | 385 | extern int usb_lock_device_for_reset(struct usb_device *udev, |
| 383 | struct usb_interface *iface); | 386 | struct usb_interface *iface); |
| 384 | extern void usb_unlock_device(struct usb_device *udev); | ||
| 385 | 387 | ||
| 386 | /* USB port reset for device reinitialization */ | 388 | /* USB port reset for device reinitialization */ |
| 387 | extern int usb_reset_device(struct usb_device *dev); | 389 | extern int usb_reset_device(struct usb_device *dev); |
| @@ -529,10 +531,13 @@ static inline int usb_make_path (struct usb_device *dev, char *buf, | |||
| 529 | 531 | ||
| 530 | /* ----------------------------------------------------------------------- */ | 532 | /* ----------------------------------------------------------------------- */ |
| 531 | 533 | ||
| 534 | struct usb_dynids { | ||
| 535 | spinlock_t lock; | ||
| 536 | struct list_head list; | ||
| 537 | }; | ||
| 538 | |||
| 532 | /** | 539 | /** |
| 533 | * struct usb_driver - identifies USB driver to usbcore | 540 | * struct usb_driver - identifies USB driver to usbcore |
| 534 | * @owner: Pointer to the module owner of this driver; initialize | ||
| 535 | * it using THIS_MODULE. | ||
| 536 | * @name: The driver name should be unique among USB drivers, | 541 | * @name: The driver name should be unique among USB drivers, |
| 537 | * and should normally be the same as the module name. | 542 | * and should normally be the same as the module name. |
| 538 | * @probe: Called to see if the driver is willing to manage a particular | 543 | * @probe: Called to see if the driver is willing to manage a particular |
| @@ -553,7 +558,11 @@ static inline int usb_make_path (struct usb_device *dev, char *buf, | |||
| 553 | * @id_table: USB drivers use ID table to support hotplugging. | 558 | * @id_table: USB drivers use ID table to support hotplugging. |
| 554 | * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set | 559 | * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set |
| 555 | * or your driver's probe function will never get called. | 560 | * or your driver's probe function will never get called. |
| 561 | * @dynids: used internally to hold the list of dynamically added device | ||
| 562 | * ids for this driver. | ||
| 556 | * @driver: the driver model core driver structure. | 563 | * @driver: the driver model core driver structure. |
| 564 | * @no_dynamic_id: if set to 1, the USB core will not allow dynamic ids to be | ||
| 565 | * added to this driver by preventing the sysfs file from being created. | ||
| 557 | * | 566 | * |
| 558 | * USB drivers must provide a name, probe() and disconnect() methods, | 567 | * USB drivers must provide a name, probe() and disconnect() methods, |
| 559 | * and an id_table. Other driver fields are optional. | 568 | * and an id_table. Other driver fields are optional. |
| @@ -571,8 +580,6 @@ static inline int usb_make_path (struct usb_device *dev, char *buf, | |||
| 571 | * them as necessary, and blocking until the unlinks complete). | 580 | * them as necessary, and blocking until the unlinks complete). |
| 572 | */ | 581 | */ |
| 573 | struct usb_driver { | 582 | struct usb_driver { |
| 574 | struct module *owner; | ||
| 575 | |||
| 576 | const char *name; | 583 | const char *name; |
| 577 | 584 | ||
| 578 | int (*probe) (struct usb_interface *intf, | 585 | int (*probe) (struct usb_interface *intf, |
| @@ -588,7 +595,9 @@ struct usb_driver { | |||
| 588 | 595 | ||
| 589 | const struct usb_device_id *id_table; | 596 | const struct usb_device_id *id_table; |
| 590 | 597 | ||
| 598 | struct usb_dynids dynids; | ||
| 591 | struct device_driver driver; | 599 | struct device_driver driver; |
| 600 | unsigned int no_dynamic_id:1; | ||
| 592 | }; | 601 | }; |
| 593 | #define to_usb_driver(d) container_of(d, struct usb_driver, driver) | 602 | #define to_usb_driver(d) container_of(d, struct usb_driver, driver) |
| 594 | 603 | ||
| @@ -614,7 +623,11 @@ struct usb_class_driver { | |||
| 614 | * use these in module_init()/module_exit() | 623 | * use these in module_init()/module_exit() |
| 615 | * and don't forget MODULE_DEVICE_TABLE(usb, ...) | 624 | * and don't forget MODULE_DEVICE_TABLE(usb, ...) |
| 616 | */ | 625 | */ |
| 617 | extern int usb_register(struct usb_driver *); | 626 | int usb_register_driver(struct usb_driver *, struct module *); |
| 627 | static inline int usb_register(struct usb_driver *driver) | ||
| 628 | { | ||
| 629 | return usb_register_driver(driver, THIS_MODULE); | ||
| 630 | } | ||
| 618 | extern void usb_deregister(struct usb_driver *); | 631 | extern void usb_deregister(struct usb_driver *); |
| 619 | 632 | ||
| 620 | extern int usb_register_dev(struct usb_interface *intf, | 633 | extern int usb_register_dev(struct usb_interface *intf, |
diff --git a/include/linux/usb_usual.h b/include/linux/usb_usual.h new file mode 100644 index 000000000000..b2d08984a9f7 --- /dev/null +++ b/include/linux/usb_usual.h | |||
| @@ -0,0 +1,126 @@ | |||
| 1 | /* | ||
| 2 | * Interface to the libusual. | ||
| 3 | * | ||
| 4 | * Copyright (c) 2005 Pete Zaitcev <zaitcev@redhat.com> | ||
| 5 | * Copyright (c) 1999-2002 Matthew Dharm (mdharm-usb@one-eyed-alien.net) | ||
| 6 | * Copyright (c) 1999 Michael Gee (michael@linuxspecific.com) | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __LINUX_USB_USUAL_H | ||
| 10 | #define __LINUX_USB_USUAL_H | ||
| 11 | |||
| 12 | #include <linux/config.h> | ||
| 13 | |||
| 14 | /* We should do this for cleanliness... But other usb_foo.h do not do this. */ | ||
| 15 | /* #include <linux/usb.h> */ | ||
| 16 | |||
| 17 | /* | ||
| 18 | * The flags field, which we store in usb_device_id.driver_info. | ||
| 19 | * It is compatible with the old usb-storage flags in lower 24 bits. | ||
| 20 | */ | ||
| 21 | |||
| 22 | /* | ||
| 23 | * Static flag definitions. We use this roundabout technique so that the | ||
| 24 | * proc_info() routine can automatically display a message for each flag. | ||
| 25 | */ | ||
| 26 | #define US_DO_ALL_FLAGS \ | ||
| 27 | US_FLAG(SINGLE_LUN, 0x00000001) \ | ||
| 28 | /* allow access to only LUN 0 */ \ | ||
| 29 | US_FLAG(NEED_OVERRIDE, 0x00000002) \ | ||
| 30 | /* unusual_devs entry is necessary */ \ | ||
| 31 | US_FLAG(SCM_MULT_TARG, 0x00000004) \ | ||
| 32 | /* supports multiple targets */ \ | ||
| 33 | US_FLAG(FIX_INQUIRY, 0x00000008) \ | ||
| 34 | /* INQUIRY response needs faking */ \ | ||
| 35 | US_FLAG(FIX_CAPACITY, 0x00000010) \ | ||
| 36 | /* READ CAPACITY response too big */ \ | ||
| 37 | US_FLAG(IGNORE_RESIDUE, 0x00000020) \ | ||
| 38 | /* reported residue is wrong */ \ | ||
| 39 | US_FLAG(BULK32, 0x00000040) \ | ||
| 40 | /* Uses 32-byte CBW length */ \ | ||
| 41 | US_FLAG(NOT_LOCKABLE, 0x00000080) \ | ||
| 42 | /* PREVENT/ALLOW not supported */ \ | ||
| 43 | US_FLAG(GO_SLOW, 0x00000100) \ | ||
| 44 | /* Need delay after Command phase */ \ | ||
| 45 | US_FLAG(NO_WP_DETECT, 0x00000200) \ | ||
| 46 | /* Don't check for write-protect */ \ | ||
| 47 | |||
| 48 | #define US_FLAG(name, value) US_FL_##name = value , | ||
| 49 | enum { US_DO_ALL_FLAGS }; | ||
| 50 | #undef US_FLAG | ||
| 51 | |||
| 52 | /* | ||
| 53 | * The bias field for libusual and friends. | ||
| 54 | */ | ||
| 55 | #define USB_US_TYPE_NONE 0 | ||
| 56 | #define USB_US_TYPE_STOR 1 /* usb-storage */ | ||
| 57 | #define USB_US_TYPE_UB 2 /* ub */ | ||
| 58 | |||
| 59 | #define USB_US_TYPE(flags) (((flags) >> 24) & 0xFF) | ||
| 60 | #define USB_US_ORIG_FLAGS(flags) ((flags) & 0x00FFFFFF) | ||
| 61 | |||
| 62 | /* | ||
| 63 | * This is probably not the best place to keep these constants, conceptually. | ||
| 64 | * But it's the only header included into all places which need them. | ||
| 65 | */ | ||
| 66 | |||
| 67 | /* Sub Classes */ | ||
| 68 | |||
| 69 | #define US_SC_RBC 0x01 /* Typically, flash devices */ | ||
| 70 | #define US_SC_8020 0x02 /* CD-ROM */ | ||
| 71 | #define US_SC_QIC 0x03 /* QIC-157 Tapes */ | ||
| 72 | #define US_SC_UFI 0x04 /* Floppy */ | ||
| 73 | #define US_SC_8070 0x05 /* Removable media */ | ||
| 74 | #define US_SC_SCSI 0x06 /* Transparent */ | ||
| 75 | #define US_SC_ISD200 0x07 /* ISD200 ATA */ | ||
| 76 | #define US_SC_MIN US_SC_RBC | ||
| 77 | #define US_SC_MAX US_SC_ISD200 | ||
| 78 | |||
| 79 | #define US_SC_DEVICE 0xff /* Use device's value */ | ||
| 80 | |||
| 81 | /* Protocols */ | ||
| 82 | |||
| 83 | #define US_PR_CBI 0x00 /* Control/Bulk/Interrupt */ | ||
| 84 | #define US_PR_CB 0x01 /* Control/Bulk w/o interrupt */ | ||
| 85 | #define US_PR_BULK 0x50 /* bulk only */ | ||
| 86 | #ifdef CONFIG_USB_STORAGE_USBAT | ||
| 87 | #define US_PR_USBAT 0x80 /* SCM-ATAPI bridge */ | ||
| 88 | #endif | ||
| 89 | #ifdef CONFIG_USB_STORAGE_SDDR09 | ||
| 90 | #define US_PR_EUSB_SDDR09 0x81 /* SCM-SCSI bridge for SDDR-09 */ | ||
| 91 | #endif | ||
| 92 | #ifdef CONFIG_USB_STORAGE_SDDR55 | ||
| 93 | #define US_PR_SDDR55 0x82 /* SDDR-55 (made up) */ | ||
| 94 | #endif | ||
| 95 | #define US_PR_DPCM_USB 0xf0 /* Combination CB/SDDR09 */ | ||
| 96 | #ifdef CONFIG_USB_STORAGE_FREECOM | ||
| 97 | #define US_PR_FREECOM 0xf1 /* Freecom */ | ||
| 98 | #endif | ||
| 99 | #ifdef CONFIG_USB_STORAGE_DATAFAB | ||
| 100 | #define US_PR_DATAFAB 0xf2 /* Datafab chipsets */ | ||
| 101 | #endif | ||
| 102 | #ifdef CONFIG_USB_STORAGE_JUMPSHOT | ||
| 103 | #define US_PR_JUMPSHOT 0xf3 /* Lexar Jumpshot */ | ||
| 104 | #endif | ||
| 105 | #ifdef CONFIG_USB_STORAGE_ALAUDA | ||
| 106 | #define US_PR_ALAUDA 0xf4 /* Alauda chipsets */ | ||
| 107 | #endif | ||
| 108 | |||
| 109 | #define US_PR_DEVICE 0xff /* Use device's value */ | ||
| 110 | |||
| 111 | /* | ||
| 112 | */ | ||
| 113 | #ifdef CONFIG_USB_LIBUSUAL | ||
| 114 | |||
| 115 | extern struct usb_device_id storage_usb_ids[]; | ||
| 116 | extern void usb_usual_set_present(int type); | ||
| 117 | extern void usb_usual_clear_present(int type); | ||
| 118 | extern int usb_usual_check_type(const struct usb_device_id *, int type); | ||
| 119 | #else | ||
| 120 | |||
| 121 | #define usb_usual_set_present(t) do { } while(0) | ||
| 122 | #define usb_usual_clear_present(t) do { } while(0) | ||
| 123 | #define usb_usual_check_type(id, t) (0) | ||
| 124 | #endif /* CONFIG_USB_LIBUSUAL */ | ||
| 125 | |||
| 126 | #endif /* __LINUX_USB_USUAL_H */ | ||
diff --git a/include/linux/xfrm.h b/include/linux/xfrm.h index 0fb077d68441..82fbb758e28f 100644 --- a/include/linux/xfrm.h +++ b/include/linux/xfrm.h | |||
| @@ -27,6 +27,22 @@ struct xfrm_id | |||
| 27 | __u8 proto; | 27 | __u8 proto; |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | struct xfrm_sec_ctx { | ||
| 31 | __u8 ctx_doi; | ||
| 32 | __u8 ctx_alg; | ||
| 33 | __u16 ctx_len; | ||
| 34 | __u32 ctx_sid; | ||
| 35 | char ctx_str[0]; | ||
| 36 | }; | ||
| 37 | |||
| 38 | /* Security Context Domains of Interpretation */ | ||
| 39 | #define XFRM_SC_DOI_RESERVED 0 | ||
| 40 | #define XFRM_SC_DOI_LSM 1 | ||
| 41 | |||
| 42 | /* Security Context Algorithms */ | ||
| 43 | #define XFRM_SC_ALG_RESERVED 0 | ||
| 44 | #define XFRM_SC_ALG_SELINUX 1 | ||
| 45 | |||
| 30 | /* Selector, used as selector both on policy rules (SPD) and SAs. */ | 46 | /* Selector, used as selector both on policy rules (SPD) and SAs. */ |
| 31 | 47 | ||
| 32 | struct xfrm_selector | 48 | struct xfrm_selector |
| @@ -146,6 +162,18 @@ enum { | |||
| 146 | 162 | ||
| 147 | #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE) | 163 | #define XFRM_NR_MSGTYPES (XFRM_MSG_MAX + 1 - XFRM_MSG_BASE) |
| 148 | 164 | ||
| 165 | /* | ||
| 166 | * Generic LSM security context for comunicating to user space | ||
| 167 | * NOTE: Same format as sadb_x_sec_ctx | ||
| 168 | */ | ||
| 169 | struct xfrm_user_sec_ctx { | ||
| 170 | __u16 len; | ||
| 171 | __u16 exttype; | ||
| 172 | __u8 ctx_alg; /* LSMs: e.g., selinux == 1 */ | ||
| 173 | __u8 ctx_doi; | ||
| 174 | __u16 ctx_len; | ||
| 175 | }; | ||
| 176 | |||
| 149 | struct xfrm_user_tmpl { | 177 | struct xfrm_user_tmpl { |
| 150 | struct xfrm_id id; | 178 | struct xfrm_id id; |
| 151 | __u16 family; | 179 | __u16 family; |
| @@ -176,6 +204,7 @@ enum xfrm_attr_type_t { | |||
| 176 | XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */ | 204 | XFRMA_TMPL, /* 1 or more struct xfrm_user_tmpl */ |
| 177 | XFRMA_SA, | 205 | XFRMA_SA, |
| 178 | XFRMA_POLICY, | 206 | XFRMA_POLICY, |
| 207 | XFRMA_SEC_CTX, /* struct xfrm_sec_ctx */ | ||
| 179 | __XFRMA_MAX | 208 | __XFRMA_MAX |
| 180 | 209 | ||
| 181 | #define XFRMA_MAX (__XFRMA_MAX - 1) | 210 | #define XFRMA_MAX (__XFRMA_MAX - 1) |
