diff options
| author | Ingo Molnar <mingo@elte.hu> | 2009-09-19 05:27:32 -0400 |
|---|---|---|
| committer | Ingo Molnar <mingo@elte.hu> | 2009-09-19 05:28:41 -0400 |
| commit | 929bf0d0156562ce631728b6fa53d68004d456d2 (patch) | |
| tree | 739063990a8077b29ef97e69d73bce94573daae4 /include/linux | |
| parent | def0a9b2573e00ab0b486cb5382625203ab4c4a6 (diff) | |
| parent | 202c4675c55ddf6b443c7e057d2dff6b42ef71aa (diff) | |
Merge branch 'linus' into perfcounters/core
Merge reason: Bring in tracing changes we depend on.
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'include/linux')
159 files changed, 2346 insertions, 1253 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index 334a3593cdfd..cff4a101f266 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
| @@ -268,6 +268,10 @@ ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm.h \ | |||
| 268 | $(srctree)/include/asm-$(SRCARCH)/kvm.h),) | 268 | $(srctree)/include/asm-$(SRCARCH)/kvm.h),) |
| 269 | unifdef-y += kvm.h | 269 | unifdef-y += kvm.h |
| 270 | endif | 270 | endif |
| 271 | ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/asm/kvm_para.h \ | ||
| 272 | $(srctree)/include/asm-$(SRCARCH)/kvm_para.h),) | ||
| 273 | unifdef-y += kvm_para.h | ||
| 274 | endif | ||
| 271 | unifdef-y += llc.h | 275 | unifdef-y += llc.h |
| 272 | unifdef-y += loop.h | 276 | unifdef-y += loop.h |
| 273 | unifdef-y += lp.h | 277 | unifdef-y += lp.h |
diff --git a/include/linux/agp_backend.h b/include/linux/agp_backend.h index 76fa794fdac0..880130f7311f 100644 --- a/include/linux/agp_backend.h +++ b/include/linux/agp_backend.h | |||
| @@ -79,9 +79,12 @@ struct agp_memory { | |||
| 79 | u32 physical; | 79 | u32 physical; |
| 80 | bool is_bound; | 80 | bool is_bound; |
| 81 | bool is_flushed; | 81 | bool is_flushed; |
| 82 | bool vmalloc_flag; | 82 | bool vmalloc_flag; |
| 83 | /* list of agp_memory mapped to the aperture */ | 83 | /* list of agp_memory mapped to the aperture */ |
| 84 | struct list_head mapped_list; | 84 | struct list_head mapped_list; |
| 85 | /* DMA-mapped addresses */ | ||
| 86 | struct scatterlist *sg_list; | ||
| 87 | int num_sg; | ||
| 85 | }; | 88 | }; |
| 86 | 89 | ||
| 87 | #define AGP_NORMAL_MEMORY 0 | 90 | #define AGP_NORMAL_MEMORY 0 |
diff --git a/include/linux/amba/bus.h b/include/linux/amba/bus.h index 9b93cafa82a0..ab94335b4bb9 100644 --- a/include/linux/amba/bus.h +++ b/include/linux/amba/bus.h | |||
| @@ -36,6 +36,11 @@ struct amba_driver { | |||
| 36 | struct amba_id *id_table; | 36 | struct amba_id *id_table; |
| 37 | }; | 37 | }; |
| 38 | 38 | ||
| 39 | enum amba_vendor { | ||
| 40 | AMBA_VENDOR_ARM = 0x41, | ||
| 41 | AMBA_VENDOR_ST = 0x80, | ||
| 42 | }; | ||
| 43 | |||
| 39 | #define amba_get_drvdata(d) dev_get_drvdata(&d->dev) | 44 | #define amba_get_drvdata(d) dev_get_drvdata(&d->dev) |
| 40 | #define amba_set_drvdata(d,p) dev_set_drvdata(&d->dev, p) | 45 | #define amba_set_drvdata(d,p) dev_set_drvdata(&d->dev, p) |
| 41 | 46 | ||
diff --git a/include/linux/amba/pl093.h b/include/linux/amba/pl093.h new file mode 100644 index 000000000000..2983e3671adb --- /dev/null +++ b/include/linux/amba/pl093.h | |||
| @@ -0,0 +1,80 @@ | |||
| 1 | /* linux/amba/pl093.h | ||
| 2 | * | ||
| 3 | * Copyright (c) 2008 Simtec Electronics | ||
| 4 | * http://armlinux.simtec.co.uk/ | ||
| 5 | * Ben Dooks <ben@simtec.co.uk> | ||
| 6 | * | ||
| 7 | * AMBA PL093 SSMC (synchronous static memory controller) | ||
| 8 | * See DDI0236.pdf (r0p4) for more details | ||
| 9 | * | ||
| 10 | * This program is free software; you can redistribute it and/or modify | ||
| 11 | * it under the terms of the GNU General Public License version 2 as | ||
| 12 | * published by the Free Software Foundation. | ||
| 13 | */ | ||
| 14 | |||
| 15 | #define SMB_BANK(x) ((x) * 0x20) /* each bank control set is 0x20 apart */ | ||
| 16 | |||
| 17 | /* Offsets for SMBxxxxRy registers */ | ||
| 18 | |||
| 19 | #define SMBIDCYR (0x00) | ||
| 20 | #define SMBWSTRDR (0x04) | ||
| 21 | #define SMBWSTWRR (0x08) | ||
| 22 | #define SMBWSTOENR (0x0C) | ||
| 23 | #define SMBWSTWENR (0x10) | ||
| 24 | #define SMBCR (0x14) | ||
| 25 | #define SMBSR (0x18) | ||
| 26 | #define SMBWSTBRDR (0x1C) | ||
| 27 | |||
| 28 | /* Masks for SMB registers */ | ||
| 29 | #define IDCY_MASK (0xf) | ||
| 30 | #define WSTRD_MASK (0xf) | ||
| 31 | #define WSTWR_MASK (0xf) | ||
| 32 | #define WSTOEN_MASK (0xf) | ||
| 33 | #define WSTWEN_MASK (0xf) | ||
| 34 | |||
| 35 | /* Notes from datasheet: | ||
| 36 | * WSTOEN <= WSTRD | ||
| 37 | * WSTWEN <= WSTWR | ||
| 38 | * | ||
| 39 | * WSTOEN is not used with nWAIT | ||
| 40 | */ | ||
| 41 | |||
| 42 | /* SMBCR bit definitions */ | ||
| 43 | #define SMBCR_BIWRITEEN (1 << 21) | ||
| 44 | #define SMBCR_ADDRVALIDWRITEEN (1 << 20) | ||
| 45 | #define SMBCR_SYNCWRITE (1 << 17) | ||
| 46 | #define SMBCR_BMWRITE (1 << 16) | ||
| 47 | #define SMBCR_WRAPREAD (1 << 14) | ||
| 48 | #define SMBCR_BIREADEN (1 << 13) | ||
| 49 | #define SMBCR_ADDRVALIDREADEN (1 << 12) | ||
| 50 | #define SMBCR_SYNCREAD (1 << 9) | ||
| 51 | #define SMBCR_BMREAD (1 << 8) | ||
| 52 | #define SMBCR_SMBLSPOL (1 << 6) | ||
| 53 | #define SMBCR_WP (1 << 3) | ||
| 54 | #define SMBCR_WAITEN (1 << 2) | ||
| 55 | #define SMBCR_WAITPOL (1 << 1) | ||
| 56 | #define SMBCR_RBLE (1 << 0) | ||
| 57 | |||
| 58 | #define SMBCR_BURSTLENWRITE_MASK (3 << 18) | ||
| 59 | #define SMBCR_BURSTLENWRITE_4 (0 << 18) | ||
| 60 | #define SMBCR_BURSTLENWRITE_8 (1 << 18) | ||
| 61 | #define SMBCR_BURSTLENWRITE_RESERVED (2 << 18) | ||
| 62 | #define SMBCR_BURSTLENWRITE_CONTINUOUS (3 << 18) | ||
| 63 | |||
| 64 | #define SMBCR_BURSTLENREAD_MASK (3 << 10) | ||
| 65 | #define SMBCR_BURSTLENREAD_4 (0 << 10) | ||
| 66 | #define SMBCR_BURSTLENREAD_8 (1 << 10) | ||
| 67 | #define SMBCR_BURSTLENREAD_16 (2 << 10) | ||
| 68 | #define SMBCR_BURSTLENREAD_CONTINUOUS (3 << 10) | ||
| 69 | |||
| 70 | #define SMBCR_MW_MASK (3 << 4) | ||
| 71 | #define SMBCR_MW_8BIT (0 << 4) | ||
| 72 | #define SMBCR_MW_16BIT (1 << 4) | ||
| 73 | #define SMBCR_MW_M32BIT (2 << 4) | ||
| 74 | |||
| 75 | /* SSMC status registers */ | ||
| 76 | #define SSMCCSR (0x200) | ||
| 77 | #define SSMCCR (0x204) | ||
| 78 | #define SSMCITCR (0x208) | ||
| 79 | #define SSMCITIP (0x20C) | ||
| 80 | #define SSMCITIOP (0x210) | ||
diff --git a/include/linux/arcdevice.h b/include/linux/arcdevice.h index cd4bcb6989ce..7d650a0e3d8f 100644 --- a/include/linux/arcdevice.h +++ b/include/linux/arcdevice.h | |||
| @@ -337,7 +337,8 @@ struct net_device *alloc_arcdev(const char *name); | |||
| 337 | 337 | ||
| 338 | int arcnet_open(struct net_device *dev); | 338 | int arcnet_open(struct net_device *dev); |
| 339 | int arcnet_close(struct net_device *dev); | 339 | int arcnet_close(struct net_device *dev); |
| 340 | int arcnet_send_packet(struct sk_buff *skb, struct net_device *dev); | 340 | netdev_tx_t arcnet_send_packet(struct sk_buff *skb, |
| 341 | struct net_device *dev); | ||
| 341 | void arcnet_timeout(struct net_device *dev); | 342 | void arcnet_timeout(struct net_device *dev); |
| 342 | 343 | ||
| 343 | #endif /* __KERNEL__ */ | 344 | #endif /* __KERNEL__ */ |
diff --git a/include/linux/attribute_container.h b/include/linux/attribute_container.h index 794ad74b1d61..c3ab81428c66 100644 --- a/include/linux/attribute_container.h +++ b/include/linux/attribute_container.h | |||
| @@ -17,7 +17,7 @@ struct attribute_container { | |||
| 17 | struct list_head node; | 17 | struct list_head node; |
| 18 | struct klist containers; | 18 | struct klist containers; |
| 19 | struct class *class; | 19 | struct class *class; |
| 20 | struct attribute_group *grp; | 20 | const struct attribute_group *grp; |
| 21 | struct device_attribute **attrs; | 21 | struct device_attribute **attrs; |
| 22 | int (*match)(struct attribute_container *, struct device *); | 22 | int (*match)(struct attribute_container *, struct device *); |
| 23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 | 23 | #define ATTRIBUTE_CONTAINER_NO_CLASSDEVS 0x01 |
diff --git a/include/linux/backing-dev.h b/include/linux/backing-dev.h index f169bcb90b58..0ee33c2e6129 100644 --- a/include/linux/backing-dev.h +++ b/include/linux/backing-dev.h | |||
| @@ -59,6 +59,7 @@ struct bdi_writeback { | |||
| 59 | 59 | ||
| 60 | struct backing_dev_info { | 60 | struct backing_dev_info { |
| 61 | struct list_head bdi_list; | 61 | struct list_head bdi_list; |
| 62 | struct rcu_head rcu_head; | ||
| 62 | unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ | 63 | unsigned long ra_pages; /* max readahead in PAGE_CACHE_SIZE units */ |
| 63 | unsigned long state; /* Always use atomic bitops on this */ | 64 | unsigned long state; /* Always use atomic bitops on this */ |
| 64 | unsigned int capabilities; /* Device capabilities */ | 65 | unsigned int capabilities; /* Device capabilities */ |
| @@ -100,7 +101,7 @@ int bdi_register(struct backing_dev_info *bdi, struct device *parent, | |||
| 100 | const char *fmt, ...); | 101 | const char *fmt, ...); |
| 101 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); | 102 | int bdi_register_dev(struct backing_dev_info *bdi, dev_t dev); |
| 102 | void bdi_unregister(struct backing_dev_info *bdi); | 103 | void bdi_unregister(struct backing_dev_info *bdi); |
| 103 | void bdi_start_writeback(struct writeback_control *wbc); | 104 | void bdi_start_writeback(struct backing_dev_info *bdi, long nr_pages); |
| 104 | int bdi_writeback_task(struct bdi_writeback *wb); | 105 | int bdi_writeback_task(struct bdi_writeback *wb); |
| 105 | int bdi_has_dirty_io(struct backing_dev_info *bdi); | 106 | int bdi_has_dirty_io(struct backing_dev_info *bdi); |
| 106 | 107 | ||
diff --git a/include/linux/bio.h b/include/linux/bio.h index 2892b710771c..5be93f18d842 100644 --- a/include/linux/bio.h +++ b/include/linux/bio.h | |||
| @@ -142,56 +142,51 @@ struct bio { | |||
| 142 | * | 142 | * |
| 143 | * bit 0 -- data direction | 143 | * bit 0 -- data direction |
| 144 | * If not set, bio is a read from device. If set, it's a write to device. | 144 | * If not set, bio is a read from device. If set, it's a write to device. |
| 145 | * bit 1 -- rw-ahead when set | 145 | * bit 1 -- fail fast device errors |
| 146 | * bit 2 -- barrier | 146 | * bit 2 -- fail fast transport errors |
| 147 | * bit 3 -- fail fast driver errors | ||
| 148 | * bit 4 -- rw-ahead when set | ||
| 149 | * bit 5 -- barrier | ||
| 147 | * Insert a serialization point in the IO queue, forcing previously | 150 | * Insert a serialization point in the IO queue, forcing previously |
| 148 | * submitted IO to be completed before this one is issued. | 151 | * submitted IO to be completed before this one is issued. |
| 149 | * bit 3 -- synchronous I/O hint. | 152 | * bit 6 -- synchronous I/O hint. |
| 150 | * bit 4 -- Unplug the device immediately after submitting this bio. | 153 | * bit 7 -- Unplug the device immediately after submitting this bio. |
| 151 | * bit 5 -- metadata request | 154 | * bit 8 -- metadata request |
| 152 | * Used for tracing to differentiate metadata and data IO. May also | 155 | * Used for tracing to differentiate metadata and data IO. May also |
| 153 | * get some preferential treatment in the IO scheduler | 156 | * get some preferential treatment in the IO scheduler |
| 154 | * bit 6 -- discard sectors | 157 | * bit 9 -- discard sectors |
| 155 | * Informs the lower level device that this range of sectors is no longer | 158 | * Informs the lower level device that this range of sectors is no longer |
| 156 | * used by the file system and may thus be freed by the device. Used | 159 | * used by the file system and may thus be freed by the device. Used |
| 157 | * for flash based storage. | 160 | * for flash based storage. |
| 158 | * bit 7 -- fail fast device errors | ||
| 159 | * bit 8 -- fail fast transport errors | ||
| 160 | * bit 9 -- fail fast driver errors | ||
| 161 | * Don't want driver retries for any fast fail whatever the reason. | 161 | * Don't want driver retries for any fast fail whatever the reason. |
| 162 | * bit 10 -- Tell the IO scheduler not to wait for more requests after this | 162 | * bit 10 -- Tell the IO scheduler not to wait for more requests after this |
| 163 | one has been submitted, even if it is a SYNC request. | 163 | one has been submitted, even if it is a SYNC request. |
| 164 | */ | 164 | */ |
| 165 | #define BIO_RW 0 /* Must match RW in req flags (blkdev.h) */ | 165 | enum bio_rw_flags { |
| 166 | #define BIO_RW_AHEAD 1 /* Must match FAILFAST in req flags */ | 166 | BIO_RW, |
| 167 | #define BIO_RW_BARRIER 2 | 167 | BIO_RW_FAILFAST_DEV, |
| 168 | #define BIO_RW_SYNCIO 3 | 168 | BIO_RW_FAILFAST_TRANSPORT, |
| 169 | #define BIO_RW_UNPLUG 4 | 169 | BIO_RW_FAILFAST_DRIVER, |
| 170 | #define BIO_RW_META 5 | 170 | /* above flags must match REQ_* */ |
| 171 | #define BIO_RW_DISCARD 6 | 171 | BIO_RW_AHEAD, |
| 172 | #define BIO_RW_FAILFAST_DEV 7 | 172 | BIO_RW_BARRIER, |
| 173 | #define BIO_RW_FAILFAST_TRANSPORT 8 | 173 | BIO_RW_SYNCIO, |
| 174 | #define BIO_RW_FAILFAST_DRIVER 9 | 174 | BIO_RW_UNPLUG, |
| 175 | #define BIO_RW_NOIDLE 10 | 175 | BIO_RW_META, |
| 176 | 176 | BIO_RW_DISCARD, | |
| 177 | #define bio_rw_flagged(bio, flag) ((bio)->bi_rw & (1 << (flag))) | 177 | BIO_RW_NOIDLE, |
| 178 | }; | ||
| 178 | 179 | ||
| 179 | /* | 180 | /* |
| 180 | * Old defines, these should eventually be replaced by direct usage of | 181 | * First four bits must match between bio->bi_rw and rq->cmd_flags, make |
| 181 | * bio_rw_flagged() | 182 | * that explicit here. |
| 182 | */ | 183 | */ |
| 183 | #define bio_barrier(bio) bio_rw_flagged(bio, BIO_RW_BARRIER) | 184 | #define BIO_RW_RQ_MASK 0xf |
| 184 | #define bio_sync(bio) bio_rw_flagged(bio, BIO_RW_SYNCIO) | 185 | |
| 185 | #define bio_unplug(bio) bio_rw_flagged(bio, BIO_RW_UNPLUG) | 186 | static inline bool bio_rw_flagged(struct bio *bio, enum bio_rw_flags flag) |
| 186 | #define bio_failfast_dev(bio) bio_rw_flagged(bio, BIO_RW_FAILFAST_DEV) | 187 | { |
| 187 | #define bio_failfast_transport(bio) \ | 188 | return (bio->bi_rw & (1 << flag)) != 0; |
| 188 | bio_rw_flagged(bio, BIO_RW_FAILFAST_TRANSPORT) | 189 | } |
| 189 | #define bio_failfast_driver(bio) \ | ||
| 190 | bio_rw_flagged(bio, BIO_RW_FAILFAST_DRIVER) | ||
| 191 | #define bio_rw_ahead(bio) bio_rw_flagged(bio, BIO_RW_AHEAD) | ||
| 192 | #define bio_rw_meta(bio) bio_rw_flagged(bio, BIO_RW_META) | ||
| 193 | #define bio_discard(bio) bio_rw_flagged(bio, BIO_RW_DISCARD) | ||
| 194 | #define bio_noidle(bio) bio_rw_flagged(bio, BIO_RW_NOIDLE) | ||
| 195 | 190 | ||
| 196 | /* | 191 | /* |
| 197 | * upper 16 bits of bi_rw define the io priority of this bio | 192 | * upper 16 bits of bi_rw define the io priority of this bio |
| @@ -216,7 +211,7 @@ struct bio { | |||
| 216 | #define bio_offset(bio) bio_iovec((bio))->bv_offset | 211 | #define bio_offset(bio) bio_iovec((bio))->bv_offset |
| 217 | #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx) | 212 | #define bio_segments(bio) ((bio)->bi_vcnt - (bio)->bi_idx) |
| 218 | #define bio_sectors(bio) ((bio)->bi_size >> 9) | 213 | #define bio_sectors(bio) ((bio)->bi_size >> 9) |
| 219 | #define bio_empty_barrier(bio) (bio_barrier(bio) && !bio_has_data(bio) && !bio_discard(bio)) | 214 | #define bio_empty_barrier(bio) (bio_rw_flagged(bio, BIO_RW_BARRIER) && !bio_has_data(bio) && !bio_rw_flagged(bio, BIO_RW_DISCARD)) |
| 220 | 215 | ||
| 221 | static inline unsigned int bio_cur_bytes(struct bio *bio) | 216 | static inline unsigned int bio_cur_bytes(struct bio *bio) |
| 222 | { | 217 | { |
diff --git a/include/linux/blk-iopoll.h b/include/linux/blk-iopoll.h new file mode 100644 index 000000000000..308734d3d4a2 --- /dev/null +++ b/include/linux/blk-iopoll.h | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | #ifndef BLK_IOPOLL_H | ||
| 2 | #define BLK_IOPOLL_H | ||
| 3 | |||
| 4 | struct blk_iopoll; | ||
| 5 | typedef int (blk_iopoll_fn)(struct blk_iopoll *, int); | ||
| 6 | |||
| 7 | struct blk_iopoll { | ||
| 8 | struct list_head list; | ||
| 9 | unsigned long state; | ||
| 10 | unsigned long data; | ||
| 11 | int weight; | ||
| 12 | int max; | ||
| 13 | blk_iopoll_fn *poll; | ||
| 14 | }; | ||
| 15 | |||
| 16 | enum { | ||
| 17 | IOPOLL_F_SCHED = 0, | ||
| 18 | IOPOLL_F_DISABLE = 1, | ||
| 19 | }; | ||
| 20 | |||
| 21 | /* | ||
| 22 | * Returns 0 if we successfully set the IOPOLL_F_SCHED bit, indicating | ||
| 23 | * that we were the first to acquire this iop for scheduling. If this iop | ||
| 24 | * is currently disabled, return "failure". | ||
| 25 | */ | ||
| 26 | static inline int blk_iopoll_sched_prep(struct blk_iopoll *iop) | ||
| 27 | { | ||
| 28 | if (!test_bit(IOPOLL_F_DISABLE, &iop->state)) | ||
| 29 | return test_and_set_bit(IOPOLL_F_SCHED, &iop->state); | ||
| 30 | |||
| 31 | return 1; | ||
| 32 | } | ||
| 33 | |||
| 34 | static inline int blk_iopoll_disable_pending(struct blk_iopoll *iop) | ||
| 35 | { | ||
| 36 | return test_bit(IOPOLL_F_DISABLE, &iop->state); | ||
| 37 | } | ||
| 38 | |||
| 39 | extern void blk_iopoll_sched(struct blk_iopoll *); | ||
| 40 | extern void blk_iopoll_init(struct blk_iopoll *, int, blk_iopoll_fn *); | ||
| 41 | extern void blk_iopoll_complete(struct blk_iopoll *); | ||
| 42 | extern void __blk_iopoll_complete(struct blk_iopoll *); | ||
| 43 | extern void blk_iopoll_enable(struct blk_iopoll *); | ||
| 44 | extern void blk_iopoll_disable(struct blk_iopoll *); | ||
| 45 | |||
| 46 | extern int blk_iopoll_enabled; | ||
| 47 | |||
| 48 | #endif | ||
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 69103e053c92..e23a86cae5ac 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -86,13 +86,14 @@ enum { | |||
| 86 | }; | 86 | }; |
| 87 | 87 | ||
| 88 | /* | 88 | /* |
| 89 | * request type modified bits. first two bits match BIO_RW* bits, important | 89 | * request type modified bits. first four bits match BIO_RW* bits, important |
| 90 | */ | 90 | */ |
| 91 | enum rq_flag_bits { | 91 | enum rq_flag_bits { |
| 92 | __REQ_RW, /* not set, read. set, write */ | 92 | __REQ_RW, /* not set, read. set, write */ |
| 93 | __REQ_FAILFAST_DEV, /* no driver retries of device errors */ | 93 | __REQ_FAILFAST_DEV, /* no driver retries of device errors */ |
| 94 | __REQ_FAILFAST_TRANSPORT, /* no driver retries of transport errors */ | 94 | __REQ_FAILFAST_TRANSPORT, /* no driver retries of transport errors */ |
| 95 | __REQ_FAILFAST_DRIVER, /* no driver retries of driver errors */ | 95 | __REQ_FAILFAST_DRIVER, /* no driver retries of driver errors */ |
| 96 | /* above flags must match BIO_RW_* */ | ||
| 96 | __REQ_DISCARD, /* request to discard sectors */ | 97 | __REQ_DISCARD, /* request to discard sectors */ |
| 97 | __REQ_SORTED, /* elevator knows about this request */ | 98 | __REQ_SORTED, /* elevator knows about this request */ |
| 98 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ | 99 | __REQ_SOFTBARRIER, /* may not be passed by ioscheduler */ |
| @@ -114,6 +115,7 @@ enum rq_flag_bits { | |||
| 114 | __REQ_INTEGRITY, /* integrity metadata has been remapped */ | 115 | __REQ_INTEGRITY, /* integrity metadata has been remapped */ |
| 115 | __REQ_NOIDLE, /* Don't anticipate more IO after this one */ | 116 | __REQ_NOIDLE, /* Don't anticipate more IO after this one */ |
| 116 | __REQ_IO_STAT, /* account I/O stat */ | 117 | __REQ_IO_STAT, /* account I/O stat */ |
| 118 | __REQ_MIXED_MERGE, /* merge of different types, fail separately */ | ||
| 117 | __REQ_NR_BITS, /* stops here */ | 119 | __REQ_NR_BITS, /* stops here */ |
| 118 | }; | 120 | }; |
| 119 | 121 | ||
| @@ -142,6 +144,10 @@ enum rq_flag_bits { | |||
| 142 | #define REQ_INTEGRITY (1 << __REQ_INTEGRITY) | 144 | #define REQ_INTEGRITY (1 << __REQ_INTEGRITY) |
| 143 | #define REQ_NOIDLE (1 << __REQ_NOIDLE) | 145 | #define REQ_NOIDLE (1 << __REQ_NOIDLE) |
| 144 | #define REQ_IO_STAT (1 << __REQ_IO_STAT) | 146 | #define REQ_IO_STAT (1 << __REQ_IO_STAT) |
| 147 | #define REQ_MIXED_MERGE (1 << __REQ_MIXED_MERGE) | ||
| 148 | |||
| 149 | #define REQ_FAILFAST_MASK (REQ_FAILFAST_DEV | REQ_FAILFAST_TRANSPORT | \ | ||
| 150 | REQ_FAILFAST_DRIVER) | ||
| 145 | 151 | ||
| 146 | #define BLK_MAX_CDB 16 | 152 | #define BLK_MAX_CDB 16 |
| 147 | 153 | ||
| @@ -453,10 +459,12 @@ struct request_queue | |||
| 453 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ | 459 | #define QUEUE_FLAG_NONROT 14 /* non-rotational device (SSD) */ |
| 454 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ | 460 | #define QUEUE_FLAG_VIRT QUEUE_FLAG_NONROT /* paravirt device */ |
| 455 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ | 461 | #define QUEUE_FLAG_IO_STAT 15 /* do IO stats */ |
| 462 | #define QUEUE_FLAG_CQ 16 /* hardware does queuing */ | ||
| 456 | 463 | ||
| 457 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ | 464 | #define QUEUE_FLAG_DEFAULT ((1 << QUEUE_FLAG_IO_STAT) | \ |
| 458 | (1 << QUEUE_FLAG_CLUSTER) | \ | 465 | (1 << QUEUE_FLAG_CLUSTER) | \ |
| 459 | (1 << QUEUE_FLAG_STACKABLE)) | 466 | (1 << QUEUE_FLAG_STACKABLE) | \ |
| 467 | (1 << QUEUE_FLAG_SAME_COMP)) | ||
| 460 | 468 | ||
| 461 | static inline int queue_is_locked(struct request_queue *q) | 469 | static inline int queue_is_locked(struct request_queue *q) |
| 462 | { | 470 | { |
| @@ -575,6 +583,7 @@ enum { | |||
| 575 | 583 | ||
| 576 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) | 584 | #define blk_queue_plugged(q) test_bit(QUEUE_FLAG_PLUGGED, &(q)->queue_flags) |
| 577 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) | 585 | #define blk_queue_tagged(q) test_bit(QUEUE_FLAG_QUEUED, &(q)->queue_flags) |
| 586 | #define blk_queue_queuing(q) test_bit(QUEUE_FLAG_CQ, &(q)->queue_flags) | ||
| 578 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) | 587 | #define blk_queue_stopped(q) test_bit(QUEUE_FLAG_STOPPED, &(q)->queue_flags) |
| 579 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) | 588 | #define blk_queue_nomerges(q) test_bit(QUEUE_FLAG_NOMERGES, &(q)->queue_flags) |
| 580 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) | 589 | #define blk_queue_nonrot(q) test_bit(QUEUE_FLAG_NONROT, &(q)->queue_flags) |
| @@ -828,11 +837,13 @@ static inline void blk_run_address_space(struct address_space *mapping) | |||
| 828 | } | 837 | } |
| 829 | 838 | ||
| 830 | /* | 839 | /* |
| 831 | * blk_rq_pos() : the current sector | 840 | * blk_rq_pos() : the current sector |
| 832 | * blk_rq_bytes() : bytes left in the entire request | 841 | * blk_rq_bytes() : bytes left in the entire request |
| 833 | * blk_rq_cur_bytes() : bytes left in the current segment | 842 | * blk_rq_cur_bytes() : bytes left in the current segment |
| 834 | * blk_rq_sectors() : sectors left in the entire request | 843 | * blk_rq_err_bytes() : bytes left till the next error boundary |
| 835 | * blk_rq_cur_sectors() : sectors left in the current segment | 844 | * blk_rq_sectors() : sectors left in the entire request |
| 845 | * blk_rq_cur_sectors() : sectors left in the current segment | ||
| 846 | * blk_rq_err_sectors() : sectors left till the next error boundary | ||
| 836 | */ | 847 | */ |
| 837 | static inline sector_t blk_rq_pos(const struct request *rq) | 848 | static inline sector_t blk_rq_pos(const struct request *rq) |
| 838 | { | 849 | { |
| @@ -849,6 +860,8 @@ static inline int blk_rq_cur_bytes(const struct request *rq) | |||
| 849 | return rq->bio ? bio_cur_bytes(rq->bio) : 0; | 860 | return rq->bio ? bio_cur_bytes(rq->bio) : 0; |
| 850 | } | 861 | } |
| 851 | 862 | ||
| 863 | extern unsigned int blk_rq_err_bytes(const struct request *rq); | ||
| 864 | |||
| 852 | static inline unsigned int blk_rq_sectors(const struct request *rq) | 865 | static inline unsigned int blk_rq_sectors(const struct request *rq) |
| 853 | { | 866 | { |
| 854 | return blk_rq_bytes(rq) >> 9; | 867 | return blk_rq_bytes(rq) >> 9; |
| @@ -859,6 +872,11 @@ static inline unsigned int blk_rq_cur_sectors(const struct request *rq) | |||
| 859 | return blk_rq_cur_bytes(rq) >> 9; | 872 | return blk_rq_cur_bytes(rq) >> 9; |
| 860 | } | 873 | } |
| 861 | 874 | ||
| 875 | static inline unsigned int blk_rq_err_sectors(const struct request *rq) | ||
| 876 | { | ||
| 877 | return blk_rq_err_bytes(rq) >> 9; | ||
| 878 | } | ||
| 879 | |||
| 862 | /* | 880 | /* |
| 863 | * Request issue related functions. | 881 | * Request issue related functions. |
| 864 | */ | 882 | */ |
| @@ -885,10 +903,12 @@ extern bool blk_end_request(struct request *rq, int error, | |||
| 885 | unsigned int nr_bytes); | 903 | unsigned int nr_bytes); |
| 886 | extern void blk_end_request_all(struct request *rq, int error); | 904 | extern void blk_end_request_all(struct request *rq, int error); |
| 887 | extern bool blk_end_request_cur(struct request *rq, int error); | 905 | extern bool blk_end_request_cur(struct request *rq, int error); |
| 906 | extern bool blk_end_request_err(struct request *rq, int error); | ||
| 888 | extern bool __blk_end_request(struct request *rq, int error, | 907 | extern bool __blk_end_request(struct request *rq, int error, |
| 889 | unsigned int nr_bytes); | 908 | unsigned int nr_bytes); |
| 890 | extern void __blk_end_request_all(struct request *rq, int error); | 909 | extern void __blk_end_request_all(struct request *rq, int error); |
| 891 | extern bool __blk_end_request_cur(struct request *rq, int error); | 910 | extern bool __blk_end_request_cur(struct request *rq, int error); |
| 911 | extern bool __blk_end_request_err(struct request *rq, int error); | ||
| 892 | 912 | ||
| 893 | extern void blk_complete_request(struct request *); | 913 | extern void blk_complete_request(struct request *); |
| 894 | extern void __blk_complete_request(struct request *); | 914 | extern void __blk_complete_request(struct request *); |
| @@ -915,6 +935,7 @@ extern void blk_queue_alignment_offset(struct request_queue *q, | |||
| 915 | unsigned int alignment); | 935 | unsigned int alignment); |
| 916 | extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); | 936 | extern void blk_limits_io_min(struct queue_limits *limits, unsigned int min); |
| 917 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); | 937 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); |
| 938 | extern void blk_limits_io_opt(struct queue_limits *limits, unsigned int opt); | ||
| 918 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); | 939 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); |
| 919 | extern void blk_set_default_limits(struct queue_limits *lim); | 940 | extern void blk_set_default_limits(struct queue_limits *lim); |
| 920 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | 941 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, |
| @@ -977,15 +998,18 @@ static inline struct request *blk_map_queue_find_tag(struct blk_queue_tag *bqt, | |||
| 977 | } | 998 | } |
| 978 | 999 | ||
| 979 | extern int blkdev_issue_flush(struct block_device *, sector_t *); | 1000 | extern int blkdev_issue_flush(struct block_device *, sector_t *); |
| 980 | extern int blkdev_issue_discard(struct block_device *, | 1001 | #define DISCARD_FL_WAIT 0x01 /* wait for completion */ |
| 981 | sector_t sector, sector_t nr_sects, gfp_t); | 1002 | #define DISCARD_FL_BARRIER 0x02 /* issue DISCARD_BARRIER request */ |
| 1003 | extern int blkdev_issue_discard(struct block_device *, sector_t sector, | ||
| 1004 | sector_t nr_sects, gfp_t, int flags); | ||
| 982 | 1005 | ||
| 983 | static inline int sb_issue_discard(struct super_block *sb, | 1006 | static inline int sb_issue_discard(struct super_block *sb, |
| 984 | sector_t block, sector_t nr_blocks) | 1007 | sector_t block, sector_t nr_blocks) |
| 985 | { | 1008 | { |
| 986 | block <<= (sb->s_blocksize_bits - 9); | 1009 | block <<= (sb->s_blocksize_bits - 9); |
| 987 | nr_blocks <<= (sb->s_blocksize_bits - 9); | 1010 | nr_blocks <<= (sb->s_blocksize_bits - 9); |
| 988 | return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_KERNEL); | 1011 | return blkdev_issue_discard(sb->s_bdev, block, nr_blocks, GFP_KERNEL, |
| 1012 | DISCARD_FL_BARRIER); | ||
| 989 | } | 1013 | } |
| 990 | 1014 | ||
| 991 | extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm); | 1015 | extern int blk_verify_command(unsigned char *cmd, fmode_t has_write_perm); |
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h index 4a37a56f6cdd..5824b20b5fcb 100644 --- a/include/linux/can/dev.h +++ b/include/linux/can/dev.h | |||
| @@ -66,5 +66,6 @@ void can_bus_off(struct net_device *dev); | |||
| 66 | 66 | ||
| 67 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, int idx); | 67 | void can_put_echo_skb(struct sk_buff *skb, struct net_device *dev, int idx); |
| 68 | void can_get_echo_skb(struct net_device *dev, int idx); | 68 | void can_get_echo_skb(struct net_device *dev, int idx); |
| 69 | void can_free_echo_skb(struct net_device *dev, int idx); | ||
| 69 | 70 | ||
| 70 | #endif /* CAN_DEV_H */ | 71 | #endif /* CAN_DEV_H */ |
diff --git a/include/linux/connector.h b/include/linux/connector.h index b68d27850d51..47ebf416f512 100644 --- a/include/linux/connector.h +++ b/include/linux/connector.h | |||
| @@ -136,7 +136,7 @@ struct cn_callback_data { | |||
| 136 | void *ddata; | 136 | void *ddata; |
| 137 | 137 | ||
| 138 | void *callback_priv; | 138 | void *callback_priv; |
| 139 | void (*callback) (void *); | 139 | void (*callback) (struct cn_msg *); |
| 140 | 140 | ||
| 141 | void *free; | 141 | void *free; |
| 142 | }; | 142 | }; |
| @@ -167,11 +167,11 @@ struct cn_dev { | |||
| 167 | struct cn_queue_dev *cbdev; | 167 | struct cn_queue_dev *cbdev; |
| 168 | }; | 168 | }; |
| 169 | 169 | ||
| 170 | int cn_add_callback(struct cb_id *, char *, void (*callback) (void *)); | 170 | int cn_add_callback(struct cb_id *, char *, void (*callback) (struct cn_msg *)); |
| 171 | void cn_del_callback(struct cb_id *); | 171 | void cn_del_callback(struct cb_id *); |
| 172 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); | 172 | int cn_netlink_send(struct cn_msg *, u32, gfp_t); |
| 173 | 173 | ||
| 174 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(void *)); | 174 | int cn_queue_add_callback(struct cn_queue_dev *dev, char *name, struct cb_id *id, void (*callback)(struct cn_msg *)); |
| 175 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); | 175 | void cn_queue_del_callback(struct cn_queue_dev *dev, struct cb_id *id); |
| 176 | 176 | ||
| 177 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); | 177 | int queue_cn_work(struct cn_callback_entry *cbq, struct work_struct *work); |
diff --git a/include/linux/cred.h b/include/linux/cred.h index 24520a539c6f..fb371601a3b4 100644 --- a/include/linux/cred.h +++ b/include/linux/cred.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #include <linux/capability.h> | 15 | #include <linux/capability.h> |
| 16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
| 17 | #include <linux/key.h> | 17 | #include <linux/key.h> |
| 18 | #include <linux/selinux.h> | ||
| 18 | #include <asm/atomic.h> | 19 | #include <asm/atomic.h> |
| 19 | 20 | ||
| 20 | struct user_struct; | 21 | struct user_struct; |
| @@ -182,11 +183,13 @@ static inline bool creds_are_invalid(const struct cred *cred) | |||
| 182 | if (atomic_read(&cred->usage) < atomic_read(&cred->subscribers)) | 183 | if (atomic_read(&cred->usage) < atomic_read(&cred->subscribers)) |
| 183 | return true; | 184 | return true; |
| 184 | #ifdef CONFIG_SECURITY_SELINUX | 185 | #ifdef CONFIG_SECURITY_SELINUX |
| 185 | if ((unsigned long) cred->security < PAGE_SIZE) | 186 | if (selinux_is_enabled()) { |
| 186 | return true; | 187 | if ((unsigned long) cred->security < PAGE_SIZE) |
| 187 | if ((*(u32*)cred->security & 0xffffff00) == | 188 | return true; |
| 188 | (POISON_FREE << 24 | POISON_FREE << 16 | POISON_FREE << 8)) | 189 | if ((*(u32 *)cred->security & 0xffffff00) == |
| 189 | return true; | 190 | (POISON_FREE << 24 | POISON_FREE << 16 | POISON_FREE << 8)) |
| 191 | return true; | ||
| 192 | } | ||
| 190 | #endif | 193 | #endif |
| 191 | return false; | 194 | return false; |
| 192 | } | 195 | } |
diff --git a/include/linux/dcbnl.h b/include/linux/dcbnl.h index 7d2e10006188..b7cdbb4373df 100644 --- a/include/linux/dcbnl.h +++ b/include/linux/dcbnl.h | |||
| @@ -50,6 +50,8 @@ struct dcbmsg { | |||
| 50 | * @DCB_CMD_SNUMTCS: set the number of traffic classes | 50 | * @DCB_CMD_SNUMTCS: set the number of traffic classes |
| 51 | * @DCB_CMD_GBCN: set backward congestion notification configuration | 51 | * @DCB_CMD_GBCN: set backward congestion notification configuration |
| 52 | * @DCB_CMD_SBCN: get backward congestion notification configration. | 52 | * @DCB_CMD_SBCN: get backward congestion notification configration. |
| 53 | * @DCB_CMD_GAPP: get application protocol configuration | ||
| 54 | * @DCB_CMD_SAPP: set application protocol configuration | ||
| 53 | */ | 55 | */ |
| 54 | enum dcbnl_commands { | 56 | enum dcbnl_commands { |
| 55 | DCB_CMD_UNDEFINED, | 57 | DCB_CMD_UNDEFINED, |
| @@ -80,6 +82,9 @@ enum dcbnl_commands { | |||
| 80 | DCB_CMD_BCN_GCFG, | 82 | DCB_CMD_BCN_GCFG, |
| 81 | DCB_CMD_BCN_SCFG, | 83 | DCB_CMD_BCN_SCFG, |
| 82 | 84 | ||
| 85 | DCB_CMD_GAPP, | ||
| 86 | DCB_CMD_SAPP, | ||
| 87 | |||
| 83 | __DCB_CMD_ENUM_MAX, | 88 | __DCB_CMD_ENUM_MAX, |
| 84 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, | 89 | DCB_CMD_MAX = __DCB_CMD_ENUM_MAX - 1, |
| 85 | }; | 90 | }; |
| @@ -114,6 +119,7 @@ enum dcbnl_attrs { | |||
| 114 | DCB_ATTR_CAP, | 119 | DCB_ATTR_CAP, |
| 115 | DCB_ATTR_NUMTCS, | 120 | DCB_ATTR_NUMTCS, |
| 116 | DCB_ATTR_BCN, | 121 | DCB_ATTR_BCN, |
| 122 | DCB_ATTR_APP, | ||
| 117 | 123 | ||
| 118 | __DCB_ATTR_ENUM_MAX, | 124 | __DCB_ATTR_ENUM_MAX, |
| 119 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, | 125 | DCB_ATTR_MAX = __DCB_ATTR_ENUM_MAX - 1, |
| @@ -338,5 +344,17 @@ enum dcb_general_attr_values { | |||
| 338 | DCB_ATTR_VALUE_UNDEFINED = 0xff | 344 | DCB_ATTR_VALUE_UNDEFINED = 0xff |
| 339 | }; | 345 | }; |
| 340 | 346 | ||
| 347 | #define DCB_APP_IDTYPE_ETHTYPE 0x00 | ||
| 348 | #define DCB_APP_IDTYPE_PORTNUM 0x01 | ||
| 349 | enum dcbnl_app_attrs { | ||
| 350 | DCB_APP_ATTR_UNDEFINED, | ||
| 351 | |||
| 352 | DCB_APP_ATTR_IDTYPE, | ||
| 353 | DCB_APP_ATTR_ID, | ||
| 354 | DCB_APP_ATTR_PRIORITY, | ||
| 355 | |||
| 356 | __DCB_APP_ATTR_ENUM_MAX, | ||
| 357 | DCB_APP_ATTR_MAX = __DCB_APP_ATTR_ENUM_MAX - 1, | ||
| 358 | }; | ||
| 341 | 359 | ||
| 342 | #endif /* __LINUX_DCBNL_H__ */ | 360 | #endif /* __LINUX_DCBNL_H__ */ |
diff --git a/include/linux/device.h b/include/linux/device.h index aebb81036db2..847b763e40e9 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -2,7 +2,8 @@ | |||
| 2 | * device.h - generic, centralized driver model | 2 | * device.h - generic, centralized driver model |
| 3 | * | 3 | * |
| 4 | * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> | 4 | * Copyright (c) 2001-2003 Patrick Mochel <mochel@osdl.org> |
| 5 | * Copyright (c) 2004-2007 Greg Kroah-Hartman <gregkh@suse.de> | 5 | * Copyright (c) 2004-2009 Greg Kroah-Hartman <gregkh@suse.de> |
| 6 | * Copyright (c) 2008-2009 Novell Inc. | ||
| 6 | * | 7 | * |
| 7 | * This file is released under the GPLv2 | 8 | * This file is released under the GPLv2 |
| 8 | * | 9 | * |
| @@ -62,7 +63,7 @@ struct bus_type { | |||
| 62 | int (*suspend)(struct device *dev, pm_message_t state); | 63 | int (*suspend)(struct device *dev, pm_message_t state); |
| 63 | int (*resume)(struct device *dev); | 64 | int (*resume)(struct device *dev); |
| 64 | 65 | ||
| 65 | struct dev_pm_ops *pm; | 66 | const struct dev_pm_ops *pm; |
| 66 | 67 | ||
| 67 | struct bus_type_private *p; | 68 | struct bus_type_private *p; |
| 68 | }; | 69 | }; |
| @@ -130,9 +131,9 @@ struct device_driver { | |||
| 130 | void (*shutdown) (struct device *dev); | 131 | void (*shutdown) (struct device *dev); |
| 131 | int (*suspend) (struct device *dev, pm_message_t state); | 132 | int (*suspend) (struct device *dev, pm_message_t state); |
| 132 | int (*resume) (struct device *dev); | 133 | int (*resume) (struct device *dev); |
| 133 | struct attribute_group **groups; | 134 | const struct attribute_group **groups; |
| 134 | 135 | ||
| 135 | struct dev_pm_ops *pm; | 136 | const struct dev_pm_ops *pm; |
| 136 | 137 | ||
| 137 | struct driver_private *p; | 138 | struct driver_private *p; |
| 138 | }; | 139 | }; |
| @@ -200,7 +201,8 @@ struct class { | |||
| 200 | int (*suspend)(struct device *dev, pm_message_t state); | 201 | int (*suspend)(struct device *dev, pm_message_t state); |
| 201 | int (*resume)(struct device *dev); | 202 | int (*resume)(struct device *dev); |
| 202 | 203 | ||
| 203 | struct dev_pm_ops *pm; | 204 | const struct dev_pm_ops *pm; |
| 205 | |||
| 204 | struct class_private *p; | 206 | struct class_private *p; |
| 205 | }; | 207 | }; |
| 206 | 208 | ||
| @@ -223,6 +225,14 @@ extern void class_unregister(struct class *class); | |||
| 223 | __class_register(class, &__key); \ | 225 | __class_register(class, &__key); \ |
| 224 | }) | 226 | }) |
| 225 | 227 | ||
| 228 | struct class_compat; | ||
| 229 | struct class_compat *class_compat_register(const char *name); | ||
| 230 | void class_compat_unregister(struct class_compat *cls); | ||
| 231 | int class_compat_create_link(struct class_compat *cls, struct device *dev, | ||
| 232 | struct device *device_link); | ||
| 233 | void class_compat_remove_link(struct class_compat *cls, struct device *dev, | ||
| 234 | struct device *device_link); | ||
| 235 | |||
| 226 | extern void class_dev_iter_init(struct class_dev_iter *iter, | 236 | extern void class_dev_iter_init(struct class_dev_iter *iter, |
| 227 | struct class *class, | 237 | struct class *class, |
| 228 | struct device *start, | 238 | struct device *start, |
| @@ -286,12 +296,12 @@ extern void class_destroy(struct class *cls); | |||
| 286 | */ | 296 | */ |
| 287 | struct device_type { | 297 | struct device_type { |
| 288 | const char *name; | 298 | const char *name; |
| 289 | struct attribute_group **groups; | 299 | const struct attribute_group **groups; |
| 290 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); | 300 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); |
| 291 | char *(*nodename)(struct device *dev); | 301 | char *(*nodename)(struct device *dev); |
| 292 | void (*release)(struct device *dev); | 302 | void (*release)(struct device *dev); |
| 293 | 303 | ||
| 294 | struct dev_pm_ops *pm; | 304 | const struct dev_pm_ops *pm; |
| 295 | }; | 305 | }; |
| 296 | 306 | ||
| 297 | /* interface for exporting device attributes */ | 307 | /* interface for exporting device attributes */ |
| @@ -380,7 +390,6 @@ struct device { | |||
| 380 | struct bus_type *bus; /* type of bus device is on */ | 390 | struct bus_type *bus; /* type of bus device is on */ |
| 381 | struct device_driver *driver; /* which driver has allocated this | 391 | struct device_driver *driver; /* which driver has allocated this |
| 382 | device */ | 392 | device */ |
| 383 | void *driver_data; /* data private to the driver */ | ||
| 384 | void *platform_data; /* Platform specific data, device | 393 | void *platform_data; /* Platform specific data, device |
| 385 | core doesn't touch it */ | 394 | core doesn't touch it */ |
| 386 | struct dev_pm_info power; | 395 | struct dev_pm_info power; |
| @@ -411,7 +420,7 @@ struct device { | |||
| 411 | 420 | ||
| 412 | struct klist_node knode_class; | 421 | struct klist_node knode_class; |
| 413 | struct class *class; | 422 | struct class *class; |
| 414 | struct attribute_group **groups; /* optional groups */ | 423 | const struct attribute_group **groups; /* optional groups */ |
| 415 | 424 | ||
| 416 | void (*release)(struct device *dev); | 425 | void (*release)(struct device *dev); |
| 417 | }; | 426 | }; |
| @@ -446,16 +455,6 @@ static inline void set_dev_node(struct device *dev, int node) | |||
| 446 | } | 455 | } |
| 447 | #endif | 456 | #endif |
| 448 | 457 | ||
| 449 | static inline void *dev_get_drvdata(const struct device *dev) | ||
| 450 | { | ||
| 451 | return dev->driver_data; | ||
| 452 | } | ||
| 453 | |||
| 454 | static inline void dev_set_drvdata(struct device *dev, void *data) | ||
| 455 | { | ||
| 456 | dev->driver_data = data; | ||
| 457 | } | ||
| 458 | |||
| 459 | static inline unsigned int dev_get_uevent_suppress(const struct device *dev) | 458 | static inline unsigned int dev_get_uevent_suppress(const struct device *dev) |
| 460 | { | 459 | { |
| 461 | return dev->kobj.uevent_suppress; | 460 | return dev->kobj.uevent_suppress; |
| @@ -489,6 +488,8 @@ extern int device_rename(struct device *dev, char *new_name); | |||
| 489 | extern int device_move(struct device *dev, struct device *new_parent, | 488 | extern int device_move(struct device *dev, struct device *new_parent, |
| 490 | enum dpm_order dpm_order); | 489 | enum dpm_order dpm_order); |
| 491 | extern const char *device_get_nodename(struct device *dev, const char **tmp); | 490 | extern const char *device_get_nodename(struct device *dev, const char **tmp); |
| 491 | extern void *dev_get_drvdata(const struct device *dev); | ||
| 492 | extern void dev_set_drvdata(struct device *dev, void *data); | ||
| 492 | 493 | ||
| 493 | /* | 494 | /* |
| 494 | * Root device objects for grouping under /sys/devices | 495 | * Root device objects for grouping under /sys/devices |
| @@ -501,6 +502,11 @@ static inline struct device *root_device_register(const char *name) | |||
| 501 | } | 502 | } |
| 502 | extern void root_device_unregister(struct device *root); | 503 | extern void root_device_unregister(struct device *root); |
| 503 | 504 | ||
| 505 | static inline void *dev_get_platdata(const struct device *dev) | ||
| 506 | { | ||
| 507 | return dev->platform_data; | ||
| 508 | } | ||
| 509 | |||
| 504 | /* | 510 | /* |
| 505 | * Manual binding of a device to driver. See drivers/base/bus.c | 511 | * Manual binding of a device to driver. See drivers/base/bus.c |
| 506 | * for information on use. | 512 | * for information on use. |
| @@ -546,6 +552,16 @@ extern void put_device(struct device *dev); | |||
| 546 | 552 | ||
| 547 | extern void wait_for_device_probe(void); | 553 | extern void wait_for_device_probe(void); |
| 548 | 554 | ||
| 555 | #ifdef CONFIG_DEVTMPFS | ||
| 556 | extern int devtmpfs_create_node(struct device *dev); | ||
| 557 | extern int devtmpfs_delete_node(struct device *dev); | ||
| 558 | extern int devtmpfs_mount(const char *mountpoint); | ||
| 559 | #else | ||
| 560 | static inline int devtmpfs_create_node(struct device *dev) { return 0; } | ||
| 561 | static inline int devtmpfs_delete_node(struct device *dev) { return 0; } | ||
| 562 | static inline int devtmpfs_mount(const char *mountpoint) { return 0; } | ||
| 563 | #endif | ||
| 564 | |||
| 549 | /* drivers/base/power/shutdown.c */ | 565 | /* drivers/base/power/shutdown.c */ |
| 550 | extern void device_shutdown(void); | 566 | extern void device_shutdown(void); |
| 551 | 567 | ||
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h index c0f6c3cd788c..91b761846061 100644 --- a/include/linux/dma-mapping.h +++ b/include/linux/dma-mapping.h | |||
| @@ -58,6 +58,7 @@ struct dma_map_ops { | |||
| 58 | enum dma_data_direction dir); | 58 | enum dma_data_direction dir); |
| 59 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); | 59 | int (*mapping_error)(struct device *dev, dma_addr_t dma_addr); |
| 60 | int (*dma_supported)(struct device *dev, u64 mask); | 60 | int (*dma_supported)(struct device *dev, u64 mask); |
| 61 | int (*set_dma_mask)(struct device *dev, u64 mask); | ||
| 61 | int is_phys; | 62 | int is_phys; |
| 62 | }; | 63 | }; |
| 63 | 64 | ||
diff --git a/include/linux/dtlk.h b/include/linux/dtlk.h index 2896d90118a9..22a7b9a5f5d1 100644 --- a/include/linux/dtlk.h +++ b/include/linux/dtlk.h | |||
| @@ -1,22 +1,3 @@ | |||
| 1 | #if 0 | ||
| 2 | |||
| 3 | #define TRACE_TXT(text) \ | ||
| 4 | { \ | ||
| 5 | if(dtlk_trace) \ | ||
| 6 | { \ | ||
| 7 | console_print(text); \ | ||
| 8 | console_print("\n"); \ | ||
| 9 | } \ | ||
| 10 | } | ||
| 11 | |||
| 12 | #define TRACE_CHR(chr) \ | ||
| 13 | { \ | ||
| 14 | if(dtlk_trace) \ | ||
| 15 | console_print(chr); \ | ||
| 16 | } \ | ||
| 17 | |||
| 18 | #endif | ||
| 19 | |||
| 20 | #define DTLK_MINOR 0 | 1 | #define DTLK_MINOR 0 |
| 21 | #define DTLK_IO_EXTENT 0x02 | 2 | #define DTLK_IO_EXTENT 0x02 |
| 22 | 3 | ||
diff --git a/include/linux/dvb/dmx.h b/include/linux/dvb/dmx.h index fef943738a24..f078f3ac82d4 100644 --- a/include/linux/dvb/dmx.h +++ b/include/linux/dvb/dmx.h | |||
| @@ -151,5 +151,7 @@ struct dmx_stc { | |||
| 151 | #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) | 151 | #define DMX_GET_CAPS _IOR('o', 48, dmx_caps_t) |
| 152 | #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) | 152 | #define DMX_SET_SOURCE _IOW('o', 49, dmx_source_t) |
| 153 | #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) | 153 | #define DMX_GET_STC _IOWR('o', 50, struct dmx_stc) |
| 154 | #define DMX_ADD_PID _IOW('o', 51, __u16) | ||
| 155 | #define DMX_REMOVE_PID _IOW('o', 52, __u16) | ||
| 154 | 156 | ||
| 155 | #endif /*_DVBDMX_H_*/ | 157 | #endif /*_DVBDMX_H_*/ |
diff --git a/include/linux/enclosure.h b/include/linux/enclosure.h index 4332442b1b57..90d1c2184112 100644 --- a/include/linux/enclosure.h +++ b/include/linux/enclosure.h | |||
| @@ -122,8 +122,9 @@ enclosure_component_register(struct enclosure_device *, unsigned int, | |||
| 122 | enum enclosure_component_type, const char *); | 122 | enum enclosure_component_type, const char *); |
| 123 | int enclosure_add_device(struct enclosure_device *enclosure, int component, | 123 | int enclosure_add_device(struct enclosure_device *enclosure, int component, |
| 124 | struct device *dev); | 124 | struct device *dev); |
| 125 | int enclosure_remove_device(struct enclosure_device *enclosure, int component); | 125 | int enclosure_remove_device(struct enclosure_device *, struct device *); |
| 126 | struct enclosure_device *enclosure_find(struct device *dev); | 126 | struct enclosure_device *enclosure_find(struct device *dev, |
| 127 | struct enclosure_device *start); | ||
| 127 | int enclosure_for_each_device(int (*fn)(struct enclosure_device *, void *), | 128 | int enclosure_for_each_device(int (*fn)(struct enclosure_device *, void *), |
| 128 | void *data); | 129 | void *data); |
| 129 | 130 | ||
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 9b660bd2e2b3..15e4eb713694 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
| @@ -362,12 +362,25 @@ struct ethtool_rxnfc { | |||
| 362 | __u32 rule_locs[0]; | 362 | __u32 rule_locs[0]; |
| 363 | }; | 363 | }; |
| 364 | 364 | ||
| 365 | #define ETHTOOL_FLASH_MAX_FILENAME 128 | ||
| 366 | enum ethtool_flash_op_type { | ||
| 367 | ETHTOOL_FLASH_ALL_REGIONS = 0, | ||
| 368 | }; | ||
| 369 | |||
| 370 | /* for passing firmware flashing related parameters */ | ||
| 371 | struct ethtool_flash { | ||
| 372 | __u32 cmd; | ||
| 373 | __u32 region; | ||
| 374 | char data[ETHTOOL_FLASH_MAX_FILENAME]; | ||
| 375 | }; | ||
| 376 | |||
| 365 | #ifdef __KERNEL__ | 377 | #ifdef __KERNEL__ |
| 366 | 378 | ||
| 367 | struct net_device; | 379 | struct net_device; |
| 368 | 380 | ||
| 369 | /* Some generic methods drivers may use in their ethtool_ops */ | 381 | /* Some generic methods drivers may use in their ethtool_ops */ |
| 370 | u32 ethtool_op_get_link(struct net_device *dev); | 382 | u32 ethtool_op_get_link(struct net_device *dev); |
| 383 | u32 ethtool_op_get_rx_csum(struct net_device *dev); | ||
| 371 | u32 ethtool_op_get_tx_csum(struct net_device *dev); | 384 | u32 ethtool_op_get_tx_csum(struct net_device *dev); |
| 372 | int ethtool_op_set_tx_csum(struct net_device *dev, u32 data); | 385 | int ethtool_op_set_tx_csum(struct net_device *dev, u32 data); |
| 373 | int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data); | 386 | int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data); |
| @@ -488,6 +501,7 @@ struct ethtool_ops { | |||
| 488 | int (*get_stats_count)(struct net_device *);/* use get_sset_count */ | 501 | int (*get_stats_count)(struct net_device *);/* use get_sset_count */ |
| 489 | int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *); | 502 | int (*get_rxnfc)(struct net_device *, struct ethtool_rxnfc *, void *); |
| 490 | int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); | 503 | int (*set_rxnfc)(struct net_device *, struct ethtool_rxnfc *); |
| 504 | int (*flash_device)(struct net_device *, struct ethtool_flash *); | ||
| 491 | }; | 505 | }; |
| 492 | #endif /* __KERNEL__ */ | 506 | #endif /* __KERNEL__ */ |
| 493 | 507 | ||
| @@ -544,6 +558,7 @@ struct ethtool_ops { | |||
| 544 | #define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */ | 558 | #define ETHTOOL_GRXCLSRLALL 0x00000030 /* Get all RX classification rule */ |
| 545 | #define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */ | 559 | #define ETHTOOL_SRXCLSRLDEL 0x00000031 /* Delete RX classification rule */ |
| 546 | #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ | 560 | #define ETHTOOL_SRXCLSRLINS 0x00000032 /* Insert RX classification rule */ |
| 561 | #define ETHTOOL_FLASHDEV 0x00000033 /* Flash firmware to device */ | ||
| 547 | 562 | ||
| 548 | /* compatibility with older code */ | 563 | /* compatibility with older code */ |
| 549 | #define SPARC_ETH_GSET ETHTOOL_GSET | 564 | #define SPARC_ETH_GSET ETHTOOL_GSET |
diff --git a/include/linux/fs.h b/include/linux/fs.h index a79f48373e7e..90162fb3bf04 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -161,8 +161,8 @@ struct inodes_stat_t { | |||
| 161 | * These aren't really reads or writes, they pass down information about | 161 | * These aren't really reads or writes, they pass down information about |
| 162 | * parts of device that are now unused by the file system. | 162 | * parts of device that are now unused by the file system. |
| 163 | */ | 163 | */ |
| 164 | #define DISCARD_NOBARRIER (1 << BIO_RW_DISCARD) | 164 | #define DISCARD_NOBARRIER (WRITE | (1 << BIO_RW_DISCARD)) |
| 165 | #define DISCARD_BARRIER ((1 << BIO_RW_DISCARD) | (1 << BIO_RW_BARRIER)) | 165 | #define DISCARD_BARRIER (DISCARD_NOBARRIER | (1 << BIO_RW_BARRIER)) |
| 166 | 166 | ||
| 167 | #define SEL_IN 1 | 167 | #define SEL_IN 1 |
| 168 | #define SEL_OUT 2 | 168 | #define SEL_OUT 2 |
| @@ -655,7 +655,6 @@ struct block_device { | |||
| 655 | int bd_invalidated; | 655 | int bd_invalidated; |
| 656 | struct gendisk * bd_disk; | 656 | struct gendisk * bd_disk; |
| 657 | struct list_head bd_list; | 657 | struct list_head bd_list; |
| 658 | struct backing_dev_info *bd_inode_backing_dev_info; | ||
| 659 | /* | 658 | /* |
| 660 | * Private data. You must have bd_claim'ed the block_device | 659 | * Private data. You must have bd_claim'ed the block_device |
| 661 | * to use this. NOTE: bd_claim allows an owner to claim | 660 | * to use this. NOTE: bd_claim allows an owner to claim |
| @@ -1343,6 +1342,7 @@ struct super_block { | |||
| 1343 | int s_nr_dentry_unused; /* # of dentry on lru */ | 1342 | int s_nr_dentry_unused; /* # of dentry on lru */ |
| 1344 | 1343 | ||
| 1345 | struct block_device *s_bdev; | 1344 | struct block_device *s_bdev; |
| 1345 | struct backing_dev_info *s_bdi; | ||
| 1346 | struct mtd_info *s_mtd; | 1346 | struct mtd_info *s_mtd; |
| 1347 | struct list_head s_instances; | 1347 | struct list_head s_instances; |
| 1348 | struct quota_info s_dquot; /* Diskquota specific options */ | 1348 | struct quota_info s_dquot; /* Diskquota specific options */ |
| @@ -1455,11 +1455,6 @@ int fiemap_check_flags(struct fiemap_extent_info *fieinfo, u32 fs_flags); | |||
| 1455 | #define DT_SOCK 12 | 1455 | #define DT_SOCK 12 |
| 1456 | #define DT_WHT 14 | 1456 | #define DT_WHT 14 |
| 1457 | 1457 | ||
| 1458 | #define OSYNC_METADATA (1<<0) | ||
| 1459 | #define OSYNC_DATA (1<<1) | ||
| 1460 | #define OSYNC_INODE (1<<2) | ||
| 1461 | int generic_osync_inode(struct inode *, struct address_space *, int); | ||
| 1462 | |||
| 1463 | /* | 1458 | /* |
| 1464 | * This is the "filldir" function type, used by readdir() to let | 1459 | * This is the "filldir" function type, used by readdir() to let |
| 1465 | * the kernel specify what kind of dirent layout it wants to have. | 1460 | * the kernel specify what kind of dirent layout it wants to have. |
| @@ -2086,6 +2081,8 @@ extern int write_inode_now(struct inode *, int); | |||
| 2086 | extern int filemap_fdatawrite(struct address_space *); | 2081 | extern int filemap_fdatawrite(struct address_space *); |
| 2087 | extern int filemap_flush(struct address_space *); | 2082 | extern int filemap_flush(struct address_space *); |
| 2088 | extern int filemap_fdatawait(struct address_space *); | 2083 | extern int filemap_fdatawait(struct address_space *); |
| 2084 | extern int filemap_fdatawait_range(struct address_space *, loff_t lstart, | ||
| 2085 | loff_t lend); | ||
| 2089 | extern int filemap_write_and_wait(struct address_space *mapping); | 2086 | extern int filemap_write_and_wait(struct address_space *mapping); |
| 2090 | extern int filemap_write_and_wait_range(struct address_space *mapping, | 2087 | extern int filemap_write_and_wait_range(struct address_space *mapping, |
| 2091 | loff_t lstart, loff_t lend); | 2088 | loff_t lstart, loff_t lend); |
| @@ -2096,7 +2093,10 @@ extern int __filemap_fdatawrite_range(struct address_space *mapping, | |||
| 2096 | extern int filemap_fdatawrite_range(struct address_space *mapping, | 2093 | extern int filemap_fdatawrite_range(struct address_space *mapping, |
| 2097 | loff_t start, loff_t end); | 2094 | loff_t start, loff_t end); |
| 2098 | 2095 | ||
| 2096 | extern int vfs_fsync_range(struct file *file, struct dentry *dentry, | ||
| 2097 | loff_t start, loff_t end, int datasync); | ||
| 2099 | extern int vfs_fsync(struct file *file, struct dentry *dentry, int datasync); | 2098 | extern int vfs_fsync(struct file *file, struct dentry *dentry, int datasync); |
| 2099 | extern int generic_write_sync(struct file *file, loff_t pos, loff_t count); | ||
| 2100 | extern void sync_supers(void); | 2100 | extern void sync_supers(void); |
| 2101 | extern void emergency_sync(void); | 2101 | extern void emergency_sync(void); |
| 2102 | extern void emergency_remount(void); | 2102 | extern void emergency_remount(void); |
| @@ -2202,9 +2202,9 @@ extern int generic_file_readonly_mmap(struct file *, struct vm_area_struct *); | |||
| 2202 | extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); | 2202 | extern int file_read_actor(read_descriptor_t * desc, struct page *page, unsigned long offset, unsigned long size); |
| 2203 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); | 2203 | int generic_write_checks(struct file *file, loff_t *pos, size_t *count, int isblk); |
| 2204 | extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); | 2204 | extern ssize_t generic_file_aio_read(struct kiocb *, const struct iovec *, unsigned long, loff_t); |
| 2205 | extern ssize_t __generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, | ||
| 2206 | loff_t *); | ||
| 2205 | extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); | 2207 | extern ssize_t generic_file_aio_write(struct kiocb *, const struct iovec *, unsigned long, loff_t); |
| 2206 | extern ssize_t generic_file_aio_write_nolock(struct kiocb *, const struct iovec *, | ||
| 2207 | unsigned long, loff_t); | ||
| 2208 | extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, | 2208 | extern ssize_t generic_file_direct_write(struct kiocb *, const struct iovec *, |
| 2209 | unsigned long *, loff_t, loff_t *, size_t, size_t); | 2209 | unsigned long *, loff_t, loff_t *, size_t, size_t); |
| 2210 | extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, | 2210 | extern ssize_t generic_file_buffered_write(struct kiocb *, const struct iovec *, |
| @@ -2214,6 +2214,10 @@ extern ssize_t do_sync_write(struct file *filp, const char __user *buf, size_t l | |||
| 2214 | extern int generic_segment_checks(const struct iovec *iov, | 2214 | extern int generic_segment_checks(const struct iovec *iov, |
| 2215 | unsigned long *nr_segs, size_t *count, int access_flags); | 2215 | unsigned long *nr_segs, size_t *count, int access_flags); |
| 2216 | 2216 | ||
| 2217 | /* fs/block_dev.c */ | ||
| 2218 | extern ssize_t blkdev_aio_write(struct kiocb *iocb, const struct iovec *iov, | ||
| 2219 | unsigned long nr_segs, loff_t pos); | ||
| 2220 | |||
| 2217 | /* fs/splice.c */ | 2221 | /* fs/splice.c */ |
| 2218 | extern ssize_t generic_file_splice_read(struct file *, loff_t *, | 2222 | extern ssize_t generic_file_splice_read(struct file *, loff_t *, |
| 2219 | struct pipe_inode_info *, size_t, unsigned int); | 2223 | struct pipe_inode_info *, size_t, unsigned int); |
diff --git a/include/linux/ftrace_event.h b/include/linux/ftrace_event.h index 23f7179bf74e..bd099ba82ccc 100644 --- a/include/linux/ftrace_event.h +++ b/include/linux/ftrace_event.h | |||
| @@ -1,8 +1,8 @@ | |||
| 1 | #ifndef _LINUX_FTRACE_EVENT_H | 1 | #ifndef _LINUX_FTRACE_EVENT_H |
| 2 | #define _LINUX_FTRACE_EVENT_H | 2 | #define _LINUX_FTRACE_EVENT_H |
| 3 | 3 | ||
| 4 | #include <linux/trace_seq.h> | ||
| 5 | #include <linux/ring_buffer.h> | 4 | #include <linux/ring_buffer.h> |
| 5 | #include <linux/trace_seq.h> | ||
| 6 | #include <linux/percpu.h> | 6 | #include <linux/percpu.h> |
| 7 | 7 | ||
| 8 | struct trace_array; | 8 | struct trace_array; |
| @@ -34,7 +34,7 @@ struct trace_entry { | |||
| 34 | unsigned char flags; | 34 | unsigned char flags; |
| 35 | unsigned char preempt_count; | 35 | unsigned char preempt_count; |
| 36 | int pid; | 36 | int pid; |
| 37 | int tgid; | 37 | int lock_depth; |
| 38 | }; | 38 | }; |
| 39 | 39 | ||
| 40 | #define FTRACE_MAX_EVENT \ | 40 | #define FTRACE_MAX_EVENT \ |
| @@ -135,7 +135,7 @@ struct ftrace_event_call { | |||
| 135 | }; | 135 | }; |
| 136 | 136 | ||
| 137 | #define MAX_FILTER_PRED 32 | 137 | #define MAX_FILTER_PRED 32 |
| 138 | #define MAX_FILTER_STR_VAL 128 | 138 | #define MAX_FILTER_STR_VAL 256 /* Should handle KSYM_SYMBOL_LEN */ |
| 139 | 139 | ||
| 140 | extern void destroy_preds(struct ftrace_event_call *call); | 140 | extern void destroy_preds(struct ftrace_event_call *call); |
| 141 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); | 141 | extern int filter_match_preds(struct ftrace_event_call *call, void *rec); |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 45fc320a53c6..44263cb27121 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
| @@ -98,7 +98,7 @@ struct hd_struct { | |||
| 98 | int make_it_fail; | 98 | int make_it_fail; |
| 99 | #endif | 99 | #endif |
| 100 | unsigned long stamp; | 100 | unsigned long stamp; |
| 101 | int in_flight; | 101 | int in_flight[2]; |
| 102 | #ifdef CONFIG_SMP | 102 | #ifdef CONFIG_SMP |
| 103 | struct disk_stats *dkstats; | 103 | struct disk_stats *dkstats; |
| 104 | #else | 104 | #else |
| @@ -322,18 +322,23 @@ static inline void free_part_stats(struct hd_struct *part) | |||
| 322 | #define part_stat_sub(cpu, gendiskp, field, subnd) \ | 322 | #define part_stat_sub(cpu, gendiskp, field, subnd) \ |
| 323 | part_stat_add(cpu, gendiskp, field, -subnd) | 323 | part_stat_add(cpu, gendiskp, field, -subnd) |
| 324 | 324 | ||
| 325 | static inline void part_inc_in_flight(struct hd_struct *part) | 325 | static inline void part_inc_in_flight(struct hd_struct *part, int rw) |
| 326 | { | 326 | { |
| 327 | part->in_flight++; | 327 | part->in_flight[rw]++; |
| 328 | if (part->partno) | 328 | if (part->partno) |
| 329 | part_to_disk(part)->part0.in_flight++; | 329 | part_to_disk(part)->part0.in_flight[rw]++; |
| 330 | } | 330 | } |
| 331 | 331 | ||
| 332 | static inline void part_dec_in_flight(struct hd_struct *part) | 332 | static inline void part_dec_in_flight(struct hd_struct *part, int rw) |
| 333 | { | 333 | { |
| 334 | part->in_flight--; | 334 | part->in_flight[rw]--; |
| 335 | if (part->partno) | 335 | if (part->partno) |
| 336 | part_to_disk(part)->part0.in_flight--; | 336 | part_to_disk(part)->part0.in_flight[rw]--; |
| 337 | } | ||
| 338 | |||
| 339 | static inline int part_in_flight(struct hd_struct *part) | ||
| 340 | { | ||
| 341 | return part->in_flight[0] + part->in_flight[1]; | ||
| 337 | } | 342 | } |
| 338 | 343 | ||
| 339 | /* block/blk-core.c */ | 344 | /* block/blk-core.c */ |
| @@ -546,6 +551,8 @@ extern ssize_t part_size_show(struct device *dev, | |||
| 546 | struct device_attribute *attr, char *buf); | 551 | struct device_attribute *attr, char *buf); |
| 547 | extern ssize_t part_stat_show(struct device *dev, | 552 | extern ssize_t part_stat_show(struct device *dev, |
| 548 | struct device_attribute *attr, char *buf); | 553 | struct device_attribute *attr, char *buf); |
| 554 | extern ssize_t part_inflight_show(struct device *dev, | ||
| 555 | struct device_attribute *attr, char *buf); | ||
| 549 | #ifdef CONFIG_FAIL_MAKE_REQUEST | 556 | #ifdef CONFIG_FAIL_MAKE_REQUEST |
| 550 | extern ssize_t part_fail_show(struct device *dev, | 557 | extern ssize_t part_fail_show(struct device *dev, |
| 551 | struct device_attribute *attr, char *buf); | 558 | struct device_attribute *attr, char *buf); |
diff --git a/include/linux/gfs2_ondisk.h b/include/linux/gfs2_ondisk.h index c56b4bce56d0..b80c88dedbbb 100644 --- a/include/linux/gfs2_ondisk.h +++ b/include/linux/gfs2_ondisk.h | |||
| @@ -333,6 +333,28 @@ struct gfs2_leaf { | |||
| 333 | 333 | ||
| 334 | /* | 334 | /* |
| 335 | * Extended attribute header format | 335 | * Extended attribute header format |
| 336 | * | ||
| 337 | * This works in a similar way to dirents. There is a fixed size header | ||
| 338 | * followed by a variable length section made up of the name and the | ||
| 339 | * associated data. In the case of a "stuffed" entry, the value is | ||
| 340 | * inline directly after the name, the ea_num_ptrs entry will be | ||
| 341 | * zero in that case. For non-"stuffed" entries, there will be | ||
| 342 | * a set of pointers (aligned to 8 byte boundary) to the block(s) | ||
| 343 | * containing the value. | ||
| 344 | * | ||
| 345 | * The blocks containing the values and the blocks containing the | ||
| 346 | * extended attribute headers themselves all start with the common | ||
| 347 | * metadata header. Each inode, if it has extended attributes, will | ||
| 348 | * have either a single block containing the extended attribute headers | ||
| 349 | * or a single indirect block pointing to blocks containing the | ||
| 350 | * extended attribure headers. | ||
| 351 | * | ||
| 352 | * The maximim size of the data part of an extended attribute is 64k | ||
| 353 | * so the number of blocks required depends upon block size. Since the | ||
| 354 | * block size also determines the number of pointers in an indirect | ||
| 355 | * block, its a fairly complicated calculation to work out the maximum | ||
| 356 | * number of blocks that an inode may have relating to extended attributes. | ||
| 357 | * | ||
| 336 | */ | 358 | */ |
| 337 | 359 | ||
| 338 | #define GFS2_EA_MAX_NAME_LEN 255 | 360 | #define GFS2_EA_MAX_NAME_LEN 255 |
diff --git a/include/linux/hdlc.h b/include/linux/hdlc.h index 6a6e701f1631..ee275c8b3df1 100644 --- a/include/linux/hdlc.h +++ b/include/linux/hdlc.h | |||
| @@ -38,7 +38,7 @@ struct hdlc_proto { | |||
| 38 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); | 38 | int (*ioctl)(struct net_device *dev, struct ifreq *ifr); |
| 39 | __be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev); | 39 | __be16 (*type_trans)(struct sk_buff *skb, struct net_device *dev); |
| 40 | int (*netif_rx)(struct sk_buff *skb); | 40 | int (*netif_rx)(struct sk_buff *skb); |
| 41 | int (*xmit)(struct sk_buff *skb, struct net_device *dev); | 41 | netdev_tx_t (*xmit)(struct sk_buff *skb, struct net_device *dev); |
| 42 | struct module *module; | 42 | struct module *module; |
| 43 | struct hdlc_proto *next; /* next protocol in the list */ | 43 | struct hdlc_proto *next; /* next protocol in the list */ |
| 44 | }; | 44 | }; |
| @@ -51,7 +51,7 @@ typedef struct hdlc_device { | |||
| 51 | unsigned short encoding, unsigned short parity); | 51 | unsigned short encoding, unsigned short parity); |
| 52 | 52 | ||
| 53 | /* hardware driver must handle this instead of dev->hard_start_xmit */ | 53 | /* hardware driver must handle this instead of dev->hard_start_xmit */ |
| 54 | int (*xmit)(struct sk_buff *skb, struct net_device *dev); | 54 | netdev_tx_t (*xmit)(struct sk_buff *skb, struct net_device *dev); |
| 55 | 55 | ||
| 56 | /* Things below are for HDLC layer internal use only */ | 56 | /* Things below are for HDLC layer internal use only */ |
| 57 | const struct hdlc_proto *proto; | 57 | const struct hdlc_proto *proto; |
| @@ -60,7 +60,7 @@ typedef struct hdlc_device { | |||
| 60 | spinlock_t state_lock; | 60 | spinlock_t state_lock; |
| 61 | void *state; | 61 | void *state; |
| 62 | void *priv; | 62 | void *priv; |
| 63 | }hdlc_device; | 63 | } hdlc_device; |
| 64 | 64 | ||
| 65 | 65 | ||
| 66 | 66 | ||
| @@ -106,7 +106,7 @@ void hdlc_close(struct net_device *dev); | |||
| 106 | /* May be used by hardware driver */ | 106 | /* May be used by hardware driver */ |
| 107 | int hdlc_change_mtu(struct net_device *dev, int new_mtu); | 107 | int hdlc_change_mtu(struct net_device *dev, int new_mtu); |
| 108 | /* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */ | 108 | /* Must be pointed to by hw driver's dev->netdev_ops->ndo_start_xmit */ |
| 109 | int hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev); | 109 | netdev_tx_t hdlc_start_xmit(struct sk_buff *skb, struct net_device *dev); |
| 110 | 110 | ||
| 111 | int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto, | 111 | int attach_hdlc_protocol(struct net_device *dev, struct hdlc_proto *proto, |
| 112 | size_t size); | 112 | size_t size); |
diff --git a/include/linux/hid-debug.h b/include/linux/hid-debug.h index 50d568ec178a..53744fa1c8b7 100644 --- a/include/linux/hid-debug.h +++ b/include/linux/hid-debug.h | |||
| @@ -2,7 +2,7 @@ | |||
| 2 | #define __HID_DEBUG_H | 2 | #define __HID_DEBUG_H |
| 3 | 3 | ||
| 4 | /* | 4 | /* |
| 5 | * Copyright (c) 2007 Jiri Kosina | 5 | * Copyright (c) 2007-2009 Jiri Kosina |
| 6 | */ | 6 | */ |
| 7 | 7 | ||
| 8 | /* | 8 | /* |
| @@ -22,24 +22,44 @@ | |||
| 22 | * | 22 | * |
| 23 | */ | 23 | */ |
| 24 | 24 | ||
| 25 | #ifdef CONFIG_HID_DEBUG | 25 | #define HID_DEBUG_BUFSIZE 512 |
| 26 | 26 | ||
| 27 | void hid_dump_input(struct hid_usage *, __s32); | 27 | #ifdef CONFIG_DEBUG_FS |
| 28 | void hid_dump_device(struct hid_device *); | 28 | |
| 29 | void hid_dump_field(struct hid_field *, int); | 29 | void hid_dump_input(struct hid_device *, struct hid_usage *, __s32); |
| 30 | void hid_resolv_usage(unsigned); | 30 | void hid_dump_device(struct hid_device *, struct seq_file *); |
| 31 | void hid_resolv_event(__u8, __u16); | 31 | void hid_dump_field(struct hid_field *, int, struct seq_file *); |
| 32 | char *hid_resolv_usage(unsigned, struct seq_file *); | ||
| 33 | void hid_debug_register(struct hid_device *, const char *); | ||
| 34 | void hid_debug_unregister(struct hid_device *); | ||
| 35 | void hid_debug_init(void); | ||
| 36 | void hid_debug_exit(void); | ||
| 37 | void hid_debug_event(struct hid_device *, char *); | ||
| 32 | 38 | ||
| 33 | #else | ||
| 34 | 39 | ||
| 35 | #define hid_dump_input(a,b) do { } while (0) | 40 | struct hid_debug_list { |
| 36 | #define hid_dump_device(c) do { } while (0) | 41 | char *hid_debug_buf; |
| 37 | #define hid_dump_field(a,b) do { } while (0) | 42 | int head; |
| 38 | #define hid_resolv_usage(a) do { } while (0) | 43 | int tail; |
| 39 | #define hid_resolv_event(a,b) do { } while (0) | 44 | struct fasync_struct *fasync; |
| 45 | struct hid_device *hdev; | ||
| 46 | struct list_head node; | ||
| 47 | struct mutex read_mutex; | ||
| 48 | }; | ||
| 40 | 49 | ||
| 41 | #endif /* CONFIG_HID_DEBUG */ | 50 | #else |
| 42 | 51 | ||
| 52 | #define hid_dump_input(a,b,c) do { } while (0) | ||
| 53 | #define hid_dump_device(a,b) do { } while (0) | ||
| 54 | #define hid_dump_field(a,b,c) do { } while (0) | ||
| 55 | #define hid_resolv_usage(a,b) do { } while (0) | ||
| 56 | #define hid_debug_register(a, b) do { } while (0) | ||
| 57 | #define hid_debug_unregister(a) do { } while (0) | ||
| 58 | #define hid_debug_init() do { } while (0) | ||
| 59 | #define hid_debug_exit() do { } while (0) | ||
| 60 | #define hid_debug_event(a,b) do { } while (0) | ||
| 61 | |||
| 62 | #endif | ||
| 43 | 63 | ||
| 44 | #endif | 64 | #endif |
| 45 | 65 | ||
diff --git a/include/linux/hid.h b/include/linux/hid.h index 53489fd4d700..a0ebdace7baa 100644 --- a/include/linux/hid.h +++ b/include/linux/hid.h | |||
| @@ -500,6 +500,14 @@ struct hid_device { /* device report descriptor */ | |||
| 500 | 500 | ||
| 501 | /* handler for raw output data, used by hidraw */ | 501 | /* handler for raw output data, used by hidraw */ |
| 502 | int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t); | 502 | int (*hid_output_raw_report) (struct hid_device *, __u8 *, size_t); |
| 503 | |||
| 504 | /* debugging support via debugfs */ | ||
| 505 | unsigned short debug; | ||
| 506 | struct dentry *debug_dir; | ||
| 507 | struct dentry *debug_rdesc; | ||
| 508 | struct dentry *debug_events; | ||
| 509 | struct list_head debug_list; | ||
| 510 | wait_queue_head_t debug_wait; | ||
| 503 | }; | 511 | }; |
| 504 | 512 | ||
| 505 | static inline void *hid_get_drvdata(struct hid_device *hdev) | 513 | static inline void *hid_get_drvdata(struct hid_device *hdev) |
| @@ -657,9 +665,7 @@ struct hid_ll_driver { | |||
| 657 | 665 | ||
| 658 | /* HID core API */ | 666 | /* HID core API */ |
| 659 | 667 | ||
| 660 | #ifdef CONFIG_HID_DEBUG | ||
| 661 | extern int hid_debug; | 668 | extern int hid_debug; |
| 662 | #endif | ||
| 663 | 669 | ||
| 664 | extern int hid_add_device(struct hid_device *); | 670 | extern int hid_add_device(struct hid_device *); |
| 665 | extern void hid_destroy_device(struct hid_device *); | 671 | extern void hid_destroy_device(struct hid_device *); |
| @@ -815,21 +821,9 @@ int hid_pidff_init(struct hid_device *hid); | |||
| 815 | #define hid_pidff_init NULL | 821 | #define hid_pidff_init NULL |
| 816 | #endif | 822 | #endif |
| 817 | 823 | ||
| 818 | #ifdef CONFIG_HID_DEBUG | ||
| 819 | #define dbg_hid(format, arg...) if (hid_debug) \ | 824 | #define dbg_hid(format, arg...) if (hid_debug) \ |
| 820 | printk(KERN_DEBUG "%s: " format ,\ | 825 | printk(KERN_DEBUG "%s: " format ,\ |
| 821 | __FILE__ , ## arg) | 826 | __FILE__ , ## arg) |
| 822 | #define dbg_hid_line(format, arg...) if (hid_debug) \ | ||
| 823 | printk(format, ## arg) | ||
| 824 | #else | ||
| 825 | static inline int __attribute__((format(printf, 1, 2))) | ||
| 826 | dbg_hid(const char *fmt, ...) | ||
| 827 | { | ||
| 828 | return 0; | ||
| 829 | } | ||
| 830 | #define dbg_hid_line dbg_hid | ||
| 831 | #endif /* HID_DEBUG */ | ||
| 832 | |||
| 833 | #define err_hid(format, arg...) printk(KERN_ERR "%s: " format "\n" , \ | 827 | #define err_hid(format, arg...) printk(KERN_ERR "%s: " format "\n" , \ |
| 834 | __FILE__ , ## arg) | 828 | __FILE__ , ## arg) |
| 835 | #endif /* HID_FF */ | 829 | #endif /* HID_FF */ |
diff --git a/include/linux/i2c/twl4030.h b/include/linux/i2c/twl4030.h index 0dc80ef24975..3fd21d7cb6bf 100644 --- a/include/linux/i2c/twl4030.h +++ b/include/linux/i2c/twl4030.h | |||
| @@ -25,6 +25,9 @@ | |||
| 25 | #ifndef __TWL4030_H_ | 25 | #ifndef __TWL4030_H_ |
| 26 | #define __TWL4030_H_ | 26 | #define __TWL4030_H_ |
| 27 | 27 | ||
| 28 | #include <linux/types.h> | ||
| 29 | #include <linux/input/matrix_keypad.h> | ||
| 30 | |||
| 28 | /* | 31 | /* |
| 29 | * Using the twl4030 core we address registers using a pair | 32 | * Using the twl4030 core we address registers using a pair |
| 30 | * { module id, relative register offset } | 33 | * { module id, relative register offset } |
| @@ -302,13 +305,17 @@ struct twl4030_madc_platform_data { | |||
| 302 | int irq_line; | 305 | int irq_line; |
| 303 | }; | 306 | }; |
| 304 | 307 | ||
| 308 | /* Boards have uniqe mappings of {col, row} --> keycode. | ||
| 309 | * Column and row are 4 bits, but range only from 0..7. | ||
| 310 | * a PERSISTENT_KEY is "always on" and never reported. | ||
| 311 | */ | ||
| 312 | #define PERSISTENT_KEY(c, r) KEY((c), (r), KEY_RESERVED) | ||
| 313 | |||
| 305 | struct twl4030_keypad_data { | 314 | struct twl4030_keypad_data { |
| 306 | int rows; | 315 | const struct matrix_keymap_data *keymap_data; |
| 307 | int cols; | 316 | unsigned rows; |
| 308 | int *keymap; | 317 | unsigned cols; |
| 309 | int irq; | 318 | bool rep; |
| 310 | unsigned int keymapsize; | ||
| 311 | unsigned int rep:1; | ||
| 312 | }; | 319 | }; |
| 313 | 320 | ||
| 314 | enum twl4030_usb_mode { | 321 | enum twl4030_usb_mode { |
diff --git a/include/linux/icmpv6.h b/include/linux/icmpv6.h index b6a85183c333..c0d8357917e2 100644 --- a/include/linux/icmpv6.h +++ b/include/linux/icmpv6.h | |||
| @@ -171,8 +171,6 @@ struct icmp6_filter { | |||
| 171 | #ifdef __KERNEL__ | 171 | #ifdef __KERNEL__ |
| 172 | 172 | ||
| 173 | #include <linux/netdevice.h> | 173 | #include <linux/netdevice.h> |
| 174 | #include <linux/skbuff.h> | ||
| 175 | |||
| 176 | 174 | ||
| 177 | extern void icmpv6_send(struct sk_buff *skb, | 175 | extern void icmpv6_send(struct sk_buff *skb, |
| 178 | u8 type, u8 code, | 176 | u8 type, u8 code, |
diff --git a/include/linux/ide.h b/include/linux/ide.h index edc93a6d931d..e4135d6e0556 100644 --- a/include/linux/ide.h +++ b/include/linux/ide.h | |||
| @@ -258,6 +258,7 @@ enum { | |||
| 258 | IDE_TFLAG_DYN = (1 << 5), | 258 | IDE_TFLAG_DYN = (1 << 5), |
| 259 | IDE_TFLAG_FS = (1 << 6), | 259 | IDE_TFLAG_FS = (1 << 6), |
| 260 | IDE_TFLAG_MULTI_PIO = (1 << 7), | 260 | IDE_TFLAG_MULTI_PIO = (1 << 7), |
| 261 | IDE_TFLAG_SET_XFER = (1 << 8), | ||
| 261 | }; | 262 | }; |
| 262 | 263 | ||
| 263 | enum { | 264 | enum { |
| @@ -294,7 +295,7 @@ struct ide_cmd { | |||
| 294 | } out, in; | 295 | } out, in; |
| 295 | } valid; | 296 | } valid; |
| 296 | 297 | ||
| 297 | u8 tf_flags; | 298 | u16 tf_flags; |
| 298 | u8 ftf_flags; /* for TASKFILE ioctl */ | 299 | u8 ftf_flags; /* for TASKFILE ioctl */ |
| 299 | int protocol; | 300 | int protocol; |
| 300 | 301 | ||
| @@ -918,8 +919,7 @@ __IDE_PROC_DEVSET(_name, _min, _max, NULL, NULL) | |||
| 918 | typedef struct { | 919 | typedef struct { |
| 919 | const char *name; | 920 | const char *name; |
| 920 | mode_t mode; | 921 | mode_t mode; |
| 921 | read_proc_t *read_proc; | 922 | const struct file_operations *proc_fops; |
| 922 | write_proc_t *write_proc; | ||
| 923 | } ide_proc_entry_t; | 923 | } ide_proc_entry_t; |
| 924 | 924 | ||
| 925 | void proc_ide_create(void); | 925 | void proc_ide_create(void); |
| @@ -931,24 +931,8 @@ void ide_proc_unregister_port(ide_hwif_t *); | |||
| 931 | void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); | 931 | void ide_proc_register_driver(ide_drive_t *, struct ide_driver *); |
| 932 | void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); | 932 | void ide_proc_unregister_driver(ide_drive_t *, struct ide_driver *); |
| 933 | 933 | ||
| 934 | read_proc_t proc_ide_read_capacity; | 934 | extern const struct file_operations ide_capacity_proc_fops; |
| 935 | read_proc_t proc_ide_read_geometry; | 935 | extern const struct file_operations ide_geometry_proc_fops; |
| 936 | |||
| 937 | /* | ||
| 938 | * Standard exit stuff: | ||
| 939 | */ | ||
| 940 | #define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) \ | ||
| 941 | { \ | ||
| 942 | len -= off; \ | ||
| 943 | if (len < count) { \ | ||
| 944 | *eof = 1; \ | ||
| 945 | if (len <= 0) \ | ||
| 946 | return 0; \ | ||
| 947 | } else \ | ||
| 948 | len = count; \ | ||
| 949 | *start = page + off; \ | ||
| 950 | return len; \ | ||
| 951 | } | ||
| 952 | #else | 936 | #else |
| 953 | static inline void proc_ide_create(void) { ; } | 937 | static inline void proc_ide_create(void) { ; } |
| 954 | static inline void proc_ide_destroy(void) { ; } | 938 | static inline void proc_ide_destroy(void) { ; } |
| @@ -960,7 +944,6 @@ static inline void ide_proc_register_driver(ide_drive_t *drive, | |||
| 960 | struct ide_driver *driver) { ; } | 944 | struct ide_driver *driver) { ; } |
| 961 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, | 945 | static inline void ide_proc_unregister_driver(ide_drive_t *drive, |
| 962 | struct ide_driver *driver) { ; } | 946 | struct ide_driver *driver) { ; } |
| 963 | #define PROC_IDE_READ_RETURN(page,start,off,count,eof,len) return 0; | ||
| 964 | #endif | 947 | #endif |
| 965 | 948 | ||
| 966 | enum { | 949 | enum { |
| @@ -1081,6 +1064,7 @@ extern void ide_fixstring(u8 *, const int, const int); | |||
| 1081 | 1064 | ||
| 1082 | int ide_busy_sleep(ide_drive_t *, unsigned long, int); | 1065 | int ide_busy_sleep(ide_drive_t *, unsigned long, int); |
| 1083 | 1066 | ||
| 1067 | int __ide_wait_stat(ide_drive_t *, u8, u8, unsigned long, u8 *); | ||
| 1084 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); | 1068 | int ide_wait_stat(ide_startstop_t *, ide_drive_t *, u8, u8, unsigned long); |
| 1085 | 1069 | ||
| 1086 | ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); | 1070 | ide_startstop_t ide_do_park_unpark(ide_drive_t *, struct request *); |
| @@ -1169,7 +1153,7 @@ int ide_no_data_taskfile(ide_drive_t *, struct ide_cmd *); | |||
| 1169 | 1153 | ||
| 1170 | int ide_taskfile_ioctl(ide_drive_t *, unsigned long); | 1154 | int ide_taskfile_ioctl(ide_drive_t *, unsigned long); |
| 1171 | 1155 | ||
| 1172 | int ide_dev_read_id(ide_drive_t *, u8, u16 *); | 1156 | int ide_dev_read_id(ide_drive_t *, u8, u16 *, int); |
| 1173 | 1157 | ||
| 1174 | extern int ide_driveid_update(ide_drive_t *); | 1158 | extern int ide_driveid_update(ide_drive_t *); |
| 1175 | extern int ide_config_drive_speed(ide_drive_t *, u8); | 1159 | extern int ide_config_drive_speed(ide_drive_t *, u8); |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index a9173d5434d1..52e15e079c61 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
| @@ -115,7 +115,7 @@ | |||
| 115 | #define IEEE80211_MAX_SSID_LEN 32 | 115 | #define IEEE80211_MAX_SSID_LEN 32 |
| 116 | 116 | ||
| 117 | #define IEEE80211_MAX_MESH_ID_LEN 32 | 117 | #define IEEE80211_MAX_MESH_ID_LEN 32 |
| 118 | #define IEEE80211_MESH_CONFIG_LEN 19 | 118 | #define IEEE80211_MESH_CONFIG_LEN 24 |
| 119 | 119 | ||
| 120 | #define IEEE80211_QOS_CTL_LEN 2 | 120 | #define IEEE80211_QOS_CTL_LEN 2 |
| 121 | #define IEEE80211_QOS_CTL_TID_MASK 0x000F | 121 | #define IEEE80211_QOS_CTL_TID_MASK 0x000F |
| @@ -802,6 +802,31 @@ struct ieee80211_ht_cap { | |||
| 802 | #define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03 | 802 | #define IEEE80211_HT_AMPDU_PARM_FACTOR 0x03 |
| 803 | #define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C | 803 | #define IEEE80211_HT_AMPDU_PARM_DENSITY 0x1C |
| 804 | 804 | ||
| 805 | /* | ||
| 806 | * Maximum length of AMPDU that the STA can receive. | ||
| 807 | * Length = 2 ^ (13 + max_ampdu_length_exp) - 1 (octets) | ||
| 808 | */ | ||
| 809 | enum ieee80211_max_ampdu_length_exp { | ||
| 810 | IEEE80211_HT_MAX_AMPDU_8K = 0, | ||
| 811 | IEEE80211_HT_MAX_AMPDU_16K = 1, | ||
| 812 | IEEE80211_HT_MAX_AMPDU_32K = 2, | ||
| 813 | IEEE80211_HT_MAX_AMPDU_64K = 3 | ||
| 814 | }; | ||
| 815 | |||
| 816 | #define IEEE80211_HT_MAX_AMPDU_FACTOR 13 | ||
| 817 | |||
| 818 | /* Minimum MPDU start spacing */ | ||
| 819 | enum ieee80211_min_mpdu_spacing { | ||
| 820 | IEEE80211_HT_MPDU_DENSITY_NONE = 0, /* No restriction */ | ||
| 821 | IEEE80211_HT_MPDU_DENSITY_0_25 = 1, /* 1/4 usec */ | ||
| 822 | IEEE80211_HT_MPDU_DENSITY_0_5 = 2, /* 1/2 usec */ | ||
| 823 | IEEE80211_HT_MPDU_DENSITY_1 = 3, /* 1 usec */ | ||
| 824 | IEEE80211_HT_MPDU_DENSITY_2 = 4, /* 2 usec */ | ||
| 825 | IEEE80211_HT_MPDU_DENSITY_4 = 5, /* 4 usec */ | ||
| 826 | IEEE80211_HT_MPDU_DENSITY_8 = 6, /* 8 usec */ | ||
| 827 | IEEE80211_HT_MPDU_DENSITY_16 = 7 /* 16 usec */ | ||
| 828 | }; | ||
| 829 | |||
| 805 | /** | 830 | /** |
| 806 | * struct ieee80211_ht_info - HT information | 831 | * struct ieee80211_ht_info - HT information |
| 807 | * | 832 | * |
| @@ -1196,6 +1221,10 @@ enum ieee80211_sa_query_action { | |||
| 1196 | #define WLAN_CIPHER_SUITE_WEP104 0x000FAC05 | 1221 | #define WLAN_CIPHER_SUITE_WEP104 0x000FAC05 |
| 1197 | #define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06 | 1222 | #define WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06 |
| 1198 | 1223 | ||
| 1224 | /* AKM suite selectors */ | ||
| 1225 | #define WLAN_AKM_SUITE_8021X 0x000FAC01 | ||
| 1226 | #define WLAN_AKM_SUITE_PSK 0x000FAC02 | ||
| 1227 | |||
| 1199 | #define WLAN_MAX_KEY_LEN 32 | 1228 | #define WLAN_MAX_KEY_LEN 32 |
| 1200 | 1229 | ||
| 1201 | /** | 1230 | /** |
diff --git a/include/linux/if_addr.h b/include/linux/if_addr.h index a60c821be44c..fd9740466757 100644 --- a/include/linux/if_addr.h +++ b/include/linux/if_addr.h | |||
| @@ -41,6 +41,7 @@ enum | |||
| 41 | 41 | ||
| 42 | #define IFA_F_NODAD 0x02 | 42 | #define IFA_F_NODAD 0x02 |
| 43 | #define IFA_F_OPTIMISTIC 0x04 | 43 | #define IFA_F_OPTIMISTIC 0x04 |
| 44 | #define IFA_F_DADFAILED 0x08 | ||
| 44 | #define IFA_F_HOMEADDRESS 0x10 | 45 | #define IFA_F_HOMEADDRESS 0x10 |
| 45 | #define IFA_F_DEPRECATED 0x20 | 46 | #define IFA_F_DEPRECATED 0x20 |
| 46 | #define IFA_F_TENTATIVE 0x40 | 47 | #define IFA_F_TENTATIVE 0x40 |
diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h index b554300ef8bf..282eb37e2dec 100644 --- a/include/linux/if_arp.h +++ b/include/linux/if_arp.h | |||
| @@ -87,7 +87,6 @@ | |||
| 87 | #define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header */ | 87 | #define ARPHRD_IEEE80211_PRISM 802 /* IEEE 802.11 + Prism2 header */ |
| 88 | #define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header */ | 88 | #define ARPHRD_IEEE80211_RADIOTAP 803 /* IEEE 802.11 + radiotap header */ |
| 89 | #define ARPHRD_IEEE802154 804 | 89 | #define ARPHRD_IEEE802154 804 |
| 90 | #define ARPHRD_IEEE802154_PHY 805 | ||
| 91 | 90 | ||
| 92 | #define ARPHRD_PHONET 820 /* PhoNet media type */ | 91 | #define ARPHRD_PHONET 820 /* PhoNet media type */ |
| 93 | #define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */ | 92 | #define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */ |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index 70fdba2bbf71..580b6004d00e 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
| @@ -139,10 +139,10 @@ extern ssize_t sysfs_format_mac(char *buf, const unsigned char *addr, int len); | |||
| 139 | /* | 139 | /* |
| 140 | * Display a 6 byte device address (MAC) in a readable format. | 140 | * Display a 6 byte device address (MAC) in a readable format. |
| 141 | */ | 141 | */ |
| 142 | extern char *print_mac(char *buf, const unsigned char *addr); | 142 | extern char *print_mac(char *buf, const unsigned char *addr) __deprecated; |
| 143 | #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" | 143 | #define MAC_FMT "%02x:%02x:%02x:%02x:%02x:%02x" |
| 144 | #define MAC_BUF_SIZE 18 | 144 | #define MAC_BUF_SIZE 18 |
| 145 | #define DECLARE_MAC_BUF(var) char var[MAC_BUF_SIZE] __maybe_unused | 145 | #define DECLARE_MAC_BUF(var) char var[MAC_BUF_SIZE] |
| 146 | 146 | ||
| 147 | #endif | 147 | #endif |
| 148 | 148 | ||
diff --git a/include/linux/if_frad.h b/include/linux/if_frad.h index 673f2209453d..80b3a1056a5f 100644 --- a/include/linux/if_frad.h +++ b/include/linux/if_frad.h | |||
| @@ -69,11 +69,6 @@ struct dlci_conf { | |||
| 69 | 69 | ||
| 70 | #define DLCI_VALID_FLAGS 0x000B | 70 | #define DLCI_VALID_FLAGS 0x000B |
| 71 | 71 | ||
| 72 | /* FRAD driver uses these to indicate what it did with packet */ | ||
| 73 | #define DLCI_RET_OK 0x00 | ||
| 74 | #define DLCI_RET_ERR 0x01 | ||
| 75 | #define DLCI_RET_DROP 0x02 | ||
| 76 | |||
| 77 | /* defines for the actual Frame Relay hardware */ | 72 | /* defines for the actual Frame Relay hardware */ |
| 78 | #define FRAD_GET_CONF (SIOCDEVPRIVATE) | 73 | #define FRAD_GET_CONF (SIOCDEVPRIVATE) |
| 79 | #define FRAD_SET_CONF (SIOCDEVPRIVATE + 1) | 74 | #define FRAD_SET_CONF (SIOCDEVPRIVATE + 1) |
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h index 915ba5789f0e..3f5fd523b49d 100644 --- a/include/linux/if_tun.h +++ b/include/linux/if_tun.h | |||
| @@ -62,6 +62,7 @@ | |||
| 62 | #define TUN_F_TSO4 0x02 /* I can handle TSO for IPv4 packets */ | 62 | #define TUN_F_TSO4 0x02 /* I can handle TSO for IPv4 packets */ |
| 63 | #define TUN_F_TSO6 0x04 /* I can handle TSO for IPv6 packets */ | 63 | #define TUN_F_TSO6 0x04 /* I can handle TSO for IPv6 packets */ |
| 64 | #define TUN_F_TSO_ECN 0x08 /* I can handle TSO with ECN bits. */ | 64 | #define TUN_F_TSO_ECN 0x08 /* I can handle TSO with ECN bits. */ |
| 65 | #define TUN_F_UFO 0x10 /* I can handle UFO packets */ | ||
| 65 | 66 | ||
| 66 | /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */ | 67 | /* Protocol info prepended to the packets (when IFF_NO_PI is not set) */ |
| 67 | #define TUN_PKT_STRIP 0x0001 | 68 | #define TUN_PKT_STRIP 0x0001 |
diff --git a/include/linux/igmp.h b/include/linux/igmp.h index 92fbd8cbd68f..fe158e0e20e6 100644 --- a/include/linux/igmp.h +++ b/include/linux/igmp.h | |||
| @@ -233,6 +233,8 @@ extern void ip_mc_init_dev(struct in_device *); | |||
| 233 | extern void ip_mc_destroy_dev(struct in_device *); | 233 | extern void ip_mc_destroy_dev(struct in_device *); |
| 234 | extern void ip_mc_up(struct in_device *); | 234 | extern void ip_mc_up(struct in_device *); |
| 235 | extern void ip_mc_down(struct in_device *); | 235 | extern void ip_mc_down(struct in_device *); |
| 236 | extern void ip_mc_unmap(struct in_device *); | ||
| 237 | extern void ip_mc_remap(struct in_device *); | ||
| 236 | extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr); | 238 | extern void ip_mc_dec_group(struct in_device *in_dev, __be32 addr); |
| 237 | extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr); | 239 | extern void ip_mc_inc_group(struct in_device *in_dev, __be32 addr); |
| 238 | extern void ip_mc_rejoin_group(struct ip_mc_list *im); | 240 | extern void ip_mc_rejoin_group(struct ip_mc_list *im); |
diff --git a/include/linux/init.h b/include/linux/init.h index 13b633ed695e..400adbb45414 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
| @@ -103,8 +103,8 @@ | |||
| 103 | #define __INIT .section ".init.text","ax" | 103 | #define __INIT .section ".init.text","ax" |
| 104 | #define __FINIT .previous | 104 | #define __FINIT .previous |
| 105 | 105 | ||
| 106 | #define __INITDATA .section ".init.data","aw" | 106 | #define __INITDATA .section ".init.data","aw",%progbits |
| 107 | #define __INITRODATA .section ".init.rodata","a" | 107 | #define __INITRODATA .section ".init.rodata","a",%progbits |
| 108 | #define __FINITDATA .previous | 108 | #define __FINITDATA .previous |
| 109 | 109 | ||
| 110 | #define __DEVINIT .section ".devinit.text", "ax" | 110 | #define __DEVINIT .section ".devinit.text", "ax" |
| @@ -305,9 +305,17 @@ void __init parse_early_options(char *cmdline); | |||
| 305 | #ifdef CONFIG_MODULES | 305 | #ifdef CONFIG_MODULES |
| 306 | #define __init_or_module | 306 | #define __init_or_module |
| 307 | #define __initdata_or_module | 307 | #define __initdata_or_module |
| 308 | #define __initconst_or_module | ||
| 309 | #define __INIT_OR_MODULE .text | ||
| 310 | #define __INITDATA_OR_MODULE .data | ||
| 311 | #define __INITRODATA_OR_MODULE .section ".rodata","a",%progbits | ||
| 308 | #else | 312 | #else |
| 309 | #define __init_or_module __init | 313 | #define __init_or_module __init |
| 310 | #define __initdata_or_module __initdata | 314 | #define __initdata_or_module __initdata |
| 315 | #define __initconst_or_module __initconst | ||
| 316 | #define __INIT_OR_MODULE __INIT | ||
| 317 | #define __INITDATA_OR_MODULE __INITDATA | ||
| 318 | #define __INITRODATA_OR_MODULE __INITRODATA | ||
| 311 | #endif /*CONFIG_MODULES*/ | 319 | #endif /*CONFIG_MODULES*/ |
| 312 | 320 | ||
| 313 | /* Functions marked as __devexit may be discarded at kernel link time, depending | 321 | /* Functions marked as __devexit may be discarded at kernel link time, depending |
diff --git a/include/linux/input/eeti_ts.h b/include/linux/input/eeti_ts.h new file mode 100644 index 000000000000..f875b316249d --- /dev/null +++ b/include/linux/input/eeti_ts.h | |||
| @@ -0,0 +1,9 @@ | |||
| 1 | #ifndef LINUX_INPUT_EETI_TS_H | ||
| 2 | #define LINUX_INPUT_EETI_TS_H | ||
| 3 | |||
| 4 | struct eeti_ts_platform_data { | ||
| 5 | unsigned int irq_active_high; | ||
| 6 | }; | ||
| 7 | |||
| 8 | #endif /* LINUX_INPUT_EETI_TS_H */ | ||
| 9 | |||
diff --git a/include/linux/input/matrix_keypad.h b/include/linux/input/matrix_keypad.h index 15d5903af2dd..b3cd42d50e16 100644 --- a/include/linux/input/matrix_keypad.h +++ b/include/linux/input/matrix_keypad.h | |||
| @@ -63,4 +63,36 @@ struct matrix_keypad_platform_data { | |||
| 63 | bool wakeup; | 63 | bool wakeup; |
| 64 | }; | 64 | }; |
| 65 | 65 | ||
| 66 | /** | ||
| 67 | * matrix_keypad_build_keymap - convert platform keymap into matrix keymap | ||
| 68 | * @keymap_data: keymap supplied by the platform code | ||
| 69 | * @row_shift: number of bits to shift row value by to advance to the next | ||
| 70 | * line in the keymap | ||
| 71 | * @keymap: expanded version of keymap that is suitable for use by | ||
| 72 | * matrix keyboad driver | ||
| 73 | * @keybit: pointer to bitmap of keys supported by input device | ||
| 74 | * | ||
| 75 | * This function converts platform keymap (encoded with KEY() macro) into | ||
| 76 | * an array of keycodes that is suitable for using in a standard matrix | ||
| 77 | * keyboard driver that uses row and col as indices. | ||
| 78 | */ | ||
| 79 | static inline void | ||
| 80 | matrix_keypad_build_keymap(const struct matrix_keymap_data *keymap_data, | ||
| 81 | unsigned int row_shift, | ||
| 82 | unsigned short *keymap, unsigned long *keybit) | ||
| 83 | { | ||
| 84 | int i; | ||
| 85 | |||
| 86 | for (i = 0; i < keymap_data->keymap_size; i++) { | ||
| 87 | unsigned int key = keymap_data->keymap[i]; | ||
| 88 | unsigned int row = KEY_ROW(key); | ||
| 89 | unsigned int col = KEY_COL(key); | ||
| 90 | unsigned short code = KEY_VAL(key); | ||
| 91 | |||
| 92 | keymap[MATRIX_SCAN_CODE(row, col, row_shift)] = code; | ||
| 93 | __set_bit(code, keybit); | ||
| 94 | } | ||
| 95 | __clear_bit(KEY_RESERVED, keybit); | ||
| 96 | } | ||
| 97 | |||
| 66 | #endif /* _MATRIX_KEYPAD_H */ | 98 | #endif /* _MATRIX_KEYPAD_H */ |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index 1ac57e522a1f..8e9e151f811e 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -348,6 +348,7 @@ enum | |||
| 348 | NET_TX_SOFTIRQ, | 348 | NET_TX_SOFTIRQ, |
| 349 | NET_RX_SOFTIRQ, | 349 | NET_RX_SOFTIRQ, |
| 350 | BLOCK_SOFTIRQ, | 350 | BLOCK_SOFTIRQ, |
| 351 | BLOCK_IOPOLL_SOFTIRQ, | ||
| 351 | TASKLET_SOFTIRQ, | 352 | TASKLET_SOFTIRQ, |
| 352 | SCHED_SOFTIRQ, | 353 | SCHED_SOFTIRQ, |
| 353 | HRTIMER_SOFTIRQ, | 354 | HRTIMER_SOFTIRQ, |
diff --git a/include/linux/io-mapping.h b/include/linux/io-mapping.h index 0adb0f91568c..97eb928b4924 100644 --- a/include/linux/io-mapping.h +++ b/include/linux/io-mapping.h | |||
| @@ -49,23 +49,30 @@ static inline struct io_mapping * | |||
| 49 | io_mapping_create_wc(resource_size_t base, unsigned long size) | 49 | io_mapping_create_wc(resource_size_t base, unsigned long size) |
| 50 | { | 50 | { |
| 51 | struct io_mapping *iomap; | 51 | struct io_mapping *iomap; |
| 52 | 52 | pgprot_t prot; | |
| 53 | if (!is_io_mapping_possible(base, size)) | ||
| 54 | return NULL; | ||
| 55 | 53 | ||
| 56 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); | 54 | iomap = kmalloc(sizeof(*iomap), GFP_KERNEL); |
| 57 | if (!iomap) | 55 | if (!iomap) |
| 58 | return NULL; | 56 | goto out_err; |
| 57 | |||
| 58 | if (iomap_create_wc(base, size, &prot)) | ||
| 59 | goto out_free; | ||
| 59 | 60 | ||
| 60 | iomap->base = base; | 61 | iomap->base = base; |
| 61 | iomap->size = size; | 62 | iomap->size = size; |
| 62 | iomap->prot = pgprot_writecombine(__pgprot(__PAGE_KERNEL)); | 63 | iomap->prot = prot; |
| 63 | return iomap; | 64 | return iomap; |
| 65 | |||
| 66 | out_free: | ||
| 67 | kfree(iomap); | ||
| 68 | out_err: | ||
| 69 | return NULL; | ||
| 64 | } | 70 | } |
| 65 | 71 | ||
| 66 | static inline void | 72 | static inline void |
| 67 | io_mapping_free(struct io_mapping *mapping) | 73 | io_mapping_free(struct io_mapping *mapping) |
| 68 | { | 74 | { |
| 75 | iomap_free(mapping->base, mapping->size); | ||
| 69 | kfree(mapping); | 76 | kfree(mapping); |
| 70 | } | 77 | } |
| 71 | 78 | ||
diff --git a/include/linux/isdn/hdlc.h b/include/linux/isdn/hdlc.h new file mode 100644 index 000000000000..4b3ecc40889a --- /dev/null +++ b/include/linux/isdn/hdlc.h | |||
| @@ -0,0 +1,82 @@ | |||
| 1 | /* | ||
| 2 | * hdlc.h -- General purpose ISDN HDLC decoder. | ||
| 3 | * | ||
| 4 | * Implementation of a HDLC decoder/encoder in software. | ||
| 5 | * Neccessary because some ISDN devices don't have HDLC | ||
| 6 | * controllers. | ||
| 7 | * | ||
| 8 | * Copyright (C) | ||
| 9 | * 2009 Karsten Keil <keil@b1-systems.de> | ||
| 10 | * 2002 Wolfgang Mües <wolfgang@iksw-muees.de> | ||
| 11 | * 2001 Frode Isaksen <fisaksen@bewan.com> | ||
| 12 | * 2001 Kai Germaschewski <kai.germaschewski@gmx.de> | ||
| 13 | * | ||
| 14 | * This program is free software; you can redistribute it and/or modify | ||
| 15 | * it under the terms of the GNU General Public License as published by | ||
| 16 | * the Free Software Foundation; either version 2 of the License, or | ||
| 17 | * (at your option) any later version. | ||
| 18 | * | ||
| 19 | * This program is distributed in the hope that it will be useful, | ||
| 20 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 21 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 22 | * GNU General Public License for more details. | ||
| 23 | * | ||
| 24 | * You should have received a copy of the GNU General Public License | ||
| 25 | * along with this program; if not, write to the Free Software | ||
| 26 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 27 | */ | ||
| 28 | |||
| 29 | #ifndef __ISDNHDLC_H__ | ||
| 30 | #define __ISDNHDLC_H__ | ||
| 31 | |||
| 32 | struct isdnhdlc_vars { | ||
| 33 | int bit_shift; | ||
| 34 | int hdlc_bits1; | ||
| 35 | int data_bits; | ||
| 36 | int ffbit_shift; /* encoding only */ | ||
| 37 | int state; | ||
| 38 | int dstpos; | ||
| 39 | |||
| 40 | u16 crc; | ||
| 41 | |||
| 42 | u8 cbin; | ||
| 43 | u8 shift_reg; | ||
| 44 | u8 ffvalue; | ||
| 45 | |||
| 46 | /* set if transferring data */ | ||
| 47 | u32 data_received:1; | ||
| 48 | /* set if D channel (send idle instead of flags) */ | ||
| 49 | u32 dchannel:1; | ||
| 50 | /* set if 56K adaptation */ | ||
| 51 | u32 do_adapt56:1; | ||
| 52 | /* set if in closing phase (need to send CRC + flag) */ | ||
| 53 | u32 do_closing:1; | ||
| 54 | /* set if data is bitreverse */ | ||
| 55 | u32 do_bitreverse:1; | ||
| 56 | }; | ||
| 57 | |||
| 58 | /* Feature Flags */ | ||
| 59 | #define HDLC_56KBIT 0x01 | ||
| 60 | #define HDLC_DCHANNEL 0x02 | ||
| 61 | #define HDLC_BITREVERSE 0x04 | ||
| 62 | |||
| 63 | /* | ||
| 64 | The return value from isdnhdlc_decode is | ||
| 65 | the frame length, 0 if no complete frame was decoded, | ||
| 66 | or a negative error number | ||
| 67 | */ | ||
| 68 | #define HDLC_FRAMING_ERROR 1 | ||
| 69 | #define HDLC_CRC_ERROR 2 | ||
| 70 | #define HDLC_LENGTH_ERROR 3 | ||
| 71 | |||
| 72 | extern void isdnhdlc_rcv_init(struct isdnhdlc_vars *hdlc, u32 features); | ||
| 73 | |||
| 74 | extern int isdnhdlc_decode(struct isdnhdlc_vars *hdlc, const u8 *src, | ||
| 75 | int slen, int *count, u8 *dst, int dsize); | ||
| 76 | |||
| 77 | extern void isdnhdlc_out_init(struct isdnhdlc_vars *hdlc, u32 features); | ||
| 78 | |||
| 79 | extern int isdnhdlc_encode(struct isdnhdlc_vars *hdlc, const u8 *src, | ||
| 80 | u16 slen, int *count, u8 *dst, int dsize); | ||
| 81 | |||
| 82 | #endif /* __ISDNHDLC_H__ */ | ||
diff --git a/include/linux/kprobes.h b/include/linux/kprobes.h index bcd9c07848be..3a46b7b7abb2 100644 --- a/include/linux/kprobes.h +++ b/include/linux/kprobes.h | |||
| @@ -48,13 +48,13 @@ | |||
| 48 | #define KPROBE_HIT_SSDONE 0x00000008 | 48 | #define KPROBE_HIT_SSDONE 0x00000008 |
| 49 | 49 | ||
| 50 | /* Attach to insert probes on any functions which should be ignored*/ | 50 | /* Attach to insert probes on any functions which should be ignored*/ |
| 51 | #define __kprobes __attribute__((__section__(".kprobes.text"))) notrace | 51 | #define __kprobes __attribute__((__section__(".kprobes.text"))) |
| 52 | #else /* CONFIG_KPROBES */ | 52 | #else /* CONFIG_KPROBES */ |
| 53 | typedef int kprobe_opcode_t; | 53 | typedef int kprobe_opcode_t; |
| 54 | struct arch_specific_insn { | 54 | struct arch_specific_insn { |
| 55 | int dummy; | 55 | int dummy; |
| 56 | }; | 56 | }; |
| 57 | #define __kprobes notrace | 57 | #define __kprobes |
| 58 | #endif /* CONFIG_KPROBES */ | 58 | #endif /* CONFIG_KPROBES */ |
| 59 | 59 | ||
| 60 | struct kprobe; | 60 | struct kprobe; |
diff --git a/include/linux/kvm.h b/include/linux/kvm.h index 3db5d8d37485..f8f8900fc5ec 100644 --- a/include/linux/kvm.h +++ b/include/linux/kvm.h | |||
| @@ -14,7 +14,7 @@ | |||
| 14 | 14 | ||
| 15 | #define KVM_API_VERSION 12 | 15 | #define KVM_API_VERSION 12 |
| 16 | 16 | ||
| 17 | /* for KVM_TRACE_ENABLE */ | 17 | /* for KVM_TRACE_ENABLE, deprecated */ |
| 18 | struct kvm_user_trace_setup { | 18 | struct kvm_user_trace_setup { |
| 19 | __u32 buf_size; /* sub_buffer size of each per-cpu */ | 19 | __u32 buf_size; /* sub_buffer size of each per-cpu */ |
| 20 | __u32 buf_nr; /* the number of sub_buffers of each per-cpu */ | 20 | __u32 buf_nr; /* the number of sub_buffers of each per-cpu */ |
| @@ -70,6 +70,14 @@ struct kvm_irqchip { | |||
| 70 | } chip; | 70 | } chip; |
| 71 | }; | 71 | }; |
| 72 | 72 | ||
| 73 | /* for KVM_CREATE_PIT2 */ | ||
| 74 | struct kvm_pit_config { | ||
| 75 | __u32 flags; | ||
| 76 | __u32 pad[15]; | ||
| 77 | }; | ||
| 78 | |||
| 79 | #define KVM_PIT_SPEAKER_DUMMY 1 | ||
| 80 | |||
| 73 | #define KVM_EXIT_UNKNOWN 0 | 81 | #define KVM_EXIT_UNKNOWN 0 |
| 74 | #define KVM_EXIT_EXCEPTION 1 | 82 | #define KVM_EXIT_EXCEPTION 1 |
| 75 | #define KVM_EXIT_IO 2 | 83 | #define KVM_EXIT_IO 2 |
| @@ -87,6 +95,10 @@ struct kvm_irqchip { | |||
| 87 | #define KVM_EXIT_S390_RESET 14 | 95 | #define KVM_EXIT_S390_RESET 14 |
| 88 | #define KVM_EXIT_DCR 15 | 96 | #define KVM_EXIT_DCR 15 |
| 89 | #define KVM_EXIT_NMI 16 | 97 | #define KVM_EXIT_NMI 16 |
| 98 | #define KVM_EXIT_INTERNAL_ERROR 17 | ||
| 99 | |||
| 100 | /* For KVM_EXIT_INTERNAL_ERROR */ | ||
| 101 | #define KVM_INTERNAL_ERROR_EMULATION 1 | ||
| 90 | 102 | ||
| 91 | /* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ | 103 | /* for KVM_RUN, returned by mmap(vcpu_fd, offset=0) */ |
| 92 | struct kvm_run { | 104 | struct kvm_run { |
| @@ -173,6 +185,9 @@ struct kvm_run { | |||
| 173 | __u32 data; | 185 | __u32 data; |
| 174 | __u8 is_write; | 186 | __u8 is_write; |
| 175 | } dcr; | 187 | } dcr; |
| 188 | struct { | ||
| 189 | __u32 suberror; | ||
| 190 | } internal; | ||
| 176 | /* Fix the size of the union. */ | 191 | /* Fix the size of the union. */ |
| 177 | char padding[256]; | 192 | char padding[256]; |
| 178 | }; | 193 | }; |
| @@ -292,6 +307,28 @@ struct kvm_guest_debug { | |||
| 292 | struct kvm_guest_debug_arch arch; | 307 | struct kvm_guest_debug_arch arch; |
| 293 | }; | 308 | }; |
| 294 | 309 | ||
| 310 | enum { | ||
| 311 | kvm_ioeventfd_flag_nr_datamatch, | ||
| 312 | kvm_ioeventfd_flag_nr_pio, | ||
| 313 | kvm_ioeventfd_flag_nr_deassign, | ||
| 314 | kvm_ioeventfd_flag_nr_max, | ||
| 315 | }; | ||
| 316 | |||
| 317 | #define KVM_IOEVENTFD_FLAG_DATAMATCH (1 << kvm_ioeventfd_flag_nr_datamatch) | ||
| 318 | #define KVM_IOEVENTFD_FLAG_PIO (1 << kvm_ioeventfd_flag_nr_pio) | ||
| 319 | #define KVM_IOEVENTFD_FLAG_DEASSIGN (1 << kvm_ioeventfd_flag_nr_deassign) | ||
| 320 | |||
| 321 | #define KVM_IOEVENTFD_VALID_FLAG_MASK ((1 << kvm_ioeventfd_flag_nr_max) - 1) | ||
| 322 | |||
| 323 | struct kvm_ioeventfd { | ||
| 324 | __u64 datamatch; | ||
| 325 | __u64 addr; /* legal pio/mmio address */ | ||
| 326 | __u32 len; /* 1, 2, 4, or 8 bytes */ | ||
| 327 | __s32 fd; | ||
| 328 | __u32 flags; | ||
| 329 | __u8 pad[36]; | ||
| 330 | }; | ||
| 331 | |||
| 295 | #define KVM_TRC_SHIFT 16 | 332 | #define KVM_TRC_SHIFT 16 |
| 296 | /* | 333 | /* |
| 297 | * kvm trace categories | 334 | * kvm trace categories |
| @@ -310,35 +347,6 @@ struct kvm_guest_debug { | |||
| 310 | #define KVM_TRC_CYCLE_SIZE 8 | 347 | #define KVM_TRC_CYCLE_SIZE 8 |
| 311 | #define KVM_TRC_EXTRA_MAX 7 | 348 | #define KVM_TRC_EXTRA_MAX 7 |
| 312 | 349 | ||
| 313 | /* This structure represents a single trace buffer record. */ | ||
| 314 | struct kvm_trace_rec { | ||
| 315 | /* variable rec_val | ||
| 316 | * is split into: | ||
| 317 | * bits 0 - 27 -> event id | ||
| 318 | * bits 28 -30 -> number of extra data args of size u32 | ||
| 319 | * bits 31 -> binary indicator for if tsc is in record | ||
| 320 | */ | ||
| 321 | __u32 rec_val; | ||
| 322 | __u32 pid; | ||
| 323 | __u32 vcpu_id; | ||
| 324 | union { | ||
| 325 | struct { | ||
| 326 | __u64 timestamp; | ||
| 327 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; | ||
| 328 | } __attribute__((packed)) timestamp; | ||
| 329 | struct { | ||
| 330 | __u32 extra_u32[KVM_TRC_EXTRA_MAX]; | ||
| 331 | } notimestamp; | ||
| 332 | } u; | ||
| 333 | }; | ||
| 334 | |||
| 335 | #define TRACE_REC_EVENT_ID(val) \ | ||
| 336 | (0x0fffffff & (val)) | ||
| 337 | #define TRACE_REC_NUM_DATA_ARGS(val) \ | ||
| 338 | (0x70000000 & ((val) << 28)) | ||
| 339 | #define TRACE_REC_TCS(val) \ | ||
| 340 | (0x80000000 & ((val) << 31)) | ||
| 341 | |||
| 342 | #define KVMIO 0xAE | 350 | #define KVMIO 0xAE |
| 343 | 351 | ||
| 344 | /* | 352 | /* |
| @@ -415,6 +423,19 @@ struct kvm_trace_rec { | |||
| 415 | #define KVM_CAP_ASSIGN_DEV_IRQ 29 | 423 | #define KVM_CAP_ASSIGN_DEV_IRQ 29 |
| 416 | /* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */ | 424 | /* Another bug in KVM_SET_USER_MEMORY_REGION fixed: */ |
| 417 | #define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30 | 425 | #define KVM_CAP_JOIN_MEMORY_REGIONS_WORKS 30 |
| 426 | #ifdef __KVM_HAVE_MCE | ||
| 427 | #define KVM_CAP_MCE 31 | ||
| 428 | #endif | ||
| 429 | #define KVM_CAP_IRQFD 32 | ||
| 430 | #ifdef __KVM_HAVE_PIT | ||
| 431 | #define KVM_CAP_PIT2 33 | ||
| 432 | #endif | ||
| 433 | #define KVM_CAP_SET_BOOT_CPU_ID 34 | ||
| 434 | #ifdef __KVM_HAVE_PIT_STATE2 | ||
| 435 | #define KVM_CAP_PIT_STATE2 35 | ||
| 436 | #endif | ||
| 437 | #define KVM_CAP_IOEVENTFD 36 | ||
| 438 | #define KVM_CAP_SET_IDENTITY_MAP_ADDR 37 | ||
| 418 | 439 | ||
| 419 | #ifdef KVM_CAP_IRQ_ROUTING | 440 | #ifdef KVM_CAP_IRQ_ROUTING |
| 420 | 441 | ||
| @@ -454,15 +475,32 @@ struct kvm_irq_routing { | |||
| 454 | 475 | ||
| 455 | #endif | 476 | #endif |
| 456 | 477 | ||
| 478 | #ifdef KVM_CAP_MCE | ||
| 479 | /* x86 MCE */ | ||
| 480 | struct kvm_x86_mce { | ||
| 481 | __u64 status; | ||
| 482 | __u64 addr; | ||
| 483 | __u64 misc; | ||
| 484 | __u64 mcg_status; | ||
| 485 | __u8 bank; | ||
| 486 | __u8 pad1[7]; | ||
| 487 | __u64 pad2[3]; | ||
| 488 | }; | ||
| 489 | #endif | ||
| 490 | |||
| 491 | #define KVM_IRQFD_FLAG_DEASSIGN (1 << 0) | ||
| 492 | |||
| 493 | struct kvm_irqfd { | ||
| 494 | __u32 fd; | ||
| 495 | __u32 gsi; | ||
| 496 | __u32 flags; | ||
| 497 | __u8 pad[20]; | ||
| 498 | }; | ||
| 499 | |||
| 457 | /* | 500 | /* |
| 458 | * ioctls for VM fds | 501 | * ioctls for VM fds |
| 459 | */ | 502 | */ |
| 460 | #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) | 503 | #define KVM_SET_MEMORY_REGION _IOW(KVMIO, 0x40, struct kvm_memory_region) |
| 461 | #define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44) | ||
| 462 | #define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45) | ||
| 463 | #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46,\ | ||
| 464 | struct kvm_userspace_memory_region) | ||
| 465 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) | ||
| 466 | /* | 504 | /* |
| 467 | * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns | 505 | * KVM_CREATE_VCPU receives as a parameter the vcpu slot, and returns |
| 468 | * a vcpu fd. | 506 | * a vcpu fd. |
| @@ -470,6 +508,12 @@ struct kvm_irq_routing { | |||
| 470 | #define KVM_CREATE_VCPU _IO(KVMIO, 0x41) | 508 | #define KVM_CREATE_VCPU _IO(KVMIO, 0x41) |
| 471 | #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log) | 509 | #define KVM_GET_DIRTY_LOG _IOW(KVMIO, 0x42, struct kvm_dirty_log) |
| 472 | #define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias) | 510 | #define KVM_SET_MEMORY_ALIAS _IOW(KVMIO, 0x43, struct kvm_memory_alias) |
| 511 | #define KVM_SET_NR_MMU_PAGES _IO(KVMIO, 0x44) | ||
| 512 | #define KVM_GET_NR_MMU_PAGES _IO(KVMIO, 0x45) | ||
| 513 | #define KVM_SET_USER_MEMORY_REGION _IOW(KVMIO, 0x46,\ | ||
| 514 | struct kvm_userspace_memory_region) | ||
| 515 | #define KVM_SET_TSS_ADDR _IO(KVMIO, 0x47) | ||
| 516 | #define KVM_SET_IDENTITY_MAP_ADDR _IOW(KVMIO, 0x48, __u64) | ||
| 473 | /* Device model IOC */ | 517 | /* Device model IOC */ |
| 474 | #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) | 518 | #define KVM_CREATE_IRQCHIP _IO(KVMIO, 0x60) |
| 475 | #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) | 519 | #define KVM_IRQ_LINE _IOW(KVMIO, 0x61, struct kvm_irq_level) |
| @@ -498,6 +542,10 @@ struct kvm_irq_routing { | |||
| 498 | #define KVM_ASSIGN_SET_MSIX_ENTRY \ | 542 | #define KVM_ASSIGN_SET_MSIX_ENTRY \ |
| 499 | _IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry) | 543 | _IOW(KVMIO, 0x74, struct kvm_assigned_msix_entry) |
| 500 | #define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq) | 544 | #define KVM_DEASSIGN_DEV_IRQ _IOW(KVMIO, 0x75, struct kvm_assigned_irq) |
| 545 | #define KVM_IRQFD _IOW(KVMIO, 0x76, struct kvm_irqfd) | ||
| 546 | #define KVM_CREATE_PIT2 _IOW(KVMIO, 0x77, struct kvm_pit_config) | ||
| 547 | #define KVM_SET_BOOT_CPU_ID _IO(KVMIO, 0x78) | ||
| 548 | #define KVM_IOEVENTFD _IOW(KVMIO, 0x79, struct kvm_ioeventfd) | ||
| 501 | 549 | ||
| 502 | /* | 550 | /* |
| 503 | * ioctls for vcpu fds | 551 | * ioctls for vcpu fds |
| @@ -541,6 +589,10 @@ struct kvm_irq_routing { | |||
| 541 | #define KVM_NMI _IO(KVMIO, 0x9a) | 589 | #define KVM_NMI _IO(KVMIO, 0x9a) |
| 542 | /* Available with KVM_CAP_SET_GUEST_DEBUG */ | 590 | /* Available with KVM_CAP_SET_GUEST_DEBUG */ |
| 543 | #define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug) | 591 | #define KVM_SET_GUEST_DEBUG _IOW(KVMIO, 0x9b, struct kvm_guest_debug) |
| 592 | /* MCE for x86 */ | ||
| 593 | #define KVM_X86_SETUP_MCE _IOW(KVMIO, 0x9c, __u64) | ||
| 594 | #define KVM_X86_GET_MCE_CAP_SUPPORTED _IOR(KVMIO, 0x9d, __u64) | ||
| 595 | #define KVM_X86_SET_MCE _IOW(KVMIO, 0x9e, struct kvm_x86_mce) | ||
| 544 | 596 | ||
| 545 | /* | 597 | /* |
| 546 | * Deprecated interfaces | 598 | * Deprecated interfaces |
| @@ -563,6 +615,9 @@ struct kvm_debug_guest { | |||
| 563 | #define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *) | 615 | #define KVM_IA64_VCPU_GET_STACK _IOR(KVMIO, 0x9a, void *) |
| 564 | #define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *) | 616 | #define KVM_IA64_VCPU_SET_STACK _IOW(KVMIO, 0x9b, void *) |
| 565 | 617 | ||
| 618 | #define KVM_GET_PIT2 _IOR(KVMIO, 0x9f, struct kvm_pit_state2) | ||
| 619 | #define KVM_SET_PIT2 _IOW(KVMIO, 0xa0, struct kvm_pit_state2) | ||
| 620 | |||
| 566 | #define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) | 621 | #define KVM_TRC_INJ_VIRQ (KVM_TRC_HANDLER + 0x02) |
| 567 | #define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) | 622 | #define KVM_TRC_REDELIVER_EVT (KVM_TRC_HANDLER + 0x03) |
| 568 | #define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) | 623 | #define KVM_TRC_PEND_INTR (KVM_TRC_HANDLER + 0x04) |
| @@ -633,7 +688,7 @@ struct kvm_assigned_msix_nr { | |||
| 633 | __u16 padding; | 688 | __u16 padding; |
| 634 | }; | 689 | }; |
| 635 | 690 | ||
| 636 | #define KVM_MAX_MSIX_PER_DEV 512 | 691 | #define KVM_MAX_MSIX_PER_DEV 256 |
| 637 | struct kvm_assigned_msix_entry { | 692 | struct kvm_assigned_msix_entry { |
| 638 | __u32 assigned_dev_id; | 693 | __u32 assigned_dev_id; |
| 639 | __u32 gsi; | 694 | __u32 gsi; |
diff --git a/include/linux/kvm_host.h b/include/linux/kvm_host.h index 3060bdc35ffe..4af56036a6bf 100644 --- a/include/linux/kvm_host.h +++ b/include/linux/kvm_host.h | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | 42 | ||
| 43 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 | 43 | #define KVM_USERSPACE_IRQ_SOURCE_ID 0 |
| 44 | 44 | ||
| 45 | struct kvm; | ||
| 45 | struct kvm_vcpu; | 46 | struct kvm_vcpu; |
| 46 | extern struct kmem_cache *kvm_vcpu_cache; | 47 | extern struct kmem_cache *kvm_vcpu_cache; |
| 47 | 48 | ||
| @@ -59,10 +60,18 @@ struct kvm_io_bus { | |||
| 59 | 60 | ||
| 60 | void kvm_io_bus_init(struct kvm_io_bus *bus); | 61 | void kvm_io_bus_init(struct kvm_io_bus *bus); |
| 61 | void kvm_io_bus_destroy(struct kvm_io_bus *bus); | 62 | void kvm_io_bus_destroy(struct kvm_io_bus *bus); |
| 62 | struct kvm_io_device *kvm_io_bus_find_dev(struct kvm_io_bus *bus, | 63 | int kvm_io_bus_write(struct kvm_io_bus *bus, gpa_t addr, int len, |
| 63 | gpa_t addr, int len, int is_write); | 64 | const void *val); |
| 64 | void kvm_io_bus_register_dev(struct kvm_io_bus *bus, | 65 | int kvm_io_bus_read(struct kvm_io_bus *bus, gpa_t addr, int len, |
| 65 | struct kvm_io_device *dev); | 66 | void *val); |
| 67 | int __kvm_io_bus_register_dev(struct kvm_io_bus *bus, | ||
| 68 | struct kvm_io_device *dev); | ||
| 69 | int kvm_io_bus_register_dev(struct kvm *kvm, struct kvm_io_bus *bus, | ||
| 70 | struct kvm_io_device *dev); | ||
| 71 | void __kvm_io_bus_unregister_dev(struct kvm_io_bus *bus, | ||
| 72 | struct kvm_io_device *dev); | ||
| 73 | void kvm_io_bus_unregister_dev(struct kvm *kvm, struct kvm_io_bus *bus, | ||
| 74 | struct kvm_io_device *dev); | ||
| 66 | 75 | ||
| 67 | struct kvm_vcpu { | 76 | struct kvm_vcpu { |
| 68 | struct kvm *kvm; | 77 | struct kvm *kvm; |
| @@ -103,7 +112,7 @@ struct kvm_memory_slot { | |||
| 103 | struct { | 112 | struct { |
| 104 | unsigned long rmap_pde; | 113 | unsigned long rmap_pde; |
| 105 | int write_count; | 114 | int write_count; |
| 106 | } *lpage_info; | 115 | } *lpage_info[KVM_NR_PAGE_SIZES - 1]; |
| 107 | unsigned long userspace_addr; | 116 | unsigned long userspace_addr; |
| 108 | int user_alloc; | 117 | int user_alloc; |
| 109 | }; | 118 | }; |
| @@ -124,7 +133,6 @@ struct kvm_kernel_irq_routing_entry { | |||
| 124 | }; | 133 | }; |
| 125 | 134 | ||
| 126 | struct kvm { | 135 | struct kvm { |
| 127 | struct mutex lock; /* protects the vcpus array and APIC accesses */ | ||
| 128 | spinlock_t mmu_lock; | 136 | spinlock_t mmu_lock; |
| 129 | spinlock_t requests_lock; | 137 | spinlock_t requests_lock; |
| 130 | struct rw_semaphore slots_lock; | 138 | struct rw_semaphore slots_lock; |
| @@ -132,10 +140,23 @@ struct kvm { | |||
| 132 | int nmemslots; | 140 | int nmemslots; |
| 133 | struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS + | 141 | struct kvm_memory_slot memslots[KVM_MEMORY_SLOTS + |
| 134 | KVM_PRIVATE_MEM_SLOTS]; | 142 | KVM_PRIVATE_MEM_SLOTS]; |
| 143 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | ||
| 144 | u32 bsp_vcpu_id; | ||
| 145 | struct kvm_vcpu *bsp_vcpu; | ||
| 146 | #endif | ||
| 135 | struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; | 147 | struct kvm_vcpu *vcpus[KVM_MAX_VCPUS]; |
| 148 | atomic_t online_vcpus; | ||
| 136 | struct list_head vm_list; | 149 | struct list_head vm_list; |
| 150 | struct mutex lock; | ||
| 137 | struct kvm_io_bus mmio_bus; | 151 | struct kvm_io_bus mmio_bus; |
| 138 | struct kvm_io_bus pio_bus; | 152 | struct kvm_io_bus pio_bus; |
| 153 | #ifdef CONFIG_HAVE_KVM_EVENTFD | ||
| 154 | struct { | ||
| 155 | spinlock_t lock; | ||
| 156 | struct list_head items; | ||
| 157 | } irqfds; | ||
| 158 | struct list_head ioeventfds; | ||
| 159 | #endif | ||
| 139 | struct kvm_vm_stat stat; | 160 | struct kvm_vm_stat stat; |
| 140 | struct kvm_arch arch; | 161 | struct kvm_arch arch; |
| 141 | atomic_t users_count; | 162 | atomic_t users_count; |
| @@ -144,6 +165,7 @@ struct kvm { | |||
| 144 | struct kvm_coalesced_mmio_ring *coalesced_mmio_ring; | 165 | struct kvm_coalesced_mmio_ring *coalesced_mmio_ring; |
| 145 | #endif | 166 | #endif |
| 146 | 167 | ||
| 168 | struct mutex irq_lock; | ||
| 147 | #ifdef CONFIG_HAVE_KVM_IRQCHIP | 169 | #ifdef CONFIG_HAVE_KVM_IRQCHIP |
| 148 | struct list_head irq_routing; /* of kvm_kernel_irq_routing_entry */ | 170 | struct list_head irq_routing; /* of kvm_kernel_irq_routing_entry */ |
| 149 | struct hlist_head mask_notifier_list; | 171 | struct hlist_head mask_notifier_list; |
| @@ -167,6 +189,17 @@ struct kvm { | |||
| 167 | #define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt) | 189 | #define kvm_printf(kvm, fmt ...) printk(KERN_DEBUG fmt) |
| 168 | #define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt) | 190 | #define vcpu_printf(vcpu, fmt...) kvm_printf(vcpu->kvm, fmt) |
| 169 | 191 | ||
| 192 | static inline struct kvm_vcpu *kvm_get_vcpu(struct kvm *kvm, int i) | ||
| 193 | { | ||
| 194 | smp_rmb(); | ||
| 195 | return kvm->vcpus[i]; | ||
| 196 | } | ||
| 197 | |||
| 198 | #define kvm_for_each_vcpu(idx, vcpup, kvm) \ | ||
| 199 | for (idx = 0, vcpup = kvm_get_vcpu(kvm, idx); \ | ||
| 200 | idx < atomic_read(&kvm->online_vcpus) && vcpup; \ | ||
| 201 | vcpup = kvm_get_vcpu(kvm, ++idx)) | ||
| 202 | |||
| 170 | int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id); | 203 | int kvm_vcpu_init(struct kvm_vcpu *vcpu, struct kvm *kvm, unsigned id); |
| 171 | void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); | 204 | void kvm_vcpu_uninit(struct kvm_vcpu *vcpu); |
| 172 | 205 | ||
| @@ -201,6 +234,7 @@ int kvm_arch_set_memory_region(struct kvm *kvm, | |||
| 201 | struct kvm_userspace_memory_region *mem, | 234 | struct kvm_userspace_memory_region *mem, |
| 202 | struct kvm_memory_slot old, | 235 | struct kvm_memory_slot old, |
| 203 | int user_alloc); | 236 | int user_alloc); |
| 237 | void kvm_disable_largepages(void); | ||
| 204 | void kvm_arch_flush_shadow(struct kvm *kvm); | 238 | void kvm_arch_flush_shadow(struct kvm *kvm); |
| 205 | gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn); | 239 | gfn_t unalias_gfn(struct kvm *kvm, gfn_t gfn); |
| 206 | struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn); | 240 | struct page *gfn_to_page(struct kvm *kvm, gfn_t gfn); |
| @@ -243,8 +277,6 @@ long kvm_arch_dev_ioctl(struct file *filp, | |||
| 243 | unsigned int ioctl, unsigned long arg); | 277 | unsigned int ioctl, unsigned long arg); |
| 244 | long kvm_arch_vcpu_ioctl(struct file *filp, | 278 | long kvm_arch_vcpu_ioctl(struct file *filp, |
| 245 | unsigned int ioctl, unsigned long arg); | 279 | unsigned int ioctl, unsigned long arg); |
| 246 | void kvm_arch_vcpu_load(struct kvm_vcpu *vcpu, int cpu); | ||
| 247 | void kvm_arch_vcpu_put(struct kvm_vcpu *vcpu); | ||
| 248 | 280 | ||
| 249 | int kvm_dev_ioctl_check_extension(long ext); | 281 | int kvm_dev_ioctl_check_extension(long ext); |
| 250 | 282 | ||
| @@ -300,7 +332,6 @@ int kvm_arch_hardware_setup(void); | |||
| 300 | void kvm_arch_hardware_unsetup(void); | 332 | void kvm_arch_hardware_unsetup(void); |
| 301 | void kvm_arch_check_processor_compat(void *rtn); | 333 | void kvm_arch_check_processor_compat(void *rtn); |
| 302 | int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); | 334 | int kvm_arch_vcpu_runnable(struct kvm_vcpu *vcpu); |
| 303 | int kvm_arch_interrupt_allowed(struct kvm_vcpu *vcpu); | ||
| 304 | 335 | ||
| 305 | void kvm_free_physmem(struct kvm *kvm); | 336 | void kvm_free_physmem(struct kvm *kvm); |
| 306 | 337 | ||
| @@ -309,8 +340,6 @@ void kvm_arch_destroy_vm(struct kvm *kvm); | |||
| 309 | void kvm_free_all_assigned_devices(struct kvm *kvm); | 340 | void kvm_free_all_assigned_devices(struct kvm *kvm); |
| 310 | void kvm_arch_sync_events(struct kvm *kvm); | 341 | void kvm_arch_sync_events(struct kvm *kvm); |
| 311 | 342 | ||
| 312 | int kvm_cpu_get_interrupt(struct kvm_vcpu *v); | ||
| 313 | int kvm_cpu_has_interrupt(struct kvm_vcpu *v); | ||
| 314 | int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu); | 343 | int kvm_cpu_has_pending_timer(struct kvm_vcpu *vcpu); |
| 315 | void kvm_vcpu_kick(struct kvm_vcpu *vcpu); | 344 | void kvm_vcpu_kick(struct kvm_vcpu *vcpu); |
| 316 | 345 | ||
| @@ -366,7 +395,8 @@ int kvm_set_irq(struct kvm *kvm, int irq_source_id, int irq, int level); | |||
| 366 | void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin); | 395 | void kvm_notify_acked_irq(struct kvm *kvm, unsigned irqchip, unsigned pin); |
| 367 | void kvm_register_irq_ack_notifier(struct kvm *kvm, | 396 | void kvm_register_irq_ack_notifier(struct kvm *kvm, |
| 368 | struct kvm_irq_ack_notifier *kian); | 397 | struct kvm_irq_ack_notifier *kian); |
| 369 | void kvm_unregister_irq_ack_notifier(struct kvm_irq_ack_notifier *kian); | 398 | void kvm_unregister_irq_ack_notifier(struct kvm *kvm, |
| 399 | struct kvm_irq_ack_notifier *kian); | ||
| 370 | int kvm_request_irq_source_id(struct kvm *kvm); | 400 | int kvm_request_irq_source_id(struct kvm *kvm); |
| 371 | void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id); | 401 | void kvm_free_irq_source_id(struct kvm *kvm, int irq_source_id); |
| 372 | 402 | ||
| @@ -459,37 +489,6 @@ struct kvm_stats_debugfs_item { | |||
| 459 | extern struct kvm_stats_debugfs_item debugfs_entries[]; | 489 | extern struct kvm_stats_debugfs_item debugfs_entries[]; |
| 460 | extern struct dentry *kvm_debugfs_dir; | 490 | extern struct dentry *kvm_debugfs_dir; |
| 461 | 491 | ||
| 462 | #define KVMTRACE_5D(evt, vcpu, d1, d2, d3, d4, d5, name) \ | ||
| 463 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 464 | vcpu, 5, d1, d2, d3, d4, d5) | ||
| 465 | #define KVMTRACE_4D(evt, vcpu, d1, d2, d3, d4, name) \ | ||
| 466 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 467 | vcpu, 4, d1, d2, d3, d4, 0) | ||
| 468 | #define KVMTRACE_3D(evt, vcpu, d1, d2, d3, name) \ | ||
| 469 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 470 | vcpu, 3, d1, d2, d3, 0, 0) | ||
| 471 | #define KVMTRACE_2D(evt, vcpu, d1, d2, name) \ | ||
| 472 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 473 | vcpu, 2, d1, d2, 0, 0, 0) | ||
| 474 | #define KVMTRACE_1D(evt, vcpu, d1, name) \ | ||
| 475 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 476 | vcpu, 1, d1, 0, 0, 0, 0) | ||
| 477 | #define KVMTRACE_0D(evt, vcpu, name) \ | ||
| 478 | trace_mark(kvm_trace_##name, "%u %p %u %u %u %u %u %u", KVM_TRC_##evt, \ | ||
| 479 | vcpu, 0, 0, 0, 0, 0, 0) | ||
| 480 | |||
| 481 | #ifdef CONFIG_KVM_TRACE | ||
| 482 | int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg); | ||
| 483 | void kvm_trace_cleanup(void); | ||
| 484 | #else | ||
| 485 | static inline | ||
| 486 | int kvm_trace_ioctl(unsigned int ioctl, unsigned long arg) | ||
| 487 | { | ||
| 488 | return -EINVAL; | ||
| 489 | } | ||
| 490 | #define kvm_trace_cleanup() ((void)0) | ||
| 491 | #endif | ||
| 492 | |||
| 493 | #ifdef KVM_ARCH_WANT_MMU_NOTIFIER | 492 | #ifdef KVM_ARCH_WANT_MMU_NOTIFIER |
| 494 | static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_seq) | 493 | static inline int mmu_notifier_retry(struct kvm_vcpu *vcpu, unsigned long mmu_seq) |
| 495 | { | 494 | { |
| @@ -525,4 +524,33 @@ static inline void kvm_free_irq_routing(struct kvm *kvm) {} | |||
| 525 | 524 | ||
| 526 | #endif | 525 | #endif |
| 527 | 526 | ||
| 527 | #ifdef CONFIG_HAVE_KVM_EVENTFD | ||
| 528 | |||
| 529 | void kvm_eventfd_init(struct kvm *kvm); | ||
| 530 | int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags); | ||
| 531 | void kvm_irqfd_release(struct kvm *kvm); | ||
| 532 | int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args); | ||
| 533 | |||
| 534 | #else | ||
| 535 | |||
| 536 | static inline void kvm_eventfd_init(struct kvm *kvm) {} | ||
| 537 | static inline int kvm_irqfd(struct kvm *kvm, int fd, int gsi, int flags) | ||
| 538 | { | ||
| 539 | return -EINVAL; | ||
| 540 | } | ||
| 541 | |||
| 542 | static inline void kvm_irqfd_release(struct kvm *kvm) {} | ||
| 543 | static inline int kvm_ioeventfd(struct kvm *kvm, struct kvm_ioeventfd *args) | ||
| 544 | { | ||
| 545 | return -ENOSYS; | ||
| 546 | } | ||
| 547 | |||
| 548 | #endif /* CONFIG_HAVE_KVM_EVENTFD */ | ||
| 549 | |||
| 550 | #ifdef CONFIG_KVM_APIC_ARCHITECTURE | ||
| 551 | static inline bool kvm_vcpu_is_bsp(struct kvm_vcpu *vcpu) | ||
| 552 | { | ||
| 553 | return vcpu->kvm->bsp_vcpu_id == vcpu->vcpu_id; | ||
| 554 | } | ||
| 555 | #endif | ||
| 528 | #endif | 556 | #endif |
diff --git a/include/linux/kvm_para.h b/include/linux/kvm_para.h index 3ddce03766ca..d73109243fda 100644 --- a/include/linux/kvm_para.h +++ b/include/linux/kvm_para.h | |||
| @@ -13,6 +13,7 @@ | |||
| 13 | #define KVM_ENOSYS 1000 | 13 | #define KVM_ENOSYS 1000 |
| 14 | #define KVM_EFAULT EFAULT | 14 | #define KVM_EFAULT EFAULT |
| 15 | #define KVM_E2BIG E2BIG | 15 | #define KVM_E2BIG E2BIG |
| 16 | #define KVM_EPERM EPERM | ||
| 16 | 17 | ||
| 17 | #define KVM_HC_VAPIC_POLL_IRQ 1 | 18 | #define KVM_HC_VAPIC_POLL_IRQ 1 |
| 18 | #define KVM_HC_MMU_OP 2 | 19 | #define KVM_HC_MMU_OP 2 |
diff --git a/include/linux/libps2.h b/include/linux/libps2.h index b94534b7e266..fcf5fbe6a50c 100644 --- a/include/linux/libps2.h +++ b/include/linux/libps2.h | |||
| @@ -44,6 +44,7 @@ struct ps2dev { | |||
| 44 | void ps2_init(struct ps2dev *ps2dev, struct serio *serio); | 44 | void ps2_init(struct ps2dev *ps2dev, struct serio *serio); |
| 45 | int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout); | 45 | int ps2_sendbyte(struct ps2dev *ps2dev, unsigned char byte, int timeout); |
| 46 | void ps2_drain(struct ps2dev *ps2dev, int maxbytes, int timeout); | 46 | void ps2_drain(struct ps2dev *ps2dev, int maxbytes, int timeout); |
| 47 | int __ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); | ||
| 47 | int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); | 48 | int ps2_command(struct ps2dev *ps2dev, unsigned char *param, int command); |
| 48 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); | 49 | int ps2_handle_ack(struct ps2dev *ps2dev, unsigned char data); |
| 49 | int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data); | 50 | int ps2_handle_response(struct ps2dev *ps2dev, unsigned char data); |
diff --git a/include/linux/mISDNhw.h b/include/linux/mISDNhw.h index 7f9831da847f..4af841408fb5 100644 --- a/include/linux/mISDNhw.h +++ b/include/linux/mISDNhw.h | |||
| @@ -168,6 +168,7 @@ struct bchannel { | |||
| 168 | extern int mISDN_initdchannel(struct dchannel *, int, void *); | 168 | extern int mISDN_initdchannel(struct dchannel *, int, void *); |
| 169 | extern int mISDN_initbchannel(struct bchannel *, int); | 169 | extern int mISDN_initbchannel(struct bchannel *, int); |
| 170 | extern int mISDN_freedchannel(struct dchannel *); | 170 | extern int mISDN_freedchannel(struct dchannel *); |
| 171 | extern void mISDN_clear_bchannel(struct bchannel *); | ||
| 171 | extern int mISDN_freebchannel(struct bchannel *); | 172 | extern int mISDN_freebchannel(struct bchannel *); |
| 172 | extern void queue_ch_frame(struct mISDNchannel *, u_int, | 173 | extern void queue_ch_frame(struct mISDNchannel *, u_int, |
| 173 | int, struct sk_buff *); | 174 | int, struct sk_buff *); |
diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h index 45100b39a7cf..536ca12442ca 100644 --- a/include/linux/mISDNif.h +++ b/include/linux/mISDNif.h | |||
| @@ -37,7 +37,7 @@ | |||
| 37 | */ | 37 | */ |
| 38 | #define MISDN_MAJOR_VERSION 1 | 38 | #define MISDN_MAJOR_VERSION 1 |
| 39 | #define MISDN_MINOR_VERSION 1 | 39 | #define MISDN_MINOR_VERSION 1 |
| 40 | #define MISDN_RELEASE 20 | 40 | #define MISDN_RELEASE 21 |
| 41 | 41 | ||
| 42 | /* primitives for information exchange | 42 | /* primitives for information exchange |
| 43 | * generell format | 43 | * generell format |
| @@ -153,6 +153,18 @@ | |||
| 153 | #define HFC_VOL_CHANGE_RX 0x2602 | 153 | #define HFC_VOL_CHANGE_RX 0x2602 |
| 154 | #define HFC_SPL_LOOP_ON 0x2603 | 154 | #define HFC_SPL_LOOP_ON 0x2603 |
| 155 | #define HFC_SPL_LOOP_OFF 0x2604 | 155 | #define HFC_SPL_LOOP_OFF 0x2604 |
| 156 | /* for T30 FAX and analog modem */ | ||
| 157 | #define HW_MOD_FRM 0x4000 | ||
| 158 | #define HW_MOD_FRH 0x4001 | ||
| 159 | #define HW_MOD_FTM 0x4002 | ||
| 160 | #define HW_MOD_FTH 0x4003 | ||
| 161 | #define HW_MOD_FTS 0x4004 | ||
| 162 | #define HW_MOD_CONNECT 0x4010 | ||
| 163 | #define HW_MOD_OK 0x4011 | ||
| 164 | #define HW_MOD_NOCARR 0x4012 | ||
| 165 | #define HW_MOD_FCERROR 0x4013 | ||
| 166 | #define HW_MOD_READY 0x4014 | ||
| 167 | #define HW_MOD_LASTDATA 0x4015 | ||
| 156 | 168 | ||
| 157 | /* DSP_TONE_PATT_ON parameter */ | 169 | /* DSP_TONE_PATT_ON parameter */ |
| 158 | #define TONE_OFF 0x0000 | 170 | #define TONE_OFF 0x0000 |
| @@ -224,6 +236,8 @@ | |||
| 224 | #define ISDN_P_B_L2DTMF 0x24 | 236 | #define ISDN_P_B_L2DTMF 0x24 |
| 225 | #define ISDN_P_B_L2DSP 0x25 | 237 | #define ISDN_P_B_L2DSP 0x25 |
| 226 | #define ISDN_P_B_L2DSPHDLC 0x26 | 238 | #define ISDN_P_B_L2DSPHDLC 0x26 |
| 239 | #define ISDN_P_B_T30_FAX 0x27 | ||
| 240 | #define ISDN_P_B_MODEM_ASYNC 0x28 | ||
| 227 | 241 | ||
| 228 | #define OPTION_L2_PMX 1 | 242 | #define OPTION_L2_PMX 1 |
| 229 | #define OPTION_L2_PTP 2 | 243 | #define OPTION_L2_PTP 2 |
diff --git a/include/linux/mdio.h b/include/linux/mdio.h index cfdf1df2875e..c779b49a1fda 100644 --- a/include/linux/mdio.h +++ b/include/linux/mdio.h | |||
| @@ -304,7 +304,7 @@ static inline __u16 mdio_phy_id_devad(int phy_id) | |||
| 304 | */ | 304 | */ |
| 305 | struct mdio_if_info { | 305 | struct mdio_if_info { |
| 306 | int prtad; | 306 | int prtad; |
| 307 | u32 __bitwise mmds; | 307 | u32 mmds; |
| 308 | unsigned mode_support; | 308 | unsigned mode_support; |
| 309 | 309 | ||
| 310 | struct net_device *dev; | 310 | struct net_device *dev; |
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 39751c8cde9c..2dbfb5a05994 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h | |||
| @@ -22,6 +22,12 @@ | |||
| 22 | /* | 22 | /* |
| 23 | * Vendors and devices. Sort key: vendor first, device next. | 23 | * Vendors and devices. Sort key: vendor first, device next. |
| 24 | */ | 24 | */ |
| 25 | #define SDIO_VENDOR_ID_INTEL 0x0089 | ||
| 26 | #define SDIO_DEVICE_ID_INTEL_IWMC3200WIMAX 0x1402 | ||
| 27 | #define SDIO_DEVICE_ID_INTEL_IWMC3200WIFI 0x1403 | ||
| 28 | #define SDIO_DEVICE_ID_INTEL_IWMC3200TOP 0x1404 | ||
| 29 | #define SDIO_DEVICE_ID_INTEL_IWMC3200GPS 0x1405 | ||
| 30 | #define SDIO_DEVICE_ID_INTEL_IWMC3200BT 0x1406 | ||
| 25 | 31 | ||
| 26 | #define SDIO_VENDOR_ID_MARVELL 0x02df | 32 | #define SDIO_VENDOR_ID_MARVELL 0x02df |
| 27 | #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 | 33 | #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 |
diff --git a/include/linux/mtd/partitions.h b/include/linux/mtd/partitions.h index b70313d33ff8..274b6196091d 100644 --- a/include/linux/mtd/partitions.h +++ b/include/linux/mtd/partitions.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * MTD partitioning layer definitions | 2 | * MTD partitioning layer definitions |
| 3 | * | 3 | * |
| 4 | * (C) 2000 Nicolas Pitre <nico@cam.org> | 4 | * (C) 2000 Nicolas Pitre <nico@fluxnic.net> |
| 5 | * | 5 | * |
| 6 | * This code is GPL | 6 | * This code is GPL |
| 7 | */ | 7 | */ |
diff --git a/include/linux/net.h b/include/linux/net.h index 4fc2ffd527f9..9040a10584f7 100644 --- a/include/linux/net.h +++ b/include/linux/net.h | |||
| @@ -57,6 +57,7 @@ typedef enum { | |||
| 57 | #include <linux/random.h> | 57 | #include <linux/random.h> |
| 58 | #include <linux/wait.h> | 58 | #include <linux/wait.h> |
| 59 | #include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */ | 59 | #include <linux/fcntl.h> /* For O_CLOEXEC and O_NONBLOCK */ |
| 60 | #include <linux/kmemcheck.h> | ||
| 60 | 61 | ||
| 61 | struct poll_table_struct; | 62 | struct poll_table_struct; |
| 62 | struct pipe_inode_info; | 63 | struct pipe_inode_info; |
| @@ -127,7 +128,11 @@ enum sock_shutdown_cmd { | |||
| 127 | */ | 128 | */ |
| 128 | struct socket { | 129 | struct socket { |
| 129 | socket_state state; | 130 | socket_state state; |
| 131 | |||
| 132 | kmemcheck_bitfield_begin(type); | ||
| 130 | short type; | 133 | short type; |
| 134 | kmemcheck_bitfield_end(type); | ||
| 135 | |||
| 131 | unsigned long flags; | 136 | unsigned long flags; |
| 132 | /* | 137 | /* |
| 133 | * Please keep fasync_list & wait fields in the same cache line | 138 | * Please keep fasync_list & wait fields in the same cache line |
diff --git a/include/linux/net_dropmon.h b/include/linux/net_dropmon.h index 3ceb0cc1bc78..2a739462caeb 100644 --- a/include/linux/net_dropmon.h +++ b/include/linux/net_dropmon.h | |||
| @@ -3,7 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | #include <linux/netlink.h> | 5 | #include <linux/netlink.h> |
| 6 | #include <linux/types.h> | ||
| 7 | 6 | ||
| 8 | struct net_dm_drop_point { | 7 | struct net_dm_drop_point { |
| 9 | __u8 pc[8]; | 8 | __u8 pc[8]; |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index d4a4d9867794..94958c109761 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -72,10 +72,6 @@ struct wireless_dev; | |||
| 72 | /* Backlog congestion levels */ | 72 | /* Backlog congestion levels */ |
| 73 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ | 73 | #define NET_RX_SUCCESS 0 /* keep 'em coming, baby */ |
| 74 | #define NET_RX_DROP 1 /* packet dropped */ | 74 | #define NET_RX_DROP 1 /* packet dropped */ |
| 75 | #define NET_RX_CN_LOW 2 /* storm alert, just in case */ | ||
| 76 | #define NET_RX_CN_MOD 3 /* Storm on its way! */ | ||
| 77 | #define NET_RX_CN_HIGH 4 /* The storm is here */ | ||
| 78 | #define NET_RX_BAD 5 /* packet dropped due to kernel error */ | ||
| 79 | 75 | ||
| 80 | /* NET_XMIT_CN is special. It does not guarantee that this packet is lost. It | 76 | /* NET_XMIT_CN is special. It does not guarantee that this packet is lost. It |
| 81 | * indicates that the device will soon be dropping packets, or already drops | 77 | * indicates that the device will soon be dropping packets, or already drops |
| @@ -83,17 +79,19 @@ struct wireless_dev; | |||
| 83 | #define net_xmit_eval(e) ((e) == NET_XMIT_CN? 0 : (e)) | 79 | #define net_xmit_eval(e) ((e) == NET_XMIT_CN? 0 : (e)) |
| 84 | #define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0) | 80 | #define net_xmit_errno(e) ((e) != NET_XMIT_CN ? -ENOBUFS : 0) |
| 85 | 81 | ||
| 82 | /* Driver transmit return codes */ | ||
| 83 | enum netdev_tx { | ||
| 84 | NETDEV_TX_OK = 0, /* driver took care of packet */ | ||
| 85 | NETDEV_TX_BUSY, /* driver tx path was busy*/ | ||
| 86 | NETDEV_TX_LOCKED = -1, /* driver tx lock was already taken */ | ||
| 87 | }; | ||
| 88 | typedef enum netdev_tx netdev_tx_t; | ||
| 89 | |||
| 86 | #endif | 90 | #endif |
| 87 | 91 | ||
| 88 | #define MAX_ADDR_LEN 32 /* Largest hardware address length */ | 92 | #define MAX_ADDR_LEN 32 /* Largest hardware address length */ |
| 89 | 93 | ||
| 90 | /* Driver transmit return codes */ | ||
| 91 | #define NETDEV_TX_OK 0 /* driver took care of packet */ | ||
| 92 | #define NETDEV_TX_BUSY 1 /* driver tx path was busy*/ | ||
| 93 | #define NETDEV_TX_LOCKED -1 /* driver tx lock was already taken */ | ||
| 94 | |||
| 95 | #ifdef __KERNEL__ | 94 | #ifdef __KERNEL__ |
| 96 | |||
| 97 | /* | 95 | /* |
| 98 | * Compute the worst case header length according to the protocols | 96 | * Compute the worst case header length according to the protocols |
| 99 | * used. | 97 | * used. |
| @@ -511,9 +509,11 @@ struct netdev_queue { | |||
| 511 | * This function is called when network device transistions to the down | 509 | * This function is called when network device transistions to the down |
| 512 | * state. | 510 | * state. |
| 513 | * | 511 | * |
| 514 | * int (*ndo_start_xmit)(struct sk_buff *skb, struct net_device *dev); | 512 | * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, |
| 513 | * struct net_device *dev); | ||
| 515 | * Called when a packet needs to be transmitted. | 514 | * Called when a packet needs to be transmitted. |
| 516 | * Must return NETDEV_TX_OK , NETDEV_TX_BUSY, or NETDEV_TX_LOCKED, | 515 | * Must return NETDEV_TX_OK , NETDEV_TX_BUSY. |
| 516 | * (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX) | ||
| 517 | * Required can not be NULL. | 517 | * Required can not be NULL. |
| 518 | * | 518 | * |
| 519 | * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb); | 519 | * u16 (*ndo_select_queue)(struct net_device *dev, struct sk_buff *skb); |
| @@ -584,7 +584,7 @@ struct net_device_ops { | |||
| 584 | void (*ndo_uninit)(struct net_device *dev); | 584 | void (*ndo_uninit)(struct net_device *dev); |
| 585 | int (*ndo_open)(struct net_device *dev); | 585 | int (*ndo_open)(struct net_device *dev); |
| 586 | int (*ndo_stop)(struct net_device *dev); | 586 | int (*ndo_stop)(struct net_device *dev); |
| 587 | int (*ndo_start_xmit) (struct sk_buff *skb, | 587 | netdev_tx_t (*ndo_start_xmit) (struct sk_buff *skb, |
| 588 | struct net_device *dev); | 588 | struct net_device *dev); |
| 589 | u16 (*ndo_select_queue)(struct net_device *dev, | 589 | u16 (*ndo_select_queue)(struct net_device *dev, |
| 590 | struct sk_buff *skb); | 590 | struct sk_buff *skb); |
| @@ -627,6 +627,8 @@ struct net_device_ops { | |||
| 627 | void (*ndo_poll_controller)(struct net_device *dev); | 627 | void (*ndo_poll_controller)(struct net_device *dev); |
| 628 | #endif | 628 | #endif |
| 629 | #if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) | 629 | #if defined(CONFIG_FCOE) || defined(CONFIG_FCOE_MODULE) |
| 630 | int (*ndo_fcoe_enable)(struct net_device *dev); | ||
| 631 | int (*ndo_fcoe_disable)(struct net_device *dev); | ||
| 630 | int (*ndo_fcoe_ddp_setup)(struct net_device *dev, | 632 | int (*ndo_fcoe_ddp_setup)(struct net_device *dev, |
| 631 | u16 xid, | 633 | u16 xid, |
| 632 | struct scatterlist *sgl, | 634 | struct scatterlist *sgl, |
| @@ -705,6 +707,7 @@ struct net_device | |||
| 705 | /* the GSO_MASK reserves bits 16 through 23 */ | 707 | /* the GSO_MASK reserves bits 16 through 23 */ |
| 706 | #define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */ | 708 | #define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */ |
| 707 | #define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */ | 709 | #define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */ |
| 710 | #define NETIF_F_FCOE_MTU (1 << 26) /* Supports max FCoE MTU, 2158 bytes*/ | ||
| 708 | 711 | ||
| 709 | /* Segmentation offload features */ | 712 | /* Segmentation offload features */ |
| 710 | #define NETIF_F_GSO_SHIFT 16 | 713 | #define NETIF_F_GSO_SHIFT 16 |
| @@ -829,6 +832,9 @@ struct net_device | |||
| 829 | /* Number of TX queues currently active in device */ | 832 | /* Number of TX queues currently active in device */ |
| 830 | unsigned int real_num_tx_queues; | 833 | unsigned int real_num_tx_queues; |
| 831 | 834 | ||
| 835 | /* root qdisc from userspace point of view */ | ||
| 836 | struct Qdisc *qdisc; | ||
| 837 | |||
| 832 | unsigned long tx_queue_len; /* Max frames per queue allowed */ | 838 | unsigned long tx_queue_len; /* Max frames per queue allowed */ |
| 833 | spinlock_t tx_global_lock; | 839 | spinlock_t tx_global_lock; |
| 834 | /* | 840 | /* |
| @@ -889,7 +895,7 @@ struct net_device | |||
| 889 | /* class/net/name entry */ | 895 | /* class/net/name entry */ |
| 890 | struct device dev; | 896 | struct device dev; |
| 891 | /* space for optional statistics and wireless sysfs groups */ | 897 | /* space for optional statistics and wireless sysfs groups */ |
| 892 | struct attribute_group *sysfs_groups[3]; | 898 | const struct attribute_group *sysfs_groups[3]; |
| 893 | 899 | ||
| 894 | /* rtnetlink link ops */ | 900 | /* rtnetlink link ops */ |
| 895 | const struct rtnl_link_ops *rtnl_link_ops; | 901 | const struct rtnl_link_ops *rtnl_link_ops; |
| @@ -992,6 +998,12 @@ static inline void *netdev_priv(const struct net_device *dev) | |||
| 992 | */ | 998 | */ |
| 993 | #define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev)) | 999 | #define SET_NETDEV_DEV(net, pdev) ((net)->dev.parent = (pdev)) |
| 994 | 1000 | ||
| 1001 | /* Set the sysfs device type for the network logical device to allow | ||
| 1002 | * fin grained indentification of different network device types. For | ||
| 1003 | * example Ethernet, Wirelss LAN, Bluetooth, WiMAX etc. | ||
| 1004 | */ | ||
| 1005 | #define SET_NETDEV_DEVTYPE(net, devtype) ((net)->dev.type = (devtype)) | ||
| 1006 | |||
| 995 | /** | 1007 | /** |
| 996 | * netif_napi_add - initialize a napi context | 1008 | * netif_napi_add - initialize a napi context |
| 997 | * @dev: network device | 1009 | * @dev: network device |
| @@ -1260,7 +1272,7 @@ static inline void netif_tx_wake_queue(struct netdev_queue *dev_queue) | |||
| 1260 | { | 1272 | { |
| 1261 | #ifdef CONFIG_NETPOLL_TRAP | 1273 | #ifdef CONFIG_NETPOLL_TRAP |
| 1262 | if (netpoll_trap()) { | 1274 | if (netpoll_trap()) { |
| 1263 | clear_bit(__QUEUE_STATE_XOFF, &dev_queue->state); | 1275 | netif_tx_start_queue(dev_queue); |
| 1264 | return; | 1276 | return; |
| 1265 | } | 1277 | } |
| 1266 | #endif | 1278 | #endif |
| @@ -1366,7 +1378,8 @@ static inline int netif_running(const struct net_device *dev) | |||
| 1366 | static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index) | 1378 | static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index) |
| 1367 | { | 1379 | { |
| 1368 | struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); | 1380 | struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); |
| 1369 | clear_bit(__QUEUE_STATE_XOFF, &txq->state); | 1381 | |
| 1382 | netif_tx_start_queue(txq); | ||
| 1370 | } | 1383 | } |
| 1371 | 1384 | ||
| 1372 | /** | 1385 | /** |
| @@ -1383,7 +1396,7 @@ static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index) | |||
| 1383 | if (netpoll_trap()) | 1396 | if (netpoll_trap()) |
| 1384 | return; | 1397 | return; |
| 1385 | #endif | 1398 | #endif |
| 1386 | set_bit(__QUEUE_STATE_XOFF, &txq->state); | 1399 | netif_tx_stop_queue(txq); |
| 1387 | } | 1400 | } |
| 1388 | 1401 | ||
| 1389 | /** | 1402 | /** |
| @@ -1397,7 +1410,8 @@ static inline int __netif_subqueue_stopped(const struct net_device *dev, | |||
| 1397 | u16 queue_index) | 1410 | u16 queue_index) |
| 1398 | { | 1411 | { |
| 1399 | struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); | 1412 | struct netdev_queue *txq = netdev_get_tx_queue(dev, queue_index); |
| 1400 | return test_bit(__QUEUE_STATE_XOFF, &txq->state); | 1413 | |
| 1414 | return netif_tx_queue_stopped(txq); | ||
| 1401 | } | 1415 | } |
| 1402 | 1416 | ||
| 1403 | static inline int netif_subqueue_stopped(const struct net_device *dev, | 1417 | static inline int netif_subqueue_stopped(const struct net_device *dev, |
| @@ -1749,8 +1763,7 @@ static inline void netif_tx_unlock(struct net_device *dev) | |||
| 1749 | * force a schedule. | 1763 | * force a schedule. |
| 1750 | */ | 1764 | */ |
| 1751 | clear_bit(__QUEUE_STATE_FROZEN, &txq->state); | 1765 | clear_bit(__QUEUE_STATE_FROZEN, &txq->state); |
| 1752 | if (!test_bit(__QUEUE_STATE_XOFF, &txq->state)) | 1766 | netif_schedule_queue(txq); |
| 1753 | __netif_schedule(txq->qdisc); | ||
| 1754 | } | 1767 | } |
| 1755 | spin_unlock(&dev->tx_global_lock); | 1768 | spin_unlock(&dev->tx_global_lock); |
| 1756 | } | 1769 | } |
| @@ -1860,7 +1873,8 @@ extern void __dev_addr_unsync(struct dev_addr_list **to, int *to_count, struct | |||
| 1860 | extern int dev_set_promiscuity(struct net_device *dev, int inc); | 1873 | extern int dev_set_promiscuity(struct net_device *dev, int inc); |
| 1861 | extern int dev_set_allmulti(struct net_device *dev, int inc); | 1874 | extern int dev_set_allmulti(struct net_device *dev, int inc); |
| 1862 | extern void netdev_state_change(struct net_device *dev); | 1875 | extern void netdev_state_change(struct net_device *dev); |
| 1863 | extern void netdev_bonding_change(struct net_device *dev); | 1876 | extern void netdev_bonding_change(struct net_device *dev, |
| 1877 | unsigned long event); | ||
| 1864 | extern void netdev_features_change(struct net_device *dev); | 1878 | extern void netdev_features_change(struct net_device *dev); |
| 1865 | /* Load a device via the kmod */ | 1879 | /* Load a device via the kmod */ |
| 1866 | extern void dev_load(struct net *net, const char *name); | 1880 | extern void dev_load(struct net *net, const char *name); |
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index bff4d5741d98..9f00da287f2c 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h | |||
| @@ -58,7 +58,8 @@ struct nfgenmsg { | |||
| 58 | struct nfnl_callback | 58 | struct nfnl_callback |
| 59 | { | 59 | { |
| 60 | int (*call)(struct sock *nl, struct sk_buff *skb, | 60 | int (*call)(struct sock *nl, struct sk_buff *skb, |
| 61 | struct nlmsghdr *nlh, struct nlattr *cda[]); | 61 | const struct nlmsghdr *nlh, |
| 62 | const struct nlattr * const cda[]); | ||
| 62 | const struct nla_policy *policy; /* netlink attribute policy */ | 63 | const struct nla_policy *policy; /* netlink attribute policy */ |
| 63 | const u_int16_t attr_count; /* number of nlattr's */ | 64 | const u_int16_t attr_count; /* number of nlattr's */ |
| 64 | }; | 65 | }; |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index 1030b7593898..812cb153cabb 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
| @@ -238,9 +238,9 @@ struct xt_mtdtor_param { | |||
| 238 | */ | 238 | */ |
| 239 | struct xt_target_param { | 239 | struct xt_target_param { |
| 240 | const struct net_device *in, *out; | 240 | const struct net_device *in, *out; |
| 241 | unsigned int hooknum; | ||
| 242 | const struct xt_target *target; | 241 | const struct xt_target *target; |
| 243 | const void *targinfo; | 242 | const void *targinfo; |
| 243 | unsigned int hooknum; | ||
| 244 | u_int8_t family; | 244 | u_int8_t family; |
| 245 | }; | 245 | }; |
| 246 | 246 | ||
| @@ -407,7 +407,7 @@ extern int xt_check_target(struct xt_tgchk_param *, | |||
| 407 | unsigned int size, u_int8_t proto, bool inv_proto); | 407 | unsigned int size, u_int8_t proto, bool inv_proto); |
| 408 | 408 | ||
| 409 | extern struct xt_table *xt_register_table(struct net *net, | 409 | extern struct xt_table *xt_register_table(struct net *net, |
| 410 | struct xt_table *table, | 410 | const struct xt_table *table, |
| 411 | struct xt_table_info *bootstrap, | 411 | struct xt_table_info *bootstrap, |
| 412 | struct xt_table_info *newinfo); | 412 | struct xt_table_info *newinfo); |
| 413 | extern void *xt_unregister_table(struct xt_table *table); | 413 | extern void *xt_unregister_table(struct xt_table *table); |
diff --git a/include/linux/netfilter/xt_CONNMARK.h b/include/linux/netfilter/xt_CONNMARK.h index 7635c8ffdadb..0a8545866752 100644 --- a/include/linux/netfilter/xt_CONNMARK.h +++ b/include/linux/netfilter/xt_CONNMARK.h | |||
| @@ -18,12 +18,6 @@ enum { | |||
| 18 | XT_CONNMARK_RESTORE | 18 | XT_CONNMARK_RESTORE |
| 19 | }; | 19 | }; |
| 20 | 20 | ||
| 21 | struct xt_connmark_target_info { | ||
| 22 | unsigned long mark; | ||
| 23 | unsigned long mask; | ||
| 24 | __u8 mode; | ||
| 25 | }; | ||
| 26 | |||
| 27 | struct xt_connmark_tginfo1 { | 21 | struct xt_connmark_tginfo1 { |
| 28 | __u32 ctmark, ctmask, nfmask; | 22 | __u32 ctmark, ctmask, nfmask; |
| 29 | __u8 mode; | 23 | __u8 mode; |
diff --git a/include/linux/netfilter/xt_MARK.h b/include/linux/netfilter/xt_MARK.h index 028304bcc0b1..bc9561bdef79 100644 --- a/include/linux/netfilter/xt_MARK.h +++ b/include/linux/netfilter/xt_MARK.h | |||
| @@ -3,23 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | 5 | ||
| 6 | /* Version 0 */ | ||
| 7 | struct xt_mark_target_info { | ||
| 8 | unsigned long mark; | ||
| 9 | }; | ||
| 10 | |||
| 11 | /* Version 1 */ | ||
| 12 | enum { | ||
| 13 | XT_MARK_SET=0, | ||
| 14 | XT_MARK_AND, | ||
| 15 | XT_MARK_OR, | ||
| 16 | }; | ||
| 17 | |||
| 18 | struct xt_mark_target_info_v1 { | ||
| 19 | unsigned long mark; | ||
| 20 | __u8 mode; | ||
| 21 | }; | ||
| 22 | |||
| 23 | struct xt_mark_tginfo2 { | 6 | struct xt_mark_tginfo2 { |
| 24 | __u32 mark, mask; | 7 | __u32 mark, mask; |
| 25 | }; | 8 | }; |
diff --git a/include/linux/netfilter/xt_connmark.h b/include/linux/netfilter/xt_connmark.h index 571e266d004c..619e47cde01a 100644 --- a/include/linux/netfilter/xt_connmark.h +++ b/include/linux/netfilter/xt_connmark.h | |||
| @@ -12,11 +12,6 @@ | |||
| 12 | * (at your option) any later version. | 12 | * (at your option) any later version. |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | struct xt_connmark_info { | ||
| 16 | unsigned long mark, mask; | ||
| 17 | __u8 invert; | ||
| 18 | }; | ||
| 19 | |||
| 20 | struct xt_connmark_mtinfo1 { | 15 | struct xt_connmark_mtinfo1 { |
| 21 | __u32 mark, mask; | 16 | __u32 mark, mask; |
| 22 | __u8 invert; | 17 | __u8 invert; |
diff --git a/include/linux/netfilter/xt_conntrack.h b/include/linux/netfilter/xt_conntrack.h index 7ae05338e94c..54f47a2f6152 100644 --- a/include/linux/netfilter/xt_conntrack.h +++ b/include/linux/netfilter/xt_conntrack.h | |||
| @@ -32,42 +32,6 @@ enum { | |||
| 32 | XT_CONNTRACK_DIRECTION = 1 << 12, | 32 | XT_CONNTRACK_DIRECTION = 1 << 12, |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | /* This is exposed to userspace, so remains frozen in time. */ | ||
| 36 | struct ip_conntrack_old_tuple | ||
| 37 | { | ||
| 38 | struct { | ||
| 39 | __be32 ip; | ||
| 40 | union { | ||
| 41 | __u16 all; | ||
| 42 | } u; | ||
| 43 | } src; | ||
| 44 | |||
| 45 | struct { | ||
| 46 | __be32 ip; | ||
| 47 | union { | ||
| 48 | __u16 all; | ||
| 49 | } u; | ||
| 50 | |||
| 51 | /* The protocol. */ | ||
| 52 | __u16 protonum; | ||
| 53 | } dst; | ||
| 54 | }; | ||
| 55 | |||
| 56 | struct xt_conntrack_info | ||
| 57 | { | ||
| 58 | unsigned int statemask, statusmask; | ||
| 59 | |||
| 60 | struct ip_conntrack_old_tuple tuple[IP_CT_DIR_MAX]; | ||
| 61 | struct in_addr sipmsk[IP_CT_DIR_MAX], dipmsk[IP_CT_DIR_MAX]; | ||
| 62 | |||
| 63 | unsigned long expires_min, expires_max; | ||
| 64 | |||
| 65 | /* Flags word */ | ||
| 66 | __u8 flags; | ||
| 67 | /* Inverse flags */ | ||
| 68 | __u8 invflags; | ||
| 69 | }; | ||
| 70 | |||
| 71 | struct xt_conntrack_mtinfo1 { | 35 | struct xt_conntrack_mtinfo1 { |
| 72 | union nf_inet_addr origsrc_addr, origsrc_mask; | 36 | union nf_inet_addr origsrc_addr, origsrc_mask; |
| 73 | union nf_inet_addr origdst_addr, origdst_mask; | 37 | union nf_inet_addr origdst_addr, origdst_mask; |
diff --git a/include/linux/netfilter/xt_mark.h b/include/linux/netfilter/xt_mark.h index 6fa460a3cc29..6607c8f38ea5 100644 --- a/include/linux/netfilter/xt_mark.h +++ b/include/linux/netfilter/xt_mark.h | |||
| @@ -3,11 +3,6 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
| 5 | 5 | ||
| 6 | struct xt_mark_info { | ||
| 7 | unsigned long mark, mask; | ||
| 8 | __u8 invert; | ||
| 9 | }; | ||
| 10 | |||
| 11 | struct xt_mark_mtinfo1 { | 6 | struct xt_mark_mtinfo1 { |
| 12 | __u32 mark, mask; | 7 | __u32 mark, mask; |
| 13 | __u8 invert; | 8 | __u8 invert; |
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h index 590ac3d6d5d6..6fe3e6aa10db 100644 --- a/include/linux/netfilter_arp/arp_tables.h +++ b/include/linux/netfilter_arp/arp_tables.h | |||
| @@ -265,7 +265,7 @@ struct arpt_error | |||
| 265 | } | 265 | } |
| 266 | 266 | ||
| 267 | extern struct xt_table *arpt_register_table(struct net *net, | 267 | extern struct xt_table *arpt_register_table(struct net *net, |
| 268 | struct xt_table *table, | 268 | const struct xt_table *table, |
| 269 | const struct arpt_replace *repl); | 269 | const struct arpt_replace *repl); |
| 270 | extern void arpt_unregister_table(struct xt_table *table); | 270 | extern void arpt_unregister_table(struct xt_table *table); |
| 271 | extern unsigned int arpt_do_table(struct sk_buff *skb, | 271 | extern unsigned int arpt_do_table(struct sk_buff *skb, |
diff --git a/include/linux/netfilter_bridge/ebtables.h b/include/linux/netfilter_bridge/ebtables.h index e40ddb94b1af..ea281e6a2048 100644 --- a/include/linux/netfilter_bridge/ebtables.h +++ b/include/linux/netfilter_bridge/ebtables.h | |||
| @@ -301,7 +301,7 @@ struct ebt_table | |||
| 301 | #define EBT_ALIGN(s) (((s) + (__alignof__(struct ebt_replace)-1)) & \ | 301 | #define EBT_ALIGN(s) (((s) + (__alignof__(struct ebt_replace)-1)) & \ |
| 302 | ~(__alignof__(struct ebt_replace)-1)) | 302 | ~(__alignof__(struct ebt_replace)-1)) |
| 303 | extern struct ebt_table *ebt_register_table(struct net *net, | 303 | extern struct ebt_table *ebt_register_table(struct net *net, |
| 304 | struct ebt_table *table); | 304 | const struct ebt_table *table); |
| 305 | extern void ebt_unregister_table(struct ebt_table *table); | 305 | extern void ebt_unregister_table(struct ebt_table *table); |
| 306 | extern unsigned int ebt_do_table(unsigned int hook, struct sk_buff *skb, | 306 | extern unsigned int ebt_do_table(unsigned int hook, struct sk_buff *skb, |
| 307 | const struct net_device *in, const struct net_device *out, | 307 | const struct net_device *in, const struct net_device *out, |
diff --git a/include/linux/netfilter_ipv4/Kbuild b/include/linux/netfilter_ipv4/Kbuild index 3a7105bb8f33..431b40761920 100644 --- a/include/linux/netfilter_ipv4/Kbuild +++ b/include/linux/netfilter_ipv4/Kbuild | |||
| @@ -1,46 +1,14 @@ | |||
| 1 | header-y += ipt_CLASSIFY.h | ||
| 2 | header-y += ipt_CLUSTERIP.h | 1 | header-y += ipt_CLUSTERIP.h |
| 3 | header-y += ipt_CONNMARK.h | ||
| 4 | header-y += ipt_DSCP.h | ||
| 5 | header-y += ipt_ECN.h | 2 | header-y += ipt_ECN.h |
| 6 | header-y += ipt_LOG.h | 3 | header-y += ipt_LOG.h |
| 7 | header-y += ipt_MARK.h | ||
| 8 | header-y += ipt_NFQUEUE.h | ||
| 9 | header-y += ipt_REJECT.h | 4 | header-y += ipt_REJECT.h |
| 10 | header-y += ipt_SAME.h | 5 | header-y += ipt_SAME.h |
| 11 | header-y += ipt_TCPMSS.h | ||
| 12 | header-y += ipt_TOS.h | ||
| 13 | header-y += ipt_TTL.h | 6 | header-y += ipt_TTL.h |
| 14 | header-y += ipt_ULOG.h | 7 | header-y += ipt_ULOG.h |
| 15 | header-y += ipt_addrtype.h | 8 | header-y += ipt_addrtype.h |
| 16 | header-y += ipt_ah.h | 9 | header-y += ipt_ah.h |
| 17 | header-y += ipt_comment.h | ||
| 18 | header-y += ipt_connbytes.h | ||
| 19 | header-y += ipt_connmark.h | ||
| 20 | header-y += ipt_conntrack.h | ||
| 21 | header-y += ipt_dccp.h | ||
| 22 | header-y += ipt_dscp.h | ||
| 23 | header-y += ipt_ecn.h | 10 | header-y += ipt_ecn.h |
| 24 | header-y += ipt_esp.h | ||
| 25 | header-y += ipt_hashlimit.h | ||
| 26 | header-y += ipt_helper.h | ||
| 27 | header-y += ipt_iprange.h | ||
| 28 | header-y += ipt_length.h | ||
| 29 | header-y += ipt_limit.h | ||
| 30 | header-y += ipt_mac.h | ||
| 31 | header-y += ipt_mark.h | ||
| 32 | header-y += ipt_multiport.h | ||
| 33 | header-y += ipt_owner.h | ||
| 34 | header-y += ipt_physdev.h | ||
| 35 | header-y += ipt_pkttype.h | ||
| 36 | header-y += ipt_policy.h | ||
| 37 | header-y += ipt_realm.h | 11 | header-y += ipt_realm.h |
| 38 | header-y += ipt_recent.h | ||
| 39 | header-y += ipt_sctp.h | ||
| 40 | header-y += ipt_state.h | ||
| 41 | header-y += ipt_string.h | ||
| 42 | header-y += ipt_tcpmss.h | ||
| 43 | header-y += ipt_tos.h | ||
| 44 | header-y += ipt_ttl.h | 12 | header-y += ipt_ttl.h |
| 45 | 13 | ||
| 46 | unifdef-y += ip_queue.h | 14 | unifdef-y += ip_queue.h |
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h index 092bd50581a9..61fafc868a7b 100644 --- a/include/linux/netfilter_ipv4/ip_tables.h +++ b/include/linux/netfilter_ipv4/ip_tables.h | |||
| @@ -245,7 +245,7 @@ ipt_get_target(struct ipt_entry *e) | |||
| 245 | extern void ipt_init(void) __init; | 245 | extern void ipt_init(void) __init; |
| 246 | 246 | ||
| 247 | extern struct xt_table *ipt_register_table(struct net *net, | 247 | extern struct xt_table *ipt_register_table(struct net *net, |
| 248 | struct xt_table *table, | 248 | const struct xt_table *table, |
| 249 | const struct ipt_replace *repl); | 249 | const struct ipt_replace *repl); |
| 250 | extern void ipt_unregister_table(struct xt_table *table); | 250 | extern void ipt_unregister_table(struct xt_table *table); |
| 251 | 251 | ||
diff --git a/include/linux/netfilter_ipv4/ipt_CLASSIFY.h b/include/linux/netfilter_ipv4/ipt_CLASSIFY.h deleted file mode 100644 index a46d511b5c36..000000000000 --- a/include/linux/netfilter_ipv4/ipt_CLASSIFY.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_CLASSIFY_H | ||
| 2 | #define _IPT_CLASSIFY_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_CLASSIFY.h> | ||
| 5 | #define ipt_classify_target_info xt_classify_target_info | ||
| 6 | |||
| 7 | #endif /*_IPT_CLASSIFY_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_CONNMARK.h b/include/linux/netfilter_ipv4/ipt_CONNMARK.h deleted file mode 100644 index 9ecfee0a9e33..000000000000 --- a/include/linux/netfilter_ipv4/ipt_CONNMARK.h +++ /dev/null | |||
| @@ -1,19 +0,0 @@ | |||
| 1 | #ifndef _IPT_CONNMARK_H_target | ||
| 2 | #define _IPT_CONNMARK_H_target | ||
| 3 | |||
| 4 | /* Copyright (C) 2002,2004 MARA Systems AB <http://www.marasystems.com> | ||
| 5 | * by Henrik Nordstrom <hno@marasystems.com> | ||
| 6 | * | ||
| 7 | * This program is free software; you can redistribute it and/or modify | ||
| 8 | * it under the terms of the GNU General Public License as published by | ||
| 9 | * the Free Software Foundation; either version 2 of the License, or | ||
| 10 | * (at your option) any later version. | ||
| 11 | */ | ||
| 12 | #include <linux/netfilter/xt_CONNMARK.h> | ||
| 13 | #define IPT_CONNMARK_SET XT_CONNMARK_SET | ||
| 14 | #define IPT_CONNMARK_SAVE XT_CONNMARK_SAVE | ||
| 15 | #define IPT_CONNMARK_RESTORE XT_CONNMARK_RESTORE | ||
| 16 | |||
| 17 | #define ipt_connmark_target_info xt_connmark_target_info | ||
| 18 | |||
| 19 | #endif /*_IPT_CONNMARK_H_target*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_DSCP.h b/include/linux/netfilter_ipv4/ipt_DSCP.h deleted file mode 100644 index 3491e524d5ea..000000000000 --- a/include/linux/netfilter_ipv4/ipt_DSCP.h +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | /* iptables module for setting the IPv4 DSCP field | ||
| 2 | * | ||
| 3 | * (C) 2002 Harald Welte <laforge@gnumonks.org> | ||
| 4 | * based on ipt_FTOS.c (C) 2000 by Matthew G. Marsh <mgm@paktronix.com> | ||
| 5 | * This software is distributed under GNU GPL v2, 1991 | ||
| 6 | * | ||
| 7 | * See RFC2474 for a description of the DSCP field within the IP Header. | ||
| 8 | * | ||
| 9 | * ipt_DSCP.h,v 1.7 2002/03/14 12:03:13 laforge Exp | ||
| 10 | */ | ||
| 11 | #ifndef _IPT_DSCP_TARGET_H | ||
| 12 | #define _IPT_DSCP_TARGET_H | ||
| 13 | #include <linux/netfilter_ipv4/ipt_dscp.h> | ||
| 14 | #include <linux/netfilter/xt_DSCP.h> | ||
| 15 | |||
| 16 | #define ipt_DSCP_info xt_DSCP_info | ||
| 17 | |||
| 18 | #endif /* _IPT_DSCP_TARGET_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_ECN.h b/include/linux/netfilter_ipv4/ipt_ECN.h index 94e0d9866469..7ca45918ab8e 100644 --- a/include/linux/netfilter_ipv4/ipt_ECN.h +++ b/include/linux/netfilter_ipv4/ipt_ECN.h | |||
| @@ -8,9 +8,9 @@ | |||
| 8 | */ | 8 | */ |
| 9 | #ifndef _IPT_ECN_TARGET_H | 9 | #ifndef _IPT_ECN_TARGET_H |
| 10 | #define _IPT_ECN_TARGET_H | 10 | #define _IPT_ECN_TARGET_H |
| 11 | #include <linux/netfilter_ipv4/ipt_DSCP.h> | 11 | #include <linux/netfilter/xt_DSCP.h> |
| 12 | 12 | ||
| 13 | #define IPT_ECN_IP_MASK (~IPT_DSCP_MASK) | 13 | #define IPT_ECN_IP_MASK (~XT_DSCP_MASK) |
| 14 | 14 | ||
| 15 | #define IPT_ECN_OP_SET_IP 0x01 /* set ECN bits of IPv4 header */ | 15 | #define IPT_ECN_OP_SET_IP 0x01 /* set ECN bits of IPv4 header */ |
| 16 | #define IPT_ECN_OP_SET_ECE 0x10 /* set ECE bit of TCP header */ | 16 | #define IPT_ECN_OP_SET_ECE 0x10 /* set ECE bit of TCP header */ |
diff --git a/include/linux/netfilter_ipv4/ipt_MARK.h b/include/linux/netfilter_ipv4/ipt_MARK.h deleted file mode 100644 index 697a486a96d3..000000000000 --- a/include/linux/netfilter_ipv4/ipt_MARK.h +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | #ifndef _IPT_MARK_H_target | ||
| 2 | #define _IPT_MARK_H_target | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | |||
| 6 | #include <linux/netfilter/xt_MARK.h> | ||
| 7 | |||
| 8 | /* Version 0 */ | ||
| 9 | #define ipt_mark_target_info xt_mark_target_info | ||
| 10 | |||
| 11 | /* Version 1 */ | ||
| 12 | #define IPT_MARK_SET XT_MARK_SET | ||
| 13 | #define IPT_MARK_AND XT_MARK_AND | ||
| 14 | #define IPT_MARK_OR XT_MARK_OR | ||
| 15 | |||
| 16 | #define ipt_mark_target_info_v1 xt_mark_target_info_v1 | ||
| 17 | |||
| 18 | #endif /*_IPT_MARK_H_target*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_NFQUEUE.h b/include/linux/netfilter_ipv4/ipt_NFQUEUE.h deleted file mode 100644 index 97a2a7557cb9..000000000000 --- a/include/linux/netfilter_ipv4/ipt_NFQUEUE.h +++ /dev/null | |||
| @@ -1,16 +0,0 @@ | |||
| 1 | /* iptables module for using NFQUEUE mechanism | ||
| 2 | * | ||
| 3 | * (C) 2005 Harald Welte <laforge@netfilter.org> | ||
| 4 | * | ||
| 5 | * This software is distributed under GNU GPL v2, 1991 | ||
| 6 | * | ||
| 7 | */ | ||
| 8 | #ifndef _IPT_NFQ_TARGET_H | ||
| 9 | #define _IPT_NFQ_TARGET_H | ||
| 10 | |||
| 11 | /* Backwards compatibility for old userspace */ | ||
| 12 | #include <linux/netfilter/xt_NFQUEUE.h> | ||
| 13 | |||
| 14 | #define ipt_NFQ_info xt_NFQ_info | ||
| 15 | |||
| 16 | #endif /* _IPT_DSCP_TARGET_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_TCPMSS.h b/include/linux/netfilter_ipv4/ipt_TCPMSS.h deleted file mode 100644 index 7a850f945824..000000000000 --- a/include/linux/netfilter_ipv4/ipt_TCPMSS.h +++ /dev/null | |||
| @@ -1,9 +0,0 @@ | |||
| 1 | #ifndef _IPT_TCPMSS_H | ||
| 2 | #define _IPT_TCPMSS_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_TCPMSS.h> | ||
| 5 | |||
| 6 | #define ipt_tcpmss_info xt_tcpmss_info | ||
| 7 | #define IPT_TCPMSS_CLAMP_PMTU XT_TCPMSS_CLAMP_PMTU | ||
| 8 | |||
| 9 | #endif /*_IPT_TCPMSS_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_TOS.h b/include/linux/netfilter_ipv4/ipt_TOS.h deleted file mode 100644 index 6bf9e1fdfd88..000000000000 --- a/include/linux/netfilter_ipv4/ipt_TOS.h +++ /dev/null | |||
| @@ -1,12 +0,0 @@ | |||
| 1 | #ifndef _IPT_TOS_H_target | ||
| 2 | #define _IPT_TOS_H_target | ||
| 3 | |||
| 4 | #ifndef IPTOS_NORMALSVC | ||
| 5 | #define IPTOS_NORMALSVC 0 | ||
| 6 | #endif | ||
| 7 | |||
| 8 | struct ipt_tos_target_info { | ||
| 9 | u_int8_t tos; | ||
| 10 | }; | ||
| 11 | |||
| 12 | #endif /*_IPT_TOS_H_target*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_comment.h b/include/linux/netfilter_ipv4/ipt_comment.h deleted file mode 100644 index ae2afc2f7481..000000000000 --- a/include/linux/netfilter_ipv4/ipt_comment.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | #ifndef _IPT_COMMENT_H | ||
| 2 | #define _IPT_COMMENT_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_comment.h> | ||
| 5 | |||
| 6 | #define IPT_MAX_COMMENT_LEN XT_MAX_COMMENT_LEN | ||
| 7 | |||
| 8 | #define ipt_comment_info xt_comment_info | ||
| 9 | |||
| 10 | #endif /* _IPT_COMMENT_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_connbytes.h b/include/linux/netfilter_ipv4/ipt_connbytes.h deleted file mode 100644 index f63e6ee91113..000000000000 --- a/include/linux/netfilter_ipv4/ipt_connbytes.h +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | #ifndef _IPT_CONNBYTES_H | ||
| 2 | #define _IPT_CONNBYTES_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_connbytes.h> | ||
| 5 | #define ipt_connbytes_what xt_connbytes_what | ||
| 6 | |||
| 7 | #define IPT_CONNBYTES_PKTS XT_CONNBYTES_PKTS | ||
| 8 | #define IPT_CONNBYTES_BYTES XT_CONNBYTES_BYTES | ||
| 9 | #define IPT_CONNBYTES_AVGPKT XT_CONNBYTES_AVGPKT | ||
| 10 | |||
| 11 | #define ipt_connbytes_direction xt_connbytes_direction | ||
| 12 | #define IPT_CONNBYTES_DIR_ORIGINAL XT_CONNBYTES_DIR_ORIGINAL | ||
| 13 | #define IPT_CONNBYTES_DIR_REPLY XT_CONNBYTES_DIR_REPLY | ||
| 14 | #define IPT_CONNBYTES_DIR_BOTH XT_CONNBYTES_DIR_BOTH | ||
| 15 | |||
| 16 | #define ipt_connbytes_info xt_connbytes_info | ||
| 17 | |||
| 18 | #endif | ||
diff --git a/include/linux/netfilter_ipv4/ipt_connmark.h b/include/linux/netfilter_ipv4/ipt_connmark.h deleted file mode 100644 index c7ba6560d44c..000000000000 --- a/include/linux/netfilter_ipv4/ipt_connmark.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_CONNMARK_H | ||
| 2 | #define _IPT_CONNMARK_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_connmark.h> | ||
| 5 | #define ipt_connmark_info xt_connmark_info | ||
| 6 | |||
| 7 | #endif /*_IPT_CONNMARK_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_conntrack.h b/include/linux/netfilter_ipv4/ipt_conntrack.h deleted file mode 100644 index cde6762949c5..000000000000 --- a/include/linux/netfilter_ipv4/ipt_conntrack.h +++ /dev/null | |||
| @@ -1,28 +0,0 @@ | |||
| 1 | /* Header file for kernel module to match connection tracking information. | ||
| 2 | * GPL (C) 2001 Marc Boucher (marc@mbsi.ca). | ||
| 3 | */ | ||
| 4 | |||
| 5 | #ifndef _IPT_CONNTRACK_H | ||
| 6 | #define _IPT_CONNTRACK_H | ||
| 7 | |||
| 8 | #include <linux/netfilter/xt_conntrack.h> | ||
| 9 | |||
| 10 | #define IPT_CONNTRACK_STATE_BIT(ctinfo) XT_CONNTRACK_STATE_BIT(ctinfo) | ||
| 11 | #define IPT_CONNTRACK_STATE_INVALID XT_CONNTRACK_STATE_INVALID | ||
| 12 | |||
| 13 | #define IPT_CONNTRACK_STATE_SNAT XT_CONNTRACK_STATE_SNAT | ||
| 14 | #define IPT_CONNTRACK_STATE_DNAT XT_CONNTRACK_STATE_DNAT | ||
| 15 | #define IPT_CONNTRACK_STATE_UNTRACKED XT_CONNTRACK_STATE_UNTRACKED | ||
| 16 | |||
| 17 | /* flags, invflags: */ | ||
| 18 | #define IPT_CONNTRACK_STATE XT_CONNTRACK_STATE | ||
| 19 | #define IPT_CONNTRACK_PROTO XT_CONNTRACK_PROTO | ||
| 20 | #define IPT_CONNTRACK_ORIGSRC XT_CONNTRACK_ORIGSRC | ||
| 21 | #define IPT_CONNTRACK_ORIGDST XT_CONNTRACK_ORIGDST | ||
| 22 | #define IPT_CONNTRACK_REPLSRC XT_CONNTRACK_REPLSRC | ||
| 23 | #define IPT_CONNTRACK_REPLDST XT_CONNTRACK_REPLDST | ||
| 24 | #define IPT_CONNTRACK_STATUS XT_CONNTRACK_STATUS | ||
| 25 | #define IPT_CONNTRACK_EXPIRES XT_CONNTRACK_EXPIRES | ||
| 26 | |||
| 27 | #define ipt_conntrack_info xt_conntrack_info | ||
| 28 | #endif /*_IPT_CONNTRACK_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_dccp.h b/include/linux/netfilter_ipv4/ipt_dccp.h deleted file mode 100644 index e70d11e1f53c..000000000000 --- a/include/linux/netfilter_ipv4/ipt_dccp.h +++ /dev/null | |||
| @@ -1,15 +0,0 @@ | |||
| 1 | #ifndef _IPT_DCCP_H_ | ||
| 2 | #define _IPT_DCCP_H_ | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_dccp.h> | ||
| 5 | #define IPT_DCCP_SRC_PORTS XT_DCCP_SRC_PORTS | ||
| 6 | #define IPT_DCCP_DEST_PORTS XT_DCCP_DEST_PORTS | ||
| 7 | #define IPT_DCCP_TYPE XT_DCCP_TYPE | ||
| 8 | #define IPT_DCCP_OPTION XT_DCCP_OPTION | ||
| 9 | |||
| 10 | #define IPT_DCCP_VALID_FLAGS XT_DCCP_VALID_FLAGS | ||
| 11 | |||
| 12 | #define ipt_dccp_info xt_dccp_info | ||
| 13 | |||
| 14 | #endif /* _IPT_DCCP_H_ */ | ||
| 15 | |||
diff --git a/include/linux/netfilter_ipv4/ipt_dscp.h b/include/linux/netfilter_ipv4/ipt_dscp.h deleted file mode 100644 index 4b82ca912b0e..000000000000 --- a/include/linux/netfilter_ipv4/ipt_dscp.h +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | /* iptables module for matching the IPv4 DSCP field | ||
| 2 | * | ||
| 3 | * (C) 2002 Harald Welte <laforge@gnumonks.org> | ||
| 4 | * This software is distributed under GNU GPL v2, 1991 | ||
| 5 | * | ||
| 6 | * See RFC2474 for a description of the DSCP field within the IP Header. | ||
| 7 | * | ||
| 8 | * ipt_dscp.h,v 1.3 2002/08/05 19:00:21 laforge Exp | ||
| 9 | */ | ||
| 10 | #ifndef _IPT_DSCP_H | ||
| 11 | #define _IPT_DSCP_H | ||
| 12 | |||
| 13 | #include <linux/netfilter/xt_dscp.h> | ||
| 14 | |||
| 15 | #define IPT_DSCP_MASK XT_DSCP_MASK | ||
| 16 | #define IPT_DSCP_SHIFT XT_DSCP_SHIFT | ||
| 17 | #define IPT_DSCP_MAX XT_DSCP_MAX | ||
| 18 | |||
| 19 | #define ipt_dscp_info xt_dscp_info | ||
| 20 | |||
| 21 | #endif /* _IPT_DSCP_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_ecn.h b/include/linux/netfilter_ipv4/ipt_ecn.h index 1f0d9a4d3378..9945baa4ccd7 100644 --- a/include/linux/netfilter_ipv4/ipt_ecn.h +++ b/include/linux/netfilter_ipv4/ipt_ecn.h | |||
| @@ -8,9 +8,9 @@ | |||
| 8 | */ | 8 | */ |
| 9 | #ifndef _IPT_ECN_H | 9 | #ifndef _IPT_ECN_H |
| 10 | #define _IPT_ECN_H | 10 | #define _IPT_ECN_H |
| 11 | #include <linux/netfilter_ipv4/ipt_dscp.h> | 11 | #include <linux/netfilter/xt_dscp.h> |
| 12 | 12 | ||
| 13 | #define IPT_ECN_IP_MASK (~IPT_DSCP_MASK) | 13 | #define IPT_ECN_IP_MASK (~XT_DSCP_MASK) |
| 14 | 14 | ||
| 15 | #define IPT_ECN_OP_MATCH_IP 0x01 | 15 | #define IPT_ECN_OP_MATCH_IP 0x01 |
| 16 | #define IPT_ECN_OP_MATCH_ECE 0x10 | 16 | #define IPT_ECN_OP_MATCH_ECE 0x10 |
diff --git a/include/linux/netfilter_ipv4/ipt_esp.h b/include/linux/netfilter_ipv4/ipt_esp.h deleted file mode 100644 index 78296e7eeff9..000000000000 --- a/include/linux/netfilter_ipv4/ipt_esp.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | #ifndef _IPT_ESP_H | ||
| 2 | #define _IPT_ESP_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_esp.h> | ||
| 5 | |||
| 6 | #define ipt_esp xt_esp | ||
| 7 | #define IPT_ESP_INV_SPI XT_ESP_INV_SPI | ||
| 8 | #define IPT_ESP_INV_MASK XT_ESP_INV_MASK | ||
| 9 | |||
| 10 | #endif /*_IPT_ESP_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_hashlimit.h b/include/linux/netfilter_ipv4/ipt_hashlimit.h deleted file mode 100644 index 5662120a3d7b..000000000000 --- a/include/linux/netfilter_ipv4/ipt_hashlimit.h +++ /dev/null | |||
| @@ -1,14 +0,0 @@ | |||
| 1 | #ifndef _IPT_HASHLIMIT_H | ||
| 2 | #define _IPT_HASHLIMIT_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_hashlimit.h> | ||
| 5 | |||
| 6 | #define IPT_HASHLIMIT_SCALE XT_HASHLIMIT_SCALE | ||
| 7 | #define IPT_HASHLIMIT_HASH_DIP XT_HASHLIMIT_HASH_DIP | ||
| 8 | #define IPT_HASHLIMIT_HASH_DPT XT_HASHLIMIT_HASH_DPT | ||
| 9 | #define IPT_HASHLIMIT_HASH_SIP XT_HASHLIMIT_HASH_SIP | ||
| 10 | #define IPT_HASHLIMIT_HASH_SPT XT_HASHLIMIT_HASH_SPT | ||
| 11 | |||
| 12 | #define ipt_hashlimit_info xt_hashlimit_info | ||
| 13 | |||
| 14 | #endif /* _IPT_HASHLIMIT_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_helper.h b/include/linux/netfilter_ipv4/ipt_helper.h deleted file mode 100644 index 80452c218551..000000000000 --- a/include/linux/netfilter_ipv4/ipt_helper.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_HELPER_H | ||
| 2 | #define _IPT_HELPER_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_helper.h> | ||
| 5 | #define ipt_helper_info xt_helper_info | ||
| 6 | |||
| 7 | #endif /* _IPT_HELPER_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_iprange.h b/include/linux/netfilter_ipv4/ipt_iprange.h deleted file mode 100644 index 5f1aebde4d2f..000000000000 --- a/include/linux/netfilter_ipv4/ipt_iprange.h +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | #ifndef _IPT_IPRANGE_H | ||
| 2 | #define _IPT_IPRANGE_H | ||
| 3 | |||
| 4 | #include <linux/types.h> | ||
| 5 | #include <linux/netfilter/xt_iprange.h> | ||
| 6 | |||
| 7 | struct ipt_iprange { | ||
| 8 | /* Inclusive: network order. */ | ||
| 9 | __be32 min_ip, max_ip; | ||
| 10 | }; | ||
| 11 | |||
| 12 | struct ipt_iprange_info | ||
| 13 | { | ||
| 14 | struct ipt_iprange src; | ||
| 15 | struct ipt_iprange dst; | ||
| 16 | |||
| 17 | /* Flags from above */ | ||
| 18 | u_int8_t flags; | ||
| 19 | }; | ||
| 20 | |||
| 21 | #endif /* _IPT_IPRANGE_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_length.h b/include/linux/netfilter_ipv4/ipt_length.h deleted file mode 100644 index 9b45206ffcef..000000000000 --- a/include/linux/netfilter_ipv4/ipt_length.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_LENGTH_H | ||
| 2 | #define _IPT_LENGTH_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_length.h> | ||
| 5 | #define ipt_length_info xt_length_info | ||
| 6 | |||
| 7 | #endif /*_IPT_LENGTH_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_limit.h b/include/linux/netfilter_ipv4/ipt_limit.h deleted file mode 100644 index 92f5cd07bbc4..000000000000 --- a/include/linux/netfilter_ipv4/ipt_limit.h +++ /dev/null | |||
| @@ -1,8 +0,0 @@ | |||
| 1 | #ifndef _IPT_RATE_H | ||
| 2 | #define _IPT_RATE_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_limit.h> | ||
| 5 | #define IPT_LIMIT_SCALE XT_LIMIT_SCALE | ||
| 6 | #define ipt_rateinfo xt_rateinfo | ||
| 7 | |||
| 8 | #endif /*_IPT_RATE_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_mac.h b/include/linux/netfilter_ipv4/ipt_mac.h deleted file mode 100644 index b186008a3c47..000000000000 --- a/include/linux/netfilter_ipv4/ipt_mac.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_MAC_H | ||
| 2 | #define _IPT_MAC_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_mac.h> | ||
| 5 | #define ipt_mac_info xt_mac_info | ||
| 6 | |||
| 7 | #endif /*_IPT_MAC_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_mark.h b/include/linux/netfilter_ipv4/ipt_mark.h deleted file mode 100644 index bfde67c61224..000000000000 --- a/include/linux/netfilter_ipv4/ipt_mark.h +++ /dev/null | |||
| @@ -1,9 +0,0 @@ | |||
| 1 | #ifndef _IPT_MARK_H | ||
| 2 | #define _IPT_MARK_H | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | #include <linux/netfilter/xt_mark.h> | ||
| 6 | |||
| 7 | #define ipt_mark_info xt_mark_info | ||
| 8 | |||
| 9 | #endif /*_IPT_MARK_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_multiport.h b/include/linux/netfilter_ipv4/ipt_multiport.h deleted file mode 100644 index 55fe85eca88c..000000000000 --- a/include/linux/netfilter_ipv4/ipt_multiport.h +++ /dev/null | |||
| @@ -1,15 +0,0 @@ | |||
| 1 | #ifndef _IPT_MULTIPORT_H | ||
| 2 | #define _IPT_MULTIPORT_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_multiport.h> | ||
| 5 | |||
| 6 | #define IPT_MULTIPORT_SOURCE XT_MULTIPORT_SOURCE | ||
| 7 | #define IPT_MULTIPORT_DESTINATION XT_MULTIPORT_DESTINATION | ||
| 8 | #define IPT_MULTIPORT_EITHER XT_MULTIPORT_EITHER | ||
| 9 | |||
| 10 | #define IPT_MULTI_PORTS XT_MULTI_PORTS | ||
| 11 | |||
| 12 | #define ipt_multiport xt_multiport | ||
| 13 | #define ipt_multiport_v1 xt_multiport_v1 | ||
| 14 | |||
| 15 | #endif /*_IPT_MULTIPORT_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_owner.h b/include/linux/netfilter_ipv4/ipt_owner.h deleted file mode 100644 index a78445be9992..000000000000 --- a/include/linux/netfilter_ipv4/ipt_owner.h +++ /dev/null | |||
| @@ -1,20 +0,0 @@ | |||
| 1 | #ifndef _IPT_OWNER_H | ||
| 2 | #define _IPT_OWNER_H | ||
| 3 | |||
| 4 | /* match and invert flags */ | ||
| 5 | #define IPT_OWNER_UID 0x01 | ||
| 6 | #define IPT_OWNER_GID 0x02 | ||
| 7 | #define IPT_OWNER_PID 0x04 | ||
| 8 | #define IPT_OWNER_SID 0x08 | ||
| 9 | #define IPT_OWNER_COMM 0x10 | ||
| 10 | |||
| 11 | struct ipt_owner_info { | ||
| 12 | __kernel_uid32_t uid; | ||
| 13 | __kernel_gid32_t gid; | ||
| 14 | __kernel_pid_t pid; | ||
| 15 | __kernel_pid_t sid; | ||
| 16 | char comm[16]; | ||
| 17 | u_int8_t match, invert; /* flags */ | ||
| 18 | }; | ||
| 19 | |||
| 20 | #endif /*_IPT_OWNER_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_physdev.h b/include/linux/netfilter_ipv4/ipt_physdev.h deleted file mode 100644 index 2400e7140f26..000000000000 --- a/include/linux/netfilter_ipv4/ipt_physdev.h +++ /dev/null | |||
| @@ -1,17 +0,0 @@ | |||
| 1 | #ifndef _IPT_PHYSDEV_H | ||
| 2 | #define _IPT_PHYSDEV_H | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | |||
| 6 | #include <linux/netfilter/xt_physdev.h> | ||
| 7 | |||
| 8 | #define IPT_PHYSDEV_OP_IN XT_PHYSDEV_OP_IN | ||
| 9 | #define IPT_PHYSDEV_OP_OUT XT_PHYSDEV_OP_OUT | ||
| 10 | #define IPT_PHYSDEV_OP_BRIDGED XT_PHYSDEV_OP_BRIDGED | ||
| 11 | #define IPT_PHYSDEV_OP_ISIN XT_PHYSDEV_OP_ISIN | ||
| 12 | #define IPT_PHYSDEV_OP_ISOUT XT_PHYSDEV_OP_ISOUT | ||
| 13 | #define IPT_PHYSDEV_OP_MASK XT_PHYSDEV_OP_MASK | ||
| 14 | |||
| 15 | #define ipt_physdev_info xt_physdev_info | ||
| 16 | |||
| 17 | #endif /*_IPT_PHYSDEV_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_pkttype.h b/include/linux/netfilter_ipv4/ipt_pkttype.h deleted file mode 100644 index ff1fbc949a0c..000000000000 --- a/include/linux/netfilter_ipv4/ipt_pkttype.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_PKTTYPE_H | ||
| 2 | #define _IPT_PKTTYPE_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_pkttype.h> | ||
| 5 | #define ipt_pkttype_info xt_pkttype_info | ||
| 6 | |||
| 7 | #endif /*_IPT_PKTTYPE_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_policy.h b/include/linux/netfilter_ipv4/ipt_policy.h deleted file mode 100644 index 1037fb2cd206..000000000000 --- a/include/linux/netfilter_ipv4/ipt_policy.h +++ /dev/null | |||
| @@ -1,23 +0,0 @@ | |||
| 1 | #ifndef _IPT_POLICY_H | ||
| 2 | #define _IPT_POLICY_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_policy.h> | ||
| 5 | |||
| 6 | #define IPT_POLICY_MAX_ELEM XT_POLICY_MAX_ELEM | ||
| 7 | |||
| 8 | /* ipt_policy_flags */ | ||
| 9 | #define IPT_POLICY_MATCH_IN XT_POLICY_MATCH_IN | ||
| 10 | #define IPT_POLICY_MATCH_OUT XT_POLICY_MATCH_OUT | ||
| 11 | #define IPT_POLICY_MATCH_NONE XT_POLICY_MATCH_NONE | ||
| 12 | #define IPT_POLICY_MATCH_STRICT XT_POLICY_MATCH_STRICT | ||
| 13 | |||
| 14 | /* ipt_policy_modes */ | ||
| 15 | #define IPT_POLICY_MODE_TRANSPORT XT_POLICY_MODE_TRANSPORT | ||
| 16 | #define IPT_POLICY_MODE_TUNNEL XT_POLICY_MODE_TUNNEL | ||
| 17 | |||
| 18 | #define ipt_policy_spec xt_policy_spec | ||
| 19 | #define ipt_policy_addr xt_policy_addr | ||
| 20 | #define ipt_policy_elem xt_policy_elem | ||
| 21 | #define ipt_policy_info xt_policy_info | ||
| 22 | |||
| 23 | #endif /* _IPT_POLICY_H */ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_recent.h b/include/linux/netfilter_ipv4/ipt_recent.h deleted file mode 100644 index d636cca133c2..000000000000 --- a/include/linux/netfilter_ipv4/ipt_recent.h +++ /dev/null | |||
| @@ -1,21 +0,0 @@ | |||
| 1 | #ifndef _IPT_RECENT_H | ||
| 2 | #define _IPT_RECENT_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_recent.h> | ||
| 5 | |||
| 6 | #define ipt_recent_info xt_recent_mtinfo | ||
| 7 | |||
| 8 | enum { | ||
| 9 | IPT_RECENT_CHECK = XT_RECENT_CHECK, | ||
| 10 | IPT_RECENT_SET = XT_RECENT_SET, | ||
| 11 | IPT_RECENT_UPDATE = XT_RECENT_UPDATE, | ||
| 12 | IPT_RECENT_REMOVE = XT_RECENT_REMOVE, | ||
| 13 | IPT_RECENT_TTL = XT_RECENT_TTL, | ||
| 14 | |||
| 15 | IPT_RECENT_SOURCE = XT_RECENT_SOURCE, | ||
| 16 | IPT_RECENT_DEST = XT_RECENT_DEST, | ||
| 17 | |||
| 18 | IPT_RECENT_NAME_LEN = XT_RECENT_NAME_LEN, | ||
| 19 | }; | ||
| 20 | |||
| 21 | #endif /*_IPT_RECENT_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_sctp.h b/include/linux/netfilter_ipv4/ipt_sctp.h deleted file mode 100644 index 80b3dbacd193..000000000000 --- a/include/linux/netfilter_ipv4/ipt_sctp.h +++ /dev/null | |||
| @@ -1,105 +0,0 @@ | |||
| 1 | #ifndef _IPT_SCTP_H_ | ||
| 2 | #define _IPT_SCTP_H_ | ||
| 3 | |||
| 4 | #define IPT_SCTP_SRC_PORTS 0x01 | ||
| 5 | #define IPT_SCTP_DEST_PORTS 0x02 | ||
| 6 | #define IPT_SCTP_CHUNK_TYPES 0x04 | ||
| 7 | |||
| 8 | #define IPT_SCTP_VALID_FLAGS 0x07 | ||
| 9 | |||
| 10 | |||
| 11 | struct ipt_sctp_flag_info { | ||
| 12 | u_int8_t chunktype; | ||
| 13 | u_int8_t flag; | ||
| 14 | u_int8_t flag_mask; | ||
| 15 | }; | ||
| 16 | |||
| 17 | #define IPT_NUM_SCTP_FLAGS 4 | ||
| 18 | |||
| 19 | struct ipt_sctp_info { | ||
| 20 | u_int16_t dpts[2]; /* Min, Max */ | ||
| 21 | u_int16_t spts[2]; /* Min, Max */ | ||
| 22 | |||
| 23 | u_int32_t chunkmap[256 / sizeof (u_int32_t)]; /* Bit mask of chunks to be matched according to RFC 2960 */ | ||
| 24 | |||
| 25 | #define SCTP_CHUNK_MATCH_ANY 0x01 /* Match if any of the chunk types are present */ | ||
| 26 | #define SCTP_CHUNK_MATCH_ALL 0x02 /* Match if all of the chunk types are present */ | ||
| 27 | #define SCTP_CHUNK_MATCH_ONLY 0x04 /* Match if these are the only chunk types present */ | ||
| 28 | |||
| 29 | u_int32_t chunk_match_type; | ||
| 30 | struct ipt_sctp_flag_info flag_info[IPT_NUM_SCTP_FLAGS]; | ||
| 31 | int flag_count; | ||
| 32 | |||
| 33 | u_int32_t flags; | ||
| 34 | u_int32_t invflags; | ||
| 35 | }; | ||
| 36 | |||
| 37 | #define bytes(type) (sizeof(type) * 8) | ||
| 38 | |||
| 39 | #define SCTP_CHUNKMAP_SET(chunkmap, type) \ | ||
| 40 | do { \ | ||
| 41 | chunkmap[type / bytes(u_int32_t)] |= \ | ||
| 42 | 1 << (type % bytes(u_int32_t)); \ | ||
| 43 | } while (0) | ||
| 44 | |||
| 45 | #define SCTP_CHUNKMAP_CLEAR(chunkmap, type) \ | ||
| 46 | do { \ | ||
| 47 | chunkmap[type / bytes(u_int32_t)] &= \ | ||
| 48 | ~(1 << (type % bytes(u_int32_t))); \ | ||
| 49 | } while (0) | ||
| 50 | |||
| 51 | #define SCTP_CHUNKMAP_IS_SET(chunkmap, type) \ | ||
| 52 | ({ \ | ||
| 53 | (chunkmap[type / bytes (u_int32_t)] & \ | ||
| 54 | (1 << (type % bytes (u_int32_t)))) ? 1: 0; \ | ||
| 55 | }) | ||
| 56 | |||
| 57 | #define SCTP_CHUNKMAP_RESET(chunkmap) \ | ||
| 58 | do { \ | ||
| 59 | int i; \ | ||
| 60 | for (i = 0; i < ARRAY_SIZE(chunkmap); i++) \ | ||
| 61 | chunkmap[i] = 0; \ | ||
| 62 | } while (0) | ||
| 63 | |||
| 64 | #define SCTP_CHUNKMAP_SET_ALL(chunkmap) \ | ||
| 65 | do { \ | ||
| 66 | int i; \ | ||
| 67 | for (i = 0; i < ARRAY_SIZE(chunkmap); i++) \ | ||
| 68 | chunkmap[i] = ~0; \ | ||
| 69 | } while (0) | ||
| 70 | |||
| 71 | #define SCTP_CHUNKMAP_COPY(destmap, srcmap) \ | ||
| 72 | do { \ | ||
| 73 | int i; \ | ||
| 74 | for (i = 0; i < ARRAY_SIZE(chunkmap); i++) \ | ||
| 75 | destmap[i] = srcmap[i]; \ | ||
| 76 | } while (0) | ||
| 77 | |||
| 78 | #define SCTP_CHUNKMAP_IS_CLEAR(chunkmap) \ | ||
| 79 | ({ \ | ||
| 80 | int i; \ | ||
| 81 | int flag = 1; \ | ||
| 82 | for (i = 0; i < ARRAY_SIZE(chunkmap); i++) { \ | ||
| 83 | if (chunkmap[i]) { \ | ||
| 84 | flag = 0; \ | ||
| 85 | break; \ | ||
| 86 | } \ | ||
| 87 | } \ | ||
| 88 | flag; \ | ||
| 89 | }) | ||
| 90 | |||
| 91 | #define SCTP_CHUNKMAP_IS_ALL_SET(chunkmap) \ | ||
| 92 | ({ \ | ||
| 93 | int i; \ | ||
| 94 | int flag = 1; \ | ||
| 95 | for (i = 0; i < ARRAY_SIZE(chunkmap); i++) { \ | ||
| 96 | if (chunkmap[i] != ~0) { \ | ||
| 97 | flag = 0; \ | ||
| 98 | break; \ | ||
| 99 | } \ | ||
| 100 | } \ | ||
| 101 | flag; \ | ||
| 102 | }) | ||
| 103 | |||
| 104 | #endif /* _IPT_SCTP_H_ */ | ||
| 105 | |||
diff --git a/include/linux/netfilter_ipv4/ipt_state.h b/include/linux/netfilter_ipv4/ipt_state.h deleted file mode 100644 index a44a99cc28cc..000000000000 --- a/include/linux/netfilter_ipv4/ipt_state.h +++ /dev/null | |||
| @@ -1,15 +0,0 @@ | |||
| 1 | #ifndef _IPT_STATE_H | ||
| 2 | #define _IPT_STATE_H | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | |||
| 6 | #include <linux/netfilter/xt_state.h> | ||
| 7 | |||
| 8 | #define IPT_STATE_BIT XT_STATE_BIT | ||
| 9 | #define IPT_STATE_INVALID XT_STATE_INVALID | ||
| 10 | |||
| 11 | #define IPT_STATE_UNTRACKED XT_STATE_UNTRACKED | ||
| 12 | |||
| 13 | #define ipt_state_info xt_state_info | ||
| 14 | |||
| 15 | #endif /*_IPT_STATE_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_string.h b/include/linux/netfilter_ipv4/ipt_string.h deleted file mode 100644 index c26de3059903..000000000000 --- a/include/linux/netfilter_ipv4/ipt_string.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | #ifndef _IPT_STRING_H | ||
| 2 | #define _IPT_STRING_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_string.h> | ||
| 5 | |||
| 6 | #define IPT_STRING_MAX_PATTERN_SIZE XT_STRING_MAX_PATTERN_SIZE | ||
| 7 | #define IPT_STRING_MAX_ALGO_NAME_SIZE XT_STRING_MAX_ALGO_NAME_SIZE | ||
| 8 | #define ipt_string_info xt_string_info | ||
| 9 | |||
| 10 | #endif /*_IPT_STRING_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_tcpmss.h b/include/linux/netfilter_ipv4/ipt_tcpmss.h deleted file mode 100644 index 18bbc8e8e009..000000000000 --- a/include/linux/netfilter_ipv4/ipt_tcpmss.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IPT_TCPMSS_MATCH_H | ||
| 2 | #define _IPT_TCPMSS_MATCH_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_tcpmss.h> | ||
| 5 | #define ipt_tcpmss_match_info xt_tcpmss_match_info | ||
| 6 | |||
| 7 | #endif /*_IPT_TCPMSS_MATCH_H*/ | ||
diff --git a/include/linux/netfilter_ipv4/ipt_tos.h b/include/linux/netfilter_ipv4/ipt_tos.h deleted file mode 100644 index a21f5df23c50..000000000000 --- a/include/linux/netfilter_ipv4/ipt_tos.h +++ /dev/null | |||
| @@ -1,13 +0,0 @@ | |||
| 1 | #ifndef _IPT_TOS_H | ||
| 2 | #define _IPT_TOS_H | ||
| 3 | |||
| 4 | struct ipt_tos_info { | ||
| 5 | u_int8_t tos; | ||
| 6 | u_int8_t invert; | ||
| 7 | }; | ||
| 8 | |||
| 9 | #ifndef IPTOS_NORMALSVC | ||
| 10 | #define IPTOS_NORMALSVC 0 | ||
| 11 | #endif | ||
| 12 | |||
| 13 | #endif /*_IPT_TOS_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/Kbuild b/include/linux/netfilter_ipv6/Kbuild index aca4bd1f6d7c..e864eaee9e5e 100644 --- a/include/linux/netfilter_ipv6/Kbuild +++ b/include/linux/netfilter_ipv6/Kbuild | |||
| @@ -1,22 +1,12 @@ | |||
| 1 | header-y += ip6t_HL.h | 1 | header-y += ip6t_HL.h |
| 2 | header-y += ip6t_LOG.h | 2 | header-y += ip6t_LOG.h |
| 3 | header-y += ip6t_MARK.h | ||
| 4 | header-y += ip6t_REJECT.h | 3 | header-y += ip6t_REJECT.h |
| 5 | header-y += ip6t_ah.h | 4 | header-y += ip6t_ah.h |
| 6 | header-y += ip6t_esp.h | ||
| 7 | header-y += ip6t_frag.h | 5 | header-y += ip6t_frag.h |
| 8 | header-y += ip6t_hl.h | ||
| 9 | header-y += ip6t_ipv6header.h | 6 | header-y += ip6t_ipv6header.h |
| 10 | header-y += ip6t_length.h | 7 | header-y += ip6t_hl.h |
| 11 | header-y += ip6t_limit.h | ||
| 12 | header-y += ip6t_mac.h | ||
| 13 | header-y += ip6t_mark.h | ||
| 14 | header-y += ip6t_mh.h | 8 | header-y += ip6t_mh.h |
| 15 | header-y += ip6t_multiport.h | ||
| 16 | header-y += ip6t_opts.h | 9 | header-y += ip6t_opts.h |
| 17 | header-y += ip6t_owner.h | ||
| 18 | header-y += ip6t_physdev.h | ||
| 19 | header-y += ip6t_policy.h | ||
| 20 | header-y += ip6t_rt.h | 10 | header-y += ip6t_rt.h |
| 21 | 11 | ||
| 22 | unifdef-y += ip6_tables.h | 12 | unifdef-y += ip6_tables.h |
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index 1089e33cf633..a64e1451ac38 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
| @@ -306,7 +306,7 @@ ip6t_get_target(struct ip6t_entry *e) | |||
| 306 | extern void ip6t_init(void) __init; | 306 | extern void ip6t_init(void) __init; |
| 307 | 307 | ||
| 308 | extern struct xt_table *ip6t_register_table(struct net *net, | 308 | extern struct xt_table *ip6t_register_table(struct net *net, |
| 309 | struct xt_table *table, | 309 | const struct xt_table *table, |
| 310 | const struct ip6t_replace *repl); | 310 | const struct ip6t_replace *repl); |
| 311 | extern void ip6t_unregister_table(struct xt_table *table); | 311 | extern void ip6t_unregister_table(struct xt_table *table); |
| 312 | extern unsigned int ip6t_do_table(struct sk_buff *skb, | 312 | extern unsigned int ip6t_do_table(struct sk_buff *skb, |
diff --git a/include/linux/netfilter_ipv6/ip6t_MARK.h b/include/linux/netfilter_ipv6/ip6t_MARK.h deleted file mode 100644 index 7cf629a8ab92..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_MARK.h +++ /dev/null | |||
| @@ -1,9 +0,0 @@ | |||
| 1 | #ifndef _IP6T_MARK_H_target | ||
| 2 | #define _IP6T_MARK_H_target | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | #include <linux/netfilter/xt_MARK.h> | ||
| 6 | |||
| 7 | #define ip6t_mark_target_info xt_mark_target_info | ||
| 8 | |||
| 9 | #endif /*_IP6T_MARK_H_target*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_esp.h b/include/linux/netfilter_ipv6/ip6t_esp.h deleted file mode 100644 index f62eaf53c16c..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_esp.h +++ /dev/null | |||
| @@ -1,10 +0,0 @@ | |||
| 1 | #ifndef _IP6T_ESP_H | ||
| 2 | #define _IP6T_ESP_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_esp.h> | ||
| 5 | |||
| 6 | #define ip6t_esp xt_esp | ||
| 7 | #define IP6T_ESP_INV_SPI XT_ESP_INV_SPI | ||
| 8 | #define IP6T_ESP_INV_MASK XT_ESP_INV_MASK | ||
| 9 | |||
| 10 | #endif /*_IP6T_ESP_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_length.h b/include/linux/netfilter_ipv6/ip6t_length.h deleted file mode 100644 index 9e9689d03ed7..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_length.h +++ /dev/null | |||
| @@ -1,8 +0,0 @@ | |||
| 1 | #ifndef _IP6T_LENGTH_H | ||
| 2 | #define _IP6T_LENGTH_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_length.h> | ||
| 5 | #define ip6t_length_info xt_length_info | ||
| 6 | |||
| 7 | #endif /*_IP6T_LENGTH_H*/ | ||
| 8 | |||
diff --git a/include/linux/netfilter_ipv6/ip6t_limit.h b/include/linux/netfilter_ipv6/ip6t_limit.h deleted file mode 100644 index 487e5ea342c6..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_limit.h +++ /dev/null | |||
| @@ -1,8 +0,0 @@ | |||
| 1 | #ifndef _IP6T_RATE_H | ||
| 2 | #define _IP6T_RATE_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_limit.h> | ||
| 5 | #define IP6T_LIMIT_SCALE XT_LIMIT_SCALE | ||
| 6 | #define ip6t_rateinfo xt_rateinfo | ||
| 7 | |||
| 8 | #endif /*_IP6T_RATE_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_mac.h b/include/linux/netfilter_ipv6/ip6t_mac.h deleted file mode 100644 index ac58e83e9423..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_mac.h +++ /dev/null | |||
| @@ -1,7 +0,0 @@ | |||
| 1 | #ifndef _IP6T_MAC_H | ||
| 2 | #define _IP6T_MAC_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_mac.h> | ||
| 5 | #define ip6t_mac_info xt_mac_info | ||
| 6 | |||
| 7 | #endif /*_IP6T_MAC_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_mark.h b/include/linux/netfilter_ipv6/ip6t_mark.h deleted file mode 100644 index ff204951ddc3..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_mark.h +++ /dev/null | |||
| @@ -1,9 +0,0 @@ | |||
| 1 | #ifndef _IP6T_MARK_H | ||
| 2 | #define _IP6T_MARK_H | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | #include <linux/netfilter/xt_mark.h> | ||
| 6 | |||
| 7 | #define ip6t_mark_info xt_mark_info | ||
| 8 | |||
| 9 | #endif /*_IPT_MARK_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_multiport.h b/include/linux/netfilter_ipv6/ip6t_multiport.h deleted file mode 100644 index 042c92661cee..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_multiport.h +++ /dev/null | |||
| @@ -1,14 +0,0 @@ | |||
| 1 | #ifndef _IP6T_MULTIPORT_H | ||
| 2 | #define _IP6T_MULTIPORT_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_multiport.h> | ||
| 5 | |||
| 6 | #define IP6T_MULTIPORT_SOURCE XT_MULTIPORT_SOURCE | ||
| 7 | #define IP6T_MULTIPORT_DESTINATION XT_MULTIPORT_DESTINATION | ||
| 8 | #define IP6T_MULTIPORT_EITHER XT_MULTIPORT_EITHER | ||
| 9 | |||
| 10 | #define IP6T_MULTI_PORTS XT_MULTI_PORTS | ||
| 11 | |||
| 12 | #define ip6t_multiport xt_multiport | ||
| 13 | |||
| 14 | #endif /*_IP6T_MULTIPORT_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_owner.h b/include/linux/netfilter_ipv6/ip6t_owner.h deleted file mode 100644 index ec5cc7a38c42..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_owner.h +++ /dev/null | |||
| @@ -1,18 +0,0 @@ | |||
| 1 | #ifndef _IP6T_OWNER_H | ||
| 2 | #define _IP6T_OWNER_H | ||
| 3 | |||
| 4 | /* match and invert flags */ | ||
| 5 | #define IP6T_OWNER_UID 0x01 | ||
| 6 | #define IP6T_OWNER_GID 0x02 | ||
| 7 | #define IP6T_OWNER_PID 0x04 | ||
| 8 | #define IP6T_OWNER_SID 0x08 | ||
| 9 | |||
| 10 | struct ip6t_owner_info { | ||
| 11 | __kernel_uid32_t uid; | ||
| 12 | __kernel_gid32_t gid; | ||
| 13 | __kernel_pid_t pid; | ||
| 14 | __kernel_pid_t sid; | ||
| 15 | u_int8_t match, invert; /* flags */ | ||
| 16 | }; | ||
| 17 | |||
| 18 | #endif /*_IPT_OWNER_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_physdev.h b/include/linux/netfilter_ipv6/ip6t_physdev.h deleted file mode 100644 index c161c0a81b55..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_physdev.h +++ /dev/null | |||
| @@ -1,17 +0,0 @@ | |||
| 1 | #ifndef _IP6T_PHYSDEV_H | ||
| 2 | #define _IP6T_PHYSDEV_H | ||
| 3 | |||
| 4 | /* Backwards compatibility for old userspace */ | ||
| 5 | |||
| 6 | #include <linux/netfilter/xt_physdev.h> | ||
| 7 | |||
| 8 | #define IP6T_PHYSDEV_OP_IN XT_PHYSDEV_OP_IN | ||
| 9 | #define IP6T_PHYSDEV_OP_OUT XT_PHYSDEV_OP_OUT | ||
| 10 | #define IP6T_PHYSDEV_OP_BRIDGED XT_PHYSDEV_OP_BRIDGED | ||
| 11 | #define IP6T_PHYSDEV_OP_ISIN XT_PHYSDEV_OP_ISIN | ||
| 12 | #define IP6T_PHYSDEV_OP_ISOUT XT_PHYSDEV_OP_ISOUT | ||
| 13 | #define IP6T_PHYSDEV_OP_MASK XT_PHYSDEV_OP_MASK | ||
| 14 | |||
| 15 | #define ip6t_physdev_info xt_physdev_info | ||
| 16 | |||
| 17 | #endif /*_IP6T_PHYSDEV_H*/ | ||
diff --git a/include/linux/netfilter_ipv6/ip6t_policy.h b/include/linux/netfilter_ipv6/ip6t_policy.h deleted file mode 100644 index b1c449d7ec89..000000000000 --- a/include/linux/netfilter_ipv6/ip6t_policy.h +++ /dev/null | |||
| @@ -1,23 +0,0 @@ | |||
| 1 | #ifndef _IP6T_POLICY_H | ||
| 2 | #define _IP6T_POLICY_H | ||
| 3 | |||
| 4 | #include <linux/netfilter/xt_policy.h> | ||
| 5 | |||
| 6 | #define IP6T_POLICY_MAX_ELEM XT_POLICY_MAX_ELEM | ||
| 7 | |||
| 8 | /* ip6t_policy_flags */ | ||
| 9 | #define IP6T_POLICY_MATCH_IN XT_POLICY_MATCH_IN | ||
| 10 | #define IP6T_POLICY_MATCH_OUT XT_POLICY_MATCH_OUT | ||
| 11 | #define IP6T_POLICY_MATCH_NONE XT_POLICY_MATCH_NONE | ||
| 12 | #define IP6T_POLICY_MATCH_STRICT XT_POLICY_MATCH_STRICT | ||
| 13 | |||
| 14 | /* ip6t_policy_modes */ | ||
| 15 | #define IP6T_POLICY_MODE_TRANSPORT XT_POLICY_MODE_TRANSPORT | ||
| 16 | #define IP6T_POLICY_MODE_TUNNEL XT_POLICY_MODE_TUNNEL | ||
| 17 | |||
| 18 | #define ip6t_policy_spec xt_policy_spec | ||
| 19 | #define ip6t_policy_addr xt_policy_addr | ||
| 20 | #define ip6t_policy_elem xt_policy_elem | ||
| 21 | #define ip6t_policy_info xt_policy_info | ||
| 22 | |||
| 23 | #endif /* _IP6T_POLICY_H */ | ||
diff --git a/include/linux/netlink.h b/include/linux/netlink.h index 5ba398e90304..080f6ba9e73a 100644 --- a/include/linux/netlink.h +++ b/include/linux/netlink.h | |||
| @@ -176,12 +176,16 @@ struct netlink_skb_parms | |||
| 176 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) | 176 | #define NETLINK_CREDS(skb) (&NETLINK_CB((skb)).creds) |
| 177 | 177 | ||
| 178 | 178 | ||
| 179 | extern void netlink_table_grab(void); | ||
| 180 | extern void netlink_table_ungrab(void); | ||
| 181 | |||
| 179 | extern struct sock *netlink_kernel_create(struct net *net, | 182 | extern struct sock *netlink_kernel_create(struct net *net, |
| 180 | int unit,unsigned int groups, | 183 | int unit,unsigned int groups, |
| 181 | void (*input)(struct sk_buff *skb), | 184 | void (*input)(struct sk_buff *skb), |
| 182 | struct mutex *cb_mutex, | 185 | struct mutex *cb_mutex, |
| 183 | struct module *module); | 186 | struct module *module); |
| 184 | extern void netlink_kernel_release(struct sock *sk); | 187 | extern void netlink_kernel_release(struct sock *sk); |
| 188 | extern int __netlink_change_ngroups(struct sock *sk, unsigned int groups); | ||
| 185 | extern int netlink_change_ngroups(struct sock *sk, unsigned int groups); | 189 | extern int netlink_change_ngroups(struct sock *sk, unsigned int groups); |
| 186 | extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group); | 190 | extern void netlink_clear_multicast_users(struct sock *sk, unsigned int group); |
| 187 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); | 191 | extern void netlink_ack(struct sk_buff *in_skb, struct nlmsghdr *nlh, int err); |
| @@ -217,12 +221,13 @@ int netlink_sendskb(struct sock *sk, struct sk_buff *skb); | |||
| 217 | 221 | ||
| 218 | struct netlink_callback | 222 | struct netlink_callback |
| 219 | { | 223 | { |
| 220 | struct sk_buff *skb; | 224 | struct sk_buff *skb; |
| 221 | struct nlmsghdr *nlh; | 225 | const struct nlmsghdr *nlh; |
| 222 | int (*dump)(struct sk_buff * skb, struct netlink_callback *cb); | 226 | int (*dump)(struct sk_buff * skb, |
| 223 | int (*done)(struct netlink_callback *cb); | 227 | struct netlink_callback *cb); |
| 224 | int family; | 228 | int (*done)(struct netlink_callback *cb); |
| 225 | long args[6]; | 229 | int family; |
| 230 | long args[6]; | ||
| 226 | }; | 231 | }; |
| 227 | 232 | ||
| 228 | struct netlink_notify | 233 | struct netlink_notify |
| @@ -258,7 +263,7 @@ __nlmsg_put(struct sk_buff *skb, u32 pid, u32 seq, int type, int len, int flags) | |||
| 258 | NLMSG_NEW(skb, pid, seq, type, len, 0) | 263 | NLMSG_NEW(skb, pid, seq, type, len, 0) |
| 259 | 264 | ||
| 260 | extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, | 265 | extern int netlink_dump_start(struct sock *ssk, struct sk_buff *skb, |
| 261 | struct nlmsghdr *nlh, | 266 | const struct nlmsghdr *nlh, |
| 262 | int (*dump)(struct sk_buff *skb, struct netlink_callback*), | 267 | int (*dump)(struct sk_buff *skb, struct netlink_callback*), |
| 263 | int (*done)(struct netlink_callback*)); | 268 | int (*done)(struct netlink_callback*)); |
| 264 | 269 | ||
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index dbea93b694e5..a8d71ed43a0e 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
| @@ -242,6 +242,29 @@ | |||
| 242 | * @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is | 242 | * @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is |
| 243 | * determined by the network interface. | 243 | * determined by the network interface. |
| 244 | * | 244 | * |
| 245 | * @NL80211_CMD_TESTMODE: testmode command, takes a wiphy (or ifindex) attribute | ||
| 246 | * to identify the device, and the TESTDATA blob attribute to pass through | ||
| 247 | * to the driver. | ||
| 248 | * | ||
| 249 | * @NL80211_CMD_CONNECT: connection request and notification; this command | ||
| 250 | * requests to connect to a specified network but without separating | ||
| 251 | * auth and assoc steps. For this, you need to specify the SSID in a | ||
| 252 | * %NL80211_ATTR_SSID attribute, and can optionally specify the association | ||
| 253 | * IEs in %NL80211_ATTR_IE, %NL80211_ATTR_AUTH_TYPE, %NL80211_ATTR_MAC, | ||
| 254 | * %NL80211_ATTR_WIPHY_FREQ and %NL80211_ATTR_CONTROL_PORT. | ||
| 255 | * It is also sent as an event, with the BSSID and response IEs when the | ||
| 256 | * connection is established or failed to be established. This can be | ||
| 257 | * determined by the STATUS_CODE attribute. | ||
| 258 | * @NL80211_CMD_ROAM: request that the card roam (currently not implemented), | ||
| 259 | * sent as an event when the card/driver roamed by itself. | ||
| 260 | * @NL80211_CMD_DISCONNECT: drop a given connection; also used to notify | ||
| 261 | * userspace that a connection was dropped by the AP or due to other | ||
| 262 | * reasons, for this the %NL80211_ATTR_DISCONNECTED_BY_AP and | ||
| 263 | * %NL80211_ATTR_REASON_CODE attributes are used. | ||
| 264 | * | ||
| 265 | * @NL80211_CMD_SET_WIPHY_NETNS: Set a wiphy's netns. Note that all devices | ||
| 266 | * associated with this wiphy must be down and will follow. | ||
| 267 | * | ||
| 245 | * @NL80211_CMD_MAX: highest used command number | 268 | * @NL80211_CMD_MAX: highest used command number |
| 246 | * @__NL80211_CMD_AFTER_LAST: internal use | 269 | * @__NL80211_CMD_AFTER_LAST: internal use |
| 247 | */ | 270 | */ |
| @@ -310,6 +333,14 @@ enum nl80211_commands { | |||
| 310 | NL80211_CMD_JOIN_IBSS, | 333 | NL80211_CMD_JOIN_IBSS, |
| 311 | NL80211_CMD_LEAVE_IBSS, | 334 | NL80211_CMD_LEAVE_IBSS, |
| 312 | 335 | ||
| 336 | NL80211_CMD_TESTMODE, | ||
| 337 | |||
| 338 | NL80211_CMD_CONNECT, | ||
| 339 | NL80211_CMD_ROAM, | ||
| 340 | NL80211_CMD_DISCONNECT, | ||
| 341 | |||
| 342 | NL80211_CMD_SET_WIPHY_NETNS, | ||
| 343 | |||
| 313 | /* add new commands above here */ | 344 | /* add new commands above here */ |
| 314 | 345 | ||
| 315 | /* used to define NL80211_CMD_MAX below */ | 346 | /* used to define NL80211_CMD_MAX below */ |
| @@ -449,10 +480,6 @@ enum nl80211_commands { | |||
| 449 | * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) | 480 | * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) |
| 450 | * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive | 481 | * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive |
| 451 | * scanning and include a zero-length SSID (wildcard) for wildcard scan | 482 | * scanning and include a zero-length SSID (wildcard) for wildcard scan |
| 452 | * @NL80211_ATTR_SCAN_GENERATION: the scan generation increases whenever the | ||
| 453 | * scan result list changes (BSS expired or added) so that applications | ||
| 454 | * can verify that they got a single, consistent snapshot (when all dump | ||
| 455 | * messages carried the same generation number) | ||
| 456 | * @NL80211_ATTR_BSS: scan result BSS | 483 | * @NL80211_ATTR_BSS: scan result BSS |
| 457 | * | 484 | * |
| 458 | * @NL80211_ATTR_REG_INITIATOR: indicates who requested the regulatory domain | 485 | * @NL80211_ATTR_REG_INITIATOR: indicates who requested the regulatory domain |
| @@ -511,6 +538,52 @@ enum nl80211_commands { | |||
| 511 | * authorized by user space. Otherwise, port is marked authorized by | 538 | * authorized by user space. Otherwise, port is marked authorized by |
| 512 | * default in station mode. | 539 | * default in station mode. |
| 513 | * | 540 | * |
| 541 | * @NL80211_ATTR_TESTDATA: Testmode data blob, passed through to the driver. | ||
| 542 | * We recommend using nested, driver-specific attributes within this. | ||
| 543 | * | ||
| 544 | * @NL80211_ATTR_DISCONNECTED_BY_AP: A flag indicating that the DISCONNECT | ||
| 545 | * event was due to the AP disconnecting the station, and not due to | ||
| 546 | * a local disconnect request. | ||
| 547 | * @NL80211_ATTR_STATUS_CODE: StatusCode for the %NL80211_CMD_CONNECT | ||
| 548 | * event (u16) | ||
| 549 | * @NL80211_ATTR_PRIVACY: Flag attribute, used with connect(), indicating | ||
| 550 | * that protected APs should be used. | ||
| 551 | * | ||
| 552 | * @NL80211_ATTR_CIPHERS_PAIRWISE: Used with CONNECT and ASSOCIATE to | ||
| 553 | * indicate which unicast key ciphers will be used with the connection | ||
| 554 | * (an array of u32). | ||
| 555 | * @NL80211_ATTR_CIPHER_GROUP: Used with CONNECT and ASSOCIATE to indicate | ||
| 556 | * which group key cipher will be used with the connection (a u32). | ||
| 557 | * @NL80211_ATTR_WPA_VERSIONS: Used with CONNECT and ASSOCIATE to indicate | ||
| 558 | * which WPA version(s) the AP we want to associate with is using | ||
| 559 | * (a u32 with flags from &enum nl80211_wpa_versions). | ||
| 560 | * @NL80211_ATTR_AKM_SUITES: Used with CONNECT and ASSOCIATE to indicate | ||
| 561 | * which key management algorithm(s) to use (an array of u32). | ||
| 562 | * | ||
| 563 | * @NL80211_ATTR_REQ_IE: (Re)association request information elements as | ||
| 564 | * sent out by the card, for ROAM and successful CONNECT events. | ||
| 565 | * @NL80211_ATTR_RESP_IE: (Re)association response information elements as | ||
| 566 | * sent by peer, for ROAM and successful CONNECT events. | ||
| 567 | * | ||
| 568 | * @NL80211_ATTR_PREV_BSSID: previous BSSID, to be used by in ASSOCIATE | ||
| 569 | * commands to specify using a reassociate frame | ||
| 570 | * | ||
| 571 | * @NL80211_ATTR_KEY: key information in a nested attribute with | ||
| 572 | * %NL80211_KEY_* sub-attributes | ||
| 573 | * @NL80211_ATTR_KEYS: array of keys for static WEP keys for connect() | ||
| 574 | * and join_ibss(), key information is in a nested attribute each | ||
| 575 | * with %NL80211_KEY_* sub-attributes | ||
| 576 | * | ||
| 577 | * @NL80211_ATTR_PID: Process ID of a network namespace. | ||
| 578 | * | ||
| 579 | * @NL80211_ATTR_GENERATION: Used to indicate consistent snapshots for | ||
| 580 | * dumps. This number increases whenever the object list being | ||
| 581 | * dumped changes, and as such userspace can verify that it has | ||
| 582 | * obtained a complete and consistent snapshot by verifying that | ||
| 583 | * all dump messages contain the same generation number. If it | ||
| 584 | * changed then the list changed and the dump should be repeated | ||
| 585 | * completely from scratch. | ||
| 586 | * | ||
| 514 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 587 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 515 | * @__NL80211_ATTR_AFTER_LAST: internal use | 588 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| 516 | */ | 589 | */ |
| @@ -582,7 +655,7 @@ enum nl80211_attrs { | |||
| 582 | 655 | ||
| 583 | NL80211_ATTR_SCAN_FREQUENCIES, | 656 | NL80211_ATTR_SCAN_FREQUENCIES, |
| 584 | NL80211_ATTR_SCAN_SSIDS, | 657 | NL80211_ATTR_SCAN_SSIDS, |
| 585 | NL80211_ATTR_SCAN_GENERATION, | 658 | NL80211_ATTR_GENERATION, /* replaces old SCAN_GENERATION */ |
| 586 | NL80211_ATTR_BSS, | 659 | NL80211_ATTR_BSS, |
| 587 | 660 | ||
| 588 | NL80211_ATTR_REG_INITIATOR, | 661 | NL80211_ATTR_REG_INITIATOR, |
| @@ -619,16 +692,42 @@ enum nl80211_attrs { | |||
| 619 | 692 | ||
| 620 | NL80211_ATTR_CONTROL_PORT, | 693 | NL80211_ATTR_CONTROL_PORT, |
| 621 | 694 | ||
| 695 | NL80211_ATTR_TESTDATA, | ||
| 696 | |||
| 697 | NL80211_ATTR_PRIVACY, | ||
| 698 | |||
| 699 | NL80211_ATTR_DISCONNECTED_BY_AP, | ||
| 700 | NL80211_ATTR_STATUS_CODE, | ||
| 701 | |||
| 702 | NL80211_ATTR_CIPHER_SUITES_PAIRWISE, | ||
| 703 | NL80211_ATTR_CIPHER_SUITE_GROUP, | ||
| 704 | NL80211_ATTR_WPA_VERSIONS, | ||
| 705 | NL80211_ATTR_AKM_SUITES, | ||
| 706 | |||
| 707 | NL80211_ATTR_REQ_IE, | ||
| 708 | NL80211_ATTR_RESP_IE, | ||
| 709 | |||
| 710 | NL80211_ATTR_PREV_BSSID, | ||
| 711 | |||
| 712 | NL80211_ATTR_KEY, | ||
| 713 | NL80211_ATTR_KEYS, | ||
| 714 | |||
| 715 | NL80211_ATTR_PID, | ||
| 716 | |||
| 622 | /* add attributes here, update the policy in nl80211.c */ | 717 | /* add attributes here, update the policy in nl80211.c */ |
| 623 | 718 | ||
| 624 | __NL80211_ATTR_AFTER_LAST, | 719 | __NL80211_ATTR_AFTER_LAST, |
| 625 | NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 | 720 | NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 |
| 626 | }; | 721 | }; |
| 627 | 722 | ||
| 723 | /* source-level API compatibility */ | ||
| 724 | #define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION | ||
| 725 | |||
| 628 | /* | 726 | /* |
| 629 | * Allow user space programs to use #ifdef on new attributes by defining them | 727 | * Allow user space programs to use #ifdef on new attributes by defining them |
| 630 | * here | 728 | * here |
| 631 | */ | 729 | */ |
| 730 | #define NL80211_CMD_CONNECT NL80211_CMD_CONNECT | ||
| 632 | #define NL80211_ATTR_HT_CAPABILITY NL80211_ATTR_HT_CAPABILITY | 731 | #define NL80211_ATTR_HT_CAPABILITY NL80211_ATTR_HT_CAPABILITY |
| 633 | #define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES | 732 | #define NL80211_ATTR_BSS_BASIC_RATES NL80211_ATTR_BSS_BASIC_RATES |
| 634 | #define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS | 733 | #define NL80211_ATTR_WIPHY_TXQ_PARAMS NL80211_ATTR_WIPHY_TXQ_PARAMS |
| @@ -642,6 +741,12 @@ enum nl80211_attrs { | |||
| 642 | #define NL80211_ATTR_SSID NL80211_ATTR_SSID | 741 | #define NL80211_ATTR_SSID NL80211_ATTR_SSID |
| 643 | #define NL80211_ATTR_AUTH_TYPE NL80211_ATTR_AUTH_TYPE | 742 | #define NL80211_ATTR_AUTH_TYPE NL80211_ATTR_AUTH_TYPE |
| 644 | #define NL80211_ATTR_REASON_CODE NL80211_ATTR_REASON_CODE | 743 | #define NL80211_ATTR_REASON_CODE NL80211_ATTR_REASON_CODE |
| 744 | #define NL80211_ATTR_CIPHER_SUITES_PAIRWISE NL80211_ATTR_CIPHER_SUITES_PAIRWISE | ||
| 745 | #define NL80211_ATTR_CIPHER_SUITE_GROUP NL80211_ATTR_CIPHER_SUITE_GROUP | ||
| 746 | #define NL80211_ATTR_WPA_VERSIONS NL80211_ATTR_WPA_VERSIONS | ||
| 747 | #define NL80211_ATTR_AKM_SUITES NL80211_ATTR_AKM_SUITES | ||
| 748 | #define NL80211_ATTR_KEY NL80211_ATTR_KEY | ||
| 749 | #define NL80211_ATTR_KEYS NL80211_ATTR_KEYS | ||
| 645 | 750 | ||
| 646 | #define NL80211_MAX_SUPP_RATES 32 | 751 | #define NL80211_MAX_SUPP_RATES 32 |
| 647 | #define NL80211_MAX_SUPP_REG_RULES 32 | 752 | #define NL80211_MAX_SUPP_REG_RULES 32 |
| @@ -650,6 +755,9 @@ enum nl80211_attrs { | |||
| 650 | #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 | 755 | #define NL80211_TKIP_DATA_OFFSET_RX_MIC_KEY 24 |
| 651 | #define NL80211_HT_CAPABILITY_LEN 26 | 756 | #define NL80211_HT_CAPABILITY_LEN 26 |
| 652 | 757 | ||
| 758 | #define NL80211_MAX_NR_CIPHER_SUITES 5 | ||
| 759 | #define NL80211_MAX_NR_AKM_SUITES 2 | ||
| 760 | |||
| 653 | /** | 761 | /** |
| 654 | * enum nl80211_iftype - (virtual) interface types | 762 | * enum nl80211_iftype - (virtual) interface types |
| 655 | * | 763 | * |
| @@ -1168,6 +1276,7 @@ enum nl80211_channel_type { | |||
| 1168 | * in mBm (100 * dBm) (s32) | 1276 | * in mBm (100 * dBm) (s32) |
| 1169 | * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon | 1277 | * @NL80211_BSS_SIGNAL_UNSPEC: signal strength of the probe response/beacon |
| 1170 | * in unspecified units, scaled to 0..100 (u8) | 1278 | * in unspecified units, scaled to 0..100 (u8) |
| 1279 | * @NL80211_BSS_STATUS: status, if this BSS is "used" | ||
| 1171 | * @__NL80211_BSS_AFTER_LAST: internal | 1280 | * @__NL80211_BSS_AFTER_LAST: internal |
| 1172 | * @NL80211_BSS_MAX: highest BSS attribute | 1281 | * @NL80211_BSS_MAX: highest BSS attribute |
| 1173 | */ | 1282 | */ |
| @@ -1181,6 +1290,7 @@ enum nl80211_bss { | |||
| 1181 | NL80211_BSS_INFORMATION_ELEMENTS, | 1290 | NL80211_BSS_INFORMATION_ELEMENTS, |
| 1182 | NL80211_BSS_SIGNAL_MBM, | 1291 | NL80211_BSS_SIGNAL_MBM, |
| 1183 | NL80211_BSS_SIGNAL_UNSPEC, | 1292 | NL80211_BSS_SIGNAL_UNSPEC, |
| 1293 | NL80211_BSS_STATUS, | ||
| 1184 | 1294 | ||
| 1185 | /* keep last */ | 1295 | /* keep last */ |
| 1186 | __NL80211_BSS_AFTER_LAST, | 1296 | __NL80211_BSS_AFTER_LAST, |
| @@ -1188,18 +1298,37 @@ enum nl80211_bss { | |||
| 1188 | }; | 1298 | }; |
| 1189 | 1299 | ||
| 1190 | /** | 1300 | /** |
| 1301 | * enum nl80211_bss_status - BSS "status" | ||
| 1302 | */ | ||
| 1303 | enum nl80211_bss_status { | ||
| 1304 | NL80211_BSS_STATUS_AUTHENTICATED, | ||
| 1305 | NL80211_BSS_STATUS_ASSOCIATED, | ||
| 1306 | NL80211_BSS_STATUS_IBSS_JOINED, | ||
| 1307 | }; | ||
| 1308 | |||
| 1309 | /** | ||
| 1191 | * enum nl80211_auth_type - AuthenticationType | 1310 | * enum nl80211_auth_type - AuthenticationType |
| 1192 | * | 1311 | * |
| 1193 | * @NL80211_AUTHTYPE_OPEN_SYSTEM: Open System authentication | 1312 | * @NL80211_AUTHTYPE_OPEN_SYSTEM: Open System authentication |
| 1194 | * @NL80211_AUTHTYPE_SHARED_KEY: Shared Key authentication (WEP only) | 1313 | * @NL80211_AUTHTYPE_SHARED_KEY: Shared Key authentication (WEP only) |
| 1195 | * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r) | 1314 | * @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r) |
| 1196 | * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP) | 1315 | * @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP) |
| 1316 | * @__NL80211_AUTHTYPE_NUM: internal | ||
| 1317 | * @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm | ||
| 1318 | * @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by | ||
| 1319 | * trying multiple times); this is invalid in netlink -- leave out | ||
| 1320 | * the attribute for this on CONNECT commands. | ||
| 1197 | */ | 1321 | */ |
| 1198 | enum nl80211_auth_type { | 1322 | enum nl80211_auth_type { |
| 1199 | NL80211_AUTHTYPE_OPEN_SYSTEM, | 1323 | NL80211_AUTHTYPE_OPEN_SYSTEM, |
| 1200 | NL80211_AUTHTYPE_SHARED_KEY, | 1324 | NL80211_AUTHTYPE_SHARED_KEY, |
| 1201 | NL80211_AUTHTYPE_FT, | 1325 | NL80211_AUTHTYPE_FT, |
| 1202 | NL80211_AUTHTYPE_NETWORK_EAP, | 1326 | NL80211_AUTHTYPE_NETWORK_EAP, |
| 1327 | |||
| 1328 | /* keep last */ | ||
| 1329 | __NL80211_AUTHTYPE_NUM, | ||
| 1330 | NL80211_AUTHTYPE_MAX = __NL80211_AUTHTYPE_NUM - 1, | ||
| 1331 | NL80211_AUTHTYPE_AUTOMATIC | ||
| 1203 | }; | 1332 | }; |
| 1204 | 1333 | ||
| 1205 | /** | 1334 | /** |
| @@ -1224,4 +1353,39 @@ enum nl80211_mfp { | |||
| 1224 | NL80211_MFP_REQUIRED, | 1353 | NL80211_MFP_REQUIRED, |
| 1225 | }; | 1354 | }; |
| 1226 | 1355 | ||
| 1356 | enum nl80211_wpa_versions { | ||
| 1357 | NL80211_WPA_VERSION_1 = 1 << 0, | ||
| 1358 | NL80211_WPA_VERSION_2 = 1 << 1, | ||
| 1359 | }; | ||
| 1360 | |||
| 1361 | /** | ||
| 1362 | * enum nl80211_key_attributes - key attributes | ||
| 1363 | * @__NL80211_KEY_INVALID: invalid | ||
| 1364 | * @NL80211_KEY_DATA: (temporal) key data; for TKIP this consists of | ||
| 1365 | * 16 bytes encryption key followed by 8 bytes each for TX and RX MIC | ||
| 1366 | * keys | ||
| 1367 | * @NL80211_KEY_IDX: key ID (u8, 0-3) | ||
| 1368 | * @NL80211_KEY_CIPHER: key cipher suite (u32, as defined by IEEE 802.11 | ||
| 1369 | * section 7.3.2.25.1, e.g. 0x000FAC04) | ||
| 1370 | * @NL80211_KEY_SEQ: transmit key sequence number (IV/PN) for TKIP and | ||
| 1371 | * CCMP keys, each six bytes in little endian | ||
| 1372 | * @NL80211_KEY_DEFAULT: flag indicating default key | ||
| 1373 | * @NL80211_KEY_DEFAULT_MGMT: flag indicating default management key | ||
| 1374 | * @__NL80211_KEY_AFTER_LAST: internal | ||
| 1375 | * @NL80211_KEY_MAX: highest key attribute | ||
| 1376 | */ | ||
| 1377 | enum nl80211_key_attributes { | ||
| 1378 | __NL80211_KEY_INVALID, | ||
| 1379 | NL80211_KEY_DATA, | ||
| 1380 | NL80211_KEY_IDX, | ||
| 1381 | NL80211_KEY_CIPHER, | ||
| 1382 | NL80211_KEY_SEQ, | ||
| 1383 | NL80211_KEY_DEFAULT, | ||
| 1384 | NL80211_KEY_DEFAULT_MGMT, | ||
| 1385 | |||
| 1386 | /* keep last */ | ||
| 1387 | __NL80211_KEY_AFTER_LAST, | ||
| 1388 | NL80211_KEY_MAX = __NL80211_KEY_AFTER_LAST - 1 | ||
| 1389 | }; | ||
| 1390 | |||
| 1227 | #endif /* __LINUX_NL80211_H */ | 1391 | #endif /* __LINUX_NL80211_H */ |
diff --git a/include/linux/nl802154.h b/include/linux/nl802154.h index 2cda00ccfcca..b7d9435d5a9f 100644 --- a/include/linux/nl802154.h +++ b/include/linux/nl802154.h | |||
| @@ -64,12 +64,14 @@ enum { | |||
| 64 | IEEE802154_ATTR_COORD_REALIGN, | 64 | IEEE802154_ATTR_COORD_REALIGN, |
| 65 | IEEE802154_ATTR_SEC, | 65 | IEEE802154_ATTR_SEC, |
| 66 | 66 | ||
| 67 | IEEE802154_ATTR_PAGE, | ||
| 68 | |||
| 67 | __IEEE802154_ATTR_MAX, | 69 | __IEEE802154_ATTR_MAX, |
| 68 | }; | 70 | }; |
| 69 | 71 | ||
| 70 | #define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1) | 72 | #define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1) |
| 71 | 73 | ||
| 72 | extern struct nla_policy ieee802154_policy[]; | 74 | extern const struct nla_policy ieee802154_policy[]; |
| 73 | 75 | ||
| 74 | /* commands */ | 76 | /* commands */ |
| 75 | /* REQ should be responded with CONF | 77 | /* REQ should be responded with CONF |
| @@ -111,6 +113,8 @@ enum { | |||
| 111 | IEEE802154_RX_ENABLE_REQ, /* Not supported yet */ | 113 | IEEE802154_RX_ENABLE_REQ, /* Not supported yet */ |
| 112 | IEEE802154_RX_ENABLE_CONF, /* Not supported yet */ | 114 | IEEE802154_RX_ENABLE_CONF, /* Not supported yet */ |
| 113 | 115 | ||
| 116 | IEEE802154_LIST_IFACE, | ||
| 117 | |||
| 114 | __IEEE802154_CMD_MAX, | 118 | __IEEE802154_CMD_MAX, |
| 115 | }; | 119 | }; |
| 116 | 120 | ||
diff --git a/include/linux/notifier.h b/include/linux/notifier.h index 81bc252dc8ac..44428d247dbe 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h | |||
| @@ -199,6 +199,8 @@ static inline int notifier_to_errno(int ret) | |||
| 199 | #define NETDEV_FEAT_CHANGE 0x000B | 199 | #define NETDEV_FEAT_CHANGE 0x000B |
| 200 | #define NETDEV_BONDING_FAILOVER 0x000C | 200 | #define NETDEV_BONDING_FAILOVER 0x000C |
| 201 | #define NETDEV_PRE_UP 0x000D | 201 | #define NETDEV_PRE_UP 0x000D |
| 202 | #define NETDEV_BONDING_OLDTYPE 0x000E | ||
| 203 | #define NETDEV_BONDING_NEWTYPE 0x000F | ||
| 202 | 204 | ||
| 203 | #define SYS_DOWN 0x0001 /* Notify of system down */ | 205 | #define SYS_DOWN 0x0001 /* Notify of system down */ |
| 204 | #define SYS_RESTART SYS_DOWN | 206 | #define SYS_RESTART SYS_DOWN |
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index e2e5ce543595..2b87acfc5f87 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -99,7 +99,7 @@ enum pageflags { | |||
| 99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
| 100 | PG_mlocked, /* Page is vma mlocked */ | 100 | PG_mlocked, /* Page is vma mlocked */ |
| 101 | #endif | 101 | #endif |
| 102 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 102 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
| 103 | PG_uncached, /* Page has been mapped as uncached */ | 103 | PG_uncached, /* Page has been mapped as uncached */ |
| 104 | #endif | 104 | #endif |
| 105 | __NR_PAGEFLAGS, | 105 | __NR_PAGEFLAGS, |
| @@ -257,7 +257,7 @@ PAGEFLAG_FALSE(Mlocked) | |||
| 257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) | 257 | SETPAGEFLAG_NOOP(Mlocked) TESTCLEARFLAG_FALSE(Mlocked) |
| 258 | #endif | 258 | #endif |
| 259 | 259 | ||
| 260 | #ifdef CONFIG_IA64_UNCACHED_ALLOCATOR | 260 | #ifdef CONFIG_ARCH_USES_PG_UNCACHED |
| 261 | PAGEFLAG(Uncached, uncached) | 261 | PAGEFLAG(Uncached, uncached) |
| 262 | #else | 262 | #else |
| 263 | PAGEFLAG_FALSE(Uncached) | 263 | PAGEFLAG_FALSE(Uncached) |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 115fb7ba5089..f5c7cd343e56 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -241,6 +241,7 @@ struct pci_dev { | |||
| 241 | unsigned int d1_support:1; /* Low power state D1 is supported */ | 241 | unsigned int d1_support:1; /* Low power state D1 is supported */ |
| 242 | unsigned int d2_support:1; /* Low power state D2 is supported */ | 242 | unsigned int d2_support:1; /* Low power state D2 is supported */ |
| 243 | unsigned int no_d1d2:1; /* Only allow D0 and D3 */ | 243 | unsigned int no_d1d2:1; /* Only allow D0 and D3 */ |
| 244 | unsigned int wakeup_prepared:1; | ||
| 244 | 245 | ||
| 245 | #ifdef CONFIG_PCIEASPM | 246 | #ifdef CONFIG_PCIEASPM |
| 246 | struct pcie_link_state *link_state; /* ASPM link state. */ | 247 | struct pcie_link_state *link_state; /* ASPM link state. */ |
| @@ -273,9 +274,12 @@ struct pci_dev { | |||
| 273 | unsigned int ari_enabled:1; /* ARI forwarding */ | 274 | unsigned int ari_enabled:1; /* ARI forwarding */ |
| 274 | unsigned int is_managed:1; | 275 | unsigned int is_managed:1; |
| 275 | unsigned int is_pcie:1; | 276 | unsigned int is_pcie:1; |
| 277 | unsigned int needs_freset:1; /* Dev requires fundamental reset */ | ||
| 276 | unsigned int state_saved:1; | 278 | unsigned int state_saved:1; |
| 277 | unsigned int is_physfn:1; | 279 | unsigned int is_physfn:1; |
| 278 | unsigned int is_virtfn:1; | 280 | unsigned int is_virtfn:1; |
| 281 | unsigned int reset_fn:1; | ||
| 282 | unsigned int is_hotplug_bridge:1; | ||
| 279 | pci_dev_flags_t dev_flags; | 283 | pci_dev_flags_t dev_flags; |
| 280 | atomic_t enable_cnt; /* pci_enable_device has been called */ | 284 | atomic_t enable_cnt; /* pci_enable_device has been called */ |
| 281 | 285 | ||
| @@ -794,6 +798,11 @@ int __must_check __pci_register_driver(struct pci_driver *, struct module *, | |||
| 794 | void pci_unregister_driver(struct pci_driver *dev); | 798 | void pci_unregister_driver(struct pci_driver *dev); |
| 795 | void pci_remove_behind_bridge(struct pci_dev *dev); | 799 | void pci_remove_behind_bridge(struct pci_dev *dev); |
| 796 | struct pci_driver *pci_dev_driver(const struct pci_dev *dev); | 800 | struct pci_driver *pci_dev_driver(const struct pci_dev *dev); |
| 801 | int pci_add_dynid(struct pci_driver *drv, | ||
| 802 | unsigned int vendor, unsigned int device, | ||
| 803 | unsigned int subvendor, unsigned int subdevice, | ||
| 804 | unsigned int class, unsigned int class_mask, | ||
| 805 | unsigned long driver_data); | ||
| 797 | const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, | 806 | const struct pci_device_id *pci_match_id(const struct pci_device_id *ids, |
| 798 | struct pci_dev *dev); | 807 | struct pci_dev *dev); |
| 799 | int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, | 808 | int pci_scan_bridge(struct pci_bus *bus, struct pci_dev *dev, int max, |
| @@ -805,6 +814,8 @@ int pci_cfg_space_size_ext(struct pci_dev *dev); | |||
| 805 | int pci_cfg_space_size(struct pci_dev *dev); | 814 | int pci_cfg_space_size(struct pci_dev *dev); |
| 806 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); | 815 | unsigned char pci_bus_max_busnr(struct pci_bus *bus); |
| 807 | 816 | ||
| 817 | int pci_set_vga_state(struct pci_dev *pdev, bool decode, | ||
| 818 | unsigned int command_bits, bool change_bridge); | ||
| 808 | /* kmem_cache style wrapper around pci_alloc_consistent() */ | 819 | /* kmem_cache style wrapper around pci_alloc_consistent() */ |
| 809 | 820 | ||
| 810 | #include <linux/dmapool.h> | 821 | #include <linux/dmapool.h> |
| @@ -1236,6 +1247,9 @@ extern int pci_pci_problems; | |||
| 1236 | extern unsigned long pci_cardbus_io_size; | 1247 | extern unsigned long pci_cardbus_io_size; |
| 1237 | extern unsigned long pci_cardbus_mem_size; | 1248 | extern unsigned long pci_cardbus_mem_size; |
| 1238 | 1249 | ||
| 1250 | extern unsigned long pci_hotplug_io_size; | ||
| 1251 | extern unsigned long pci_hotplug_mem_size; | ||
| 1252 | |||
| 1239 | int pcibios_add_platform_entries(struct pci_dev *dev); | 1253 | int pcibios_add_platform_entries(struct pci_dev *dev); |
| 1240 | void pcibios_disable_device(struct pci_dev *dev); | 1254 | void pcibios_disable_device(struct pci_dev *dev); |
| 1241 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, | 1255 | int pcibios_set_pcie_reset_state(struct pci_dev *dev, |
diff --git a/include/linux/pci_hotplug.h b/include/linux/pci_hotplug.h index 4391741b99dc..652ba797696d 100644 --- a/include/linux/pci_hotplug.h +++ b/include/linux/pci_hotplug.h | |||
| @@ -62,7 +62,8 @@ enum pcie_link_width { | |||
| 62 | }; | 62 | }; |
| 63 | 63 | ||
| 64 | enum pcie_link_speed { | 64 | enum pcie_link_speed { |
| 65 | PCIE_2PT5GB = 0x14, | 65 | PCIE_2_5GB = 0x14, |
| 66 | PCIE_5_0GB = 0x15, | ||
| 66 | PCIE_LNK_SPEED_UNKNOWN = 0xFF, | 67 | PCIE_LNK_SPEED_UNKNOWN = 0xFF, |
| 67 | }; | 68 | }; |
| 68 | 69 | ||
| @@ -226,11 +227,18 @@ struct hotplug_params { | |||
| 226 | #ifdef CONFIG_ACPI | 227 | #ifdef CONFIG_ACPI |
| 227 | #include <acpi/acpi.h> | 228 | #include <acpi/acpi.h> |
| 228 | #include <acpi/acpi_bus.h> | 229 | #include <acpi/acpi_bus.h> |
| 229 | extern acpi_status acpi_get_hp_params_from_firmware(struct pci_bus *bus, | 230 | int pci_get_hp_params(struct pci_dev *dev, struct hotplug_params *hpp); |
| 230 | struct hotplug_params *hpp); | ||
| 231 | int acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev, u32 flags); | 231 | int acpi_get_hp_hw_control_from_firmware(struct pci_dev *dev, u32 flags); |
| 232 | int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle); | 232 | int acpi_pci_check_ejectable(struct pci_bus *pbus, acpi_handle handle); |
| 233 | int acpi_pci_detect_ejectable(struct pci_bus *pbus); | 233 | int acpi_pci_detect_ejectable(acpi_handle handle); |
| 234 | #else | ||
| 235 | static inline int pci_get_hp_params(struct pci_dev *dev, | ||
| 236 | struct hotplug_params *hpp) | ||
| 237 | { | ||
| 238 | return -ENODEV; | ||
| 239 | } | ||
| 234 | #endif | 240 | #endif |
| 241 | |||
| 242 | void pci_configure_slot(struct pci_dev *dev); | ||
| 235 | #endif | 243 | #endif |
| 236 | 244 | ||
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index c8fdcadce437..3b6b788fe2b5 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -2,6 +2,9 @@ | |||
| 2 | * PCI Class, Vendor and Device IDs | 2 | * PCI Class, Vendor and Device IDs |
| 3 | * | 3 | * |
| 4 | * Please keep sorted. | 4 | * Please keep sorted. |
| 5 | * | ||
| 6 | * Do not add new entries to this file unless the definitions | ||
| 7 | * are shared between multiple drivers. | ||
| 5 | */ | 8 | */ |
| 6 | 9 | ||
| 7 | /* Device classes and subclasses */ | 10 | /* Device classes and subclasses */ |
| @@ -881,6 +884,7 @@ | |||
| 881 | #define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 | 884 | #define PCI_DEVICE_ID_APPLE_SH_SUNGEM 0x0051 |
| 882 | #define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058 | 885 | #define PCI_DEVICE_ID_APPLE_U3L_AGP 0x0058 |
| 883 | #define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059 | 886 | #define PCI_DEVICE_ID_APPLE_U3H_AGP 0x0059 |
| 887 | #define PCI_DEVICE_ID_APPLE_U4_PCIE 0x005b | ||
| 884 | #define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066 | 888 | #define PCI_DEVICE_ID_APPLE_IPID2_AGP 0x0066 |
| 885 | #define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069 | 889 | #define PCI_DEVICE_ID_APPLE_IPID2_ATA 0x0069 |
| 886 | #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a | 890 | #define PCI_DEVICE_ID_APPLE_IPID2_FW 0x006a |
| @@ -1525,6 +1529,8 @@ | |||
| 1525 | #define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007 | 1529 | #define PCI_DEVICE_ID_ARTOP_ATP860R 0x0007 |
| 1526 | #define PCI_DEVICE_ID_ARTOP_ATP865 0x0008 | 1530 | #define PCI_DEVICE_ID_ARTOP_ATP865 0x0008 |
| 1527 | #define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009 | 1531 | #define PCI_DEVICE_ID_ARTOP_ATP865R 0x0009 |
| 1532 | #define PCI_DEVICE_ID_ARTOP_ATP867A 0x000A | ||
| 1533 | #define PCI_DEVICE_ID_ARTOP_ATP867B 0x000B | ||
| 1528 | #define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002 | 1534 | #define PCI_DEVICE_ID_ARTOP_AEC7610 0x8002 |
| 1529 | #define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010 | 1535 | #define PCI_DEVICE_ID_ARTOP_AEC7612UW 0x8010 |
| 1530 | #define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020 | 1536 | #define PCI_DEVICE_ID_ARTOP_AEC7612U 0x8020 |
| @@ -1988,6 +1994,8 @@ | |||
| 1988 | 1994 | ||
| 1989 | #define PCI_VENDOR_ID_SAMSUNG 0x144d | 1995 | #define PCI_VENDOR_ID_SAMSUNG 0x144d |
| 1990 | 1996 | ||
| 1997 | #define PCI_VENDOR_ID_GIGABYTE 0x1458 | ||
| 1998 | |||
| 1991 | #define PCI_VENDOR_ID_AMBIT 0x1468 | 1999 | #define PCI_VENDOR_ID_AMBIT 0x1468 |
| 1992 | 2000 | ||
| 1993 | #define PCI_VENDOR_ID_MYRICOM 0x14c1 | 2001 | #define PCI_VENDOR_ID_MYRICOM 0x14c1 |
| @@ -2066,7 +2074,6 @@ | |||
| 2066 | #define PCI_DEVICE_ID_TIGON3_5787M 0x1693 | 2074 | #define PCI_DEVICE_ID_TIGON3_5787M 0x1693 |
| 2067 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 | 2075 | #define PCI_DEVICE_ID_TIGON3_5782 0x1696 |
| 2068 | #define PCI_DEVICE_ID_TIGON3_5784 0x1698 | 2076 | #define PCI_DEVICE_ID_TIGON3_5784 0x1698 |
| 2069 | #define PCI_DEVICE_ID_TIGON3_5785 0x1699 | ||
| 2070 | #define PCI_DEVICE_ID_TIGON3_5786 0x169a | 2077 | #define PCI_DEVICE_ID_TIGON3_5786 0x169a |
| 2071 | #define PCI_DEVICE_ID_TIGON3_5787 0x169b | 2078 | #define PCI_DEVICE_ID_TIGON3_5787 0x169b |
| 2072 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c | 2079 | #define PCI_DEVICE_ID_TIGON3_5788 0x169c |
diff --git a/include/linux/pci_regs.h b/include/linux/pci_regs.h index fcaee42c7ac2..dd0bed4f1cf0 100644 --- a/include/linux/pci_regs.h +++ b/include/linux/pci_regs.h | |||
| @@ -42,6 +42,7 @@ | |||
| 42 | #define PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */ | 42 | #define PCI_COMMAND_INTX_DISABLE 0x400 /* INTx Emulation Disable */ |
| 43 | 43 | ||
| 44 | #define PCI_STATUS 0x06 /* 16 bits */ | 44 | #define PCI_STATUS 0x06 /* 16 bits */ |
| 45 | #define PCI_STATUS_INTERRUPT 0x08 /* Interrupt status */ | ||
| 45 | #define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ | 46 | #define PCI_STATUS_CAP_LIST 0x10 /* Support Capability List */ |
| 46 | #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ | 47 | #define PCI_STATUS_66MHZ 0x20 /* Support 66 Mhz PCI 2.1 bus */ |
| 47 | #define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */ | 48 | #define PCI_STATUS_UDF 0x40 /* Support User Definable Features [obsolete] */ |
diff --git a/include/linux/percpu-defs.h b/include/linux/percpu-defs.h index 68438e18fff4..9bd03193ecd4 100644 --- a/include/linux/percpu-defs.h +++ b/include/linux/percpu-defs.h | |||
| @@ -10,22 +10,70 @@ | |||
| 10 | /* | 10 | /* |
| 11 | * Base implementations of per-CPU variable declarations and definitions, where | 11 | * Base implementations of per-CPU variable declarations and definitions, where |
| 12 | * the section in which the variable is to be placed is provided by the | 12 | * the section in which the variable is to be placed is provided by the |
| 13 | * 'section' argument. This may be used to affect the parameters governing the | 13 | * 'sec' argument. This may be used to affect the parameters governing the |
| 14 | * variable's storage. | 14 | * variable's storage. |
| 15 | * | 15 | * |
| 16 | * NOTE! The sections for the DECLARE and for the DEFINE must match, lest | 16 | * NOTE! The sections for the DECLARE and for the DEFINE must match, lest |
| 17 | * linkage errors occur due the compiler generating the wrong code to access | 17 | * linkage errors occur due the compiler generating the wrong code to access |
| 18 | * that section. | 18 | * that section. |
| 19 | */ | 19 | */ |
| 20 | #define DECLARE_PER_CPU_SECTION(type, name, section) \ | 20 | #define __PCPU_ATTRS(sec) \ |
| 21 | extern \ | 21 | __attribute__((section(PER_CPU_BASE_SECTION sec))) \ |
| 22 | __attribute__((__section__(PER_CPU_BASE_SECTION section))) \ | 22 | PER_CPU_ATTRIBUTES |
| 23 | PER_CPU_ATTRIBUTES __typeof__(type) per_cpu__##name | 23 | |
| 24 | 24 | #define __PCPU_DUMMY_ATTRS \ | |
| 25 | #define DEFINE_PER_CPU_SECTION(type, name, section) \ | 25 | __attribute__((section(".discard"), unused)) |
| 26 | __attribute__((__section__(PER_CPU_BASE_SECTION section))) \ | 26 | |
| 27 | PER_CPU_ATTRIBUTES PER_CPU_DEF_ATTRIBUTES \ | 27 | /* |
| 28 | * s390 and alpha modules require percpu variables to be defined as | ||
| 29 | * weak to force the compiler to generate GOT based external | ||
| 30 | * references for them. This is necessary because percpu sections | ||
| 31 | * will be located outside of the usually addressable area. | ||
| 32 | * | ||
| 33 | * This definition puts the following two extra restrictions when | ||
| 34 | * defining percpu variables. | ||
| 35 | * | ||
| 36 | * 1. The symbol must be globally unique, even the static ones. | ||
| 37 | * 2. Static percpu variables cannot be defined inside a function. | ||
| 38 | * | ||
| 39 | * Archs which need weak percpu definitions should define | ||
| 40 | * ARCH_NEEDS_WEAK_PER_CPU in asm/percpu.h when necessary. | ||
| 41 | * | ||
| 42 | * To ensure that the generic code observes the above two | ||
| 43 | * restrictions, if CONFIG_DEBUG_FORCE_WEAK_PER_CPU is set weak | ||
| 44 | * definition is used for all cases. | ||
| 45 | */ | ||
| 46 | #if defined(ARCH_NEEDS_WEAK_PER_CPU) || defined(CONFIG_DEBUG_FORCE_WEAK_PER_CPU) | ||
| 47 | /* | ||
| 48 | * __pcpu_scope_* dummy variable is used to enforce scope. It | ||
| 49 | * receives the static modifier when it's used in front of | ||
| 50 | * DEFINE_PER_CPU() and will trigger build failure if | ||
| 51 | * DECLARE_PER_CPU() is used for the same variable. | ||
| 52 | * | ||
| 53 | * __pcpu_unique_* dummy variable is used to enforce symbol uniqueness | ||
| 54 | * such that hidden weak symbol collision, which will cause unrelated | ||
| 55 | * variables to share the same address, can be detected during build. | ||
| 56 | */ | ||
| 57 | #define DECLARE_PER_CPU_SECTION(type, name, sec) \ | ||
| 58 | extern __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ | ||
| 59 | extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name | ||
| 60 | |||
| 61 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ | ||
| 62 | __PCPU_DUMMY_ATTRS char __pcpu_scope_##name; \ | ||
| 63 | __PCPU_DUMMY_ATTRS char __pcpu_unique_##name; \ | ||
| 64 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES __weak \ | ||
| 28 | __typeof__(type) per_cpu__##name | 65 | __typeof__(type) per_cpu__##name |
| 66 | #else | ||
| 67 | /* | ||
| 68 | * Normal declaration and definition macros. | ||
| 69 | */ | ||
| 70 | #define DECLARE_PER_CPU_SECTION(type, name, sec) \ | ||
| 71 | extern __PCPU_ATTRS(sec) __typeof__(type) per_cpu__##name | ||
| 72 | |||
| 73 | #define DEFINE_PER_CPU_SECTION(type, name, sec) \ | ||
| 74 | __PCPU_ATTRS(sec) PER_CPU_DEF_ATTRIBUTES \ | ||
| 75 | __typeof__(type) per_cpu__##name | ||
| 76 | #endif | ||
| 29 | 77 | ||
| 30 | /* | 78 | /* |
| 31 | * Variant on the per-CPU variable declaration/definition theme used for | 79 | * Variant on the per-CPU variable declaration/definition theme used for |
| @@ -66,14 +114,24 @@ | |||
| 66 | DEFINE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \ | 114 | DEFINE_PER_CPU_SECTION(type, name, PER_CPU_SHARED_ALIGNED_SECTION) \ |
| 67 | ____cacheline_aligned_in_smp | 115 | ____cacheline_aligned_in_smp |
| 68 | 116 | ||
| 117 | #define DECLARE_PER_CPU_ALIGNED(type, name) \ | ||
| 118 | DECLARE_PER_CPU_SECTION(type, name, PER_CPU_ALIGNED_SECTION) \ | ||
| 119 | ____cacheline_aligned | ||
| 120 | |||
| 121 | #define DEFINE_PER_CPU_ALIGNED(type, name) \ | ||
| 122 | DEFINE_PER_CPU_SECTION(type, name, PER_CPU_ALIGNED_SECTION) \ | ||
| 123 | ____cacheline_aligned | ||
| 124 | |||
| 69 | /* | 125 | /* |
| 70 | * Declaration/definition used for per-CPU variables that must be page aligned. | 126 | * Declaration/definition used for per-CPU variables that must be page aligned. |
| 71 | */ | 127 | */ |
| 72 | #define DECLARE_PER_CPU_PAGE_ALIGNED(type, name) \ | 128 | #define DECLARE_PER_CPU_PAGE_ALIGNED(type, name) \ |
| 73 | DECLARE_PER_CPU_SECTION(type, name, ".page_aligned") | 129 | DECLARE_PER_CPU_SECTION(type, name, ".page_aligned") \ |
| 130 | __aligned(PAGE_SIZE) | ||
| 74 | 131 | ||
| 75 | #define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \ | 132 | #define DEFINE_PER_CPU_PAGE_ALIGNED(type, name) \ |
| 76 | DEFINE_PER_CPU_SECTION(type, name, ".page_aligned") | 133 | DEFINE_PER_CPU_SECTION(type, name, ".page_aligned") \ |
| 134 | __aligned(PAGE_SIZE) | ||
| 77 | 135 | ||
| 78 | /* | 136 | /* |
| 79 | * Intermodule exports for per-CPU variables. | 137 | * Intermodule exports for per-CPU variables. |
diff --git a/include/linux/percpu.h b/include/linux/percpu.h index 26fd9d12f050..878836ca999c 100644 --- a/include/linux/percpu.h +++ b/include/linux/percpu.h | |||
| @@ -34,7 +34,7 @@ | |||
| 34 | 34 | ||
| 35 | #ifdef CONFIG_SMP | 35 | #ifdef CONFIG_SMP |
| 36 | 36 | ||
| 37 | #ifdef CONFIG_HAVE_DYNAMIC_PER_CPU_AREA | 37 | #ifndef CONFIG_HAVE_LEGACY_PER_CPU_AREA |
| 38 | 38 | ||
| 39 | /* minimum unit size, also is the maximum supported allocation size */ | 39 | /* minimum unit size, also is the maximum supported allocation size */ |
| 40 | #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(64 << 10) | 40 | #define PCPU_MIN_UNIT_SIZE PFN_ALIGN(64 << 10) |
| @@ -57,19 +57,70 @@ | |||
| 57 | #endif | 57 | #endif |
| 58 | 58 | ||
| 59 | extern void *pcpu_base_addr; | 59 | extern void *pcpu_base_addr; |
| 60 | extern const unsigned long *pcpu_unit_offsets; | ||
| 60 | 61 | ||
| 61 | typedef struct page * (*pcpu_get_page_fn_t)(unsigned int cpu, int pageno); | 62 | struct pcpu_group_info { |
| 62 | typedef void (*pcpu_populate_pte_fn_t)(unsigned long addr); | 63 | int nr_units; /* aligned # of units */ |
| 64 | unsigned long base_offset; /* base address offset */ | ||
| 65 | unsigned int *cpu_map; /* unit->cpu map, empty | ||
| 66 | * entries contain NR_CPUS */ | ||
| 67 | }; | ||
| 68 | |||
| 69 | struct pcpu_alloc_info { | ||
| 70 | size_t static_size; | ||
| 71 | size_t reserved_size; | ||
| 72 | size_t dyn_size; | ||
| 73 | size_t unit_size; | ||
| 74 | size_t atom_size; | ||
| 75 | size_t alloc_size; | ||
| 76 | size_t __ai_size; /* internal, don't use */ | ||
| 77 | int nr_groups; /* 0 if grouping unnecessary */ | ||
| 78 | struct pcpu_group_info groups[]; | ||
| 79 | }; | ||
| 63 | 80 | ||
| 64 | extern size_t __init pcpu_setup_first_chunk(pcpu_get_page_fn_t get_page_fn, | 81 | enum pcpu_fc { |
| 65 | size_t static_size, size_t reserved_size, | 82 | PCPU_FC_AUTO, |
| 66 | ssize_t dyn_size, ssize_t unit_size, | 83 | PCPU_FC_EMBED, |
| 67 | void *base_addr, | 84 | PCPU_FC_PAGE, |
| 68 | pcpu_populate_pte_fn_t populate_pte_fn); | ||
| 69 | 85 | ||
| 70 | extern ssize_t __init pcpu_embed_first_chunk( | 86 | PCPU_FC_NR, |
| 71 | size_t static_size, size_t reserved_size, | 87 | }; |
| 72 | ssize_t dyn_size, ssize_t unit_size); | 88 | extern const char *pcpu_fc_names[PCPU_FC_NR]; |
| 89 | |||
| 90 | extern enum pcpu_fc pcpu_chosen_fc; | ||
| 91 | |||
| 92 | typedef void * (*pcpu_fc_alloc_fn_t)(unsigned int cpu, size_t size, | ||
| 93 | size_t align); | ||
| 94 | typedef void (*pcpu_fc_free_fn_t)(void *ptr, size_t size); | ||
| 95 | typedef void (*pcpu_fc_populate_pte_fn_t)(unsigned long addr); | ||
| 96 | typedef int (pcpu_fc_cpu_distance_fn_t)(unsigned int from, unsigned int to); | ||
| 97 | |||
| 98 | extern struct pcpu_alloc_info * __init pcpu_alloc_alloc_info(int nr_groups, | ||
| 99 | int nr_units); | ||
| 100 | extern void __init pcpu_free_alloc_info(struct pcpu_alloc_info *ai); | ||
| 101 | |||
| 102 | extern struct pcpu_alloc_info * __init pcpu_build_alloc_info( | ||
| 103 | size_t reserved_size, ssize_t dyn_size, | ||
| 104 | size_t atom_size, | ||
| 105 | pcpu_fc_cpu_distance_fn_t cpu_distance_fn); | ||
| 106 | |||
| 107 | extern int __init pcpu_setup_first_chunk(const struct pcpu_alloc_info *ai, | ||
| 108 | void *base_addr); | ||
| 109 | |||
| 110 | #ifdef CONFIG_NEED_PER_CPU_EMBED_FIRST_CHUNK | ||
| 111 | extern int __init pcpu_embed_first_chunk(size_t reserved_size, ssize_t dyn_size, | ||
| 112 | size_t atom_size, | ||
| 113 | pcpu_fc_cpu_distance_fn_t cpu_distance_fn, | ||
| 114 | pcpu_fc_alloc_fn_t alloc_fn, | ||
| 115 | pcpu_fc_free_fn_t free_fn); | ||
| 116 | #endif | ||
| 117 | |||
| 118 | #ifdef CONFIG_NEED_PER_CPU_PAGE_FIRST_CHUNK | ||
| 119 | extern int __init pcpu_page_first_chunk(size_t reserved_size, | ||
| 120 | pcpu_fc_alloc_fn_t alloc_fn, | ||
| 121 | pcpu_fc_free_fn_t free_fn, | ||
| 122 | pcpu_fc_populate_pte_fn_t populate_pte_fn); | ||
| 123 | #endif | ||
| 73 | 124 | ||
| 74 | /* | 125 | /* |
| 75 | * Use this to get to a cpu's version of the per-cpu object | 126 | * Use this to get to a cpu's version of the per-cpu object |
| @@ -80,7 +131,7 @@ extern ssize_t __init pcpu_embed_first_chunk( | |||
| 80 | 131 | ||
| 81 | extern void *__alloc_reserved_percpu(size_t size, size_t align); | 132 | extern void *__alloc_reserved_percpu(size_t size, size_t align); |
| 82 | 133 | ||
| 83 | #else /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */ | 134 | #else /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */ |
| 84 | 135 | ||
| 85 | struct percpu_data { | 136 | struct percpu_data { |
| 86 | void *ptrs[1]; | 137 | void *ptrs[1]; |
| @@ -99,11 +150,15 @@ struct percpu_data { | |||
| 99 | (__typeof__(ptr))__p->ptrs[(cpu)]; \ | 150 | (__typeof__(ptr))__p->ptrs[(cpu)]; \ |
| 100 | }) | 151 | }) |
| 101 | 152 | ||
| 102 | #endif /* CONFIG_HAVE_DYNAMIC_PER_CPU_AREA */ | 153 | #endif /* CONFIG_HAVE_LEGACY_PER_CPU_AREA */ |
| 103 | 154 | ||
| 104 | extern void *__alloc_percpu(size_t size, size_t align); | 155 | extern void *__alloc_percpu(size_t size, size_t align); |
| 105 | extern void free_percpu(void *__pdata); | 156 | extern void free_percpu(void *__pdata); |
| 106 | 157 | ||
| 158 | #ifndef CONFIG_HAVE_SETUP_PER_CPU_AREA | ||
| 159 | extern void __init setup_per_cpu_areas(void); | ||
| 160 | #endif | ||
| 161 | |||
| 107 | #else /* CONFIG_SMP */ | 162 | #else /* CONFIG_SMP */ |
| 108 | 163 | ||
| 109 | #define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); }) | 164 | #define per_cpu_ptr(ptr, cpu) ({ (void)(cpu); (ptr); }) |
| @@ -124,6 +179,13 @@ static inline void free_percpu(void *p) | |||
| 124 | kfree(p); | 179 | kfree(p); |
| 125 | } | 180 | } |
| 126 | 181 | ||
| 182 | static inline void __init setup_per_cpu_areas(void) { } | ||
| 183 | |||
| 184 | static inline void *pcpu_lpage_remapped(void *kaddr) | ||
| 185 | { | ||
| 186 | return NULL; | ||
| 187 | } | ||
| 188 | |||
| 127 | #endif /* CONFIG_SMP */ | 189 | #endif /* CONFIG_SMP */ |
| 128 | 190 | ||
| 129 | #define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ | 191 | #define alloc_percpu(type) (type *)__alloc_percpu(sizeof(type), \ |
diff --git a/include/linux/phonet.h b/include/linux/phonet.h index ee5e3c9e2bca..1ef5a0781831 100644 --- a/include/linux/phonet.h +++ b/include/linux/phonet.h | |||
| @@ -99,6 +99,9 @@ struct sockaddr_pn { | |||
| 99 | __u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3]; | 99 | __u8 spn_zero[sizeof(struct sockaddr) - sizeof(sa_family_t) - 3]; |
| 100 | } __attribute__ ((packed)); | 100 | } __attribute__ ((packed)); |
| 101 | 101 | ||
| 102 | /* Well known address */ | ||
| 103 | #define PN_DEV_PC 0x10 | ||
| 104 | |||
| 102 | static inline __u16 pn_object(__u8 addr, __u16 port) | 105 | static inline __u16 pn_object(__u8 addr, __u16 port) |
| 103 | { | 106 | { |
| 104 | return (addr << 8) | (port & 0x3ff); | 107 | return (addr << 8) | (port & 0x3ff); |
| @@ -170,4 +173,21 @@ static inline __u8 pn_sockaddr_get_resource(const struct sockaddr_pn *spn) | |||
| 170 | return spn->spn_resource; | 173 | return spn->spn_resource; |
| 171 | } | 174 | } |
| 172 | 175 | ||
| 176 | /* Phonet device ioctl requests */ | ||
| 177 | #ifdef __KERNEL__ | ||
| 178 | #define SIOCPNGAUTOCONF (SIOCDEVPRIVATE + 0) | ||
| 179 | |||
| 180 | struct if_phonet_autoconf { | ||
| 181 | uint8_t device; | ||
| 182 | }; | ||
| 183 | |||
| 184 | struct if_phonet_req { | ||
| 185 | char ifr_phonet_name[16]; | ||
| 186 | union { | ||
| 187 | struct if_phonet_autoconf ifru_phonet_autoconf; | ||
| 188 | } ifr_ifru; | ||
| 189 | }; | ||
| 190 | #define ifr_phonet_autoconf ifr_ifru.ifru_phonet_autoconf | ||
| 191 | #endif /* __KERNEL__ */ | ||
| 192 | |||
| 173 | #endif | 193 | #endif |
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index 8dc5123b6305..3c6675c2444b 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
| @@ -22,6 +22,9 @@ struct platform_device { | |||
| 22 | struct resource * resource; | 22 | struct resource * resource; |
| 23 | 23 | ||
| 24 | struct platform_device_id *id_entry; | 24 | struct platform_device_id *id_entry; |
| 25 | |||
| 26 | /* arch specific additions */ | ||
| 27 | struct pdev_archdata archdata; | ||
| 25 | }; | 28 | }; |
| 26 | 29 | ||
| 27 | #define platform_get_device_id(pdev) ((pdev)->id_entry) | 30 | #define platform_get_device_id(pdev) ((pdev)->id_entry) |
| @@ -57,8 +60,6 @@ struct platform_driver { | |||
| 57 | int (*remove)(struct platform_device *); | 60 | int (*remove)(struct platform_device *); |
| 58 | void (*shutdown)(struct platform_device *); | 61 | void (*shutdown)(struct platform_device *); |
| 59 | int (*suspend)(struct platform_device *, pm_message_t state); | 62 | int (*suspend)(struct platform_device *, pm_message_t state); |
| 60 | int (*suspend_late)(struct platform_device *, pm_message_t state); | ||
| 61 | int (*resume_early)(struct platform_device *); | ||
| 62 | int (*resume)(struct platform_device *); | 63 | int (*resume)(struct platform_device *); |
| 63 | struct device_driver driver; | 64 | struct device_driver driver; |
| 64 | struct platform_device_id *id_table; | 65 | struct platform_device_id *id_table; |
diff --git a/include/linux/pm.h b/include/linux/pm.h index b3f74764a586..3b7e04b95bd2 100644 --- a/include/linux/pm.h +++ b/include/linux/pm.h | |||
| @@ -22,6 +22,10 @@ | |||
| 22 | #define _LINUX_PM_H | 22 | #define _LINUX_PM_H |
| 23 | 23 | ||
| 24 | #include <linux/list.h> | 24 | #include <linux/list.h> |
| 25 | #include <linux/workqueue.h> | ||
| 26 | #include <linux/spinlock.h> | ||
| 27 | #include <linux/wait.h> | ||
| 28 | #include <linux/timer.h> | ||
| 25 | 29 | ||
| 26 | /* | 30 | /* |
| 27 | * Callbacks for platform drivers to implement. | 31 | * Callbacks for platform drivers to implement. |
| @@ -165,6 +169,28 @@ typedef struct pm_message { | |||
| 165 | * It is allowed to unregister devices while the above callbacks are being | 169 | * It is allowed to unregister devices while the above callbacks are being |
| 166 | * executed. However, it is not allowed to unregister a device from within any | 170 | * executed. However, it is not allowed to unregister a device from within any |
| 167 | * of its own callbacks. | 171 | * of its own callbacks. |
| 172 | * | ||
| 173 | * There also are the following callbacks related to run-time power management | ||
| 174 | * of devices: | ||
| 175 | * | ||
| 176 | * @runtime_suspend: Prepare the device for a condition in which it won't be | ||
| 177 | * able to communicate with the CPU(s) and RAM due to power management. | ||
| 178 | * This need not mean that the device should be put into a low power state. | ||
| 179 | * For example, if the device is behind a link which is about to be turned | ||
| 180 | * off, the device may remain at full power. If the device does go to low | ||
| 181 | * power and if device_may_wakeup(dev) is true, remote wake-up (i.e., a | ||
| 182 | * hardware mechanism allowing the device to request a change of its power | ||
| 183 | * state, such as PCI PME) should be enabled for it. | ||
| 184 | * | ||
| 185 | * @runtime_resume: Put the device into the fully active state in response to a | ||
| 186 | * wake-up event generated by hardware or at the request of software. If | ||
| 187 | * necessary, put the device into the full power state and restore its | ||
| 188 | * registers, so that it is fully operational. | ||
| 189 | * | ||
| 190 | * @runtime_idle: Device appears to be inactive and it might be put into a low | ||
| 191 | * power state if all of the necessary conditions are satisfied. Check | ||
| 192 | * these conditions and handle the device as appropriate, possibly queueing | ||
| 193 | * a suspend request for it. The return value is ignored by the PM core. | ||
| 168 | */ | 194 | */ |
| 169 | 195 | ||
| 170 | struct dev_pm_ops { | 196 | struct dev_pm_ops { |
| @@ -182,8 +208,25 @@ struct dev_pm_ops { | |||
| 182 | int (*thaw_noirq)(struct device *dev); | 208 | int (*thaw_noirq)(struct device *dev); |
| 183 | int (*poweroff_noirq)(struct device *dev); | 209 | int (*poweroff_noirq)(struct device *dev); |
| 184 | int (*restore_noirq)(struct device *dev); | 210 | int (*restore_noirq)(struct device *dev); |
| 211 | int (*runtime_suspend)(struct device *dev); | ||
| 212 | int (*runtime_resume)(struct device *dev); | ||
| 213 | int (*runtime_idle)(struct device *dev); | ||
| 185 | }; | 214 | }; |
| 186 | 215 | ||
| 216 | /* | ||
| 217 | * Use this if you want to use the same suspend and resume callbacks for suspend | ||
| 218 | * to RAM and hibernation. | ||
| 219 | */ | ||
| 220 | #define SIMPLE_DEV_PM_OPS(name, suspend_fn, resume_fn) \ | ||
| 221 | struct dev_pm_ops name = { \ | ||
| 222 | .suspend = suspend_fn, \ | ||
| 223 | .resume = resume_fn, \ | ||
| 224 | .freeze = suspend_fn, \ | ||
| 225 | .thaw = resume_fn, \ | ||
| 226 | .poweroff = suspend_fn, \ | ||
| 227 | .restore = resume_fn, \ | ||
| 228 | } | ||
| 229 | |||
| 187 | /** | 230 | /** |
| 188 | * PM_EVENT_ messages | 231 | * PM_EVENT_ messages |
| 189 | * | 232 | * |
| @@ -315,14 +358,80 @@ enum dpm_state { | |||
| 315 | DPM_OFF_IRQ, | 358 | DPM_OFF_IRQ, |
| 316 | }; | 359 | }; |
| 317 | 360 | ||
| 361 | /** | ||
| 362 | * Device run-time power management status. | ||
| 363 | * | ||
| 364 | * These status labels are used internally by the PM core to indicate the | ||
| 365 | * current status of a device with respect to the PM core operations. They do | ||
| 366 | * not reflect the actual power state of the device or its status as seen by the | ||
| 367 | * driver. | ||
| 368 | * | ||
| 369 | * RPM_ACTIVE Device is fully operational. Indicates that the device | ||
| 370 | * bus type's ->runtime_resume() callback has completed | ||
| 371 | * successfully. | ||
| 372 | * | ||
| 373 | * RPM_SUSPENDED Device bus type's ->runtime_suspend() callback has | ||
| 374 | * completed successfully. The device is regarded as | ||
| 375 | * suspended. | ||
| 376 | * | ||
| 377 | * RPM_RESUMING Device bus type's ->runtime_resume() callback is being | ||
| 378 | * executed. | ||
| 379 | * | ||
| 380 | * RPM_SUSPENDING Device bus type's ->runtime_suspend() callback is being | ||
| 381 | * executed. | ||
| 382 | */ | ||
| 383 | |||
| 384 | enum rpm_status { | ||
| 385 | RPM_ACTIVE = 0, | ||
| 386 | RPM_RESUMING, | ||
| 387 | RPM_SUSPENDED, | ||
| 388 | RPM_SUSPENDING, | ||
| 389 | }; | ||
| 390 | |||
| 391 | /** | ||
| 392 | * Device run-time power management request types. | ||
| 393 | * | ||
| 394 | * RPM_REQ_NONE Do nothing. | ||
| 395 | * | ||
| 396 | * RPM_REQ_IDLE Run the device bus type's ->runtime_idle() callback | ||
| 397 | * | ||
| 398 | * RPM_REQ_SUSPEND Run the device bus type's ->runtime_suspend() callback | ||
| 399 | * | ||
| 400 | * RPM_REQ_RESUME Run the device bus type's ->runtime_resume() callback | ||
| 401 | */ | ||
| 402 | |||
| 403 | enum rpm_request { | ||
| 404 | RPM_REQ_NONE = 0, | ||
| 405 | RPM_REQ_IDLE, | ||
| 406 | RPM_REQ_SUSPEND, | ||
| 407 | RPM_REQ_RESUME, | ||
| 408 | }; | ||
| 409 | |||
| 318 | struct dev_pm_info { | 410 | struct dev_pm_info { |
| 319 | pm_message_t power_state; | 411 | pm_message_t power_state; |
| 320 | unsigned can_wakeup:1; | 412 | unsigned int can_wakeup:1; |
| 321 | unsigned should_wakeup:1; | 413 | unsigned int should_wakeup:1; |
| 322 | enum dpm_state status; /* Owned by the PM core */ | 414 | enum dpm_state status; /* Owned by the PM core */ |
| 323 | #ifdef CONFIG_PM_SLEEP | 415 | #ifdef CONFIG_PM_SLEEP |
| 324 | struct list_head entry; | 416 | struct list_head entry; |
| 325 | #endif | 417 | #endif |
| 418 | #ifdef CONFIG_PM_RUNTIME | ||
| 419 | struct timer_list suspend_timer; | ||
| 420 | unsigned long timer_expires; | ||
| 421 | struct work_struct work; | ||
| 422 | wait_queue_head_t wait_queue; | ||
| 423 | spinlock_t lock; | ||
| 424 | atomic_t usage_count; | ||
| 425 | atomic_t child_count; | ||
| 426 | unsigned int disable_depth:3; | ||
| 427 | unsigned int ignore_children:1; | ||
| 428 | unsigned int idle_notification:1; | ||
| 429 | unsigned int request_pending:1; | ||
| 430 | unsigned int deferred_resume:1; | ||
| 431 | enum rpm_request request; | ||
| 432 | enum rpm_status runtime_status; | ||
| 433 | int runtime_error; | ||
| 434 | #endif | ||
| 326 | }; | 435 | }; |
| 327 | 436 | ||
| 328 | /* | 437 | /* |
diff --git a/include/linux/pm_runtime.h b/include/linux/pm_runtime.h new file mode 100644 index 000000000000..44087044910f --- /dev/null +++ b/include/linux/pm_runtime.h | |||
| @@ -0,0 +1,114 @@ | |||
| 1 | /* | ||
| 2 | * pm_runtime.h - Device run-time power management helper functions. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Rafael J. Wysocki <rjw@sisk.pl> | ||
| 5 | * | ||
| 6 | * This file is released under the GPLv2. | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef _LINUX_PM_RUNTIME_H | ||
| 10 | #define _LINUX_PM_RUNTIME_H | ||
| 11 | |||
| 12 | #include <linux/device.h> | ||
| 13 | #include <linux/pm.h> | ||
| 14 | |||
| 15 | #ifdef CONFIG_PM_RUNTIME | ||
| 16 | |||
| 17 | extern struct workqueue_struct *pm_wq; | ||
| 18 | |||
| 19 | extern int pm_runtime_idle(struct device *dev); | ||
| 20 | extern int pm_runtime_suspend(struct device *dev); | ||
| 21 | extern int pm_runtime_resume(struct device *dev); | ||
| 22 | extern int pm_request_idle(struct device *dev); | ||
| 23 | extern int pm_schedule_suspend(struct device *dev, unsigned int delay); | ||
| 24 | extern int pm_request_resume(struct device *dev); | ||
| 25 | extern int __pm_runtime_get(struct device *dev, bool sync); | ||
| 26 | extern int __pm_runtime_put(struct device *dev, bool sync); | ||
| 27 | extern int __pm_runtime_set_status(struct device *dev, unsigned int status); | ||
| 28 | extern int pm_runtime_barrier(struct device *dev); | ||
| 29 | extern void pm_runtime_enable(struct device *dev); | ||
| 30 | extern void __pm_runtime_disable(struct device *dev, bool check_resume); | ||
| 31 | |||
| 32 | static inline bool pm_children_suspended(struct device *dev) | ||
| 33 | { | ||
| 34 | return dev->power.ignore_children | ||
| 35 | || !atomic_read(&dev->power.child_count); | ||
| 36 | } | ||
| 37 | |||
| 38 | static inline void pm_suspend_ignore_children(struct device *dev, bool enable) | ||
| 39 | { | ||
| 40 | dev->power.ignore_children = enable; | ||
| 41 | } | ||
| 42 | |||
| 43 | static inline void pm_runtime_get_noresume(struct device *dev) | ||
| 44 | { | ||
| 45 | atomic_inc(&dev->power.usage_count); | ||
| 46 | } | ||
| 47 | |||
| 48 | static inline void pm_runtime_put_noidle(struct device *dev) | ||
| 49 | { | ||
| 50 | atomic_add_unless(&dev->power.usage_count, -1, 0); | ||
| 51 | } | ||
| 52 | |||
| 53 | #else /* !CONFIG_PM_RUNTIME */ | ||
| 54 | |||
| 55 | static inline int pm_runtime_idle(struct device *dev) { return -ENOSYS; } | ||
| 56 | static inline int pm_runtime_suspend(struct device *dev) { return -ENOSYS; } | ||
| 57 | static inline int pm_runtime_resume(struct device *dev) { return 0; } | ||
| 58 | static inline int pm_request_idle(struct device *dev) { return -ENOSYS; } | ||
| 59 | static inline int pm_schedule_suspend(struct device *dev, unsigned int delay) | ||
| 60 | { | ||
| 61 | return -ENOSYS; | ||
| 62 | } | ||
| 63 | static inline int pm_request_resume(struct device *dev) { return 0; } | ||
| 64 | static inline int __pm_runtime_get(struct device *dev, bool sync) { return 1; } | ||
| 65 | static inline int __pm_runtime_put(struct device *dev, bool sync) { return 0; } | ||
| 66 | static inline int __pm_runtime_set_status(struct device *dev, | ||
| 67 | unsigned int status) { return 0; } | ||
| 68 | static inline int pm_runtime_barrier(struct device *dev) { return 0; } | ||
| 69 | static inline void pm_runtime_enable(struct device *dev) {} | ||
| 70 | static inline void __pm_runtime_disable(struct device *dev, bool c) {} | ||
| 71 | |||
| 72 | static inline bool pm_children_suspended(struct device *dev) { return false; } | ||
| 73 | static inline void pm_suspend_ignore_children(struct device *dev, bool en) {} | ||
| 74 | static inline void pm_runtime_get_noresume(struct device *dev) {} | ||
| 75 | static inline void pm_runtime_put_noidle(struct device *dev) {} | ||
| 76 | |||
| 77 | #endif /* !CONFIG_PM_RUNTIME */ | ||
| 78 | |||
| 79 | static inline int pm_runtime_get(struct device *dev) | ||
| 80 | { | ||
| 81 | return __pm_runtime_get(dev, false); | ||
| 82 | } | ||
| 83 | |||
| 84 | static inline int pm_runtime_get_sync(struct device *dev) | ||
| 85 | { | ||
| 86 | return __pm_runtime_get(dev, true); | ||
| 87 | } | ||
| 88 | |||
| 89 | static inline int pm_runtime_put(struct device *dev) | ||
| 90 | { | ||
| 91 | return __pm_runtime_put(dev, false); | ||
| 92 | } | ||
| 93 | |||
| 94 | static inline int pm_runtime_put_sync(struct device *dev) | ||
| 95 | { | ||
| 96 | return __pm_runtime_put(dev, true); | ||
| 97 | } | ||
| 98 | |||
| 99 | static inline int pm_runtime_set_active(struct device *dev) | ||
| 100 | { | ||
| 101 | return __pm_runtime_set_status(dev, RPM_ACTIVE); | ||
| 102 | } | ||
| 103 | |||
| 104 | static inline void pm_runtime_set_suspended(struct device *dev) | ||
| 105 | { | ||
| 106 | __pm_runtime_set_status(dev, RPM_SUSPENDED); | ||
| 107 | } | ||
| 108 | |||
| 109 | static inline void pm_runtime_disable(struct device *dev) | ||
| 110 | { | ||
| 111 | __pm_runtime_disable(dev, true); | ||
| 112 | } | ||
| 113 | |||
| 114 | #endif | ||
diff --git a/include/linux/rds.h b/include/linux/rds.h index d91dc91f5443..89d46e1afbb1 100644 --- a/include/linux/rds.h +++ b/include/linux/rds.h | |||
| @@ -147,6 +147,18 @@ struct rds_info_socket { | |||
| 147 | u_int64_t inum; | 147 | u_int64_t inum; |
| 148 | } __attribute__((packed)); | 148 | } __attribute__((packed)); |
| 149 | 149 | ||
| 150 | struct rds_info_tcp_socket { | ||
| 151 | __be32 local_addr; | ||
| 152 | __be16 local_port; | ||
| 153 | __be32 peer_addr; | ||
| 154 | __be16 peer_port; | ||
| 155 | u_int64_t hdr_rem; | ||
| 156 | u_int64_t data_rem; | ||
| 157 | u_int32_t last_sent_nxt; | ||
| 158 | u_int32_t last_expected_una; | ||
| 159 | u_int32_t last_seen_una; | ||
| 160 | } __attribute__((packed)); | ||
| 161 | |||
| 150 | #define RDS_IB_GID_LEN 16 | 162 | #define RDS_IB_GID_LEN 16 |
| 151 | struct rds_info_rdma_connection { | 163 | struct rds_info_rdma_connection { |
| 152 | __be32 src_addr; | 164 | __be32 src_addr; |
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index 278777fa8a3a..3392c59d2706 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
| @@ -6,20 +6,17 @@ | |||
| 6 | * Copyright (C) 2007 Dmitry Torokhov | 6 | * Copyright (C) 2007 Dmitry Torokhov |
| 7 | * Copyright 2009 Johannes Berg <johannes@sipsolutions.net> | 7 | * Copyright 2009 Johannes Berg <johannes@sipsolutions.net> |
| 8 | * | 8 | * |
| 9 | * This program is free software; you can redistribute it and/or modify | 9 | * Permission to use, copy, modify, and/or distribute this software for any |
| 10 | * it under the terms of the GNU General Public License as published by | 10 | * purpose with or without fee is hereby granted, provided that the above |
| 11 | * the Free Software Foundation; either version 2 of the License, or | 11 | * copyright notice and this permission notice appear in all copies. |
| 12 | * (at your option) any later version. | ||
| 13 | * | 12 | * |
| 14 | * This program is distributed in the hope that it will be useful, | 13 | * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 | * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 15 | * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| 17 | * GNU General Public License for more details. | 16 | * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| 18 | * | 17 | * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| 19 | * You should have received a copy of the GNU General Public License | 18 | * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| 20 | * along with this program; if not, write to the | 19 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| 21 | * Free Software Foundation, Inc., | ||
| 22 | * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | ||
| 23 | */ | 20 | */ |
| 24 | 21 | ||
| 25 | #include <linux/types.h> | 22 | #include <linux/types.h> |
| @@ -47,6 +44,7 @@ enum rfkill_type { | |||
| 47 | RFKILL_TYPE_UWB, | 44 | RFKILL_TYPE_UWB, |
| 48 | RFKILL_TYPE_WIMAX, | 45 | RFKILL_TYPE_WIMAX, |
| 49 | RFKILL_TYPE_WWAN, | 46 | RFKILL_TYPE_WWAN, |
| 47 | RFKILL_TYPE_GPS, | ||
| 50 | NUM_RFKILL_TYPES, | 48 | NUM_RFKILL_TYPES, |
| 51 | }; | 49 | }; |
| 52 | 50 | ||
| @@ -82,6 +80,20 @@ struct rfkill_event { | |||
| 82 | __u8 soft, hard; | 80 | __u8 soft, hard; |
| 83 | } __packed; | 81 | } __packed; |
| 84 | 82 | ||
| 83 | /* | ||
| 84 | * We are planning to be backward and forward compatible with changes | ||
| 85 | * to the event struct, by adding new, optional, members at the end. | ||
| 86 | * When reading an event (whether the kernel from userspace or vice | ||
| 87 | * versa) we need to accept anything that's at least as large as the | ||
| 88 | * version 1 event size, but might be able to accept other sizes in | ||
| 89 | * the future. | ||
| 90 | * | ||
| 91 | * One exception is the kernel -- we already have two event sizes in | ||
| 92 | * that we've made the 'hard' member optional since our only option | ||
| 93 | * is to ignore it anyway. | ||
| 94 | */ | ||
| 95 | #define RFKILL_EVENT_SIZE_V1 8 | ||
| 96 | |||
| 85 | /* ioctl for turning off rfkill-input (if present) */ | 97 | /* ioctl for turning off rfkill-input (if present) */ |
| 86 | #define RFKILL_IOC_MAGIC 'R' | 98 | #define RFKILL_IOC_MAGIC 'R' |
| 87 | #define RFKILL_IOC_NOINPUT 1 | 99 | #define RFKILL_IOC_NOINPUT 1 |
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h index ba3254ecf7fb..adf2068d12b5 100644 --- a/include/linux/rtnetlink.h +++ b/include/linux/rtnetlink.h | |||
| @@ -104,7 +104,7 @@ enum { | |||
| 104 | RTM_NEWADDRLABEL = 72, | 104 | RTM_NEWADDRLABEL = 72, |
| 105 | #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL | 105 | #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL |
| 106 | RTM_DELADDRLABEL, | 106 | RTM_DELADDRLABEL, |
| 107 | #define RTM_NEWADDRLABEL RTM_NEWADDRLABEL | 107 | #define RTM_DELADDRLABEL RTM_DELADDRLABEL |
| 108 | RTM_GETADDRLABEL, | 108 | RTM_GETADDRLABEL, |
| 109 | #define RTM_GETADDRLABEL RTM_GETADDRLABEL | 109 | #define RTM_GETADDRLABEL RTM_GETADDRLABEL |
| 110 | 110 | ||
diff --git a/include/linux/rxrpc.h b/include/linux/rxrpc.h index f7b826b565c7..a53915cd5581 100644 --- a/include/linux/rxrpc.h +++ b/include/linux/rxrpc.h | |||
| @@ -58,5 +58,12 @@ struct sockaddr_rxrpc { | |||
| 58 | #define RXRPC_SECURITY_AUTH 1 /* authenticated packets */ | 58 | #define RXRPC_SECURITY_AUTH 1 /* authenticated packets */ |
| 59 | #define RXRPC_SECURITY_ENCRYPT 2 /* encrypted packets */ | 59 | #define RXRPC_SECURITY_ENCRYPT 2 /* encrypted packets */ |
| 60 | 60 | ||
| 61 | /* | ||
| 62 | * RxRPC security indices | ||
| 63 | */ | ||
| 64 | #define RXRPC_SECURITY_NONE 0 /* no security protocol */ | ||
| 65 | #define RXRPC_SECURITY_RXKAD 2 /* kaserver or kerberos 4 */ | ||
| 66 | #define RXRPC_SECURITY_RXGK 4 /* gssapi-based */ | ||
| 67 | #define RXRPC_SECURITY_RXK5 5 /* kerberos 5 */ | ||
| 61 | 68 | ||
| 62 | #endif /* _LINUX_RXRPC_H */ | 69 | #endif /* _LINUX_RXRPC_H */ |
diff --git a/include/linux/sched.h b/include/linux/sched.h index f3d74bd04d18..8af3d249170e 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -190,6 +190,7 @@ extern unsigned long long time_sync_thresh; | |||
| 190 | /* in tsk->state again */ | 190 | /* in tsk->state again */ |
| 191 | #define TASK_DEAD 64 | 191 | #define TASK_DEAD 64 |
| 192 | #define TASK_WAKEKILL 128 | 192 | #define TASK_WAKEKILL 128 |
| 193 | #define TASK_WAKING 256 | ||
| 193 | 194 | ||
| 194 | /* Convenience macros for the sake of set_task_state */ | 195 | /* Convenience macros for the sake of set_task_state */ |
| 195 | #define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) | 196 | #define TASK_KILLABLE (TASK_WAKEKILL | TASK_UNINTERRUPTIBLE) |
| @@ -802,14 +803,14 @@ enum cpu_idle_type { | |||
| 802 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ | 803 | #define SD_BALANCE_NEWIDLE 0x0002 /* Balance when about to become idle */ |
| 803 | #define SD_BALANCE_EXEC 0x0004 /* Balance on exec */ | 804 | #define SD_BALANCE_EXEC 0x0004 /* Balance on exec */ |
| 804 | #define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */ | 805 | #define SD_BALANCE_FORK 0x0008 /* Balance on fork, clone */ |
| 805 | #define SD_WAKE_IDLE 0x0010 /* Wake to idle CPU on task wakeup */ | 806 | #define SD_BALANCE_WAKE 0x0010 /* Balance on wakeup */ |
| 806 | #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ | 807 | #define SD_WAKE_AFFINE 0x0020 /* Wake task to waking CPU */ |
| 807 | #define SD_WAKE_BALANCE 0x0040 /* Perform balancing at task wakeup */ | 808 | #define SD_PREFER_LOCAL 0x0040 /* Prefer to keep tasks local to this domain */ |
| 808 | #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ | 809 | #define SD_SHARE_CPUPOWER 0x0080 /* Domain members share cpu power */ |
| 809 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ | 810 | #define SD_POWERSAVINGS_BALANCE 0x0100 /* Balance for power savings */ |
| 810 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ | 811 | #define SD_SHARE_PKG_RESOURCES 0x0200 /* Domain members share cpu pkg resources */ |
| 811 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ | 812 | #define SD_SERIALIZE 0x0400 /* Only a single load balancing instance */ |
| 812 | #define SD_WAKE_IDLE_FAR 0x0800 /* Gain latency sacrificing cache hit */ | 813 | |
| 813 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ | 814 | #define SD_PREFER_SIBLING 0x1000 /* Prefer to place tasks in a sibling domain */ |
| 814 | 815 | ||
| 815 | enum powersavings_balance_level { | 816 | enum powersavings_balance_level { |
| @@ -991,6 +992,9 @@ static inline int test_sd_parent(struct sched_domain *sd, int flag) | |||
| 991 | return 0; | 992 | return 0; |
| 992 | } | 993 | } |
| 993 | 994 | ||
| 995 | unsigned long default_scale_freq_power(struct sched_domain *sd, int cpu); | ||
| 996 | unsigned long default_scale_smt_power(struct sched_domain *sd, int cpu); | ||
| 997 | |||
| 994 | #else /* CONFIG_SMP */ | 998 | #else /* CONFIG_SMP */ |
| 995 | 999 | ||
| 996 | struct sched_domain_attr; | 1000 | struct sched_domain_attr; |
| @@ -1002,6 +1006,7 @@ partition_sched_domains(int ndoms_new, struct cpumask *doms_new, | |||
| 1002 | } | 1006 | } |
| 1003 | #endif /* !CONFIG_SMP */ | 1007 | #endif /* !CONFIG_SMP */ |
| 1004 | 1008 | ||
| 1009 | |||
| 1005 | struct io_context; /* See blkdev.h */ | 1010 | struct io_context; /* See blkdev.h */ |
| 1006 | 1011 | ||
| 1007 | 1012 | ||
| @@ -1019,6 +1024,12 @@ struct uts_namespace; | |||
| 1019 | struct rq; | 1024 | struct rq; |
| 1020 | struct sched_domain; | 1025 | struct sched_domain; |
| 1021 | 1026 | ||
| 1027 | /* | ||
| 1028 | * wake flags | ||
| 1029 | */ | ||
| 1030 | #define WF_SYNC 0x01 /* waker goes to sleep after wakup */ | ||
| 1031 | #define WF_FORK 0x02 /* child wakeup after fork */ | ||
| 1032 | |||
| 1022 | struct sched_class { | 1033 | struct sched_class { |
| 1023 | const struct sched_class *next; | 1034 | const struct sched_class *next; |
| 1024 | 1035 | ||
| @@ -1026,13 +1037,13 @@ struct sched_class { | |||
| 1026 | void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); | 1037 | void (*dequeue_task) (struct rq *rq, struct task_struct *p, int sleep); |
| 1027 | void (*yield_task) (struct rq *rq); | 1038 | void (*yield_task) (struct rq *rq); |
| 1028 | 1039 | ||
| 1029 | void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int sync); | 1040 | void (*check_preempt_curr) (struct rq *rq, struct task_struct *p, int flags); |
| 1030 | 1041 | ||
| 1031 | struct task_struct * (*pick_next_task) (struct rq *rq); | 1042 | struct task_struct * (*pick_next_task) (struct rq *rq); |
| 1032 | void (*put_prev_task) (struct rq *rq, struct task_struct *p); | 1043 | void (*put_prev_task) (struct rq *rq, struct task_struct *p); |
| 1033 | 1044 | ||
| 1034 | #ifdef CONFIG_SMP | 1045 | #ifdef CONFIG_SMP |
| 1035 | int (*select_task_rq)(struct task_struct *p, int sync); | 1046 | int (*select_task_rq)(struct task_struct *p, int sd_flag, int flags); |
| 1036 | 1047 | ||
| 1037 | unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, | 1048 | unsigned long (*load_balance) (struct rq *this_rq, int this_cpu, |
| 1038 | struct rq *busiest, unsigned long max_load_move, | 1049 | struct rq *busiest, unsigned long max_load_move, |
| @@ -1102,6 +1113,8 @@ struct sched_entity { | |||
| 1102 | u64 start_runtime; | 1113 | u64 start_runtime; |
| 1103 | u64 avg_wakeup; | 1114 | u64 avg_wakeup; |
| 1104 | 1115 | ||
| 1116 | u64 avg_running; | ||
| 1117 | |||
| 1105 | #ifdef CONFIG_SCHEDSTATS | 1118 | #ifdef CONFIG_SCHEDSTATS |
| 1106 | u64 wait_start; | 1119 | u64 wait_start; |
| 1107 | u64 wait_max; | 1120 | u64 wait_max; |
diff --git a/include/linux/selinux.h b/include/linux/selinux.h index 20f965d4b041..82e0f26a1299 100644 --- a/include/linux/selinux.h +++ b/include/linux/selinux.h | |||
| @@ -61,6 +61,11 @@ void selinux_secmark_refcount_inc(void); | |||
| 61 | * existing SECMARK targets has been removed/flushed. | 61 | * existing SECMARK targets has been removed/flushed. |
| 62 | */ | 62 | */ |
| 63 | void selinux_secmark_refcount_dec(void); | 63 | void selinux_secmark_refcount_dec(void); |
| 64 | |||
| 65 | /** | ||
| 66 | * selinux_is_enabled - is SELinux enabled? | ||
| 67 | */ | ||
| 68 | bool selinux_is_enabled(void); | ||
| 64 | #else | 69 | #else |
| 65 | 70 | ||
| 66 | static inline int selinux_string_to_sid(const char *str, u32 *sid) | 71 | static inline int selinux_string_to_sid(const char *str, u32 *sid) |
| @@ -84,6 +89,10 @@ static inline void selinux_secmark_refcount_dec(void) | |||
| 84 | return; | 89 | return; |
| 85 | } | 90 | } |
| 86 | 91 | ||
| 92 | static inline bool selinux_is_enabled(void) | ||
| 93 | { | ||
| 94 | return false; | ||
| 95 | } | ||
| 87 | #endif /* CONFIG_SECURITY_SELINUX */ | 96 | #endif /* CONFIG_SECURITY_SELINUX */ |
| 88 | 97 | ||
| 89 | #endif /* _LINUX_SELINUX_H */ | 98 | #endif /* _LINUX_SELINUX_H */ |
diff --git a/include/linux/serio.h b/include/linux/serio.h index 126d24c9eaa8..a640bc2afe76 100644 --- a/include/linux/serio.h +++ b/include/linux/serio.h | |||
| @@ -31,8 +31,6 @@ struct serio { | |||
| 31 | 31 | ||
| 32 | bool manual_bind; | 32 | bool manual_bind; |
| 33 | bool registered; /* port has been fully registered with driver core */ | 33 | bool registered; /* port has been fully registered with driver core */ |
| 34 | bool suspended; /* port is suspended */ | ||
| 35 | |||
| 36 | 34 | ||
| 37 | struct serio_device_id id; | 35 | struct serio_device_id id; |
| 38 | 36 | ||
diff --git a/include/linux/shmem_fs.h b/include/linux/shmem_fs.h index 6d3f2f449ead..deee7afd8d66 100644 --- a/include/linux/shmem_fs.h +++ b/include/linux/shmem_fs.h | |||
| @@ -38,6 +38,9 @@ static inline struct shmem_inode_info *SHMEM_I(struct inode *inode) | |||
| 38 | return container_of(inode, struct shmem_inode_info, vfs_inode); | 38 | return container_of(inode, struct shmem_inode_info, vfs_inode); |
| 39 | } | 39 | } |
| 40 | 40 | ||
| 41 | extern int init_tmpfs(void); | ||
| 42 | extern int shmem_fill_super(struct super_block *sb, void *data, int silent); | ||
| 43 | |||
| 41 | #ifdef CONFIG_TMPFS_POSIX_ACL | 44 | #ifdef CONFIG_TMPFS_POSIX_ACL |
| 42 | int shmem_check_acl(struct inode *, int); | 45 | int shmem_check_acl(struct inode *, int); |
| 43 | int shmem_acl_init(struct inode *, struct inode *); | 46 | int shmem_acl_init(struct inode *, struct inode *); |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index f2c69a2cca17..df7b23ac66e6 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -304,7 +304,6 @@ typedef unsigned char *sk_buff_data_t; | |||
| 304 | * @tc_index: Traffic control index | 304 | * @tc_index: Traffic control index |
| 305 | * @tc_verd: traffic control verdict | 305 | * @tc_verd: traffic control verdict |
| 306 | * @ndisc_nodetype: router type (from link layer) | 306 | * @ndisc_nodetype: router type (from link layer) |
| 307 | * @do_not_encrypt: set to prevent encryption of this frame | ||
| 308 | * @dma_cookie: a cookie to one of several possible DMA operations | 307 | * @dma_cookie: a cookie to one of several possible DMA operations |
| 309 | * done by skb DMA functions | 308 | * done by skb DMA functions |
| 310 | * @secmark: security marking | 309 | * @secmark: security marking |
| @@ -380,12 +379,9 @@ struct sk_buff { | |||
| 380 | #ifdef CONFIG_IPV6_NDISC_NODETYPE | 379 | #ifdef CONFIG_IPV6_NDISC_NODETYPE |
| 381 | __u8 ndisc_nodetype:2; | 380 | __u8 ndisc_nodetype:2; |
| 382 | #endif | 381 | #endif |
| 383 | #if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE) | ||
| 384 | __u8 do_not_encrypt:1; | ||
| 385 | #endif | ||
| 386 | kmemcheck_bitfield_end(flags2); | 382 | kmemcheck_bitfield_end(flags2); |
| 387 | 383 | ||
| 388 | /* 0/13/14 bit hole */ | 384 | /* 0/14 bit hole */ |
| 389 | 385 | ||
| 390 | #ifdef CONFIG_NET_DMA | 386 | #ifdef CONFIG_NET_DMA |
| 391 | dma_cookie_t dma_cookie; | 387 | dma_cookie_t dma_cookie; |
diff --git a/include/linux/slob_def.h b/include/linux/slob_def.h index bb5368df4be8..0ec00b39d006 100644 --- a/include/linux/slob_def.h +++ b/include/linux/slob_def.h | |||
| @@ -34,9 +34,4 @@ static __always_inline void *__kmalloc(size_t size, gfp_t flags) | |||
| 34 | return kmalloc(size, flags); | 34 | return kmalloc(size, flags); |
| 35 | } | 35 | } |
| 36 | 36 | ||
| 37 | static inline void kmem_cache_init_late(void) | ||
| 38 | { | ||
| 39 | /* Nothing to do */ | ||
| 40 | } | ||
| 41 | |||
| 42 | #endif /* __LINUX_SLOB_DEF_H */ | 37 | #endif /* __LINUX_SLOB_DEF_H */ |
diff --git a/include/linux/slub_def.h b/include/linux/slub_def.h index c1c862b1d01a..5ad70a60fd74 100644 --- a/include/linux/slub_def.h +++ b/include/linux/slub_def.h | |||
| @@ -153,12 +153,10 @@ static __always_inline int kmalloc_index(size_t size) | |||
| 153 | if (size <= KMALLOC_MIN_SIZE) | 153 | if (size <= KMALLOC_MIN_SIZE) |
| 154 | return KMALLOC_SHIFT_LOW; | 154 | return KMALLOC_SHIFT_LOW; |
| 155 | 155 | ||
| 156 | #if KMALLOC_MIN_SIZE <= 64 | 156 | if (KMALLOC_MIN_SIZE <= 32 && size > 64 && size <= 96) |
| 157 | if (size > 64 && size <= 96) | ||
| 158 | return 1; | 157 | return 1; |
| 159 | if (size > 128 && size <= 192) | 158 | if (KMALLOC_MIN_SIZE <= 64 && size > 128 && size <= 192) |
| 160 | return 2; | 159 | return 2; |
| 161 | #endif | ||
| 162 | if (size <= 8) return 3; | 160 | if (size <= 8) return 3; |
| 163 | if (size <= 16) return 4; | 161 | if (size <= 16) return 4; |
| 164 | if (size <= 32) return 5; | 162 | if (size <= 32) return 5; |
| @@ -304,6 +302,4 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) | |||
| 304 | } | 302 | } |
| 305 | #endif | 303 | #endif |
| 306 | 304 | ||
| 307 | void __init kmem_cache_init_late(void); | ||
| 308 | |||
| 309 | #endif /* _LINUX_SLUB_DEF_H */ | 305 | #endif /* _LINUX_SLUB_DEF_H */ |
diff --git a/include/linux/ssb/ssb.h b/include/linux/ssb/ssb.h index 5ae8fa22d331..3d0a9ff24f01 100644 --- a/include/linux/ssb/ssb.h +++ b/include/linux/ssb/ssb.h | |||
| @@ -27,24 +27,54 @@ struct ssb_sprom { | |||
| 27 | u8 et1mdcport; /* MDIO for enet1 */ | 27 | u8 et1mdcport; /* MDIO for enet1 */ |
| 28 | u8 board_rev; /* Board revision number from SPROM. */ | 28 | u8 board_rev; /* Board revision number from SPROM. */ |
| 29 | u8 country_code; /* Country Code */ | 29 | u8 country_code; /* Country Code */ |
| 30 | u8 ant_available_a; /* A-PHY antenna available bits (up to 4) */ | 30 | u8 ant_available_a; /* 2GHz antenna available bits (up to 4) */ |
| 31 | u8 ant_available_bg; /* B/G-PHY antenna available bits (up to 4) */ | 31 | u8 ant_available_bg; /* 5GHz antenna available bits (up to 4) */ |
| 32 | u16 pa0b0; | 32 | u16 pa0b0; |
| 33 | u16 pa0b1; | 33 | u16 pa0b1; |
| 34 | u16 pa0b2; | 34 | u16 pa0b2; |
| 35 | u16 pa1b0; | 35 | u16 pa1b0; |
| 36 | u16 pa1b1; | 36 | u16 pa1b1; |
| 37 | u16 pa1b2; | 37 | u16 pa1b2; |
| 38 | u16 pa1lob0; | ||
| 39 | u16 pa1lob1; | ||
| 40 | u16 pa1lob2; | ||
| 41 | u16 pa1hib0; | ||
| 42 | u16 pa1hib1; | ||
| 43 | u16 pa1hib2; | ||
| 38 | u8 gpio0; /* GPIO pin 0 */ | 44 | u8 gpio0; /* GPIO pin 0 */ |
| 39 | u8 gpio1; /* GPIO pin 1 */ | 45 | u8 gpio1; /* GPIO pin 1 */ |
| 40 | u8 gpio2; /* GPIO pin 2 */ | 46 | u8 gpio2; /* GPIO pin 2 */ |
| 41 | u8 gpio3; /* GPIO pin 3 */ | 47 | u8 gpio3; /* GPIO pin 3 */ |
| 42 | u16 maxpwr_a; /* A-PHY Amplifier Max Power (in dBm Q5.2) */ | 48 | u16 maxpwr_bg; /* 2.4GHz Amplifier Max Power (in dBm Q5.2) */ |
| 43 | u16 maxpwr_bg; /* B/G-PHY Amplifier Max Power (in dBm Q5.2) */ | 49 | u16 maxpwr_al; /* 5.2GHz Amplifier Max Power (in dBm Q5.2) */ |
| 50 | u16 maxpwr_a; /* 5.3GHz Amplifier Max Power (in dBm Q5.2) */ | ||
| 51 | u16 maxpwr_ah; /* 5.8GHz Amplifier Max Power (in dBm Q5.2) */ | ||
| 44 | u8 itssi_a; /* Idle TSSI Target for A-PHY */ | 52 | u8 itssi_a; /* Idle TSSI Target for A-PHY */ |
| 45 | u8 itssi_bg; /* Idle TSSI Target for B/G-PHY */ | 53 | u8 itssi_bg; /* Idle TSSI Target for B/G-PHY */ |
| 46 | u16 boardflags_lo; /* Boardflags (low 16 bits) */ | 54 | u8 tri2g; /* 2.4GHz TX isolation */ |
| 47 | u16 boardflags_hi; /* Boardflags (high 16 bits) */ | 55 | u8 tri5gl; /* 5.2GHz TX isolation */ |
| 56 | u8 tri5g; /* 5.3GHz TX isolation */ | ||
| 57 | u8 tri5gh; /* 5.8GHz TX isolation */ | ||
| 58 | u8 rxpo2g; /* 2GHz RX power offset */ | ||
| 59 | u8 rxpo5g; /* 5GHz RX power offset */ | ||
| 60 | u8 rssisav2g; /* 2GHz RSSI params */ | ||
| 61 | u8 rssismc2g; | ||
| 62 | u8 rssismf2g; | ||
| 63 | u8 bxa2g; /* 2GHz BX arch */ | ||
| 64 | u8 rssisav5g; /* 5GHz RSSI params */ | ||
| 65 | u8 rssismc5g; | ||
| 66 | u8 rssismf5g; | ||
| 67 | u8 bxa5g; /* 5GHz BX arch */ | ||
| 68 | u16 cck2gpo; /* CCK power offset */ | ||
| 69 | u32 ofdm2gpo; /* 2.4GHz OFDM power offset */ | ||
| 70 | u32 ofdm5glpo; /* 5.2GHz OFDM power offset */ | ||
| 71 | u32 ofdm5gpo; /* 5.3GHz OFDM power offset */ | ||
| 72 | u32 ofdm5ghpo; /* 5.8GHz OFDM power offset */ | ||
| 73 | u16 boardflags_lo; /* Board flags (bits 0-15) */ | ||
| 74 | u16 boardflags_hi; /* Board flags (bits 16-31) */ | ||
| 75 | u16 boardflags2_lo; /* Board flags (bits 32-47) */ | ||
| 76 | u16 boardflags2_hi; /* Board flags (bits 48-63) */ | ||
| 77 | /* TODO store board flags in a single u64 */ | ||
| 48 | 78 | ||
| 49 | /* Antenna gain values for up to 4 antennas | 79 | /* Antenna gain values for up to 4 antennas |
| 50 | * on each band. Values in dBm/4 (Q5.2). Negative gain means the | 80 | * on each band. Values in dBm/4 (Q5.2). Negative gain means the |
| @@ -58,7 +88,7 @@ struct ssb_sprom { | |||
| 58 | } ghz5; /* 5GHz band */ | 88 | } ghz5; /* 5GHz band */ |
| 59 | } antenna_gain; | 89 | } antenna_gain; |
| 60 | 90 | ||
| 61 | /* TODO - add any parameters needed from rev 2, 3, or 4 SPROMs */ | 91 | /* TODO - add any parameters needed from rev 2, 3, 4, 5 or 8 SPROMs */ |
| 62 | }; | 92 | }; |
| 63 | 93 | ||
| 64 | /* Information about the PCB the circuitry is soldered on. */ | 94 | /* Information about the PCB the circuitry is soldered on. */ |
| @@ -208,6 +238,7 @@ enum ssb_bustype { | |||
| 208 | SSB_BUSTYPE_SSB, /* This SSB bus is the system bus */ | 238 | SSB_BUSTYPE_SSB, /* This SSB bus is the system bus */ |
| 209 | SSB_BUSTYPE_PCI, /* SSB is connected to PCI bus */ | 239 | SSB_BUSTYPE_PCI, /* SSB is connected to PCI bus */ |
| 210 | SSB_BUSTYPE_PCMCIA, /* SSB is connected to PCMCIA bus */ | 240 | SSB_BUSTYPE_PCMCIA, /* SSB is connected to PCMCIA bus */ |
| 241 | SSB_BUSTYPE_SDIO, /* SSB is connected to SDIO bus */ | ||
| 211 | }; | 242 | }; |
| 212 | 243 | ||
| 213 | /* board_vendor */ | 244 | /* board_vendor */ |
| @@ -240,8 +271,12 @@ struct ssb_bus { | |||
| 240 | 271 | ||
| 241 | /* The core in the basic address register window. (PCI bus only) */ | 272 | /* The core in the basic address register window. (PCI bus only) */ |
| 242 | struct ssb_device *mapped_device; | 273 | struct ssb_device *mapped_device; |
| 243 | /* Currently mapped PCMCIA segment. (bustype == SSB_BUSTYPE_PCMCIA only) */ | 274 | union { |
| 244 | u8 mapped_pcmcia_seg; | 275 | /* Currently mapped PCMCIA segment. (bustype == SSB_BUSTYPE_PCMCIA only) */ |
| 276 | u8 mapped_pcmcia_seg; | ||
| 277 | /* Current SSB base address window for SDIO. */ | ||
| 278 | u32 sdio_sbaddr; | ||
| 279 | }; | ||
| 245 | /* Lock for core and segment switching. | 280 | /* Lock for core and segment switching. |
| 246 | * On PCMCIA-host busses this is used to protect the whole MMIO access. */ | 281 | * On PCMCIA-host busses this is used to protect the whole MMIO access. */ |
| 247 | spinlock_t bar_lock; | 282 | spinlock_t bar_lock; |
| @@ -252,6 +287,11 @@ struct ssb_bus { | |||
| 252 | struct pci_dev *host_pci; | 287 | struct pci_dev *host_pci; |
| 253 | /* Pointer to the PCMCIA device (only if bustype == SSB_BUSTYPE_PCMCIA). */ | 288 | /* Pointer to the PCMCIA device (only if bustype == SSB_BUSTYPE_PCMCIA). */ |
| 254 | struct pcmcia_device *host_pcmcia; | 289 | struct pcmcia_device *host_pcmcia; |
| 290 | /* Pointer to the SDIO device (only if bustype == SSB_BUSTYPE_SDIO). */ | ||
| 291 | struct sdio_func *host_sdio; | ||
| 292 | |||
| 293 | /* See enum ssb_quirks */ | ||
| 294 | unsigned int quirks; | ||
| 255 | 295 | ||
| 256 | #ifdef CONFIG_SSB_SPROM | 296 | #ifdef CONFIG_SSB_SPROM |
| 257 | /* Mutex to protect the SPROM writing. */ | 297 | /* Mutex to protect the SPROM writing. */ |
| @@ -306,6 +346,11 @@ struct ssb_bus { | |||
| 306 | #endif /* DEBUG */ | 346 | #endif /* DEBUG */ |
| 307 | }; | 347 | }; |
| 308 | 348 | ||
| 349 | enum ssb_quirks { | ||
| 350 | /* SDIO connected card requires performing a read after writing a 32-bit value */ | ||
| 351 | SSB_QUIRK_SDIO_READ_AFTER_WRITE32 = (1 << 0), | ||
| 352 | }; | ||
| 353 | |||
| 309 | /* The initialization-invariants. */ | 354 | /* The initialization-invariants. */ |
| 310 | struct ssb_init_invariants { | 355 | struct ssb_init_invariants { |
| 311 | /* Versioning information about the PCB. */ | 356 | /* Versioning information about the PCB. */ |
| @@ -336,6 +381,12 @@ extern int ssb_bus_pcmciabus_register(struct ssb_bus *bus, | |||
| 336 | struct pcmcia_device *pcmcia_dev, | 381 | struct pcmcia_device *pcmcia_dev, |
| 337 | unsigned long baseaddr); | 382 | unsigned long baseaddr); |
| 338 | #endif /* CONFIG_SSB_PCMCIAHOST */ | 383 | #endif /* CONFIG_SSB_PCMCIAHOST */ |
| 384 | #ifdef CONFIG_SSB_SDIOHOST | ||
| 385 | extern int ssb_bus_sdiobus_register(struct ssb_bus *bus, | ||
| 386 | struct sdio_func *sdio_func, | ||
| 387 | unsigned int quirks); | ||
| 388 | #endif /* CONFIG_SSB_SDIOHOST */ | ||
| 389 | |||
| 339 | 390 | ||
| 340 | extern void ssb_bus_unregister(struct ssb_bus *bus); | 391 | extern void ssb_bus_unregister(struct ssb_bus *bus); |
| 341 | 392 | ||
diff --git a/include/linux/ssb/ssb_driver_chipcommon.h b/include/linux/ssb/ssb_driver_chipcommon.h index d3b1d18922f2..4e27acf0a92f 100644 --- a/include/linux/ssb/ssb_driver_chipcommon.h +++ b/include/linux/ssb/ssb_driver_chipcommon.h | |||
| @@ -629,5 +629,15 @@ extern int ssb_chipco_serial_init(struct ssb_chipcommon *cc, | |||
| 629 | /* PMU support */ | 629 | /* PMU support */ |
| 630 | extern void ssb_pmu_init(struct ssb_chipcommon *cc); | 630 | extern void ssb_pmu_init(struct ssb_chipcommon *cc); |
| 631 | 631 | ||
| 632 | enum ssb_pmu_ldo_volt_id { | ||
| 633 | LDO_PAREF = 0, | ||
| 634 | LDO_VOLT1, | ||
| 635 | LDO_VOLT2, | ||
| 636 | LDO_VOLT3, | ||
| 637 | }; | ||
| 638 | |||
| 639 | void ssb_pmu_set_ldo_voltage(struct ssb_chipcommon *cc, | ||
| 640 | enum ssb_pmu_ldo_volt_id id, u32 voltage); | ||
| 641 | void ssb_pmu_set_ldo_paref(struct ssb_chipcommon *cc, bool on); | ||
| 632 | 642 | ||
| 633 | #endif /* LINUX_SSB_CHIPCO_H_ */ | 643 | #endif /* LINUX_SSB_CHIPCO_H_ */ |
diff --git a/include/linux/ssb/ssb_regs.h b/include/linux/ssb/ssb_regs.h index a01b982b5783..9ae9082eaeb4 100644 --- a/include/linux/ssb/ssb_regs.h +++ b/include/linux/ssb/ssb_regs.h | |||
| @@ -162,7 +162,7 @@ | |||
| 162 | 162 | ||
| 163 | /* SPROM shadow area. If not otherwise noted, fields are | 163 | /* SPROM shadow area. If not otherwise noted, fields are |
| 164 | * two bytes wide. Note that the SPROM can _only_ be read | 164 | * two bytes wide. Note that the SPROM can _only_ be read |
| 165 | * in two-byte quantinies. | 165 | * in two-byte quantities. |
| 166 | */ | 166 | */ |
| 167 | #define SSB_SPROMSIZE_WORDS 64 | 167 | #define SSB_SPROMSIZE_WORDS 64 |
| 168 | #define SSB_SPROMSIZE_BYTES (SSB_SPROMSIZE_WORDS * sizeof(u16)) | 168 | #define SSB_SPROMSIZE_BYTES (SSB_SPROMSIZE_WORDS * sizeof(u16)) |
| @@ -327,8 +327,11 @@ | |||
| 327 | #define SSB_SPROM5_GPIOB_P3_SHIFT 8 | 327 | #define SSB_SPROM5_GPIOB_P3_SHIFT 8 |
| 328 | 328 | ||
| 329 | /* SPROM Revision 8 */ | 329 | /* SPROM Revision 8 */ |
| 330 | #define SSB_SPROM8_BFLLO 0x1084 /* Boardflags (low 16 bits) */ | 330 | #define SSB_SPROM8_BOARDREV 0x1082 /* Board revision */ |
| 331 | #define SSB_SPROM8_BFLHI 0x1086 /* Boardflags Hi */ | 331 | #define SSB_SPROM8_BFLLO 0x1084 /* Board flags (bits 0-15) */ |
| 332 | #define SSB_SPROM8_BFLHI 0x1086 /* Board flags (bits 16-31) */ | ||
| 333 | #define SSB_SPROM8_BFL2LO 0x1088 /* Board flags (bits 32-47) */ | ||
| 334 | #define SSB_SPROM8_BFL2HI 0x108A /* Board flags (bits 48-63) */ | ||
| 332 | #define SSB_SPROM8_IL0MAC 0x108C /* 6 byte MAC address */ | 335 | #define SSB_SPROM8_IL0MAC 0x108C /* 6 byte MAC address */ |
| 333 | #define SSB_SPROM8_CCODE 0x1092 /* 2 byte country code */ | 336 | #define SSB_SPROM8_CCODE 0x1092 /* 2 byte country code */ |
| 334 | #define SSB_SPROM8_ANTAVAIL 0x109C /* Antenna available bitfields*/ | 337 | #define SSB_SPROM8_ANTAVAIL 0x109C /* Antenna available bitfields*/ |
| @@ -354,14 +357,63 @@ | |||
| 354 | #define SSB_SPROM8_GPIOB_P2 0x00FF /* Pin 2 */ | 357 | #define SSB_SPROM8_GPIOB_P2 0x00FF /* Pin 2 */ |
| 355 | #define SSB_SPROM8_GPIOB_P3 0xFF00 /* Pin 3 */ | 358 | #define SSB_SPROM8_GPIOB_P3 0xFF00 /* Pin 3 */ |
| 356 | #define SSB_SPROM8_GPIOB_P3_SHIFT 8 | 359 | #define SSB_SPROM8_GPIOB_P3_SHIFT 8 |
| 357 | #define SSB_SPROM8_MAXP_BG 0x10C0 /* Max Power BG in path 1 */ | 360 | #define SSB_SPROM8_RSSIPARM2G 0x10A4 /* RSSI params for 2GHz */ |
| 358 | #define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power BG */ | 361 | #define SSB_SPROM8_RSSISMF2G 0x000F |
| 362 | #define SSB_SPROM8_RSSISMC2G 0x00F0 | ||
| 363 | #define SSB_SPROM8_RSSISMC2G_SHIFT 4 | ||
| 364 | #define SSB_SPROM8_RSSISAV2G 0x0700 | ||
| 365 | #define SSB_SPROM8_RSSISAV2G_SHIFT 8 | ||
| 366 | #define SSB_SPROM8_BXA2G 0x1800 | ||
| 367 | #define SSB_SPROM8_BXA2G_SHIFT 11 | ||
| 368 | #define SSB_SPROM8_RSSIPARM5G 0x10A6 /* RSSI params for 5GHz */ | ||
| 369 | #define SSB_SPROM8_RSSISMF5G 0x000F | ||
| 370 | #define SSB_SPROM8_RSSISMC5G 0x00F0 | ||
| 371 | #define SSB_SPROM8_RSSISMC5G_SHIFT 4 | ||
| 372 | #define SSB_SPROM8_RSSISAV5G 0x0700 | ||
| 373 | #define SSB_SPROM8_RSSISAV5G_SHIFT 8 | ||
| 374 | #define SSB_SPROM8_BXA5G 0x1800 | ||
| 375 | #define SSB_SPROM8_BXA5G_SHIFT 11 | ||
| 376 | #define SSB_SPROM8_TRI25G 0x10A8 /* TX isolation 2.4&5.3GHz */ | ||
| 377 | #define SSB_SPROM8_TRI2G 0x00FF /* TX isolation 2.4GHz */ | ||
| 378 | #define SSB_SPROM8_TRI5G 0xFF00 /* TX isolation 5.3GHz */ | ||
| 379 | #define SSB_SPROM8_TRI5G_SHIFT 8 | ||
| 380 | #define SSB_SPROM8_TRI5GHL 0x10AA /* TX isolation 5.2/5.8GHz */ | ||
| 381 | #define SSB_SPROM8_TRI5GL 0x00FF /* TX isolation 5.2GHz */ | ||
| 382 | #define SSB_SPROM8_TRI5GH 0xFF00 /* TX isolation 5.8GHz */ | ||
| 383 | #define SSB_SPROM8_TRI5GH_SHIFT 8 | ||
| 384 | #define SSB_SPROM8_RXPO 0x10AC /* RX power offsets */ | ||
| 385 | #define SSB_SPROM8_RXPO2G 0x00FF /* 2GHz RX power offset */ | ||
| 386 | #define SSB_SPROM8_RXPO5G 0xFF00 /* 5GHz RX power offset */ | ||
| 387 | #define SSB_SPROM8_RXPO5G_SHIFT 8 | ||
| 388 | #define SSB_SPROM8_MAXP_BG 0x10C0 /* Max Power 2GHz in path 1 */ | ||
| 389 | #define SSB_SPROM8_MAXP_BG_MASK 0x00FF /* Mask for Max Power 2GHz */ | ||
| 359 | #define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ | 390 | #define SSB_SPROM8_ITSSI_BG 0xFF00 /* Mask for path 1 itssi_bg */ |
| 360 | #define SSB_SPROM8_ITSSI_BG_SHIFT 8 | 391 | #define SSB_SPROM8_ITSSI_BG_SHIFT 8 |
| 361 | #define SSB_SPROM8_MAXP_A 0x10C8 /* Max Power A in path 1 */ | 392 | #define SSB_SPROM8_PA0B0 0x10C2 /* 2GHz power amp settings */ |
| 362 | #define SSB_SPROM8_MAXP_A_MASK 0x00FF /* Mask for Max Power A */ | 393 | #define SSB_SPROM8_PA0B1 0x10C4 |
| 394 | #define SSB_SPROM8_PA0B2 0x10C6 | ||
| 395 | #define SSB_SPROM8_MAXP_A 0x10C8 /* Max Power 5.3GHz */ | ||
| 396 | #define SSB_SPROM8_MAXP_A_MASK 0x00FF /* Mask for Max Power 5.3GHz */ | ||
| 363 | #define SSB_SPROM8_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */ | 397 | #define SSB_SPROM8_ITSSI_A 0xFF00 /* Mask for path 1 itssi_a */ |
| 364 | #define SSB_SPROM8_ITSSI_A_SHIFT 8 | 398 | #define SSB_SPROM8_ITSSI_A_SHIFT 8 |
| 399 | #define SSB_SPROM8_MAXP_AHL 0x10CA /* Max Power 5.2/5.8GHz */ | ||
| 400 | #define SSB_SPROM8_MAXP_AH_MASK 0x00FF /* Mask for Max Power 5.8GHz */ | ||
| 401 | #define SSB_SPROM8_MAXP_AL_MASK 0xFF00 /* Mask for Max Power 5.2GHz */ | ||
| 402 | #define SSB_SPROM8_MAXP_AL_SHIFT 8 | ||
| 403 | #define SSB_SPROM8_PA1B0 0x10CC /* 5.3GHz power amp settings */ | ||
| 404 | #define SSB_SPROM8_PA1B1 0x10CE | ||
| 405 | #define SSB_SPROM8_PA1B2 0x10D0 | ||
| 406 | #define SSB_SPROM8_PA1LOB0 0x10D2 /* 5.2GHz power amp settings */ | ||
| 407 | #define SSB_SPROM8_PA1LOB1 0x10D4 | ||
| 408 | #define SSB_SPROM8_PA1LOB2 0x10D6 | ||
| 409 | #define SSB_SPROM8_PA1HIB0 0x10D8 /* 5.8GHz power amp settings */ | ||
| 410 | #define SSB_SPROM8_PA1HIB1 0x10DA | ||
| 411 | #define SSB_SPROM8_PA1HIB2 0x10DC | ||
| 412 | #define SSB_SPROM8_CCK2GPO 0x1140 /* CCK power offset */ | ||
| 413 | #define SSB_SPROM8_OFDM2GPO 0x1142 /* 2.4GHz OFDM power offset */ | ||
| 414 | #define SSB_SPROM8_OFDM5GPO 0x1146 /* 5.3GHz OFDM power offset */ | ||
| 415 | #define SSB_SPROM8_OFDM5GLPO 0x114A /* 5.2GHz OFDM power offset */ | ||
| 416 | #define SSB_SPROM8_OFDM5GHPO 0x114E /* 5.8GHz OFDM power offset */ | ||
| 365 | 417 | ||
| 366 | /* Values for SSB_SPROM1_BINF_CCODE */ | 418 | /* Values for SSB_SPROM1_BINF_CCODE */ |
| 367 | enum { | 419 | enum { |
diff --git a/include/linux/tboot.h b/include/linux/tboot.h new file mode 100644 index 000000000000..bf2a0c748878 --- /dev/null +++ b/include/linux/tboot.h | |||
| @@ -0,0 +1,162 @@ | |||
| 1 | /* | ||
| 2 | * tboot.h: shared data structure with tboot and kernel and functions | ||
| 3 | * used by kernel for runtime support of Intel(R) Trusted | ||
| 4 | * Execution Technology | ||
| 5 | * | ||
| 6 | * Copyright (c) 2006-2009, Intel Corporation | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify it | ||
| 9 | * under the terms and conditions of the GNU General Public License, | ||
| 10 | * version 2, as published by the Free Software Foundation. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 13 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 14 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 15 | * more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License along with | ||
| 18 | * this program; if not, write to the Free Software Foundation, Inc., | ||
| 19 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 20 | * | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef _LINUX_TBOOT_H | ||
| 24 | #define _LINUX_TBOOT_H | ||
| 25 | |||
| 26 | /* these must have the values from 0-5 in this order */ | ||
| 27 | enum { | ||
| 28 | TB_SHUTDOWN_REBOOT = 0, | ||
| 29 | TB_SHUTDOWN_S5, | ||
| 30 | TB_SHUTDOWN_S4, | ||
| 31 | TB_SHUTDOWN_S3, | ||
| 32 | TB_SHUTDOWN_HALT, | ||
| 33 | TB_SHUTDOWN_WFS | ||
| 34 | }; | ||
| 35 | |||
| 36 | #ifdef CONFIG_INTEL_TXT | ||
| 37 | #include <acpi/acpi.h> | ||
| 38 | /* used to communicate between tboot and the launched kernel */ | ||
| 39 | |||
| 40 | #define TB_KEY_SIZE 64 /* 512 bits */ | ||
| 41 | |||
| 42 | #define MAX_TB_MAC_REGIONS 32 | ||
| 43 | |||
| 44 | struct tboot_mac_region { | ||
| 45 | u64 start; /* must be 64 byte -aligned */ | ||
| 46 | u32 size; /* must be 64 byte -granular */ | ||
| 47 | } __packed; | ||
| 48 | |||
| 49 | /* GAS - Generic Address Structure (ACPI 2.0+) */ | ||
| 50 | struct tboot_acpi_generic_address { | ||
| 51 | u8 space_id; | ||
| 52 | u8 bit_width; | ||
| 53 | u8 bit_offset; | ||
| 54 | u8 access_width; | ||
| 55 | u64 address; | ||
| 56 | } __packed; | ||
| 57 | |||
| 58 | /* | ||
| 59 | * combines Sx info from FADT and FACS tables per ACPI 2.0+ spec | ||
| 60 | * (http://www.acpi.info/) | ||
| 61 | */ | ||
| 62 | struct tboot_acpi_sleep_info { | ||
| 63 | struct tboot_acpi_generic_address pm1a_cnt_blk; | ||
| 64 | struct tboot_acpi_generic_address pm1b_cnt_blk; | ||
| 65 | struct tboot_acpi_generic_address pm1a_evt_blk; | ||
| 66 | struct tboot_acpi_generic_address pm1b_evt_blk; | ||
| 67 | u16 pm1a_cnt_val; | ||
| 68 | u16 pm1b_cnt_val; | ||
| 69 | u64 wakeup_vector; | ||
| 70 | u32 vector_width; | ||
| 71 | u64 kernel_s3_resume_vector; | ||
| 72 | } __packed; | ||
| 73 | |||
| 74 | /* | ||
| 75 | * shared memory page used for communication between tboot and kernel | ||
| 76 | */ | ||
| 77 | struct tboot { | ||
| 78 | /* | ||
| 79 | * version 3+ fields: | ||
| 80 | */ | ||
| 81 | |||
| 82 | /* TBOOT_UUID */ | ||
| 83 | u8 uuid[16]; | ||
| 84 | |||
| 85 | /* version number: 5 is current */ | ||
| 86 | u32 version; | ||
| 87 | |||
| 88 | /* physical addr of tb_log_t log */ | ||
| 89 | u32 log_addr; | ||
| 90 | |||
| 91 | /* | ||
| 92 | * physical addr of entry point for tboot shutdown and | ||
| 93 | * type of shutdown (TB_SHUTDOWN_*) being requested | ||
| 94 | */ | ||
| 95 | u32 shutdown_entry; | ||
| 96 | u32 shutdown_type; | ||
| 97 | |||
| 98 | /* kernel-specified ACPI info for Sx shutdown */ | ||
| 99 | struct tboot_acpi_sleep_info acpi_sinfo; | ||
| 100 | |||
| 101 | /* tboot location in memory (physical) */ | ||
| 102 | u32 tboot_base; | ||
| 103 | u32 tboot_size; | ||
| 104 | |||
| 105 | /* memory regions (phys addrs) for tboot to MAC on S3 */ | ||
| 106 | u8 num_mac_regions; | ||
| 107 | struct tboot_mac_region mac_regions[MAX_TB_MAC_REGIONS]; | ||
| 108 | |||
| 109 | |||
| 110 | /* | ||
| 111 | * version 4+ fields: | ||
| 112 | */ | ||
| 113 | |||
| 114 | /* symmetric key for use by kernel; will be encrypted on S3 */ | ||
| 115 | u8 s3_key[TB_KEY_SIZE]; | ||
| 116 | |||
| 117 | |||
| 118 | /* | ||
| 119 | * version 5+ fields: | ||
| 120 | */ | ||
| 121 | |||
| 122 | /* used to 4byte-align num_in_wfs */ | ||
| 123 | u8 reserved_align[3]; | ||
| 124 | |||
| 125 | /* number of processors in wait-for-SIPI */ | ||
| 126 | u32 num_in_wfs; | ||
| 127 | } __packed; | ||
| 128 | |||
| 129 | /* | ||
| 130 | * UUID for tboot data struct to facilitate matching | ||
| 131 | * defined as {663C8DFF-E8B3-4b82-AABF-19EA4D057A08} by tboot, which is | ||
| 132 | * represented as {} in the char array used here | ||
| 133 | */ | ||
| 134 | #define TBOOT_UUID {0xff, 0x8d, 0x3c, 0x66, 0xb3, 0xe8, 0x82, 0x4b, 0xbf,\ | ||
| 135 | 0xaa, 0x19, 0xea, 0x4d, 0x5, 0x7a, 0x8} | ||
| 136 | |||
| 137 | extern struct tboot *tboot; | ||
| 138 | |||
| 139 | static inline int tboot_enabled(void) | ||
| 140 | { | ||
| 141 | return tboot != NULL; | ||
| 142 | } | ||
| 143 | |||
| 144 | extern void tboot_probe(void); | ||
| 145 | extern void tboot_shutdown(u32 shutdown_type); | ||
| 146 | extern void tboot_sleep(u8 sleep_state, u32 pm1a_control, u32 pm1b_control); | ||
| 147 | extern struct acpi_table_header *tboot_get_dmar_table( | ||
| 148 | struct acpi_table_header *dmar_tbl); | ||
| 149 | extern int tboot_force_iommu(void); | ||
| 150 | |||
| 151 | #else | ||
| 152 | |||
| 153 | #define tboot_probe() do { } while (0) | ||
| 154 | #define tboot_shutdown(shutdown_type) do { } while (0) | ||
| 155 | #define tboot_sleep(sleep_state, pm1a_control, pm1b_control) \ | ||
| 156 | do { } while (0) | ||
| 157 | #define tboot_get_dmar_table(dmar_tbl) (dmar_tbl) | ||
| 158 | #define tboot_force_iommu() 0 | ||
| 159 | |||
| 160 | #endif /* !CONFIG_INTEL_TXT */ | ||
| 161 | |||
| 162 | #endif /* _LINUX_TBOOT_H */ | ||
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 8afac76cd748..61723a7c21fe 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -233,7 +233,7 @@ struct tcp_request_sock { | |||
| 233 | struct inet_request_sock req; | 233 | struct inet_request_sock req; |
| 234 | #ifdef CONFIG_TCP_MD5SIG | 234 | #ifdef CONFIG_TCP_MD5SIG |
| 235 | /* Only used by TCP MD5 Signature so far. */ | 235 | /* Only used by TCP MD5 Signature so far. */ |
| 236 | struct tcp_request_sock_ops *af_specific; | 236 | const struct tcp_request_sock_ops *af_specific; |
| 237 | #endif | 237 | #endif |
| 238 | u32 rcv_isn; | 238 | u32 rcv_isn; |
| 239 | u32 snt_isn; | 239 | u32 snt_isn; |
| @@ -401,9 +401,9 @@ struct tcp_sock { | |||
| 401 | 401 | ||
| 402 | #ifdef CONFIG_TCP_MD5SIG | 402 | #ifdef CONFIG_TCP_MD5SIG |
| 403 | /* TCP AF-Specific parts; only used by MD5 Signature support so far */ | 403 | /* TCP AF-Specific parts; only used by MD5 Signature support so far */ |
| 404 | struct tcp_sock_af_ops *af_specific; | 404 | const struct tcp_sock_af_ops *af_specific; |
| 405 | 405 | ||
| 406 | /* TCP MD5 Signagure Option information */ | 406 | /* TCP MD5 Signature Option information */ |
| 407 | struct tcp_md5sig_info *md5sig_info; | 407 | struct tcp_md5sig_info *md5sig_info; |
| 408 | #endif | 408 | #endif |
| 409 | }; | 409 | }; |
diff --git a/include/linux/tipc.h b/include/linux/tipc.h index bea469455a0c..3d92396639de 100644 --- a/include/linux/tipc.h +++ b/include/linux/tipc.h | |||
| @@ -209,5 +209,7 @@ struct sockaddr_tipc { | |||
| 209 | #define TIPC_SRC_DROPPABLE 128 /* Default: 0 (resend congested msg) */ | 209 | #define TIPC_SRC_DROPPABLE 128 /* Default: 0 (resend congested msg) */ |
| 210 | #define TIPC_DEST_DROPPABLE 129 /* Default: based on socket type */ | 210 | #define TIPC_DEST_DROPPABLE 129 /* Default: based on socket type */ |
| 211 | #define TIPC_CONN_TIMEOUT 130 /* Default: 8000 (ms) */ | 211 | #define TIPC_CONN_TIMEOUT 130 /* Default: 8000 (ms) */ |
| 212 | #define TIPC_NODE_RECVQ_DEPTH 131 /* Default: none (read only) */ | ||
| 213 | #define TIPC_SOCK_RECVQ_DEPTH 132 /* Default: none (read only) */ | ||
| 212 | 214 | ||
| 213 | #endif | 215 | #endif |
diff --git a/include/linux/topology.h b/include/linux/topology.h index 85e8cf7d393c..809b26c07090 100644 --- a/include/linux/topology.h +++ b/include/linux/topology.h | |||
| @@ -95,14 +95,12 @@ int arch_update_cpu_topology(void); | |||
| 95 | | 1*SD_BALANCE_NEWIDLE \ | 95 | | 1*SD_BALANCE_NEWIDLE \ |
| 96 | | 1*SD_BALANCE_EXEC \ | 96 | | 1*SD_BALANCE_EXEC \ |
| 97 | | 1*SD_BALANCE_FORK \ | 97 | | 1*SD_BALANCE_FORK \ |
| 98 | | 0*SD_WAKE_IDLE \ | 98 | | 0*SD_BALANCE_WAKE \ |
| 99 | | 1*SD_WAKE_AFFINE \ | 99 | | 1*SD_WAKE_AFFINE \ |
| 100 | | 1*SD_WAKE_BALANCE \ | ||
| 101 | | 1*SD_SHARE_CPUPOWER \ | 100 | | 1*SD_SHARE_CPUPOWER \ |
| 102 | | 0*SD_POWERSAVINGS_BALANCE \ | 101 | | 0*SD_POWERSAVINGS_BALANCE \ |
| 103 | | 0*SD_SHARE_PKG_RESOURCES \ | 102 | | 0*SD_SHARE_PKG_RESOURCES \ |
| 104 | | 0*SD_SERIALIZE \ | 103 | | 0*SD_SERIALIZE \ |
| 105 | | 0*SD_WAKE_IDLE_FAR \ | ||
| 106 | | 0*SD_PREFER_SIBLING \ | 104 | | 0*SD_PREFER_SIBLING \ |
| 107 | , \ | 105 | , \ |
| 108 | .last_balance = jiffies, \ | 106 | .last_balance = jiffies, \ |
| @@ -122,20 +120,19 @@ int arch_update_cpu_topology(void); | |||
| 122 | .imbalance_pct = 125, \ | 120 | .imbalance_pct = 125, \ |
| 123 | .cache_nice_tries = 1, \ | 121 | .cache_nice_tries = 1, \ |
| 124 | .busy_idx = 2, \ | 122 | .busy_idx = 2, \ |
| 125 | .wake_idx = 1, \ | 123 | .wake_idx = 0, \ |
| 126 | .forkexec_idx = 1, \ | 124 | .forkexec_idx = 0, \ |
| 127 | \ | 125 | \ |
| 128 | .flags = 1*SD_LOAD_BALANCE \ | 126 | .flags = 1*SD_LOAD_BALANCE \ |
| 129 | | 1*SD_BALANCE_NEWIDLE \ | 127 | | 1*SD_BALANCE_NEWIDLE \ |
| 130 | | 1*SD_BALANCE_EXEC \ | 128 | | 1*SD_BALANCE_EXEC \ |
| 131 | | 1*SD_BALANCE_FORK \ | 129 | | 1*SD_BALANCE_FORK \ |
| 132 | | 1*SD_WAKE_IDLE \ | 130 | | 0*SD_BALANCE_WAKE \ |
| 133 | | 1*SD_WAKE_AFFINE \ | 131 | | 1*SD_WAKE_AFFINE \ |
| 134 | | 1*SD_WAKE_BALANCE \ | 132 | | 1*SD_PREFER_LOCAL \ |
| 135 | | 0*SD_SHARE_CPUPOWER \ | 133 | | 0*SD_SHARE_CPUPOWER \ |
| 136 | | 1*SD_SHARE_PKG_RESOURCES \ | 134 | | 1*SD_SHARE_PKG_RESOURCES \ |
| 137 | | 0*SD_SERIALIZE \ | 135 | | 0*SD_SERIALIZE \ |
| 138 | | 0*SD_WAKE_IDLE_FAR \ | ||
| 139 | | sd_balance_for_mc_power() \ | 136 | | sd_balance_for_mc_power() \ |
| 140 | | sd_power_saving_flags() \ | 137 | | sd_power_saving_flags() \ |
| 141 | , \ | 138 | , \ |
| @@ -155,21 +152,20 @@ int arch_update_cpu_topology(void); | |||
| 155 | .cache_nice_tries = 1, \ | 152 | .cache_nice_tries = 1, \ |
| 156 | .busy_idx = 2, \ | 153 | .busy_idx = 2, \ |
| 157 | .idle_idx = 1, \ | 154 | .idle_idx = 1, \ |
| 158 | .newidle_idx = 2, \ | 155 | .newidle_idx = 0, \ |
| 159 | .wake_idx = 1, \ | 156 | .wake_idx = 0, \ |
| 160 | .forkexec_idx = 1, \ | 157 | .forkexec_idx = 0, \ |
| 161 | \ | 158 | \ |
| 162 | .flags = 1*SD_LOAD_BALANCE \ | 159 | .flags = 1*SD_LOAD_BALANCE \ |
| 163 | | 1*SD_BALANCE_NEWIDLE \ | 160 | | 1*SD_BALANCE_NEWIDLE \ |
| 164 | | 1*SD_BALANCE_EXEC \ | 161 | | 1*SD_BALANCE_EXEC \ |
| 165 | | 1*SD_BALANCE_FORK \ | 162 | | 1*SD_BALANCE_FORK \ |
| 166 | | 1*SD_WAKE_IDLE \ | 163 | | 0*SD_BALANCE_WAKE \ |
| 167 | | 0*SD_WAKE_AFFINE \ | 164 | | 1*SD_WAKE_AFFINE \ |
| 168 | | 1*SD_WAKE_BALANCE \ | 165 | | 1*SD_PREFER_LOCAL \ |
| 169 | | 0*SD_SHARE_CPUPOWER \ | 166 | | 0*SD_SHARE_CPUPOWER \ |
| 170 | | 0*SD_SHARE_PKG_RESOURCES \ | 167 | | 0*SD_SHARE_PKG_RESOURCES \ |
| 171 | | 0*SD_SERIALIZE \ | 168 | | 0*SD_SERIALIZE \ |
| 172 | | 0*SD_WAKE_IDLE_FAR \ | ||
| 173 | | sd_balance_for_package_power() \ | 169 | | sd_balance_for_package_power() \ |
| 174 | | sd_power_saving_flags() \ | 170 | | sd_power_saving_flags() \ |
| 175 | , \ | 171 | , \ |
| @@ -191,14 +187,12 @@ int arch_update_cpu_topology(void); | |||
| 191 | | 1*SD_BALANCE_NEWIDLE \ | 187 | | 1*SD_BALANCE_NEWIDLE \ |
| 192 | | 0*SD_BALANCE_EXEC \ | 188 | | 0*SD_BALANCE_EXEC \ |
| 193 | | 0*SD_BALANCE_FORK \ | 189 | | 0*SD_BALANCE_FORK \ |
| 194 | | 0*SD_WAKE_IDLE \ | 190 | | 0*SD_BALANCE_WAKE \ |
| 195 | | 1*SD_WAKE_AFFINE \ | 191 | | 0*SD_WAKE_AFFINE \ |
| 196 | | 0*SD_WAKE_BALANCE \ | ||
| 197 | | 0*SD_SHARE_CPUPOWER \ | 192 | | 0*SD_SHARE_CPUPOWER \ |
| 198 | | 0*SD_POWERSAVINGS_BALANCE \ | 193 | | 0*SD_POWERSAVINGS_BALANCE \ |
| 199 | | 0*SD_SHARE_PKG_RESOURCES \ | 194 | | 0*SD_SHARE_PKG_RESOURCES \ |
| 200 | | 1*SD_SERIALIZE \ | 195 | | 1*SD_SERIALIZE \ |
| 201 | | 1*SD_WAKE_IDLE_FAR \ | ||
| 202 | | 0*SD_PREFER_SIBLING \ | 196 | | 0*SD_PREFER_SIBLING \ |
| 203 | , \ | 197 | , \ |
| 204 | .last_balance = jiffies, \ | 198 | .last_balance = jiffies, \ |
diff --git a/include/linux/transport_class.h b/include/linux/transport_class.h index eaec1ea9558e..9ae8da3e6407 100644 --- a/include/linux/transport_class.h +++ b/include/linux/transport_class.h | |||
| @@ -55,7 +55,7 @@ struct anon_transport_class cls = { \ | |||
| 55 | 55 | ||
| 56 | struct transport_container { | 56 | struct transport_container { |
| 57 | struct attribute_container ac; | 57 | struct attribute_container ac; |
| 58 | struct attribute_group *statistics; | 58 | const struct attribute_group *statistics; |
| 59 | }; | 59 | }; |
| 60 | 60 | ||
| 61 | #define attribute_container_to_transport_container(x) \ | 61 | #define attribute_container_to_transport_container(x) \ |
diff --git a/include/linux/tty.h b/include/linux/tty.h index 0d3974f59c53..a916a318004e 100644 --- a/include/linux/tty.h +++ b/include/linux/tty.h | |||
| @@ -519,10 +519,6 @@ extern void serial_console_init(void); | |||
| 519 | 519 | ||
| 520 | extern int pcxe_open(struct tty_struct *tty, struct file *filp); | 520 | extern int pcxe_open(struct tty_struct *tty, struct file *filp); |
| 521 | 521 | ||
| 522 | /* printk.c */ | ||
| 523 | |||
| 524 | extern void console_print(const char *); | ||
| 525 | |||
| 526 | /* vt.c */ | 522 | /* vt.c */ |
| 527 | 523 | ||
| 528 | extern int vt_ioctl(struct tty_struct *tty, struct file *file, | 524 | extern int vt_ioctl(struct tty_struct *tty, struct file *file, |
diff --git a/include/linux/usb/rndis_host.h b/include/linux/usb/rndis_host.h index 37836b937d97..1ef1ebc2b04f 100644 --- a/include/linux/usb/rndis_host.h +++ b/include/linux/usb/rndis_host.h | |||
| @@ -70,12 +70,13 @@ struct rndis_msg_hdr { | |||
| 70 | #define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) | 70 | #define RNDIS_MSG_KEEPALIVE_C (RNDIS_MSG_KEEPALIVE|RNDIS_MSG_COMPLETION) |
| 71 | 71 | ||
| 72 | /* codes for "status" field of completion messages */ | 72 | /* codes for "status" field of completion messages */ |
| 73 | #define RNDIS_STATUS_SUCCESS cpu_to_le32(0x00000000) | 73 | #define RNDIS_STATUS_SUCCESS cpu_to_le32(0x00000000) |
| 74 | #define RNDIS_STATUS_FAILURE cpu_to_le32(0xc0000001) | 74 | #define RNDIS_STATUS_FAILURE cpu_to_le32(0xc0000001) |
| 75 | #define RNDIS_STATUS_INVALID_DATA cpu_to_le32(0xc0010015) | 75 | #define RNDIS_STATUS_INVALID_DATA cpu_to_le32(0xc0010015) |
| 76 | #define RNDIS_STATUS_NOT_SUPPORTED cpu_to_le32(0xc00000bb) | 76 | #define RNDIS_STATUS_NOT_SUPPORTED cpu_to_le32(0xc00000bb) |
| 77 | #define RNDIS_STATUS_MEDIA_CONNECT cpu_to_le32(0x4001000b) | 77 | #define RNDIS_STATUS_MEDIA_CONNECT cpu_to_le32(0x4001000b) |
| 78 | #define RNDIS_STATUS_MEDIA_DISCONNECT cpu_to_le32(0x4001000c) | 78 | #define RNDIS_STATUS_MEDIA_DISCONNECT cpu_to_le32(0x4001000c) |
| 79 | #define RNDIS_STATUS_MEDIA_SPECIFIC_INDICATION cpu_to_le32(0x40010012) | ||
| 79 | 80 | ||
| 80 | /* codes for OID_GEN_PHYSICAL_MEDIUM */ | 81 | /* codes for OID_GEN_PHYSICAL_MEDIUM */ |
| 81 | #define RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED cpu_to_le32(0x00000000) | 82 | #define RNDIS_PHYSICAL_MEDIUM_UNSPECIFIED cpu_to_le32(0x00000000) |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index 310e18a880ff..bb69e256cd16 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
| @@ -53,6 +53,7 @@ struct usbnet { | |||
| 53 | struct sk_buff_head rxq; | 53 | struct sk_buff_head rxq; |
| 54 | struct sk_buff_head txq; | 54 | struct sk_buff_head txq; |
| 55 | struct sk_buff_head done; | 55 | struct sk_buff_head done; |
| 56 | struct sk_buff_head rxq_pause; | ||
| 56 | struct urb *interrupt; | 57 | struct urb *interrupt; |
| 57 | struct tasklet_struct bh; | 58 | struct tasklet_struct bh; |
| 58 | 59 | ||
| @@ -63,6 +64,7 @@ struct usbnet { | |||
| 63 | # define EVENT_RX_MEMORY 2 | 64 | # define EVENT_RX_MEMORY 2 |
| 64 | # define EVENT_STS_SPLIT 3 | 65 | # define EVENT_STS_SPLIT 3 |
| 65 | # define EVENT_LINK_RESET 4 | 66 | # define EVENT_LINK_RESET 4 |
| 67 | # define EVENT_RX_PAUSED 5 | ||
| 66 | }; | 68 | }; |
| 67 | 69 | ||
| 68 | static inline struct usb_driver *driver_of(struct usb_interface *intf) | 70 | static inline struct usb_driver *driver_of(struct usb_interface *intf) |
| @@ -86,6 +88,7 @@ struct driver_info { | |||
| 86 | 88 | ||
| 87 | #define FLAG_FRAMING_AX 0x0040 /* AX88772/178 packets */ | 89 | #define FLAG_FRAMING_AX 0x0040 /* AX88772/178 packets */ |
| 88 | #define FLAG_WLAN 0x0080 /* use "wlan%d" names */ | 90 | #define FLAG_WLAN 0x0080 /* use "wlan%d" names */ |
| 91 | #define FLAG_AVOID_UNLINK_URBS 0x0100 /* don't unlink urbs at usbnet_stop() */ | ||
| 89 | 92 | ||
| 90 | 93 | ||
| 91 | /* init device ... can sleep, or cause probe() failure */ | 94 | /* init device ... can sleep, or cause probe() failure */ |
| @@ -97,6 +100,9 @@ struct driver_info { | |||
| 97 | /* reset device ... can sleep */ | 100 | /* reset device ... can sleep */ |
| 98 | int (*reset)(struct usbnet *); | 101 | int (*reset)(struct usbnet *); |
| 99 | 102 | ||
| 103 | /* stop device ... can sleep */ | ||
| 104 | int (*stop)(struct usbnet *); | ||
| 105 | |||
| 100 | /* see if peer is connected ... can sleep */ | 106 | /* see if peer is connected ... can sleep */ |
| 101 | int (*check_connect)(struct usbnet *); | 107 | int (*check_connect)(struct usbnet *); |
| 102 | 108 | ||
| @@ -118,9 +124,8 @@ struct driver_info { | |||
| 118 | * right after minidriver have initialized hardware. */ | 124 | * right after minidriver have initialized hardware. */ |
| 119 | int (*early_init)(struct usbnet *dev); | 125 | int (*early_init)(struct usbnet *dev); |
| 120 | 126 | ||
| 121 | /* called by minidriver when link state changes, state: 0=disconnect, | 127 | /* called by minidriver when receiving indication */ |
| 122 | * 1=connect */ | 128 | void (*indication)(struct usbnet *dev, void *ind, int indlen); |
| 123 | void (*link_change)(struct usbnet *dev, int state); | ||
| 124 | 129 | ||
| 125 | /* for new devices, use the descriptor-reading code instead */ | 130 | /* for new devices, use the descriptor-reading code instead */ |
| 126 | int in; /* rx endpoint */ | 131 | int in; /* rx endpoint */ |
| @@ -177,7 +182,8 @@ struct skb_data { /* skb->cb is one of these */ | |||
| 177 | 182 | ||
| 178 | extern int usbnet_open (struct net_device *net); | 183 | extern int usbnet_open (struct net_device *net); |
| 179 | extern int usbnet_stop (struct net_device *net); | 184 | extern int usbnet_stop (struct net_device *net); |
| 180 | extern int usbnet_start_xmit (struct sk_buff *skb, struct net_device *net); | 185 | extern netdev_tx_t usbnet_start_xmit (struct sk_buff *skb, |
| 186 | struct net_device *net); | ||
| 181 | extern void usbnet_tx_timeout (struct net_device *net); | 187 | extern void usbnet_tx_timeout (struct net_device *net); |
| 182 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); | 188 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); |
| 183 | 189 | ||
| @@ -187,6 +193,10 @@ extern void usbnet_defer_kevent (struct usbnet *, int); | |||
| 187 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); | 193 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); |
| 188 | extern void usbnet_unlink_rx_urbs(struct usbnet *); | 194 | extern void usbnet_unlink_rx_urbs(struct usbnet *); |
| 189 | 195 | ||
| 196 | extern void usbnet_pause_rx(struct usbnet *); | ||
| 197 | extern void usbnet_resume_rx(struct usbnet *); | ||
| 198 | extern void usbnet_purge_paused_rxq(struct usbnet *); | ||
| 199 | |||
| 190 | extern int usbnet_get_settings (struct net_device *net, struct ethtool_cmd *cmd); | 200 | extern int usbnet_get_settings (struct net_device *net, struct ethtool_cmd *cmd); |
| 191 | extern int usbnet_set_settings (struct net_device *net, struct ethtool_cmd *cmd); | 201 | extern int usbnet_set_settings (struct net_device *net, struct ethtool_cmd *cmd); |
| 192 | extern u32 usbnet_get_link (struct net_device *net); | 202 | extern u32 usbnet_get_link (struct net_device *net); |
diff --git a/include/linux/usb/video.h b/include/linux/usb/video.h new file mode 100644 index 000000000000..be436d9ee479 --- /dev/null +++ b/include/linux/usb/video.h | |||
| @@ -0,0 +1,164 @@ | |||
| 1 | /* | ||
| 2 | * USB Video Class definitions. | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Laurent Pinchart <laurent.pinchart@skynet.be> | ||
| 5 | * | ||
| 6 | * This file holds USB constants and structures defined by the USB Device | ||
| 7 | * Class Definition for Video Devices. Unless otherwise stated, comments | ||
| 8 | * below reference relevant sections of the USB Video Class 1.1 specification | ||
| 9 | * available at | ||
| 10 | * | ||
| 11 | * http://www.usb.org/developers/devclass_docs/USB_Video_Class_1_1.zip | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __LINUX_USB_VIDEO_H | ||
| 15 | #define __LINUX_USB_VIDEO_H | ||
| 16 | |||
| 17 | #include <linux/types.h> | ||
| 18 | |||
| 19 | /* -------------------------------------------------------------------------- | ||
| 20 | * UVC constants | ||
| 21 | */ | ||
| 22 | |||
| 23 | /* A.2. Video Interface Subclass Codes */ | ||
| 24 | #define UVC_SC_UNDEFINED 0x00 | ||
| 25 | #define UVC_SC_VIDEOCONTROL 0x01 | ||
| 26 | #define UVC_SC_VIDEOSTREAMING 0x02 | ||
| 27 | #define UVC_SC_VIDEO_INTERFACE_COLLECTION 0x03 | ||
| 28 | |||
| 29 | /* A.3. Video Interface Protocol Codes */ | ||
| 30 | #define UVC_PC_PROTOCOL_UNDEFINED 0x00 | ||
| 31 | |||
| 32 | /* A.5. Video Class-Specific VC Interface Descriptor Subtypes */ | ||
| 33 | #define UVC_VC_DESCRIPTOR_UNDEFINED 0x00 | ||
| 34 | #define UVC_VC_HEADER 0x01 | ||
| 35 | #define UVC_VC_INPUT_TERMINAL 0x02 | ||
| 36 | #define UVC_VC_OUTPUT_TERMINAL 0x03 | ||
| 37 | #define UVC_VC_SELECTOR_UNIT 0x04 | ||
| 38 | #define UVC_VC_PROCESSING_UNIT 0x05 | ||
| 39 | #define UVC_VC_EXTENSION_UNIT 0x06 | ||
| 40 | |||
| 41 | /* A.6. Video Class-Specific VS Interface Descriptor Subtypes */ | ||
| 42 | #define UVC_VS_UNDEFINED 0x00 | ||
| 43 | #define UVC_VS_INPUT_HEADER 0x01 | ||
| 44 | #define UVC_VS_OUTPUT_HEADER 0x02 | ||
| 45 | #define UVC_VS_STILL_IMAGE_FRAME 0x03 | ||
| 46 | #define UVC_VS_FORMAT_UNCOMPRESSED 0x04 | ||
| 47 | #define UVC_VS_FRAME_UNCOMPRESSED 0x05 | ||
| 48 | #define UVC_VS_FORMAT_MJPEG 0x06 | ||
| 49 | #define UVC_VS_FRAME_MJPEG 0x07 | ||
| 50 | #define UVC_VS_FORMAT_MPEG2TS 0x0a | ||
| 51 | #define UVC_VS_FORMAT_DV 0x0c | ||
| 52 | #define UVC_VS_COLORFORMAT 0x0d | ||
| 53 | #define UVC_VS_FORMAT_FRAME_BASED 0x10 | ||
| 54 | #define UVC_VS_FRAME_FRAME_BASED 0x11 | ||
| 55 | #define UVC_VS_FORMAT_STREAM_BASED 0x12 | ||
| 56 | |||
| 57 | /* A.7. Video Class-Specific Endpoint Descriptor Subtypes */ | ||
| 58 | #define UVC_EP_UNDEFINED 0x00 | ||
| 59 | #define UVC_EP_GENERAL 0x01 | ||
| 60 | #define UVC_EP_ENDPOINT 0x02 | ||
| 61 | #define UVC_EP_INTERRUPT 0x03 | ||
| 62 | |||
| 63 | /* A.8. Video Class-Specific Request Codes */ | ||
| 64 | #define UVC_RC_UNDEFINED 0x00 | ||
| 65 | #define UVC_SET_CUR 0x01 | ||
| 66 | #define UVC_GET_CUR 0x81 | ||
| 67 | #define UVC_GET_MIN 0x82 | ||
| 68 | #define UVC_GET_MAX 0x83 | ||
| 69 | #define UVC_GET_RES 0x84 | ||
| 70 | #define UVC_GET_LEN 0x85 | ||
| 71 | #define UVC_GET_INFO 0x86 | ||
| 72 | #define UVC_GET_DEF 0x87 | ||
| 73 | |||
| 74 | /* A.9.1. VideoControl Interface Control Selectors */ | ||
| 75 | #define UVC_VC_CONTROL_UNDEFINED 0x00 | ||
| 76 | #define UVC_VC_VIDEO_POWER_MODE_CONTROL 0x01 | ||
| 77 | #define UVC_VC_REQUEST_ERROR_CODE_CONTROL 0x02 | ||
| 78 | |||
| 79 | /* A.9.2. Terminal Control Selectors */ | ||
| 80 | #define UVC_TE_CONTROL_UNDEFINED 0x00 | ||
| 81 | |||
| 82 | /* A.9.3. Selector Unit Control Selectors */ | ||
| 83 | #define UVC_SU_CONTROL_UNDEFINED 0x00 | ||
| 84 | #define UVC_SU_INPUT_SELECT_CONTROL 0x01 | ||
| 85 | |||
| 86 | /* A.9.4. Camera Terminal Control Selectors */ | ||
| 87 | #define UVC_CT_CONTROL_UNDEFINED 0x00 | ||
| 88 | #define UVC_CT_SCANNING_MODE_CONTROL 0x01 | ||
| 89 | #define UVC_CT_AE_MODE_CONTROL 0x02 | ||
| 90 | #define UVC_CT_AE_PRIORITY_CONTROL 0x03 | ||
| 91 | #define UVC_CT_EXPOSURE_TIME_ABSOLUTE_CONTROL 0x04 | ||
| 92 | #define UVC_CT_EXPOSURE_TIME_RELATIVE_CONTROL 0x05 | ||
| 93 | #define UVC_CT_FOCUS_ABSOLUTE_CONTROL 0x06 | ||
| 94 | #define UVC_CT_FOCUS_RELATIVE_CONTROL 0x07 | ||
| 95 | #define UVC_CT_FOCUS_AUTO_CONTROL 0x08 | ||
| 96 | #define UVC_CT_IRIS_ABSOLUTE_CONTROL 0x09 | ||
| 97 | #define UVC_CT_IRIS_RELATIVE_CONTROL 0x0a | ||
| 98 | #define UVC_CT_ZOOM_ABSOLUTE_CONTROL 0x0b | ||
| 99 | #define UVC_CT_ZOOM_RELATIVE_CONTROL 0x0c | ||
| 100 | #define UVC_CT_PANTILT_ABSOLUTE_CONTROL 0x0d | ||
| 101 | #define UVC_CT_PANTILT_RELATIVE_CONTROL 0x0e | ||
| 102 | #define UVC_CT_ROLL_ABSOLUTE_CONTROL 0x0f | ||
| 103 | #define UVC_CT_ROLL_RELATIVE_CONTROL 0x10 | ||
| 104 | #define UVC_CT_PRIVACY_CONTROL 0x11 | ||
| 105 | |||
| 106 | /* A.9.5. Processing Unit Control Selectors */ | ||
| 107 | #define UVC_PU_CONTROL_UNDEFINED 0x00 | ||
| 108 | #define UVC_PU_BACKLIGHT_COMPENSATION_CONTROL 0x01 | ||
| 109 | #define UVC_PU_BRIGHTNESS_CONTROL 0x02 | ||
| 110 | #define UVC_PU_CONTRAST_CONTROL 0x03 | ||
| 111 | #define UVC_PU_GAIN_CONTROL 0x04 | ||
| 112 | #define UVC_PU_POWER_LINE_FREQUENCY_CONTROL 0x05 | ||
| 113 | #define UVC_PU_HUE_CONTROL 0x06 | ||
| 114 | #define UVC_PU_SATURATION_CONTROL 0x07 | ||
| 115 | #define UVC_PU_SHARPNESS_CONTROL 0x08 | ||
| 116 | #define UVC_PU_GAMMA_CONTROL 0x09 | ||
| 117 | #define UVC_PU_WHITE_BALANCE_TEMPERATURE_CONTROL 0x0a | ||
| 118 | #define UVC_PU_WHITE_BALANCE_TEMPERATURE_AUTO_CONTROL 0x0b | ||
| 119 | #define UVC_PU_WHITE_BALANCE_COMPONENT_CONTROL 0x0c | ||
| 120 | #define UVC_PU_WHITE_BALANCE_COMPONENT_AUTO_CONTROL 0x0d | ||
| 121 | #define UVC_PU_DIGITAL_MULTIPLIER_CONTROL 0x0e | ||
| 122 | #define UVC_PU_DIGITAL_MULTIPLIER_LIMIT_CONTROL 0x0f | ||
| 123 | #define UVC_PU_HUE_AUTO_CONTROL 0x10 | ||
| 124 | #define UVC_PU_ANALOG_VIDEO_STANDARD_CONTROL 0x11 | ||
| 125 | #define UVC_PU_ANALOG_LOCK_STATUS_CONTROL 0x12 | ||
| 126 | |||
| 127 | /* A.9.7. VideoStreaming Interface Control Selectors */ | ||
| 128 | #define UVC_VS_CONTROL_UNDEFINED 0x00 | ||
| 129 | #define UVC_VS_PROBE_CONTROL 0x01 | ||
| 130 | #define UVC_VS_COMMIT_CONTROL 0x02 | ||
| 131 | #define UVC_VS_STILL_PROBE_CONTROL 0x03 | ||
| 132 | #define UVC_VS_STILL_COMMIT_CONTROL 0x04 | ||
| 133 | #define UVC_VS_STILL_IMAGE_TRIGGER_CONTROL 0x05 | ||
| 134 | #define UVC_VS_STREAM_ERROR_CODE_CONTROL 0x06 | ||
| 135 | #define UVC_VS_GENERATE_KEY_FRAME_CONTROL 0x07 | ||
| 136 | #define UVC_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x08 | ||
| 137 | #define UVC_VS_SYNC_DELAY_CONTROL 0x09 | ||
| 138 | |||
| 139 | /* B.1. USB Terminal Types */ | ||
| 140 | #define UVC_TT_VENDOR_SPECIFIC 0x0100 | ||
| 141 | #define UVC_TT_STREAMING 0x0101 | ||
| 142 | |||
| 143 | /* B.2. Input Terminal Types */ | ||
| 144 | #define UVC_ITT_VENDOR_SPECIFIC 0x0200 | ||
| 145 | #define UVC_ITT_CAMERA 0x0201 | ||
| 146 | #define UVC_ITT_MEDIA_TRANSPORT_INPUT 0x0202 | ||
| 147 | |||
| 148 | /* B.3. Output Terminal Types */ | ||
| 149 | #define UVC_OTT_VENDOR_SPECIFIC 0x0300 | ||
| 150 | #define UVC_OTT_DISPLAY 0x0301 | ||
| 151 | #define UVC_OTT_MEDIA_TRANSPORT_OUTPUT 0x0302 | ||
| 152 | |||
| 153 | /* B.4. External Terminal Types */ | ||
| 154 | #define UVC_EXTERNAL_VENDOR_SPECIFIC 0x0400 | ||
| 155 | #define UVC_COMPOSITE_CONNECTOR 0x0401 | ||
| 156 | #define UVC_SVIDEO_CONNECTOR 0x0402 | ||
| 157 | #define UVC_COMPONENT_CONNECTOR 0x0403 | ||
| 158 | |||
| 159 | /* 2.4.2.2. Status Packet Type */ | ||
| 160 | #define UVC_STATUS_TYPE_CONTROL 1 | ||
| 161 | #define UVC_STATUS_TYPE_STREAMING 2 | ||
| 162 | |||
| 163 | #endif /* __LINUX_USB_VIDEO_H */ | ||
| 164 | |||
diff --git a/include/linux/uwb.h b/include/linux/uwb.h index c02128991ff7..7fc9746f22cd 100644 --- a/include/linux/uwb.h +++ b/include/linux/uwb.h | |||
| @@ -597,7 +597,7 @@ void uwb_rc_neh_grok(struct uwb_rc *, void *, size_t); | |||
| 597 | void uwb_rc_neh_error(struct uwb_rc *, int); | 597 | void uwb_rc_neh_error(struct uwb_rc *, int); |
| 598 | void uwb_rc_reset_all(struct uwb_rc *rc); | 598 | void uwb_rc_reset_all(struct uwb_rc *rc); |
| 599 | void uwb_rc_pre_reset(struct uwb_rc *rc); | 599 | void uwb_rc_pre_reset(struct uwb_rc *rc); |
| 600 | void uwb_rc_post_reset(struct uwb_rc *rc); | 600 | int uwb_rc_post_reset(struct uwb_rc *rc); |
| 601 | 601 | ||
| 602 | /** | 602 | /** |
| 603 | * uwb_rsv_is_owner - is the owner of this reservation the RC? | 603 | * uwb_rsv_is_owner - is the owner of this reservation the RC? |
diff --git a/include/linux/vgaarb.h b/include/linux/vgaarb.h new file mode 100644 index 000000000000..e81c64af80c1 --- /dev/null +++ b/include/linux/vgaarb.h | |||
| @@ -0,0 +1,200 @@ | |||
| 1 | /* | ||
| 2 | * vgaarb.c | ||
| 3 | * | ||
| 4 | * (C) Copyright 2005 Benjamin Herrenschmidt <benh@kernel.crashing.org> | ||
| 5 | * (C) Copyright 2007 Paulo R. Zanoni <przanoni@gmail.com> | ||
| 6 | * (C) Copyright 2007, 2009 Tiago Vignatti <vignatti@freedesktop.org> | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef LINUX_VGA_H | ||
| 10 | |||
| 11 | #include <asm/vga.h> | ||
| 12 | |||
| 13 | /* Legacy VGA regions */ | ||
| 14 | #define VGA_RSRC_NONE 0x00 | ||
| 15 | #define VGA_RSRC_LEGACY_IO 0x01 | ||
| 16 | #define VGA_RSRC_LEGACY_MEM 0x02 | ||
| 17 | #define VGA_RSRC_LEGACY_MASK (VGA_RSRC_LEGACY_IO | VGA_RSRC_LEGACY_MEM) | ||
| 18 | /* Non-legacy access */ | ||
| 19 | #define VGA_RSRC_NORMAL_IO 0x04 | ||
| 20 | #define VGA_RSRC_NORMAL_MEM 0x08 | ||
| 21 | |||
| 22 | /* Passing that instead of a pci_dev to use the system "default" | ||
| 23 | * device, that is the one used by vgacon. Archs will probably | ||
| 24 | * have to provide their own vga_default_device(); | ||
| 25 | */ | ||
| 26 | #define VGA_DEFAULT_DEVICE (NULL) | ||
| 27 | |||
| 28 | /* For use by clients */ | ||
| 29 | |||
| 30 | /** | ||
| 31 | * vga_set_legacy_decoding | ||
| 32 | * | ||
| 33 | * @pdev: pci device of the VGA card | ||
| 34 | * @decodes: bit mask of what legacy regions the card decodes | ||
| 35 | * | ||
| 36 | * Indicates to the arbiter if the card decodes legacy VGA IOs, | ||
| 37 | * legacy VGA Memory, both, or none. All cards default to both, | ||
| 38 | * the card driver (fbdev for example) should tell the arbiter | ||
| 39 | * if it has disabled legacy decoding, so the card can be left | ||
| 40 | * out of the arbitration process (and can be safe to take | ||
| 41 | * interrupts at any time. | ||
| 42 | */ | ||
| 43 | extern void vga_set_legacy_decoding(struct pci_dev *pdev, | ||
| 44 | unsigned int decodes); | ||
| 45 | |||
| 46 | /** | ||
| 47 | * vga_get - acquire & locks VGA resources | ||
| 48 | * | ||
| 49 | * @pdev: pci device of the VGA card or NULL for the system default | ||
| 50 | * @rsrc: bit mask of resources to acquire and lock | ||
| 51 | * @interruptible: blocking should be interruptible by signals ? | ||
| 52 | * | ||
| 53 | * This function acquires VGA resources for the given | ||
| 54 | * card and mark those resources locked. If the resource requested | ||
| 55 | * are "normal" (and not legacy) resources, the arbiter will first check | ||
| 56 | * wether the card is doing legacy decoding for that type of resource. If | ||
| 57 | * yes, the lock is "converted" into a legacy resource lock. | ||
| 58 | * The arbiter will first look for all VGA cards that might conflict | ||
| 59 | * and disable their IOs and/or Memory access, inlcuding VGA forwarding | ||
| 60 | * on P2P bridges if necessary, so that the requested resources can | ||
| 61 | * be used. Then, the card is marked as locking these resources and | ||
| 62 | * the IO and/or Memory accesse are enabled on the card (including | ||
| 63 | * VGA forwarding on parent P2P bridges if any). | ||
| 64 | * This function will block if some conflicting card is already locking | ||
| 65 | * one of the required resources (or any resource on a different bus | ||
| 66 | * segment, since P2P bridges don't differenciate VGA memory and IO | ||
| 67 | * afaik). You can indicate wether this blocking should be interruptible | ||
| 68 | * by a signal (for userland interface) or not. | ||
| 69 | * Must not be called at interrupt time or in atomic context. | ||
| 70 | * If the card already owns the resources, the function succeeds. | ||
| 71 | * Nested calls are supported (a per-resource counter is maintained) | ||
| 72 | */ | ||
| 73 | |||
| 74 | extern int vga_get(struct pci_dev *pdev, unsigned int rsrc, | ||
| 75 | int interruptible); | ||
| 76 | |||
| 77 | /** | ||
| 78 | * vga_get_interruptible | ||
| 79 | * | ||
| 80 | * Shortcut to vga_get | ||
| 81 | */ | ||
| 82 | |||
| 83 | static inline int vga_get_interruptible(struct pci_dev *pdev, | ||
| 84 | unsigned int rsrc) | ||
| 85 | { | ||
| 86 | return vga_get(pdev, rsrc, 1); | ||
| 87 | } | ||
| 88 | |||
| 89 | /** | ||
| 90 | * vga_get_uninterruptible | ||
| 91 | * | ||
| 92 | * Shortcut to vga_get | ||
| 93 | */ | ||
| 94 | |||
| 95 | static inline int vga_get_uninterruptible(struct pci_dev *pdev, | ||
| 96 | unsigned int rsrc) | ||
| 97 | { | ||
| 98 | return vga_get(pdev, rsrc, 0); | ||
| 99 | } | ||
| 100 | |||
| 101 | /** | ||
| 102 | * vga_tryget - try to acquire & lock legacy VGA resources | ||
| 103 | * | ||
| 104 | * @pdev: pci devivce of VGA card or NULL for system default | ||
| 105 | * @rsrc: bit mask of resources to acquire and lock | ||
| 106 | * | ||
| 107 | * This function performs the same operation as vga_get(), but | ||
| 108 | * will return an error (-EBUSY) instead of blocking if the resources | ||
| 109 | * are already locked by another card. It can be called in any context | ||
| 110 | */ | ||
| 111 | |||
| 112 | extern int vga_tryget(struct pci_dev *pdev, unsigned int rsrc); | ||
| 113 | |||
| 114 | /** | ||
| 115 | * vga_put - release lock on legacy VGA resources | ||
| 116 | * | ||
| 117 | * @pdev: pci device of VGA card or NULL for system default | ||
| 118 | * @rsrc: but mask of resource to release | ||
| 119 | * | ||
| 120 | * This function releases resources previously locked by vga_get() | ||
| 121 | * or vga_tryget(). The resources aren't disabled right away, so | ||
| 122 | * that a subsequence vga_get() on the same card will succeed | ||
| 123 | * immediately. Resources have a counter, so locks are only | ||
| 124 | * released if the counter reaches 0. | ||
| 125 | */ | ||
| 126 | |||
| 127 | extern void vga_put(struct pci_dev *pdev, unsigned int rsrc); | ||
| 128 | |||
| 129 | |||
| 130 | /** | ||
| 131 | * vga_default_device | ||
| 132 | * | ||
| 133 | * This can be defined by the platform. The default implementation | ||
| 134 | * is rather dumb and will probably only work properly on single | ||
| 135 | * vga card setups and/or x86 platforms. | ||
| 136 | * | ||
| 137 | * If your VGA default device is not PCI, you'll have to return | ||
| 138 | * NULL here. In this case, I assume it will not conflict with | ||
| 139 | * any PCI card. If this is not true, I'll have to define two archs | ||
| 140 | * hooks for enabling/disabling the VGA default device if that is | ||
| 141 | * possible. This may be a problem with real _ISA_ VGA cards, in | ||
| 142 | * addition to a PCI one. I don't know at this point how to deal | ||
| 143 | * with that card. Can theirs IOs be disabled at all ? If not, then | ||
| 144 | * I suppose it's a matter of having the proper arch hook telling | ||
| 145 | * us about it, so we basically never allow anybody to succeed a | ||
| 146 | * vga_get()... | ||
| 147 | */ | ||
| 148 | |||
| 149 | #ifndef __ARCH_HAS_VGA_DEFAULT_DEVICE | ||
| 150 | extern struct pci_dev *vga_default_device(void); | ||
| 151 | #endif | ||
| 152 | |||
| 153 | /** | ||
| 154 | * vga_conflicts | ||
| 155 | * | ||
| 156 | * Architectures should define this if they have several | ||
| 157 | * independant PCI domains that can afford concurrent VGA | ||
| 158 | * decoding | ||
| 159 | */ | ||
| 160 | |||
| 161 | #ifndef __ARCH_HAS_VGA_CONFLICT | ||
| 162 | static inline int vga_conflicts(struct pci_dev *p1, struct pci_dev *p2) | ||
| 163 | { | ||
| 164 | return 1; | ||
| 165 | } | ||
| 166 | #endif | ||
| 167 | |||
| 168 | /** | ||
| 169 | * vga_client_register | ||
| 170 | * | ||
| 171 | * @pdev: pci device of the VGA client | ||
| 172 | * @cookie: client cookie to be used in callbacks | ||
| 173 | * @irq_set_state: irq state change callback | ||
| 174 | * @set_vga_decode: vga decode change callback | ||
| 175 | * | ||
| 176 | * return value: 0 on success, -1 on failure | ||
| 177 | * Register a client with the VGA arbitration logic | ||
| 178 | * | ||
| 179 | * Clients have two callback mechanisms they can use. | ||
| 180 | * irq enable/disable callback - | ||
| 181 | * If a client can't disable its GPUs VGA resources, then we | ||
| 182 | * need to be able to ask it to turn off its irqs when we | ||
| 183 | * turn off its mem and io decoding. | ||
| 184 | * set_vga_decode | ||
| 185 | * If a client can disable its GPU VGA resource, it will | ||
| 186 | * get a callback from this to set the encode/decode state | ||
| 187 | * | ||
| 188 | * Rationale: we cannot disable VGA decode resources unconditionally | ||
| 189 | * some single GPU laptops seem to require ACPI or BIOS access to the | ||
| 190 | * VGA registers to control things like backlights etc. | ||
| 191 | * Hopefully newer multi-GPU laptops do something saner, and desktops | ||
| 192 | * won't have any special ACPI for this. | ||
| 193 | * They driver will get a callback when VGA arbitration is first used | ||
| 194 | * by userspace since we some older X servers have issues. | ||
| 195 | */ | ||
| 196 | int vga_client_register(struct pci_dev *pdev, void *cookie, | ||
| 197 | void (*irq_set_state)(void *cookie, bool state), | ||
| 198 | unsigned int (*set_vga_decode)(void *cookie, bool state)); | ||
| 199 | |||
| 200 | #endif /* LINUX_VGA_H */ | ||
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index 74f16876f38d..3689d7d81fe9 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -167,6 +167,7 @@ enum v4l2_ctrl_type { | |||
| 167 | V4L2_CTRL_TYPE_BUTTON = 4, | 167 | V4L2_CTRL_TYPE_BUTTON = 4, |
| 168 | V4L2_CTRL_TYPE_INTEGER64 = 5, | 168 | V4L2_CTRL_TYPE_INTEGER64 = 5, |
| 169 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, | 169 | V4L2_CTRL_TYPE_CTRL_CLASS = 6, |
| 170 | V4L2_CTRL_TYPE_STRING = 7, | ||
| 170 | }; | 171 | }; |
| 171 | 172 | ||
| 172 | enum v4l2_tuner_type { | 173 | enum v4l2_tuner_type { |
| @@ -252,10 +253,12 @@ struct v4l2_capability { | |||
| 252 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ | 253 | #define V4L2_CAP_RDS_CAPTURE 0x00000100 /* RDS data capture */ |
| 253 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ | 254 | #define V4L2_CAP_VIDEO_OUTPUT_OVERLAY 0x00000200 /* Can do video output overlay */ |
| 254 | #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ | 255 | #define V4L2_CAP_HW_FREQ_SEEK 0x00000400 /* Can do hardware frequency seek */ |
| 256 | #define V4L2_CAP_RDS_OUTPUT 0x00000800 /* Is an RDS encoder */ | ||
| 255 | 257 | ||
| 256 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ | 258 | #define V4L2_CAP_TUNER 0x00010000 /* has a tuner */ |
| 257 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ | 259 | #define V4L2_CAP_AUDIO 0x00020000 /* has audio support */ |
| 258 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ | 260 | #define V4L2_CAP_RADIO 0x00040000 /* is a radio device */ |
| 261 | #define V4L2_CAP_MODULATOR 0x00080000 /* has a modulator */ | ||
| 259 | 262 | ||
| 260 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ | 263 | #define V4L2_CAP_READWRITE 0x01000000 /* read/write systemcalls */ |
| 261 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ | 264 | #define V4L2_CAP_ASYNCIO 0x02000000 /* async I/O */ |
| @@ -275,7 +278,9 @@ struct v4l2_pix_format { | |||
| 275 | __u32 priv; /* private data, depends on pixelformat */ | 278 | __u32 priv; /* private data, depends on pixelformat */ |
| 276 | }; | 279 | }; |
| 277 | 280 | ||
| 278 | /* Pixel format FOURCC depth Description */ | 281 | /* Pixel format FOURCC depth Description */ |
| 282 | |||
| 283 | /* RGB formats */ | ||
| 279 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ | 284 | #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */ |
| 280 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ | 285 | #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */ |
| 281 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ | 286 | #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */ |
| @@ -286,12 +291,20 @@ struct v4l2_pix_format { | |||
| 286 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ | 291 | #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */ |
| 287 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ | 292 | #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */ |
| 288 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ | 293 | #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */ |
| 294 | |||
| 295 | /* Grey formats */ | ||
| 289 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ | 296 | #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */ |
| 290 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ | 297 | #define V4L2_PIX_FMT_Y16 v4l2_fourcc('Y', '1', '6', ' ') /* 16 Greyscale */ |
| 298 | |||
| 299 | /* Palette formats */ | ||
| 291 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ | 300 | #define V4L2_PIX_FMT_PAL8 v4l2_fourcc('P', 'A', 'L', '8') /* 8 8-bit palette */ |
| 301 | |||
| 302 | /* Luminance+Chrominance formats */ | ||
| 292 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ | 303 | #define V4L2_PIX_FMT_YVU410 v4l2_fourcc('Y', 'V', 'U', '9') /* 9 YVU 4:1:0 */ |
| 293 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ | 304 | #define V4L2_PIX_FMT_YVU420 v4l2_fourcc('Y', 'V', '1', '2') /* 12 YVU 4:2:0 */ |
| 294 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ | 305 | #define V4L2_PIX_FMT_YUYV v4l2_fourcc('Y', 'U', 'Y', 'V') /* 16 YUV 4:2:2 */ |
| 306 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | ||
| 307 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | ||
| 295 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ | 308 | #define V4L2_PIX_FMT_UYVY v4l2_fourcc('U', 'Y', 'V', 'Y') /* 16 YUV 4:2:2 */ |
| 296 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ | 309 | #define V4L2_PIX_FMT_VYUY v4l2_fourcc('V', 'Y', 'U', 'Y') /* 16 YUV 4:2:2 */ |
| 297 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ | 310 | #define V4L2_PIX_FMT_YUV422P v4l2_fourcc('4', '2', '2', 'P') /* 16 YVU422 planar */ |
| @@ -301,6 +314,10 @@ struct v4l2_pix_format { | |||
| 301 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ | 314 | #define V4L2_PIX_FMT_YUV555 v4l2_fourcc('Y', 'U', 'V', 'O') /* 16 YUV-5-5-5 */ |
| 302 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ | 315 | #define V4L2_PIX_FMT_YUV565 v4l2_fourcc('Y', 'U', 'V', 'P') /* 16 YUV-5-6-5 */ |
| 303 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ | 316 | #define V4L2_PIX_FMT_YUV32 v4l2_fourcc('Y', 'U', 'V', '4') /* 32 YUV-8-8-8-8 */ |
| 317 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | ||
| 318 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | ||
| 319 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | ||
| 320 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | ||
| 304 | 321 | ||
| 305 | /* two planes -- one Y, one Cr + Cb interleaved */ | 322 | /* two planes -- one Y, one Cr + Cb interleaved */ |
| 306 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ | 323 | #define V4L2_PIX_FMT_NV12 v4l2_fourcc('N', 'V', '1', '2') /* 12 Y/CbCr 4:2:0 */ |
| @@ -308,25 +325,17 @@ struct v4l2_pix_format { | |||
| 308 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ | 325 | #define V4L2_PIX_FMT_NV16 v4l2_fourcc('N', 'V', '1', '6') /* 16 Y/CbCr 4:2:2 */ |
| 309 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ | 326 | #define V4L2_PIX_FMT_NV61 v4l2_fourcc('N', 'V', '6', '1') /* 16 Y/CrCb 4:2:2 */ |
| 310 | 327 | ||
| 311 | /* The following formats are not defined in the V4L2 specification */ | 328 | /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */ |
| 312 | #define V4L2_PIX_FMT_YUV410 v4l2_fourcc('Y', 'U', 'V', '9') /* 9 YUV 4:1:0 */ | ||
| 313 | #define V4L2_PIX_FMT_YUV420 v4l2_fourcc('Y', 'U', '1', '2') /* 12 YUV 4:2:0 */ | ||
| 314 | #define V4L2_PIX_FMT_YYUV v4l2_fourcc('Y', 'Y', 'U', 'V') /* 16 YUV 4:2:2 */ | ||
| 315 | #define V4L2_PIX_FMT_HI240 v4l2_fourcc('H', 'I', '2', '4') /* 8 8-bit color */ | ||
| 316 | #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ | ||
| 317 | |||
| 318 | /* see http://www.siliconimaging.com/RGB%20Bayer.htm */ | ||
| 319 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ | 329 | #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */ |
| 320 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ | 330 | #define V4L2_PIX_FMT_SGBRG8 v4l2_fourcc('G', 'B', 'R', 'G') /* 8 GBGB.. RGRG.. */ |
| 321 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ | 331 | #define V4L2_PIX_FMT_SGRBG8 v4l2_fourcc('G', 'R', 'B', 'G') /* 8 GRGR.. BGBG.. */ |
| 322 | 332 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') /* 10bit raw bayer */ | |
| 323 | /* | 333 | /* 10bit raw bayer DPCM compressed to 8 bits */ |
| 324 | * 10bit raw bayer, expanded to 16 bits | ||
| 325 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | ||
| 326 | */ | ||
| 327 | #define V4L2_PIX_FMT_SGRBG10 v4l2_fourcc('B', 'A', '1', '0') | ||
| 328 | /* 10bit raw bayer DPCM compressed to 8 bits */ | ||
| 329 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') | 334 | #define V4L2_PIX_FMT_SGRBG10DPCM8 v4l2_fourcc('B', 'D', '1', '0') |
| 335 | /* | ||
| 336 | * 10bit raw bayer, expanded to 16 bits | ||
| 337 | * xxxxrrrrrrrrrrxxxxgggggggggg xxxxggggggggggxxxxbbbbbbbbbb... | ||
| 338 | */ | ||
| 330 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ | 339 | #define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */ |
| 331 | 340 | ||
| 332 | /* compressed formats */ | 341 | /* compressed formats */ |
| @@ -350,7 +359,6 @@ struct v4l2_pix_format { | |||
| 350 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | 359 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ |
| 351 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | 360 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ |
| 352 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | 361 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ |
| 353 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | ||
| 354 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ | 362 | #define V4L2_PIX_FMT_OV511 v4l2_fourcc('O', '5', '1', '1') /* ov511 JPEG */ |
| 355 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | 363 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ |
| 356 | 364 | ||
| @@ -367,6 +375,7 @@ struct v4l2_fmtdesc { | |||
| 367 | }; | 375 | }; |
| 368 | 376 | ||
| 369 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 | 377 | #define V4L2_FMT_FLAG_COMPRESSED 0x0001 |
| 378 | #define V4L2_FMT_FLAG_EMULATED 0x0002 | ||
| 370 | 379 | ||
| 371 | #if 1 | 380 | #if 1 |
| 372 | /* Experimental Frame Size and frame rate enumeration */ | 381 | /* Experimental Frame Size and frame rate enumeration */ |
| @@ -788,11 +797,12 @@ struct v4l2_control { | |||
| 788 | 797 | ||
| 789 | struct v4l2_ext_control { | 798 | struct v4l2_ext_control { |
| 790 | __u32 id; | 799 | __u32 id; |
| 791 | __u32 reserved2[2]; | 800 | __u32 size; |
| 801 | __u32 reserved2[1]; | ||
| 792 | union { | 802 | union { |
| 793 | __s32 value; | 803 | __s32 value; |
| 794 | __s64 value64; | 804 | __s64 value64; |
| 795 | void *reserved; | 805 | char *string; |
| 796 | }; | 806 | }; |
| 797 | } __attribute__ ((packed)); | 807 | } __attribute__ ((packed)); |
| 798 | 808 | ||
| @@ -808,6 +818,7 @@ struct v4l2_ext_controls { | |||
| 808 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ | 818 | #define V4L2_CTRL_CLASS_USER 0x00980000 /* Old-style 'user' controls */ |
| 809 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ | 819 | #define V4L2_CTRL_CLASS_MPEG 0x00990000 /* MPEG-compression controls */ |
| 810 | #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ | 820 | #define V4L2_CTRL_CLASS_CAMERA 0x009a0000 /* Camera class controls */ |
| 821 | #define V4L2_CTRL_CLASS_FM_TX 0x009b0000 /* FM Modulator control class */ | ||
| 811 | 822 | ||
| 812 | #define V4L2_CTRL_ID_MASK (0x0fffffff) | 823 | #define V4L2_CTRL_ID_MASK (0x0fffffff) |
| 813 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) | 824 | #define V4L2_CTRL_ID2CLASS(id) ((id) & 0x0fff0000UL) |
| @@ -1147,6 +1158,39 @@ enum v4l2_exposure_auto_type { | |||
| 1147 | 1158 | ||
| 1148 | #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) | 1159 | #define V4L2_CID_PRIVACY (V4L2_CID_CAMERA_CLASS_BASE+16) |
| 1149 | 1160 | ||
| 1161 | /* FM Modulator class control IDs */ | ||
| 1162 | #define V4L2_CID_FM_TX_CLASS_BASE (V4L2_CTRL_CLASS_FM_TX | 0x900) | ||
| 1163 | #define V4L2_CID_FM_TX_CLASS (V4L2_CTRL_CLASS_FM_TX | 1) | ||
| 1164 | |||
| 1165 | #define V4L2_CID_RDS_TX_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 1) | ||
| 1166 | #define V4L2_CID_RDS_TX_PI (V4L2_CID_FM_TX_CLASS_BASE + 2) | ||
| 1167 | #define V4L2_CID_RDS_TX_PTY (V4L2_CID_FM_TX_CLASS_BASE + 3) | ||
| 1168 | #define V4L2_CID_RDS_TX_PS_NAME (V4L2_CID_FM_TX_CLASS_BASE + 5) | ||
| 1169 | #define V4L2_CID_RDS_TX_RADIO_TEXT (V4L2_CID_FM_TX_CLASS_BASE + 6) | ||
| 1170 | |||
| 1171 | #define V4L2_CID_AUDIO_LIMITER_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 64) | ||
| 1172 | #define V4L2_CID_AUDIO_LIMITER_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 65) | ||
| 1173 | #define V4L2_CID_AUDIO_LIMITER_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 66) | ||
| 1174 | |||
| 1175 | #define V4L2_CID_AUDIO_COMPRESSION_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 80) | ||
| 1176 | #define V4L2_CID_AUDIO_COMPRESSION_GAIN (V4L2_CID_FM_TX_CLASS_BASE + 81) | ||
| 1177 | #define V4L2_CID_AUDIO_COMPRESSION_THRESHOLD (V4L2_CID_FM_TX_CLASS_BASE + 82) | ||
| 1178 | #define V4L2_CID_AUDIO_COMPRESSION_ATTACK_TIME (V4L2_CID_FM_TX_CLASS_BASE + 83) | ||
| 1179 | #define V4L2_CID_AUDIO_COMPRESSION_RELEASE_TIME (V4L2_CID_FM_TX_CLASS_BASE + 84) | ||
| 1180 | |||
| 1181 | #define V4L2_CID_PILOT_TONE_ENABLED (V4L2_CID_FM_TX_CLASS_BASE + 96) | ||
| 1182 | #define V4L2_CID_PILOT_TONE_DEVIATION (V4L2_CID_FM_TX_CLASS_BASE + 97) | ||
| 1183 | #define V4L2_CID_PILOT_TONE_FREQUENCY (V4L2_CID_FM_TX_CLASS_BASE + 98) | ||
| 1184 | |||
| 1185 | #define V4L2_CID_TUNE_PREEMPHASIS (V4L2_CID_FM_TX_CLASS_BASE + 112) | ||
| 1186 | enum v4l2_preemphasis { | ||
| 1187 | V4L2_PREEMPHASIS_DISABLED = 0, | ||
| 1188 | V4L2_PREEMPHASIS_50_uS = 1, | ||
| 1189 | V4L2_PREEMPHASIS_75_uS = 2, | ||
| 1190 | }; | ||
| 1191 | #define V4L2_CID_TUNE_POWER_LEVEL (V4L2_CID_FM_TX_CLASS_BASE + 113) | ||
| 1192 | #define V4L2_CID_TUNE_ANTENNA_CAPACITOR (V4L2_CID_FM_TX_CLASS_BASE + 114) | ||
| 1193 | |||
| 1150 | /* | 1194 | /* |
| 1151 | * T U N I N G | 1195 | * T U N I N G |
| 1152 | */ | 1196 | */ |
| @@ -1181,6 +1225,7 @@ struct v4l2_modulator { | |||
| 1181 | #define V4L2_TUNER_CAP_LANG2 0x0020 | 1225 | #define V4L2_TUNER_CAP_LANG2 0x0020 |
| 1182 | #define V4L2_TUNER_CAP_SAP 0x0020 | 1226 | #define V4L2_TUNER_CAP_SAP 0x0020 |
| 1183 | #define V4L2_TUNER_CAP_LANG1 0x0040 | 1227 | #define V4L2_TUNER_CAP_LANG1 0x0040 |
| 1228 | #define V4L2_TUNER_CAP_RDS 0x0080 | ||
| 1184 | 1229 | ||
| 1185 | /* Flags for the 'rxsubchans' field */ | 1230 | /* Flags for the 'rxsubchans' field */ |
| 1186 | #define V4L2_TUNER_SUB_MONO 0x0001 | 1231 | #define V4L2_TUNER_SUB_MONO 0x0001 |
| @@ -1188,6 +1233,7 @@ struct v4l2_modulator { | |||
| 1188 | #define V4L2_TUNER_SUB_LANG2 0x0004 | 1233 | #define V4L2_TUNER_SUB_LANG2 0x0004 |
| 1189 | #define V4L2_TUNER_SUB_SAP 0x0004 | 1234 | #define V4L2_TUNER_SUB_SAP 0x0004 |
| 1190 | #define V4L2_TUNER_SUB_LANG1 0x0008 | 1235 | #define V4L2_TUNER_SUB_LANG1 0x0008 |
| 1236 | #define V4L2_TUNER_SUB_RDS 0x0010 | ||
| 1191 | 1237 | ||
| 1192 | /* Values for the 'audmode' field */ | 1238 | /* Values for the 'audmode' field */ |
| 1193 | #define V4L2_TUNER_MODE_MONO 0x0000 | 1239 | #define V4L2_TUNER_MODE_MONO 0x0000 |
| @@ -1213,6 +1259,27 @@ struct v4l2_hw_freq_seek { | |||
| 1213 | }; | 1259 | }; |
| 1214 | 1260 | ||
| 1215 | /* | 1261 | /* |
| 1262 | * R D S | ||
| 1263 | */ | ||
| 1264 | |||
| 1265 | struct v4l2_rds_data { | ||
| 1266 | __u8 lsb; | ||
| 1267 | __u8 msb; | ||
| 1268 | __u8 block; | ||
| 1269 | } __attribute__ ((packed)); | ||
| 1270 | |||
| 1271 | #define V4L2_RDS_BLOCK_MSK 0x7 | ||
| 1272 | #define V4L2_RDS_BLOCK_A 0 | ||
| 1273 | #define V4L2_RDS_BLOCK_B 1 | ||
| 1274 | #define V4L2_RDS_BLOCK_C 2 | ||
| 1275 | #define V4L2_RDS_BLOCK_D 3 | ||
| 1276 | #define V4L2_RDS_BLOCK_C_ALT 4 | ||
| 1277 | #define V4L2_RDS_BLOCK_INVALID 7 | ||
| 1278 | |||
| 1279 | #define V4L2_RDS_BLOCK_CORRECTED 0x40 | ||
| 1280 | #define V4L2_RDS_BLOCK_ERROR 0x80 | ||
| 1281 | |||
| 1282 | /* | ||
| 1216 | * A U D I O | 1283 | * A U D I O |
| 1217 | */ | 1284 | */ |
| 1218 | struct v4l2_audio { | 1285 | struct v4l2_audio { |
diff --git a/include/linux/vmalloc.h b/include/linux/vmalloc.h index a43ebec3a7b9..227c2a585e4f 100644 --- a/include/linux/vmalloc.h +++ b/include/linux/vmalloc.h | |||
| @@ -115,4 +115,10 @@ extern rwlock_t vmlist_lock; | |||
| 115 | extern struct vm_struct *vmlist; | 115 | extern struct vm_struct *vmlist; |
| 116 | extern __init void vm_area_register_early(struct vm_struct *vm, size_t align); | 116 | extern __init void vm_area_register_early(struct vm_struct *vm, size_t align); |
| 117 | 117 | ||
| 118 | struct vm_struct **pcpu_get_vm_areas(const unsigned long *offsets, | ||
| 119 | const size_t *sizes, int nr_vms, | ||
| 120 | size_t align, gfp_t gfp_mask); | ||
| 121 | |||
| 122 | void pcpu_free_vm_areas(struct vm_struct **vms, int nr_vms); | ||
| 123 | |||
| 118 | #endif /* _LINUX_VMALLOC_H */ | 124 | #endif /* _LINUX_VMALLOC_H */ |
diff --git a/include/linux/wait.h b/include/linux/wait.h index cf3c2f5dba51..a48e16b77d5e 100644 --- a/include/linux/wait.h +++ b/include/linux/wait.h | |||
| @@ -26,8 +26,8 @@ | |||
| 26 | #include <asm/current.h> | 26 | #include <asm/current.h> |
| 27 | 27 | ||
| 28 | typedef struct __wait_queue wait_queue_t; | 28 | typedef struct __wait_queue wait_queue_t; |
| 29 | typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int sync, void *key); | 29 | typedef int (*wait_queue_func_t)(wait_queue_t *wait, unsigned mode, int flags, void *key); |
| 30 | int default_wake_function(wait_queue_t *wait, unsigned mode, int sync, void *key); | 30 | int default_wake_function(wait_queue_t *wait, unsigned mode, int flags, void *key); |
| 31 | 31 | ||
| 32 | struct __wait_queue { | 32 | struct __wait_queue { |
| 33 | unsigned int flags; | 33 | unsigned int flags; |
diff --git a/include/linux/wireless.h b/include/linux/wireless.h index cb24204851f7..5b4c6c772a9b 100644 --- a/include/linux/wireless.h +++ b/include/linux/wireless.h | |||
| @@ -1132,6 +1132,14 @@ struct __compat_iw_event { | |||
| 1132 | }; | 1132 | }; |
| 1133 | #define IW_EV_COMPAT_LCP_LEN offsetof(struct __compat_iw_event, pointer) | 1133 | #define IW_EV_COMPAT_LCP_LEN offsetof(struct __compat_iw_event, pointer) |
| 1134 | #define IW_EV_COMPAT_POINT_OFF offsetof(struct compat_iw_point, length) | 1134 | #define IW_EV_COMPAT_POINT_OFF offsetof(struct compat_iw_point, length) |
| 1135 | |||
| 1136 | /* Size of the various events for compat */ | ||
| 1137 | #define IW_EV_COMPAT_CHAR_LEN (IW_EV_COMPAT_LCP_LEN + IFNAMSIZ) | ||
| 1138 | #define IW_EV_COMPAT_UINT_LEN (IW_EV_COMPAT_LCP_LEN + sizeof(__u32)) | ||
| 1139 | #define IW_EV_COMPAT_FREQ_LEN (IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_freq)) | ||
| 1140 | #define IW_EV_COMPAT_PARAM_LEN (IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_param)) | ||
| 1141 | #define IW_EV_COMPAT_ADDR_LEN (IW_EV_COMPAT_LCP_LEN + sizeof(struct sockaddr)) | ||
| 1142 | #define IW_EV_COMPAT_QUAL_LEN (IW_EV_COMPAT_LCP_LEN + sizeof(struct iw_quality)) | ||
| 1135 | #define IW_EV_COMPAT_POINT_LEN \ | 1143 | #define IW_EV_COMPAT_POINT_LEN \ |
| 1136 | (IW_EV_COMPAT_LCP_LEN + sizeof(struct compat_iw_point) - \ | 1144 | (IW_EV_COMPAT_LCP_LEN + sizeof(struct compat_iw_point) - \ |
| 1137 | IW_EV_COMPAT_POINT_OFF) | 1145 | IW_EV_COMPAT_POINT_OFF) |
diff --git a/include/linux/wm97xx.h b/include/linux/wm97xx.h index 6f69968eab24..0c9878123d5f 100644 --- a/include/linux/wm97xx.h +++ b/include/linux/wm97xx.h | |||
| @@ -16,6 +16,12 @@ | |||
| 16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
| 17 | 17 | ||
| 18 | /* | 18 | /* |
| 19 | * WM97xx variants | ||
| 20 | */ | ||
| 21 | #define WM97xx_GENERIC 0x0000 | ||
| 22 | #define WM97xx_WM1613 0x1613 | ||
| 23 | |||
| 24 | /* | ||
| 19 | * WM97xx AC97 Touchscreen registers | 25 | * WM97xx AC97 Touchscreen registers |
| 20 | */ | 26 | */ |
| 21 | #define AC97_WM97XX_DIGITISER1 0x76 | 27 | #define AC97_WM97XX_DIGITISER1 0x76 |
| @@ -283,6 +289,7 @@ struct wm97xx { | |||
| 283 | unsigned pen_is_down:1; /* Pen is down */ | 289 | unsigned pen_is_down:1; /* Pen is down */ |
| 284 | unsigned aux_waiting:1; /* aux measurement waiting */ | 290 | unsigned aux_waiting:1; /* aux measurement waiting */ |
| 285 | unsigned pen_probably_down:1; /* used in polling mode */ | 291 | unsigned pen_probably_down:1; /* used in polling mode */ |
| 292 | u16 variant; /* WM97xx chip variant */ | ||
| 286 | u16 suspend_mode; /* PRP in suspend mode */ | 293 | u16 suspend_mode; /* PRP in suspend mode */ |
| 287 | }; | 294 | }; |
| 288 | 295 | ||
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 78b1e4684cc9..75cf58666ff9 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -50,7 +50,6 @@ struct writeback_control { | |||
| 50 | unsigned encountered_congestion:1; /* An output: a queue is full */ | 50 | unsigned encountered_congestion:1; /* An output: a queue is full */ |
| 51 | unsigned for_kupdate:1; /* A kupdate writeback */ | 51 | unsigned for_kupdate:1; /* A kupdate writeback */ |
| 52 | unsigned for_reclaim:1; /* Invoked from the page allocator */ | 52 | unsigned for_reclaim:1; /* Invoked from the page allocator */ |
| 53 | unsigned for_writepages:1; /* This is a writepages() call */ | ||
| 54 | unsigned range_cyclic:1; /* range_start is cyclic */ | 53 | unsigned range_cyclic:1; /* range_start is cyclic */ |
| 55 | unsigned more_io:1; /* more io to be dispatched */ | 54 | unsigned more_io:1; /* more io to be dispatched */ |
| 56 | /* | 55 | /* |
| @@ -69,8 +68,8 @@ struct writeback_control { | |||
| 69 | */ | 68 | */ |
| 70 | struct bdi_writeback; | 69 | struct bdi_writeback; |
| 71 | int inode_wait(void *); | 70 | int inode_wait(void *); |
| 72 | long writeback_inodes_sb(struct super_block *); | 71 | void writeback_inodes_sb(struct super_block *); |
| 73 | long sync_inodes_sb(struct super_block *); | 72 | void sync_inodes_sb(struct super_block *); |
| 74 | void writeback_inodes_wbc(struct writeback_control *wbc); | 73 | void writeback_inodes_wbc(struct writeback_control *wbc); |
| 75 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); | 74 | long wb_do_writeback(struct bdi_writeback *wb, int force_wait); |
| 76 | void wakeup_flusher_threads(long nr_pages); | 75 | void wakeup_flusher_threads(long nr_pages); |
| @@ -150,10 +149,6 @@ int write_cache_pages(struct address_space *mapping, | |||
| 150 | struct writeback_control *wbc, writepage_t writepage, | 149 | struct writeback_control *wbc, writepage_t writepage, |
| 151 | void *data); | 150 | void *data); |
| 152 | int do_writepages(struct address_space *mapping, struct writeback_control *wbc); | 151 | int do_writepages(struct address_space *mapping, struct writeback_control *wbc); |
| 153 | int sync_page_range(struct inode *inode, struct address_space *mapping, | ||
| 154 | loff_t pos, loff_t count); | ||
| 155 | int sync_page_range_nolock(struct inode *inode, struct address_space *mapping, | ||
| 156 | loff_t pos, loff_t count); | ||
| 157 | void set_page_dirty_balance(struct page *page, int page_mkwrite); | 152 | void set_page_dirty_balance(struct page *page, int page_mkwrite); |
| 158 | void writeback_set_ratelimit(void); | 153 | void writeback_set_ratelimit(void); |
| 159 | 154 | ||
