diff options
Diffstat (limited to 'include/linux')
129 files changed, 4227 insertions, 694 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild index b3afd2219ad2..a2df7030d49d 100644 --- a/include/linux/Kbuild +++ b/include/linux/Kbuild | |||
| @@ -311,6 +311,7 @@ unifdef-y += ppp-comp.h | |||
| 311 | unifdef-y += ptrace.h | 311 | unifdef-y += ptrace.h |
| 312 | unifdef-y += quota.h | 312 | unifdef-y += quota.h |
| 313 | unifdef-y += random.h | 313 | unifdef-y += random.h |
| 314 | unifdef-y += rfkill.h | ||
| 314 | unifdef-y += irqnr.h | 315 | unifdef-y += irqnr.h |
| 315 | unifdef-y += reboot.h | 316 | unifdef-y += reboot.h |
| 316 | unifdef-y += reiserfs_fs.h | 317 | unifdef-y += reiserfs_fs.h |
diff --git a/include/linux/adfs_fs.h b/include/linux/adfs_fs.h index ef788c2085a1..b19801f73890 100644 --- a/include/linux/adfs_fs.h +++ b/include/linux/adfs_fs.h | |||
| @@ -41,8 +41,6 @@ struct adfs_discrecord { | |||
| 41 | #define ADFS_DR_SIZE_BITS (ADFS_DR_SIZE << 3) | 41 | #define ADFS_DR_SIZE_BITS (ADFS_DR_SIZE << 3) |
| 42 | 42 | ||
| 43 | #ifdef __KERNEL__ | 43 | #ifdef __KERNEL__ |
| 44 | #include <linux/adfs_fs_i.h> | ||
| 45 | #include <linux/adfs_fs_sb.h> | ||
| 46 | /* | 44 | /* |
| 47 | * Calculate the boot block checksum on an ADFS drive. Note that this will | 45 | * Calculate the boot block checksum on an ADFS drive. Note that this will |
| 48 | * appear to be correct if the sector contains all zeros, so also check that | 46 | * appear to be correct if the sector contains all zeros, so also check that |
| @@ -60,17 +58,6 @@ static inline int adfs_checkbblk(unsigned char *ptr) | |||
| 60 | 58 | ||
| 61 | return (result & 0xff) != ptr[511]; | 59 | return (result & 0xff) != ptr[511]; |
| 62 | } | 60 | } |
| 63 | |||
| 64 | static inline struct adfs_sb_info *ADFS_SB(struct super_block *sb) | ||
| 65 | { | ||
| 66 | return sb->s_fs_info; | ||
| 67 | } | ||
| 68 | |||
| 69 | static inline struct adfs_inode_info *ADFS_I(struct inode *inode) | ||
| 70 | { | ||
| 71 | return container_of(inode, struct adfs_inode_info, vfs_inode); | ||
| 72 | } | ||
| 73 | |||
| 74 | #endif | 61 | #endif |
| 75 | 62 | ||
| 76 | #endif | 63 | #endif |
diff --git a/include/linux/adfs_fs_i.h b/include/linux/adfs_fs_i.h deleted file mode 100644 index cb543034e54f..000000000000 --- a/include/linux/adfs_fs_i.h +++ /dev/null | |||
| @@ -1,24 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/linux/adfs_fs_i.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 1997 Russell King | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef _ADFS_FS_I | ||
| 8 | #define _ADFS_FS_I | ||
| 9 | |||
| 10 | /* | ||
| 11 | * adfs file system inode data in memory | ||
| 12 | */ | ||
| 13 | struct adfs_inode_info { | ||
| 14 | loff_t mmu_private; | ||
| 15 | unsigned long parent_id; /* object id of parent */ | ||
| 16 | __u32 loadaddr; /* RISC OS load address */ | ||
| 17 | __u32 execaddr; /* RISC OS exec address */ | ||
| 18 | unsigned int filetype; /* RISC OS file type */ | ||
| 19 | unsigned int attr; /* RISC OS permissions */ | ||
| 20 | unsigned int stamped:1; /* RISC OS file has date/time */ | ||
| 21 | struct inode vfs_inode; | ||
| 22 | }; | ||
| 23 | |||
| 24 | #endif | ||
diff --git a/include/linux/adfs_fs_sb.h b/include/linux/adfs_fs_sb.h deleted file mode 100644 index d9bf05c02ccc..000000000000 --- a/include/linux/adfs_fs_sb.h +++ /dev/null | |||
| @@ -1,38 +0,0 @@ | |||
| 1 | /* | ||
| 2 | * linux/include/linux/adfs_fs_sb.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 1997-1999 Russell King | ||
| 5 | */ | ||
| 6 | |||
| 7 | #ifndef _ADFS_FS_SB | ||
| 8 | #define _ADFS_FS_SB | ||
| 9 | |||
| 10 | /* | ||
| 11 | * Forward-declare this | ||
| 12 | */ | ||
| 13 | struct adfs_discmap; | ||
| 14 | struct adfs_dir_ops; | ||
| 15 | |||
| 16 | /* | ||
| 17 | * ADFS file system superblock data in memory | ||
| 18 | */ | ||
| 19 | struct adfs_sb_info { | ||
| 20 | struct adfs_discmap *s_map; /* bh list containing map */ | ||
| 21 | struct adfs_dir_ops *s_dir; /* directory operations */ | ||
| 22 | |||
| 23 | uid_t s_uid; /* owner uid */ | ||
| 24 | gid_t s_gid; /* owner gid */ | ||
| 25 | umode_t s_owner_mask; /* ADFS owner perm -> unix perm */ | ||
| 26 | umode_t s_other_mask; /* ADFS other perm -> unix perm */ | ||
| 27 | |||
| 28 | __u32 s_ids_per_zone; /* max. no ids in one zone */ | ||
| 29 | __u32 s_idlen; /* length of ID in map */ | ||
| 30 | __u32 s_map_size; /* sector size of a map */ | ||
| 31 | unsigned long s_size; /* total size (in blocks) of this fs */ | ||
| 32 | signed int s_map2blk; /* shift left by this for map->sector */ | ||
| 33 | unsigned int s_log2sharesize;/* log2 share size */ | ||
| 34 | __le32 s_version; /* disc format version */ | ||
| 35 | unsigned int s_namelen; /* maximum number of characters in name */ | ||
| 36 | }; | ||
| 37 | |||
| 38 | #endif | ||
diff --git a/include/linux/blkdev.h b/include/linux/blkdev.h index 0b1a6cae9de1..8963d9149b5f 100644 --- a/include/linux/blkdev.h +++ b/include/linux/blkdev.h | |||
| @@ -926,6 +926,7 @@ extern void blk_queue_alignment_offset(struct request_queue *q, | |||
| 926 | unsigned int alignment); | 926 | unsigned int alignment); |
| 927 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); | 927 | extern void blk_queue_io_min(struct request_queue *q, unsigned int min); |
| 928 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); | 928 | extern void blk_queue_io_opt(struct request_queue *q, unsigned int opt); |
| 929 | extern void blk_set_default_limits(struct queue_limits *lim); | ||
| 929 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, | 930 | extern int blk_stack_limits(struct queue_limits *t, struct queue_limits *b, |
| 930 | sector_t offset); | 931 | sector_t offset); |
| 931 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, | 932 | extern void disk_stack_limits(struct gendisk *disk, struct block_device *bdev, |
diff --git a/include/linux/bug.h b/include/linux/bug.h index 54398d2c6d8d..d276b5510c83 100644 --- a/include/linux/bug.h +++ b/include/linux/bug.h | |||
| @@ -1,7 +1,6 @@ | |||
| 1 | #ifndef _LINUX_BUG_H | 1 | #ifndef _LINUX_BUG_H |
| 2 | #define _LINUX_BUG_H | 2 | #define _LINUX_BUG_H |
| 3 | 3 | ||
| 4 | #include <linux/module.h> | ||
| 5 | #include <asm/bug.h> | 4 | #include <asm/bug.h> |
| 6 | 5 | ||
| 7 | enum bug_trap_type { | 6 | enum bug_trap_type { |
| @@ -24,10 +23,6 @@ const struct bug_entry *find_bug(unsigned long bugaddr); | |||
| 24 | 23 | ||
| 25 | enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs); | 24 | enum bug_trap_type report_bug(unsigned long bug_addr, struct pt_regs *regs); |
| 26 | 25 | ||
| 27 | int module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *, | ||
| 28 | struct module *); | ||
| 29 | void module_bug_cleanup(struct module *); | ||
| 30 | |||
| 31 | /* These are defined by the architecture */ | 26 | /* These are defined by the architecture */ |
| 32 | int is_valid_bugaddr(unsigned long addr); | 27 | int is_valid_bugaddr(unsigned long addr); |
| 33 | 28 | ||
| @@ -38,13 +33,6 @@ static inline enum bug_trap_type report_bug(unsigned long bug_addr, | |||
| 38 | { | 33 | { |
| 39 | return BUG_TRAP_TYPE_BUG; | 34 | return BUG_TRAP_TYPE_BUG; |
| 40 | } | 35 | } |
| 41 | static inline int module_bug_finalize(const Elf_Ehdr *hdr, | ||
| 42 | const Elf_Shdr *sechdrs, | ||
| 43 | struct module *mod) | ||
| 44 | { | ||
| 45 | return 0; | ||
| 46 | } | ||
| 47 | static inline void module_bug_cleanup(struct module *mod) {} | ||
| 48 | 36 | ||
| 49 | #endif /* CONFIG_GENERIC_BUG */ | 37 | #endif /* CONFIG_GENERIC_BUG */ |
| 50 | #endif /* _LINUX_BUG_H */ | 38 | #endif /* _LINUX_BUG_H */ |
diff --git a/include/linux/c2port.h b/include/linux/c2port.h index 7b5a2388ba67..2a5cd867c365 100644 --- a/include/linux/c2port.h +++ b/include/linux/c2port.h | |||
| @@ -10,6 +10,7 @@ | |||
| 10 | */ | 10 | */ |
| 11 | 11 | ||
| 12 | #include <linux/device.h> | 12 | #include <linux/device.h> |
| 13 | #include <linux/kmemcheck.h> | ||
| 13 | 14 | ||
| 14 | #define C2PORT_NAME_LEN 32 | 15 | #define C2PORT_NAME_LEN 32 |
| 15 | 16 | ||
| @@ -20,8 +21,10 @@ | |||
| 20 | /* Main struct */ | 21 | /* Main struct */ |
| 21 | struct c2port_ops; | 22 | struct c2port_ops; |
| 22 | struct c2port_device { | 23 | struct c2port_device { |
| 24 | kmemcheck_bitfield_begin(flags); | ||
| 23 | unsigned int access:1; | 25 | unsigned int access:1; |
| 24 | unsigned int flash_access:1; | 26 | unsigned int flash_access:1; |
| 27 | kmemcheck_bitfield_end(flags); | ||
| 25 | 28 | ||
| 26 | int id; | 29 | int id; |
| 27 | char name[C2PORT_NAME_LEN]; | 30 | char name[C2PORT_NAME_LEN]; |
diff --git a/include/linux/can/Kbuild b/include/linux/can/Kbuild index eff898aac02b..8cb05aae661c 100644 --- a/include/linux/can/Kbuild +++ b/include/linux/can/Kbuild | |||
| @@ -1,3 +1,4 @@ | |||
| 1 | header-y += raw.h | 1 | header-y += raw.h |
| 2 | header-y += bcm.h | 2 | header-y += bcm.h |
| 3 | header-y += error.h | 3 | header-y += error.h |
| 4 | header-y += netlink.h | ||
diff --git a/include/linux/can/dev.h b/include/linux/can/dev.h new file mode 100644 index 000000000000..4a37a56f6cdd --- /dev/null +++ b/include/linux/can/dev.h | |||
| @@ -0,0 +1,70 @@ | |||
| 1 | /* | ||
| 2 | * linux/can/dev.h | ||
| 3 | * | ||
| 4 | * Definitions for the CAN network device driver interface | ||
| 5 | * | ||
| 6 | * Copyright (C) 2006 Andrey Volkov <avolkov@varma-el.com> | ||
| 7 | * Varma Electronics Oy | ||
| 8 | * | ||
| 9 | * Copyright (C) 2008 Wolfgang Grandegger <wg@grandegger.com> | ||
| 10 | * | ||
| 11 | * Send feedback to <socketcan-users@lists.berlios.de> | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef CAN_DEV_H | ||
| 15 | #define CAN_DEV_H | ||
| 16 | |||
| 17 | #include <linux/can/netlink.h> | ||
| 18 | #include <linux/can/error.h> | ||
| 19 | |||
| 20 | /* | ||
| 21 | * CAN mode | ||
| 22 | */ | ||
| 23 | enum can_mode { | ||
| 24 | CAN_MODE_STOP = 0, | ||
| 25 | CAN_MODE_START, | ||
| 26 | CAN_MODE_SLEEP | ||
| 27 | }; | ||
| 28 | |||
| 29 | /* | ||
| 30 | * CAN common private data | ||
| 31 | */ | ||
| 32 | #define CAN_ECHO_SKB_MAX 4 | ||
| 33 | |||
| 34 | struct can_priv { | ||
| 35 | struct can_device_stats can_stats; | ||
| 36 | |||
| 37 | struct can_bittiming bittiming; | ||
| 38 | struct can_bittiming_const *bittiming_const; | ||
| 39 | struct can_clock clock; | ||
| 40 | |||
| 41 | enum can_state state; | ||
| 42 | u32 ctrlmode; | ||
| 43 | |||
| 44 | int restart_ms; | ||
| 45 | struct timer_list restart_timer; | ||
| 46 | |||
| 47 | struct sk_buff *echo_skb[CAN_ECHO_SKB_MAX]; | ||
| 48 | |||
| 49 | int (*do_set_bittiming)(struct net_device *dev); | ||
| 50 | int (*do_set_mode)(struct net_device *dev, enum can_mode mode); | ||
| 51 | int (*do_get_state)(const struct net_device *dev, | ||
| 52 | enum can_state *state); | ||
| 53 | }; | ||
| 54 | |||
| 55 | struct net_device *alloc_candev(int sizeof_priv); | ||
| 56 | void free_candev(struct net_device *dev); | ||
| 57 | |||
| 58 | int open_candev(struct net_device *dev); | ||
| 59 | void close_candev(struct net_device *dev); | ||
| 60 | |||
| 61 | int register_candev(struct net_device *dev); | ||
| 62 | void unregister_candev(struct net_device *dev); | ||
| 63 | |||
| 64 | int can_restart_now(struct net_device *dev); | ||
| 65 | void can_bus_off(struct net_device *dev); | ||
| 66 | |||
| 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); | ||
| 69 | |||
| 70 | #endif /* CAN_DEV_H */ | ||
diff --git a/include/linux/can/netlink.h b/include/linux/can/netlink.h new file mode 100644 index 000000000000..9ecbb7871c0e --- /dev/null +++ b/include/linux/can/netlink.h | |||
| @@ -0,0 +1,113 @@ | |||
| 1 | /* | ||
| 2 | * linux/can/netlink.h | ||
| 3 | * | ||
| 4 | * Definitions for the CAN netlink interface | ||
| 5 | * | ||
| 6 | * Copyright (c) 2009 Wolfgang Grandegger <wg@grandegger.com> | ||
| 7 | * | ||
| 8 | * Send feedback to <socketcan-users@lists.berlios.de> | ||
| 9 | * | ||
| 10 | */ | ||
| 11 | |||
| 12 | #ifndef CAN_NETLINK_H | ||
| 13 | #define CAN_NETLINK_H | ||
| 14 | |||
| 15 | #include <linux/types.h> | ||
| 16 | |||
| 17 | /* | ||
| 18 | * CAN bit-timing parameters | ||
| 19 | * | ||
| 20 | * For futher information, please read chapter "8 BIT TIMING | ||
| 21 | * REQUIREMENTS" of the "Bosch CAN Specification version 2.0" | ||
| 22 | * at http://www.semiconductors.bosch.de/pdf/can2spec.pdf. | ||
| 23 | */ | ||
| 24 | struct can_bittiming { | ||
| 25 | __u32 bitrate; /* Bit-rate in bits/second */ | ||
| 26 | __u32 sample_point; /* Sample point in one-tenth of a percent */ | ||
| 27 | __u32 tq; /* Time quanta (TQ) in nanoseconds */ | ||
| 28 | __u32 prop_seg; /* Propagation segment in TQs */ | ||
| 29 | __u32 phase_seg1; /* Phase buffer segment 1 in TQs */ | ||
| 30 | __u32 phase_seg2; /* Phase buffer segment 2 in TQs */ | ||
| 31 | __u32 sjw; /* Synchronisation jump width in TQs */ | ||
| 32 | __u32 brp; /* Bit-rate prescaler */ | ||
| 33 | }; | ||
| 34 | |||
| 35 | /* | ||
| 36 | * CAN harware-dependent bit-timing constant | ||
| 37 | * | ||
| 38 | * Used for calculating and checking bit-timing parameters | ||
| 39 | */ | ||
| 40 | struct can_bittiming_const { | ||
| 41 | char name[16]; /* Name of the CAN controller hardware */ | ||
| 42 | __u32 tseg1_min; /* Time segement 1 = prop_seg + phase_seg1 */ | ||
| 43 | __u32 tseg1_max; | ||
| 44 | __u32 tseg2_min; /* Time segement 2 = phase_seg2 */ | ||
| 45 | __u32 tseg2_max; | ||
| 46 | __u32 sjw_max; /* Synchronisation jump width */ | ||
| 47 | __u32 brp_min; /* Bit-rate prescaler */ | ||
| 48 | __u32 brp_max; | ||
| 49 | __u32 brp_inc; | ||
| 50 | }; | ||
| 51 | |||
| 52 | /* | ||
| 53 | * CAN clock parameters | ||
| 54 | */ | ||
| 55 | struct can_clock { | ||
| 56 | __u32 freq; /* CAN system clock frequency in Hz */ | ||
| 57 | }; | ||
| 58 | |||
| 59 | /* | ||
| 60 | * CAN operational and error states | ||
| 61 | */ | ||
| 62 | enum can_state { | ||
| 63 | CAN_STATE_ERROR_ACTIVE = 0, /* RX/TX error count < 96 */ | ||
| 64 | CAN_STATE_ERROR_WARNING, /* RX/TX error count < 128 */ | ||
| 65 | CAN_STATE_ERROR_PASSIVE, /* RX/TX error count < 256 */ | ||
| 66 | CAN_STATE_BUS_OFF, /* RX/TX error count >= 256 */ | ||
| 67 | CAN_STATE_STOPPED, /* Device is stopped */ | ||
| 68 | CAN_STATE_SLEEPING, /* Device is sleeping */ | ||
| 69 | CAN_STATE_MAX | ||
| 70 | }; | ||
| 71 | |||
| 72 | /* | ||
| 73 | * CAN controller mode | ||
| 74 | */ | ||
| 75 | struct can_ctrlmode { | ||
| 76 | __u32 mask; | ||
| 77 | __u32 flags; | ||
| 78 | }; | ||
| 79 | |||
| 80 | #define CAN_CTRLMODE_LOOPBACK 0x1 /* Loopback mode */ | ||
| 81 | #define CAN_CTRLMODE_LISTENONLY 0x2 /* Listen-only mode */ | ||
| 82 | #define CAN_CTRLMODE_3_SAMPLES 0x4 /* Triple sampling mode */ | ||
| 83 | |||
| 84 | /* | ||
| 85 | * CAN device statistics | ||
| 86 | */ | ||
| 87 | struct can_device_stats { | ||
| 88 | __u32 bus_error; /* Bus errors */ | ||
| 89 | __u32 error_warning; /* Changes to error warning state */ | ||
| 90 | __u32 error_passive; /* Changes to error passive state */ | ||
| 91 | __u32 bus_off; /* Changes to bus off state */ | ||
| 92 | __u32 arbitration_lost; /* Arbitration lost errors */ | ||
| 93 | __u32 restarts; /* CAN controller re-starts */ | ||
| 94 | }; | ||
| 95 | |||
| 96 | /* | ||
| 97 | * CAN netlink interface | ||
| 98 | */ | ||
| 99 | enum { | ||
| 100 | IFLA_CAN_UNSPEC, | ||
| 101 | IFLA_CAN_BITTIMING, | ||
| 102 | IFLA_CAN_BITTIMING_CONST, | ||
| 103 | IFLA_CAN_CLOCK, | ||
| 104 | IFLA_CAN_STATE, | ||
| 105 | IFLA_CAN_CTRLMODE, | ||
| 106 | IFLA_CAN_RESTART_MS, | ||
| 107 | IFLA_CAN_RESTART, | ||
| 108 | __IFLA_CAN_MAX | ||
| 109 | }; | ||
| 110 | |||
| 111 | #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1) | ||
| 112 | |||
| 113 | #endif /* CAN_NETLINK_H */ | ||
diff --git a/include/linux/can/platform/sja1000.h b/include/linux/can/platform/sja1000.h new file mode 100644 index 000000000000..01ee2aeb048d --- /dev/null +++ b/include/linux/can/platform/sja1000.h | |||
| @@ -0,0 +1,35 @@ | |||
| 1 | #ifndef _CAN_PLATFORM_SJA1000_H_ | ||
| 2 | #define _CAN_PLATFORM_SJA1000_H_ | ||
| 3 | |||
| 4 | /* clock divider register */ | ||
| 5 | #define CDR_CLKOUT_MASK 0x07 | ||
| 6 | #define CDR_CLK_OFF 0x08 /* Clock off (CLKOUT pin) */ | ||
| 7 | #define CDR_RXINPEN 0x20 /* TX1 output is RX irq output */ | ||
| 8 | #define CDR_CBP 0x40 /* CAN input comparator bypass */ | ||
| 9 | #define CDR_PELICAN 0x80 /* PeliCAN mode */ | ||
| 10 | |||
| 11 | /* output control register */ | ||
| 12 | #define OCR_MODE_BIPHASE 0x00 | ||
| 13 | #define OCR_MODE_TEST 0x01 | ||
| 14 | #define OCR_MODE_NORMAL 0x02 | ||
| 15 | #define OCR_MODE_CLOCK 0x03 | ||
| 16 | #define OCR_MODE_MASK 0x07 | ||
| 17 | #define OCR_TX0_INVERT 0x04 | ||
| 18 | #define OCR_TX0_PULLDOWN 0x08 | ||
| 19 | #define OCR_TX0_PULLUP 0x10 | ||
| 20 | #define OCR_TX0_PUSHPULL 0x18 | ||
| 21 | #define OCR_TX1_INVERT 0x20 | ||
| 22 | #define OCR_TX1_PULLDOWN 0x40 | ||
| 23 | #define OCR_TX1_PULLUP 0x80 | ||
| 24 | #define OCR_TX1_PUSHPULL 0xc0 | ||
| 25 | #define OCR_TX_MASK 0xfc | ||
| 26 | #define OCR_TX_SHIFT 2 | ||
| 27 | |||
| 28 | struct sja1000_platform_data { | ||
| 29 | u32 clock; /* CAN bus oscillator frequency in Hz */ | ||
| 30 | |||
| 31 | u8 ocr; /* output control register */ | ||
| 32 | u8 cdr; /* clock divider register */ | ||
| 33 | }; | ||
| 34 | |||
| 35 | #endif /* !_CAN_PLATFORM_SJA1000_H_ */ | ||
diff --git a/include/linux/clockchips.h b/include/linux/clockchips.h index 3a1dbba4d3ae..20a100fe2b4f 100644 --- a/include/linux/clockchips.h +++ b/include/linux/clockchips.h | |||
| @@ -143,3 +143,12 @@ extern void clockevents_notify(unsigned long reason, void *arg); | |||
| 143 | #endif | 143 | #endif |
| 144 | 144 | ||
| 145 | #endif | 145 | #endif |
| 146 | |||
| 147 | #ifdef CONFIG_GENERIC_CLOCKEVENTS | ||
| 148 | extern ktime_t clockevents_get_next_event(int cpu); | ||
| 149 | #else | ||
| 150 | static inline ktime_t clockevents_get_next_event(int cpu) | ||
| 151 | { | ||
| 152 | return (ktime_t) { .tv64 = KTIME_MAX }; | ||
| 153 | } | ||
| 154 | #endif | ||
diff --git a/include/linux/cpuset.h b/include/linux/cpuset.h index 05ea1dd7d681..a5740fc4d04b 100644 --- a/include/linux/cpuset.h +++ b/include/linux/cpuset.h | |||
| @@ -18,7 +18,6 @@ | |||
| 18 | 18 | ||
| 19 | extern int number_of_cpusets; /* How many cpusets are defined in system? */ | 19 | extern int number_of_cpusets; /* How many cpusets are defined in system? */ |
| 20 | 20 | ||
| 21 | extern int cpuset_init_early(void); | ||
| 22 | extern int cpuset_init(void); | 21 | extern int cpuset_init(void); |
| 23 | extern void cpuset_init_smp(void); | 22 | extern void cpuset_init_smp(void); |
| 24 | extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask); | 23 | extern void cpuset_cpus_allowed(struct task_struct *p, struct cpumask *mask); |
| @@ -27,7 +26,6 @@ extern void cpuset_cpus_allowed_locked(struct task_struct *p, | |||
| 27 | extern nodemask_t cpuset_mems_allowed(struct task_struct *p); | 26 | extern nodemask_t cpuset_mems_allowed(struct task_struct *p); |
| 28 | #define cpuset_current_mems_allowed (current->mems_allowed) | 27 | #define cpuset_current_mems_allowed (current->mems_allowed) |
| 29 | void cpuset_init_current_mems_allowed(void); | 28 | void cpuset_init_current_mems_allowed(void); |
| 30 | void cpuset_update_task_memory_state(void); | ||
| 31 | int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask); | 29 | int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask); |
| 32 | 30 | ||
| 33 | extern int __cpuset_node_allowed_softwall(int node, gfp_t gfp_mask); | 31 | extern int __cpuset_node_allowed_softwall(int node, gfp_t gfp_mask); |
| @@ -92,9 +90,13 @@ extern void rebuild_sched_domains(void); | |||
| 92 | 90 | ||
| 93 | extern void cpuset_print_task_mems_allowed(struct task_struct *p); | 91 | extern void cpuset_print_task_mems_allowed(struct task_struct *p); |
| 94 | 92 | ||
| 93 | static inline void set_mems_allowed(nodemask_t nodemask) | ||
| 94 | { | ||
| 95 | current->mems_allowed = nodemask; | ||
| 96 | } | ||
| 97 | |||
| 95 | #else /* !CONFIG_CPUSETS */ | 98 | #else /* !CONFIG_CPUSETS */ |
| 96 | 99 | ||
| 97 | static inline int cpuset_init_early(void) { return 0; } | ||
| 98 | static inline int cpuset_init(void) { return 0; } | 100 | static inline int cpuset_init(void) { return 0; } |
| 99 | static inline void cpuset_init_smp(void) {} | 101 | static inline void cpuset_init_smp(void) {} |
| 100 | 102 | ||
| @@ -116,7 +118,6 @@ static inline nodemask_t cpuset_mems_allowed(struct task_struct *p) | |||
| 116 | 118 | ||
| 117 | #define cpuset_current_mems_allowed (node_states[N_HIGH_MEMORY]) | 119 | #define cpuset_current_mems_allowed (node_states[N_HIGH_MEMORY]) |
| 118 | static inline void cpuset_init_current_mems_allowed(void) {} | 120 | static inline void cpuset_init_current_mems_allowed(void) {} |
| 119 | static inline void cpuset_update_task_memory_state(void) {} | ||
| 120 | 121 | ||
| 121 | static inline int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask) | 122 | static inline int cpuset_nodemask_valid_mems_allowed(nodemask_t *nodemask) |
| 122 | { | 123 | { |
| @@ -188,6 +189,10 @@ static inline void cpuset_print_task_mems_allowed(struct task_struct *p) | |||
| 188 | { | 189 | { |
| 189 | } | 190 | } |
| 190 | 191 | ||
| 192 | static inline void set_mems_allowed(nodemask_t nodemask) | ||
| 193 | { | ||
| 194 | } | ||
| 195 | |||
| 191 | #endif /* !CONFIG_CPUSETS */ | 196 | #endif /* !CONFIG_CPUSETS */ |
| 192 | 197 | ||
| 193 | #endif /* _LINUX_CPUSET_H */ | 198 | #endif /* _LINUX_CPUSET_H */ |
diff --git a/include/linux/device.h b/include/linux/device.h index a4a7b10aaa48..ed4e39f2c423 100644 --- a/include/linux/device.h +++ b/include/linux/device.h | |||
| @@ -114,6 +114,8 @@ extern int bus_unregister_notifier(struct bus_type *bus, | |||
| 114 | #define BUS_NOTIFY_BOUND_DRIVER 0x00000003 /* driver bound to device */ | 114 | #define BUS_NOTIFY_BOUND_DRIVER 0x00000003 /* driver bound to device */ |
| 115 | #define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be | 115 | #define BUS_NOTIFY_UNBIND_DRIVER 0x00000004 /* driver about to be |
| 116 | unbound */ | 116 | unbound */ |
| 117 | #define BUS_NOTIFY_UNBOUND_DRIVER 0x00000005 /* driver is unbound | ||
| 118 | from the device */ | ||
| 117 | 119 | ||
| 118 | extern struct kset *bus_get_kset(struct bus_type *bus); | 120 | extern struct kset *bus_get_kset(struct bus_type *bus); |
| 119 | extern struct klist *bus_get_device_klist(struct bus_type *bus); | 121 | extern struct klist *bus_get_device_klist(struct bus_type *bus); |
| @@ -192,6 +194,7 @@ struct class { | |||
| 192 | struct kobject *dev_kobj; | 194 | struct kobject *dev_kobj; |
| 193 | 195 | ||
| 194 | int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); | 196 | int (*dev_uevent)(struct device *dev, struct kobj_uevent_env *env); |
| 197 | char *(*nodename)(struct device *dev); | ||
| 195 | 198 | ||
| 196 | void (*class_release)(struct class *class); | 199 | void (*class_release)(struct class *class); |
| 197 | void (*dev_release)(struct device *dev); | 200 | void (*dev_release)(struct device *dev); |
| @@ -287,6 +290,7 @@ struct device_type { | |||
| 287 | const char *name; | 290 | const char *name; |
| 288 | struct attribute_group **groups; | 291 | struct attribute_group **groups; |
| 289 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); | 292 | int (*uevent)(struct device *dev, struct kobj_uevent_env *env); |
| 293 | char *(*nodename)(struct device *dev); | ||
| 290 | void (*release)(struct device *dev); | 294 | void (*release)(struct device *dev); |
| 291 | 295 | ||
| 292 | struct dev_pm_ops *pm; | 296 | struct dev_pm_ops *pm; |
| @@ -486,6 +490,7 @@ extern struct device *device_find_child(struct device *dev, void *data, | |||
| 486 | extern int device_rename(struct device *dev, char *new_name); | 490 | extern int device_rename(struct device *dev, char *new_name); |
| 487 | extern int device_move(struct device *dev, struct device *new_parent, | 491 | extern int device_move(struct device *dev, struct device *new_parent, |
| 488 | enum dpm_order dpm_order); | 492 | enum dpm_order dpm_order); |
| 493 | extern const char *device_get_nodename(struct device *dev, const char **tmp); | ||
| 489 | 494 | ||
| 490 | /* | 495 | /* |
| 491 | * Root device objects for grouping under /sys/devices | 496 | * Root device objects for grouping under /sys/devices |
diff --git a/include/linux/eisa.h b/include/linux/eisa.h index e61c0be2a459..6925249a5ac6 100644 --- a/include/linux/eisa.h +++ b/include/linux/eisa.h | |||
| @@ -78,12 +78,12 @@ static inline void eisa_driver_unregister (struct eisa_driver *edrv) { } | |||
| 78 | /* Mimics pci.h... */ | 78 | /* Mimics pci.h... */ |
| 79 | static inline void *eisa_get_drvdata (struct eisa_device *edev) | 79 | static inline void *eisa_get_drvdata (struct eisa_device *edev) |
| 80 | { | 80 | { |
| 81 | return edev->dev.driver_data; | 81 | return dev_get_drvdata(&edev->dev); |
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | static inline void eisa_set_drvdata (struct eisa_device *edev, void *data) | 84 | static inline void eisa_set_drvdata (struct eisa_device *edev, void *data) |
| 85 | { | 85 | { |
| 86 | edev->dev.driver_data = data; | 86 | dev_set_drvdata(&edev->dev, data); |
| 87 | } | 87 | } |
| 88 | 88 | ||
| 89 | /* The EISA root device. There's rumours about machines with multiple | 89 | /* The EISA root device. There's rumours about machines with multiple |
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index a1f17abba7dc..3d7a6687d247 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h | |||
| @@ -182,6 +182,33 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2], | |||
| 182 | return compare_ether_addr(addr1, addr2); | 182 | return compare_ether_addr(addr1, addr2); |
| 183 | #endif | 183 | #endif |
| 184 | } | 184 | } |
| 185 | |||
| 186 | /** | ||
| 187 | * is_etherdev_addr - Tell if given Ethernet address belongs to the device. | ||
| 188 | * @dev: Pointer to a device structure | ||
| 189 | * @addr: Pointer to a six-byte array containing the Ethernet address | ||
| 190 | * | ||
| 191 | * Compare passed address with all addresses of the device. Return true if the | ||
| 192 | * address if one of the device addresses. | ||
| 193 | * | ||
| 194 | * Note that this function calls compare_ether_addr_64bits() so take care of | ||
| 195 | * the right padding. | ||
| 196 | */ | ||
| 197 | static inline bool is_etherdev_addr(const struct net_device *dev, | ||
| 198 | const u8 addr[6 + 2]) | ||
| 199 | { | ||
| 200 | struct netdev_hw_addr *ha; | ||
| 201 | int res = 1; | ||
| 202 | |||
| 203 | rcu_read_lock(); | ||
| 204 | for_each_dev_addr(dev, ha) { | ||
| 205 | res = compare_ether_addr_64bits(addr, ha->addr); | ||
| 206 | if (!res) | ||
| 207 | break; | ||
| 208 | } | ||
| 209 | rcu_read_unlock(); | ||
| 210 | return !res; | ||
| 211 | } | ||
| 185 | #endif /* __KERNEL__ */ | 212 | #endif /* __KERNEL__ */ |
| 186 | 213 | ||
| 187 | /** | 214 | /** |
diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h index 131b127b70f8..9b660bd2e2b3 100644 --- a/include/linux/ethtool.h +++ b/include/linux/ethtool.h | |||
| @@ -26,11 +26,14 @@ struct ethtool_cmd { | |||
| 26 | __u8 phy_address; | 26 | __u8 phy_address; |
| 27 | __u8 transceiver; /* Which transceiver to use */ | 27 | __u8 transceiver; /* Which transceiver to use */ |
| 28 | __u8 autoneg; /* Enable or disable autonegotiation */ | 28 | __u8 autoneg; /* Enable or disable autonegotiation */ |
| 29 | __u8 mdio_support; | ||
| 29 | __u32 maxtxpkt; /* Tx pkts before generating tx int */ | 30 | __u32 maxtxpkt; /* Tx pkts before generating tx int */ |
| 30 | __u32 maxrxpkt; /* Rx pkts before generating rx int */ | 31 | __u32 maxrxpkt; /* Rx pkts before generating rx int */ |
| 31 | __u16 speed_hi; | 32 | __u16 speed_hi; |
| 32 | __u16 reserved2; | 33 | __u8 eth_tp_mdix; |
| 33 | __u32 reserved[3]; | 34 | __u8 reserved2; |
| 35 | __u32 lp_advertising; /* Features the link partner advertises */ | ||
| 36 | __u32 reserved[2]; | ||
| 34 | }; | 37 | }; |
| 35 | 38 | ||
| 36 | static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, | 39 | static inline void ethtool_cmd_speed_set(struct ethtool_cmd *ep, |
| @@ -563,6 +566,11 @@ struct ethtool_ops { | |||
| 563 | #define SUPPORTED_Pause (1 << 13) | 566 | #define SUPPORTED_Pause (1 << 13) |
| 564 | #define SUPPORTED_Asym_Pause (1 << 14) | 567 | #define SUPPORTED_Asym_Pause (1 << 14) |
| 565 | #define SUPPORTED_2500baseX_Full (1 << 15) | 568 | #define SUPPORTED_2500baseX_Full (1 << 15) |
| 569 | #define SUPPORTED_Backplane (1 << 16) | ||
| 570 | #define SUPPORTED_1000baseKX_Full (1 << 17) | ||
| 571 | #define SUPPORTED_10000baseKX4_Full (1 << 18) | ||
| 572 | #define SUPPORTED_10000baseKR_Full (1 << 19) | ||
| 573 | #define SUPPORTED_10000baseR_FEC (1 << 20) | ||
| 566 | 574 | ||
| 567 | /* Indicates what features are advertised by the interface. */ | 575 | /* Indicates what features are advertised by the interface. */ |
| 568 | #define ADVERTISED_10baseT_Half (1 << 0) | 576 | #define ADVERTISED_10baseT_Half (1 << 0) |
| @@ -581,6 +589,11 @@ struct ethtool_ops { | |||
| 581 | #define ADVERTISED_Pause (1 << 13) | 589 | #define ADVERTISED_Pause (1 << 13) |
| 582 | #define ADVERTISED_Asym_Pause (1 << 14) | 590 | #define ADVERTISED_Asym_Pause (1 << 14) |
| 583 | #define ADVERTISED_2500baseX_Full (1 << 15) | 591 | #define ADVERTISED_2500baseX_Full (1 << 15) |
| 592 | #define ADVERTISED_Backplane (1 << 16) | ||
| 593 | #define ADVERTISED_1000baseKX_Full (1 << 17) | ||
| 594 | #define ADVERTISED_10000baseKX4_Full (1 << 18) | ||
| 595 | #define ADVERTISED_10000baseKR_Full (1 << 19) | ||
| 596 | #define ADVERTISED_10000baseR_FEC (1 << 20) | ||
| 584 | 597 | ||
| 585 | /* The following are all involved in forcing a particular link | 598 | /* The following are all involved in forcing a particular link |
| 586 | * mode for the device for setting things. When getting the | 599 | * mode for the device for setting things. When getting the |
| @@ -605,6 +618,7 @@ struct ethtool_ops { | |||
| 605 | #define PORT_MII 0x02 | 618 | #define PORT_MII 0x02 |
| 606 | #define PORT_FIBRE 0x03 | 619 | #define PORT_FIBRE 0x03 |
| 607 | #define PORT_BNC 0x04 | 620 | #define PORT_BNC 0x04 |
| 621 | #define PORT_OTHER 0xff | ||
| 608 | 622 | ||
| 609 | /* Which transceiver to use. */ | 623 | /* Which transceiver to use. */ |
| 610 | #define XCVR_INTERNAL 0x00 | 624 | #define XCVR_INTERNAL 0x00 |
| @@ -619,6 +633,11 @@ struct ethtool_ops { | |||
| 619 | #define AUTONEG_DISABLE 0x00 | 633 | #define AUTONEG_DISABLE 0x00 |
| 620 | #define AUTONEG_ENABLE 0x01 | 634 | #define AUTONEG_ENABLE 0x01 |
| 621 | 635 | ||
| 636 | /* Mode MDI or MDI-X */ | ||
| 637 | #define ETH_TP_MDI_INVALID 0x00 | ||
| 638 | #define ETH_TP_MDI 0x01 | ||
| 639 | #define ETH_TP_MDI_X 0x02 | ||
| 640 | |||
| 622 | /* Wake-On-Lan options. */ | 641 | /* Wake-On-Lan options. */ |
| 623 | #define WAKE_PHY (1 << 0) | 642 | #define WAKE_PHY (1 << 0) |
| 624 | #define WAKE_UCAST (1 << 1) | 643 | #define WAKE_UCAST (1 << 1) |
diff --git a/include/linux/fb.h b/include/linux/fb.h index 330c4b1bfcaa..dd68358996b7 100644 --- a/include/linux/fb.h +++ b/include/linux/fb.h | |||
| @@ -677,6 +677,9 @@ struct fb_ops { | |||
| 677 | /* get capability given var */ | 677 | /* get capability given var */ |
| 678 | void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps, | 678 | void (*fb_get_caps)(struct fb_info *info, struct fb_blit_caps *caps, |
| 679 | struct fb_var_screeninfo *var); | 679 | struct fb_var_screeninfo *var); |
| 680 | |||
| 681 | /* teardown any resources to do with this framebuffer */ | ||
| 682 | void (*fb_destroy)(struct fb_info *info); | ||
| 680 | }; | 683 | }; |
| 681 | 684 | ||
| 682 | #ifdef CONFIG_FB_TILEBLITTING | 685 | #ifdef CONFIG_FB_TILEBLITTING |
| @@ -786,6 +789,8 @@ struct fb_tile_ops { | |||
| 786 | #define FBINFO_MISC_USEREVENT 0x10000 /* event request | 789 | #define FBINFO_MISC_USEREVENT 0x10000 /* event request |
| 787 | from userspace */ | 790 | from userspace */ |
| 788 | #define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */ | 791 | #define FBINFO_MISC_TILEBLITTING 0x20000 /* use tile blitting */ |
| 792 | #define FBINFO_MISC_FIRMWARE 0x40000 /* a replaceable firmware | ||
| 793 | inited framebuffer */ | ||
| 789 | 794 | ||
| 790 | /* A driver may set this flag to indicate that it does want a set_par to be | 795 | /* A driver may set this flag to indicate that it does want a set_par to be |
| 791 | * called every time when fbcon_switch is executed. The advantage is that with | 796 | * called every time when fbcon_switch is executed. The advantage is that with |
| @@ -854,7 +859,12 @@ struct fb_info { | |||
| 854 | u32 state; /* Hardware state i.e suspend */ | 859 | u32 state; /* Hardware state i.e suspend */ |
| 855 | void *fbcon_par; /* fbcon use-only private area */ | 860 | void *fbcon_par; /* fbcon use-only private area */ |
| 856 | /* From here on everything is device dependent */ | 861 | /* From here on everything is device dependent */ |
| 857 | void *par; | 862 | void *par; |
| 863 | /* we need the PCI or similiar aperture base/size not | ||
| 864 | smem_start/size as smem_start may just be an object | ||
| 865 | allocated inside the aperture so may not actually overlap */ | ||
| 866 | resource_size_t aperture_base; | ||
| 867 | resource_size_t aperture_size; | ||
| 858 | }; | 868 | }; |
| 859 | 869 | ||
| 860 | #ifdef MODULE | 870 | #ifdef MODULE |
| @@ -893,7 +903,7 @@ struct fb_info { | |||
| 893 | #define fb_writeq sbus_writeq | 903 | #define fb_writeq sbus_writeq |
| 894 | #define fb_memset sbus_memset_io | 904 | #define fb_memset sbus_memset_io |
| 895 | 905 | ||
| 896 | #elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) | 906 | #elif defined(__i386__) || defined(__alpha__) || defined(__x86_64__) || defined(__hppa__) || defined(__sh__) || defined(__powerpc__) || defined(__avr32__) || defined(__bfin__) |
| 897 | 907 | ||
| 898 | #define fb_readb __raw_readb | 908 | #define fb_readb __raw_readb |
| 899 | #define fb_readw __raw_readw | 909 | #define fb_readw __raw_readw |
diff --git a/include/linux/firewire.h b/include/linux/firewire.h new file mode 100644 index 000000000000..e584b7215e8b --- /dev/null +++ b/include/linux/firewire.h | |||
| @@ -0,0 +1,358 @@ | |||
| 1 | #ifndef _LINUX_FIREWIRE_H | ||
| 2 | #define _LINUX_FIREWIRE_H | ||
| 3 | |||
| 4 | #include <linux/completion.h> | ||
| 5 | #include <linux/device.h> | ||
| 6 | #include <linux/kernel.h> | ||
| 7 | #include <linux/kref.h> | ||
| 8 | #include <linux/list.h> | ||
| 9 | #include <linux/mutex.h> | ||
| 10 | #include <linux/spinlock.h> | ||
| 11 | #include <linux/sysfs.h> | ||
| 12 | #include <linux/timer.h> | ||
| 13 | #include <linux/types.h> | ||
| 14 | #include <linux/workqueue.h> | ||
| 15 | |||
| 16 | #include <asm/atomic.h> | ||
| 17 | #include <asm/byteorder.h> | ||
| 18 | |||
| 19 | #define fw_notify(s, args...) printk(KERN_NOTICE KBUILD_MODNAME ": " s, ## args) | ||
| 20 | #define fw_error(s, args...) printk(KERN_ERR KBUILD_MODNAME ": " s, ## args) | ||
| 21 | |||
| 22 | static inline void fw_memcpy_from_be32(void *_dst, void *_src, size_t size) | ||
| 23 | { | ||
| 24 | u32 *dst = _dst; | ||
| 25 | __be32 *src = _src; | ||
| 26 | int i; | ||
| 27 | |||
| 28 | for (i = 0; i < size / 4; i++) | ||
| 29 | dst[i] = be32_to_cpu(src[i]); | ||
| 30 | } | ||
| 31 | |||
| 32 | static inline void fw_memcpy_to_be32(void *_dst, void *_src, size_t size) | ||
| 33 | { | ||
| 34 | fw_memcpy_from_be32(_dst, _src, size); | ||
| 35 | } | ||
| 36 | #define CSR_REGISTER_BASE 0xfffff0000000ULL | ||
| 37 | |||
| 38 | /* register offsets are relative to CSR_REGISTER_BASE */ | ||
| 39 | #define CSR_STATE_CLEAR 0x0 | ||
| 40 | #define CSR_STATE_SET 0x4 | ||
| 41 | #define CSR_NODE_IDS 0x8 | ||
| 42 | #define CSR_RESET_START 0xc | ||
| 43 | #define CSR_SPLIT_TIMEOUT_HI 0x18 | ||
| 44 | #define CSR_SPLIT_TIMEOUT_LO 0x1c | ||
| 45 | #define CSR_CYCLE_TIME 0x200 | ||
| 46 | #define CSR_BUS_TIME 0x204 | ||
| 47 | #define CSR_BUSY_TIMEOUT 0x210 | ||
| 48 | #define CSR_BUS_MANAGER_ID 0x21c | ||
| 49 | #define CSR_BANDWIDTH_AVAILABLE 0x220 | ||
| 50 | #define CSR_CHANNELS_AVAILABLE 0x224 | ||
| 51 | #define CSR_CHANNELS_AVAILABLE_HI 0x224 | ||
| 52 | #define CSR_CHANNELS_AVAILABLE_LO 0x228 | ||
| 53 | #define CSR_BROADCAST_CHANNEL 0x234 | ||
| 54 | #define CSR_CONFIG_ROM 0x400 | ||
| 55 | #define CSR_CONFIG_ROM_END 0x800 | ||
| 56 | #define CSR_FCP_COMMAND 0xB00 | ||
| 57 | #define CSR_FCP_RESPONSE 0xD00 | ||
| 58 | #define CSR_FCP_END 0xF00 | ||
| 59 | #define CSR_TOPOLOGY_MAP 0x1000 | ||
| 60 | #define CSR_TOPOLOGY_MAP_END 0x1400 | ||
| 61 | #define CSR_SPEED_MAP 0x2000 | ||
| 62 | #define CSR_SPEED_MAP_END 0x3000 | ||
| 63 | |||
| 64 | #define CSR_OFFSET 0x40 | ||
| 65 | #define CSR_LEAF 0x80 | ||
| 66 | #define CSR_DIRECTORY 0xc0 | ||
| 67 | |||
| 68 | #define CSR_DESCRIPTOR 0x01 | ||
| 69 | #define CSR_VENDOR 0x03 | ||
| 70 | #define CSR_HARDWARE_VERSION 0x04 | ||
| 71 | #define CSR_NODE_CAPABILITIES 0x0c | ||
| 72 | #define CSR_UNIT 0x11 | ||
| 73 | #define CSR_SPECIFIER_ID 0x12 | ||
| 74 | #define CSR_VERSION 0x13 | ||
| 75 | #define CSR_DEPENDENT_INFO 0x14 | ||
| 76 | #define CSR_MODEL 0x17 | ||
| 77 | #define CSR_INSTANCE 0x18 | ||
| 78 | #define CSR_DIRECTORY_ID 0x20 | ||
| 79 | |||
| 80 | struct fw_csr_iterator { | ||
| 81 | u32 *p; | ||
| 82 | u32 *end; | ||
| 83 | }; | ||
| 84 | |||
| 85 | void fw_csr_iterator_init(struct fw_csr_iterator *ci, u32 *p); | ||
| 86 | int fw_csr_iterator_next(struct fw_csr_iterator *ci, int *key, int *value); | ||
| 87 | |||
| 88 | extern struct bus_type fw_bus_type; | ||
| 89 | |||
| 90 | struct fw_card_driver; | ||
| 91 | struct fw_node; | ||
| 92 | |||
| 93 | struct fw_card { | ||
| 94 | const struct fw_card_driver *driver; | ||
| 95 | struct device *device; | ||
| 96 | struct kref kref; | ||
| 97 | struct completion done; | ||
| 98 | |||
| 99 | int node_id; | ||
| 100 | int generation; | ||
| 101 | int current_tlabel; | ||
| 102 | u64 tlabel_mask; | ||
| 103 | struct list_head transaction_list; | ||
| 104 | struct timer_list flush_timer; | ||
| 105 | unsigned long reset_jiffies; | ||
| 106 | |||
| 107 | unsigned long long guid; | ||
| 108 | unsigned max_receive; | ||
| 109 | int link_speed; | ||
| 110 | int config_rom_generation; | ||
| 111 | |||
| 112 | spinlock_t lock; /* Take this lock when handling the lists in | ||
| 113 | * this struct. */ | ||
| 114 | struct fw_node *local_node; | ||
| 115 | struct fw_node *root_node; | ||
| 116 | struct fw_node *irm_node; | ||
| 117 | u8 color; /* must be u8 to match the definition in struct fw_node */ | ||
| 118 | int gap_count; | ||
| 119 | bool beta_repeaters_present; | ||
| 120 | |||
| 121 | int index; | ||
| 122 | |||
| 123 | struct list_head link; | ||
| 124 | |||
| 125 | /* Work struct for BM duties. */ | ||
| 126 | struct delayed_work work; | ||
| 127 | int bm_retries; | ||
| 128 | int bm_generation; | ||
| 129 | |||
| 130 | bool broadcast_channel_allocated; | ||
| 131 | u32 broadcast_channel; | ||
| 132 | u32 topology_map[(CSR_TOPOLOGY_MAP_END - CSR_TOPOLOGY_MAP) / 4]; | ||
| 133 | }; | ||
| 134 | |||
| 135 | static inline struct fw_card *fw_card_get(struct fw_card *card) | ||
| 136 | { | ||
| 137 | kref_get(&card->kref); | ||
| 138 | |||
| 139 | return card; | ||
| 140 | } | ||
| 141 | |||
| 142 | void fw_card_release(struct kref *kref); | ||
| 143 | |||
| 144 | static inline void fw_card_put(struct fw_card *card) | ||
| 145 | { | ||
| 146 | kref_put(&card->kref, fw_card_release); | ||
| 147 | } | ||
| 148 | |||
| 149 | struct fw_attribute_group { | ||
| 150 | struct attribute_group *groups[2]; | ||
| 151 | struct attribute_group group; | ||
| 152 | struct attribute *attrs[12]; | ||
| 153 | }; | ||
| 154 | |||
| 155 | enum fw_device_state { | ||
| 156 | FW_DEVICE_INITIALIZING, | ||
| 157 | FW_DEVICE_RUNNING, | ||
| 158 | FW_DEVICE_GONE, | ||
| 159 | FW_DEVICE_SHUTDOWN, | ||
| 160 | }; | ||
| 161 | |||
| 162 | /* | ||
| 163 | * Note, fw_device.generation always has to be read before fw_device.node_id. | ||
| 164 | * Use SMP memory barriers to ensure this. Otherwise requests will be sent | ||
| 165 | * to an outdated node_id if the generation was updated in the meantime due | ||
| 166 | * to a bus reset. | ||
| 167 | * | ||
| 168 | * Likewise, fw-core will take care to update .node_id before .generation so | ||
| 169 | * that whenever fw_device.generation is current WRT the actual bus generation, | ||
| 170 | * fw_device.node_id is guaranteed to be current too. | ||
| 171 | * | ||
| 172 | * The same applies to fw_device.card->node_id vs. fw_device.generation. | ||
| 173 | * | ||
| 174 | * fw_device.config_rom and fw_device.config_rom_length may be accessed during | ||
| 175 | * the lifetime of any fw_unit belonging to the fw_device, before device_del() | ||
| 176 | * was called on the last fw_unit. Alternatively, they may be accessed while | ||
| 177 | * holding fw_device_rwsem. | ||
| 178 | */ | ||
| 179 | struct fw_device { | ||
| 180 | atomic_t state; | ||
| 181 | struct fw_node *node; | ||
| 182 | int node_id; | ||
| 183 | int generation; | ||
| 184 | unsigned max_speed; | ||
| 185 | struct fw_card *card; | ||
| 186 | struct device device; | ||
| 187 | |||
| 188 | struct mutex client_list_mutex; | ||
| 189 | struct list_head client_list; | ||
| 190 | |||
| 191 | u32 *config_rom; | ||
| 192 | size_t config_rom_length; | ||
| 193 | int config_rom_retries; | ||
| 194 | unsigned is_local:1; | ||
| 195 | unsigned max_rec:4; | ||
| 196 | unsigned cmc:1; | ||
| 197 | unsigned irmc:1; | ||
| 198 | unsigned bc_implemented:2; | ||
| 199 | |||
| 200 | struct delayed_work work; | ||
| 201 | struct fw_attribute_group attribute_group; | ||
| 202 | }; | ||
| 203 | |||
| 204 | static inline struct fw_device *fw_device(struct device *dev) | ||
| 205 | { | ||
| 206 | return container_of(dev, struct fw_device, device); | ||
| 207 | } | ||
| 208 | |||
| 209 | static inline int fw_device_is_shutdown(struct fw_device *device) | ||
| 210 | { | ||
| 211 | return atomic_read(&device->state) == FW_DEVICE_SHUTDOWN; | ||
| 212 | } | ||
| 213 | |||
| 214 | static inline struct fw_device *fw_device_get(struct fw_device *device) | ||
| 215 | { | ||
| 216 | get_device(&device->device); | ||
| 217 | |||
| 218 | return device; | ||
| 219 | } | ||
| 220 | |||
| 221 | static inline void fw_device_put(struct fw_device *device) | ||
| 222 | { | ||
| 223 | put_device(&device->device); | ||
| 224 | } | ||
| 225 | |||
| 226 | int fw_device_enable_phys_dma(struct fw_device *device); | ||
| 227 | |||
| 228 | /* | ||
| 229 | * fw_unit.directory must not be accessed after device_del(&fw_unit.device). | ||
| 230 | */ | ||
| 231 | struct fw_unit { | ||
| 232 | struct device device; | ||
| 233 | u32 *directory; | ||
| 234 | struct fw_attribute_group attribute_group; | ||
| 235 | }; | ||
| 236 | |||
| 237 | static inline struct fw_unit *fw_unit(struct device *dev) | ||
| 238 | { | ||
| 239 | return container_of(dev, struct fw_unit, device); | ||
| 240 | } | ||
| 241 | |||
| 242 | static inline struct fw_unit *fw_unit_get(struct fw_unit *unit) | ||
| 243 | { | ||
| 244 | get_device(&unit->device); | ||
| 245 | |||
| 246 | return unit; | ||
| 247 | } | ||
| 248 | |||
| 249 | static inline void fw_unit_put(struct fw_unit *unit) | ||
| 250 | { | ||
| 251 | put_device(&unit->device); | ||
| 252 | } | ||
| 253 | |||
| 254 | static inline struct fw_device *fw_parent_device(struct fw_unit *unit) | ||
| 255 | { | ||
| 256 | return fw_device(unit->device.parent); | ||
| 257 | } | ||
| 258 | |||
| 259 | struct ieee1394_device_id; | ||
| 260 | |||
| 261 | struct fw_driver { | ||
| 262 | struct device_driver driver; | ||
| 263 | /* Called when the parent device sits through a bus reset. */ | ||
| 264 | void (*update)(struct fw_unit *unit); | ||
| 265 | const struct ieee1394_device_id *id_table; | ||
| 266 | }; | ||
| 267 | |||
| 268 | struct fw_packet; | ||
| 269 | struct fw_request; | ||
| 270 | |||
| 271 | typedef void (*fw_packet_callback_t)(struct fw_packet *packet, | ||
| 272 | struct fw_card *card, int status); | ||
| 273 | typedef void (*fw_transaction_callback_t)(struct fw_card *card, int rcode, | ||
| 274 | void *data, size_t length, | ||
| 275 | void *callback_data); | ||
| 276 | /* | ||
| 277 | * Important note: The callback must guarantee that either fw_send_response() | ||
| 278 | * or kfree() is called on the @request. | ||
| 279 | */ | ||
| 280 | typedef void (*fw_address_callback_t)(struct fw_card *card, | ||
| 281 | struct fw_request *request, | ||
| 282 | int tcode, int destination, int source, | ||
| 283 | int generation, int speed, | ||
| 284 | unsigned long long offset, | ||
| 285 | void *data, size_t length, | ||
| 286 | void *callback_data); | ||
| 287 | |||
| 288 | struct fw_packet { | ||
| 289 | int speed; | ||
| 290 | int generation; | ||
| 291 | u32 header[4]; | ||
| 292 | size_t header_length; | ||
| 293 | void *payload; | ||
| 294 | size_t payload_length; | ||
| 295 | dma_addr_t payload_bus; | ||
| 296 | u32 timestamp; | ||
| 297 | |||
| 298 | /* | ||
| 299 | * This callback is called when the packet transmission has | ||
| 300 | * completed; for successful transmission, the status code is | ||
| 301 | * the ack received from the destination, otherwise it's a | ||
| 302 | * negative errno: ENOMEM, ESTALE, ETIMEDOUT, ENODEV, EIO. | ||
| 303 | * The callback can be called from tasklet context and thus | ||
| 304 | * must never block. | ||
| 305 | */ | ||
| 306 | fw_packet_callback_t callback; | ||
| 307 | int ack; | ||
| 308 | struct list_head link; | ||
| 309 | void *driver_data; | ||
| 310 | }; | ||
| 311 | |||
| 312 | struct fw_transaction { | ||
| 313 | int node_id; /* The generation is implied; it is always the current. */ | ||
| 314 | int tlabel; | ||
| 315 | int timestamp; | ||
| 316 | struct list_head link; | ||
| 317 | |||
| 318 | struct fw_packet packet; | ||
| 319 | |||
| 320 | /* | ||
| 321 | * The data passed to the callback is valid only during the | ||
| 322 | * callback. | ||
| 323 | */ | ||
| 324 | fw_transaction_callback_t callback; | ||
| 325 | void *callback_data; | ||
| 326 | }; | ||
| 327 | |||
| 328 | struct fw_address_handler { | ||
| 329 | u64 offset; | ||
| 330 | size_t length; | ||
| 331 | fw_address_callback_t address_callback; | ||
| 332 | void *callback_data; | ||
| 333 | struct list_head link; | ||
| 334 | }; | ||
| 335 | |||
| 336 | struct fw_address_region { | ||
| 337 | u64 start; | ||
| 338 | u64 end; | ||
| 339 | }; | ||
| 340 | |||
| 341 | extern const struct fw_address_region fw_high_memory_region; | ||
| 342 | |||
| 343 | int fw_core_add_address_handler(struct fw_address_handler *handler, | ||
| 344 | const struct fw_address_region *region); | ||
| 345 | void fw_core_remove_address_handler(struct fw_address_handler *handler); | ||
| 346 | void fw_send_response(struct fw_card *card, | ||
| 347 | struct fw_request *request, int rcode); | ||
| 348 | void fw_send_request(struct fw_card *card, struct fw_transaction *t, | ||
| 349 | int tcode, int destination_id, int generation, int speed, | ||
| 350 | unsigned long long offset, void *payload, size_t length, | ||
| 351 | fw_transaction_callback_t callback, void *callback_data); | ||
| 352 | int fw_cancel_transaction(struct fw_card *card, | ||
| 353 | struct fw_transaction *transaction); | ||
| 354 | int fw_run_transaction(struct fw_card *card, int tcode, int destination_id, | ||
| 355 | int generation, int speed, unsigned long long offset, | ||
| 356 | void *payload, size_t length); | ||
| 357 | |||
| 358 | #endif /* _LINUX_FIREWIRE_H */ | ||
diff --git a/include/linux/firmware-map.h b/include/linux/firmware-map.h index cca686b39123..875451f1373a 100644 --- a/include/linux/firmware-map.h +++ b/include/linux/firmware-map.h | |||
| @@ -24,21 +24,17 @@ | |||
| 24 | */ | 24 | */ |
| 25 | #ifdef CONFIG_FIRMWARE_MEMMAP | 25 | #ifdef CONFIG_FIRMWARE_MEMMAP |
| 26 | 26 | ||
| 27 | int firmware_map_add(resource_size_t start, resource_size_t end, | 27 | int firmware_map_add(u64 start, u64 end, const char *type); |
| 28 | const char *type); | 28 | int firmware_map_add_early(u64 start, u64 end, const char *type); |
| 29 | int firmware_map_add_early(resource_size_t start, resource_size_t end, | ||
| 30 | const char *type); | ||
| 31 | 29 | ||
| 32 | #else /* CONFIG_FIRMWARE_MEMMAP */ | 30 | #else /* CONFIG_FIRMWARE_MEMMAP */ |
| 33 | 31 | ||
| 34 | static inline int firmware_map_add(resource_size_t start, resource_size_t end, | 32 | static inline int firmware_map_add(u64 start, u64 end, const char *type) |
| 35 | const char *type) | ||
| 36 | { | 33 | { |
| 37 | return 0; | 34 | return 0; |
| 38 | } | 35 | } |
| 39 | 36 | ||
| 40 | static inline int firmware_map_add_early(resource_size_t start, | 37 | static inline int firmware_map_add_early(u64 start, u64 end, const char *type) |
| 41 | resource_size_t end, const char *type) | ||
| 42 | { | 38 | { |
| 43 | return 0; | 39 | return 0; |
| 44 | } | 40 | } |
diff --git a/include/linux/firmware.h b/include/linux/firmware.h index c8ecf5b2a207..d31544628436 100644 --- a/include/linux/firmware.h +++ b/include/linux/firmware.h | |||
| @@ -5,7 +5,6 @@ | |||
| 5 | #include <linux/types.h> | 5 | #include <linux/types.h> |
| 6 | #include <linux/compiler.h> | 6 | #include <linux/compiler.h> |
| 7 | 7 | ||
| 8 | #define FIRMWARE_NAME_MAX 30 | ||
| 9 | #define FW_ACTION_NOHOTPLUG 0 | 8 | #define FW_ACTION_NOHOTPLUG 0 |
| 10 | #define FW_ACTION_HOTPLUG 1 | 9 | #define FW_ACTION_HOTPLUG 1 |
| 11 | 10 | ||
diff --git a/include/linux/fs.h b/include/linux/fs.h index ede84fa7da5d..74a57938c880 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -879,7 +879,7 @@ struct file_ra_state { | |||
| 879 | there are only # of pages ahead */ | 879 | there are only # of pages ahead */ |
| 880 | 880 | ||
| 881 | unsigned int ra_pages; /* Maximum readahead window */ | 881 | unsigned int ra_pages; /* Maximum readahead window */ |
| 882 | int mmap_miss; /* Cache miss stat for mmap accesses */ | 882 | unsigned int mmap_miss; /* Cache miss stat for mmap accesses */ |
| 883 | loff_t prev_pos; /* Cache last read() position */ | 883 | loff_t prev_pos; /* Cache last read() position */ |
| 884 | }; | 884 | }; |
| 885 | 885 | ||
| @@ -1919,8 +1919,9 @@ extern void __init vfs_caches_init(unsigned long); | |||
| 1919 | 1919 | ||
| 1920 | extern struct kmem_cache *names_cachep; | 1920 | extern struct kmem_cache *names_cachep; |
| 1921 | 1921 | ||
| 1922 | #define __getname() kmem_cache_alloc(names_cachep, GFP_KERNEL) | 1922 | #define __getname_gfp(gfp) kmem_cache_alloc(names_cachep, (gfp)) |
| 1923 | #define __putname(name) kmem_cache_free(names_cachep, (void *)(name)) | 1923 | #define __getname() __getname_gfp(GFP_KERNEL) |
| 1924 | #define __putname(name) kmem_cache_free(names_cachep, (void *)(name)) | ||
| 1924 | #ifndef CONFIG_AUDITSYSCALL | 1925 | #ifndef CONFIG_AUDITSYSCALL |
| 1925 | #define putname(name) __putname(name) | 1926 | #define putname(name) __putname(name) |
| 1926 | #else | 1927 | #else |
| @@ -2036,9 +2037,6 @@ extern int __invalidate_device(struct block_device *); | |||
| 2036 | extern int invalidate_partition(struct gendisk *, int); | 2037 | extern int invalidate_partition(struct gendisk *, int); |
| 2037 | #endif | 2038 | #endif |
| 2038 | extern int invalidate_inodes(struct super_block *); | 2039 | extern int invalidate_inodes(struct super_block *); |
| 2039 | unsigned long __invalidate_mapping_pages(struct address_space *mapping, | ||
| 2040 | pgoff_t start, pgoff_t end, | ||
| 2041 | bool be_atomic); | ||
| 2042 | unsigned long invalidate_mapping_pages(struct address_space *mapping, | 2040 | unsigned long invalidate_mapping_pages(struct address_space *mapping, |
| 2043 | pgoff_t start, pgoff_t end); | 2041 | pgoff_t start, pgoff_t end); |
| 2044 | 2042 | ||
diff --git a/include/linux/fs_enet_pd.h b/include/linux/fs_enet_pd.h index 8300cab30f9a..51b793466ff3 100644 --- a/include/linux/fs_enet_pd.h +++ b/include/linux/fs_enet_pd.h | |||
| @@ -17,6 +17,7 @@ | |||
| 17 | #define FS_ENET_PD_H | 17 | #define FS_ENET_PD_H |
| 18 | 18 | ||
| 19 | #include <linux/string.h> | 19 | #include <linux/string.h> |
| 20 | #include <linux/of_mdio.h> | ||
| 20 | #include <asm/types.h> | 21 | #include <asm/types.h> |
| 21 | 22 | ||
| 22 | #define FS_ENET_NAME "fs_enet" | 23 | #define FS_ENET_NAME "fs_enet" |
| @@ -130,10 +131,7 @@ struct fs_platform_info { | |||
| 130 | 131 | ||
| 131 | u32 device_flags; | 132 | u32 device_flags; |
| 132 | 133 | ||
| 133 | int phy_addr; /* the phy address (-1 no phy) */ | 134 | struct device_node *phy_node; |
| 134 | char bus_id[16]; | ||
| 135 | int phy_irq; /* the phy irq (if it exists) */ | ||
| 136 | |||
| 137 | const struct fs_mii_bus_info *bus_info; | 135 | const struct fs_mii_bus_info *bus_info; |
| 138 | 136 | ||
| 139 | int rx_ring, tx_ring; /* number of buffers on rx */ | 137 | int rx_ring, tx_ring; /* number of buffers on rx */ |
diff --git a/include/linux/genhd.h b/include/linux/genhd.h index 7cbd38d363a2..45fc320a53c6 100644 --- a/include/linux/genhd.h +++ b/include/linux/genhd.h | |||
| @@ -142,7 +142,7 @@ struct gendisk { | |||
| 142 | * disks that can't be partitioned. */ | 142 | * disks that can't be partitioned. */ |
| 143 | 143 | ||
| 144 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ | 144 | char disk_name[DISK_NAME_LEN]; /* name of major driver */ |
| 145 | 145 | char *(*nodename)(struct gendisk *gd); | |
| 146 | /* Array of pointers to partitions indexed by partno. | 146 | /* Array of pointers to partitions indexed by partno. |
| 147 | * Protected with matching bdev lock but stat and other | 147 | * Protected with matching bdev lock but stat and other |
| 148 | * non-critical accesses use RCU. Always access through | 148 | * non-critical accesses use RCU. Always access through |
diff --git a/include/linux/gfp.h b/include/linux/gfp.h index 3760e7c5de02..cfdb35d71bca 100644 --- a/include/linux/gfp.h +++ b/include/linux/gfp.h | |||
| @@ -5,6 +5,7 @@ | |||
| 5 | #include <linux/stddef.h> | 5 | #include <linux/stddef.h> |
| 6 | #include <linux/linkage.h> | 6 | #include <linux/linkage.h> |
| 7 | #include <linux/topology.h> | 7 | #include <linux/topology.h> |
| 8 | #include <linux/mmdebug.h> | ||
| 8 | 9 | ||
| 9 | struct vm_area_struct; | 10 | struct vm_area_struct; |
| 10 | 11 | ||
| @@ -20,7 +21,8 @@ struct vm_area_struct; | |||
| 20 | #define __GFP_DMA ((__force gfp_t)0x01u) | 21 | #define __GFP_DMA ((__force gfp_t)0x01u) |
| 21 | #define __GFP_HIGHMEM ((__force gfp_t)0x02u) | 22 | #define __GFP_HIGHMEM ((__force gfp_t)0x02u) |
| 22 | #define __GFP_DMA32 ((__force gfp_t)0x04u) | 23 | #define __GFP_DMA32 ((__force gfp_t)0x04u) |
| 23 | 24 | #define __GFP_MOVABLE ((__force gfp_t)0x08u) /* Page is movable */ | |
| 25 | #define GFP_ZONEMASK (__GFP_DMA|__GFP_HIGHMEM|__GFP_DMA32|__GFP_MOVABLE) | ||
| 24 | /* | 26 | /* |
| 25 | * Action modifiers - doesn't change the zoning | 27 | * Action modifiers - doesn't change the zoning |
| 26 | * | 28 | * |
| @@ -50,9 +52,20 @@ struct vm_area_struct; | |||
| 50 | #define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ | 52 | #define __GFP_HARDWALL ((__force gfp_t)0x20000u) /* Enforce hardwall cpuset memory allocs */ |
| 51 | #define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */ | 53 | #define __GFP_THISNODE ((__force gfp_t)0x40000u)/* No fallback, no policies */ |
| 52 | #define __GFP_RECLAIMABLE ((__force gfp_t)0x80000u) /* Page is reclaimable */ | 54 | #define __GFP_RECLAIMABLE ((__force gfp_t)0x80000u) /* Page is reclaimable */ |
| 53 | #define __GFP_MOVABLE ((__force gfp_t)0x100000u) /* Page is movable */ | ||
| 54 | 55 | ||
| 55 | #define __GFP_BITS_SHIFT 21 /* Room for 21 __GFP_FOO bits */ | 56 | #ifdef CONFIG_KMEMCHECK |
| 57 | #define __GFP_NOTRACK ((__force gfp_t)0x200000u) /* Don't track with kmemcheck */ | ||
| 58 | #else | ||
| 59 | #define __GFP_NOTRACK ((__force gfp_t)0) | ||
| 60 | #endif | ||
| 61 | |||
| 62 | /* | ||
| 63 | * This may seem redundant, but it's a way of annotating false positives vs. | ||
| 64 | * allocations that simply cannot be supported (e.g. page tables). | ||
| 65 | */ | ||
| 66 | #define __GFP_NOTRACK_FALSE_POSITIVE (__GFP_NOTRACK) | ||
| 67 | |||
| 68 | #define __GFP_BITS_SHIFT 22 /* Room for 22 __GFP_FOO bits */ | ||
| 56 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) | 69 | #define __GFP_BITS_MASK ((__force gfp_t)((1 << __GFP_BITS_SHIFT) - 1)) |
| 57 | 70 | ||
| 58 | /* This equals 0, but use constants in case they ever change */ | 71 | /* This equals 0, but use constants in case they ever change */ |
| @@ -115,24 +128,105 @@ static inline int allocflags_to_migratetype(gfp_t gfp_flags) | |||
| 115 | ((gfp_flags & __GFP_RECLAIMABLE) != 0); | 128 | ((gfp_flags & __GFP_RECLAIMABLE) != 0); |
| 116 | } | 129 | } |
| 117 | 130 | ||
| 118 | static inline enum zone_type gfp_zone(gfp_t flags) | 131 | #ifdef CONFIG_HIGHMEM |
| 119 | { | 132 | #define OPT_ZONE_HIGHMEM ZONE_HIGHMEM |
| 133 | #else | ||
| 134 | #define OPT_ZONE_HIGHMEM ZONE_NORMAL | ||
| 135 | #endif | ||
| 136 | |||
| 120 | #ifdef CONFIG_ZONE_DMA | 137 | #ifdef CONFIG_ZONE_DMA |
| 121 | if (flags & __GFP_DMA) | 138 | #define OPT_ZONE_DMA ZONE_DMA |
| 122 | return ZONE_DMA; | 139 | #else |
| 140 | #define OPT_ZONE_DMA ZONE_NORMAL | ||
| 123 | #endif | 141 | #endif |
| 142 | |||
| 124 | #ifdef CONFIG_ZONE_DMA32 | 143 | #ifdef CONFIG_ZONE_DMA32 |
| 125 | if (flags & __GFP_DMA32) | 144 | #define OPT_ZONE_DMA32 ZONE_DMA32 |
| 126 | return ZONE_DMA32; | 145 | #else |
| 146 | #define OPT_ZONE_DMA32 ZONE_NORMAL | ||
| 127 | #endif | 147 | #endif |
| 128 | if ((flags & (__GFP_HIGHMEM | __GFP_MOVABLE)) == | 148 | |
| 129 | (__GFP_HIGHMEM | __GFP_MOVABLE)) | 149 | /* |
| 130 | return ZONE_MOVABLE; | 150 | * GFP_ZONE_TABLE is a word size bitstring that is used for looking up the |
| 131 | #ifdef CONFIG_HIGHMEM | 151 | * zone to use given the lowest 4 bits of gfp_t. Entries are ZONE_SHIFT long |
| 132 | if (flags & __GFP_HIGHMEM) | 152 | * and there are 16 of them to cover all possible combinations of |
| 133 | return ZONE_HIGHMEM; | 153 | * __GFP_DMA, __GFP_DMA32, __GFP_MOVABLE and __GFP_HIGHMEM |
| 154 | * | ||
| 155 | * The zone fallback order is MOVABLE=>HIGHMEM=>NORMAL=>DMA32=>DMA. | ||
| 156 | * But GFP_MOVABLE is not only a zone specifier but also an allocation | ||
| 157 | * policy. Therefore __GFP_MOVABLE plus another zone selector is valid. | ||
| 158 | * Only 1bit of the lowest 3 bit (DMA,DMA32,HIGHMEM) can be set to "1". | ||
| 159 | * | ||
| 160 | * bit result | ||
| 161 | * ================= | ||
| 162 | * 0x0 => NORMAL | ||
| 163 | * 0x1 => DMA or NORMAL | ||
| 164 | * 0x2 => HIGHMEM or NORMAL | ||
| 165 | * 0x3 => BAD (DMA+HIGHMEM) | ||
| 166 | * 0x4 => DMA32 or DMA or NORMAL | ||
| 167 | * 0x5 => BAD (DMA+DMA32) | ||
| 168 | * 0x6 => BAD (HIGHMEM+DMA32) | ||
| 169 | * 0x7 => BAD (HIGHMEM+DMA32+DMA) | ||
| 170 | * 0x8 => NORMAL (MOVABLE+0) | ||
| 171 | * 0x9 => DMA or NORMAL (MOVABLE+DMA) | ||
| 172 | * 0xa => MOVABLE (Movable is valid only if HIGHMEM is set too) | ||
| 173 | * 0xb => BAD (MOVABLE+HIGHMEM+DMA) | ||
| 174 | * 0xc => DMA32 (MOVABLE+HIGHMEM+DMA32) | ||
| 175 | * 0xd => BAD (MOVABLE+DMA32+DMA) | ||
| 176 | * 0xe => BAD (MOVABLE+DMA32+HIGHMEM) | ||
| 177 | * 0xf => BAD (MOVABLE+DMA32+HIGHMEM+DMA) | ||
| 178 | * | ||
| 179 | * ZONES_SHIFT must be <= 2 on 32 bit platforms. | ||
| 180 | */ | ||
| 181 | |||
| 182 | #if 16 * ZONES_SHIFT > BITS_PER_LONG | ||
| 183 | #error ZONES_SHIFT too large to create GFP_ZONE_TABLE integer | ||
| 184 | #endif | ||
| 185 | |||
| 186 | #define GFP_ZONE_TABLE ( \ | ||
| 187 | (ZONE_NORMAL << 0 * ZONES_SHIFT) \ | ||
| 188 | | (OPT_ZONE_DMA << __GFP_DMA * ZONES_SHIFT) \ | ||
| 189 | | (OPT_ZONE_HIGHMEM << __GFP_HIGHMEM * ZONES_SHIFT) \ | ||
| 190 | | (OPT_ZONE_DMA32 << __GFP_DMA32 * ZONES_SHIFT) \ | ||
| 191 | | (ZONE_NORMAL << __GFP_MOVABLE * ZONES_SHIFT) \ | ||
| 192 | | (OPT_ZONE_DMA << (__GFP_MOVABLE | __GFP_DMA) * ZONES_SHIFT) \ | ||
| 193 | | (ZONE_MOVABLE << (__GFP_MOVABLE | __GFP_HIGHMEM) * ZONES_SHIFT)\ | ||
| 194 | | (OPT_ZONE_DMA32 << (__GFP_MOVABLE | __GFP_DMA32) * ZONES_SHIFT)\ | ||
| 195 | ) | ||
| 196 | |||
| 197 | /* | ||
| 198 | * GFP_ZONE_BAD is a bitmap for all combination of __GFP_DMA, __GFP_DMA32 | ||
| 199 | * __GFP_HIGHMEM and __GFP_MOVABLE that are not permitted. One flag per | ||
| 200 | * entry starting with bit 0. Bit is set if the combination is not | ||
| 201 | * allowed. | ||
| 202 | */ | ||
| 203 | #define GFP_ZONE_BAD ( \ | ||
| 204 | 1 << (__GFP_DMA | __GFP_HIGHMEM) \ | ||
| 205 | | 1 << (__GFP_DMA | __GFP_DMA32) \ | ||
| 206 | | 1 << (__GFP_DMA32 | __GFP_HIGHMEM) \ | ||
| 207 | | 1 << (__GFP_DMA | __GFP_DMA32 | __GFP_HIGHMEM) \ | ||
| 208 | | 1 << (__GFP_MOVABLE | __GFP_HIGHMEM | __GFP_DMA) \ | ||
| 209 | | 1 << (__GFP_MOVABLE | __GFP_DMA32 | __GFP_DMA) \ | ||
| 210 | | 1 << (__GFP_MOVABLE | __GFP_DMA32 | __GFP_HIGHMEM) \ | ||
| 211 | | 1 << (__GFP_MOVABLE | __GFP_DMA32 | __GFP_DMA | __GFP_HIGHMEM)\ | ||
| 212 | ) | ||
| 213 | |||
| 214 | static inline enum zone_type gfp_zone(gfp_t flags) | ||
| 215 | { | ||
| 216 | enum zone_type z; | ||
| 217 | int bit = flags & GFP_ZONEMASK; | ||
| 218 | |||
| 219 | z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & | ||
| 220 | ((1 << ZONES_SHIFT) - 1); | ||
| 221 | |||
| 222 | if (__builtin_constant_p(bit)) | ||
| 223 | BUILD_BUG_ON((GFP_ZONE_BAD >> bit) & 1); | ||
| 224 | else { | ||
| 225 | #ifdef CONFIG_DEBUG_VM | ||
| 226 | BUG_ON((GFP_ZONE_BAD >> bit) & 1); | ||
| 134 | #endif | 227 | #endif |
| 135 | return ZONE_NORMAL; | 228 | } |
| 229 | return z; | ||
| 136 | } | 230 | } |
| 137 | 231 | ||
| 138 | /* | 232 | /* |
| @@ -172,30 +266,19 @@ static inline void arch_alloc_page(struct page *page, int order) { } | |||
| 172 | #endif | 266 | #endif |
| 173 | 267 | ||
| 174 | struct page * | 268 | struct page * |
| 175 | __alloc_pages_internal(gfp_t gfp_mask, unsigned int order, | 269 | __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, |
| 176 | struct zonelist *zonelist, nodemask_t *nodemask); | 270 | struct zonelist *zonelist, nodemask_t *nodemask); |
| 177 | 271 | ||
| 178 | static inline struct page * | 272 | static inline struct page * |
| 179 | __alloc_pages(gfp_t gfp_mask, unsigned int order, | 273 | __alloc_pages(gfp_t gfp_mask, unsigned int order, |
| 180 | struct zonelist *zonelist) | 274 | struct zonelist *zonelist) |
| 181 | { | 275 | { |
| 182 | return __alloc_pages_internal(gfp_mask, order, zonelist, NULL); | 276 | return __alloc_pages_nodemask(gfp_mask, order, zonelist, NULL); |
| 183 | } | 277 | } |
| 184 | 278 | ||
| 185 | static inline struct page * | ||
| 186 | __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order, | ||
| 187 | struct zonelist *zonelist, nodemask_t *nodemask) | ||
| 188 | { | ||
| 189 | return __alloc_pages_internal(gfp_mask, order, zonelist, nodemask); | ||
| 190 | } | ||
| 191 | |||
| 192 | |||
| 193 | static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, | 279 | static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, |
| 194 | unsigned int order) | 280 | unsigned int order) |
| 195 | { | 281 | { |
| 196 | if (unlikely(order >= MAX_ORDER)) | ||
| 197 | return NULL; | ||
| 198 | |||
| 199 | /* Unknown node is current node */ | 282 | /* Unknown node is current node */ |
| 200 | if (nid < 0) | 283 | if (nid < 0) |
| 201 | nid = numa_node_id(); | 284 | nid = numa_node_id(); |
| @@ -203,15 +286,20 @@ static inline struct page *alloc_pages_node(int nid, gfp_t gfp_mask, | |||
| 203 | return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); | 286 | return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); |
| 204 | } | 287 | } |
| 205 | 288 | ||
| 289 | static inline struct page *alloc_pages_exact_node(int nid, gfp_t gfp_mask, | ||
| 290 | unsigned int order) | ||
| 291 | { | ||
| 292 | VM_BUG_ON(nid < 0 || nid >= MAX_NUMNODES); | ||
| 293 | |||
| 294 | return __alloc_pages(gfp_mask, order, node_zonelist(nid, gfp_mask)); | ||
| 295 | } | ||
| 296 | |||
| 206 | #ifdef CONFIG_NUMA | 297 | #ifdef CONFIG_NUMA |
| 207 | extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); | 298 | extern struct page *alloc_pages_current(gfp_t gfp_mask, unsigned order); |
| 208 | 299 | ||
| 209 | static inline struct page * | 300 | static inline struct page * |
| 210 | alloc_pages(gfp_t gfp_mask, unsigned int order) | 301 | alloc_pages(gfp_t gfp_mask, unsigned int order) |
| 211 | { | 302 | { |
| 212 | if (unlikely(order >= MAX_ORDER)) | ||
| 213 | return NULL; | ||
| 214 | |||
| 215 | return alloc_pages_current(gfp_mask, order); | 303 | return alloc_pages_current(gfp_mask, order); |
| 216 | } | 304 | } |
| 217 | extern struct page *alloc_page_vma(gfp_t gfp_mask, | 305 | extern struct page *alloc_page_vma(gfp_t gfp_mask, |
| @@ -248,4 +336,16 @@ void drain_zone_pages(struct zone *zone, struct per_cpu_pages *pcp); | |||
| 248 | void drain_all_pages(void); | 336 | void drain_all_pages(void); |
| 249 | void drain_local_pages(void *dummy); | 337 | void drain_local_pages(void *dummy); |
| 250 | 338 | ||
| 339 | extern bool oom_killer_disabled; | ||
| 340 | |||
| 341 | static inline void oom_killer_disable(void) | ||
| 342 | { | ||
| 343 | oom_killer_disabled = true; | ||
| 344 | } | ||
| 345 | |||
| 346 | static inline void oom_killer_enable(void) | ||
| 347 | { | ||
| 348 | oom_killer_disabled = false; | ||
| 349 | } | ||
| 350 | |||
| 251 | #endif /* __LINUX_GFP_H */ | 351 | #endif /* __LINUX_GFP_H */ |
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 1fcb7126a01f..211ff4497269 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h | |||
| @@ -55,7 +55,9 @@ static inline void *kmap(struct page *page) | |||
| 55 | return page_address(page); | 55 | return page_address(page); |
| 56 | } | 56 | } |
| 57 | 57 | ||
| 58 | #define kunmap(page) do { (void) (page); } while (0) | 58 | static inline void kunmap(struct page *page) |
| 59 | { | ||
| 60 | } | ||
| 59 | 61 | ||
| 60 | static inline void *kmap_atomic(struct page *page, enum km_type idx) | 62 | static inline void *kmap_atomic(struct page *page, enum km_type idx) |
| 61 | { | 63 | { |
diff --git a/include/linux/hrtimer.h b/include/linux/hrtimer.h index 0d2f7c8a33d6..7400900de94a 100644 --- a/include/linux/hrtimer.h +++ b/include/linux/hrtimer.h | |||
| @@ -30,8 +30,11 @@ struct hrtimer_cpu_base; | |||
| 30 | * Mode arguments of xxx_hrtimer functions: | 30 | * Mode arguments of xxx_hrtimer functions: |
| 31 | */ | 31 | */ |
| 32 | enum hrtimer_mode { | 32 | enum hrtimer_mode { |
| 33 | HRTIMER_MODE_ABS, /* Time value is absolute */ | 33 | HRTIMER_MODE_ABS = 0x0, /* Time value is absolute */ |
| 34 | HRTIMER_MODE_REL, /* Time value is relative to now */ | 34 | HRTIMER_MODE_REL = 0x1, /* Time value is relative to now */ |
| 35 | HRTIMER_MODE_PINNED = 0x02, /* Timer is bound to CPU */ | ||
| 36 | HRTIMER_MODE_ABS_PINNED = 0x02, | ||
| 37 | HRTIMER_MODE_REL_PINNED = 0x03, | ||
| 35 | }; | 38 | }; |
| 36 | 39 | ||
| 37 | /* | 40 | /* |
diff --git a/include/linux/hugetlb.h b/include/linux/hugetlb.h index 03be7f29ca01..a05a5ef33391 100644 --- a/include/linux/hugetlb.h +++ b/include/linux/hugetlb.h | |||
| @@ -11,6 +11,8 @@ | |||
| 11 | 11 | ||
| 12 | struct ctl_table; | 12 | struct ctl_table; |
| 13 | 13 | ||
| 14 | int PageHuge(struct page *page); | ||
| 15 | |||
| 14 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) | 16 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) |
| 15 | { | 17 | { |
| 16 | return vma->vm_flags & VM_HUGETLB; | 18 | return vma->vm_flags & VM_HUGETLB; |
| @@ -61,6 +63,11 @@ void hugetlb_change_protection(struct vm_area_struct *vma, | |||
| 61 | 63 | ||
| 62 | #else /* !CONFIG_HUGETLB_PAGE */ | 64 | #else /* !CONFIG_HUGETLB_PAGE */ |
| 63 | 65 | ||
| 66 | static inline int PageHuge(struct page *page) | ||
| 67 | { | ||
| 68 | return 0; | ||
| 69 | } | ||
| 70 | |||
| 64 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) | 71 | static inline int is_vm_hugetlb_page(struct vm_area_struct *vma) |
| 65 | { | 72 | { |
| 66 | return 0; | 73 | return 0; |
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 4b501b48ce86..a9173d5434d1 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
| @@ -493,6 +493,7 @@ struct ieee80211s_hdr { | |||
| 493 | /* Mesh flags */ | 493 | /* Mesh flags */ |
| 494 | #define MESH_FLAGS_AE_A4 0x1 | 494 | #define MESH_FLAGS_AE_A4 0x1 |
| 495 | #define MESH_FLAGS_AE_A5_A6 0x2 | 495 | #define MESH_FLAGS_AE_A5_A6 0x2 |
| 496 | #define MESH_FLAGS_AE 0x3 | ||
| 496 | #define MESH_FLAGS_PS_DEEP 0x4 | 497 | #define MESH_FLAGS_PS_DEEP 0x4 |
| 497 | 498 | ||
| 498 | /** | 499 | /** |
| @@ -540,10 +541,10 @@ struct ieee80211_tim_ie { | |||
| 540 | u8 dtim_period; | 541 | u8 dtim_period; |
| 541 | u8 bitmap_ctrl; | 542 | u8 bitmap_ctrl; |
| 542 | /* variable size: 1 - 251 bytes */ | 543 | /* variable size: 1 - 251 bytes */ |
| 543 | u8 virtual_map[0]; | 544 | u8 virtual_map[1]; |
| 544 | } __attribute__ ((packed)); | 545 | } __attribute__ ((packed)); |
| 545 | 546 | ||
| 546 | #define WLAN_SA_QUERY_TR_ID_LEN 16 | 547 | #define WLAN_SA_QUERY_TR_ID_LEN 2 |
| 547 | 548 | ||
| 548 | struct ieee80211_mgmt { | 549 | struct ieee80211_mgmt { |
| 549 | __le16 frame_control; | 550 | __le16 frame_control; |
| @@ -1068,8 +1069,12 @@ enum ieee80211_category { | |||
| 1068 | WLAN_CATEGORY_DLS = 2, | 1069 | WLAN_CATEGORY_DLS = 2, |
| 1069 | WLAN_CATEGORY_BACK = 3, | 1070 | WLAN_CATEGORY_BACK = 3, |
| 1070 | WLAN_CATEGORY_PUBLIC = 4, | 1071 | WLAN_CATEGORY_PUBLIC = 4, |
| 1072 | WLAN_CATEGORY_HT = 7, | ||
| 1071 | WLAN_CATEGORY_SA_QUERY = 8, | 1073 | WLAN_CATEGORY_SA_QUERY = 8, |
| 1074 | WLAN_CATEGORY_PROTECTED_DUAL_OF_ACTION = 9, | ||
| 1072 | WLAN_CATEGORY_WMM = 17, | 1075 | WLAN_CATEGORY_WMM = 17, |
| 1076 | WLAN_CATEGORY_VENDOR_SPECIFIC_PROTECTED = 126, | ||
| 1077 | WLAN_CATEGORY_VENDOR_SPECIFIC = 127, | ||
| 1073 | }; | 1078 | }; |
| 1074 | 1079 | ||
| 1075 | /* SPECTRUM_MGMT action code */ | 1080 | /* SPECTRUM_MGMT action code */ |
| @@ -1081,6 +1086,15 @@ enum ieee80211_spectrum_mgmt_actioncode { | |||
| 1081 | WLAN_ACTION_SPCT_CHL_SWITCH = 4, | 1086 | WLAN_ACTION_SPCT_CHL_SWITCH = 4, |
| 1082 | }; | 1087 | }; |
| 1083 | 1088 | ||
| 1089 | /* Security key length */ | ||
| 1090 | enum ieee80211_key_len { | ||
| 1091 | WLAN_KEY_LEN_WEP40 = 5, | ||
| 1092 | WLAN_KEY_LEN_WEP104 = 13, | ||
| 1093 | WLAN_KEY_LEN_CCMP = 16, | ||
| 1094 | WLAN_KEY_LEN_TKIP = 32, | ||
| 1095 | WLAN_KEY_LEN_AES_CMAC = 16, | ||
| 1096 | }; | ||
| 1097 | |||
| 1084 | /* | 1098 | /* |
| 1085 | * IEEE 802.11-2007 7.3.2.9 Country information element | 1099 | * IEEE 802.11-2007 7.3.2.9 Country information element |
| 1086 | * | 1100 | * |
| @@ -1261,7 +1275,9 @@ static inline bool ieee80211_is_robust_mgmt_frame(struct ieee80211_hdr *hdr) | |||
| 1261 | if (ieee80211_has_protected(hdr->frame_control)) | 1275 | if (ieee80211_has_protected(hdr->frame_control)) |
| 1262 | return true; | 1276 | return true; |
| 1263 | category = ((u8 *) hdr) + 24; | 1277 | category = ((u8 *) hdr) + 24; |
| 1264 | return *category != WLAN_CATEGORY_PUBLIC; | 1278 | return *category != WLAN_CATEGORY_PUBLIC && |
| 1279 | *category != WLAN_CATEGORY_HT && | ||
| 1280 | *category != WLAN_CATEGORY_VENDOR_SPECIFIC; | ||
| 1265 | } | 1281 | } |
| 1266 | 1282 | ||
| 1267 | return false; | 1283 | return false; |
| @@ -1383,4 +1399,43 @@ static inline int ieee80211_freq_to_ofdm_chan(int s_freq, int freq) | |||
| 1383 | return -1; | 1399 | return -1; |
| 1384 | } | 1400 | } |
| 1385 | 1401 | ||
| 1402 | /** | ||
| 1403 | * ieee80211_tu_to_usec - convert time units (TU) to microseconds | ||
| 1404 | * @tu: the TUs | ||
| 1405 | */ | ||
| 1406 | static inline unsigned long ieee80211_tu_to_usec(unsigned long tu) | ||
| 1407 | { | ||
| 1408 | return 1024 * tu; | ||
| 1409 | } | ||
| 1410 | |||
| 1411 | /** | ||
| 1412 | * ieee80211_check_tim - check if AID bit is set in TIM | ||
| 1413 | * @tim: the TIM IE | ||
| 1414 | * @tim_len: length of the TIM IE | ||
| 1415 | * @aid: the AID to look for | ||
| 1416 | */ | ||
| 1417 | static inline bool ieee80211_check_tim(struct ieee80211_tim_ie *tim, | ||
| 1418 | u8 tim_len, u16 aid) | ||
| 1419 | { | ||
| 1420 | u8 mask; | ||
| 1421 | u8 index, indexn1, indexn2; | ||
| 1422 | |||
| 1423 | if (unlikely(!tim || tim_len < sizeof(*tim))) | ||
| 1424 | return false; | ||
| 1425 | |||
| 1426 | aid &= 0x3fff; | ||
| 1427 | index = aid / 8; | ||
| 1428 | mask = 1 << (aid & 7); | ||
| 1429 | |||
| 1430 | indexn1 = tim->bitmap_ctrl & 0xfe; | ||
| 1431 | indexn2 = tim_len + indexn1 - 4; | ||
| 1432 | |||
| 1433 | if (index < indexn1 || index > indexn2) | ||
| 1434 | return false; | ||
| 1435 | |||
| 1436 | index -= indexn1; | ||
| 1437 | |||
| 1438 | return !!(tim->virtual_map[index] & mask); | ||
| 1439 | } | ||
| 1440 | |||
| 1386 | #endif /* LINUX_IEEE80211_H */ | 1441 | #endif /* LINUX_IEEE80211_H */ |
diff --git a/include/linux/if.h b/include/linux/if.h index 1108f3e099e3..b9a6229f3be7 100644 --- a/include/linux/if.h +++ b/include/linux/if.h | |||
| @@ -67,6 +67,9 @@ | |||
| 67 | #define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */ | 67 | #define IFF_ISATAP 0x80 /* ISATAP interface (RFC4214) */ |
| 68 | #define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */ | 68 | #define IFF_MASTER_ARPMON 0x100 /* bonding master, ARP mon in use */ |
| 69 | #define IFF_WAN_HDLC 0x200 /* WAN HDLC device */ | 69 | #define IFF_WAN_HDLC 0x200 /* WAN HDLC device */ |
| 70 | #define IFF_XMIT_DST_RELEASE 0x400 /* dev_hard_start_xmit() is allowed to | ||
| 71 | * release skb->dst | ||
| 72 | */ | ||
| 70 | 73 | ||
| 71 | #define IF_GET_IFACE 0x0001 /* for querying only */ | 74 | #define IF_GET_IFACE 0x0001 /* for querying only */ |
| 72 | #define IF_GET_PROTO 0x0002 | 75 | #define IF_GET_PROTO 0x0002 |
diff --git a/include/linux/if_arp.h b/include/linux/if_arp.h index 5ff89809a581..b554300ef8bf 100644 --- a/include/linux/if_arp.h +++ b/include/linux/if_arp.h | |||
| @@ -86,6 +86,8 @@ | |||
| 86 | #define ARPHRD_IEEE80211 801 /* IEEE 802.11 */ | 86 | #define ARPHRD_IEEE80211 801 /* IEEE 802.11 */ |
| 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 | ||
| 90 | #define ARPHRD_IEEE802154_PHY 805 | ||
| 89 | 91 | ||
| 90 | #define ARPHRD_PHONET 820 /* PhoNet media type */ | 92 | #define ARPHRD_PHONET 820 /* PhoNet media type */ |
| 91 | #define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */ | 93 | #define ARPHRD_PHONET_PIPE 821 /* PhoNet pipe header */ |
diff --git a/include/linux/if_ether.h b/include/linux/if_ether.h index 60e8934d10b5..ae3a1871413d 100644 --- a/include/linux/if_ether.h +++ b/include/linux/if_ether.h | |||
| @@ -107,6 +107,7 @@ | |||
| 107 | #define ETH_P_DSA 0x001B /* Distributed Switch Arch. */ | 107 | #define ETH_P_DSA 0x001B /* Distributed Switch Arch. */ |
| 108 | #define ETH_P_TRAILER 0x001C /* Trailer switch tagging */ | 108 | #define ETH_P_TRAILER 0x001C /* Trailer switch tagging */ |
| 109 | #define ETH_P_PHONET 0x00F5 /* Nokia Phonet frames */ | 109 | #define ETH_P_PHONET 0x00F5 /* Nokia Phonet frames */ |
| 110 | #define ETH_P_IEEE802154 0x00F6 /* IEEE802.15.4 frame */ | ||
| 110 | 111 | ||
| 111 | /* | 112 | /* |
| 112 | * This is an Ethernet frame header. | 113 | * This is an Ethernet frame header. |
diff --git a/include/linux/if_packet.h b/include/linux/if_packet.h index 18db0668065a..dea7d6b7cf98 100644 --- a/include/linux/if_packet.h +++ b/include/linux/if_packet.h | |||
| @@ -46,6 +46,8 @@ struct sockaddr_ll | |||
| 46 | #define PACKET_VERSION 10 | 46 | #define PACKET_VERSION 10 |
| 47 | #define PACKET_HDRLEN 11 | 47 | #define PACKET_HDRLEN 11 |
| 48 | #define PACKET_RESERVE 12 | 48 | #define PACKET_RESERVE 12 |
| 49 | #define PACKET_TX_RING 13 | ||
| 50 | #define PACKET_LOSS 14 | ||
| 49 | 51 | ||
| 50 | struct tpacket_stats | 52 | struct tpacket_stats |
| 51 | { | 53 | { |
| @@ -63,14 +65,22 @@ struct tpacket_auxdata | |||
| 63 | __u16 tp_vlan_tci; | 65 | __u16 tp_vlan_tci; |
| 64 | }; | 66 | }; |
| 65 | 67 | ||
| 68 | /* Rx ring - header status */ | ||
| 69 | #define TP_STATUS_KERNEL 0x0 | ||
| 70 | #define TP_STATUS_USER 0x1 | ||
| 71 | #define TP_STATUS_COPY 0x2 | ||
| 72 | #define TP_STATUS_LOSING 0x4 | ||
| 73 | #define TP_STATUS_CSUMNOTREADY 0x8 | ||
| 74 | |||
| 75 | /* Tx ring - header status */ | ||
| 76 | #define TP_STATUS_AVAILABLE 0x0 | ||
| 77 | #define TP_STATUS_SEND_REQUEST 0x1 | ||
| 78 | #define TP_STATUS_SENDING 0x2 | ||
| 79 | #define TP_STATUS_WRONG_FORMAT 0x4 | ||
| 80 | |||
| 66 | struct tpacket_hdr | 81 | struct tpacket_hdr |
| 67 | { | 82 | { |
| 68 | unsigned long tp_status; | 83 | unsigned long tp_status; |
| 69 | #define TP_STATUS_KERNEL 0 | ||
| 70 | #define TP_STATUS_USER 1 | ||
| 71 | #define TP_STATUS_COPY 2 | ||
| 72 | #define TP_STATUS_LOSING 4 | ||
| 73 | #define TP_STATUS_CSUMNOTREADY 8 | ||
| 74 | unsigned int tp_len; | 84 | unsigned int tp_len; |
| 75 | unsigned int tp_snaplen; | 85 | unsigned int tp_snaplen; |
| 76 | unsigned short tp_mac; | 86 | unsigned short tp_mac; |
| @@ -135,5 +145,6 @@ struct packet_mreq | |||
| 135 | #define PACKET_MR_MULTICAST 0 | 145 | #define PACKET_MR_MULTICAST 0 |
| 136 | #define PACKET_MR_PROMISC 1 | 146 | #define PACKET_MR_PROMISC 1 |
| 137 | #define PACKET_MR_ALLMULTI 2 | 147 | #define PACKET_MR_ALLMULTI 2 |
| 148 | #define PACKET_MR_UNICAST 3 | ||
| 138 | 149 | ||
| 139 | #endif | 150 | #endif |
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h index 049d6c9428db..915ba5789f0e 100644 --- a/include/linux/if_tun.h +++ b/include/linux/if_tun.h | |||
| @@ -55,6 +55,7 @@ | |||
| 55 | #define IFF_NO_PI 0x1000 | 55 | #define IFF_NO_PI 0x1000 |
| 56 | #define IFF_ONE_QUEUE 0x2000 | 56 | #define IFF_ONE_QUEUE 0x2000 |
| 57 | #define IFF_VNET_HDR 0x4000 | 57 | #define IFF_VNET_HDR 0x4000 |
| 58 | #define IFF_TUN_EXCL 0x8000 | ||
| 58 | 59 | ||
| 59 | /* Features for GSO (TUNSETOFFLOAD). */ | 60 | /* Features for GSO (TUNSETOFFLOAD). */ |
| 60 | #define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */ | 61 | #define TUN_F_CSUM 0x01 /* You can hand me unchecksummed packets. */ |
diff --git a/include/linux/if_tunnel.h b/include/linux/if_tunnel.h index 5a9aae4adb44..5eb9b0f857e0 100644 --- a/include/linux/if_tunnel.h +++ b/include/linux/if_tunnel.h | |||
| @@ -44,7 +44,7 @@ struct ip_tunnel_prl { | |||
| 44 | __u16 flags; | 44 | __u16 flags; |
| 45 | __u16 __reserved; | 45 | __u16 __reserved; |
| 46 | __u32 datalen; | 46 | __u32 datalen; |
| 47 | __u32 __reserved2; | 47 | __u32 rs_delay; |
| 48 | /* data follows */ | 48 | /* data follows */ |
| 49 | }; | 49 | }; |
| 50 | 50 | ||
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index e1ff5b14310e..7ff9af1d0f05 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
| @@ -118,8 +118,7 @@ extern int vlan_hwaccel_do_receive(struct sk_buff *skb); | |||
| 118 | extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, | 118 | extern int vlan_gro_receive(struct napi_struct *napi, struct vlan_group *grp, |
| 119 | unsigned int vlan_tci, struct sk_buff *skb); | 119 | unsigned int vlan_tci, struct sk_buff *skb); |
| 120 | extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, | 120 | extern int vlan_gro_frags(struct napi_struct *napi, struct vlan_group *grp, |
| 121 | unsigned int vlan_tci, | 121 | unsigned int vlan_tci); |
| 122 | struct napi_gro_fraginfo *info); | ||
| 123 | 122 | ||
| 124 | #else | 123 | #else |
| 125 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) | 124 | static inline struct net_device *vlan_dev_real_dev(const struct net_device *dev) |
| @@ -154,8 +153,7 @@ static inline int vlan_gro_receive(struct napi_struct *napi, | |||
| 154 | } | 153 | } |
| 155 | 154 | ||
| 156 | static inline int vlan_gro_frags(struct napi_struct *napi, | 155 | static inline int vlan_gro_frags(struct napi_struct *napi, |
| 157 | struct vlan_group *grp, unsigned int vlan_tci, | 156 | struct vlan_group *grp, unsigned int vlan_tci) |
| 158 | struct napi_gro_fraginfo *info) | ||
| 159 | { | 157 | { |
| 160 | return NET_RX_DROP; | 158 | return NET_RX_DROP; |
| 161 | } | 159 | } |
diff --git a/include/linux/in.h b/include/linux/in.h index d60122a3a088..cf196da04ec9 100644 --- a/include/linux/in.h +++ b/include/linux/in.h | |||
| @@ -107,6 +107,7 @@ struct in_addr { | |||
| 107 | #define MCAST_JOIN_SOURCE_GROUP 46 | 107 | #define MCAST_JOIN_SOURCE_GROUP 46 |
| 108 | #define MCAST_LEAVE_SOURCE_GROUP 47 | 108 | #define MCAST_LEAVE_SOURCE_GROUP 47 |
| 109 | #define MCAST_MSFILTER 48 | 109 | #define MCAST_MSFILTER 48 |
| 110 | #define IP_MULTICAST_ALL 49 | ||
| 110 | 111 | ||
| 111 | #define MCAST_EXCLUDE 0 | 112 | #define MCAST_EXCLUDE 0 |
| 112 | #define MCAST_INCLUDE 1 | 113 | #define MCAST_INCLUDE 1 |
diff --git a/include/linux/init.h b/include/linux/init.h index b2189803f19a..8c2c9989626d 100644 --- a/include/linux/init.h +++ b/include/linux/init.h | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | * sign followed by value, e.g.: | 29 | * sign followed by value, e.g.: |
| 30 | * | 30 | * |
| 31 | * static int init_variable __initdata = 0; | 31 | * static int init_variable __initdata = 0; |
| 32 | * static char linux_logo[] __initdata = { 0x32, 0x36, ... }; | 32 | * static const char linux_logo[] __initconst = { 0x32, 0x36, ... }; |
| 33 | * | 33 | * |
| 34 | * Don't forget to initialize data not at file scope, i.e. within a function, | 34 | * Don't forget to initialize data not at file scope, i.e. within a function, |
| 35 | * as gcc otherwise puts the data into the bss section and not into the init | 35 | * as gcc otherwise puts the data into the bss section and not into the init |
diff --git a/include/linux/init_task.h b/include/linux/init_task.h index 28b1f30601b5..5368fbdc7801 100644 --- a/include/linux/init_task.h +++ b/include/linux/init_task.h | |||
| @@ -15,18 +15,6 @@ | |||
| 15 | extern struct files_struct init_files; | 15 | extern struct files_struct init_files; |
| 16 | extern struct fs_struct init_fs; | 16 | extern struct fs_struct init_fs; |
| 17 | 17 | ||
| 18 | #define INIT_MM(name) \ | ||
| 19 | { \ | ||
| 20 | .mm_rb = RB_ROOT, \ | ||
| 21 | .pgd = swapper_pg_dir, \ | ||
| 22 | .mm_users = ATOMIC_INIT(2), \ | ||
| 23 | .mm_count = ATOMIC_INIT(1), \ | ||
| 24 | .mmap_sem = __RWSEM_INITIALIZER(name.mmap_sem), \ | ||
| 25 | .page_table_lock = __SPIN_LOCK_UNLOCKED(name.page_table_lock), \ | ||
| 26 | .mmlist = LIST_HEAD_INIT(name.mmlist), \ | ||
| 27 | .cpu_vm_mask = CPU_MASK_ALL, \ | ||
| 28 | } | ||
| 29 | |||
| 30 | #define INIT_SIGNALS(sig) { \ | 18 | #define INIT_SIGNALS(sig) { \ |
| 31 | .count = ATOMIC_INIT(1), \ | 19 | .count = ATOMIC_INIT(1), \ |
| 32 | .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ | 20 | .wait_chldexit = __WAIT_QUEUE_HEAD_INITIALIZER(sig.wait_chldexit),\ |
diff --git a/include/linux/interrupt.h b/include/linux/interrupt.h index c41e812e9d5e..2721f07e9354 100644 --- a/include/linux/interrupt.h +++ b/include/linux/interrupt.h | |||
| @@ -472,6 +472,20 @@ static inline void tasklet_hi_schedule(struct tasklet_struct *t) | |||
| 472 | __tasklet_hi_schedule(t); | 472 | __tasklet_hi_schedule(t); |
| 473 | } | 473 | } |
| 474 | 474 | ||
| 475 | extern void __tasklet_hi_schedule_first(struct tasklet_struct *t); | ||
| 476 | |||
| 477 | /* | ||
| 478 | * This version avoids touching any other tasklets. Needed for kmemcheck | ||
| 479 | * in order not to take any page faults while enqueueing this tasklet; | ||
| 480 | * consider VERY carefully whether you really need this or | ||
| 481 | * tasklet_hi_schedule()... | ||
| 482 | */ | ||
| 483 | static inline void tasklet_hi_schedule_first(struct tasklet_struct *t) | ||
| 484 | { | ||
| 485 | if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state)) | ||
| 486 | __tasklet_hi_schedule_first(t); | ||
| 487 | } | ||
| 488 | |||
| 475 | 489 | ||
| 476 | static inline void tasklet_disable_nosync(struct tasklet_struct *t) | 490 | static inline void tasklet_disable_nosync(struct tasklet_struct *t) |
| 477 | { | 491 | { |
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h index 476d9464ac82..c662efa68289 100644 --- a/include/linux/ipv6.h +++ b/include/linux/ipv6.h | |||
| @@ -169,6 +169,12 @@ struct ipv6_devconf { | |||
| 169 | __s32 accept_dad; | 169 | __s32 accept_dad; |
| 170 | void *sysctl; | 170 | void *sysctl; |
| 171 | }; | 171 | }; |
| 172 | |||
| 173 | struct ipv6_params { | ||
| 174 | __s32 disable_ipv6; | ||
| 175 | __s32 autoconf; | ||
| 176 | }; | ||
| 177 | extern struct ipv6_params ipv6_defaults; | ||
| 172 | #endif | 178 | #endif |
| 173 | 179 | ||
| 174 | /* index values for the variables in ipv6_devconf */ | 180 | /* index values for the variables in ipv6_devconf */ |
diff --git a/include/linux/isdn/capilli.h b/include/linux/isdn/capilli.h index 35e9b0fd014b..7acb87a44872 100644 --- a/include/linux/isdn/capilli.h +++ b/include/linux/isdn/capilli.h | |||
| @@ -79,7 +79,7 @@ int attach_capi_ctr(struct capi_ctr *); | |||
| 79 | int detach_capi_ctr(struct capi_ctr *); | 79 | int detach_capi_ctr(struct capi_ctr *); |
| 80 | 80 | ||
| 81 | void capi_ctr_ready(struct capi_ctr * card); | 81 | void capi_ctr_ready(struct capi_ctr * card); |
| 82 | void capi_ctr_reseted(struct capi_ctr * card); | 82 | void capi_ctr_down(struct capi_ctr * card); |
| 83 | void capi_ctr_suspend_output(struct capi_ctr * card); | 83 | void capi_ctr_suspend_output(struct capi_ctr * card); |
| 84 | void capi_ctr_resume_output(struct capi_ctr * card); | 84 | void capi_ctr_resume_output(struct capi_ctr * card); |
| 85 | void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb); | 85 | void capi_ctr_handle_message(struct capi_ctr * card, u16 appl, struct sk_buff *skb); |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 883cd44ff765..c5a71c38a95f 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -97,12 +97,14 @@ extern const char linux_proc_banner[]; | |||
| 97 | #define KERN_INFO "<6>" /* informational */ | 97 | #define KERN_INFO "<6>" /* informational */ |
| 98 | #define KERN_DEBUG "<7>" /* debug-level messages */ | 98 | #define KERN_DEBUG "<7>" /* debug-level messages */ |
| 99 | 99 | ||
| 100 | /* Use the default kernel loglevel */ | ||
| 101 | #define KERN_DEFAULT "<d>" | ||
| 100 | /* | 102 | /* |
| 101 | * Annotation for a "continued" line of log printout (only done after a | 103 | * Annotation for a "continued" line of log printout (only done after a |
| 102 | * line that had no enclosing \n). Only to be used by core/arch code | 104 | * line that had no enclosing \n). Only to be used by core/arch code |
| 103 | * during early bootup (a continued line is not SMP-safe otherwise). | 105 | * during early bootup (a continued line is not SMP-safe otherwise). |
| 104 | */ | 106 | */ |
| 105 | #define KERN_CONT "" | 107 | #define KERN_CONT "<c>" |
| 106 | 108 | ||
| 107 | extern int console_printk[]; | 109 | extern int console_printk[]; |
| 108 | 110 | ||
| @@ -406,7 +408,7 @@ static inline char *pack_hex_byte(char *buf, u8 byte) | |||
| 406 | * | 408 | * |
| 407 | * Use tracing_on/tracing_off when you want to quickly turn on or off | 409 | * Use tracing_on/tracing_off when you want to quickly turn on or off |
| 408 | * tracing. It simply enables or disables the recording of the trace events. | 410 | * tracing. It simply enables or disables the recording of the trace events. |
| 409 | * This also corresponds to the user space debugfs/tracing/tracing_on | 411 | * This also corresponds to the user space /sys/kernel/debug/tracing/tracing_on |
| 410 | * file, which gives a means for the kernel and userspace to interact. | 412 | * file, which gives a means for the kernel and userspace to interact. |
| 411 | * Place a tracing_off() in the kernel where you want tracing to end. | 413 | * Place a tracing_off() in the kernel where you want tracing to end. |
| 412 | * From user space, examine the trace, and then echo 1 > tracing_on | 414 | * From user space, examine the trace, and then echo 1 > tracing_on |
diff --git a/include/linux/kmemcheck.h b/include/linux/kmemcheck.h new file mode 100644 index 000000000000..47b39b7c7e84 --- /dev/null +++ b/include/linux/kmemcheck.h | |||
| @@ -0,0 +1,153 @@ | |||
| 1 | #ifndef LINUX_KMEMCHECK_H | ||
| 2 | #define LINUX_KMEMCHECK_H | ||
| 3 | |||
| 4 | #include <linux/mm_types.h> | ||
| 5 | #include <linux/types.h> | ||
| 6 | |||
| 7 | #ifdef CONFIG_KMEMCHECK | ||
| 8 | extern int kmemcheck_enabled; | ||
| 9 | |||
| 10 | /* The slab-related functions. */ | ||
| 11 | void kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node); | ||
| 12 | void kmemcheck_free_shadow(struct page *page, int order); | ||
| 13 | void kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object, | ||
| 14 | size_t size); | ||
| 15 | void kmemcheck_slab_free(struct kmem_cache *s, void *object, size_t size); | ||
| 16 | |||
| 17 | void kmemcheck_pagealloc_alloc(struct page *p, unsigned int order, | ||
| 18 | gfp_t gfpflags); | ||
| 19 | |||
| 20 | void kmemcheck_show_pages(struct page *p, unsigned int n); | ||
| 21 | void kmemcheck_hide_pages(struct page *p, unsigned int n); | ||
| 22 | |||
| 23 | bool kmemcheck_page_is_tracked(struct page *p); | ||
| 24 | |||
| 25 | void kmemcheck_mark_unallocated(void *address, unsigned int n); | ||
| 26 | void kmemcheck_mark_uninitialized(void *address, unsigned int n); | ||
| 27 | void kmemcheck_mark_initialized(void *address, unsigned int n); | ||
| 28 | void kmemcheck_mark_freed(void *address, unsigned int n); | ||
| 29 | |||
| 30 | void kmemcheck_mark_unallocated_pages(struct page *p, unsigned int n); | ||
| 31 | void kmemcheck_mark_uninitialized_pages(struct page *p, unsigned int n); | ||
| 32 | void kmemcheck_mark_initialized_pages(struct page *p, unsigned int n); | ||
| 33 | |||
| 34 | int kmemcheck_show_addr(unsigned long address); | ||
| 35 | int kmemcheck_hide_addr(unsigned long address); | ||
| 36 | |||
| 37 | #else | ||
| 38 | #define kmemcheck_enabled 0 | ||
| 39 | |||
| 40 | static inline void | ||
| 41 | kmemcheck_alloc_shadow(struct page *page, int order, gfp_t flags, int node) | ||
| 42 | { | ||
| 43 | } | ||
| 44 | |||
| 45 | static inline void | ||
| 46 | kmemcheck_free_shadow(struct page *page, int order) | ||
| 47 | { | ||
| 48 | } | ||
| 49 | |||
| 50 | static inline void | ||
| 51 | kmemcheck_slab_alloc(struct kmem_cache *s, gfp_t gfpflags, void *object, | ||
| 52 | size_t size) | ||
| 53 | { | ||
| 54 | } | ||
| 55 | |||
| 56 | static inline void kmemcheck_slab_free(struct kmem_cache *s, void *object, | ||
| 57 | size_t size) | ||
| 58 | { | ||
| 59 | } | ||
| 60 | |||
| 61 | static inline void kmemcheck_pagealloc_alloc(struct page *p, | ||
| 62 | unsigned int order, gfp_t gfpflags) | ||
| 63 | { | ||
| 64 | } | ||
| 65 | |||
| 66 | static inline bool kmemcheck_page_is_tracked(struct page *p) | ||
| 67 | { | ||
| 68 | return false; | ||
| 69 | } | ||
| 70 | |||
| 71 | static inline void kmemcheck_mark_unallocated(void *address, unsigned int n) | ||
| 72 | { | ||
| 73 | } | ||
| 74 | |||
| 75 | static inline void kmemcheck_mark_uninitialized(void *address, unsigned int n) | ||
| 76 | { | ||
| 77 | } | ||
| 78 | |||
| 79 | static inline void kmemcheck_mark_initialized(void *address, unsigned int n) | ||
| 80 | { | ||
| 81 | } | ||
| 82 | |||
| 83 | static inline void kmemcheck_mark_freed(void *address, unsigned int n) | ||
| 84 | { | ||
| 85 | } | ||
| 86 | |||
| 87 | static inline void kmemcheck_mark_unallocated_pages(struct page *p, | ||
| 88 | unsigned int n) | ||
| 89 | { | ||
| 90 | } | ||
| 91 | |||
| 92 | static inline void kmemcheck_mark_uninitialized_pages(struct page *p, | ||
| 93 | unsigned int n) | ||
| 94 | { | ||
| 95 | } | ||
| 96 | |||
| 97 | static inline void kmemcheck_mark_initialized_pages(struct page *p, | ||
| 98 | unsigned int n) | ||
| 99 | { | ||
| 100 | } | ||
| 101 | |||
| 102 | #endif /* CONFIG_KMEMCHECK */ | ||
| 103 | |||
| 104 | /* | ||
| 105 | * Bitfield annotations | ||
| 106 | * | ||
| 107 | * How to use: If you have a struct using bitfields, for example | ||
| 108 | * | ||
| 109 | * struct a { | ||
| 110 | * int x:8, y:8; | ||
| 111 | * }; | ||
| 112 | * | ||
| 113 | * then this should be rewritten as | ||
| 114 | * | ||
| 115 | * struct a { | ||
| 116 | * kmemcheck_bitfield_begin(flags); | ||
| 117 | * int x:8, y:8; | ||
| 118 | * kmemcheck_bitfield_end(flags); | ||
| 119 | * }; | ||
| 120 | * | ||
| 121 | * Now the "flags_begin" and "flags_end" members may be used to refer to the | ||
| 122 | * beginning and end, respectively, of the bitfield (and things like | ||
| 123 | * &x.flags_begin is allowed). As soon as the struct is allocated, the bit- | ||
| 124 | * fields should be annotated: | ||
| 125 | * | ||
| 126 | * struct a *a = kmalloc(sizeof(struct a), GFP_KERNEL); | ||
| 127 | * kmemcheck_annotate_bitfield(a, flags); | ||
| 128 | * | ||
| 129 | * Note: We provide the same definitions for both kmemcheck and non- | ||
| 130 | * kmemcheck kernels. This makes it harder to introduce accidental errors. It | ||
| 131 | * is also allowed to pass NULL pointers to kmemcheck_annotate_bitfield(). | ||
| 132 | */ | ||
| 133 | #define kmemcheck_bitfield_begin(name) \ | ||
| 134 | int name##_begin[0]; | ||
| 135 | |||
| 136 | #define kmemcheck_bitfield_end(name) \ | ||
| 137 | int name##_end[0]; | ||
| 138 | |||
| 139 | #define kmemcheck_annotate_bitfield(ptr, name) \ | ||
| 140 | do if (ptr) { \ | ||
| 141 | int _n = (long) &((ptr)->name##_end) \ | ||
| 142 | - (long) &((ptr)->name##_begin); \ | ||
| 143 | BUILD_BUG_ON(_n < 0); \ | ||
| 144 | \ | ||
| 145 | kmemcheck_mark_initialized(&((ptr)->name##_begin), _n); \ | ||
| 146 | } while (0) | ||
| 147 | |||
| 148 | #define kmemcheck_annotate_variable(var) \ | ||
| 149 | do { \ | ||
| 150 | kmemcheck_mark_initialized(&(var), sizeof(var)); \ | ||
| 151 | } while (0) \ | ||
| 152 | |||
| 153 | #endif /* LINUX_KMEMCHECK_H */ | ||
diff --git a/include/linux/linux_logo.h b/include/linux/linux_logo.h index 08a92969c76e..ca5bd91d12e1 100644 --- a/include/linux/linux_logo.h +++ b/include/linux/linux_logo.h | |||
| @@ -32,6 +32,22 @@ struct linux_logo { | |||
| 32 | const unsigned char *data; | 32 | const unsigned char *data; |
| 33 | }; | 33 | }; |
| 34 | 34 | ||
| 35 | extern const struct linux_logo logo_linux_mono; | ||
| 36 | extern const struct linux_logo logo_linux_vga16; | ||
| 37 | extern const struct linux_logo logo_linux_clut224; | ||
| 38 | extern const struct linux_logo logo_blackfin_vga16; | ||
| 39 | extern const struct linux_logo logo_blackfin_clut224; | ||
| 40 | extern const struct linux_logo logo_dec_clut224; | ||
| 41 | extern const struct linux_logo logo_mac_clut224; | ||
| 42 | extern const struct linux_logo logo_parisc_clut224; | ||
| 43 | extern const struct linux_logo logo_sgi_clut224; | ||
| 44 | extern const struct linux_logo logo_sun_clut224; | ||
| 45 | extern const struct linux_logo logo_superh_mono; | ||
| 46 | extern const struct linux_logo logo_superh_vga16; | ||
| 47 | extern const struct linux_logo logo_superh_clut224; | ||
| 48 | extern const struct linux_logo logo_m32r_clut224; | ||
| 49 | extern const struct linux_logo logo_spe_clut224; | ||
| 50 | |||
| 35 | extern const struct linux_logo *fb_find_logo(int depth); | 51 | extern const struct linux_logo *fb_find_logo(int depth); |
| 36 | #ifdef CONFIG_FB_LOGO_EXTRA | 52 | #ifdef CONFIG_FB_LOGO_EXTRA |
| 37 | extern void fb_append_extra_logo(const struct linux_logo *logo, | 53 | extern void fb_append_extra_logo(const struct linux_logo *logo, |
diff --git a/include/linux/lis3lv02d.h b/include/linux/lis3lv02d.h new file mode 100644 index 000000000000..ad651f4e45ac --- /dev/null +++ b/include/linux/lis3lv02d.h | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | #ifndef __LIS3LV02D_H_ | ||
| 2 | #define __LIS3LV02D_H_ | ||
| 3 | |||
| 4 | struct lis3lv02d_platform_data { | ||
| 5 | /* please note: the 'click' feature is only supported for | ||
| 6 | * LIS[32]02DL variants of the chip and will be ignored for | ||
| 7 | * others */ | ||
| 8 | #define LIS3_CLICK_SINGLE_X (1 << 0) | ||
| 9 | #define LIS3_CLICK_DOUBLE_X (1 << 1) | ||
| 10 | #define LIS3_CLICK_SINGLE_Y (1 << 2) | ||
| 11 | #define LIS3_CLICK_DOUBLE_Y (1 << 3) | ||
| 12 | #define LIS3_CLICK_SINGLE_Z (1 << 4) | ||
| 13 | #define LIS3_CLICK_DOUBLE_Z (1 << 5) | ||
| 14 | unsigned char click_flags; | ||
| 15 | unsigned char click_thresh_x; | ||
| 16 | unsigned char click_thresh_y; | ||
| 17 | unsigned char click_thresh_z; | ||
| 18 | unsigned char click_time_limit; | ||
| 19 | unsigned char click_latency; | ||
| 20 | unsigned char click_window; | ||
| 21 | |||
| 22 | #define LIS3_IRQ1_DISABLE (0 << 0) | ||
| 23 | #define LIS3_IRQ1_FF_WU_1 (1 << 0) | ||
| 24 | #define LIS3_IRQ1_FF_WU_2 (2 << 0) | ||
| 25 | #define LIS3_IRQ1_FF_WU_12 (3 << 0) | ||
| 26 | #define LIS3_IRQ1_DATA_READY (4 << 0) | ||
| 27 | #define LIS3_IRQ1_CLICK (7 << 0) | ||
| 28 | #define LIS3_IRQ2_DISABLE (0 << 3) | ||
| 29 | #define LIS3_IRQ2_FF_WU_1 (1 << 3) | ||
| 30 | #define LIS3_IRQ2_FF_WU_2 (2 << 3) | ||
| 31 | #define LIS3_IRQ2_FF_WU_12 (3 << 3) | ||
| 32 | #define LIS3_IRQ2_DATA_READY (4 << 3) | ||
| 33 | #define LIS3_IRQ2_CLICK (7 << 3) | ||
| 34 | #define LIS3_IRQ_OPEN_DRAIN (1 << 6) | ||
| 35 | #define LIS3_IRQ_ACTIVE_HIGH (1 << 7) | ||
| 36 | unsigned char irq_cfg; | ||
| 37 | }; | ||
| 38 | |||
| 39 | #endif /* __LIS3LV02D_H_ */ | ||
diff --git a/include/linux/list_nulls.h b/include/linux/list_nulls.h index 93150ecf3ea4..5d10ae364b5e 100644 --- a/include/linux/list_nulls.h +++ b/include/linux/list_nulls.h | |||
| @@ -56,6 +56,18 @@ static inline int hlist_nulls_empty(const struct hlist_nulls_head *h) | |||
| 56 | return is_a_nulls(h->first); | 56 | return is_a_nulls(h->first); |
| 57 | } | 57 | } |
| 58 | 58 | ||
| 59 | static inline void hlist_nulls_add_head(struct hlist_nulls_node *n, | ||
| 60 | struct hlist_nulls_head *h) | ||
| 61 | { | ||
| 62 | struct hlist_nulls_node *first = h->first; | ||
| 63 | |||
| 64 | n->next = first; | ||
| 65 | n->pprev = &h->first; | ||
| 66 | h->first = n; | ||
| 67 | if (!is_a_nulls(first)) | ||
| 68 | first->pprev = &n->next; | ||
| 69 | } | ||
| 70 | |||
| 59 | static inline void __hlist_nulls_del(struct hlist_nulls_node *n) | 71 | static inline void __hlist_nulls_del(struct hlist_nulls_node *n) |
| 60 | { | 72 | { |
| 61 | struct hlist_nulls_node *next = n->next; | 73 | struct hlist_nulls_node *next = n->next; |
| @@ -65,6 +77,12 @@ static inline void __hlist_nulls_del(struct hlist_nulls_node *n) | |||
| 65 | next->pprev = pprev; | 77 | next->pprev = pprev; |
| 66 | } | 78 | } |
| 67 | 79 | ||
| 80 | static inline void hlist_nulls_del(struct hlist_nulls_node *n) | ||
| 81 | { | ||
| 82 | __hlist_nulls_del(n); | ||
| 83 | n->pprev = LIST_POISON2; | ||
| 84 | } | ||
| 85 | |||
| 68 | /** | 86 | /** |
| 69 | * hlist_nulls_for_each_entry - iterate over list of given type | 87 | * hlist_nulls_for_each_entry - iterate over list of given type |
| 70 | * @tpos: the type * to use as a loop cursor. | 88 | * @tpos: the type * to use as a loop cursor. |
diff --git a/include/linux/mISDNdsp.h b/include/linux/mISDNdsp.h index 6b71d2dce508..41d1eeb9b3bd 100644 --- a/include/linux/mISDNdsp.h +++ b/include/linux/mISDNdsp.h | |||
| @@ -12,7 +12,8 @@ struct mISDN_dsp_element { | |||
| 12 | void *(*new)(const char *arg); | 12 | void *(*new)(const char *arg); |
| 13 | void (*free)(void *p); | 13 | void (*free)(void *p); |
| 14 | void (*process_tx)(void *p, unsigned char *data, int len); | 14 | void (*process_tx)(void *p, unsigned char *data, int len); |
| 15 | void (*process_rx)(void *p, unsigned char *data, int len); | 15 | void (*process_rx)(void *p, unsigned char *data, int len, |
| 16 | unsigned int txlen); | ||
| 16 | int num_args; | 17 | int num_args; |
| 17 | struct mISDN_dsp_element_arg | 18 | struct mISDN_dsp_element_arg |
| 18 | *args; | 19 | *args; |
| @@ -24,6 +25,7 @@ extern void mISDN_dsp_element_unregister(struct mISDN_dsp_element *elem); | |||
| 24 | struct dsp_features { | 25 | struct dsp_features { |
| 25 | int hfc_id; /* unique id to identify the chip (or -1) */ | 26 | int hfc_id; /* unique id to identify the chip (or -1) */ |
| 26 | int hfc_dtmf; /* set if HFCmulti card supports dtmf */ | 27 | int hfc_dtmf; /* set if HFCmulti card supports dtmf */ |
| 28 | int hfc_conf; /* set if HFCmulti card supports conferences */ | ||
| 27 | int hfc_loops; /* set if card supports tone loops */ | 29 | int hfc_loops; /* set if card supports tone loops */ |
| 28 | int hfc_echocanhw; /* set if card supports echocancelation*/ | 30 | int hfc_echocanhw; /* set if card supports echocancelation*/ |
| 29 | int pcm_id; /* unique id to identify the pcm bus (or -1) */ | 31 | int pcm_id; /* unique id to identify the pcm bus (or -1) */ |
diff --git a/include/linux/mISDNhw.h b/include/linux/mISDNhw.h index 97ffdc1d3442..7f9831da847f 100644 --- a/include/linux/mISDNhw.h +++ b/include/linux/mISDNhw.h | |||
| @@ -89,11 +89,6 @@ struct dchannel { | |||
| 89 | void (*phfunc) (struct dchannel *); | 89 | void (*phfunc) (struct dchannel *); |
| 90 | u_int state; | 90 | u_int state; |
| 91 | void *l1; | 91 | void *l1; |
| 92 | /* HW access */ | ||
| 93 | u_char (*read_reg) (void *, u_char); | ||
| 94 | void (*write_reg) (void *, u_char, u_char); | ||
| 95 | void (*read_fifo) (void *, u_char *, int); | ||
| 96 | void (*write_fifo) (void *, u_char *, int); | ||
| 97 | void *hw; | 92 | void *hw; |
| 98 | int slot; /* multiport card channel slot */ | 93 | int slot; /* multiport card channel slot */ |
| 99 | struct timer_list timer; | 94 | struct timer_list timer; |
| @@ -151,11 +146,6 @@ struct bchannel { | |||
| 151 | u_long Flags; | 146 | u_long Flags; |
| 152 | struct work_struct workq; | 147 | struct work_struct workq; |
| 153 | u_int state; | 148 | u_int state; |
| 154 | /* HW access */ | ||
| 155 | u_char (*read_reg) (void *, u_char); | ||
| 156 | void (*write_reg) (void *, u_char, u_char); | ||
| 157 | void (*read_fifo) (void *, u_char *, int); | ||
| 158 | void (*write_fifo) (void *, u_char *, int); | ||
| 159 | void *hw; | 149 | void *hw; |
| 160 | int slot; /* multiport card channel slot */ | 150 | int slot; /* multiport card channel slot */ |
| 161 | struct timer_list timer; | 151 | struct timer_list timer; |
| @@ -185,7 +175,7 @@ extern int dchannel_senddata(struct dchannel *, struct sk_buff *); | |||
| 185 | extern int bchannel_senddata(struct bchannel *, struct sk_buff *); | 175 | extern int bchannel_senddata(struct bchannel *, struct sk_buff *); |
| 186 | extern void recv_Dchannel(struct dchannel *); | 176 | extern void recv_Dchannel(struct dchannel *); |
| 187 | extern void recv_Echannel(struct dchannel *, struct dchannel *); | 177 | extern void recv_Echannel(struct dchannel *, struct dchannel *); |
| 188 | extern void recv_Bchannel(struct bchannel *); | 178 | extern void recv_Bchannel(struct bchannel *, unsigned int id); |
| 189 | extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *); | 179 | extern void recv_Dchannel_skb(struct dchannel *, struct sk_buff *); |
| 190 | extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *); | 180 | extern void recv_Bchannel_skb(struct bchannel *, struct sk_buff *); |
| 191 | extern void confirm_Bsend(struct bchannel *bch); | 181 | extern void confirm_Bsend(struct bchannel *bch); |
diff --git a/include/linux/mISDNif.h b/include/linux/mISDNif.h index 5da3d95b27f1..45100b39a7cf 100644 --- a/include/linux/mISDNif.h +++ b/include/linux/mISDNif.h | |||
| @@ -229,6 +229,7 @@ | |||
| 229 | #define OPTION_L2_PTP 2 | 229 | #define OPTION_L2_PTP 2 |
| 230 | #define OPTION_L2_FIXEDTEI 3 | 230 | #define OPTION_L2_FIXEDTEI 3 |
| 231 | #define OPTION_L2_CLEANUP 4 | 231 | #define OPTION_L2_CLEANUP 4 |
| 232 | #define OPTION_L1_HOLD 5 | ||
| 232 | 233 | ||
| 233 | /* should be in sync with linux/kobject.h:KOBJ_NAME_LEN */ | 234 | /* should be in sync with linux/kobject.h:KOBJ_NAME_LEN */ |
| 234 | #define MISDN_MAX_IDLEN 20 | 235 | #define MISDN_MAX_IDLEN 20 |
| @@ -291,19 +292,19 @@ struct mISDN_devrename { | |||
| 291 | 292 | ||
| 292 | /* MPH_INFORMATION_REQ payload */ | 293 | /* MPH_INFORMATION_REQ payload */ |
| 293 | struct ph_info_ch { | 294 | struct ph_info_ch { |
| 294 | __u32 protocol; | 295 | __u32 protocol; |
| 295 | __u64 Flags; | 296 | __u64 Flags; |
| 296 | }; | 297 | }; |
| 297 | 298 | ||
| 298 | struct ph_info_dch { | 299 | struct ph_info_dch { |
| 299 | struct ph_info_ch ch; | 300 | struct ph_info_ch ch; |
| 300 | __u16 state; | 301 | __u16 state; |
| 301 | __u16 num_bch; | 302 | __u16 num_bch; |
| 302 | }; | 303 | }; |
| 303 | 304 | ||
| 304 | struct ph_info { | 305 | struct ph_info { |
| 305 | struct ph_info_dch dch; | 306 | struct ph_info_dch dch; |
| 306 | struct ph_info_ch bch[]; | 307 | struct ph_info_ch bch[]; |
| 307 | }; | 308 | }; |
| 308 | 309 | ||
| 309 | /* timer device ioctl */ | 310 | /* timer device ioctl */ |
| @@ -317,6 +318,7 @@ struct ph_info { | |||
| 317 | #define IMCTRLREQ _IOR('I', 69, int) | 318 | #define IMCTRLREQ _IOR('I', 69, int) |
| 318 | #define IMCLEAR_L2 _IOR('I', 70, int) | 319 | #define IMCLEAR_L2 _IOR('I', 70, int) |
| 319 | #define IMSETDEVNAME _IOR('I', 71, struct mISDN_devrename) | 320 | #define IMSETDEVNAME _IOR('I', 71, struct mISDN_devrename) |
| 321 | #define IMHOLD_L1 _IOR('I', 72, int) | ||
| 320 | 322 | ||
| 321 | static inline int | 323 | static inline int |
| 322 | test_channelmap(u_int nr, u_char *map) | 324 | test_channelmap(u_int nr, u_char *map) |
| @@ -362,7 +364,8 @@ clear_channelmap(u_int nr, u_char *map) | |||
| 362 | #define MISDN_CTRL_HFC_RECEIVE_ON 0x4006 | 364 | #define MISDN_CTRL_HFC_RECEIVE_ON 0x4006 |
| 363 | #define MISDN_CTRL_HFC_ECHOCAN_ON 0x4007 | 365 | #define MISDN_CTRL_HFC_ECHOCAN_ON 0x4007 |
| 364 | #define MISDN_CTRL_HFC_ECHOCAN_OFF 0x4008 | 366 | #define MISDN_CTRL_HFC_ECHOCAN_OFF 0x4008 |
| 365 | 367 | #define MISDN_CTRL_HFC_WD_INIT 0x4009 | |
| 368 | #define MISDN_CTRL_HFC_WD_RESET 0x400A | ||
| 366 | 369 | ||
| 367 | /* socket options */ | 370 | /* socket options */ |
| 368 | #define MISDN_TIME_STAMP 0x0001 | 371 | #define MISDN_TIME_STAMP 0x0001 |
diff --git a/include/linux/major.h b/include/linux/major.h index 058ec15dd060..6a8ca98c9a96 100644 --- a/include/linux/major.h +++ b/include/linux/major.h | |||
| @@ -145,6 +145,7 @@ | |||
| 145 | #define UNIX98_PTY_MAJOR_COUNT 8 | 145 | #define UNIX98_PTY_MAJOR_COUNT 8 |
| 146 | #define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT) | 146 | #define UNIX98_PTY_SLAVE_MAJOR (UNIX98_PTY_MASTER_MAJOR+UNIX98_PTY_MAJOR_COUNT) |
| 147 | 147 | ||
| 148 | #define DRBD_MAJOR 147 | ||
| 148 | #define RTF_MAJOR 150 | 149 | #define RTF_MAJOR 150 |
| 149 | #define RAW_MAJOR 162 | 150 | #define RAW_MAJOR 162 |
| 150 | 151 | ||
diff --git a/include/linux/mdio.h b/include/linux/mdio.h new file mode 100644 index 000000000000..cfdf1df2875e --- /dev/null +++ b/include/linux/mdio.h | |||
| @@ -0,0 +1,356 @@ | |||
| 1 | /* | ||
| 2 | * linux/mdio.h: definitions for MDIO (clause 45) transceivers | ||
| 3 | * Copyright 2006-2009 Solarflare Communications Inc. | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify it | ||
| 6 | * under the terms of the GNU General Public License version 2 as published | ||
| 7 | * by the Free Software Foundation, incorporated herein by reference. | ||
| 8 | */ | ||
| 9 | |||
| 10 | #ifndef __LINUX_MDIO_H__ | ||
| 11 | #define __LINUX_MDIO_H__ | ||
| 12 | |||
| 13 | #include <linux/mii.h> | ||
| 14 | |||
| 15 | /* MDIO Manageable Devices (MMDs). */ | ||
| 16 | #define MDIO_MMD_PMAPMD 1 /* Physical Medium Attachment/ | ||
| 17 | * Physical Medium Dependent */ | ||
| 18 | #define MDIO_MMD_WIS 2 /* WAN Interface Sublayer */ | ||
| 19 | #define MDIO_MMD_PCS 3 /* Physical Coding Sublayer */ | ||
| 20 | #define MDIO_MMD_PHYXS 4 /* PHY Extender Sublayer */ | ||
| 21 | #define MDIO_MMD_DTEXS 5 /* DTE Extender Sublayer */ | ||
| 22 | #define MDIO_MMD_TC 6 /* Transmission Convergence */ | ||
| 23 | #define MDIO_MMD_AN 7 /* Auto-Negotiation */ | ||
| 24 | #define MDIO_MMD_C22EXT 29 /* Clause 22 extension */ | ||
| 25 | #define MDIO_MMD_VEND1 30 /* Vendor specific 1 */ | ||
| 26 | #define MDIO_MMD_VEND2 31 /* Vendor specific 2 */ | ||
| 27 | |||
| 28 | /* Generic MDIO registers. */ | ||
| 29 | #define MDIO_CTRL1 MII_BMCR | ||
| 30 | #define MDIO_STAT1 MII_BMSR | ||
| 31 | #define MDIO_DEVID1 MII_PHYSID1 | ||
| 32 | #define MDIO_DEVID2 MII_PHYSID2 | ||
| 33 | #define MDIO_SPEED 4 /* Speed ability */ | ||
| 34 | #define MDIO_DEVS1 5 /* Devices in package */ | ||
| 35 | #define MDIO_DEVS2 6 | ||
| 36 | #define MDIO_CTRL2 7 /* 10G control 2 */ | ||
| 37 | #define MDIO_STAT2 8 /* 10G status 2 */ | ||
| 38 | #define MDIO_PMA_TXDIS 9 /* 10G PMA/PMD transmit disable */ | ||
| 39 | #define MDIO_PMA_RXDET 10 /* 10G PMA/PMD receive signal detect */ | ||
| 40 | #define MDIO_PMA_EXTABLE 11 /* 10G PMA/PMD extended ability */ | ||
| 41 | #define MDIO_PKGID1 14 /* Package identifier */ | ||
| 42 | #define MDIO_PKGID2 15 | ||
| 43 | #define MDIO_AN_ADVERTISE 16 /* AN advertising (base page) */ | ||
| 44 | #define MDIO_AN_LPA 19 /* AN LP abilities (base page) */ | ||
| 45 | #define MDIO_PHYXS_LNSTAT 24 /* PHY XGXS lane state */ | ||
| 46 | |||
| 47 | /* Media-dependent registers. */ | ||
| 48 | #define MDIO_PMA_10GBT_SWAPPOL 130 /* 10GBASE-T pair swap & polarity */ | ||
| 49 | #define MDIO_PMA_10GBT_TXPWR 131 /* 10GBASE-T TX power control */ | ||
| 50 | #define MDIO_PMA_10GBT_SNR 133 /* 10GBASE-T SNR margin, lane A. | ||
| 51 | * Lanes B-D are numbered 134-136. */ | ||
| 52 | #define MDIO_PMA_10GBR_FECABLE 170 /* 10GBASE-R FEC ability */ | ||
| 53 | #define MDIO_PCS_10GBX_STAT1 24 /* 10GBASE-X PCS status 1 */ | ||
| 54 | #define MDIO_PCS_10GBRT_STAT1 32 /* 10GBASE-R/-T PCS status 1 */ | ||
| 55 | #define MDIO_PCS_10GBRT_STAT2 33 /* 10GBASE-R/-T PCS status 2 */ | ||
| 56 | #define MDIO_AN_10GBT_CTRL 32 /* 10GBASE-T auto-negotiation control */ | ||
| 57 | #define MDIO_AN_10GBT_STAT 33 /* 10GBASE-T auto-negotiation status */ | ||
| 58 | |||
| 59 | /* LASI (Link Alarm Status Interrupt) registers, defined by XENPAK MSA. */ | ||
| 60 | #define MDIO_PMA_LASI_RXCTRL 0x9000 /* RX_ALARM control */ | ||
| 61 | #define MDIO_PMA_LASI_TXCTRL 0x9001 /* TX_ALARM control */ | ||
| 62 | #define MDIO_PMA_LASI_CTRL 0x9002 /* LASI control */ | ||
| 63 | #define MDIO_PMA_LASI_RXSTAT 0x9003 /* RX_ALARM status */ | ||
| 64 | #define MDIO_PMA_LASI_TXSTAT 0x9004 /* TX_ALARM status */ | ||
| 65 | #define MDIO_PMA_LASI_STAT 0x9005 /* LASI status */ | ||
| 66 | |||
| 67 | /* Control register 1. */ | ||
| 68 | /* Enable extended speed selection */ | ||
| 69 | #define MDIO_CTRL1_SPEEDSELEXT (BMCR_SPEED1000 | BMCR_SPEED100) | ||
| 70 | /* All speed selection bits */ | ||
| 71 | #define MDIO_CTRL1_SPEEDSEL (MDIO_CTRL1_SPEEDSELEXT | 0x003c) | ||
| 72 | #define MDIO_CTRL1_FULLDPLX BMCR_FULLDPLX | ||
| 73 | #define MDIO_CTRL1_LPOWER BMCR_PDOWN | ||
| 74 | #define MDIO_CTRL1_RESET BMCR_RESET | ||
| 75 | #define MDIO_PMA_CTRL1_LOOPBACK 0x0001 | ||
| 76 | #define MDIO_PMA_CTRL1_SPEED1000 BMCR_SPEED1000 | ||
| 77 | #define MDIO_PMA_CTRL1_SPEED100 BMCR_SPEED100 | ||
| 78 | #define MDIO_PCS_CTRL1_LOOPBACK BMCR_LOOPBACK | ||
| 79 | #define MDIO_PHYXS_CTRL1_LOOPBACK BMCR_LOOPBACK | ||
| 80 | #define MDIO_AN_CTRL1_RESTART BMCR_ANRESTART | ||
| 81 | #define MDIO_AN_CTRL1_ENABLE BMCR_ANENABLE | ||
| 82 | #define MDIO_AN_CTRL1_XNP 0x2000 /* Enable extended next page */ | ||
| 83 | |||
| 84 | /* 10 Gb/s */ | ||
| 85 | #define MDIO_CTRL1_SPEED10G (MDIO_CTRL1_SPEEDSELEXT | 0x00) | ||
| 86 | /* 10PASS-TS/2BASE-TL */ | ||
| 87 | #define MDIO_CTRL1_SPEED10P2B (MDIO_CTRL1_SPEEDSELEXT | 0x04) | ||
| 88 | |||
| 89 | /* Status register 1. */ | ||
| 90 | #define MDIO_STAT1_LPOWERABLE 0x0002 /* Low-power ability */ | ||
| 91 | #define MDIO_STAT1_LSTATUS BMSR_LSTATUS | ||
| 92 | #define MDIO_STAT1_FAULT 0x0080 /* Fault */ | ||
| 93 | #define MDIO_AN_STAT1_LPABLE 0x0001 /* Link partner AN ability */ | ||
| 94 | #define MDIO_AN_STAT1_ABLE BMSR_ANEGCAPABLE | ||
| 95 | #define MDIO_AN_STAT1_RFAULT BMSR_RFAULT | ||
| 96 | #define MDIO_AN_STAT1_COMPLETE BMSR_ANEGCOMPLETE | ||
| 97 | #define MDIO_AN_STAT1_PAGE 0x0040 /* Page received */ | ||
| 98 | #define MDIO_AN_STAT1_XNP 0x0080 /* Extended next page status */ | ||
| 99 | |||
| 100 | /* Speed register. */ | ||
| 101 | #define MDIO_SPEED_10G 0x0001 /* 10G capable */ | ||
| 102 | #define MDIO_PMA_SPEED_2B 0x0002 /* 2BASE-TL capable */ | ||
| 103 | #define MDIO_PMA_SPEED_10P 0x0004 /* 10PASS-TS capable */ | ||
| 104 | #define MDIO_PMA_SPEED_1000 0x0010 /* 1000M capable */ | ||
| 105 | #define MDIO_PMA_SPEED_100 0x0020 /* 100M capable */ | ||
| 106 | #define MDIO_PMA_SPEED_10 0x0040 /* 10M capable */ | ||
| 107 | #define MDIO_PCS_SPEED_10P2B 0x0002 /* 10PASS-TS/2BASE-TL capable */ | ||
| 108 | |||
| 109 | /* Device present registers. */ | ||
| 110 | #define MDIO_DEVS_PRESENT(devad) (1 << (devad)) | ||
| 111 | #define MDIO_DEVS_PMAPMD MDIO_DEVS_PRESENT(MDIO_MMD_PMAPMD) | ||
| 112 | #define MDIO_DEVS_WIS MDIO_DEVS_PRESENT(MDIO_MMD_WIS) | ||
| 113 | #define MDIO_DEVS_PCS MDIO_DEVS_PRESENT(MDIO_MMD_PCS) | ||
| 114 | #define MDIO_DEVS_PHYXS MDIO_DEVS_PRESENT(MDIO_MMD_PHYXS) | ||
| 115 | #define MDIO_DEVS_DTEXS MDIO_DEVS_PRESENT(MDIO_MMD_DTEXS) | ||
| 116 | #define MDIO_DEVS_TC MDIO_DEVS_PRESENT(MDIO_MMD_TC) | ||
| 117 | #define MDIO_DEVS_AN MDIO_DEVS_PRESENT(MDIO_MMD_AN) | ||
| 118 | #define MDIO_DEVS_C22EXT MDIO_DEVS_PRESENT(MDIO_MMD_C22EXT) | ||
| 119 | |||
| 120 | /* Control register 2. */ | ||
| 121 | #define MDIO_PMA_CTRL2_TYPE 0x000f /* PMA/PMD type selection */ | ||
| 122 | #define MDIO_PMA_CTRL2_10GBCX4 0x0000 /* 10GBASE-CX4 type */ | ||
| 123 | #define MDIO_PMA_CTRL2_10GBEW 0x0001 /* 10GBASE-EW type */ | ||
| 124 | #define MDIO_PMA_CTRL2_10GBLW 0x0002 /* 10GBASE-LW type */ | ||
| 125 | #define MDIO_PMA_CTRL2_10GBSW 0x0003 /* 10GBASE-SW type */ | ||
| 126 | #define MDIO_PMA_CTRL2_10GBLX4 0x0004 /* 10GBASE-LX4 type */ | ||
| 127 | #define MDIO_PMA_CTRL2_10GBER 0x0005 /* 10GBASE-ER type */ | ||
| 128 | #define MDIO_PMA_CTRL2_10GBLR 0x0006 /* 10GBASE-LR type */ | ||
| 129 | #define MDIO_PMA_CTRL2_10GBSR 0x0007 /* 10GBASE-SR type */ | ||
| 130 | #define MDIO_PMA_CTRL2_10GBLRM 0x0008 /* 10GBASE-LRM type */ | ||
| 131 | #define MDIO_PMA_CTRL2_10GBT 0x0009 /* 10GBASE-T type */ | ||
| 132 | #define MDIO_PMA_CTRL2_10GBKX4 0x000a /* 10GBASE-KX4 type */ | ||
| 133 | #define MDIO_PMA_CTRL2_10GBKR 0x000b /* 10GBASE-KR type */ | ||
| 134 | #define MDIO_PMA_CTRL2_1000BT 0x000c /* 1000BASE-T type */ | ||
| 135 | #define MDIO_PMA_CTRL2_1000BKX 0x000d /* 1000BASE-KX type */ | ||
| 136 | #define MDIO_PMA_CTRL2_100BTX 0x000e /* 100BASE-TX type */ | ||
| 137 | #define MDIO_PMA_CTRL2_10BT 0x000f /* 10BASE-T type */ | ||
| 138 | #define MDIO_PCS_CTRL2_TYPE 0x0003 /* PCS type selection */ | ||
| 139 | #define MDIO_PCS_CTRL2_10GBR 0x0000 /* 10GBASE-R type */ | ||
| 140 | #define MDIO_PCS_CTRL2_10GBX 0x0001 /* 10GBASE-X type */ | ||
| 141 | #define MDIO_PCS_CTRL2_10GBW 0x0002 /* 10GBASE-W type */ | ||
| 142 | #define MDIO_PCS_CTRL2_10GBT 0x0003 /* 10GBASE-T type */ | ||
| 143 | |||
| 144 | /* Status register 2. */ | ||
| 145 | #define MDIO_STAT2_RXFAULT 0x0400 /* Receive fault */ | ||
| 146 | #define MDIO_STAT2_TXFAULT 0x0800 /* Transmit fault */ | ||
| 147 | #define MDIO_STAT2_DEVPRST 0xc000 /* Device present */ | ||
| 148 | #define MDIO_STAT2_DEVPRST_VAL 0x8000 /* Device present value */ | ||
| 149 | #define MDIO_PMA_STAT2_LBABLE 0x0001 /* PMA loopback ability */ | ||
| 150 | #define MDIO_PMA_STAT2_10GBEW 0x0002 /* 10GBASE-EW ability */ | ||
| 151 | #define MDIO_PMA_STAT2_10GBLW 0x0004 /* 10GBASE-LW ability */ | ||
| 152 | #define MDIO_PMA_STAT2_10GBSW 0x0008 /* 10GBASE-SW ability */ | ||
| 153 | #define MDIO_PMA_STAT2_10GBLX4 0x0010 /* 10GBASE-LX4 ability */ | ||
| 154 | #define MDIO_PMA_STAT2_10GBER 0x0020 /* 10GBASE-ER ability */ | ||
| 155 | #define MDIO_PMA_STAT2_10GBLR 0x0040 /* 10GBASE-LR ability */ | ||
| 156 | #define MDIO_PMA_STAT2_10GBSR 0x0080 /* 10GBASE-SR ability */ | ||
| 157 | #define MDIO_PMD_STAT2_TXDISAB 0x0100 /* PMD TX disable ability */ | ||
| 158 | #define MDIO_PMA_STAT2_EXTABLE 0x0200 /* Extended abilities */ | ||
| 159 | #define MDIO_PMA_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */ | ||
| 160 | #define MDIO_PMA_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */ | ||
| 161 | #define MDIO_PCS_STAT2_10GBR 0x0001 /* 10GBASE-R capable */ | ||
| 162 | #define MDIO_PCS_STAT2_10GBX 0x0002 /* 10GBASE-X capable */ | ||
| 163 | #define MDIO_PCS_STAT2_10GBW 0x0004 /* 10GBASE-W capable */ | ||
| 164 | #define MDIO_PCS_STAT2_RXFLTABLE 0x1000 /* Receive fault ability */ | ||
| 165 | #define MDIO_PCS_STAT2_TXFLTABLE 0x2000 /* Transmit fault ability */ | ||
| 166 | |||
| 167 | /* Transmit disable register. */ | ||
| 168 | #define MDIO_PMD_TXDIS_GLOBAL 0x0001 /* Global PMD TX disable */ | ||
| 169 | #define MDIO_PMD_TXDIS_0 0x0002 /* PMD TX disable 0 */ | ||
| 170 | #define MDIO_PMD_TXDIS_1 0x0004 /* PMD TX disable 1 */ | ||
| 171 | #define MDIO_PMD_TXDIS_2 0x0008 /* PMD TX disable 2 */ | ||
| 172 | #define MDIO_PMD_TXDIS_3 0x0010 /* PMD TX disable 3 */ | ||
| 173 | |||
| 174 | /* Receive signal detect register. */ | ||
| 175 | #define MDIO_PMD_RXDET_GLOBAL 0x0001 /* Global PMD RX signal detect */ | ||
| 176 | #define MDIO_PMD_RXDET_0 0x0002 /* PMD RX signal detect 0 */ | ||
| 177 | #define MDIO_PMD_RXDET_1 0x0004 /* PMD RX signal detect 1 */ | ||
| 178 | #define MDIO_PMD_RXDET_2 0x0008 /* PMD RX signal detect 2 */ | ||
| 179 | #define MDIO_PMD_RXDET_3 0x0010 /* PMD RX signal detect 3 */ | ||
| 180 | |||
| 181 | /* Extended abilities register. */ | ||
| 182 | #define MDIO_PMA_EXTABLE_10GCX4 0x0001 /* 10GBASE-CX4 ability */ | ||
| 183 | #define MDIO_PMA_EXTABLE_10GBLRM 0x0002 /* 10GBASE-LRM ability */ | ||
| 184 | #define MDIO_PMA_EXTABLE_10GBT 0x0004 /* 10GBASE-T ability */ | ||
| 185 | #define MDIO_PMA_EXTABLE_10GBKX4 0x0008 /* 10GBASE-KX4 ability */ | ||
| 186 | #define MDIO_PMA_EXTABLE_10GBKR 0x0010 /* 10GBASE-KR ability */ | ||
| 187 | #define MDIO_PMA_EXTABLE_1000BT 0x0020 /* 1000BASE-T ability */ | ||
| 188 | #define MDIO_PMA_EXTABLE_1000BKX 0x0040 /* 1000BASE-KX ability */ | ||
| 189 | #define MDIO_PMA_EXTABLE_100BTX 0x0080 /* 100BASE-TX ability */ | ||
| 190 | #define MDIO_PMA_EXTABLE_10BT 0x0100 /* 10BASE-T ability */ | ||
| 191 | |||
| 192 | /* PHY XGXS lane state register. */ | ||
| 193 | #define MDIO_PHYXS_LNSTAT_SYNC0 0x0001 | ||
| 194 | #define MDIO_PHYXS_LNSTAT_SYNC1 0x0002 | ||
| 195 | #define MDIO_PHYXS_LNSTAT_SYNC2 0x0004 | ||
| 196 | #define MDIO_PHYXS_LNSTAT_SYNC3 0x0008 | ||
| 197 | #define MDIO_PHYXS_LNSTAT_ALIGN 0x1000 | ||
| 198 | |||
| 199 | /* PMA 10GBASE-T pair swap & polarity */ | ||
| 200 | #define MDIO_PMA_10GBT_SWAPPOL_ABNX 0x0001 /* Pair A/B uncrossed */ | ||
| 201 | #define MDIO_PMA_10GBT_SWAPPOL_CDNX 0x0002 /* Pair C/D uncrossed */ | ||
| 202 | #define MDIO_PMA_10GBT_SWAPPOL_AREV 0x0100 /* Pair A polarity reversed */ | ||
| 203 | #define MDIO_PMA_10GBT_SWAPPOL_BREV 0x0200 /* Pair B polarity reversed */ | ||
| 204 | #define MDIO_PMA_10GBT_SWAPPOL_CREV 0x0400 /* Pair C polarity reversed */ | ||
| 205 | #define MDIO_PMA_10GBT_SWAPPOL_DREV 0x0800 /* Pair D polarity reversed */ | ||
| 206 | |||
| 207 | /* PMA 10GBASE-T TX power register. */ | ||
| 208 | #define MDIO_PMA_10GBT_TXPWR_SHORT 0x0001 /* Short-reach mode */ | ||
| 209 | |||
| 210 | /* PMA 10GBASE-T SNR registers. */ | ||
| 211 | /* Value is SNR margin in dB, clamped to range [-127, 127], plus 0x8000. */ | ||
| 212 | #define MDIO_PMA_10GBT_SNR_BIAS 0x8000 | ||
| 213 | #define MDIO_PMA_10GBT_SNR_MAX 127 | ||
| 214 | |||
| 215 | /* PMA 10GBASE-R FEC ability register. */ | ||
| 216 | #define MDIO_PMA_10GBR_FECABLE_ABLE 0x0001 /* FEC ability */ | ||
| 217 | #define MDIO_PMA_10GBR_FECABLE_ERRABLE 0x0002 /* FEC error indic. ability */ | ||
| 218 | |||
| 219 | /* PCS 10GBASE-R/-T status register 1. */ | ||
| 220 | #define MDIO_PCS_10GBRT_STAT1_BLKLK 0x0001 /* Block lock attained */ | ||
| 221 | |||
| 222 | /* PCS 10GBASE-R/-T status register 2. */ | ||
| 223 | #define MDIO_PCS_10GBRT_STAT2_ERR 0x00ff | ||
| 224 | #define MDIO_PCS_10GBRT_STAT2_BER 0x3f00 | ||
| 225 | |||
| 226 | /* AN 10GBASE-T control register. */ | ||
| 227 | #define MDIO_AN_10GBT_CTRL_ADV10G 0x1000 /* Advertise 10GBASE-T */ | ||
| 228 | |||
| 229 | /* AN 10GBASE-T status register. */ | ||
| 230 | #define MDIO_AN_10GBT_STAT_LPTRR 0x0200 /* LP training reset req. */ | ||
| 231 | #define MDIO_AN_10GBT_STAT_LPLTABLE 0x0400 /* LP loop timing ability */ | ||
| 232 | #define MDIO_AN_10GBT_STAT_LP10G 0x0800 /* LP is 10GBT capable */ | ||
| 233 | #define MDIO_AN_10GBT_STAT_REMOK 0x1000 /* Remote OK */ | ||
| 234 | #define MDIO_AN_10GBT_STAT_LOCOK 0x2000 /* Local OK */ | ||
| 235 | #define MDIO_AN_10GBT_STAT_MS 0x4000 /* Master/slave config */ | ||
| 236 | #define MDIO_AN_10GBT_STAT_MSFLT 0x8000 /* Master/slave config fault */ | ||
| 237 | |||
| 238 | /* LASI RX_ALARM control/status registers. */ | ||
| 239 | #define MDIO_PMA_LASI_RX_PHYXSLFLT 0x0001 /* PHY XS RX local fault */ | ||
| 240 | #define MDIO_PMA_LASI_RX_PCSLFLT 0x0008 /* PCS RX local fault */ | ||
| 241 | #define MDIO_PMA_LASI_RX_PMALFLT 0x0010 /* PMA/PMD RX local fault */ | ||
| 242 | #define MDIO_PMA_LASI_RX_OPTICPOWERFLT 0x0020 /* RX optical power fault */ | ||
| 243 | #define MDIO_PMA_LASI_RX_WISLFLT 0x0200 /* WIS local fault */ | ||
| 244 | |||
| 245 | /* LASI TX_ALARM control/status registers. */ | ||
| 246 | #define MDIO_PMA_LASI_TX_PHYXSLFLT 0x0001 /* PHY XS TX local fault */ | ||
| 247 | #define MDIO_PMA_LASI_TX_PCSLFLT 0x0008 /* PCS TX local fault */ | ||
| 248 | #define MDIO_PMA_LASI_TX_PMALFLT 0x0010 /* PMA/PMD TX local fault */ | ||
| 249 | #define MDIO_PMA_LASI_TX_LASERPOWERFLT 0x0080 /* Laser output power fault */ | ||
| 250 | #define MDIO_PMA_LASI_TX_LASERTEMPFLT 0x0100 /* Laser temperature fault */ | ||
| 251 | #define MDIO_PMA_LASI_TX_LASERBICURRFLT 0x0200 /* Laser bias current fault */ | ||
| 252 | |||
| 253 | /* LASI control/status registers. */ | ||
| 254 | #define MDIO_PMA_LASI_LSALARM 0x0001 /* LS_ALARM enable/status */ | ||
| 255 | #define MDIO_PMA_LASI_TXALARM 0x0002 /* TX_ALARM enable/status */ | ||
| 256 | #define MDIO_PMA_LASI_RXALARM 0x0004 /* RX_ALARM enable/status */ | ||
| 257 | |||
| 258 | /* Mapping between MDIO PRTAD/DEVAD and mii_ioctl_data::phy_id */ | ||
| 259 | |||
| 260 | #define MDIO_PHY_ID_C45 0x8000 | ||
| 261 | #define MDIO_PHY_ID_PRTAD 0x03e0 | ||
| 262 | #define MDIO_PHY_ID_DEVAD 0x001f | ||
| 263 | #define MDIO_PHY_ID_C45_MASK \ | ||
| 264 | (MDIO_PHY_ID_C45 | MDIO_PHY_ID_PRTAD | MDIO_PHY_ID_DEVAD) | ||
| 265 | |||
| 266 | static inline __u16 mdio_phy_id_c45(int prtad, int devad) | ||
| 267 | { | ||
| 268 | return MDIO_PHY_ID_C45 | (prtad << 5) | devad; | ||
| 269 | } | ||
| 270 | |||
| 271 | static inline bool mdio_phy_id_is_c45(int phy_id) | ||
| 272 | { | ||
| 273 | return (phy_id & MDIO_PHY_ID_C45) && !(phy_id & ~MDIO_PHY_ID_C45_MASK); | ||
| 274 | } | ||
| 275 | |||
| 276 | static inline __u16 mdio_phy_id_prtad(int phy_id) | ||
| 277 | { | ||
| 278 | return (phy_id & MDIO_PHY_ID_PRTAD) >> 5; | ||
| 279 | } | ||
| 280 | |||
| 281 | static inline __u16 mdio_phy_id_devad(int phy_id) | ||
| 282 | { | ||
| 283 | return phy_id & MDIO_PHY_ID_DEVAD; | ||
| 284 | } | ||
| 285 | |||
| 286 | #define MDIO_SUPPORTS_C22 1 | ||
| 287 | #define MDIO_SUPPORTS_C45 2 | ||
| 288 | |||
| 289 | #ifdef __KERNEL__ | ||
| 290 | |||
| 291 | /** | ||
| 292 | * struct mdio_if_info - Ethernet controller MDIO interface | ||
| 293 | * @prtad: PRTAD of the PHY (%MDIO_PRTAD_NONE if not present/unknown) | ||
| 294 | * @mmds: Mask of MMDs expected to be present in the PHY. This must be | ||
| 295 | * non-zero unless @prtad = %MDIO_PRTAD_NONE. | ||
| 296 | * @mode_support: MDIO modes supported. If %MDIO_SUPPORTS_C22 is set then | ||
| 297 | * MII register access will be passed through with @devad = | ||
| 298 | * %MDIO_DEVAD_NONE. If %MDIO_EMULATE_C22 is set then access to | ||
| 299 | * commonly used clause 22 registers will be translated into | ||
| 300 | * clause 45 registers. | ||
| 301 | * @dev: Net device structure | ||
| 302 | * @mdio_read: Register read function; returns value or negative error code | ||
| 303 | * @mdio_write: Register write function; returns 0 or negative error code | ||
| 304 | */ | ||
| 305 | struct mdio_if_info { | ||
| 306 | int prtad; | ||
| 307 | u32 __bitwise mmds; | ||
| 308 | unsigned mode_support; | ||
| 309 | |||
| 310 | struct net_device *dev; | ||
| 311 | int (*mdio_read)(struct net_device *dev, int prtad, int devad, | ||
| 312 | u16 addr); | ||
| 313 | int (*mdio_write)(struct net_device *dev, int prtad, int devad, | ||
| 314 | u16 addr, u16 val); | ||
| 315 | }; | ||
| 316 | |||
| 317 | #define MDIO_PRTAD_NONE (-1) | ||
| 318 | #define MDIO_DEVAD_NONE (-1) | ||
| 319 | #define MDIO_EMULATE_C22 4 | ||
| 320 | |||
| 321 | struct ethtool_cmd; | ||
| 322 | struct ethtool_pauseparam; | ||
| 323 | extern int mdio45_probe(struct mdio_if_info *mdio, int prtad); | ||
| 324 | extern int mdio_set_flag(const struct mdio_if_info *mdio, | ||
| 325 | int prtad, int devad, u16 addr, int mask, | ||
| 326 | bool sense); | ||
| 327 | extern int mdio45_links_ok(const struct mdio_if_info *mdio, u32 mmds); | ||
| 328 | extern int mdio45_nway_restart(const struct mdio_if_info *mdio); | ||
| 329 | extern void mdio45_ethtool_gset_npage(const struct mdio_if_info *mdio, | ||
| 330 | struct ethtool_cmd *ecmd, | ||
| 331 | u32 npage_adv, u32 npage_lpa); | ||
| 332 | extern void | ||
| 333 | mdio45_ethtool_spauseparam_an(const struct mdio_if_info *mdio, | ||
| 334 | const struct ethtool_pauseparam *ecmd); | ||
| 335 | |||
| 336 | /** | ||
| 337 | * mdio45_ethtool_gset - get settings for ETHTOOL_GSET | ||
| 338 | * @mdio: MDIO interface | ||
| 339 | * @ecmd: Ethtool request structure | ||
| 340 | * | ||
| 341 | * Since the CSRs for auto-negotiation using next pages are not fully | ||
| 342 | * standardised, this function does not attempt to decode them. Use | ||
| 343 | * mdio45_ethtool_gset_npage() to specify advertisement bits from next | ||
| 344 | * pages. | ||
| 345 | */ | ||
| 346 | static inline void mdio45_ethtool_gset(const struct mdio_if_info *mdio, | ||
| 347 | struct ethtool_cmd *ecmd) | ||
| 348 | { | ||
| 349 | mdio45_ethtool_gset_npage(mdio, ecmd, 0, 0); | ||
| 350 | } | ||
| 351 | |||
| 352 | extern int mdio_mii_ioctl(const struct mdio_if_info *mdio, | ||
| 353 | struct mii_ioctl_data *mii_data, int cmd); | ||
| 354 | |||
| 355 | #endif /* __KERNEL__ */ | ||
| 356 | #endif /* __LINUX_MDIO_H__ */ | ||
diff --git a/include/linux/memcontrol.h b/include/linux/memcontrol.h index 25b9ca93d232..45add35dda1b 100644 --- a/include/linux/memcontrol.h +++ b/include/linux/memcontrol.h | |||
| @@ -94,6 +94,7 @@ extern void mem_cgroup_note_reclaim_priority(struct mem_cgroup *mem, | |||
| 94 | extern void mem_cgroup_record_reclaim_priority(struct mem_cgroup *mem, | 94 | extern void mem_cgroup_record_reclaim_priority(struct mem_cgroup *mem, |
| 95 | int priority); | 95 | int priority); |
| 96 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg); | 96 | int mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg); |
| 97 | int mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg); | ||
| 97 | unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, | 98 | unsigned long mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, |
| 98 | struct zone *zone, | 99 | struct zone *zone, |
| 99 | enum lru_list lru); | 100 | enum lru_list lru); |
| @@ -239,6 +240,12 @@ mem_cgroup_inactive_anon_is_low(struct mem_cgroup *memcg) | |||
| 239 | return 1; | 240 | return 1; |
| 240 | } | 241 | } |
| 241 | 242 | ||
| 243 | static inline int | ||
| 244 | mem_cgroup_inactive_file_is_low(struct mem_cgroup *memcg) | ||
| 245 | { | ||
| 246 | return 1; | ||
| 247 | } | ||
| 248 | |||
| 242 | static inline unsigned long | 249 | static inline unsigned long |
| 243 | mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, struct zone *zone, | 250 | mem_cgroup_zone_nr_pages(struct mem_cgroup *memcg, struct zone *zone, |
| 244 | enum lru_list lru) | 251 | enum lru_list lru) |
diff --git a/include/linux/mg_disk.h b/include/linux/mg_disk.h new file mode 100644 index 000000000000..e11f4d9f1c2e --- /dev/null +++ b/include/linux/mg_disk.h | |||
| @@ -0,0 +1,45 @@ | |||
| 1 | /* | ||
| 2 | * include/linux/mg_disk.c | ||
| 3 | * | ||
| 4 | * Private data for mflash platform driver | ||
| 5 | * | ||
| 6 | * (c) 2008 mGine Co.,LTD | ||
| 7 | * (c) 2008 unsik Kim <donari75@gmail.com> | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License version 2 as | ||
| 11 | * published by the Free Software Foundation. | ||
| 12 | */ | ||
| 13 | |||
| 14 | #ifndef __MG_DISK_H__ | ||
| 15 | #define __MG_DISK_H__ | ||
| 16 | |||
| 17 | /* name for platform device */ | ||
| 18 | #define MG_DEV_NAME "mg_disk" | ||
| 19 | |||
| 20 | /* names of GPIO resource */ | ||
| 21 | #define MG_RST_PIN "mg_rst" | ||
| 22 | /* except MG_BOOT_DEV, reset-out pin should be assigned */ | ||
| 23 | #define MG_RSTOUT_PIN "mg_rstout" | ||
| 24 | |||
| 25 | /* device attribution */ | ||
| 26 | /* use mflash as boot device */ | ||
| 27 | #define MG_BOOT_DEV (1 << 0) | ||
| 28 | /* use mflash as storage device */ | ||
| 29 | #define MG_STORAGE_DEV (1 << 1) | ||
| 30 | /* same as MG_STORAGE_DEV, but bootloader already done reset sequence */ | ||
| 31 | #define MG_STORAGE_DEV_SKIP_RST (1 << 2) | ||
| 32 | |||
| 33 | /* private driver data */ | ||
| 34 | struct mg_drv_data { | ||
| 35 | /* disk resource */ | ||
| 36 | u32 use_polling; | ||
| 37 | |||
| 38 | /* device attribution */ | ||
| 39 | u32 dev_attr; | ||
| 40 | |||
| 41 | /* internally used */ | ||
| 42 | void *host; | ||
| 43 | }; | ||
| 44 | |||
| 45 | #endif | ||
diff --git a/include/linux/mii.h b/include/linux/mii.h index ad748588faf1..359fba880274 100644 --- a/include/linux/mii.h +++ b/include/linux/mii.h | |||
| @@ -240,6 +240,22 @@ static inline unsigned int mii_duplex (unsigned int duplex_lock, | |||
| 240 | } | 240 | } |
| 241 | 241 | ||
| 242 | /** | 242 | /** |
| 243 | * mii_advertise_flowctrl - get flow control advertisement flags | ||
| 244 | * @cap: Flow control capabilities (FLOW_CTRL_RX, FLOW_CTRL_TX or both) | ||
| 245 | */ | ||
| 246 | static inline u16 mii_advertise_flowctrl(int cap) | ||
| 247 | { | ||
| 248 | u16 adv = 0; | ||
| 249 | |||
| 250 | if (cap & FLOW_CTRL_RX) | ||
| 251 | adv = ADVERTISE_PAUSE_CAP | ADVERTISE_PAUSE_ASYM; | ||
| 252 | if (cap & FLOW_CTRL_TX) | ||
| 253 | adv ^= ADVERTISE_PAUSE_ASYM; | ||
| 254 | |||
| 255 | return adv; | ||
| 256 | } | ||
| 257 | |||
| 258 | /** | ||
| 243 | * mii_resolve_flowctrl_fdx | 259 | * mii_resolve_flowctrl_fdx |
| 244 | * @lcladv: value of MII ADVERTISE register | 260 | * @lcladv: value of MII ADVERTISE register |
| 245 | * @rmtadv: value of MII LPA register | 261 | * @rmtadv: value of MII LPA register |
| @@ -250,18 +266,12 @@ static inline u8 mii_resolve_flowctrl_fdx(u16 lcladv, u16 rmtadv) | |||
| 250 | { | 266 | { |
| 251 | u8 cap = 0; | 267 | u8 cap = 0; |
| 252 | 268 | ||
| 253 | if (lcladv & ADVERTISE_PAUSE_CAP) { | 269 | if (lcladv & rmtadv & ADVERTISE_PAUSE_CAP) { |
| 254 | if (lcladv & ADVERTISE_PAUSE_ASYM) { | 270 | cap = FLOW_CTRL_TX | FLOW_CTRL_RX; |
| 255 | if (rmtadv & LPA_PAUSE_CAP) | 271 | } else if (lcladv & rmtadv & ADVERTISE_PAUSE_ASYM) { |
| 256 | cap = FLOW_CTRL_TX | FLOW_CTRL_RX; | 272 | if (lcladv & ADVERTISE_PAUSE_CAP) |
| 257 | else if (rmtadv & LPA_PAUSE_ASYM) | 273 | cap = FLOW_CTRL_RX; |
| 258 | cap = FLOW_CTRL_RX; | 274 | else if (rmtadv & ADVERTISE_PAUSE_CAP) |
| 259 | } else { | ||
| 260 | if (rmtadv & LPA_PAUSE_CAP) | ||
| 261 | cap = FLOW_CTRL_TX | FLOW_CTRL_RX; | ||
| 262 | } | ||
| 263 | } else if (lcladv & ADVERTISE_PAUSE_ASYM) { | ||
| 264 | if ((rmtadv & LPA_PAUSE_CAP) && (rmtadv & LPA_PAUSE_ASYM)) | ||
| 265 | cap = FLOW_CTRL_TX; | 275 | cap = FLOW_CTRL_TX; |
| 266 | } | 276 | } |
| 267 | 277 | ||
diff --git a/include/linux/miscdevice.h b/include/linux/miscdevice.h index beb6ec99cfef..052117744629 100644 --- a/include/linux/miscdevice.h +++ b/include/linux/miscdevice.h | |||
| @@ -41,6 +41,7 @@ struct miscdevice { | |||
| 41 | struct list_head list; | 41 | struct list_head list; |
| 42 | struct device *parent; | 42 | struct device *parent; |
| 43 | struct device *this_device; | 43 | struct device *this_device; |
| 44 | const char *devnode; | ||
| 44 | }; | 45 | }; |
| 45 | 46 | ||
| 46 | extern int misc_register(struct miscdevice * misc); | 47 | extern int misc_register(struct miscdevice * misc); |
diff --git a/include/linux/mm.h b/include/linux/mm.h index ad613ed66ab0..d88d6fc530ad 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -7,7 +7,6 @@ | |||
| 7 | 7 | ||
| 8 | #include <linux/gfp.h> | 8 | #include <linux/gfp.h> |
| 9 | #include <linux/list.h> | 9 | #include <linux/list.h> |
| 10 | #include <linux/mmdebug.h> | ||
| 11 | #include <linux/mmzone.h> | 10 | #include <linux/mmzone.h> |
| 12 | #include <linux/rbtree.h> | 11 | #include <linux/rbtree.h> |
| 13 | #include <linux/prio_tree.h> | 12 | #include <linux/prio_tree.h> |
| @@ -725,7 +724,7 @@ static inline int shmem_lock(struct file *file, int lock, | |||
| 725 | return 0; | 724 | return 0; |
| 726 | } | 725 | } |
| 727 | #endif | 726 | #endif |
| 728 | struct file *shmem_file_setup(char *name, loff_t size, unsigned long flags); | 727 | struct file *shmem_file_setup(const char *name, loff_t size, unsigned long flags); |
| 729 | 728 | ||
| 730 | int shmem_zero_setup(struct vm_area_struct *); | 729 | int shmem_zero_setup(struct vm_area_struct *); |
| 731 | 730 | ||
| @@ -793,6 +792,8 @@ int copy_page_range(struct mm_struct *dst, struct mm_struct *src, | |||
| 793 | struct vm_area_struct *vma); | 792 | struct vm_area_struct *vma); |
| 794 | void unmap_mapping_range(struct address_space *mapping, | 793 | void unmap_mapping_range(struct address_space *mapping, |
| 795 | loff_t const holebegin, loff_t const holelen, int even_cows); | 794 | loff_t const holebegin, loff_t const holelen, int even_cows); |
| 795 | int follow_pfn(struct vm_area_struct *vma, unsigned long address, | ||
| 796 | unsigned long *pfn); | ||
| 796 | int follow_phys(struct vm_area_struct *vma, unsigned long address, | 797 | int follow_phys(struct vm_area_struct *vma, unsigned long address, |
| 797 | unsigned int flags, unsigned long *prot, resource_size_t *phys); | 798 | unsigned int flags, unsigned long *prot, resource_size_t *phys); |
| 798 | int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, | 799 | int generic_access_phys(struct vm_area_struct *vma, unsigned long addr, |
| @@ -824,8 +825,11 @@ static inline int handle_mm_fault(struct mm_struct *mm, | |||
| 824 | extern int make_pages_present(unsigned long addr, unsigned long end); | 825 | extern int make_pages_present(unsigned long addr, unsigned long end); |
| 825 | extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); | 826 | extern int access_process_vm(struct task_struct *tsk, unsigned long addr, void *buf, int len, int write); |
| 826 | 827 | ||
| 827 | int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, unsigned long start, | 828 | int get_user_pages(struct task_struct *tsk, struct mm_struct *mm, |
| 828 | int len, int write, int force, struct page **pages, struct vm_area_struct **vmas); | 829 | unsigned long start, int len, int write, int force, |
| 830 | struct page **pages, struct vm_area_struct **vmas); | ||
| 831 | int get_user_pages_fast(unsigned long start, int nr_pages, int write, | ||
| 832 | struct page **pages); | ||
| 829 | 833 | ||
| 830 | extern int try_to_release_page(struct page * page, gfp_t gfp_mask); | 834 | extern int try_to_release_page(struct page * page, gfp_t gfp_mask); |
| 831 | extern void do_invalidatepage(struct page *page, unsigned long offset); | 835 | extern void do_invalidatepage(struct page *page, unsigned long offset); |
| @@ -850,19 +854,6 @@ extern int mprotect_fixup(struct vm_area_struct *vma, | |||
| 850 | unsigned long end, unsigned long newflags); | 854 | unsigned long end, unsigned long newflags); |
| 851 | 855 | ||
| 852 | /* | 856 | /* |
| 853 | * get_user_pages_fast provides equivalent functionality to get_user_pages, | ||
| 854 | * operating on current and current->mm (force=0 and doesn't return any vmas). | ||
| 855 | * | ||
| 856 | * get_user_pages_fast may take mmap_sem and page tables, so no assumptions | ||
| 857 | * can be made about locking. get_user_pages_fast is to be implemented in a | ||
| 858 | * way that is advantageous (vs get_user_pages()) when the user memory area is | ||
| 859 | * already faulted in and present in ptes. However if the pages have to be | ||
| 860 | * faulted in, it may turn out to be slightly slower). | ||
| 861 | */ | ||
| 862 | int get_user_pages_fast(unsigned long start, int nr_pages, int write, | ||
| 863 | struct page **pages); | ||
| 864 | |||
| 865 | /* | ||
| 866 | * A callback you can register to apply pressure to ageable caches. | 857 | * A callback you can register to apply pressure to ageable caches. |
| 867 | * | 858 | * |
| 868 | * 'shrink' is passed a count 'nr_to_scan' and a 'gfpmask'. It should | 859 | * 'shrink' is passed a count 'nr_to_scan' and a 'gfpmask'. It should |
| @@ -1061,7 +1052,8 @@ extern int __meminit __early_pfn_to_nid(unsigned long pfn); | |||
| 1061 | extern void set_dma_reserve(unsigned long new_dma_reserve); | 1052 | extern void set_dma_reserve(unsigned long new_dma_reserve); |
| 1062 | extern void memmap_init_zone(unsigned long, int, unsigned long, | 1053 | extern void memmap_init_zone(unsigned long, int, unsigned long, |
| 1063 | unsigned long, enum memmap_context); | 1054 | unsigned long, enum memmap_context); |
| 1064 | extern void setup_per_zone_pages_min(void); | 1055 | extern void setup_per_zone_wmarks(void); |
| 1056 | extern void calculate_zone_inactive_ratio(struct zone *zone); | ||
| 1065 | extern void mem_init(void); | 1057 | extern void mem_init(void); |
| 1066 | extern void __init mmap_init(void); | 1058 | extern void __init mmap_init(void); |
| 1067 | extern void show_mem(void); | 1059 | extern void show_mem(void); |
| @@ -1178,8 +1170,6 @@ void task_dirty_inc(struct task_struct *tsk); | |||
| 1178 | #define VM_MAX_READAHEAD 128 /* kbytes */ | 1170 | #define VM_MAX_READAHEAD 128 /* kbytes */ |
| 1179 | #define VM_MIN_READAHEAD 16 /* kbytes (includes current page) */ | 1171 | #define VM_MIN_READAHEAD 16 /* kbytes (includes current page) */ |
| 1180 | 1172 | ||
| 1181 | int do_page_cache_readahead(struct address_space *mapping, struct file *filp, | ||
| 1182 | pgoff_t offset, unsigned long nr_to_read); | ||
| 1183 | int force_page_cache_readahead(struct address_space *mapping, struct file *filp, | 1173 | int force_page_cache_readahead(struct address_space *mapping, struct file *filp, |
| 1184 | pgoff_t offset, unsigned long nr_to_read); | 1174 | pgoff_t offset, unsigned long nr_to_read); |
| 1185 | 1175 | ||
| @@ -1197,6 +1187,9 @@ void page_cache_async_readahead(struct address_space *mapping, | |||
| 1197 | unsigned long size); | 1187 | unsigned long size); |
| 1198 | 1188 | ||
| 1199 | unsigned long max_sane_readahead(unsigned long nr); | 1189 | unsigned long max_sane_readahead(unsigned long nr); |
| 1190 | unsigned long ra_submit(struct file_ra_state *ra, | ||
| 1191 | struct address_space *mapping, | ||
| 1192 | struct file *filp); | ||
| 1200 | 1193 | ||
| 1201 | /* Do stack extension */ | 1194 | /* Do stack extension */ |
| 1202 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); | 1195 | extern int expand_stack(struct vm_area_struct *vma, unsigned long address); |
diff --git a/include/linux/mm_types.h b/include/linux/mm_types.h index 0e80e26ecf21..7acc8439d9b3 100644 --- a/include/linux/mm_types.h +++ b/include/linux/mm_types.h | |||
| @@ -98,6 +98,14 @@ struct page { | |||
| 98 | #ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS | 98 | #ifdef CONFIG_WANT_PAGE_DEBUG_FLAGS |
| 99 | unsigned long debug_flags; /* Use atomic bitops on this */ | 99 | unsigned long debug_flags; /* Use atomic bitops on this */ |
| 100 | #endif | 100 | #endif |
| 101 | |||
| 102 | #ifdef CONFIG_KMEMCHECK | ||
| 103 | /* | ||
| 104 | * kmemcheck wants to track the status of each byte in a page; this | ||
| 105 | * is a pointer to such a status block. NULL if not tracked. | ||
| 106 | */ | ||
| 107 | void *shadow; | ||
| 108 | #endif | ||
| 101 | }; | 109 | }; |
| 102 | 110 | ||
| 103 | /* | 111 | /* |
| @@ -232,6 +240,8 @@ struct mm_struct { | |||
| 232 | 240 | ||
| 233 | unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ | 241 | unsigned long saved_auxv[AT_VECTOR_SIZE]; /* for /proc/PID/auxv */ |
| 234 | 242 | ||
| 243 | s8 oom_adj; /* OOM kill score adjustment (bit shift) */ | ||
| 244 | |||
| 235 | cpumask_t cpu_vm_mask; | 245 | cpumask_t cpu_vm_mask; |
| 236 | 246 | ||
| 237 | /* Architecture-specific MM context */ | 247 | /* Architecture-specific MM context */ |
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index ea1bf5ba092f..39751c8cde9c 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h | |||
| @@ -25,5 +25,15 @@ | |||
| 25 | 25 | ||
| 26 | #define SDIO_VENDOR_ID_MARVELL 0x02df | 26 | #define SDIO_VENDOR_ID_MARVELL 0x02df |
| 27 | #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 | 27 | #define SDIO_DEVICE_ID_MARVELL_LIBERTAS 0x9103 |
| 28 | #define SDIO_DEVICE_ID_MARVELL_8688WLAN 0x9104 | ||
| 29 | #define SDIO_DEVICE_ID_MARVELL_8688BT 0x9105 | ||
| 30 | |||
| 31 | #define SDIO_VENDOR_ID_SIANO 0x039a | ||
| 32 | #define SDIO_DEVICE_ID_SIANO_NOVA_B0 0x0201 | ||
| 33 | #define SDIO_DEVICE_ID_SIANO_NICE 0x0202 | ||
| 34 | #define SDIO_DEVICE_ID_SIANO_VEGA_A0 0x0300 | ||
| 35 | #define SDIO_DEVICE_ID_SIANO_VENICE 0x0301 | ||
| 36 | #define SDIO_DEVICE_ID_SIANO_NOVA_A0 0x1100 | ||
| 37 | #define SDIO_DEVICE_ID_SIANO_STELLAR 0x5347 | ||
| 28 | 38 | ||
| 29 | #endif | 39 | #endif |
diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h index a47c879e1304..889598537370 100644 --- a/include/linux/mmzone.h +++ b/include/linux/mmzone.h | |||
| @@ -50,9 +50,6 @@ extern int page_group_by_mobility_disabled; | |||
| 50 | 50 | ||
| 51 | static inline int get_pageblock_migratetype(struct page *page) | 51 | static inline int get_pageblock_migratetype(struct page *page) |
| 52 | { | 52 | { |
| 53 | if (unlikely(page_group_by_mobility_disabled)) | ||
| 54 | return MIGRATE_UNMOVABLE; | ||
| 55 | |||
| 56 | return get_pageblock_flags_group(page, PB_migrate, PB_migrate_end); | 53 | return get_pageblock_flags_group(page, PB_migrate, PB_migrate_end); |
| 57 | } | 54 | } |
| 58 | 55 | ||
| @@ -86,13 +83,8 @@ enum zone_stat_item { | |||
| 86 | NR_ACTIVE_ANON, /* " " " " " */ | 83 | NR_ACTIVE_ANON, /* " " " " " */ |
| 87 | NR_INACTIVE_FILE, /* " " " " " */ | 84 | NR_INACTIVE_FILE, /* " " " " " */ |
| 88 | NR_ACTIVE_FILE, /* " " " " " */ | 85 | NR_ACTIVE_FILE, /* " " " " " */ |
| 89 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 90 | NR_UNEVICTABLE, /* " " " " " */ | 86 | NR_UNEVICTABLE, /* " " " " " */ |
| 91 | NR_MLOCK, /* mlock()ed pages found and moved off LRU */ | 87 | NR_MLOCK, /* mlock()ed pages found and moved off LRU */ |
| 92 | #else | ||
| 93 | NR_UNEVICTABLE = NR_ACTIVE_FILE, /* avoid compiler errors in dead code */ | ||
| 94 | NR_MLOCK = NR_ACTIVE_FILE, | ||
| 95 | #endif | ||
| 96 | NR_ANON_PAGES, /* Mapped anonymous pages */ | 88 | NR_ANON_PAGES, /* Mapped anonymous pages */ |
| 97 | NR_FILE_MAPPED, /* pagecache pages mapped into pagetables. | 89 | NR_FILE_MAPPED, /* pagecache pages mapped into pagetables. |
| 98 | only modified from process context */ | 90 | only modified from process context */ |
| @@ -135,11 +127,7 @@ enum lru_list { | |||
| 135 | LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE, | 127 | LRU_ACTIVE_ANON = LRU_BASE + LRU_ACTIVE, |
| 136 | LRU_INACTIVE_FILE = LRU_BASE + LRU_FILE, | 128 | LRU_INACTIVE_FILE = LRU_BASE + LRU_FILE, |
| 137 | LRU_ACTIVE_FILE = LRU_BASE + LRU_FILE + LRU_ACTIVE, | 129 | LRU_ACTIVE_FILE = LRU_BASE + LRU_FILE + LRU_ACTIVE, |
| 138 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 139 | LRU_UNEVICTABLE, | 130 | LRU_UNEVICTABLE, |
| 140 | #else | ||
| 141 | LRU_UNEVICTABLE = LRU_ACTIVE_FILE, /* avoid compiler errors in dead code */ | ||
| 142 | #endif | ||
| 143 | NR_LRU_LISTS | 131 | NR_LRU_LISTS |
| 144 | }; | 132 | }; |
| 145 | 133 | ||
| @@ -159,13 +147,20 @@ static inline int is_active_lru(enum lru_list l) | |||
| 159 | 147 | ||
| 160 | static inline int is_unevictable_lru(enum lru_list l) | 148 | static inline int is_unevictable_lru(enum lru_list l) |
| 161 | { | 149 | { |
| 162 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 163 | return (l == LRU_UNEVICTABLE); | 150 | return (l == LRU_UNEVICTABLE); |
| 164 | #else | ||
| 165 | return 0; | ||
| 166 | #endif | ||
| 167 | } | 151 | } |
| 168 | 152 | ||
| 153 | enum zone_watermarks { | ||
| 154 | WMARK_MIN, | ||
| 155 | WMARK_LOW, | ||
| 156 | WMARK_HIGH, | ||
| 157 | NR_WMARK | ||
| 158 | }; | ||
| 159 | |||
| 160 | #define min_wmark_pages(z) (z->watermark[WMARK_MIN]) | ||
| 161 | #define low_wmark_pages(z) (z->watermark[WMARK_LOW]) | ||
| 162 | #define high_wmark_pages(z) (z->watermark[WMARK_HIGH]) | ||
| 163 | |||
| 169 | struct per_cpu_pages { | 164 | struct per_cpu_pages { |
| 170 | int count; /* number of pages in the list */ | 165 | int count; /* number of pages in the list */ |
| 171 | int high; /* high watermark, emptying needed */ | 166 | int high; /* high watermark, emptying needed */ |
| @@ -278,7 +273,10 @@ struct zone_reclaim_stat { | |||
| 278 | 273 | ||
| 279 | struct zone { | 274 | struct zone { |
| 280 | /* Fields commonly accessed by the page allocator */ | 275 | /* Fields commonly accessed by the page allocator */ |
| 281 | unsigned long pages_min, pages_low, pages_high; | 276 | |
| 277 | /* zone watermarks, access with *_wmark_pages(zone) macros */ | ||
| 278 | unsigned long watermark[NR_WMARK]; | ||
| 279 | |||
| 282 | /* | 280 | /* |
| 283 | * We don't know if the memory that we're going to allocate will be freeable | 281 | * We don't know if the memory that we're going to allocate will be freeable |
| 284 | * or/and it will be released eventually, so to avoid totally wasting several | 282 | * or/and it will be released eventually, so to avoid totally wasting several |
| @@ -323,9 +321,9 @@ struct zone { | |||
| 323 | 321 | ||
| 324 | /* Fields commonly accessed by the page reclaim scanner */ | 322 | /* Fields commonly accessed by the page reclaim scanner */ |
| 325 | spinlock_t lru_lock; | 323 | spinlock_t lru_lock; |
| 326 | struct { | 324 | struct zone_lru { |
| 327 | struct list_head list; | 325 | struct list_head list; |
| 328 | unsigned long nr_scan; | 326 | unsigned long nr_saved_scan; /* accumulated for batching */ |
| 329 | } lru[NR_LRU_LISTS]; | 327 | } lru[NR_LRU_LISTS]; |
| 330 | 328 | ||
| 331 | struct zone_reclaim_stat reclaim_stat; | 329 | struct zone_reclaim_stat reclaim_stat; |
diff --git a/include/linux/module.h b/include/linux/module.h index a7bc6e7b43a7..505f20dcc1c7 100644 --- a/include/linux/module.h +++ b/include/linux/module.h | |||
| @@ -697,4 +697,21 @@ static inline void module_remove_modinfo_attrs(struct module *mod) | |||
| 697 | 697 | ||
| 698 | #define __MODULE_STRING(x) __stringify(x) | 698 | #define __MODULE_STRING(x) __stringify(x) |
| 699 | 699 | ||
| 700 | |||
| 701 | #ifdef CONFIG_GENERIC_BUG | ||
| 702 | int module_bug_finalize(const Elf_Ehdr *, const Elf_Shdr *, | ||
| 703 | struct module *); | ||
| 704 | void module_bug_cleanup(struct module *); | ||
| 705 | |||
| 706 | #else /* !CONFIG_GENERIC_BUG */ | ||
| 707 | |||
| 708 | static inline int module_bug_finalize(const Elf_Ehdr *hdr, | ||
| 709 | const Elf_Shdr *sechdrs, | ||
| 710 | struct module *mod) | ||
| 711 | { | ||
| 712 | return 0; | ||
| 713 | } | ||
| 714 | static inline void module_bug_cleanup(struct module *mod) {} | ||
| 715 | #endif /* CONFIG_GENERIC_BUG */ | ||
| 716 | |||
| 700 | #endif /* _LINUX_MODULE_H */ | 717 | #endif /* _LINUX_MODULE_H */ |
diff --git a/include/linux/mtd/ubi.h b/include/linux/mtd/ubi.h index 6316fafe5c2a..6913b71d9ab2 100644 --- a/include/linux/mtd/ubi.h +++ b/include/linux/mtd/ubi.h | |||
| @@ -132,6 +132,39 @@ struct ubi_device_info { | |||
| 132 | dev_t cdev; | 132 | dev_t cdev; |
| 133 | }; | 133 | }; |
| 134 | 134 | ||
| 135 | /* | ||
| 136 | * enum - volume notification types. | ||
| 137 | * @UBI_VOLUME_ADDED: volume has been added | ||
| 138 | * @UBI_VOLUME_REMOVED: start volume volume | ||
| 139 | * @UBI_VOLUME_RESIZED: volume size has been re-sized | ||
| 140 | * @UBI_VOLUME_RENAMED: volume name has been re-named | ||
| 141 | * @UBI_VOLUME_UPDATED: volume name has been updated | ||
| 142 | * | ||
| 143 | * These constants define which type of event has happened when a volume | ||
| 144 | * notification function is invoked. | ||
| 145 | */ | ||
| 146 | enum { | ||
| 147 | UBI_VOLUME_ADDED, | ||
| 148 | UBI_VOLUME_REMOVED, | ||
| 149 | UBI_VOLUME_RESIZED, | ||
| 150 | UBI_VOLUME_RENAMED, | ||
| 151 | UBI_VOLUME_UPDATED, | ||
| 152 | }; | ||
| 153 | |||
| 154 | /* | ||
| 155 | * struct ubi_notification - UBI notification description structure. | ||
| 156 | * @di: UBI device description object | ||
| 157 | * @vi: UBI volume description object | ||
| 158 | * | ||
| 159 | * UBI notifiers are called with a pointer to an object of this type. The | ||
| 160 | * object describes the notification. Namely, it provides a description of the | ||
| 161 | * UBI device and UBI volume the notification informs about. | ||
| 162 | */ | ||
| 163 | struct ubi_notification { | ||
| 164 | struct ubi_device_info di; | ||
| 165 | struct ubi_volume_info vi; | ||
| 166 | }; | ||
| 167 | |||
| 135 | /* UBI descriptor given to users when they open UBI volumes */ | 168 | /* UBI descriptor given to users when they open UBI volumes */ |
| 136 | struct ubi_volume_desc; | 169 | struct ubi_volume_desc; |
| 137 | 170 | ||
| @@ -141,6 +174,10 @@ void ubi_get_volume_info(struct ubi_volume_desc *desc, | |||
| 141 | struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode); | 174 | struct ubi_volume_desc *ubi_open_volume(int ubi_num, int vol_id, int mode); |
| 142 | struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name, | 175 | struct ubi_volume_desc *ubi_open_volume_nm(int ubi_num, const char *name, |
| 143 | int mode); | 176 | int mode); |
| 177 | int ubi_register_volume_notifier(struct notifier_block *nb, | ||
| 178 | int ignore_existing); | ||
| 179 | int ubi_unregister_volume_notifier(struct notifier_block *nb); | ||
| 180 | |||
| 144 | void ubi_close_volume(struct ubi_volume_desc *desc); | 181 | void ubi_close_volume(struct ubi_volume_desc *desc); |
| 145 | int ubi_leb_read(struct ubi_volume_desc *desc, int lnum, char *buf, int offset, | 182 | int ubi_leb_read(struct ubi_volume_desc *desc, int lnum, char *buf, int offset, |
| 146 | int len, int check); | 183 | int len, int check); |
diff --git a/include/linux/net_dropmon.h b/include/linux/net_dropmon.h index 0e2e100c44a2..3ceb0cc1bc78 100644 --- a/include/linux/net_dropmon.h +++ b/include/linux/net_dropmon.h | |||
| @@ -3,12 +3,20 @@ | |||
| 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> | ||
| 6 | 7 | ||
| 7 | struct net_dm_drop_point { | 8 | struct net_dm_drop_point { |
| 8 | __u8 pc[8]; | 9 | __u8 pc[8]; |
| 9 | __u32 count; | 10 | __u32 count; |
| 10 | }; | 11 | }; |
| 11 | 12 | ||
| 13 | #define is_drop_point_hw(x) do {\ | ||
| 14 | int ____i, ____j;\ | ||
| 15 | for (____i = 0; ____i < 8; i ____i++)\ | ||
| 16 | ____j |= x[____i];\ | ||
| 17 | ____j;\ | ||
| 18 | } while (0) | ||
| 19 | |||
| 12 | #define NET_DM_CFG_VERSION 0 | 20 | #define NET_DM_CFG_VERSION 0 |
| 13 | #define NET_DM_CFG_ALERT_COUNT 1 | 21 | #define NET_DM_CFG_ALERT_COUNT 1 |
| 14 | #define NET_DM_CFG_ALERT_DELAY 2 | 22 | #define NET_DM_CFG_ALERT_DELAY 2 |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 5a96a1a406e9..9ea8d6dfe540 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -39,9 +39,11 @@ | |||
| 39 | 39 | ||
| 40 | #include <linux/device.h> | 40 | #include <linux/device.h> |
| 41 | #include <linux/percpu.h> | 41 | #include <linux/percpu.h> |
| 42 | #include <linux/rculist.h> | ||
| 42 | #include <linux/dmaengine.h> | 43 | #include <linux/dmaengine.h> |
| 43 | #include <linux/workqueue.h> | 44 | #include <linux/workqueue.h> |
| 44 | 45 | ||
| 46 | #include <linux/ethtool.h> | ||
| 45 | #include <net/net_namespace.h> | 47 | #include <net/net_namespace.h> |
| 46 | #include <net/dsa.h> | 48 | #include <net/dsa.h> |
| 47 | #ifdef CONFIG_DCB | 49 | #ifdef CONFIG_DCB |
| @@ -49,7 +51,6 @@ | |||
| 49 | #endif | 51 | #endif |
| 50 | 52 | ||
| 51 | struct vlan_group; | 53 | struct vlan_group; |
| 52 | struct ethtool_ops; | ||
| 53 | struct netpoll_info; | 54 | struct netpoll_info; |
| 54 | /* 802.11 specific */ | 55 | /* 802.11 specific */ |
| 55 | struct wireless_dev; | 56 | struct wireless_dev; |
| @@ -210,6 +211,19 @@ struct dev_addr_list | |||
| 210 | #define dmi_users da_users | 211 | #define dmi_users da_users |
| 211 | #define dmi_gusers da_gusers | 212 | #define dmi_gusers da_gusers |
| 212 | 213 | ||
| 214 | struct netdev_hw_addr { | ||
| 215 | struct list_head list; | ||
| 216 | unsigned char addr[MAX_ADDR_LEN]; | ||
| 217 | unsigned char type; | ||
| 218 | #define NETDEV_HW_ADDR_T_LAN 1 | ||
| 219 | #define NETDEV_HW_ADDR_T_SAN 2 | ||
| 220 | #define NETDEV_HW_ADDR_T_SLAVE 3 | ||
| 221 | #define NETDEV_HW_ADDR_T_UNICAST 4 | ||
| 222 | int refcount; | ||
| 223 | bool synced; | ||
| 224 | struct rcu_head rcu_head; | ||
| 225 | }; | ||
| 226 | |||
| 213 | struct hh_cache | 227 | struct hh_cache |
| 214 | { | 228 | { |
| 215 | struct hh_cache *hh_next; /* Next entry */ | 229 | struct hh_cache *hh_next; /* Next entry */ |
| @@ -447,12 +461,25 @@ enum netdev_queue_state_t | |||
| 447 | }; | 461 | }; |
| 448 | 462 | ||
| 449 | struct netdev_queue { | 463 | struct netdev_queue { |
| 464 | /* | ||
| 465 | * read mostly part | ||
| 466 | */ | ||
| 450 | struct net_device *dev; | 467 | struct net_device *dev; |
| 451 | struct Qdisc *qdisc; | 468 | struct Qdisc *qdisc; |
| 452 | unsigned long state; | 469 | unsigned long state; |
| 453 | spinlock_t _xmit_lock; | ||
| 454 | int xmit_lock_owner; | ||
| 455 | struct Qdisc *qdisc_sleeping; | 470 | struct Qdisc *qdisc_sleeping; |
| 471 | /* | ||
| 472 | * write mostly part | ||
| 473 | */ | ||
| 474 | spinlock_t _xmit_lock ____cacheline_aligned_in_smp; | ||
| 475 | int xmit_lock_owner; | ||
| 476 | /* | ||
| 477 | * please use this field instead of dev->trans_start | ||
| 478 | */ | ||
| 479 | unsigned long trans_start; | ||
| 480 | unsigned long tx_bytes; | ||
| 481 | unsigned long tx_packets; | ||
| 482 | unsigned long tx_dropped; | ||
| 456 | } ____cacheline_aligned_in_smp; | 483 | } ____cacheline_aligned_in_smp; |
| 457 | 484 | ||
| 458 | 485 | ||
| @@ -670,7 +697,9 @@ struct net_device | |||
| 670 | #define NETIF_F_GRO 16384 /* Generic receive offload */ | 697 | #define NETIF_F_GRO 16384 /* Generic receive offload */ |
| 671 | #define NETIF_F_LRO 32768 /* large receive offload */ | 698 | #define NETIF_F_LRO 32768 /* large receive offload */ |
| 672 | 699 | ||
| 700 | /* the GSO_MASK reserves bits 16 through 23 */ | ||
| 673 | #define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */ | 701 | #define NETIF_F_FCOE_CRC (1 << 24) /* FCoE CRC32 */ |
| 702 | #define NETIF_F_SCTP_CSUM (1 << 25) /* SCTP checksum offload */ | ||
| 674 | 703 | ||
| 675 | /* Segmentation offload features */ | 704 | /* Segmentation offload features */ |
| 676 | #define NETIF_F_GSO_SHIFT 16 | 705 | #define NETIF_F_GSO_SHIFT 16 |
| @@ -747,10 +776,11 @@ struct net_device | |||
| 747 | unsigned char addr_len; /* hardware address length */ | 776 | unsigned char addr_len; /* hardware address length */ |
| 748 | unsigned short dev_id; /* for shared network cards */ | 777 | unsigned short dev_id; /* for shared network cards */ |
| 749 | 778 | ||
| 750 | spinlock_t addr_list_lock; | 779 | struct list_head uc_list; /* Secondary unicast mac |
| 751 | struct dev_addr_list *uc_list; /* Secondary unicast mac addresses */ | 780 | addresses */ |
| 752 | int uc_count; /* Number of installed ucasts */ | 781 | int uc_count; /* Number of installed ucasts */ |
| 753 | int uc_promisc; | 782 | int uc_promisc; |
| 783 | spinlock_t addr_list_lock; | ||
| 754 | struct dev_addr_list *mc_list; /* Multicast mac addresses */ | 784 | struct dev_addr_list *mc_list; /* Multicast mac addresses */ |
| 755 | int mc_count; /* Number of installed mcasts */ | 785 | int mc_count; /* Number of installed mcasts */ |
| 756 | unsigned int promiscuity; | 786 | unsigned int promiscuity; |
| @@ -776,8 +806,11 @@ struct net_device | |||
| 776 | */ | 806 | */ |
| 777 | unsigned long last_rx; /* Time of last Rx */ | 807 | unsigned long last_rx; /* Time of last Rx */ |
| 778 | /* Interface address info used in eth_type_trans() */ | 808 | /* Interface address info used in eth_type_trans() */ |
| 779 | unsigned char dev_addr[MAX_ADDR_LEN]; /* hw address, (before bcast | 809 | unsigned char *dev_addr; /* hw address, (before bcast |
| 780 | because most packets are unicast) */ | 810 | because most packets are |
| 811 | unicast) */ | ||
| 812 | |||
| 813 | struct list_head dev_addr_list; /* list of device hw addresses */ | ||
| 781 | 814 | ||
| 782 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ | 815 | unsigned char broadcast[MAX_ADDR_LEN]; /* hw bcast add */ |
| 783 | 816 | ||
| @@ -797,6 +830,11 @@ struct net_device | |||
| 797 | * One part is mostly used on xmit path (device) | 830 | * One part is mostly used on xmit path (device) |
| 798 | */ | 831 | */ |
| 799 | /* These may be needed for future network-power-down code. */ | 832 | /* These may be needed for future network-power-down code. */ |
| 833 | |||
| 834 | /* | ||
| 835 | * trans_start here is expensive for high speed devices on SMP, | ||
| 836 | * please use netdev_queue->trans_start instead. | ||
| 837 | */ | ||
| 800 | unsigned long trans_start; /* Time (in jiffies) of last Tx */ | 838 | unsigned long trans_start; /* Time (in jiffies) of last Tx */ |
| 801 | 839 | ||
| 802 | int watchdog_timeo; /* used by dev_watchdog() */ | 840 | int watchdog_timeo; /* used by dev_watchdog() */ |
| @@ -867,49 +905,10 @@ struct net_device | |||
| 867 | /* max exchange id for FCoE LRO by ddp */ | 905 | /* max exchange id for FCoE LRO by ddp */ |
| 868 | unsigned int fcoe_ddp_xid; | 906 | unsigned int fcoe_ddp_xid; |
| 869 | #endif | 907 | #endif |
| 870 | |||
| 871 | #ifdef CONFIG_COMPAT_NET_DEV_OPS | ||
| 872 | struct { | ||
| 873 | int (*init)(struct net_device *dev); | ||
| 874 | void (*uninit)(struct net_device *dev); | ||
| 875 | int (*open)(struct net_device *dev); | ||
| 876 | int (*stop)(struct net_device *dev); | ||
| 877 | int (*hard_start_xmit) (struct sk_buff *skb, | ||
| 878 | struct net_device *dev); | ||
| 879 | u16 (*select_queue)(struct net_device *dev, | ||
| 880 | struct sk_buff *skb); | ||
| 881 | void (*change_rx_flags)(struct net_device *dev, | ||
| 882 | int flags); | ||
| 883 | void (*set_rx_mode)(struct net_device *dev); | ||
| 884 | void (*set_multicast_list)(struct net_device *dev); | ||
| 885 | int (*set_mac_address)(struct net_device *dev, | ||
| 886 | void *addr); | ||
| 887 | int (*validate_addr)(struct net_device *dev); | ||
| 888 | int (*do_ioctl)(struct net_device *dev, | ||
| 889 | struct ifreq *ifr, int cmd); | ||
| 890 | int (*set_config)(struct net_device *dev, | ||
| 891 | struct ifmap *map); | ||
| 892 | int (*change_mtu)(struct net_device *dev, int new_mtu); | ||
| 893 | int (*neigh_setup)(struct net_device *dev, | ||
| 894 | struct neigh_parms *); | ||
| 895 | void (*tx_timeout) (struct net_device *dev); | ||
| 896 | struct net_device_stats* (*get_stats)(struct net_device *dev); | ||
| 897 | void (*vlan_rx_register)(struct net_device *dev, | ||
| 898 | struct vlan_group *grp); | ||
| 899 | void (*vlan_rx_add_vid)(struct net_device *dev, | ||
| 900 | unsigned short vid); | ||
| 901 | void (*vlan_rx_kill_vid)(struct net_device *dev, | ||
| 902 | unsigned short vid); | ||
| 903 | #ifdef CONFIG_NET_POLL_CONTROLLER | ||
| 904 | void (*poll_controller)(struct net_device *dev); | ||
| 905 | #endif | ||
| 906 | }; | ||
| 907 | #endif | ||
| 908 | }; | 908 | }; |
| 909 | #define to_net_dev(d) container_of(d, struct net_device, dev) | 909 | #define to_net_dev(d) container_of(d, struct net_device, dev) |
| 910 | 910 | ||
| 911 | #define NETDEV_ALIGN 32 | 911 | #define NETDEV_ALIGN 32 |
| 912 | #define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1) | ||
| 913 | 912 | ||
| 914 | static inline | 913 | static inline |
| 915 | struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, | 914 | struct netdev_queue *netdev_get_tx_queue(const struct net_device *dev, |
| @@ -980,9 +979,7 @@ static inline bool netdev_uses_trailer_tags(struct net_device *dev) | |||
| 980 | */ | 979 | */ |
| 981 | static inline void *netdev_priv(const struct net_device *dev) | 980 | static inline void *netdev_priv(const struct net_device *dev) |
| 982 | { | 981 | { |
| 983 | return (char *)dev + ((sizeof(struct net_device) | 982 | return (char *)dev + ALIGN(sizeof(struct net_device), NETDEV_ALIGN); |
| 984 | + NETDEV_ALIGN_CONST) | ||
| 985 | & ~NETDEV_ALIGN_CONST); | ||
| 986 | } | 983 | } |
| 987 | 984 | ||
| 988 | /* Set the sysfs physical device reference for the network logical device | 985 | /* Set the sysfs physical device reference for the network logical device |
| @@ -1012,6 +1009,12 @@ void netif_napi_add(struct net_device *dev, struct napi_struct *napi, | |||
| 1012 | void netif_napi_del(struct napi_struct *napi); | 1009 | void netif_napi_del(struct napi_struct *napi); |
| 1013 | 1010 | ||
| 1014 | struct napi_gro_cb { | 1011 | struct napi_gro_cb { |
| 1012 | /* Virtual address of skb_shinfo(skb)->frags[0].page + offset. */ | ||
| 1013 | void *frag0; | ||
| 1014 | |||
| 1015 | /* Length of frag0. */ | ||
| 1016 | unsigned int frag0_len; | ||
| 1017 | |||
| 1015 | /* This indicates where we are processing relative to skb->data. */ | 1018 | /* This indicates where we are processing relative to skb->data. */ |
| 1016 | int data_offset; | 1019 | int data_offset; |
| 1017 | 1020 | ||
| @@ -1047,14 +1050,6 @@ struct packet_type { | |||
| 1047 | struct list_head list; | 1050 | struct list_head list; |
| 1048 | }; | 1051 | }; |
| 1049 | 1052 | ||
| 1050 | struct napi_gro_fraginfo { | ||
| 1051 | skb_frag_t frags[MAX_SKB_FRAGS]; | ||
| 1052 | unsigned int nr_frags; | ||
| 1053 | unsigned int ip_summed; | ||
| 1054 | unsigned int len; | ||
| 1055 | __wsum csum; | ||
| 1056 | }; | ||
| 1057 | |||
| 1058 | #include <linux/interrupt.h> | 1053 | #include <linux/interrupt.h> |
| 1059 | #include <linux/notifier.h> | 1054 | #include <linux/notifier.h> |
| 1060 | 1055 | ||
| @@ -1119,9 +1114,9 @@ extern int dev_restart(struct net_device *dev); | |||
| 1119 | #ifdef CONFIG_NETPOLL_TRAP | 1114 | #ifdef CONFIG_NETPOLL_TRAP |
| 1120 | extern int netpoll_trap(void); | 1115 | extern int netpoll_trap(void); |
| 1121 | #endif | 1116 | #endif |
| 1122 | extern void *skb_gro_header(struct sk_buff *skb, unsigned int hlen); | ||
| 1123 | extern int skb_gro_receive(struct sk_buff **head, | 1117 | extern int skb_gro_receive(struct sk_buff **head, |
| 1124 | struct sk_buff *skb); | 1118 | struct sk_buff *skb); |
| 1119 | extern void skb_gro_reset_offset(struct sk_buff *skb); | ||
| 1125 | 1120 | ||
| 1126 | static inline unsigned int skb_gro_offset(const struct sk_buff *skb) | 1121 | static inline unsigned int skb_gro_offset(const struct sk_buff *skb) |
| 1127 | { | 1122 | { |
| @@ -1138,16 +1133,34 @@ static inline void skb_gro_pull(struct sk_buff *skb, unsigned int len) | |||
| 1138 | NAPI_GRO_CB(skb)->data_offset += len; | 1133 | NAPI_GRO_CB(skb)->data_offset += len; |
| 1139 | } | 1134 | } |
| 1140 | 1135 | ||
| 1141 | static inline void skb_gro_reset_offset(struct sk_buff *skb) | 1136 | static inline void *skb_gro_header_fast(struct sk_buff *skb, |
| 1137 | unsigned int offset) | ||
| 1142 | { | 1138 | { |
| 1143 | NAPI_GRO_CB(skb)->data_offset = 0; | 1139 | return NAPI_GRO_CB(skb)->frag0 + offset; |
| 1140 | } | ||
| 1141 | |||
| 1142 | static inline int skb_gro_header_hard(struct sk_buff *skb, unsigned int hlen) | ||
| 1143 | { | ||
| 1144 | return NAPI_GRO_CB(skb)->frag0_len < hlen; | ||
| 1145 | } | ||
| 1146 | |||
| 1147 | static inline void *skb_gro_header_slow(struct sk_buff *skb, unsigned int hlen, | ||
| 1148 | unsigned int offset) | ||
| 1149 | { | ||
| 1150 | NAPI_GRO_CB(skb)->frag0 = NULL; | ||
| 1151 | NAPI_GRO_CB(skb)->frag0_len = 0; | ||
| 1152 | return pskb_may_pull(skb, hlen) ? skb->data + offset : NULL; | ||
| 1144 | } | 1153 | } |
| 1145 | 1154 | ||
| 1146 | static inline void *skb_gro_mac_header(struct sk_buff *skb) | 1155 | static inline void *skb_gro_mac_header(struct sk_buff *skb) |
| 1147 | { | 1156 | { |
| 1148 | return skb_mac_header(skb) < skb->data ? skb_mac_header(skb) : | 1157 | return NAPI_GRO_CB(skb)->frag0 ?: skb_mac_header(skb); |
| 1149 | page_address(skb_shinfo(skb)->frags[0].page) + | 1158 | } |
| 1150 | skb_shinfo(skb)->frags[0].page_offset; | 1159 | |
| 1160 | static inline void *skb_gro_network_header(struct sk_buff *skb) | ||
| 1161 | { | ||
| 1162 | return (NAPI_GRO_CB(skb)->frag0 ?: skb->data) + | ||
| 1163 | skb_network_offset(skb); | ||
| 1151 | } | 1164 | } |
| 1152 | 1165 | ||
| 1153 | static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, | 1166 | static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev, |
| @@ -1442,12 +1455,18 @@ extern int napi_gro_receive(struct napi_struct *napi, | |||
| 1442 | struct sk_buff *skb); | 1455 | struct sk_buff *skb); |
| 1443 | extern void napi_reuse_skb(struct napi_struct *napi, | 1456 | extern void napi_reuse_skb(struct napi_struct *napi, |
| 1444 | struct sk_buff *skb); | 1457 | struct sk_buff *skb); |
| 1445 | extern struct sk_buff * napi_fraginfo_skb(struct napi_struct *napi, | 1458 | extern struct sk_buff * napi_get_frags(struct napi_struct *napi); |
| 1446 | struct napi_gro_fraginfo *info); | ||
| 1447 | extern int napi_frags_finish(struct napi_struct *napi, | 1459 | extern int napi_frags_finish(struct napi_struct *napi, |
| 1448 | struct sk_buff *skb, int ret); | 1460 | struct sk_buff *skb, int ret); |
| 1449 | extern int napi_gro_frags(struct napi_struct *napi, | 1461 | extern struct sk_buff * napi_frags_skb(struct napi_struct *napi); |
| 1450 | struct napi_gro_fraginfo *info); | 1462 | extern int napi_gro_frags(struct napi_struct *napi); |
| 1463 | |||
| 1464 | static inline void napi_free_frags(struct napi_struct *napi) | ||
| 1465 | { | ||
| 1466 | kfree_skb(napi->skb); | ||
| 1467 | napi->skb = NULL; | ||
| 1468 | } | ||
| 1469 | |||
| 1451 | extern void netif_nit_deliver(struct sk_buff *skb); | 1470 | extern void netif_nit_deliver(struct sk_buff *skb); |
| 1452 | extern int dev_valid_name(const char *name); | 1471 | extern int dev_valid_name(const char *name); |
| 1453 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); | 1472 | extern int dev_ioctl(struct net *net, unsigned int cmd, void __user *); |
| @@ -1514,6 +1533,8 @@ static inline int netif_carrier_ok(const struct net_device *dev) | |||
| 1514 | return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); | 1533 | return !test_bit(__LINK_STATE_NOCARRIER, &dev->state); |
| 1515 | } | 1534 | } |
| 1516 | 1535 | ||
| 1536 | extern unsigned long dev_trans_start(struct net_device *dev); | ||
| 1537 | |||
| 1517 | extern void __netdev_watchdog_up(struct net_device *dev); | 1538 | extern void __netdev_watchdog_up(struct net_device *dev); |
| 1518 | 1539 | ||
| 1519 | extern void netif_carrier_on(struct net_device *dev); | 1540 | extern void netif_carrier_on(struct net_device *dev); |
| @@ -1671,6 +1692,12 @@ static inline void __netif_tx_unlock_bh(struct netdev_queue *txq) | |||
| 1671 | spin_unlock_bh(&txq->_xmit_lock); | 1692 | spin_unlock_bh(&txq->_xmit_lock); |
| 1672 | } | 1693 | } |
| 1673 | 1694 | ||
| 1695 | static inline void txq_trans_update(struct netdev_queue *txq) | ||
| 1696 | { | ||
| 1697 | if (txq->xmit_lock_owner != -1) | ||
| 1698 | txq->trans_start = jiffies; | ||
| 1699 | } | ||
| 1700 | |||
| 1674 | /** | 1701 | /** |
| 1675 | * netif_tx_lock - grab network device transmit lock | 1702 | * netif_tx_lock - grab network device transmit lock |
| 1676 | * @dev: network device | 1703 | * @dev: network device |
| @@ -1778,6 +1805,13 @@ static inline void netif_addr_unlock_bh(struct net_device *dev) | |||
| 1778 | spin_unlock_bh(&dev->addr_list_lock); | 1805 | spin_unlock_bh(&dev->addr_list_lock); |
| 1779 | } | 1806 | } |
| 1780 | 1807 | ||
| 1808 | /* | ||
| 1809 | * dev_addr_list walker. Should be used only for read access. Call with | ||
| 1810 | * rcu_read_lock held. | ||
| 1811 | */ | ||
| 1812 | #define for_each_dev_addr(dev, ha) \ | ||
| 1813 | list_for_each_entry_rcu(ha, &dev->dev_addr_list, list) | ||
| 1814 | |||
| 1781 | /* These functions live elsewhere (drivers/net/net_init.c, but related) */ | 1815 | /* These functions live elsewhere (drivers/net/net_init.c, but related) */ |
| 1782 | 1816 | ||
| 1783 | extern void ether_setup(struct net_device *dev); | 1817 | extern void ether_setup(struct net_device *dev); |
| @@ -1790,11 +1824,24 @@ extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, | |||
| 1790 | alloc_netdev_mq(sizeof_priv, name, setup, 1) | 1824 | alloc_netdev_mq(sizeof_priv, name, setup, 1) |
| 1791 | extern int register_netdev(struct net_device *dev); | 1825 | extern int register_netdev(struct net_device *dev); |
| 1792 | extern void unregister_netdev(struct net_device *dev); | 1826 | extern void unregister_netdev(struct net_device *dev); |
| 1827 | |||
| 1828 | /* Functions used for device addresses handling */ | ||
| 1829 | extern int dev_addr_add(struct net_device *dev, unsigned char *addr, | ||
| 1830 | unsigned char addr_type); | ||
| 1831 | extern int dev_addr_del(struct net_device *dev, unsigned char *addr, | ||
| 1832 | unsigned char addr_type); | ||
| 1833 | extern int dev_addr_add_multiple(struct net_device *to_dev, | ||
| 1834 | struct net_device *from_dev, | ||
| 1835 | unsigned char addr_type); | ||
| 1836 | extern int dev_addr_del_multiple(struct net_device *to_dev, | ||
| 1837 | struct net_device *from_dev, | ||
| 1838 | unsigned char addr_type); | ||
| 1839 | |||
| 1793 | /* Functions used for secondary unicast and multicast support */ | 1840 | /* Functions used for secondary unicast and multicast support */ |
| 1794 | extern void dev_set_rx_mode(struct net_device *dev); | 1841 | extern void dev_set_rx_mode(struct net_device *dev); |
| 1795 | extern void __dev_set_rx_mode(struct net_device *dev); | 1842 | extern void __dev_set_rx_mode(struct net_device *dev); |
| 1796 | extern int dev_unicast_delete(struct net_device *dev, void *addr, int alen); | 1843 | extern int dev_unicast_delete(struct net_device *dev, void *addr); |
| 1797 | extern int dev_unicast_add(struct net_device *dev, void *addr, int alen); | 1844 | extern int dev_unicast_add(struct net_device *dev, void *addr); |
| 1798 | extern int dev_unicast_sync(struct net_device *to, struct net_device *from); | 1845 | extern int dev_unicast_sync(struct net_device *to, struct net_device *from); |
| 1799 | extern void dev_unicast_unsync(struct net_device *to, struct net_device *from); | 1846 | extern void dev_unicast_unsync(struct net_device *to, struct net_device *from); |
| 1800 | extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all); | 1847 | extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all); |
| @@ -1856,15 +1903,14 @@ static inline int net_gso_ok(int features, int gso_type) | |||
| 1856 | 1903 | ||
| 1857 | static inline int skb_gso_ok(struct sk_buff *skb, int features) | 1904 | static inline int skb_gso_ok(struct sk_buff *skb, int features) |
| 1858 | { | 1905 | { |
| 1859 | return net_gso_ok(features, skb_shinfo(skb)->gso_type); | 1906 | return net_gso_ok(features, skb_shinfo(skb)->gso_type) && |
| 1907 | (!skb_has_frags(skb) || (features & NETIF_F_FRAGLIST)); | ||
| 1860 | } | 1908 | } |
| 1861 | 1909 | ||
| 1862 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) | 1910 | static inline int netif_needs_gso(struct net_device *dev, struct sk_buff *skb) |
| 1863 | { | 1911 | { |
| 1864 | return skb_is_gso(skb) && | 1912 | return skb_is_gso(skb) && |
| 1865 | (!skb_gso_ok(skb, dev->features) || | 1913 | (!skb_gso_ok(skb, dev->features) || |
| 1866 | (skb_shinfo(skb)->frag_list && | ||
| 1867 | !(dev->features & NETIF_F_FRAGLIST)) || | ||
| 1868 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); | 1914 | unlikely(skb->ip_summed != CHECKSUM_PARTIAL)); |
| 1869 | } | 1915 | } |
| 1870 | 1916 | ||
| @@ -1874,6 +1920,16 @@ static inline void netif_set_gso_max_size(struct net_device *dev, | |||
| 1874 | dev->gso_max_size = size; | 1920 | dev->gso_max_size = size; |
| 1875 | } | 1921 | } |
| 1876 | 1922 | ||
| 1923 | static inline void skb_bond_set_mac_by_master(struct sk_buff *skb, | ||
| 1924 | struct net_device *master) | ||
| 1925 | { | ||
| 1926 | if (skb->pkt_type == PACKET_HOST) { | ||
| 1927 | u16 *dest = (u16 *) eth_hdr(skb)->h_dest; | ||
| 1928 | |||
| 1929 | memcpy(dest, master->dev_addr, ETH_ALEN); | ||
| 1930 | } | ||
| 1931 | } | ||
| 1932 | |||
| 1877 | /* On bonding slaves other than the currently active slave, suppress | 1933 | /* On bonding slaves other than the currently active slave, suppress |
| 1878 | * duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and | 1934 | * duplicates except for 802.3ad ETH_P_SLOW, alb non-mcast/bcast, and |
| 1879 | * ARP on active-backup slaves with arp_validate enabled. | 1935 | * ARP on active-backup slaves with arp_validate enabled. |
| @@ -1887,6 +1943,14 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) | |||
| 1887 | if (master->priv_flags & IFF_MASTER_ARPMON) | 1943 | if (master->priv_flags & IFF_MASTER_ARPMON) |
| 1888 | dev->last_rx = jiffies; | 1944 | dev->last_rx = jiffies; |
| 1889 | 1945 | ||
| 1946 | if ((master->priv_flags & IFF_MASTER_ALB) && master->br_port) { | ||
| 1947 | /* Do address unmangle. The local destination address | ||
| 1948 | * will be always the one master has. Provides the right | ||
| 1949 | * functionality in a bridge. | ||
| 1950 | */ | ||
| 1951 | skb_bond_set_mac_by_master(skb, master); | ||
| 1952 | } | ||
| 1953 | |||
| 1890 | if (dev->priv_flags & IFF_SLAVE_INACTIVE) { | 1954 | if (dev->priv_flags & IFF_SLAVE_INACTIVE) { |
| 1891 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && | 1955 | if ((dev->priv_flags & IFF_SLAVE_NEEDARP) && |
| 1892 | skb->protocol == __cpu_to_be16(ETH_P_ARP)) | 1956 | skb->protocol == __cpu_to_be16(ETH_P_ARP)) |
| @@ -1908,6 +1972,28 @@ static inline int skb_bond_should_drop(struct sk_buff *skb) | |||
| 1908 | } | 1972 | } |
| 1909 | 1973 | ||
| 1910 | extern struct pernet_operations __net_initdata loopback_net_ops; | 1974 | extern struct pernet_operations __net_initdata loopback_net_ops; |
| 1975 | |||
| 1976 | static inline int dev_ethtool_get_settings(struct net_device *dev, | ||
| 1977 | struct ethtool_cmd *cmd) | ||
| 1978 | { | ||
| 1979 | if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings) | ||
| 1980 | return -EOPNOTSUPP; | ||
| 1981 | return dev->ethtool_ops->get_settings(dev, cmd); | ||
| 1982 | } | ||
| 1983 | |||
| 1984 | static inline u32 dev_ethtool_get_rx_csum(struct net_device *dev) | ||
| 1985 | { | ||
| 1986 | if (!dev->ethtool_ops || !dev->ethtool_ops->get_rx_csum) | ||
| 1987 | return 0; | ||
| 1988 | return dev->ethtool_ops->get_rx_csum(dev); | ||
| 1989 | } | ||
| 1990 | |||
| 1991 | static inline u32 dev_ethtool_get_flags(struct net_device *dev) | ||
| 1992 | { | ||
| 1993 | if (!dev->ethtool_ops || !dev->ethtool_ops->get_flags) | ||
| 1994 | return 0; | ||
| 1995 | return dev->ethtool_ops->get_flags(dev); | ||
| 1996 | } | ||
| 1911 | #endif /* __KERNEL__ */ | 1997 | #endif /* __KERNEL__ */ |
| 1912 | 1998 | ||
| 1913 | #endif /* _LINUX_DEV_H */ | 1999 | #endif /* _LINUX_NETDEVICE_H */ |
diff --git a/include/linux/netfilter/Kbuild b/include/linux/netfilter/Kbuild index af9d2fb97212..2aea50399c0b 100644 --- a/include/linux/netfilter/Kbuild +++ b/include/linux/netfilter/Kbuild | |||
| @@ -33,6 +33,7 @@ header-y += xt_limit.h | |||
| 33 | header-y += xt_mac.h | 33 | header-y += xt_mac.h |
| 34 | header-y += xt_mark.h | 34 | header-y += xt_mark.h |
| 35 | header-y += xt_multiport.h | 35 | header-y += xt_multiport.h |
| 36 | header-y += xt_osf.h | ||
| 36 | header-y += xt_owner.h | 37 | header-y += xt_owner.h |
| 37 | header-y += xt_pkttype.h | 38 | header-y += xt_pkttype.h |
| 38 | header-y += xt_quota.h | 39 | header-y += xt_quota.h |
diff --git a/include/linux/netfilter/nf_conntrack_common.h b/include/linux/netfilter/nf_conntrack_common.h index 885cbe282260..a8248ee422b7 100644 --- a/include/linux/netfilter/nf_conntrack_common.h +++ b/include/linux/netfilter/nf_conntrack_common.h | |||
| @@ -75,75 +75,6 @@ enum ip_conntrack_status { | |||
| 75 | IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT), | 75 | IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT), |
| 76 | }; | 76 | }; |
| 77 | 77 | ||
| 78 | /* Connection tracking event bits */ | ||
| 79 | enum ip_conntrack_events | ||
| 80 | { | ||
| 81 | /* New conntrack */ | ||
| 82 | IPCT_NEW_BIT = 0, | ||
| 83 | IPCT_NEW = (1 << IPCT_NEW_BIT), | ||
| 84 | |||
| 85 | /* Expected connection */ | ||
| 86 | IPCT_RELATED_BIT = 1, | ||
| 87 | IPCT_RELATED = (1 << IPCT_RELATED_BIT), | ||
| 88 | |||
| 89 | /* Destroyed conntrack */ | ||
| 90 | IPCT_DESTROY_BIT = 2, | ||
| 91 | IPCT_DESTROY = (1 << IPCT_DESTROY_BIT), | ||
| 92 | |||
| 93 | /* Timer has been refreshed */ | ||
| 94 | IPCT_REFRESH_BIT = 3, | ||
| 95 | IPCT_REFRESH = (1 << IPCT_REFRESH_BIT), | ||
| 96 | |||
| 97 | /* Status has changed */ | ||
| 98 | IPCT_STATUS_BIT = 4, | ||
| 99 | IPCT_STATUS = (1 << IPCT_STATUS_BIT), | ||
| 100 | |||
| 101 | /* Update of protocol info */ | ||
| 102 | IPCT_PROTOINFO_BIT = 5, | ||
| 103 | IPCT_PROTOINFO = (1 << IPCT_PROTOINFO_BIT), | ||
| 104 | |||
| 105 | /* Volatile protocol info */ | ||
| 106 | IPCT_PROTOINFO_VOLATILE_BIT = 6, | ||
| 107 | IPCT_PROTOINFO_VOLATILE = (1 << IPCT_PROTOINFO_VOLATILE_BIT), | ||
| 108 | |||
| 109 | /* New helper for conntrack */ | ||
| 110 | IPCT_HELPER_BIT = 7, | ||
| 111 | IPCT_HELPER = (1 << IPCT_HELPER_BIT), | ||
| 112 | |||
| 113 | /* Update of helper info */ | ||
| 114 | IPCT_HELPINFO_BIT = 8, | ||
| 115 | IPCT_HELPINFO = (1 << IPCT_HELPINFO_BIT), | ||
| 116 | |||
| 117 | /* Volatile helper info */ | ||
| 118 | IPCT_HELPINFO_VOLATILE_BIT = 9, | ||
| 119 | IPCT_HELPINFO_VOLATILE = (1 << IPCT_HELPINFO_VOLATILE_BIT), | ||
| 120 | |||
| 121 | /* NAT info */ | ||
| 122 | IPCT_NATINFO_BIT = 10, | ||
| 123 | IPCT_NATINFO = (1 << IPCT_NATINFO_BIT), | ||
| 124 | |||
| 125 | /* Counter highest bit has been set, unused */ | ||
| 126 | IPCT_COUNTER_FILLING_BIT = 11, | ||
| 127 | IPCT_COUNTER_FILLING = (1 << IPCT_COUNTER_FILLING_BIT), | ||
| 128 | |||
| 129 | /* Mark is set */ | ||
| 130 | IPCT_MARK_BIT = 12, | ||
| 131 | IPCT_MARK = (1 << IPCT_MARK_BIT), | ||
| 132 | |||
| 133 | /* NAT sequence adjustment */ | ||
| 134 | IPCT_NATSEQADJ_BIT = 13, | ||
| 135 | IPCT_NATSEQADJ = (1 << IPCT_NATSEQADJ_BIT), | ||
| 136 | |||
| 137 | /* Secmark is set */ | ||
| 138 | IPCT_SECMARK_BIT = 14, | ||
| 139 | IPCT_SECMARK = (1 << IPCT_SECMARK_BIT), | ||
| 140 | }; | ||
| 141 | |||
| 142 | enum ip_conntrack_expect_events { | ||
| 143 | IPEXP_NEW_BIT = 0, | ||
| 144 | IPEXP_NEW = (1 << IPEXP_NEW_BIT), | ||
| 145 | }; | ||
| 146 | |||
| 147 | #ifdef __KERNEL__ | 78 | #ifdef __KERNEL__ |
| 148 | struct ip_conntrack_stat | 79 | struct ip_conntrack_stat |
| 149 | { | 80 | { |
diff --git a/include/linux/netfilter/nf_conntrack_tcp.h b/include/linux/netfilter/nf_conntrack_tcp.h index b2f384d42611..4352feed2377 100644 --- a/include/linux/netfilter/nf_conntrack_tcp.h +++ b/include/linux/netfilter/nf_conntrack_tcp.h | |||
| @@ -15,7 +15,8 @@ enum tcp_conntrack { | |||
| 15 | TCP_CONNTRACK_LAST_ACK, | 15 | TCP_CONNTRACK_LAST_ACK, |
| 16 | TCP_CONNTRACK_TIME_WAIT, | 16 | TCP_CONNTRACK_TIME_WAIT, |
| 17 | TCP_CONNTRACK_CLOSE, | 17 | TCP_CONNTRACK_CLOSE, |
| 18 | TCP_CONNTRACK_LISTEN, | 18 | TCP_CONNTRACK_LISTEN, /* obsolete */ |
| 19 | #define TCP_CONNTRACK_SYN_SENT2 TCP_CONNTRACK_LISTEN | ||
| 19 | TCP_CONNTRACK_MAX, | 20 | TCP_CONNTRACK_MAX, |
| 20 | TCP_CONNTRACK_IGNORE | 21 | TCP_CONNTRACK_IGNORE |
| 21 | }; | 22 | }; |
diff --git a/include/linux/netfilter/nfnetlink.h b/include/linux/netfilter/nfnetlink.h index c600083cbdf5..bff4d5741d98 100644 --- a/include/linux/netfilter/nfnetlink.h +++ b/include/linux/netfilter/nfnetlink.h | |||
| @@ -46,7 +46,8 @@ struct nfgenmsg { | |||
| 46 | #define NFNL_SUBSYS_CTNETLINK_EXP 2 | 46 | #define NFNL_SUBSYS_CTNETLINK_EXP 2 |
| 47 | #define NFNL_SUBSYS_QUEUE 3 | 47 | #define NFNL_SUBSYS_QUEUE 3 |
| 48 | #define NFNL_SUBSYS_ULOG 4 | 48 | #define NFNL_SUBSYS_ULOG 4 |
| 49 | #define NFNL_SUBSYS_COUNT 5 | 49 | #define NFNL_SUBSYS_OSF 5 |
| 50 | #define NFNL_SUBSYS_COUNT 6 | ||
| 50 | 51 | ||
| 51 | #ifdef __KERNEL__ | 52 | #ifdef __KERNEL__ |
| 52 | 53 | ||
| @@ -75,7 +76,7 @@ extern int nfnetlink_subsys_unregister(const struct nfnetlink_subsystem *n); | |||
| 75 | 76 | ||
| 76 | extern int nfnetlink_has_listeners(unsigned int group); | 77 | extern int nfnetlink_has_listeners(unsigned int group); |
| 77 | extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, | 78 | extern int nfnetlink_send(struct sk_buff *skb, u32 pid, unsigned group, |
| 78 | int echo); | 79 | int echo, gfp_t flags); |
| 79 | extern void nfnetlink_set_err(u32 pid, u32 group, int error); | 80 | extern void nfnetlink_set_err(u32 pid, u32 group, int error); |
| 80 | extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags); | 81 | extern int nfnetlink_unicast(struct sk_buff *skb, u_int32_t pid, int flags); |
| 81 | 82 | ||
diff --git a/include/linux/netfilter/nfnetlink_conntrack.h b/include/linux/netfilter/nfnetlink_conntrack.h index 1a865e48b8eb..ed4ef8d0b11b 100644 --- a/include/linux/netfilter/nfnetlink_conntrack.h +++ b/include/linux/netfilter/nfnetlink_conntrack.h | |||
| @@ -101,6 +101,7 @@ enum ctattr_protoinfo_dccp { | |||
| 101 | CTA_PROTOINFO_DCCP_UNSPEC, | 101 | CTA_PROTOINFO_DCCP_UNSPEC, |
| 102 | CTA_PROTOINFO_DCCP_STATE, | 102 | CTA_PROTOINFO_DCCP_STATE, |
| 103 | CTA_PROTOINFO_DCCP_ROLE, | 103 | CTA_PROTOINFO_DCCP_ROLE, |
| 104 | CTA_PROTOINFO_DCCP_HANDSHAKE_SEQ, | ||
| 104 | __CTA_PROTOINFO_DCCP_MAX, | 105 | __CTA_PROTOINFO_DCCP_MAX, |
| 105 | }; | 106 | }; |
| 106 | #define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1) | 107 | #define CTA_PROTOINFO_DCCP_MAX (__CTA_PROTOINFO_DCCP_MAX - 1) |
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h index c9efe039dc57..1030b7593898 100644 --- a/include/linux/netfilter/x_tables.h +++ b/include/linux/netfilter/x_tables.h | |||
| @@ -184,9 +184,10 @@ struct xt_counters_info | |||
| 184 | * @matchinfo: per-match data | 184 | * @matchinfo: per-match data |
| 185 | * @fragoff: packet is a fragment, this is the data offset | 185 | * @fragoff: packet is a fragment, this is the data offset |
| 186 | * @thoff: position of transport header relative to skb->data | 186 | * @thoff: position of transport header relative to skb->data |
| 187 | * @hotdrop: drop packet if we had inspection problems | 187 | * @hook: hook number given packet came from |
| 188 | * @family: Actual NFPROTO_* through which the function is invoked | 188 | * @family: Actual NFPROTO_* through which the function is invoked |
| 189 | * (helpful when match->family == NFPROTO_UNSPEC) | 189 | * (helpful when match->family == NFPROTO_UNSPEC) |
| 190 | * @hotdrop: drop packet if we had inspection problems | ||
| 190 | */ | 191 | */ |
| 191 | struct xt_match_param { | 192 | struct xt_match_param { |
| 192 | const struct net_device *in, *out; | 193 | const struct net_device *in, *out; |
| @@ -194,8 +195,9 @@ struct xt_match_param { | |||
| 194 | const void *matchinfo; | 195 | const void *matchinfo; |
| 195 | int fragoff; | 196 | int fragoff; |
| 196 | unsigned int thoff; | 197 | unsigned int thoff; |
| 197 | bool *hotdrop; | 198 | unsigned int hooknum; |
| 198 | u_int8_t family; | 199 | u_int8_t family; |
| 200 | bool *hotdrop; | ||
| 199 | }; | 201 | }; |
| 200 | 202 | ||
| 201 | /** | 203 | /** |
diff --git a/include/linux/netfilter/xt_NFQUEUE.h b/include/linux/netfilter/xt_NFQUEUE.h index 982a89f78272..2584f4a777de 100644 --- a/include/linux/netfilter/xt_NFQUEUE.h +++ b/include/linux/netfilter/xt_NFQUEUE.h | |||
| @@ -15,4 +15,9 @@ struct xt_NFQ_info { | |||
| 15 | __u16 queuenum; | 15 | __u16 queuenum; |
| 16 | }; | 16 | }; |
| 17 | 17 | ||
| 18 | struct xt_NFQ_info_v1 { | ||
| 19 | __u16 queuenum; | ||
| 20 | __u16 queues_total; | ||
| 21 | }; | ||
| 22 | |||
| 18 | #endif /* _XT_NFQ_TARGET_H */ | 23 | #endif /* _XT_NFQ_TARGET_H */ |
diff --git a/include/linux/netfilter/xt_osf.h b/include/linux/netfilter/xt_osf.h new file mode 100644 index 000000000000..fd2272e0959a --- /dev/null +++ b/include/linux/netfilter/xt_osf.h | |||
| @@ -0,0 +1,133 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (c) 2003+ Evgeniy Polyakov <johnpol@2ka.mxt.ru> | ||
| 3 | * | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify | ||
| 6 | * it under the terms of the GNU General Public License as published by | ||
| 7 | * the Free Software Foundation; either version 2 of the License, or | ||
| 8 | * (at your option) any later version. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License | ||
| 16 | * along with this program; if not, write to the Free Software | ||
| 17 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef _XT_OSF_H | ||
| 21 | #define _XT_OSF_H | ||
| 22 | |||
| 23 | #define MAXGENRELEN 32 | ||
| 24 | |||
| 25 | #define XT_OSF_GENRE (1<<0) | ||
| 26 | #define XT_OSF_TTL (1<<1) | ||
| 27 | #define XT_OSF_LOG (1<<2) | ||
| 28 | #define XT_OSF_INVERT (1<<3) | ||
| 29 | |||
| 30 | #define XT_OSF_LOGLEVEL_ALL 0 /* log all matched fingerprints */ | ||
| 31 | #define XT_OSF_LOGLEVEL_FIRST 1 /* log only the first matced fingerprint */ | ||
| 32 | #define XT_OSF_LOGLEVEL_ALL_KNOWN 2 /* do not log unknown packets */ | ||
| 33 | |||
| 34 | #define XT_OSF_TTL_TRUE 0 /* True ip and fingerprint TTL comparison */ | ||
| 35 | #define XT_OSF_TTL_LESS 1 /* Check if ip TTL is less than fingerprint one */ | ||
| 36 | #define XT_OSF_TTL_NOCHECK 2 /* Do not compare ip and fingerprint TTL at all */ | ||
| 37 | |||
| 38 | struct xt_osf_info { | ||
| 39 | char genre[MAXGENRELEN]; | ||
| 40 | __u32 len; | ||
| 41 | __u32 flags; | ||
| 42 | __u32 loglevel; | ||
| 43 | __u32 ttl; | ||
| 44 | }; | ||
| 45 | |||
| 46 | /* | ||
| 47 | * Wildcard MSS (kind of). | ||
| 48 | * It is used to implement a state machine for the different wildcard values | ||
| 49 | * of the MSS and window sizes. | ||
| 50 | */ | ||
| 51 | struct xt_osf_wc { | ||
| 52 | __u32 wc; | ||
| 53 | __u32 val; | ||
| 54 | }; | ||
| 55 | |||
| 56 | /* | ||
| 57 | * This struct represents IANA options | ||
| 58 | * http://www.iana.org/assignments/tcp-parameters | ||
| 59 | */ | ||
| 60 | struct xt_osf_opt { | ||
| 61 | __u16 kind, length; | ||
| 62 | struct xt_osf_wc wc; | ||
| 63 | }; | ||
| 64 | |||
| 65 | struct xt_osf_user_finger { | ||
| 66 | struct xt_osf_wc wss; | ||
| 67 | |||
| 68 | __u8 ttl, df; | ||
| 69 | __u16 ss, mss; | ||
| 70 | __u16 opt_num; | ||
| 71 | |||
| 72 | char genre[MAXGENRELEN]; | ||
| 73 | char version[MAXGENRELEN]; | ||
| 74 | char subtype[MAXGENRELEN]; | ||
| 75 | |||
| 76 | /* MAX_IPOPTLEN is maximum if all options are NOPs or EOLs */ | ||
| 77 | struct xt_osf_opt opt[MAX_IPOPTLEN]; | ||
| 78 | }; | ||
| 79 | |||
| 80 | struct xt_osf_nlmsg { | ||
| 81 | struct xt_osf_user_finger f; | ||
| 82 | struct iphdr ip; | ||
| 83 | struct tcphdr tcp; | ||
| 84 | }; | ||
| 85 | |||
| 86 | /* Defines for IANA option kinds */ | ||
| 87 | |||
| 88 | enum iana_options { | ||
| 89 | OSFOPT_EOL = 0, /* End of options */ | ||
| 90 | OSFOPT_NOP, /* NOP */ | ||
| 91 | OSFOPT_MSS, /* Maximum segment size */ | ||
| 92 | OSFOPT_WSO, /* Window scale option */ | ||
| 93 | OSFOPT_SACKP, /* SACK permitted */ | ||
| 94 | OSFOPT_SACK, /* SACK */ | ||
| 95 | OSFOPT_ECHO, | ||
| 96 | OSFOPT_ECHOREPLY, | ||
| 97 | OSFOPT_TS, /* Timestamp option */ | ||
| 98 | OSFOPT_POCP, /* Partial Order Connection Permitted */ | ||
| 99 | OSFOPT_POSP, /* Partial Order Service Profile */ | ||
| 100 | |||
| 101 | /* Others are not used in the current OSF */ | ||
| 102 | OSFOPT_EMPTY = 255, | ||
| 103 | }; | ||
| 104 | |||
| 105 | /* | ||
| 106 | * Initial window size option state machine: multiple of mss, mtu or | ||
| 107 | * plain numeric value. Can also be made as plain numeric value which | ||
| 108 | * is not a multiple of specified value. | ||
| 109 | */ | ||
| 110 | enum xt_osf_window_size_options { | ||
| 111 | OSF_WSS_PLAIN = 0, | ||
| 112 | OSF_WSS_MSS, | ||
| 113 | OSF_WSS_MTU, | ||
| 114 | OSF_WSS_MODULO, | ||
| 115 | OSF_WSS_MAX, | ||
| 116 | }; | ||
| 117 | |||
| 118 | /* | ||
| 119 | * Add/remove fingerprint from the kernel. | ||
| 120 | */ | ||
| 121 | enum xt_osf_msg_types { | ||
| 122 | OSF_MSG_ADD, | ||
| 123 | OSF_MSG_REMOVE, | ||
| 124 | OSF_MSG_MAX, | ||
| 125 | }; | ||
| 126 | |||
| 127 | enum xt_osf_attr_type { | ||
| 128 | OSF_ATTR_UNSPEC, | ||
| 129 | OSF_ATTR_FINGER, | ||
| 130 | OSF_ATTR_MAX, | ||
| 131 | }; | ||
| 132 | |||
| 133 | #endif /* _XT_OSF_H */ | ||
diff --git a/include/linux/netfilter/xt_socket.h b/include/linux/netfilter/xt_socket.h new file mode 100644 index 000000000000..6f475b8ff34b --- /dev/null +++ b/include/linux/netfilter/xt_socket.h | |||
| @@ -0,0 +1,12 @@ | |||
| 1 | #ifndef _XT_SOCKET_H | ||
| 2 | #define _XT_SOCKET_H | ||
| 3 | |||
| 4 | enum { | ||
| 5 | XT_SOCKET_TRANSPARENT = 1 << 0, | ||
| 6 | }; | ||
| 7 | |||
| 8 | struct xt_socket_mtinfo1 { | ||
| 9 | __u8 flags; | ||
| 10 | }; | ||
| 11 | |||
| 12 | #endif /* _XT_SOCKET_H */ | ||
diff --git a/include/linux/nl80211.h b/include/linux/nl80211.h index cbe8ce3bf486..dbea93b694e5 100644 --- a/include/linux/nl80211.h +++ b/include/linux/nl80211.h | |||
| @@ -7,7 +7,7 @@ | |||
| 7 | * Copyright 2008 Michael Wu <flamingice@sourmilk.net> | 7 | * Copyright 2008 Michael Wu <flamingice@sourmilk.net> |
| 8 | * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> | 8 | * Copyright 2008 Luis Carlos Cobo <luisca@cozybit.com> |
| 9 | * Copyright 2008 Michael Buesch <mb@bu3sch.de> | 9 | * Copyright 2008 Michael Buesch <mb@bu3sch.de> |
| 10 | * Copyright 2008 Luis R. Rodriguez <lrodriguez@atheros.com> | 10 | * Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com> |
| 11 | * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> | 11 | * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com> |
| 12 | * Copyright 2008 Colin McCabe <colin@cozybit.com> | 12 | * Copyright 2008 Colin McCabe <colin@cozybit.com> |
| 13 | * | 13 | * |
| @@ -25,6 +25,8 @@ | |||
| 25 | * | 25 | * |
| 26 | */ | 26 | */ |
| 27 | 27 | ||
| 28 | #include <linux/types.h> | ||
| 29 | |||
| 28 | /** | 30 | /** |
| 29 | * DOC: Station handling | 31 | * DOC: Station handling |
| 30 | * | 32 | * |
| @@ -46,8 +48,10 @@ | |||
| 46 | * to get a list of all present wiphys. | 48 | * to get a list of all present wiphys. |
| 47 | * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or | 49 | * @NL80211_CMD_SET_WIPHY: set wiphy parameters, needs %NL80211_ATTR_WIPHY or |
| 48 | * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, | 50 | * %NL80211_ATTR_IFINDEX; can be used to set %NL80211_ATTR_WIPHY_NAME, |
| 49 | * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, and/or | 51 | * %NL80211_ATTR_WIPHY_TXQ_PARAMS, %NL80211_ATTR_WIPHY_FREQ, |
| 50 | * %NL80211_ATTR_WIPHY_CHANNEL_TYPE. | 52 | * %NL80211_ATTR_WIPHY_CHANNEL_TYPE, %NL80211_ATTR_WIPHY_RETRY_SHORT, |
| 53 | * %NL80211_ATTR_WIPHY_RETRY_LONG, %NL80211_ATTR_WIPHY_FRAG_THRESHOLD, | ||
| 54 | * and/or %NL80211_ATTR_WIPHY_RTS_THRESHOLD. | ||
| 51 | * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request | 55 | * @NL80211_CMD_NEW_WIPHY: Newly created wiphy, response to get request |
| 52 | * or rename notification. Has attributes %NL80211_ATTR_WIPHY and | 56 | * or rename notification. Has attributes %NL80211_ATTR_WIPHY and |
| 53 | * %NL80211_ATTR_WIPHY_NAME. | 57 | * %NL80211_ATTR_WIPHY_NAME. |
| @@ -75,8 +79,8 @@ | |||
| 75 | * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT, | 79 | * @NL80211_CMD_SET_KEY: Set key attributes %NL80211_ATTR_KEY_DEFAULT, |
| 76 | * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD. | 80 | * %NL80211_ATTR_KEY_DEFAULT_MGMT, or %NL80211_ATTR_KEY_THRESHOLD. |
| 77 | * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA, | 81 | * @NL80211_CMD_NEW_KEY: add a key with given %NL80211_ATTR_KEY_DATA, |
| 78 | * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC and %NL80211_ATTR_KEY_CIPHER | 82 | * %NL80211_ATTR_KEY_IDX, %NL80211_ATTR_MAC, %NL80211_ATTR_KEY_CIPHER, |
| 79 | * attributes. | 83 | * and %NL80211_ATTR_KEY_SEQ attributes. |
| 80 | * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX | 84 | * @NL80211_CMD_DEL_KEY: delete a key identified by %NL80211_ATTR_KEY_IDX |
| 81 | * or %NL80211_ATTR_MAC. | 85 | * or %NL80211_ATTR_MAC. |
| 82 | * | 86 | * |
| @@ -166,6 +170,22 @@ | |||
| 166 | * set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is | 170 | * set (%NL80211_ATTR_REG_TYPE), if the type of regulatory domain is |
| 167 | * %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on | 171 | * %NL80211_REG_TYPE_COUNTRY the alpha2 to which we have moved on |
| 168 | * to (%NL80211_ATTR_REG_ALPHA2). | 172 | * to (%NL80211_ATTR_REG_ALPHA2). |
| 173 | * @NL80211_CMD_REG_BEACON_HINT: indicates to userspace that an AP beacon | ||
| 174 | * has been found while world roaming thus enabling active scan or | ||
| 175 | * any mode of operation that initiates TX (beacons) on a channel | ||
| 176 | * where we would not have been able to do either before. As an example | ||
| 177 | * if you are world roaming (regulatory domain set to world or if your | ||
| 178 | * driver is using a custom world roaming regulatory domain) and while | ||
| 179 | * doing a passive scan on the 5 GHz band you find an AP there (if not | ||
| 180 | * on a DFS channel) you will now be able to actively scan for that AP | ||
| 181 | * or use AP mode on your card on that same channel. Note that this will | ||
| 182 | * never be used for channels 1-11 on the 2 GHz band as they are always | ||
| 183 | * enabled world wide. This beacon hint is only sent if your device had | ||
| 184 | * either disabled active scanning or beaconing on a channel. We send to | ||
| 185 | * userspace the wiphy on which we removed a restriction from | ||
| 186 | * (%NL80211_ATTR_WIPHY) and the channel on which this occurred | ||
| 187 | * before (%NL80211_ATTR_FREQ_BEFORE) and after (%NL80211_ATTR_FREQ_AFTER) | ||
| 188 | * the beacon hint was processed. | ||
| 169 | * | 189 | * |
| 170 | * @NL80211_CMD_AUTHENTICATE: authentication request and notification. | 190 | * @NL80211_CMD_AUTHENTICATE: authentication request and notification. |
| 171 | * This command is used both as a command (request to authenticate) and | 191 | * This command is used both as a command (request to authenticate) and |
| @@ -185,8 +205,12 @@ | |||
| 185 | * frame, i.e., it was for the local STA and was received in correct | 205 | * frame, i.e., it was for the local STA and was received in correct |
| 186 | * state. This is similar to MLME-AUTHENTICATE.confirm primitive in the | 206 | * state. This is similar to MLME-AUTHENTICATE.confirm primitive in the |
| 187 | * MLME SAP interface (kernel providing MLME, userspace SME). The | 207 | * MLME SAP interface (kernel providing MLME, userspace SME). The |
| 188 | * included NL80211_ATTR_FRAME attribute contains the management frame | 208 | * included %NL80211_ATTR_FRAME attribute contains the management frame |
| 189 | * (including both the header and frame body, but not FCS). | 209 | * (including both the header and frame body, but not FCS). This event is |
| 210 | * also used to indicate if the authentication attempt timed out. In that | ||
| 211 | * case the %NL80211_ATTR_FRAME attribute is replaced with a | ||
| 212 | * %NL80211_ATTR_TIMED_OUT flag (and %NL80211_ATTR_MAC to indicate which | ||
| 213 | * pending authentication timed out). | ||
| 190 | * @NL80211_CMD_ASSOCIATE: association request and notification; like | 214 | * @NL80211_CMD_ASSOCIATE: association request and notification; like |
| 191 | * NL80211_CMD_AUTHENTICATE but for Association and Reassociation | 215 | * NL80211_CMD_AUTHENTICATE but for Association and Reassociation |
| 192 | * (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request, | 216 | * (similar to MLME-ASSOCIATE.request, MLME-REASSOCIATE.request, |
| @@ -199,6 +223,25 @@ | |||
| 199 | * NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to | 223 | * NL80211_CMD_AUTHENTICATE but for Disassociation frames (similar to |
| 200 | * MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives). | 224 | * MLME-DISASSOCIATE.request and MLME-DISASSOCIATE.indication primitives). |
| 201 | * | 225 | * |
| 226 | * @NL80211_CMD_MICHAEL_MIC_FAILURE: notification of a locally detected Michael | ||
| 227 | * MIC (part of TKIP) failure; sent on the "mlme" multicast group; the | ||
| 228 | * event includes %NL80211_ATTR_MAC to describe the source MAC address of | ||
| 229 | * the frame with invalid MIC, %NL80211_ATTR_KEY_TYPE to show the key | ||
| 230 | * type, %NL80211_ATTR_KEY_IDX to indicate the key identifier, and | ||
| 231 | * %NL80211_ATTR_KEY_SEQ to indicate the TSC value of the frame; this | ||
| 232 | * event matches with MLME-MICHAELMICFAILURE.indication() primitive | ||
| 233 | * | ||
| 234 | * @NL80211_CMD_JOIN_IBSS: Join a new IBSS -- given at least an SSID and a | ||
| 235 | * FREQ attribute (for the initial frequency if no peer can be found) | ||
| 236 | * and optionally a MAC (as BSSID) and FREQ_FIXED attribute if those | ||
| 237 | * should be fixed rather than automatically determined. Can only be | ||
| 238 | * executed on a network interface that is UP, and fixed BSSID/FREQ | ||
| 239 | * may be rejected. Another optional parameter is the beacon interval, | ||
| 240 | * given in the %NL80211_ATTR_BEACON_INTERVAL attribute, which if not | ||
| 241 | * given defaults to 100 TU (102.4ms). | ||
| 242 | * @NL80211_CMD_LEAVE_IBSS: Leave the IBSS -- no special arguments, the IBSS is | ||
| 243 | * determined by the network interface. | ||
| 244 | * | ||
| 202 | * @NL80211_CMD_MAX: highest used command number | 245 | * @NL80211_CMD_MAX: highest used command number |
| 203 | * @__NL80211_CMD_AFTER_LAST: internal use | 246 | * @__NL80211_CMD_AFTER_LAST: internal use |
| 204 | */ | 247 | */ |
| @@ -260,6 +303,13 @@ enum nl80211_commands { | |||
| 260 | NL80211_CMD_DEAUTHENTICATE, | 303 | NL80211_CMD_DEAUTHENTICATE, |
| 261 | NL80211_CMD_DISASSOCIATE, | 304 | NL80211_CMD_DISASSOCIATE, |
| 262 | 305 | ||
| 306 | NL80211_CMD_MICHAEL_MIC_FAILURE, | ||
| 307 | |||
| 308 | NL80211_CMD_REG_BEACON_HINT, | ||
| 309 | |||
| 310 | NL80211_CMD_JOIN_IBSS, | ||
| 311 | NL80211_CMD_LEAVE_IBSS, | ||
| 312 | |||
| 263 | /* add new commands above here */ | 313 | /* add new commands above here */ |
| 264 | 314 | ||
| 265 | /* used to define NL80211_CMD_MAX below */ | 315 | /* used to define NL80211_CMD_MAX below */ |
| @@ -278,6 +328,7 @@ enum nl80211_commands { | |||
| 278 | #define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE | 328 | #define NL80211_CMD_ASSOCIATE NL80211_CMD_ASSOCIATE |
| 279 | #define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE | 329 | #define NL80211_CMD_DEAUTHENTICATE NL80211_CMD_DEAUTHENTICATE |
| 280 | #define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE | 330 | #define NL80211_CMD_DISASSOCIATE NL80211_CMD_DISASSOCIATE |
| 331 | #define NL80211_CMD_REG_BEACON_HINT NL80211_CMD_REG_BEACON_HINT | ||
| 281 | 332 | ||
| 282 | /** | 333 | /** |
| 283 | * enum nl80211_attrs - nl80211 netlink attributes | 334 | * enum nl80211_attrs - nl80211 netlink attributes |
| @@ -296,6 +347,18 @@ enum nl80211_commands { | |||
| 296 | * NL80211_CHAN_HT20 = HT20 only | 347 | * NL80211_CHAN_HT20 = HT20 only |
| 297 | * NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel | 348 | * NL80211_CHAN_HT40MINUS = secondary channel is below the primary channel |
| 298 | * NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel | 349 | * NL80211_CHAN_HT40PLUS = secondary channel is above the primary channel |
| 350 | * @NL80211_ATTR_WIPHY_RETRY_SHORT: TX retry limit for frames whose length is | ||
| 351 | * less than or equal to the RTS threshold; allowed range: 1..255; | ||
| 352 | * dot11ShortRetryLimit; u8 | ||
| 353 | * @NL80211_ATTR_WIPHY_RETRY_LONG: TX retry limit for frames whose length is | ||
| 354 | * greater than the RTS threshold; allowed range: 1..255; | ||
| 355 | * dot11ShortLongLimit; u8 | ||
| 356 | * @NL80211_ATTR_WIPHY_FRAG_THRESHOLD: fragmentation threshold, i.e., maximum | ||
| 357 | * length in octets for frames; allowed range: 256..8000, disable | ||
| 358 | * fragmentation with (u32)-1; dot11FragmentationThreshold; u32 | ||
| 359 | * @NL80211_ATTR_WIPHY_RTS_THRESHOLD: RTS threshold (TX frames with length | ||
| 360 | * larger than or equal to this use RTS/CTS handshake); allowed range: | ||
| 361 | * 0..65536, disable with (u32)-1; dot11RTSThreshold; u32 | ||
| 299 | * | 362 | * |
| 300 | * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on | 363 | * @NL80211_ATTR_IFINDEX: network interface index of the device to operate on |
| 301 | * @NL80211_ATTR_IFNAME: network interface name | 364 | * @NL80211_ATTR_IFNAME: network interface name |
| @@ -319,7 +382,7 @@ enum nl80211_commands { | |||
| 319 | * | 382 | * |
| 320 | * @NL80211_ATTR_STA_AID: Association ID for the station (u16) | 383 | * @NL80211_ATTR_STA_AID: Association ID for the station (u16) |
| 321 | * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of | 384 | * @NL80211_ATTR_STA_FLAGS: flags, nested element with NLA_FLAG attributes of |
| 322 | * &enum nl80211_sta_flags. | 385 | * &enum nl80211_sta_flags (deprecated, use %NL80211_ATTR_STA_FLAGS2) |
| 323 | * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by | 386 | * @NL80211_ATTR_STA_LISTEN_INTERVAL: listen interval as defined by |
| 324 | * IEEE 802.11 7.3.1.6 (u16). | 387 | * IEEE 802.11 7.3.1.6 (u16). |
| 325 | * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported | 388 | * @NL80211_ATTR_STA_SUPPORTED_RATES: supported rates, array of supported |
| @@ -380,6 +443,8 @@ enum nl80211_commands { | |||
| 380 | * | 443 | * |
| 381 | * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with | 444 | * @NL80211_ATTR_MAX_NUM_SCAN_SSIDS: number of SSIDs you can scan with |
| 382 | * a single scan request, a wiphy attribute. | 445 | * a single scan request, a wiphy attribute. |
| 446 | * @NL80211_ATTR_MAX_SCAN_IE_LEN: maximum length of information elements | ||
| 447 | * that can be added to a scan request | ||
| 383 | * | 448 | * |
| 384 | * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) | 449 | * @NL80211_ATTR_SCAN_FREQUENCIES: nested attribute with frequencies (in MHz) |
| 385 | * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive | 450 | * @NL80211_ATTR_SCAN_SSIDS: nested attribute with SSIDs, leave out for passive |
| @@ -408,6 +473,44 @@ enum nl80211_commands { | |||
| 408 | * @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and | 473 | * @NL80211_ATTR_REASON_CODE: ReasonCode for %NL80211_CMD_DEAUTHENTICATE and |
| 409 | * %NL80211_CMD_DISASSOCIATE, u16 | 474 | * %NL80211_CMD_DISASSOCIATE, u16 |
| 410 | * | 475 | * |
| 476 | * @NL80211_ATTR_KEY_TYPE: Key Type, see &enum nl80211_key_type, represented as | ||
| 477 | * a u32 | ||
| 478 | * | ||
| 479 | * @NL80211_ATTR_FREQ_BEFORE: A channel which has suffered a regulatory change | ||
| 480 | * due to considerations from a beacon hint. This attribute reflects | ||
| 481 | * the state of the channel _before_ the beacon hint processing. This | ||
| 482 | * attributes consists of a nested attribute containing | ||
| 483 | * NL80211_FREQUENCY_ATTR_* | ||
| 484 | * @NL80211_ATTR_FREQ_AFTER: A channel which has suffered a regulatory change | ||
| 485 | * due to considerations from a beacon hint. This attribute reflects | ||
| 486 | * the state of the channel _after_ the beacon hint processing. This | ||
| 487 | * attributes consists of a nested attribute containing | ||
| 488 | * NL80211_FREQUENCY_ATTR_* | ||
| 489 | * | ||
| 490 | * @NL80211_ATTR_CIPHER_SUITES: a set of u32 values indicating the supported | ||
| 491 | * cipher suites | ||
| 492 | * | ||
| 493 | * @NL80211_ATTR_FREQ_FIXED: a flag indicating the IBSS should not try to look | ||
| 494 | * for other networks on different channels | ||
| 495 | * | ||
| 496 | * @NL80211_ATTR_TIMED_OUT: a flag indicating than an operation timed out; this | ||
| 497 | * is used, e.g., with %NL80211_CMD_AUTHENTICATE event | ||
| 498 | * | ||
| 499 | * @NL80211_ATTR_USE_MFP: Whether management frame protection (IEEE 802.11w) is | ||
| 500 | * used for the association (&enum nl80211_mfp, represented as a u32); | ||
| 501 | * this attribute can be used | ||
| 502 | * with %NL80211_CMD_ASSOCIATE request | ||
| 503 | * | ||
| 504 | * @NL80211_ATTR_STA_FLAGS2: Attribute containing a | ||
| 505 | * &struct nl80211_sta_flag_update. | ||
| 506 | * | ||
| 507 | * @NL80211_ATTR_CONTROL_PORT: A flag indicating whether user space controls | ||
| 508 | * IEEE 802.1X port, i.e., sets/clears %NL80211_STA_FLAG_AUTHORIZED, in | ||
| 509 | * station mode. If the flag is included in %NL80211_CMD_ASSOCIATE | ||
| 510 | * request, the driver will assume that the port is unauthorized until | ||
| 511 | * authorized by user space. Otherwise, port is marked authorized by | ||
| 512 | * default in station mode. | ||
| 513 | * | ||
| 411 | * @NL80211_ATTR_MAX: highest attribute number currently defined | 514 | * @NL80211_ATTR_MAX: highest attribute number currently defined |
| 412 | * @__NL80211_ATTR_AFTER_LAST: internal use | 515 | * @__NL80211_ATTR_AFTER_LAST: internal use |
| 413 | */ | 516 | */ |
| @@ -492,6 +595,30 @@ enum nl80211_attrs { | |||
| 492 | NL80211_ATTR_AUTH_TYPE, | 595 | NL80211_ATTR_AUTH_TYPE, |
| 493 | NL80211_ATTR_REASON_CODE, | 596 | NL80211_ATTR_REASON_CODE, |
| 494 | 597 | ||
| 598 | NL80211_ATTR_KEY_TYPE, | ||
| 599 | |||
| 600 | NL80211_ATTR_MAX_SCAN_IE_LEN, | ||
| 601 | NL80211_ATTR_CIPHER_SUITES, | ||
| 602 | |||
| 603 | NL80211_ATTR_FREQ_BEFORE, | ||
| 604 | NL80211_ATTR_FREQ_AFTER, | ||
| 605 | |||
| 606 | NL80211_ATTR_FREQ_FIXED, | ||
| 607 | |||
| 608 | |||
| 609 | NL80211_ATTR_WIPHY_RETRY_SHORT, | ||
| 610 | NL80211_ATTR_WIPHY_RETRY_LONG, | ||
| 611 | NL80211_ATTR_WIPHY_FRAG_THRESHOLD, | ||
| 612 | NL80211_ATTR_WIPHY_RTS_THRESHOLD, | ||
| 613 | |||
| 614 | NL80211_ATTR_TIMED_OUT, | ||
| 615 | |||
| 616 | NL80211_ATTR_USE_MFP, | ||
| 617 | |||
| 618 | NL80211_ATTR_STA_FLAGS2, | ||
| 619 | |||
| 620 | NL80211_ATTR_CONTROL_PORT, | ||
| 621 | |||
| 495 | /* add attributes here, update the policy in nl80211.c */ | 622 | /* add attributes here, update the policy in nl80211.c */ |
| 496 | 623 | ||
| 497 | __NL80211_ATTR_AFTER_LAST, | 624 | __NL80211_ATTR_AFTER_LAST, |
| @@ -581,6 +708,18 @@ enum nl80211_sta_flags { | |||
| 581 | }; | 708 | }; |
| 582 | 709 | ||
| 583 | /** | 710 | /** |
| 711 | * struct nl80211_sta_flag_update - station flags mask/set | ||
| 712 | * @mask: mask of station flags to set | ||
| 713 | * @set: which values to set them to | ||
| 714 | * | ||
| 715 | * Both mask and set contain bits as per &enum nl80211_sta_flags. | ||
| 716 | */ | ||
| 717 | struct nl80211_sta_flag_update { | ||
| 718 | __u32 mask; | ||
| 719 | __u32 set; | ||
| 720 | } __attribute__((packed)); | ||
| 721 | |||
| 722 | /** | ||
| 584 | * enum nl80211_rate_info - bitrate information | 723 | * enum nl80211_rate_info - bitrate information |
| 585 | * | 724 | * |
| 586 | * These attribute types are used with %NL80211_STA_INFO_TXRATE | 725 | * These attribute types are used with %NL80211_STA_INFO_TXRATE |
| @@ -1062,4 +1201,27 @@ enum nl80211_auth_type { | |||
| 1062 | NL80211_AUTHTYPE_FT, | 1201 | NL80211_AUTHTYPE_FT, |
| 1063 | NL80211_AUTHTYPE_NETWORK_EAP, | 1202 | NL80211_AUTHTYPE_NETWORK_EAP, |
| 1064 | }; | 1203 | }; |
| 1204 | |||
| 1205 | /** | ||
| 1206 | * enum nl80211_key_type - Key Type | ||
| 1207 | * @NL80211_KEYTYPE_GROUP: Group (broadcast/multicast) key | ||
| 1208 | * @NL80211_KEYTYPE_PAIRWISE: Pairwise (unicast/individual) key | ||
| 1209 | * @NL80211_KEYTYPE_PEERKEY: PeerKey (DLS) | ||
| 1210 | */ | ||
| 1211 | enum nl80211_key_type { | ||
| 1212 | NL80211_KEYTYPE_GROUP, | ||
| 1213 | NL80211_KEYTYPE_PAIRWISE, | ||
| 1214 | NL80211_KEYTYPE_PEERKEY, | ||
| 1215 | }; | ||
| 1216 | |||
| 1217 | /** | ||
| 1218 | * enum nl80211_mfp - Management frame protection state | ||
| 1219 | * @NL80211_MFP_NO: Management frame protection not used | ||
| 1220 | * @NL80211_MFP_REQUIRED: Management frame protection required | ||
| 1221 | */ | ||
| 1222 | enum nl80211_mfp { | ||
| 1223 | NL80211_MFP_NO, | ||
| 1224 | NL80211_MFP_REQUIRED, | ||
| 1225 | }; | ||
| 1226 | |||
| 1065 | #endif /* __LINUX_NL80211_H */ | 1227 | #endif /* __LINUX_NL80211_H */ |
diff --git a/include/linux/nl802154.h b/include/linux/nl802154.h new file mode 100644 index 000000000000..2cda00ccfcca --- /dev/null +++ b/include/linux/nl802154.h | |||
| @@ -0,0 +1,119 @@ | |||
| 1 | /* | ||
| 2 | * nl802154.h | ||
| 3 | * | ||
| 4 | * Copyright (C) 2007, 2008, 2009 Siemens AG | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License version 2 | ||
| 8 | * as published by the Free Software Foundation. | ||
| 9 | * | ||
| 10 | * This program is distributed in the hope that it will be useful, | ||
| 11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 13 | * GNU General Public License for more details. | ||
| 14 | * | ||
| 15 | * You should have received a copy of the GNU General Public License along | ||
| 16 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
| 17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 18 | * | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef NL802154_H | ||
| 22 | #define NL802154_H | ||
| 23 | |||
| 24 | #define IEEE802154_NL_NAME "802.15.4 MAC" | ||
| 25 | #define IEEE802154_MCAST_COORD_NAME "coordinator" | ||
| 26 | #define IEEE802154_MCAST_BEACON_NAME "beacon" | ||
| 27 | |||
| 28 | enum { | ||
| 29 | __IEEE802154_ATTR_INVALID, | ||
| 30 | |||
| 31 | IEEE802154_ATTR_DEV_NAME, | ||
| 32 | IEEE802154_ATTR_DEV_INDEX, | ||
| 33 | |||
| 34 | IEEE802154_ATTR_STATUS, | ||
| 35 | |||
| 36 | IEEE802154_ATTR_SHORT_ADDR, | ||
| 37 | IEEE802154_ATTR_HW_ADDR, | ||
| 38 | IEEE802154_ATTR_PAN_ID, | ||
| 39 | |||
| 40 | IEEE802154_ATTR_CHANNEL, | ||
| 41 | |||
| 42 | IEEE802154_ATTR_COORD_SHORT_ADDR, | ||
| 43 | IEEE802154_ATTR_COORD_HW_ADDR, | ||
| 44 | IEEE802154_ATTR_COORD_PAN_ID, | ||
| 45 | |||
| 46 | IEEE802154_ATTR_SRC_SHORT_ADDR, | ||
| 47 | IEEE802154_ATTR_SRC_HW_ADDR, | ||
| 48 | IEEE802154_ATTR_SRC_PAN_ID, | ||
| 49 | |||
| 50 | IEEE802154_ATTR_DEST_SHORT_ADDR, | ||
| 51 | IEEE802154_ATTR_DEST_HW_ADDR, | ||
| 52 | IEEE802154_ATTR_DEST_PAN_ID, | ||
| 53 | |||
| 54 | IEEE802154_ATTR_CAPABILITY, | ||
| 55 | IEEE802154_ATTR_REASON, | ||
| 56 | IEEE802154_ATTR_SCAN_TYPE, | ||
| 57 | IEEE802154_ATTR_CHANNELS, | ||
| 58 | IEEE802154_ATTR_DURATION, | ||
| 59 | IEEE802154_ATTR_ED_LIST, | ||
| 60 | IEEE802154_ATTR_BCN_ORD, | ||
| 61 | IEEE802154_ATTR_SF_ORD, | ||
| 62 | IEEE802154_ATTR_PAN_COORD, | ||
| 63 | IEEE802154_ATTR_BAT_EXT, | ||
| 64 | IEEE802154_ATTR_COORD_REALIGN, | ||
| 65 | IEEE802154_ATTR_SEC, | ||
| 66 | |||
| 67 | __IEEE802154_ATTR_MAX, | ||
| 68 | }; | ||
| 69 | |||
| 70 | #define IEEE802154_ATTR_MAX (__IEEE802154_ATTR_MAX - 1) | ||
| 71 | |||
| 72 | extern struct nla_policy ieee802154_policy[]; | ||
| 73 | |||
| 74 | /* commands */ | ||
| 75 | /* REQ should be responded with CONF | ||
| 76 | * and INDIC with RESP | ||
| 77 | */ | ||
| 78 | enum { | ||
| 79 | __IEEE802154_COMMAND_INVALID, | ||
| 80 | |||
| 81 | IEEE802154_ASSOCIATE_REQ, | ||
| 82 | IEEE802154_ASSOCIATE_CONF, | ||
| 83 | IEEE802154_DISASSOCIATE_REQ, | ||
| 84 | IEEE802154_DISASSOCIATE_CONF, | ||
| 85 | IEEE802154_GET_REQ, | ||
| 86 | IEEE802154_GET_CONF, | ||
| 87 | IEEE802154_RESET_REQ, | ||
| 88 | IEEE802154_RESET_CONF, | ||
| 89 | IEEE802154_SCAN_REQ, | ||
| 90 | IEEE802154_SCAN_CONF, | ||
| 91 | IEEE802154_SET_REQ, | ||
| 92 | IEEE802154_SET_CONF, | ||
| 93 | IEEE802154_START_REQ, | ||
| 94 | IEEE802154_START_CONF, | ||
| 95 | IEEE802154_SYNC_REQ, | ||
| 96 | IEEE802154_POLL_REQ, | ||
| 97 | IEEE802154_POLL_CONF, | ||
| 98 | |||
| 99 | IEEE802154_ASSOCIATE_INDIC, | ||
| 100 | IEEE802154_ASSOCIATE_RESP, | ||
| 101 | IEEE802154_DISASSOCIATE_INDIC, | ||
| 102 | IEEE802154_BEACON_NOTIFY_INDIC, | ||
| 103 | IEEE802154_ORPHAN_INDIC, | ||
| 104 | IEEE802154_ORPHAN_RESP, | ||
| 105 | IEEE802154_COMM_STATUS_INDIC, | ||
| 106 | IEEE802154_SYNC_LOSS_INDIC, | ||
| 107 | |||
| 108 | IEEE802154_GTS_REQ, /* Not supported yet */ | ||
| 109 | IEEE802154_GTS_INDIC, /* Not supported yet */ | ||
| 110 | IEEE802154_GTS_CONF, /* Not supported yet */ | ||
| 111 | IEEE802154_RX_ENABLE_REQ, /* Not supported yet */ | ||
| 112 | IEEE802154_RX_ENABLE_CONF, /* Not supported yet */ | ||
| 113 | |||
| 114 | __IEEE802154_CMD_MAX, | ||
| 115 | }; | ||
| 116 | |||
| 117 | #define IEEE802154_CMD_MAX (__IEEE802154_CMD_MAX - 1) | ||
| 118 | |||
| 119 | #endif | ||
diff --git a/include/linux/nls.h b/include/linux/nls.h index 52b1a76c1b43..d47beef08dfd 100644 --- a/include/linux/nls.h +++ b/include/linux/nls.h | |||
| @@ -3,8 +3,23 @@ | |||
| 3 | 3 | ||
| 4 | #include <linux/init.h> | 4 | #include <linux/init.h> |
| 5 | 5 | ||
| 6 | /* unicode character */ | 6 | /* Unicode has changed over the years. Unicode code points no longer |
| 7 | typedef __u16 wchar_t; | 7 | * fit into 16 bits; as of Unicode 5 valid code points range from 0 |
| 8 | * to 0x10ffff (17 planes, where each plane holds 65536 code points). | ||
| 9 | * | ||
| 10 | * The original decision to represent Unicode characters as 16-bit | ||
| 11 | * wchar_t values is now outdated. But plane 0 still includes the | ||
| 12 | * most commonly used characters, so we will retain it. The newer | ||
| 13 | * 32-bit unicode_t type can be used when it is necessary to | ||
| 14 | * represent the full Unicode character set. | ||
| 15 | */ | ||
| 16 | |||
| 17 | /* Plane-0 Unicode character */ | ||
| 18 | typedef u16 wchar_t; | ||
| 19 | #define MAX_WCHAR_T 0xffff | ||
| 20 | |||
| 21 | /* Arbitrary Unicode character */ | ||
| 22 | typedef u32 unicode_t; | ||
| 8 | 23 | ||
| 9 | struct nls_table { | 24 | struct nls_table { |
| 10 | const char *charset; | 25 | const char *charset; |
| @@ -21,6 +36,13 @@ struct nls_table { | |||
| 21 | /* this value hold the maximum octet of charset */ | 36 | /* this value hold the maximum octet of charset */ |
| 22 | #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */ | 37 | #define NLS_MAX_CHARSET_SIZE 6 /* for UTF-8 */ |
| 23 | 38 | ||
| 39 | /* Byte order for UTF-16 strings */ | ||
| 40 | enum utf16_endian { | ||
| 41 | UTF16_HOST_ENDIAN, | ||
| 42 | UTF16_LITTLE_ENDIAN, | ||
| 43 | UTF16_BIG_ENDIAN | ||
| 44 | }; | ||
| 45 | |||
| 24 | /* nls.c */ | 46 | /* nls.c */ |
| 25 | extern int register_nls(struct nls_table *); | 47 | extern int register_nls(struct nls_table *); |
| 26 | extern int unregister_nls(struct nls_table *); | 48 | extern int unregister_nls(struct nls_table *); |
| @@ -28,10 +50,11 @@ extern struct nls_table *load_nls(char *); | |||
| 28 | extern void unload_nls(struct nls_table *); | 50 | extern void unload_nls(struct nls_table *); |
| 29 | extern struct nls_table *load_nls_default(void); | 51 | extern struct nls_table *load_nls_default(void); |
| 30 | 52 | ||
| 31 | extern int utf8_mbtowc(wchar_t *, const __u8 *, int); | 53 | extern int utf8_to_utf32(const u8 *s, int len, unicode_t *pu); |
| 32 | extern int utf8_mbstowcs(wchar_t *, const __u8 *, int); | 54 | extern int utf32_to_utf8(unicode_t u, u8 *s, int maxlen); |
| 33 | extern int utf8_wctomb(__u8 *, wchar_t, int); | 55 | extern int utf8s_to_utf16s(const u8 *s, int len, wchar_t *pwcs); |
| 34 | extern int utf8_wcstombs(__u8 *, const wchar_t *, int); | 56 | extern int utf16s_to_utf8s(const wchar_t *pwcs, int len, |
| 57 | enum utf16_endian endian, u8 *s, int maxlen); | ||
| 35 | 58 | ||
| 36 | static inline unsigned char nls_tolower(struct nls_table *t, unsigned char c) | 59 | static inline unsigned char nls_tolower(struct nls_table *t, unsigned char c) |
| 37 | { | 60 | { |
diff --git a/include/linux/nodemask.h b/include/linux/nodemask.h index 848025cd7087..829b94b156f2 100644 --- a/include/linux/nodemask.h +++ b/include/linux/nodemask.h | |||
| @@ -408,6 +408,19 @@ static inline int num_node_state(enum node_states state) | |||
| 408 | #define next_online_node(nid) next_node((nid), node_states[N_ONLINE]) | 408 | #define next_online_node(nid) next_node((nid), node_states[N_ONLINE]) |
| 409 | 409 | ||
| 410 | extern int nr_node_ids; | 410 | extern int nr_node_ids; |
| 411 | extern int nr_online_nodes; | ||
| 412 | |||
| 413 | static inline void node_set_online(int nid) | ||
| 414 | { | ||
| 415 | node_set_state(nid, N_ONLINE); | ||
| 416 | nr_online_nodes = num_node_state(N_ONLINE); | ||
| 417 | } | ||
| 418 | |||
| 419 | static inline void node_set_offline(int nid) | ||
| 420 | { | ||
| 421 | node_clear_state(nid, N_ONLINE); | ||
| 422 | nr_online_nodes = num_node_state(N_ONLINE); | ||
| 423 | } | ||
| 411 | #else | 424 | #else |
| 412 | 425 | ||
| 413 | static inline int node_state(int node, enum node_states state) | 426 | static inline int node_state(int node, enum node_states state) |
| @@ -434,7 +447,10 @@ static inline int num_node_state(enum node_states state) | |||
| 434 | #define first_online_node 0 | 447 | #define first_online_node 0 |
| 435 | #define next_online_node(nid) (MAX_NUMNODES) | 448 | #define next_online_node(nid) (MAX_NUMNODES) |
| 436 | #define nr_node_ids 1 | 449 | #define nr_node_ids 1 |
| 450 | #define nr_online_nodes 1 | ||
| 437 | 451 | ||
| 452 | #define node_set_online(node) node_set_state((node), N_ONLINE) | ||
| 453 | #define node_set_offline(node) node_clear_state((node), N_ONLINE) | ||
| 438 | #endif | 454 | #endif |
| 439 | 455 | ||
| 440 | #define node_online_map node_states[N_ONLINE] | 456 | #define node_online_map node_states[N_ONLINE] |
| @@ -454,9 +470,6 @@ static inline int num_node_state(enum node_states state) | |||
| 454 | #define node_online(node) node_state((node), N_ONLINE) | 470 | #define node_online(node) node_state((node), N_ONLINE) |
| 455 | #define node_possible(node) node_state((node), N_POSSIBLE) | 471 | #define node_possible(node) node_state((node), N_POSSIBLE) |
| 456 | 472 | ||
| 457 | #define node_set_online(node) node_set_state((node), N_ONLINE) | ||
| 458 | #define node_set_offline(node) node_clear_state((node), N_ONLINE) | ||
| 459 | |||
| 460 | #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) | 473 | #define for_each_node(node) for_each_node_state(node, N_POSSIBLE) |
| 461 | #define for_each_online_node(node) for_each_node_state(node, N_ONLINE) | 474 | #define for_each_online_node(node) for_each_node_state(node, N_ONLINE) |
| 462 | 475 | ||
diff --git a/include/linux/notifier.h b/include/linux/notifier.h index b86fa2ffca0c..81bc252dc8ac 100644 --- a/include/linux/notifier.h +++ b/include/linux/notifier.h | |||
| @@ -198,6 +198,7 @@ static inline int notifier_to_errno(int ret) | |||
| 198 | #define NETDEV_CHANGENAME 0x000A | 198 | #define NETDEV_CHANGENAME 0x000A |
| 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 | 202 | ||
| 202 | #define SYS_DOWN 0x0001 /* Notify of system down */ | 203 | #define SYS_DOWN 0x0001 /* Notify of system down */ |
| 203 | #define SYS_RESTART SYS_DOWN | 204 | #define SYS_RESTART SYS_DOWN |
diff --git a/include/linux/of.h b/include/linux/of.h index 6a7efa242f5e..7be2d1043c16 100644 --- a/include/linux/of.h +++ b/include/linux/of.h | |||
| @@ -77,6 +77,9 @@ extern int of_n_size_cells(struct device_node *np); | |||
| 77 | extern const struct of_device_id *of_match_node( | 77 | extern const struct of_device_id *of_match_node( |
| 78 | const struct of_device_id *matches, const struct device_node *node); | 78 | const struct of_device_id *matches, const struct device_node *node); |
| 79 | extern int of_modalias_node(struct device_node *node, char *modalias, int len); | 79 | extern int of_modalias_node(struct device_node *node, char *modalias, int len); |
| 80 | extern struct device_node *of_parse_phandle(struct device_node *np, | ||
| 81 | const char *phandle_name, | ||
| 82 | int index); | ||
| 80 | extern int of_parse_phandles_with_args(struct device_node *np, | 83 | extern int of_parse_phandles_with_args(struct device_node *np, |
| 81 | const char *list_name, const char *cells_name, int index, | 84 | const char *list_name, const char *cells_name, int index, |
| 82 | struct device_node **out_node, const void **out_args); | 85 | struct device_node **out_node, const void **out_args); |
diff --git a/include/linux/of_mdio.h b/include/linux/of_mdio.h new file mode 100644 index 000000000000..c9663c690303 --- /dev/null +++ b/include/linux/of_mdio.h | |||
| @@ -0,0 +1,22 @@ | |||
| 1 | /* | ||
| 2 | * OF helpers for the MDIO (Ethernet PHY) API | ||
| 3 | * | ||
| 4 | * Copyright (c) 2009 Secret Lab Technologies, Ltd. | ||
| 5 | * | ||
| 6 | * This file is released under the GPLv2 | ||
| 7 | */ | ||
| 8 | |||
| 9 | #ifndef __LINUX_OF_MDIO_H | ||
| 10 | #define __LINUX_OF_MDIO_H | ||
| 11 | |||
| 12 | #include <linux/phy.h> | ||
| 13 | #include <linux/of.h> | ||
| 14 | |||
| 15 | extern int of_mdiobus_register(struct mii_bus *mdio, struct device_node *np); | ||
| 16 | extern struct phy_device *of_phy_find_device(struct device_node *phy_np); | ||
| 17 | extern struct phy_device *of_phy_connect(struct net_device *dev, | ||
| 18 | struct device_node *phy_np, | ||
| 19 | void (*hndlr)(struct net_device *), | ||
| 20 | u32 flags, phy_interface_t iface); | ||
| 21 | |||
| 22 | #endif /* __LINUX_OF_MDIO_H */ | ||
diff --git a/include/linux/page-flags.h b/include/linux/page-flags.h index 62214c7d2d93..e2e5ce543595 100644 --- a/include/linux/page-flags.h +++ b/include/linux/page-flags.h | |||
| @@ -95,9 +95,7 @@ enum pageflags { | |||
| 95 | PG_reclaim, /* To be reclaimed asap */ | 95 | PG_reclaim, /* To be reclaimed asap */ |
| 96 | PG_buddy, /* Page is free, on buddy lists */ | 96 | PG_buddy, /* Page is free, on buddy lists */ |
| 97 | PG_swapbacked, /* Page is backed by RAM/swap */ | 97 | PG_swapbacked, /* Page is backed by RAM/swap */ |
| 98 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 99 | PG_unevictable, /* Page is "unevictable" */ | 98 | PG_unevictable, /* Page is "unevictable" */ |
| 100 | #endif | ||
| 101 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 99 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
| 102 | PG_mlocked, /* Page is vma mlocked */ | 100 | PG_mlocked, /* Page is vma mlocked */ |
| 103 | #endif | 101 | #endif |
| @@ -120,7 +118,6 @@ enum pageflags { | |||
| 120 | PG_savepinned = PG_dirty, | 118 | PG_savepinned = PG_dirty, |
| 121 | 119 | ||
| 122 | /* SLOB */ | 120 | /* SLOB */ |
| 123 | PG_slob_page = PG_active, | ||
| 124 | PG_slob_free = PG_private, | 121 | PG_slob_free = PG_private, |
| 125 | 122 | ||
| 126 | /* SLUB */ | 123 | /* SLUB */ |
| @@ -203,7 +200,6 @@ PAGEFLAG(SavePinned, savepinned); /* Xen */ | |||
| 203 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) | 200 | PAGEFLAG(Reserved, reserved) __CLEARPAGEFLAG(Reserved, reserved) |
| 204 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) | 201 | PAGEFLAG(SwapBacked, swapbacked) __CLEARPAGEFLAG(SwapBacked, swapbacked) |
| 205 | 202 | ||
| 206 | __PAGEFLAG(SlobPage, slob_page) | ||
| 207 | __PAGEFLAG(SlobFree, slob_free) | 203 | __PAGEFLAG(SlobFree, slob_free) |
| 208 | 204 | ||
| 209 | __PAGEFLAG(SlubFrozen, slub_frozen) | 205 | __PAGEFLAG(SlubFrozen, slub_frozen) |
| @@ -248,14 +244,8 @@ PAGEFLAG_FALSE(SwapCache) | |||
| 248 | SETPAGEFLAG_NOOP(SwapCache) CLEARPAGEFLAG_NOOP(SwapCache) | 244 | SETPAGEFLAG_NOOP(SwapCache) CLEARPAGEFLAG_NOOP(SwapCache) |
| 249 | #endif | 245 | #endif |
| 250 | 246 | ||
| 251 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 252 | PAGEFLAG(Unevictable, unevictable) __CLEARPAGEFLAG(Unevictable, unevictable) | 247 | PAGEFLAG(Unevictable, unevictable) __CLEARPAGEFLAG(Unevictable, unevictable) |
| 253 | TESTCLEARFLAG(Unevictable, unevictable) | 248 | TESTCLEARFLAG(Unevictable, unevictable) |
| 254 | #else | ||
| 255 | PAGEFLAG_FALSE(Unevictable) TESTCLEARFLAG_FALSE(Unevictable) | ||
| 256 | SETPAGEFLAG_NOOP(Unevictable) CLEARPAGEFLAG_NOOP(Unevictable) | ||
| 257 | __CLEARPAGEFLAG_NOOP(Unevictable) | ||
| 258 | #endif | ||
| 259 | 249 | ||
| 260 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 250 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
| 261 | #define MLOCK_PAGES 1 | 251 | #define MLOCK_PAGES 1 |
| @@ -382,12 +372,6 @@ static inline void __ClearPageTail(struct page *page) | |||
| 382 | 372 | ||
| 383 | #endif /* !PAGEFLAGS_EXTENDED */ | 373 | #endif /* !PAGEFLAGS_EXTENDED */ |
| 384 | 374 | ||
| 385 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 386 | #define __PG_UNEVICTABLE (1 << PG_unevictable) | ||
| 387 | #else | ||
| 388 | #define __PG_UNEVICTABLE 0 | ||
| 389 | #endif | ||
| 390 | |||
| 391 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT | 375 | #ifdef CONFIG_HAVE_MLOCKED_PAGE_BIT |
| 392 | #define __PG_MLOCKED (1 << PG_mlocked) | 376 | #define __PG_MLOCKED (1 << PG_mlocked) |
| 393 | #else | 377 | #else |
| @@ -403,7 +387,7 @@ static inline void __ClearPageTail(struct page *page) | |||
| 403 | 1 << PG_private | 1 << PG_private_2 | \ | 387 | 1 << PG_private | 1 << PG_private_2 | \ |
| 404 | 1 << PG_buddy | 1 << PG_writeback | 1 << PG_reserved | \ | 388 | 1 << PG_buddy | 1 << PG_writeback | 1 << PG_reserved | \ |
| 405 | 1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \ | 389 | 1 << PG_slab | 1 << PG_swapcache | 1 << PG_active | \ |
| 406 | __PG_UNEVICTABLE | __PG_MLOCKED) | 390 | 1 << PG_unevictable | __PG_MLOCKED) |
| 407 | 391 | ||
| 408 | /* | 392 | /* |
| 409 | * Flags checked when a page is prepped for return by the page allocator. | 393 | * Flags checked when a page is prepped for return by the page allocator. |
diff --git a/include/linux/pagemap.h b/include/linux/pagemap.h index 34da5230faab..aec3252afcf5 100644 --- a/include/linux/pagemap.h +++ b/include/linux/pagemap.h | |||
| @@ -22,9 +22,7 @@ enum mapping_flags { | |||
| 22 | AS_EIO = __GFP_BITS_SHIFT + 0, /* IO error on async write */ | 22 | AS_EIO = __GFP_BITS_SHIFT + 0, /* IO error on async write */ |
| 23 | AS_ENOSPC = __GFP_BITS_SHIFT + 1, /* ENOSPC on async write */ | 23 | AS_ENOSPC = __GFP_BITS_SHIFT + 1, /* ENOSPC on async write */ |
| 24 | AS_MM_ALL_LOCKS = __GFP_BITS_SHIFT + 2, /* under mm_take_all_locks() */ | 24 | AS_MM_ALL_LOCKS = __GFP_BITS_SHIFT + 2, /* under mm_take_all_locks() */ |
| 25 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 26 | AS_UNEVICTABLE = __GFP_BITS_SHIFT + 3, /* e.g., ramdisk, SHM_LOCK */ | 25 | AS_UNEVICTABLE = __GFP_BITS_SHIFT + 3, /* e.g., ramdisk, SHM_LOCK */ |
| 27 | #endif | ||
| 28 | }; | 26 | }; |
| 29 | 27 | ||
| 30 | static inline void mapping_set_error(struct address_space *mapping, int error) | 28 | static inline void mapping_set_error(struct address_space *mapping, int error) |
| @@ -37,8 +35,6 @@ static inline void mapping_set_error(struct address_space *mapping, int error) | |||
| 37 | } | 35 | } |
| 38 | } | 36 | } |
| 39 | 37 | ||
| 40 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 41 | |||
| 42 | static inline void mapping_set_unevictable(struct address_space *mapping) | 38 | static inline void mapping_set_unevictable(struct address_space *mapping) |
| 43 | { | 39 | { |
| 44 | set_bit(AS_UNEVICTABLE, &mapping->flags); | 40 | set_bit(AS_UNEVICTABLE, &mapping->flags); |
| @@ -55,14 +51,6 @@ static inline int mapping_unevictable(struct address_space *mapping) | |||
| 55 | return test_bit(AS_UNEVICTABLE, &mapping->flags); | 51 | return test_bit(AS_UNEVICTABLE, &mapping->flags); |
| 56 | return !!mapping; | 52 | return !!mapping; |
| 57 | } | 53 | } |
| 58 | #else | ||
| 59 | static inline void mapping_set_unevictable(struct address_space *mapping) { } | ||
| 60 | static inline void mapping_clear_unevictable(struct address_space *mapping) { } | ||
| 61 | static inline int mapping_unevictable(struct address_space *mapping) | ||
| 62 | { | ||
| 63 | return 0; | ||
| 64 | } | ||
| 65 | #endif | ||
| 66 | 54 | ||
| 67 | static inline gfp_t mapping_gfp_mask(struct address_space * mapping) | 55 | static inline gfp_t mapping_gfp_mask(struct address_space * mapping) |
| 68 | { | 56 | { |
diff --git a/include/linux/pci.h b/include/linux/pci.h index 72698d89e767..8e366bb0705f 100644 --- a/include/linux/pci.h +++ b/include/linux/pci.h | |||
| @@ -124,6 +124,14 @@ typedef int __bitwise pci_power_t; | |||
| 124 | #define PCI_UNKNOWN ((pci_power_t __force) 5) | 124 | #define PCI_UNKNOWN ((pci_power_t __force) 5) |
| 125 | #define PCI_POWER_ERROR ((pci_power_t __force) -1) | 125 | #define PCI_POWER_ERROR ((pci_power_t __force) -1) |
| 126 | 126 | ||
| 127 | /* Remember to update this when the list above changes! */ | ||
| 128 | extern const char *pci_power_names[]; | ||
| 129 | |||
| 130 | static inline const char *pci_power_name(pci_power_t state) | ||
| 131 | { | ||
| 132 | return pci_power_names[1 + (int) state]; | ||
| 133 | } | ||
| 134 | |||
| 127 | #define PCI_PM_D2_DELAY 200 | 135 | #define PCI_PM_D2_DELAY 200 |
| 128 | #define PCI_PM_D3_WAIT 10 | 136 | #define PCI_PM_D3_WAIT 10 |
| 129 | #define PCI_PM_BUS_WAIT 50 | 137 | #define PCI_PM_BUS_WAIT 50 |
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h index a3df4a2bba63..a3b000365795 100644 --- a/include/linux/pci_ids.h +++ b/include/linux/pci_ids.h | |||
| @@ -104,6 +104,7 @@ | |||
| 104 | #define PCI_CLASS_SERIAL_USB_UHCI 0x0c0300 | 104 | #define PCI_CLASS_SERIAL_USB_UHCI 0x0c0300 |
| 105 | #define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310 | 105 | #define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310 |
| 106 | #define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320 | 106 | #define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320 |
| 107 | #define PCI_CLASS_SERIAL_USB_XHCI 0x0c0330 | ||
| 107 | #define PCI_CLASS_SERIAL_FIBER 0x0c04 | 108 | #define PCI_CLASS_SERIAL_FIBER 0x0c04 |
| 108 | #define PCI_CLASS_SERIAL_SMBUS 0x0c05 | 109 | #define PCI_CLASS_SERIAL_SMBUS 0x0c05 |
| 109 | 110 | ||
| @@ -1067,8 +1068,6 @@ | |||
| 1067 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS 0x0034 | 1068 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SMBUS 0x0034 |
| 1068 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035 | 1069 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_IDE 0x0035 |
| 1069 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036 | 1070 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA 0x0036 |
| 1070 | #define PCI_DEVICE_ID_NVIDIA_NVENET_10 0x0037 | ||
| 1071 | #define PCI_DEVICE_ID_NVIDIA_NVENET_11 0x0038 | ||
| 1072 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2 0x003e | 1071 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP04_SATA2 0x003e |
| 1073 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040 | 1072 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800_ULTRA 0x0040 |
| 1074 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800 0x0041 | 1073 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_6800 0x0041 |
| @@ -1079,21 +1078,16 @@ | |||
| 1079 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE 0x0053 | 1078 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_IDE 0x0053 |
| 1080 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054 | 1079 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA 0x0054 |
| 1081 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055 | 1080 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_CK804_SATA2 0x0055 |
| 1082 | #define PCI_DEVICE_ID_NVIDIA_NVENET_8 0x0056 | ||
| 1083 | #define PCI_DEVICE_ID_NVIDIA_NVENET_9 0x0057 | ||
| 1084 | #define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059 | 1081 | #define PCI_DEVICE_ID_NVIDIA_CK804_AUDIO 0x0059 |
| 1085 | #define PCI_DEVICE_ID_NVIDIA_CK804_PCIE 0x005d | 1082 | #define PCI_DEVICE_ID_NVIDIA_CK804_PCIE 0x005d |
| 1086 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 | 1083 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_SMBUS 0x0064 |
| 1087 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 | 1084 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE 0x0065 |
| 1088 | #define PCI_DEVICE_ID_NVIDIA_NVENET_2 0x0066 | ||
| 1089 | #define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM 0x0069 | 1085 | #define PCI_DEVICE_ID_NVIDIA_MCP2_MODEM 0x0069 |
| 1090 | #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a | 1086 | #define PCI_DEVICE_ID_NVIDIA_MCP2_AUDIO 0x006a |
| 1091 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084 | 1087 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SMBUS 0x0084 |
| 1092 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085 | 1088 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE 0x0085 |
| 1093 | #define PCI_DEVICE_ID_NVIDIA_NVENET_4 0x0086 | ||
| 1094 | #define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM 0x0089 | 1089 | #define PCI_DEVICE_ID_NVIDIA_MCP2S_MODEM 0x0089 |
| 1095 | #define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a | 1090 | #define PCI_DEVICE_ID_NVIDIA_CK8_AUDIO 0x008a |
| 1096 | #define PCI_DEVICE_ID_NVIDIA_NVENET_5 0x008c | ||
| 1097 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e | 1091 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA 0x008e |
| 1098 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT 0x0090 | 1092 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GT 0x0090 |
| 1099 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX 0x0091 | 1093 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_7800_GTX 0x0091 |
| @@ -1109,15 +1103,12 @@ | |||
| 1109 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1 | 1103 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3 0x00d1 |
| 1110 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 | 1104 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_SMBUS 0x00d4 |
| 1111 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 | 1105 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE 0x00d5 |
| 1112 | #define PCI_DEVICE_ID_NVIDIA_NVENET_3 0x00d6 | ||
| 1113 | #define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM 0x00d9 | 1106 | #define PCI_DEVICE_ID_NVIDIA_MCP3_MODEM 0x00d9 |
| 1114 | #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da | 1107 | #define PCI_DEVICE_ID_NVIDIA_MCP3_AUDIO 0x00da |
| 1115 | #define PCI_DEVICE_ID_NVIDIA_NVENET_7 0x00df | ||
| 1116 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 | 1108 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S 0x00e1 |
| 1117 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3 | 1109 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA 0x00e3 |
| 1118 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4 | 1110 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SMBUS 0x00e4 |
| 1119 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5 | 1111 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE 0x00e5 |
| 1120 | #define PCI_DEVICE_ID_NVIDIA_NVENET_6 0x00e6 | ||
| 1121 | #define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO 0x00ea | 1112 | #define PCI_DEVICE_ID_NVIDIA_CK8S_AUDIO 0x00ea |
| 1122 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee | 1113 | #define PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2 0x00ee |
| 1123 | #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_ALT1 0x00f0 | 1114 | #define PCIE_DEVICE_ID_NVIDIA_GEFORCE_6800_ALT1 0x00f0 |
| @@ -1177,7 +1168,6 @@ | |||
| 1177 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4 | 1168 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_SMBUS 0x01b4 |
| 1178 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc | 1169 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_IDE 0x01bc |
| 1179 | #define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM 0x01c1 | 1170 | #define PCI_DEVICE_ID_NVIDIA_MCP1_MODEM 0x01c1 |
| 1180 | #define PCI_DEVICE_ID_NVIDIA_NVENET_1 0x01c3 | ||
| 1181 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0 | 1171 | #define PCI_DEVICE_ID_NVIDIA_NFORCE2 0x01e0 |
| 1182 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200 | 1172 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3 0x0200 |
| 1183 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1 0x0201 | 1173 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE3_1 0x0201 |
| @@ -1200,8 +1190,6 @@ | |||
| 1200 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E | 1190 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_IDE 0x036E |
| 1201 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E | 1191 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA 0x037E |
| 1202 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F | 1192 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP55_SATA2 0x037F |
| 1203 | #define PCI_DEVICE_ID_NVIDIA_NVENET_12 0x0268 | ||
| 1204 | #define PCI_DEVICE_ID_NVIDIA_NVENET_13 0x0269 | ||
| 1205 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800 0x0280 | 1193 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800 0x0280 |
| 1206 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X 0x0281 | 1194 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800_8X 0x0281 |
| 1207 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE 0x0282 | 1195 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE4_TI_4800SE 0x0282 |
| @@ -1248,46 +1236,21 @@ | |||
| 1248 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348 | 1236 | #define PCI_DEVICE_ID_NVIDIA_GEFORCE_FX_GO5700_2 0x0348 |
| 1249 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C | 1237 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_GO1000 0x034C |
| 1250 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E | 1238 | #define PCI_DEVICE_ID_NVIDIA_QUADRO_FX_1100 0x034E |
| 1251 | #define PCI_DEVICE_ID_NVIDIA_NVENET_14 0x0372 | ||
| 1252 | #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373 | 1239 | #define PCI_DEVICE_ID_NVIDIA_NVENET_15 0x0373 |
| 1253 | #define PCI_DEVICE_ID_NVIDIA_NVENET_16 0x03E5 | ||
| 1254 | #define PCI_DEVICE_ID_NVIDIA_NVENET_17 0x03E6 | ||
| 1255 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7 | 1240 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA 0x03E7 |
| 1256 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SMBUS 0x03EB | 1241 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SMBUS 0x03EB |
| 1257 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC | 1242 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_IDE 0x03EC |
| 1258 | #define PCI_DEVICE_ID_NVIDIA_NVENET_18 0x03EE | ||
| 1259 | #define PCI_DEVICE_ID_NVIDIA_NVENET_19 0x03EF | ||
| 1260 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6 | 1243 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA2 0x03F6 |
| 1261 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7 | 1244 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP61_SATA3 0x03F7 |
| 1262 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SMBUS 0x0446 | 1245 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_SMBUS 0x0446 |
| 1263 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448 | 1246 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP65_IDE 0x0448 |
| 1264 | #define PCI_DEVICE_ID_NVIDIA_NVENET_20 0x0450 | ||
| 1265 | #define PCI_DEVICE_ID_NVIDIA_NVENET_21 0x0451 | ||
| 1266 | #define PCI_DEVICE_ID_NVIDIA_NVENET_22 0x0452 | ||
| 1267 | #define PCI_DEVICE_ID_NVIDIA_NVENET_23 0x0453 | ||
| 1268 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_SMBUS 0x0542 | 1247 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_SMBUS 0x0542 |
| 1269 | #define PCI_DEVICE_ID_NVIDIA_NVENET_24 0x054C | ||
| 1270 | #define PCI_DEVICE_ID_NVIDIA_NVENET_25 0x054D | ||
| 1271 | #define PCI_DEVICE_ID_NVIDIA_NVENET_26 0x054E | ||
| 1272 | #define PCI_DEVICE_ID_NVIDIA_NVENET_27 0x054F | ||
| 1273 | #define PCI_DEVICE_ID_NVIDIA_NVENET_28 0x07DC | ||
| 1274 | #define PCI_DEVICE_ID_NVIDIA_NVENET_29 0x07DD | ||
| 1275 | #define PCI_DEVICE_ID_NVIDIA_NVENET_30 0x07DE | ||
| 1276 | #define PCI_DEVICE_ID_NVIDIA_NVENET_31 0x07DF | ||
| 1277 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560 | 1248 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP67_IDE 0x0560 |
| 1278 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE 0x056C | 1249 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_IDE 0x056C |
| 1279 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752 | 1250 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP78S_SMBUS 0x0752 |
| 1280 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 | 1251 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP77_IDE 0x0759 |
| 1281 | #define PCI_DEVICE_ID_NVIDIA_NVENET_32 0x0760 | ||
| 1282 | #define PCI_DEVICE_ID_NVIDIA_NVENET_33 0x0761 | ||
| 1283 | #define PCI_DEVICE_ID_NVIDIA_NVENET_34 0x0762 | ||
| 1284 | #define PCI_DEVICE_ID_NVIDIA_NVENET_35 0x0763 | ||
| 1285 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 | 1252 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP73_SMBUS 0x07D8 |
| 1286 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 | 1253 | #define PCI_DEVICE_ID_NVIDIA_NFORCE_MCP79_SMBUS 0x0AA2 |
| 1287 | #define PCI_DEVICE_ID_NVIDIA_NVENET_36 0x0AB0 | ||
| 1288 | #define PCI_DEVICE_ID_NVIDIA_NVENET_37 0x0AB1 | ||
| 1289 | #define PCI_DEVICE_ID_NVIDIA_NVENET_38 0x0AB2 | ||
| 1290 | #define PCI_DEVICE_ID_NVIDIA_NVENET_39 0x0AB3 | ||
| 1291 | 1254 | ||
| 1292 | #define PCI_VENDOR_ID_IMS 0x10e0 | 1255 | #define PCI_VENDOR_ID_IMS 0x10e0 |
| 1293 | #define PCI_DEVICE_ID_IMS_TT128 0x9128 | 1256 | #define PCI_DEVICE_ID_IMS_TT128 0x9128 |
| @@ -1926,6 +1889,8 @@ | |||
| 1926 | #define PCI_SUBDEVICE_ID_CCD_SWYX4S 0xB540 | 1889 | #define PCI_SUBDEVICE_ID_CCD_SWYX4S 0xB540 |
| 1927 | #define PCI_SUBDEVICE_ID_CCD_JH4S20 0xB550 | 1890 | #define PCI_SUBDEVICE_ID_CCD_JH4S20 0xB550 |
| 1928 | #define PCI_SUBDEVICE_ID_CCD_IOB8ST_1 0xB552 | 1891 | #define PCI_SUBDEVICE_ID_CCD_IOB8ST_1 0xB552 |
| 1892 | #define PCI_SUBDEVICE_ID_CCD_JHSE1 0xB553 | ||
| 1893 | #define PCI_SUBDEVICE_ID_CCD_JH8S 0xB55B | ||
| 1929 | #define PCI_SUBDEVICE_ID_CCD_BN4S 0xB560 | 1894 | #define PCI_SUBDEVICE_ID_CCD_BN4S 0xB560 |
| 1930 | #define PCI_SUBDEVICE_ID_CCD_BN8S 0xB562 | 1895 | #define PCI_SUBDEVICE_ID_CCD_BN8S 0xB562 |
| 1931 | #define PCI_SUBDEVICE_ID_CCD_BNE1 0xB563 | 1896 | #define PCI_SUBDEVICE_ID_CCD_BNE1 0xB563 |
| @@ -2332,6 +2297,8 @@ | |||
| 2332 | 2297 | ||
| 2333 | #define PCI_VENDOR_ID_QMI 0x1a32 | 2298 | #define PCI_VENDOR_ID_QMI 0x1a32 |
| 2334 | 2299 | ||
| 2300 | #define PCI_VENDOR_ID_AZWAVE 0x1a3b | ||
| 2301 | |||
| 2335 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 | 2302 | #define PCI_VENDOR_ID_TEKRAM 0x1de1 |
| 2336 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 | 2303 | #define PCI_DEVICE_ID_TEKRAM_DC290 0xdc29 |
| 2337 | 2304 | ||
diff --git a/include/linux/phy.h b/include/linux/phy.h index 97e40cb6b588..b1368b8f6572 100644 --- a/include/linux/phy.h +++ b/include/linux/phy.h | |||
| @@ -79,7 +79,7 @@ typedef enum { | |||
| 79 | * Need to be a little smaller than phydev->dev.bus_id to leave room | 79 | * Need to be a little smaller than phydev->dev.bus_id to leave room |
| 80 | * for the ":%02x" | 80 | * for the ":%02x" |
| 81 | */ | 81 | */ |
| 82 | #define MII_BUS_ID_SIZE (BUS_ID_SIZE - 3) | 82 | #define MII_BUS_ID_SIZE (20 - 3) |
| 83 | 83 | ||
| 84 | /* | 84 | /* |
| 85 | * The Bus class for PHYs. Devices which provide access to | 85 | * The Bus class for PHYs. Devices which provide access to |
| @@ -407,7 +407,7 @@ struct phy_driver { | |||
| 407 | /* A Structure for boards to register fixups with the PHY Lib */ | 407 | /* A Structure for boards to register fixups with the PHY Lib */ |
| 408 | struct phy_fixup { | 408 | struct phy_fixup { |
| 409 | struct list_head list; | 409 | struct list_head list; |
| 410 | char bus_id[BUS_ID_SIZE]; | 410 | char bus_id[20]; |
| 411 | u32 phy_uid; | 411 | u32 phy_uid; |
| 412 | u32 phy_uid_mask; | 412 | u32 phy_uid_mask; |
| 413 | int (*run)(struct phy_device *phydev); | 413 | int (*run)(struct phy_device *phydev); |
| @@ -444,10 +444,16 @@ static inline int phy_write(struct phy_device *phydev, u16 regnum, u16 val) | |||
| 444 | 444 | ||
| 445 | int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); | 445 | int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id); |
| 446 | struct phy_device* get_phy_device(struct mii_bus *bus, int addr); | 446 | struct phy_device* get_phy_device(struct mii_bus *bus, int addr); |
| 447 | int phy_device_register(struct phy_device *phy); | ||
| 447 | int phy_clear_interrupt(struct phy_device *phydev); | 448 | int phy_clear_interrupt(struct phy_device *phydev); |
| 448 | int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); | 449 | int phy_config_interrupt(struct phy_device *phydev, u32 interrupts); |
| 450 | int phy_attach_direct(struct net_device *dev, struct phy_device *phydev, | ||
| 451 | u32 flags, phy_interface_t interface); | ||
| 449 | struct phy_device * phy_attach(struct net_device *dev, | 452 | struct phy_device * phy_attach(struct net_device *dev, |
| 450 | const char *bus_id, u32 flags, phy_interface_t interface); | 453 | const char *bus_id, u32 flags, phy_interface_t interface); |
| 454 | int phy_connect_direct(struct net_device *dev, struct phy_device *phydev, | ||
| 455 | void (*handler)(struct net_device *), u32 flags, | ||
| 456 | phy_interface_t interface); | ||
| 451 | struct phy_device * phy_connect(struct net_device *dev, const char *bus_id, | 457 | struct phy_device * phy_connect(struct net_device *dev, const char *bus_id, |
| 452 | void (*handler)(struct net_device *), u32 flags, | 458 | void (*handler)(struct net_device *), u32 flags, |
| 453 | phy_interface_t interface); | 459 | phy_interface_t interface); |
diff --git a/include/linux/platform_device.h b/include/linux/platform_device.h index b67bb5d7b221..8dc5123b6305 100644 --- a/include/linux/platform_device.h +++ b/include/linux/platform_device.h | |||
| @@ -36,8 +36,8 @@ extern struct device platform_bus; | |||
| 36 | 36 | ||
| 37 | extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int); | 37 | extern struct resource *platform_get_resource(struct platform_device *, unsigned int, unsigned int); |
| 38 | extern int platform_get_irq(struct platform_device *, unsigned int); | 38 | extern int platform_get_irq(struct platform_device *, unsigned int); |
| 39 | extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, char *); | 39 | extern struct resource *platform_get_resource_byname(struct platform_device *, unsigned int, const char *); |
| 40 | extern int platform_get_irq_byname(struct platform_device *, char *); | 40 | extern int platform_get_irq_byname(struct platform_device *, const char *); |
| 41 | extern int platform_add_devices(struct platform_device **, int); | 41 | extern int platform_add_devices(struct platform_device **, int); |
| 42 | 42 | ||
| 43 | extern struct platform_device *platform_device_register_simple(const char *, int id, | 43 | extern struct platform_device *platform_device_register_simple(const char *, int id, |
diff --git a/include/linux/poll.h b/include/linux/poll.h index 8c24ef8d9976..fa287f25138d 100644 --- a/include/linux/poll.h +++ b/include/linux/poll.h | |||
| @@ -32,6 +32,7 @@ typedef void (*poll_queue_proc)(struct file *, wait_queue_head_t *, struct poll_ | |||
| 32 | 32 | ||
| 33 | typedef struct poll_table_struct { | 33 | typedef struct poll_table_struct { |
| 34 | poll_queue_proc qproc; | 34 | poll_queue_proc qproc; |
| 35 | unsigned long key; | ||
| 35 | } poll_table; | 36 | } poll_table; |
| 36 | 37 | ||
| 37 | static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p) | 38 | static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_address, poll_table *p) |
| @@ -43,10 +44,12 @@ static inline void poll_wait(struct file * filp, wait_queue_head_t * wait_addres | |||
| 43 | static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc) | 44 | static inline void init_poll_funcptr(poll_table *pt, poll_queue_proc qproc) |
| 44 | { | 45 | { |
| 45 | pt->qproc = qproc; | 46 | pt->qproc = qproc; |
| 47 | pt->key = ~0UL; /* all events enabled */ | ||
| 46 | } | 48 | } |
| 47 | 49 | ||
| 48 | struct poll_table_entry { | 50 | struct poll_table_entry { |
| 49 | struct file *filp; | 51 | struct file *filp; |
| 52 | unsigned long key; | ||
| 50 | wait_queue_t wait; | 53 | wait_queue_t wait; |
| 51 | wait_queue_head_t *wait_address; | 54 | wait_queue_head_t *wait_address; |
| 52 | }; | 55 | }; |
diff --git a/include/linux/radix-tree.h b/include/linux/radix-tree.h index 355f6e80db0d..c5da74918096 100644 --- a/include/linux/radix-tree.h +++ b/include/linux/radix-tree.h | |||
| @@ -167,6 +167,8 @@ radix_tree_gang_lookup_slot(struct radix_tree_root *root, void ***results, | |||
| 167 | unsigned long first_index, unsigned int max_items); | 167 | unsigned long first_index, unsigned int max_items); |
| 168 | unsigned long radix_tree_next_hole(struct radix_tree_root *root, | 168 | unsigned long radix_tree_next_hole(struct radix_tree_root *root, |
| 169 | unsigned long index, unsigned long max_scan); | 169 | unsigned long index, unsigned long max_scan); |
| 170 | unsigned long radix_tree_prev_hole(struct radix_tree_root *root, | ||
| 171 | unsigned long index, unsigned long max_scan); | ||
| 170 | int radix_tree_preload(gfp_t gfp_mask); | 172 | int radix_tree_preload(gfp_t gfp_mask); |
| 171 | void radix_tree_init(void); | 173 | void radix_tree_init(void); |
| 172 | void *radix_tree_tag_set(struct radix_tree_root *root, | 174 | void *radix_tree_tag_set(struct radix_tree_root *root, |
diff --git a/include/linux/regulator/lp3971.h b/include/linux/regulator/lp3971.h new file mode 100644 index 000000000000..61401649fe7d --- /dev/null +++ b/include/linux/regulator/lp3971.h | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | /* | ||
| 2 | * National Semiconductors LP3971 PMIC chip client interface | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Samsung Electronics | ||
| 5 | * Author: Marek Szyprowski <m.szyprowski@samsung.com> | ||
| 6 | * | ||
| 7 | * Based on wm8400.h | ||
| 8 | * | ||
| 9 | * This program is free software; you can redistribute it and/or modify | ||
| 10 | * it under the terms of the GNU General Public License as published by | ||
| 11 | * the Free Software Foundation; either version 2 of the License, or | ||
| 12 | * (at your option) any later version. | ||
| 13 | * | ||
| 14 | * This program is distributed in the hope that it will be useful, | ||
| 15 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 16 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 17 | * GNU General Public License for more details. | ||
| 18 | * | ||
| 19 | * You should have received a copy of the GNU General Public License | ||
| 20 | * along with this program; if not, write to the Free Software | ||
| 21 | * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. | ||
| 22 | */ | ||
| 23 | |||
| 24 | #ifndef __LINUX_REGULATOR_LP3971_H | ||
| 25 | #define __LINUX_REGULATOR_LP3971_H | ||
| 26 | |||
| 27 | #include <linux/regulator/machine.h> | ||
| 28 | |||
| 29 | #define LP3971_LDO1 0 | ||
| 30 | #define LP3971_LDO2 1 | ||
| 31 | #define LP3971_LDO3 2 | ||
| 32 | #define LP3971_LDO4 3 | ||
| 33 | #define LP3971_LDO5 4 | ||
| 34 | |||
| 35 | #define LP3971_DCDC1 5 | ||
| 36 | #define LP3971_DCDC2 6 | ||
| 37 | #define LP3971_DCDC3 7 | ||
| 38 | |||
| 39 | #define LP3971_NUM_REGULATORS 8 | ||
| 40 | |||
| 41 | struct lp3971_regulator_subdev { | ||
| 42 | int id; | ||
| 43 | struct regulator_init_data *initdata; | ||
| 44 | }; | ||
| 45 | |||
| 46 | struct lp3971_platform_data { | ||
| 47 | int num_regulators; | ||
| 48 | struct lp3971_regulator_subdev *regulators; | ||
| 49 | }; | ||
| 50 | |||
| 51 | #endif | ||
diff --git a/include/linux/regulator/max1586.h b/include/linux/regulator/max1586.h new file mode 100644 index 000000000000..44563192bf16 --- /dev/null +++ b/include/linux/regulator/max1586.h | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | /* | ||
| 2 | * max1586.h -- Voltage regulation for the Maxim 1586 | ||
| 3 | * | ||
| 4 | * Copyright (C) 2008 Robert Jarzmik | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License | ||
| 17 | * along with this program; if not, write to the Free Software | ||
| 18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef REGULATOR_MAX1586 | ||
| 22 | #define REGULATOR_MAX1586 | ||
| 23 | |||
| 24 | #include <linux/regulator/machine.h> | ||
| 25 | |||
| 26 | #define MAX1586_V3 0 | ||
| 27 | #define MAX1586_V6 1 | ||
| 28 | |||
| 29 | /* precalculated values for v3_gain */ | ||
| 30 | #define MAX1586_GAIN_NO_R24 1000000 /* 700000 .. 1475000 mV */ | ||
| 31 | #define MAX1586_GAIN_R24_3k32 1051098 /* 735768 .. 1550369 mV */ | ||
| 32 | #define MAX1586_GAIN_R24_5k11 1078648 /* 755053 .. 1591005 mV */ | ||
| 33 | #define MAX1586_GAIN_R24_7k5 1115432 /* 780802 .. 1645262 mV */ | ||
| 34 | |||
| 35 | /** | ||
| 36 | * max1586_subdev_data - regulator data | ||
| 37 | * @id: regulator Id (either MAX1586_V3 or MAX1586_V6) | ||
| 38 | * @name: regulator cute name (example for V3: "vcc_core") | ||
| 39 | * @platform_data: regulator init data (contraints, supplies, ...) | ||
| 40 | */ | ||
| 41 | struct max1586_subdev_data { | ||
| 42 | int id; | ||
| 43 | char *name; | ||
| 44 | struct regulator_init_data *platform_data; | ||
| 45 | }; | ||
| 46 | |||
| 47 | /** | ||
| 48 | * max1586_platform_data - platform data for max1586 | ||
| 49 | * @num_subdevs: number of regultors used (may be 1 or 2) | ||
| 50 | * @subdevs: regulator used | ||
| 51 | * At most, there will be a regulator for V3 and one for V6 voltages. | ||
| 52 | * @v3_gain: gain on the V3 voltage output multiplied by 1e6. | ||
| 53 | * This can be calculated as ((1 + R24/R25 + R24/185.5kOhm) * 1e6) | ||
| 54 | * for an external resistor configuration as described in the | ||
| 55 | * data sheet (R25=100kOhm). | ||
| 56 | */ | ||
| 57 | struct max1586_platform_data { | ||
| 58 | int num_subdevs; | ||
| 59 | struct max1586_subdev_data *subdevs; | ||
| 60 | int v3_gain; | ||
| 61 | }; | ||
| 62 | |||
| 63 | #endif | ||
diff --git a/include/linux/regulator/userspace-consumer.h b/include/linux/regulator/userspace-consumer.h new file mode 100644 index 000000000000..b4554ce9d4bb --- /dev/null +++ b/include/linux/regulator/userspace-consumer.h | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | #ifndef __REGULATOR_PLATFORM_CONSUMER_H_ | ||
| 2 | #define __REGULATOR_PLATFORM_CONSUMER_H_ | ||
| 3 | |||
| 4 | struct regulator_consumer_supply; | ||
| 5 | |||
| 6 | /** | ||
| 7 | * struct regulator_userspace_consumer_data - line consumer | ||
| 8 | * initialisation data. | ||
| 9 | * | ||
| 10 | * @name: Name for the consumer line | ||
| 11 | * @num_supplies: Number of supplies feeding the line | ||
| 12 | * @supplies: Supplies configuration. | ||
| 13 | * @init_on: Set if the regulators supplying the line should be | ||
| 14 | * enabled during initialisation | ||
| 15 | */ | ||
| 16 | struct regulator_userspace_consumer_data { | ||
| 17 | const char *name; | ||
| 18 | |||
| 19 | int num_supplies; | ||
| 20 | struct regulator_bulk_data *supplies; | ||
| 21 | |||
| 22 | bool init_on; | ||
| 23 | }; | ||
| 24 | |||
| 25 | #endif /* __REGULATOR_PLATFORM_CONSUMER_H_ */ | ||
diff --git a/include/linux/rfkill.h b/include/linux/rfkill.h index 164332cbb77c..16e39c7a67fc 100644 --- a/include/linux/rfkill.h +++ b/include/linux/rfkill.h | |||
| @@ -4,6 +4,7 @@ | |||
| 4 | /* | 4 | /* |
| 5 | * Copyright (C) 2006 - 2007 Ivo van Doorn | 5 | * Copyright (C) 2006 - 2007 Ivo van Doorn |
| 6 | * Copyright (C) 2007 Dmitry Torokhov | 6 | * Copyright (C) 2007 Dmitry Torokhov |
| 7 | * Copyright 2009 Johannes Berg <johannes@sipsolutions.net> | ||
| 7 | * | 8 | * |
| 8 | * This program is free software; you can redistribute it and/or modify | 9 | * This program is free software; you can redistribute it and/or modify |
| 9 | * it under the terms of the GNU General Public License as published by | 10 | * it under the terms of the GNU General Public License as published by |
| @@ -22,131 +23,331 @@ | |||
| 22 | */ | 23 | */ |
| 23 | 24 | ||
| 24 | #include <linux/types.h> | 25 | #include <linux/types.h> |
| 25 | #include <linux/kernel.h> | 26 | |
| 26 | #include <linux/list.h> | 27 | /* define userspace visible states */ |
| 27 | #include <linux/mutex.h> | 28 | #define RFKILL_STATE_SOFT_BLOCKED 0 |
| 28 | #include <linux/device.h> | 29 | #define RFKILL_STATE_UNBLOCKED 1 |
| 29 | #include <linux/leds.h> | 30 | #define RFKILL_STATE_HARD_BLOCKED 2 |
| 30 | 31 | ||
| 31 | /** | 32 | /** |
| 32 | * enum rfkill_type - type of rfkill switch. | 33 | * enum rfkill_type - type of rfkill switch. |
| 33 | * RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. | 34 | * |
| 34 | * RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. | 35 | * @RFKILL_TYPE_ALL: toggles all switches (userspace only) |
| 35 | * RFKILL_TYPE_UWB: switch is on a ultra wideband device. | 36 | * @RFKILL_TYPE_WLAN: switch is on a 802.11 wireless network device. |
| 36 | * RFKILL_TYPE_WIMAX: switch is on a WiMAX device. | 37 | * @RFKILL_TYPE_BLUETOOTH: switch is on a bluetooth device. |
| 37 | * RFKILL_TYPE_WWAN: switch is on a wireless WAN device. | 38 | * @RFKILL_TYPE_UWB: switch is on a ultra wideband device. |
| 39 | * @RFKILL_TYPE_WIMAX: switch is on a WiMAX device. | ||
| 40 | * @RFKILL_TYPE_WWAN: switch is on a wireless WAN device. | ||
| 41 | * @NUM_RFKILL_TYPES: number of defined rfkill types | ||
| 38 | */ | 42 | */ |
| 39 | enum rfkill_type { | 43 | enum rfkill_type { |
| 40 | RFKILL_TYPE_WLAN , | 44 | RFKILL_TYPE_ALL = 0, |
| 45 | RFKILL_TYPE_WLAN, | ||
| 41 | RFKILL_TYPE_BLUETOOTH, | 46 | RFKILL_TYPE_BLUETOOTH, |
| 42 | RFKILL_TYPE_UWB, | 47 | RFKILL_TYPE_UWB, |
| 43 | RFKILL_TYPE_WIMAX, | 48 | RFKILL_TYPE_WIMAX, |
| 44 | RFKILL_TYPE_WWAN, | 49 | RFKILL_TYPE_WWAN, |
| 45 | RFKILL_TYPE_MAX, | 50 | NUM_RFKILL_TYPES, |
| 46 | }; | 51 | }; |
| 47 | 52 | ||
| 48 | enum rfkill_state { | 53 | /** |
| 49 | RFKILL_STATE_SOFT_BLOCKED = 0, /* Radio output blocked */ | 54 | * enum rfkill_operation - operation types |
| 50 | RFKILL_STATE_UNBLOCKED = 1, /* Radio output allowed */ | 55 | * @RFKILL_OP_ADD: a device was added |
| 51 | RFKILL_STATE_HARD_BLOCKED = 2, /* Output blocked, non-overrideable */ | 56 | * @RFKILL_OP_DEL: a device was removed |
| 52 | RFKILL_STATE_MAX, /* marker for last valid state */ | 57 | * @RFKILL_OP_CHANGE: a device's state changed -- userspace changes one device |
| 58 | * @RFKILL_OP_CHANGE_ALL: userspace changes all devices (of a type, or all) | ||
| 59 | */ | ||
| 60 | enum rfkill_operation { | ||
| 61 | RFKILL_OP_ADD = 0, | ||
| 62 | RFKILL_OP_DEL, | ||
| 63 | RFKILL_OP_CHANGE, | ||
| 64 | RFKILL_OP_CHANGE_ALL, | ||
| 53 | }; | 65 | }; |
| 54 | 66 | ||
| 55 | /* | 67 | /** |
| 56 | * These are DEPRECATED, drivers using them should be verified to | 68 | * struct rfkill_event - events for userspace on /dev/rfkill |
| 57 | * comply with the rfkill usage guidelines in Documentation/rfkill.txt | 69 | * @idx: index of dev rfkill |
| 58 | * and then converted to use the new names for rfkill_state | 70 | * @type: type of the rfkill struct |
| 59 | */ | 71 | * @op: operation code |
| 60 | #define RFKILL_STATE_OFF RFKILL_STATE_SOFT_BLOCKED | 72 | * @hard: hard state (0/1) |
| 61 | #define RFKILL_STATE_ON RFKILL_STATE_UNBLOCKED | 73 | * @soft: soft state (0/1) |
| 62 | 74 | * | |
| 63 | /** | 75 | * Structure used for userspace communication on /dev/rfkill, |
| 64 | * struct rfkill - rfkill control structure. | 76 | * used for events from the kernel and control to the kernel. |
| 65 | * @name: Name of the switch. | 77 | */ |
| 66 | * @type: Radio type which the button controls, the value stored | 78 | struct rfkill_event { |
| 67 | * here should be a value from enum rfkill_type. | 79 | __u32 idx; |
| 68 | * @state: State of the switch, "UNBLOCKED" means radio can operate. | 80 | __u8 type; |
| 69 | * @user_claim_unsupported: Whether the hardware supports exclusive | 81 | __u8 op; |
| 70 | * RF-kill control by userspace. Set this before registering. | 82 | __u8 soft, hard; |
| 71 | * @user_claim: Set when the switch is controlled exlusively by userspace. | 83 | } __packed; |
| 72 | * @mutex: Guards switch state transitions. It serializes callbacks | ||
| 73 | * and also protects the state. | ||
| 74 | * @data: Pointer to the RF button drivers private data which will be | ||
| 75 | * passed along when toggling radio state. | ||
| 76 | * @toggle_radio(): Mandatory handler to control state of the radio. | ||
| 77 | * only RFKILL_STATE_SOFT_BLOCKED and RFKILL_STATE_UNBLOCKED are | ||
| 78 | * valid parameters. | ||
| 79 | * @get_state(): handler to read current radio state from hardware, | ||
| 80 | * may be called from atomic context, should return 0 on success. | ||
| 81 | * Either this handler OR judicious use of rfkill_force_state() is | ||
| 82 | * MANDATORY for any driver capable of RFKILL_STATE_HARD_BLOCKED. | ||
| 83 | * @led_trigger: A LED trigger for this button's LED. | ||
| 84 | * @dev: Device structure integrating the switch into device tree. | ||
| 85 | * @node: Used to place switch into list of all switches known to the | ||
| 86 | * the system. | ||
| 87 | * | ||
| 88 | * This structure represents a RF switch located on a network device. | ||
| 89 | */ | ||
| 90 | struct rfkill { | ||
| 91 | const char *name; | ||
| 92 | enum rfkill_type type; | ||
| 93 | |||
| 94 | bool user_claim_unsupported; | ||
| 95 | bool user_claim; | ||
| 96 | |||
| 97 | /* the mutex serializes callbacks and also protects | ||
| 98 | * the state */ | ||
| 99 | struct mutex mutex; | ||
| 100 | enum rfkill_state state; | ||
| 101 | void *data; | ||
| 102 | int (*toggle_radio)(void *data, enum rfkill_state state); | ||
| 103 | int (*get_state)(void *data, enum rfkill_state *state); | ||
| 104 | 84 | ||
| 105 | #ifdef CONFIG_RFKILL_LEDS | 85 | /* ioctl for turning off rfkill-input (if present) */ |
| 106 | struct led_trigger led_trigger; | 86 | #define RFKILL_IOC_MAGIC 'R' |
| 107 | #endif | 87 | #define RFKILL_IOC_NOINPUT 1 |
| 88 | #define RFKILL_IOCTL_NOINPUT _IO(RFKILL_IOC_MAGIC, RFKILL_IOC_NOINPUT) | ||
| 89 | |||
| 90 | /* and that's all userspace gets */ | ||
| 91 | #ifdef __KERNEL__ | ||
| 92 | /* don't allow anyone to use these in the kernel */ | ||
| 93 | enum rfkill_user_states { | ||
| 94 | RFKILL_USER_STATE_SOFT_BLOCKED = RFKILL_STATE_SOFT_BLOCKED, | ||
| 95 | RFKILL_USER_STATE_UNBLOCKED = RFKILL_STATE_UNBLOCKED, | ||
| 96 | RFKILL_USER_STATE_HARD_BLOCKED = RFKILL_STATE_HARD_BLOCKED, | ||
| 97 | }; | ||
| 98 | #undef RFKILL_STATE_SOFT_BLOCKED | ||
| 99 | #undef RFKILL_STATE_UNBLOCKED | ||
| 100 | #undef RFKILL_STATE_HARD_BLOCKED | ||
| 101 | |||
| 102 | #include <linux/types.h> | ||
| 103 | #include <linux/kernel.h> | ||
| 104 | #include <linux/list.h> | ||
| 105 | #include <linux/mutex.h> | ||
| 106 | #include <linux/device.h> | ||
| 107 | #include <linux/leds.h> | ||
| 108 | #include <linux/err.h> | ||
| 109 | |||
| 110 | /* this is opaque */ | ||
| 111 | struct rfkill; | ||
| 108 | 112 | ||
| 109 | struct device dev; | 113 | /** |
| 110 | struct list_head node; | 114 | * struct rfkill_ops - rfkill driver methods |
| 111 | enum rfkill_state state_for_resume; | 115 | * |
| 116 | * @poll: poll the rfkill block state(s) -- only assign this method | ||
| 117 | * when you need polling. When called, simply call one of the | ||
| 118 | * rfkill_set{,_hw,_sw}_state family of functions. If the hw | ||
| 119 | * is getting unblocked you need to take into account the return | ||
| 120 | * value of those functions to make sure the software block is | ||
| 121 | * properly used. | ||
| 122 | * @query: query the rfkill block state(s) and call exactly one of the | ||
| 123 | * rfkill_set{,_hw,_sw}_state family of functions. Assign this | ||
| 124 | * method if input events can cause hardware state changes to make | ||
| 125 | * the rfkill core query your driver before setting a requested | ||
| 126 | * block. | ||
| 127 | * @set_block: turn the transmitter on (blocked == false) or off | ||
| 128 | * (blocked == true) -- ignore and return 0 when hard blocked. | ||
| 129 | * This callback must be assigned. | ||
| 130 | */ | ||
| 131 | struct rfkill_ops { | ||
| 132 | void (*poll)(struct rfkill *rfkill, void *data); | ||
| 133 | void (*query)(struct rfkill *rfkill, void *data); | ||
| 134 | int (*set_block)(void *data, bool blocked); | ||
| 112 | }; | 135 | }; |
| 113 | #define to_rfkill(d) container_of(d, struct rfkill, dev) | ||
| 114 | 136 | ||
| 115 | struct rfkill * __must_check rfkill_allocate(struct device *parent, | 137 | #if defined(CONFIG_RFKILL) || defined(CONFIG_RFKILL_MODULE) |
| 116 | enum rfkill_type type); | 138 | /** |
| 117 | void rfkill_free(struct rfkill *rfkill); | 139 | * rfkill_alloc - allocate rfkill structure |
| 140 | * @name: name of the struct -- the string is not copied internally | ||
| 141 | * @parent: device that has rf switch on it | ||
| 142 | * @type: type of the switch (RFKILL_TYPE_*) | ||
| 143 | * @ops: rfkill methods | ||
| 144 | * @ops_data: data passed to each method | ||
| 145 | * | ||
| 146 | * This function should be called by the transmitter driver to allocate an | ||
| 147 | * rfkill structure. Returns %NULL on failure. | ||
| 148 | */ | ||
| 149 | struct rfkill * __must_check rfkill_alloc(const char *name, | ||
| 150 | struct device *parent, | ||
| 151 | const enum rfkill_type type, | ||
| 152 | const struct rfkill_ops *ops, | ||
| 153 | void *ops_data); | ||
| 154 | |||
| 155 | /** | ||
| 156 | * rfkill_register - Register a rfkill structure. | ||
| 157 | * @rfkill: rfkill structure to be registered | ||
| 158 | * | ||
| 159 | * This function should be called by the transmitter driver to register | ||
| 160 | * the rfkill structure. Before calling this function the driver needs | ||
| 161 | * to be ready to service method calls from rfkill. | ||
| 162 | * | ||
| 163 | * If the software blocked state is not set before registration, | ||
| 164 | * set_block will be called to initialize it to a default value. | ||
| 165 | * | ||
| 166 | * If the hardware blocked state is not set before registration, | ||
| 167 | * it is assumed to be unblocked. | ||
| 168 | */ | ||
| 118 | int __must_check rfkill_register(struct rfkill *rfkill); | 169 | int __must_check rfkill_register(struct rfkill *rfkill); |
| 170 | |||
| 171 | /** | ||
| 172 | * rfkill_pause_polling(struct rfkill *rfkill) | ||
| 173 | * | ||
| 174 | * Pause polling -- say transmitter is off for other reasons. | ||
| 175 | * NOTE: not necessary for suspend/resume -- in that case the | ||
| 176 | * core stops polling anyway | ||
| 177 | */ | ||
| 178 | void rfkill_pause_polling(struct rfkill *rfkill); | ||
| 179 | |||
| 180 | /** | ||
| 181 | * rfkill_resume_polling(struct rfkill *rfkill) | ||
| 182 | * | ||
| 183 | * Pause polling -- say transmitter is off for other reasons. | ||
| 184 | * NOTE: not necessary for suspend/resume -- in that case the | ||
| 185 | * core stops polling anyway | ||
| 186 | */ | ||
| 187 | void rfkill_resume_polling(struct rfkill *rfkill); | ||
| 188 | |||
| 189 | |||
| 190 | /** | ||
| 191 | * rfkill_unregister - Unregister a rfkill structure. | ||
| 192 | * @rfkill: rfkill structure to be unregistered | ||
| 193 | * | ||
| 194 | * This function should be called by the network driver during device | ||
| 195 | * teardown to destroy rfkill structure. Until it returns, the driver | ||
| 196 | * needs to be able to service method calls. | ||
| 197 | */ | ||
| 119 | void rfkill_unregister(struct rfkill *rfkill); | 198 | void rfkill_unregister(struct rfkill *rfkill); |
| 120 | 199 | ||
| 121 | int rfkill_force_state(struct rfkill *rfkill, enum rfkill_state state); | 200 | /** |
| 122 | int rfkill_set_default(enum rfkill_type type, enum rfkill_state state); | 201 | * rfkill_destroy - free rfkill structure |
| 202 | * @rfkill: rfkill structure to be destroyed | ||
| 203 | * | ||
| 204 | * Destroys the rfkill structure. | ||
| 205 | */ | ||
| 206 | void rfkill_destroy(struct rfkill *rfkill); | ||
| 207 | |||
| 208 | /** | ||
| 209 | * rfkill_set_hw_state - Set the internal rfkill hardware block state | ||
| 210 | * @rfkill: pointer to the rfkill class to modify. | ||
| 211 | * @state: the current hardware block state to set | ||
| 212 | * | ||
| 213 | * rfkill drivers that get events when the hard-blocked state changes | ||
| 214 | * use this function to notify the rfkill core (and through that also | ||
| 215 | * userspace) of the current state. They should also use this after | ||
| 216 | * resume if the state could have changed. | ||
| 217 | * | ||
| 218 | * You need not (but may) call this function if poll_state is assigned. | ||
| 219 | * | ||
| 220 | * This function can be called in any context, even from within rfkill | ||
| 221 | * callbacks. | ||
| 222 | * | ||
| 223 | * The function returns the combined block state (true if transmitter | ||
| 224 | * should be blocked) so that drivers need not keep track of the soft | ||
| 225 | * block state -- which they might not be able to. | ||
| 226 | */ | ||
| 227 | bool __must_check rfkill_set_hw_state(struct rfkill *rfkill, bool blocked); | ||
| 228 | |||
| 229 | /** | ||
| 230 | * rfkill_set_sw_state - Set the internal rfkill software block state | ||
| 231 | * @rfkill: pointer to the rfkill class to modify. | ||
| 232 | * @state: the current software block state to set | ||
| 233 | * | ||
| 234 | * rfkill drivers that get events when the soft-blocked state changes | ||
| 235 | * (yes, some platforms directly act on input but allow changing again) | ||
| 236 | * use this function to notify the rfkill core (and through that also | ||
| 237 | * userspace) of the current state. It is not necessary to notify on | ||
| 238 | * resume; since hibernation can always change the soft-blocked state, | ||
| 239 | * the rfkill core will unconditionally restore the previous state. | ||
| 240 | * | ||
| 241 | * This function can be called in any context, even from within rfkill | ||
| 242 | * callbacks. | ||
| 243 | * | ||
| 244 | * The function returns the combined block state (true if transmitter | ||
| 245 | * should be blocked). | ||
| 246 | */ | ||
| 247 | bool rfkill_set_sw_state(struct rfkill *rfkill, bool blocked); | ||
| 248 | |||
| 249 | /** | ||
| 250 | * rfkill_set_states - Set the internal rfkill block states | ||
| 251 | * @rfkill: pointer to the rfkill class to modify. | ||
| 252 | * @sw: the current software block state to set | ||
| 253 | * @hw: the current hardware block state to set | ||
| 254 | * | ||
| 255 | * This function can be called in any context, even from within rfkill | ||
| 256 | * callbacks. | ||
| 257 | */ | ||
| 258 | void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw); | ||
| 123 | 259 | ||
| 124 | /** | 260 | /** |
| 125 | * rfkill_state_complement - return complementar state | 261 | * rfkill_blocked - query rfkill block |
| 126 | * @state: state to return the complement of | ||
| 127 | * | 262 | * |
| 128 | * Returns RFKILL_STATE_SOFT_BLOCKED if @state is RFKILL_STATE_UNBLOCKED, | 263 | * @rfkill: rfkill struct to query |
| 129 | * returns RFKILL_STATE_UNBLOCKED otherwise. | ||
| 130 | */ | 264 | */ |
| 131 | static inline enum rfkill_state rfkill_state_complement(enum rfkill_state state) | 265 | bool rfkill_blocked(struct rfkill *rfkill); |
| 266 | #else /* !RFKILL */ | ||
| 267 | static inline struct rfkill * __must_check | ||
| 268 | rfkill_alloc(const char *name, | ||
| 269 | struct device *parent, | ||
| 270 | const enum rfkill_type type, | ||
| 271 | const struct rfkill_ops *ops, | ||
| 272 | void *ops_data) | ||
| 273 | { | ||
| 274 | return ERR_PTR(-ENODEV); | ||
| 275 | } | ||
| 276 | |||
| 277 | static inline int __must_check rfkill_register(struct rfkill *rfkill) | ||
| 278 | { | ||
| 279 | if (rfkill == ERR_PTR(-ENODEV)) | ||
| 280 | return 0; | ||
| 281 | return -EINVAL; | ||
| 282 | } | ||
| 283 | |||
| 284 | static inline void rfkill_pause_polling(struct rfkill *rfkill) | ||
| 285 | { | ||
| 286 | } | ||
| 287 | |||
| 288 | static inline void rfkill_resume_polling(struct rfkill *rfkill) | ||
| 289 | { | ||
| 290 | } | ||
| 291 | |||
| 292 | static inline void rfkill_unregister(struct rfkill *rfkill) | ||
| 293 | { | ||
| 294 | } | ||
| 295 | |||
| 296 | static inline void rfkill_destroy(struct rfkill *rfkill) | ||
| 297 | { | ||
| 298 | } | ||
| 299 | |||
| 300 | static inline bool rfkill_set_hw_state(struct rfkill *rfkill, bool blocked) | ||
| 301 | { | ||
| 302 | return blocked; | ||
| 303 | } | ||
| 304 | |||
| 305 | static inline bool rfkill_set_sw_state(struct rfkill *rfkill, bool blocked) | ||
| 132 | { | 306 | { |
| 133 | return (state == RFKILL_STATE_UNBLOCKED) ? | 307 | return blocked; |
| 134 | RFKILL_STATE_SOFT_BLOCKED : RFKILL_STATE_UNBLOCKED; | ||
| 135 | } | 308 | } |
| 136 | 309 | ||
| 310 | static inline void rfkill_set_states(struct rfkill *rfkill, bool sw, bool hw) | ||
| 311 | { | ||
| 312 | } | ||
| 313 | |||
| 314 | static inline bool rfkill_blocked(struct rfkill *rfkill) | ||
| 315 | { | ||
| 316 | return false; | ||
| 317 | } | ||
| 318 | #endif /* RFKILL || RFKILL_MODULE */ | ||
| 319 | |||
| 320 | |||
| 321 | #ifdef CONFIG_RFKILL_LEDS | ||
| 137 | /** | 322 | /** |
| 138 | * rfkill_get_led_name - Get the LED trigger name for the button's LED. | 323 | * rfkill_get_led_trigger_name - Get the LED trigger name for the button's LED. |
| 139 | * This function might return a NULL pointer if registering of the | 324 | * This function might return a NULL pointer if registering of the |
| 140 | * LED trigger failed. | 325 | * LED trigger failed. Use this as "default_trigger" for the LED. |
| 141 | * Use this as "default_trigger" for the LED. | ||
| 142 | */ | 326 | */ |
| 143 | static inline char *rfkill_get_led_name(struct rfkill *rfkill) | 327 | const char *rfkill_get_led_trigger_name(struct rfkill *rfkill); |
| 144 | { | 328 | |
| 145 | #ifdef CONFIG_RFKILL_LEDS | 329 | /** |
| 146 | return (char *)(rfkill->led_trigger.name); | 330 | * rfkill_set_led_trigger_name -- set the LED trigger name |
| 331 | * @rfkill: rfkill struct | ||
| 332 | * @name: LED trigger name | ||
| 333 | * | ||
| 334 | * This function sets the LED trigger name of the radio LED | ||
| 335 | * trigger that rfkill creates. It is optional, but if called | ||
| 336 | * must be called before rfkill_register() to be effective. | ||
| 337 | */ | ||
| 338 | void rfkill_set_led_trigger_name(struct rfkill *rfkill, const char *name); | ||
| 147 | #else | 339 | #else |
| 340 | static inline const char *rfkill_get_led_trigger_name(struct rfkill *rfkill) | ||
| 341 | { | ||
| 148 | return NULL; | 342 | return NULL; |
| 149 | #endif | ||
| 150 | } | 343 | } |
| 151 | 344 | ||
| 345 | static inline void | ||
| 346 | rfkill_set_led_trigger_name(struct rfkill *rfkill, const char *name) | ||
| 347 | { | ||
| 348 | } | ||
| 349 | #endif | ||
| 350 | |||
| 351 | #endif /* __KERNEL__ */ | ||
| 352 | |||
| 152 | #endif /* RFKILL_H */ | 353 | #endif /* RFKILL_H */ |
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h index 8670f1575fe1..29f8599e6bea 100644 --- a/include/linux/ring_buffer.h +++ b/include/linux/ring_buffer.h | |||
| @@ -1,6 +1,7 @@ | |||
| 1 | #ifndef _LINUX_RING_BUFFER_H | 1 | #ifndef _LINUX_RING_BUFFER_H |
| 2 | #define _LINUX_RING_BUFFER_H | 2 | #define _LINUX_RING_BUFFER_H |
| 3 | 3 | ||
| 4 | #include <linux/kmemcheck.h> | ||
| 4 | #include <linux/mm.h> | 5 | #include <linux/mm.h> |
| 5 | #include <linux/seq_file.h> | 6 | #include <linux/seq_file.h> |
| 6 | 7 | ||
| @@ -11,7 +12,10 @@ struct ring_buffer_iter; | |||
| 11 | * Don't refer to this struct directly, use functions below. | 12 | * Don't refer to this struct directly, use functions below. |
| 12 | */ | 13 | */ |
| 13 | struct ring_buffer_event { | 14 | struct ring_buffer_event { |
| 15 | kmemcheck_bitfield_begin(bitfield); | ||
| 14 | u32 type_len:5, time_delta:27; | 16 | u32 type_len:5, time_delta:27; |
| 17 | kmemcheck_bitfield_end(bitfield); | ||
| 18 | |||
| 15 | u32 array[]; | 19 | u32 array[]; |
| 16 | }; | 20 | }; |
| 17 | 21 | ||
diff --git a/include/linux/rmap.h b/include/linux/rmap.h index b35bc0e19cd9..216d024f830d 100644 --- a/include/linux/rmap.h +++ b/include/linux/rmap.h | |||
| @@ -83,7 +83,8 @@ static inline void page_dup_rmap(struct page *page, struct vm_area_struct *vma, | |||
| 83 | /* | 83 | /* |
| 84 | * Called from mm/vmscan.c to handle paging out | 84 | * Called from mm/vmscan.c to handle paging out |
| 85 | */ | 85 | */ |
| 86 | int page_referenced(struct page *, int is_locked, struct mem_cgroup *cnt); | 86 | int page_referenced(struct page *, int is_locked, |
| 87 | struct mem_cgroup *cnt, unsigned long *vm_flags); | ||
| 87 | int try_to_unmap(struct page *, int ignore_refs); | 88 | int try_to_unmap(struct page *, int ignore_refs); |
| 88 | 89 | ||
| 89 | /* | 90 | /* |
| @@ -105,18 +106,11 @@ unsigned long page_address_in_vma(struct page *, struct vm_area_struct *); | |||
| 105 | */ | 106 | */ |
| 106 | int page_mkclean(struct page *); | 107 | int page_mkclean(struct page *); |
| 107 | 108 | ||
| 108 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 109 | /* | 109 | /* |
| 110 | * called in munlock()/munmap() path to check for other vmas holding | 110 | * called in munlock()/munmap() path to check for other vmas holding |
| 111 | * the page mlocked. | 111 | * the page mlocked. |
| 112 | */ | 112 | */ |
| 113 | int try_to_munlock(struct page *); | 113 | int try_to_munlock(struct page *); |
| 114 | #else | ||
| 115 | static inline int try_to_munlock(struct page *page) | ||
| 116 | { | ||
| 117 | return 0; /* a.k.a. SWAP_SUCCESS */ | ||
| 118 | } | ||
| 119 | #endif | ||
| 120 | 114 | ||
| 121 | #else /* !CONFIG_MMU */ | 115 | #else /* !CONFIG_MMU */ |
| 122 | 116 | ||
| @@ -124,7 +118,7 @@ static inline int try_to_munlock(struct page *page) | |||
| 124 | #define anon_vma_prepare(vma) (0) | 118 | #define anon_vma_prepare(vma) (0) |
| 125 | #define anon_vma_link(vma) do {} while (0) | 119 | #define anon_vma_link(vma) do {} while (0) |
| 126 | 120 | ||
| 127 | #define page_referenced(page,l,cnt) TestClearPageReferenced(page) | 121 | #define page_referenced(page, locked, cnt, flags) TestClearPageReferenced(page) |
| 128 | #define try_to_unmap(page, refs) SWAP_FAIL | 122 | #define try_to_unmap(page, refs) SWAP_FAIL |
| 129 | 123 | ||
| 130 | static inline int page_mkclean(struct page *page) | 124 | static inline int page_mkclean(struct page *page) |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 4896fdfec913..02042e7f2196 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -261,6 +261,7 @@ extern void task_rq_unlock_wait(struct task_struct *p); | |||
| 261 | extern cpumask_var_t nohz_cpu_mask; | 261 | extern cpumask_var_t nohz_cpu_mask; |
| 262 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) | 262 | #if defined(CONFIG_SMP) && defined(CONFIG_NO_HZ) |
| 263 | extern int select_nohz_load_balancer(int cpu); | 263 | extern int select_nohz_load_balancer(int cpu); |
| 264 | extern int get_nohz_load_balancer(void); | ||
| 264 | #else | 265 | #else |
| 265 | static inline int select_nohz_load_balancer(int cpu) | 266 | static inline int select_nohz_load_balancer(int cpu) |
| 266 | { | 267 | { |
| @@ -673,7 +674,7 @@ struct user_struct { | |||
| 673 | struct task_group *tg; | 674 | struct task_group *tg; |
| 674 | #ifdef CONFIG_SYSFS | 675 | #ifdef CONFIG_SYSFS |
| 675 | struct kobject kobj; | 676 | struct kobject kobj; |
| 676 | struct work_struct work; | 677 | struct delayed_work work; |
| 677 | #endif | 678 | #endif |
| 678 | #endif | 679 | #endif |
| 679 | 680 | ||
| @@ -1177,7 +1178,6 @@ struct task_struct { | |||
| 1177 | * a short time | 1178 | * a short time |
| 1178 | */ | 1179 | */ |
| 1179 | unsigned char fpu_counter; | 1180 | unsigned char fpu_counter; |
| 1180 | s8 oomkilladj; /* OOM kill score adjustment (bit shift). */ | ||
| 1181 | #ifdef CONFIG_BLK_DEV_IO_TRACE | 1181 | #ifdef CONFIG_BLK_DEV_IO_TRACE |
| 1182 | unsigned int btrace_seq; | 1182 | unsigned int btrace_seq; |
| 1183 | #endif | 1183 | #endif |
| @@ -1317,7 +1317,8 @@ struct task_struct { | |||
| 1317 | /* Thread group tracking */ | 1317 | /* Thread group tracking */ |
| 1318 | u32 parent_exec_id; | 1318 | u32 parent_exec_id; |
| 1319 | u32 self_exec_id; | 1319 | u32 self_exec_id; |
| 1320 | /* Protection of (de-)allocation: mm, files, fs, tty, keyrings */ | 1320 | /* Protection of (de-)allocation: mm, files, fs, tty, keyrings, mems_allowed, |
| 1321 | * mempolicy */ | ||
| 1321 | spinlock_t alloc_lock; | 1322 | spinlock_t alloc_lock; |
| 1322 | 1323 | ||
| 1323 | #ifdef CONFIG_GENERIC_HARDIRQS | 1324 | #ifdef CONFIG_GENERIC_HARDIRQS |
| @@ -1385,8 +1386,7 @@ struct task_struct { | |||
| 1385 | cputime_t acct_timexpd; /* stime + utime since last update */ | 1386 | cputime_t acct_timexpd; /* stime + utime since last update */ |
| 1386 | #endif | 1387 | #endif |
| 1387 | #ifdef CONFIG_CPUSETS | 1388 | #ifdef CONFIG_CPUSETS |
| 1388 | nodemask_t mems_allowed; | 1389 | nodemask_t mems_allowed; /* Protected by alloc_lock */ |
| 1389 | int cpuset_mems_generation; | ||
| 1390 | int cpuset_mem_spread_rotor; | 1390 | int cpuset_mem_spread_rotor; |
| 1391 | #endif | 1391 | #endif |
| 1392 | #ifdef CONFIG_CGROUPS | 1392 | #ifdef CONFIG_CGROUPS |
| @@ -1409,7 +1409,7 @@ struct task_struct { | |||
| 1409 | struct list_head perf_counter_list; | 1409 | struct list_head perf_counter_list; |
| 1410 | #endif | 1410 | #endif |
| 1411 | #ifdef CONFIG_NUMA | 1411 | #ifdef CONFIG_NUMA |
| 1412 | struct mempolicy *mempolicy; | 1412 | struct mempolicy *mempolicy; /* Protected by alloc_lock */ |
| 1413 | short il_next; | 1413 | short il_next; |
| 1414 | #endif | 1414 | #endif |
| 1415 | atomic_t fs_excl; /* holding fs exclusive resources */ | 1415 | atomic_t fs_excl; /* holding fs exclusive resources */ |
| @@ -1796,11 +1796,23 @@ extern unsigned int sysctl_sched_child_runs_first; | |||
| 1796 | extern unsigned int sysctl_sched_features; | 1796 | extern unsigned int sysctl_sched_features; |
| 1797 | extern unsigned int sysctl_sched_migration_cost; | 1797 | extern unsigned int sysctl_sched_migration_cost; |
| 1798 | extern unsigned int sysctl_sched_nr_migrate; | 1798 | extern unsigned int sysctl_sched_nr_migrate; |
| 1799 | extern unsigned int sysctl_timer_migration; | ||
| 1799 | 1800 | ||
| 1800 | int sched_nr_latency_handler(struct ctl_table *table, int write, | 1801 | int sched_nr_latency_handler(struct ctl_table *table, int write, |
| 1801 | struct file *file, void __user *buffer, size_t *length, | 1802 | struct file *file, void __user *buffer, size_t *length, |
| 1802 | loff_t *ppos); | 1803 | loff_t *ppos); |
| 1803 | #endif | 1804 | #endif |
| 1805 | #ifdef CONFIG_SCHED_DEBUG | ||
| 1806 | static inline unsigned int get_sysctl_timer_migration(void) | ||
| 1807 | { | ||
| 1808 | return sysctl_timer_migration; | ||
| 1809 | } | ||
| 1810 | #else | ||
| 1811 | static inline unsigned int get_sysctl_timer_migration(void) | ||
| 1812 | { | ||
| 1813 | return 1; | ||
| 1814 | } | ||
| 1815 | #endif | ||
| 1804 | extern unsigned int sysctl_sched_rt_period; | 1816 | extern unsigned int sysctl_sched_rt_period; |
| 1805 | extern int sysctl_sched_rt_runtime; | 1817 | extern int sysctl_sched_rt_runtime; |
| 1806 | 1818 | ||
| @@ -2212,6 +2224,12 @@ static inline int test_tsk_need_resched(struct task_struct *tsk) | |||
| 2212 | return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); | 2224 | return unlikely(test_tsk_thread_flag(tsk,TIF_NEED_RESCHED)); |
| 2213 | } | 2225 | } |
| 2214 | 2226 | ||
| 2227 | static inline int restart_syscall(void) | ||
| 2228 | { | ||
| 2229 | set_tsk_thread_flag(current, TIF_SIGPENDING); | ||
| 2230 | return -ERESTARTNOINTR; | ||
| 2231 | } | ||
| 2232 | |||
| 2215 | static inline int signal_pending(struct task_struct *p) | 2233 | static inline int signal_pending(struct task_struct *p) |
| 2216 | { | 2234 | { |
| 2217 | return unlikely(test_tsk_thread_flag(p,TIF_SIGPENDING)); | 2235 | return unlikely(test_tsk_thread_flag(p,TIF_SIGPENDING)); |
diff --git a/include/linux/sctp.h b/include/linux/sctp.h index c2731bfe04d8..b464b9d3d242 100644 --- a/include/linux/sctp.h +++ b/include/linux/sctp.h | |||
| @@ -487,17 +487,17 @@ typedef enum { | |||
| 487 | * | 487 | * |
| 488 | * Value Cause Code | 488 | * Value Cause Code |
| 489 | * --------- ---------------- | 489 | * --------- ---------------- |
| 490 | * 0x0100 Request to Delete Last Remaining IP Address. | 490 | * 0x00A0 Request to Delete Last Remaining IP Address. |
| 491 | * 0x0101 Operation Refused Due to Resource Shortage. | 491 | * 0x00A1 Operation Refused Due to Resource Shortage. |
| 492 | * 0x0102 Request to Delete Source IP Address. | 492 | * 0x00A2 Request to Delete Source IP Address. |
| 493 | * 0x0103 Association Aborted due to illegal ASCONF-ACK | 493 | * 0x00A3 Association Aborted due to illegal ASCONF-ACK |
| 494 | * 0x0104 Request refused - no authorization. | 494 | * 0x00A4 Request refused - no authorization. |
| 495 | */ | 495 | */ |
| 496 | SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x0100), | 496 | SCTP_ERROR_DEL_LAST_IP = cpu_to_be16(0x00A0), |
| 497 | SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x0101), | 497 | SCTP_ERROR_RSRC_LOW = cpu_to_be16(0x00A1), |
| 498 | SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x0102), | 498 | SCTP_ERROR_DEL_SRC_IP = cpu_to_be16(0x00A2), |
| 499 | SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x0103), | 499 | SCTP_ERROR_ASCONF_ACK = cpu_to_be16(0x00A3), |
| 500 | SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x0104), | 500 | SCTP_ERROR_REQ_REFUSED = cpu_to_be16(0x00A4), |
| 501 | 501 | ||
| 502 | /* AUTH Section 4. New Error Cause | 502 | /* AUTH Section 4. New Error Cause |
| 503 | * | 503 | * |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 5fd389162f01..63ef24bc01d0 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | #define _LINUX_SKBUFF_H | 15 | #define _LINUX_SKBUFF_H |
| 16 | 16 | ||
| 17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
| 18 | #include <linux/kmemcheck.h> | ||
| 18 | #include <linux/compiler.h> | 19 | #include <linux/compiler.h> |
| 19 | #include <linux/time.h> | 20 | #include <linux/time.h> |
| 20 | #include <linux/cache.h> | 21 | #include <linux/cache.h> |
| @@ -189,20 +190,23 @@ struct skb_shared_info { | |||
| 189 | atomic_t dataref; | 190 | atomic_t dataref; |
| 190 | unsigned short nr_frags; | 191 | unsigned short nr_frags; |
| 191 | unsigned short gso_size; | 192 | unsigned short gso_size; |
| 193 | #ifdef CONFIG_HAS_DMA | ||
| 194 | dma_addr_t dma_head; | ||
| 195 | #endif | ||
| 192 | /* Warning: this field is not always filled in (UFO)! */ | 196 | /* Warning: this field is not always filled in (UFO)! */ |
| 193 | unsigned short gso_segs; | 197 | unsigned short gso_segs; |
| 194 | unsigned short gso_type; | 198 | unsigned short gso_type; |
| 195 | __be32 ip6_frag_id; | 199 | __be32 ip6_frag_id; |
| 196 | union skb_shared_tx tx_flags; | 200 | union skb_shared_tx tx_flags; |
| 197 | #ifdef CONFIG_HAS_DMA | ||
| 198 | unsigned int num_dma_maps; | ||
| 199 | #endif | ||
| 200 | struct sk_buff *frag_list; | 201 | struct sk_buff *frag_list; |
| 201 | struct skb_shared_hwtstamps hwtstamps; | 202 | struct skb_shared_hwtstamps hwtstamps; |
| 202 | skb_frag_t frags[MAX_SKB_FRAGS]; | 203 | skb_frag_t frags[MAX_SKB_FRAGS]; |
| 203 | #ifdef CONFIG_HAS_DMA | 204 | #ifdef CONFIG_HAS_DMA |
| 204 | dma_addr_t dma_maps[MAX_SKB_FRAGS + 1]; | 205 | dma_addr_t dma_maps[MAX_SKB_FRAGS]; |
| 205 | #endif | 206 | #endif |
| 207 | /* Intermediate layers must ensure that destructor_arg | ||
| 208 | * remains valid until skb destructor */ | ||
| 209 | void * destructor_arg; | ||
| 206 | }; | 210 | }; |
| 207 | 211 | ||
| 208 | /* We divide dataref into two halves. The higher 16 bits hold references | 212 | /* We divide dataref into two halves. The higher 16 bits hold references |
| @@ -301,9 +305,6 @@ typedef unsigned char *sk_buff_data_t; | |||
| 301 | * @tc_verd: traffic control verdict | 305 | * @tc_verd: traffic control verdict |
| 302 | * @ndisc_nodetype: router type (from link layer) | 306 | * @ndisc_nodetype: router type (from link layer) |
| 303 | * @do_not_encrypt: set to prevent encryption of this frame | 307 | * @do_not_encrypt: set to prevent encryption of this frame |
| 304 | * @requeue: set to indicate that the wireless core should attempt | ||
| 305 | * a software retry on this frame if we failed to | ||
| 306 | * receive an ACK for it | ||
| 307 | * @dma_cookie: a cookie to one of several possible DMA operations | 308 | * @dma_cookie: a cookie to one of several possible DMA operations |
| 308 | * done by skb DMA functions | 309 | * done by skb DMA functions |
| 309 | * @secmark: security marking | 310 | * @secmark: security marking |
| @@ -319,10 +320,7 @@ struct sk_buff { | |||
| 319 | ktime_t tstamp; | 320 | ktime_t tstamp; |
| 320 | struct net_device *dev; | 321 | struct net_device *dev; |
| 321 | 322 | ||
| 322 | union { | 323 | unsigned long _skb_dst; |
| 323 | struct dst_entry *dst; | ||
| 324 | struct rtable *rtable; | ||
| 325 | }; | ||
| 326 | #ifdef CONFIG_XFRM | 324 | #ifdef CONFIG_XFRM |
| 327 | struct sec_path *sp; | 325 | struct sec_path *sp; |
| 328 | #endif | 326 | #endif |
| @@ -346,6 +344,7 @@ struct sk_buff { | |||
| 346 | }; | 344 | }; |
| 347 | }; | 345 | }; |
| 348 | __u32 priority; | 346 | __u32 priority; |
| 347 | kmemcheck_bitfield_begin(flags1); | ||
| 349 | __u8 local_df:1, | 348 | __u8 local_df:1, |
| 350 | cloned:1, | 349 | cloned:1, |
| 351 | ip_summed:2, | 350 | ip_summed:2, |
| @@ -356,6 +355,7 @@ struct sk_buff { | |||
| 356 | ipvs_property:1, | 355 | ipvs_property:1, |
| 357 | peeked:1, | 356 | peeked:1, |
| 358 | nf_trace:1; | 357 | nf_trace:1; |
| 358 | kmemcheck_bitfield_end(flags1); | ||
| 359 | __be16 protocol; | 359 | __be16 protocol; |
| 360 | 360 | ||
| 361 | void (*destructor)(struct sk_buff *skb); | 361 | void (*destructor)(struct sk_buff *skb); |
| @@ -375,13 +375,16 @@ struct sk_buff { | |||
| 375 | __u16 tc_verd; /* traffic control verdict */ | 375 | __u16 tc_verd; /* traffic control verdict */ |
| 376 | #endif | 376 | #endif |
| 377 | #endif | 377 | #endif |
| 378 | |||
| 379 | kmemcheck_bitfield_begin(flags2); | ||
| 378 | #ifdef CONFIG_IPV6_NDISC_NODETYPE | 380 | #ifdef CONFIG_IPV6_NDISC_NODETYPE |
| 379 | __u8 ndisc_nodetype:2; | 381 | __u8 ndisc_nodetype:2; |
| 380 | #endif | 382 | #endif |
| 381 | #if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE) | 383 | #if defined(CONFIG_MAC80211) || defined(CONFIG_MAC80211_MODULE) |
| 382 | __u8 do_not_encrypt:1; | 384 | __u8 do_not_encrypt:1; |
| 383 | __u8 requeue:1; | ||
| 384 | #endif | 385 | #endif |
| 386 | kmemcheck_bitfield_end(flags2); | ||
| 387 | |||
| 385 | /* 0/13/14 bit hole */ | 388 | /* 0/13/14 bit hole */ |
| 386 | 389 | ||
| 387 | #ifdef CONFIG_NET_DMA | 390 | #ifdef CONFIG_NET_DMA |
| @@ -423,6 +426,21 @@ extern void skb_dma_unmap(struct device *dev, struct sk_buff *skb, | |||
| 423 | enum dma_data_direction dir); | 426 | enum dma_data_direction dir); |
| 424 | #endif | 427 | #endif |
| 425 | 428 | ||
| 429 | static inline struct dst_entry *skb_dst(const struct sk_buff *skb) | ||
| 430 | { | ||
| 431 | return (struct dst_entry *)skb->_skb_dst; | ||
| 432 | } | ||
| 433 | |||
| 434 | static inline void skb_dst_set(struct sk_buff *skb, struct dst_entry *dst) | ||
| 435 | { | ||
| 436 | skb->_skb_dst = (unsigned long)dst; | ||
| 437 | } | ||
| 438 | |||
| 439 | static inline struct rtable *skb_rtable(const struct sk_buff *skb) | ||
| 440 | { | ||
| 441 | return (struct rtable *)skb_dst(skb); | ||
| 442 | } | ||
| 443 | |||
| 426 | extern void kfree_skb(struct sk_buff *skb); | 444 | extern void kfree_skb(struct sk_buff *skb); |
| 427 | extern void consume_skb(struct sk_buff *skb); | 445 | extern void consume_skb(struct sk_buff *skb); |
| 428 | extern void __kfree_skb(struct sk_buff *skb); | 446 | extern void __kfree_skb(struct sk_buff *skb); |
| @@ -1062,7 +1080,7 @@ extern void skb_add_rx_frag(struct sk_buff *skb, int i, struct page *page, | |||
| 1062 | int off, int size); | 1080 | int off, int size); |
| 1063 | 1081 | ||
| 1064 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) | 1082 | #define SKB_PAGE_ASSERT(skb) BUG_ON(skb_shinfo(skb)->nr_frags) |
| 1065 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_shinfo(skb)->frag_list) | 1083 | #define SKB_FRAG_ASSERT(skb) BUG_ON(skb_has_frags(skb)) |
| 1066 | #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) | 1084 | #define SKB_LINEAR_ASSERT(skb) BUG_ON(skb_is_nonlinear(skb)) |
| 1067 | 1085 | ||
| 1068 | #ifdef NET_SKBUFF_DATA_USES_OFFSET | 1086 | #ifdef NET_SKBUFF_DATA_USES_OFFSET |
| @@ -1701,6 +1719,25 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len) | |||
| 1701 | skb = skb->prev) | 1719 | skb = skb->prev) |
| 1702 | 1720 | ||
| 1703 | 1721 | ||
| 1722 | static inline bool skb_has_frags(const struct sk_buff *skb) | ||
| 1723 | { | ||
| 1724 | return skb_shinfo(skb)->frag_list != NULL; | ||
| 1725 | } | ||
| 1726 | |||
| 1727 | static inline void skb_frag_list_init(struct sk_buff *skb) | ||
| 1728 | { | ||
| 1729 | skb_shinfo(skb)->frag_list = NULL; | ||
| 1730 | } | ||
| 1731 | |||
| 1732 | static inline void skb_frag_add_head(struct sk_buff *skb, struct sk_buff *frag) | ||
| 1733 | { | ||
| 1734 | frag->next = skb_shinfo(skb)->frag_list; | ||
| 1735 | skb_shinfo(skb)->frag_list = frag; | ||
| 1736 | } | ||
| 1737 | |||
| 1738 | #define skb_walk_frags(skb, iter) \ | ||
| 1739 | for (iter = skb_shinfo(skb)->frag_list; iter; iter = iter->next) | ||
| 1740 | |||
| 1704 | extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, | 1741 | extern struct sk_buff *__skb_recv_datagram(struct sock *sk, unsigned flags, |
| 1705 | int *peeked, int *err); | 1742 | int *peeked, int *err); |
| 1706 | extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, | 1743 | extern struct sk_buff *skb_recv_datagram(struct sock *sk, unsigned flags, |
| @@ -1715,8 +1752,14 @@ extern int skb_copy_and_csum_datagram_iovec(struct sk_buff *skb, | |||
| 1715 | struct iovec *iov); | 1752 | struct iovec *iov); |
| 1716 | extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, | 1753 | extern int skb_copy_datagram_from_iovec(struct sk_buff *skb, |
| 1717 | int offset, | 1754 | int offset, |
| 1718 | struct iovec *from, | 1755 | const struct iovec *from, |
| 1756 | int from_offset, | ||
| 1719 | int len); | 1757 | int len); |
| 1758 | extern int skb_copy_datagram_const_iovec(const struct sk_buff *from, | ||
| 1759 | int offset, | ||
| 1760 | const struct iovec *to, | ||
| 1761 | int to_offset, | ||
| 1762 | int size); | ||
| 1720 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); | 1763 | extern void skb_free_datagram(struct sock *sk, struct sk_buff *skb); |
| 1721 | extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, | 1764 | extern int skb_kill_datagram(struct sock *sk, struct sk_buff *skb, |
| 1722 | unsigned int flags); | 1765 | unsigned int flags); |
diff --git a/include/linux/slab.h b/include/linux/slab.h index 219b8fb4651d..2da8372519f5 100644 --- a/include/linux/slab.h +++ b/include/linux/slab.h | |||
| @@ -64,6 +64,13 @@ | |||
| 64 | 64 | ||
| 65 | #define SLAB_NOLEAKTRACE 0x00800000UL /* Avoid kmemleak tracing */ | 65 | #define SLAB_NOLEAKTRACE 0x00800000UL /* Avoid kmemleak tracing */ |
| 66 | 66 | ||
| 67 | /* Don't track use of uninitialized memory */ | ||
| 68 | #ifdef CONFIG_KMEMCHECK | ||
| 69 | # define SLAB_NOTRACK 0x01000000UL | ||
| 70 | #else | ||
| 71 | # define SLAB_NOTRACK 0x00000000UL | ||
| 72 | #endif | ||
| 73 | |||
| 67 | /* The following flags affect the page allocator grouping pages by mobility */ | 74 | /* The following flags affect the page allocator grouping pages by mobility */ |
| 68 | #define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */ | 75 | #define SLAB_RECLAIM_ACCOUNT 0x00020000UL /* Objects are reclaimable */ |
| 69 | #define SLAB_TEMPORARY SLAB_RECLAIM_ACCOUNT /* Objects are short-lived */ | 76 | #define SLAB_TEMPORARY SLAB_RECLAIM_ACCOUNT /* Objects are short-lived */ |
diff --git a/include/linux/slab_def.h b/include/linux/slab_def.h index 713f841ecaa9..850d057500de 100644 --- a/include/linux/slab_def.h +++ b/include/linux/slab_def.h | |||
| @@ -16,6 +16,87 @@ | |||
| 16 | #include <linux/compiler.h> | 16 | #include <linux/compiler.h> |
| 17 | #include <linux/kmemtrace.h> | 17 | #include <linux/kmemtrace.h> |
| 18 | 18 | ||
| 19 | /* | ||
| 20 | * struct kmem_cache | ||
| 21 | * | ||
| 22 | * manages a cache. | ||
| 23 | */ | ||
| 24 | |||
| 25 | struct kmem_cache { | ||
| 26 | /* 1) per-cpu data, touched during every alloc/free */ | ||
| 27 | struct array_cache *array[NR_CPUS]; | ||
| 28 | /* 2) Cache tunables. Protected by cache_chain_mutex */ | ||
| 29 | unsigned int batchcount; | ||
| 30 | unsigned int limit; | ||
| 31 | unsigned int shared; | ||
| 32 | |||
| 33 | unsigned int buffer_size; | ||
| 34 | u32 reciprocal_buffer_size; | ||
| 35 | /* 3) touched by every alloc & free from the backend */ | ||
| 36 | |||
| 37 | unsigned int flags; /* constant flags */ | ||
| 38 | unsigned int num; /* # of objs per slab */ | ||
| 39 | |||
| 40 | /* 4) cache_grow/shrink */ | ||
| 41 | /* order of pgs per slab (2^n) */ | ||
| 42 | unsigned int gfporder; | ||
| 43 | |||
| 44 | /* force GFP flags, e.g. GFP_DMA */ | ||
| 45 | gfp_t gfpflags; | ||
| 46 | |||
| 47 | size_t colour; /* cache colouring range */ | ||
| 48 | unsigned int colour_off; /* colour offset */ | ||
| 49 | struct kmem_cache *slabp_cache; | ||
| 50 | unsigned int slab_size; | ||
| 51 | unsigned int dflags; /* dynamic flags */ | ||
| 52 | |||
| 53 | /* constructor func */ | ||
| 54 | void (*ctor)(void *obj); | ||
| 55 | |||
| 56 | /* 5) cache creation/removal */ | ||
| 57 | const char *name; | ||
| 58 | struct list_head next; | ||
| 59 | |||
| 60 | /* 6) statistics */ | ||
| 61 | #ifdef CONFIG_DEBUG_SLAB | ||
| 62 | unsigned long num_active; | ||
| 63 | unsigned long num_allocations; | ||
| 64 | unsigned long high_mark; | ||
| 65 | unsigned long grown; | ||
| 66 | unsigned long reaped; | ||
| 67 | unsigned long errors; | ||
| 68 | unsigned long max_freeable; | ||
| 69 | unsigned long node_allocs; | ||
| 70 | unsigned long node_frees; | ||
| 71 | unsigned long node_overflow; | ||
| 72 | atomic_t allochit; | ||
| 73 | atomic_t allocmiss; | ||
| 74 | atomic_t freehit; | ||
| 75 | atomic_t freemiss; | ||
| 76 | |||
| 77 | /* | ||
| 78 | * If debugging is enabled, then the allocator can add additional | ||
| 79 | * fields and/or padding to every object. buffer_size contains the total | ||
| 80 | * object size including these internal fields, the following two | ||
| 81 | * variables contain the offset to the user object and its size. | ||
| 82 | */ | ||
| 83 | int obj_offset; | ||
| 84 | int obj_size; | ||
| 85 | #endif /* CONFIG_DEBUG_SLAB */ | ||
| 86 | |||
| 87 | /* | ||
| 88 | * We put nodelists[] at the end of kmem_cache, because we want to size | ||
| 89 | * this array to nr_node_ids slots instead of MAX_NUMNODES | ||
| 90 | * (see kmem_cache_init()) | ||
| 91 | * We still use [MAX_NUMNODES] and not [1] or [0] because cache_cache | ||
| 92 | * is statically defined, so we reserve the max number of nodes. | ||
| 93 | */ | ||
| 94 | struct kmem_list3 *nodelists[MAX_NUMNODES]; | ||
| 95 | /* | ||
| 96 | * Do not add fields after nodelists[] | ||
| 97 | */ | ||
| 98 | }; | ||
| 99 | |||
| 19 | /* Size description struct for general caches. */ | 100 | /* Size description struct for general caches. */ |
| 20 | struct cache_sizes { | 101 | struct cache_sizes { |
| 21 | size_t cs_size; | 102 | size_t cs_size; |
diff --git a/include/linux/smp.h b/include/linux/smp.h index a69db820eed6..9e3d8af09207 100644 --- a/include/linux/smp.h +++ b/include/linux/smp.h | |||
| @@ -177,7 +177,6 @@ static inline void init_call_single_data(void) | |||
| 177 | 177 | ||
| 178 | #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) | 178 | #define get_cpu() ({ preempt_disable(); smp_processor_id(); }) |
| 179 | #define put_cpu() preempt_enable() | 179 | #define put_cpu() preempt_enable() |
| 180 | #define put_cpu_no_resched() preempt_enable_no_resched() | ||
| 181 | 180 | ||
| 182 | /* | 181 | /* |
| 183 | * Callback to arch code if there's nosmp or maxcpus=0 on the | 182 | * Callback to arch code if there's nosmp or maxcpus=0 on the |
diff --git a/include/linux/smsc911x.h b/include/linux/smsc911x.h index b32725075d71..5241e4fb4eca 100644 --- a/include/linux/smsc911x.h +++ b/include/linux/smsc911x.h | |||
| @@ -47,4 +47,14 @@ struct smsc911x_platform_config { | |||
| 47 | #define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3)) | 47 | #define SMSC911X_FORCE_EXTERNAL_PHY (BIT(3)) |
| 48 | #define SMSC911X_SAVE_MAC_ADDRESS (BIT(4)) | 48 | #define SMSC911X_SAVE_MAC_ADDRESS (BIT(4)) |
| 49 | 49 | ||
| 50 | /* | ||
| 51 | * SMSC911X_SWAP_FIFO: | ||
| 52 | * Enables software byte swap for fifo data. Should only be used as a | ||
| 53 | * "last resort" in the case of big endian mode on boards with incorrectly | ||
| 54 | * routed data bus to older devices such as LAN9118. Newer devices such as | ||
| 55 | * LAN9221 can handle this in hardware, there are registers to control | ||
| 56 | * this swapping but the driver doesn't currently use them. | ||
| 57 | */ | ||
| 58 | #define SMSC911X_SWAP_FIFO (BIT(5)) | ||
| 59 | |||
| 50 | #endif /* __LINUX_SMSC911X_H__ */ | 60 | #endif /* __LINUX_SMSC911X_H__ */ |
diff --git a/include/linux/snmp.h b/include/linux/snmp.h index aee3f1e1d1ce..0f953fe40413 100644 --- a/include/linux/snmp.h +++ b/include/linux/snmp.h | |||
| @@ -18,7 +18,7 @@ | |||
| 18 | enum | 18 | enum |
| 19 | { | 19 | { |
| 20 | IPSTATS_MIB_NUM = 0, | 20 | IPSTATS_MIB_NUM = 0, |
| 21 | IPSTATS_MIB_INRECEIVES, /* InReceives */ | 21 | IPSTATS_MIB_INPKTS, /* InReceives */ |
| 22 | IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */ | 22 | IPSTATS_MIB_INHDRERRORS, /* InHdrErrors */ |
| 23 | IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */ | 23 | IPSTATS_MIB_INTOOBIGERRORS, /* InTooBigErrors */ |
| 24 | IPSTATS_MIB_INNOROUTES, /* InNoRoutes */ | 24 | IPSTATS_MIB_INNOROUTES, /* InNoRoutes */ |
| @@ -28,7 +28,7 @@ enum | |||
| 28 | IPSTATS_MIB_INDISCARDS, /* InDiscards */ | 28 | IPSTATS_MIB_INDISCARDS, /* InDiscards */ |
| 29 | IPSTATS_MIB_INDELIVERS, /* InDelivers */ | 29 | IPSTATS_MIB_INDELIVERS, /* InDelivers */ |
| 30 | IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */ | 30 | IPSTATS_MIB_OUTFORWDATAGRAMS, /* OutForwDatagrams */ |
| 31 | IPSTATS_MIB_OUTREQUESTS, /* OutRequests */ | 31 | IPSTATS_MIB_OUTPKTS, /* OutRequests */ |
| 32 | IPSTATS_MIB_OUTDISCARDS, /* OutDiscards */ | 32 | IPSTATS_MIB_OUTDISCARDS, /* OutDiscards */ |
| 33 | IPSTATS_MIB_OUTNOROUTES, /* OutNoRoutes */ | 33 | IPSTATS_MIB_OUTNOROUTES, /* OutNoRoutes */ |
| 34 | IPSTATS_MIB_REASMTIMEOUT, /* ReasmTimeout */ | 34 | IPSTATS_MIB_REASMTIMEOUT, /* ReasmTimeout */ |
| @@ -42,6 +42,12 @@ enum | |||
| 42 | IPSTATS_MIB_OUTMCASTPKTS, /* OutMcastPkts */ | 42 | IPSTATS_MIB_OUTMCASTPKTS, /* OutMcastPkts */ |
| 43 | IPSTATS_MIB_INBCASTPKTS, /* InBcastPkts */ | 43 | IPSTATS_MIB_INBCASTPKTS, /* InBcastPkts */ |
| 44 | IPSTATS_MIB_OUTBCASTPKTS, /* OutBcastPkts */ | 44 | IPSTATS_MIB_OUTBCASTPKTS, /* OutBcastPkts */ |
| 45 | IPSTATS_MIB_INOCTETS, /* InOctets */ | ||
| 46 | IPSTATS_MIB_OUTOCTETS, /* OutOctets */ | ||
| 47 | IPSTATS_MIB_INMCASTOCTETS, /* InMcastOctets */ | ||
| 48 | IPSTATS_MIB_OUTMCASTOCTETS, /* OutMcastOctets */ | ||
| 49 | IPSTATS_MIB_INBCASTOCTETS, /* InBcastOctets */ | ||
| 50 | IPSTATS_MIB_OUTBCASTOCTETS, /* OutBcastOctets */ | ||
| 45 | __IPSTATS_MIB_MAX | 51 | __IPSTATS_MIB_MAX |
| 46 | }; | 52 | }; |
| 47 | 53 | ||
diff --git a/include/linux/socket.h b/include/linux/socket.h index 421afb4d29b0..3b461dffe244 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h | |||
| @@ -194,7 +194,8 @@ struct ucred { | |||
| 194 | #define AF_RXRPC 33 /* RxRPC sockets */ | 194 | #define AF_RXRPC 33 /* RxRPC sockets */ |
| 195 | #define AF_ISDN 34 /* mISDN sockets */ | 195 | #define AF_ISDN 34 /* mISDN sockets */ |
| 196 | #define AF_PHONET 35 /* Phonet sockets */ | 196 | #define AF_PHONET 35 /* Phonet sockets */ |
| 197 | #define AF_MAX 36 /* For now.. */ | 197 | #define AF_IEEE802154 36 /* IEEE802154 sockets */ |
| 198 | #define AF_MAX 37 /* For now.. */ | ||
| 198 | 199 | ||
| 199 | /* Protocol families, same as address families. */ | 200 | /* Protocol families, same as address families. */ |
| 200 | #define PF_UNSPEC AF_UNSPEC | 201 | #define PF_UNSPEC AF_UNSPEC |
| @@ -233,6 +234,7 @@ struct ucred { | |||
| 233 | #define PF_RXRPC AF_RXRPC | 234 | #define PF_RXRPC AF_RXRPC |
| 234 | #define PF_ISDN AF_ISDN | 235 | #define PF_ISDN AF_ISDN |
| 235 | #define PF_PHONET AF_PHONET | 236 | #define PF_PHONET AF_PHONET |
| 237 | #define PF_IEEE802154 AF_IEEE802154 | ||
| 236 | #define PF_MAX AF_MAX | 238 | #define PF_MAX AF_MAX |
| 237 | 239 | ||
| 238 | /* Maximum queue length specifiable by listen. */ | 240 | /* Maximum queue length specifiable by listen. */ |
| @@ -303,14 +305,15 @@ struct ucred { | |||
| 303 | #define SOL_BLUETOOTH 274 | 305 | #define SOL_BLUETOOTH 274 |
| 304 | #define SOL_PNPIPE 275 | 306 | #define SOL_PNPIPE 275 |
| 305 | #define SOL_RDS 276 | 307 | #define SOL_RDS 276 |
| 308 | #define SOL_IUCV 277 | ||
| 306 | 309 | ||
| 307 | /* IPX options */ | 310 | /* IPX options */ |
| 308 | #define IPX_TYPE 1 | 311 | #define IPX_TYPE 1 |
| 309 | 312 | ||
| 310 | #ifdef __KERNEL__ | 313 | #ifdef __KERNEL__ |
| 311 | extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); | 314 | extern int memcpy_fromiovec(unsigned char *kdata, struct iovec *iov, int len); |
| 312 | extern int memcpy_fromiovecend(unsigned char *kdata, struct iovec *iov, | 315 | extern int memcpy_fromiovecend(unsigned char *kdata, const struct iovec *iov, |
| 313 | int offset, int len); | 316 | int offset, int len); |
| 314 | extern int csum_partial_copy_fromiovecend(unsigned char *kdata, | 317 | extern int csum_partial_copy_fromiovecend(unsigned char *kdata, |
| 315 | struct iovec *iov, | 318 | struct iovec *iov, |
| 316 | int offset, | 319 | int offset, |
| @@ -318,6 +321,8 @@ extern int csum_partial_copy_fromiovecend(unsigned char *kdata, | |||
| 318 | 321 | ||
| 319 | extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); | 322 | extern int verify_iovec(struct msghdr *m, struct iovec *iov, struct sockaddr *address, int mode); |
| 320 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); | 323 | extern int memcpy_toiovec(struct iovec *v, unsigned char *kdata, int len); |
| 324 | extern int memcpy_toiovecend(const struct iovec *v, unsigned char *kdata, | ||
| 325 | int offset, int len); | ||
| 321 | extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); | 326 | extern int move_addr_to_user(struct sockaddr *kaddr, int klen, void __user *uaddr, int __user *ulen); |
| 322 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); | 327 | extern int move_addr_to_kernel(void __user *uaddr, int ulen, struct sockaddr *kaddr); |
| 323 | extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); | 328 | extern int put_cmsg(struct msghdr*, int level, int type, int len, void *data); |
diff --git a/include/linux/spi/libertas_spi.h b/include/linux/spi/libertas_spi.h index 79506f5f9e67..1b5d5384fcd3 100644 --- a/include/linux/spi/libertas_spi.h +++ b/include/linux/spi/libertas_spi.h | |||
| @@ -22,9 +22,6 @@ struct libertas_spi_platform_data { | |||
| 22 | * speed, you may want to use 0 here. */ | 22 | * speed, you may want to use 0 here. */ |
| 23 | u16 use_dummy_writes; | 23 | u16 use_dummy_writes; |
| 24 | 24 | ||
| 25 | /* GPIO number to use as chip select */ | ||
| 26 | u16 gpio_cs; | ||
| 27 | |||
| 28 | /* Board specific setup/teardown */ | 25 | /* Board specific setup/teardown */ |
| 29 | int (*setup)(struct spi_device *spi); | 26 | int (*setup)(struct spi_device *spi); |
| 30 | int (*teardown)(struct spi_device *spi); | 27 | int (*teardown)(struct spi_device *spi); |
diff --git a/include/linux/spi/wl12xx.h b/include/linux/spi/wl12xx.h new file mode 100644 index 000000000000..11430cab2aad --- /dev/null +++ b/include/linux/spi/wl12xx.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | /* | ||
| 2 | * This file is part of wl12xx | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Nokia Corporation | ||
| 5 | * | ||
| 6 | * Contact: Kalle Valo <kalle.valo@nokia.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or | ||
| 9 | * modify it under the terms 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 that it will be useful, but | ||
| 13 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | ||
| 15 | * General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA | ||
| 20 | * 02110-1301 USA | ||
| 21 | * | ||
| 22 | */ | ||
| 23 | |||
| 24 | #ifndef _LINUX_SPI_WL12XX_H | ||
| 25 | #define _LINUX_SPI_WL12XX_H | ||
| 26 | |||
| 27 | struct wl12xx_platform_data { | ||
| 28 | void (*set_power)(bool enable); | ||
| 29 | }; | ||
| 30 | |||
| 31 | #endif | ||
diff --git a/include/linux/stacktrace.h b/include/linux/stacktrace.h index 1a8cecc4f38c..51efbef38fb0 100644 --- a/include/linux/stacktrace.h +++ b/include/linux/stacktrace.h | |||
| @@ -4,6 +4,8 @@ | |||
| 4 | struct task_struct; | 4 | struct task_struct; |
| 5 | 5 | ||
| 6 | #ifdef CONFIG_STACKTRACE | 6 | #ifdef CONFIG_STACKTRACE |
| 7 | struct task_struct; | ||
| 8 | |||
| 7 | struct stack_trace { | 9 | struct stack_trace { |
| 8 | unsigned int nr_entries, max_entries; | 10 | unsigned int nr_entries, max_entries; |
| 9 | unsigned long *entries; | 11 | unsigned long *entries; |
| @@ -11,6 +13,7 @@ struct stack_trace { | |||
| 11 | }; | 13 | }; |
| 12 | 14 | ||
| 13 | extern void save_stack_trace(struct stack_trace *trace); | 15 | extern void save_stack_trace(struct stack_trace *trace); |
| 16 | extern void save_stack_trace_bp(struct stack_trace *trace, unsigned long bp); | ||
| 14 | extern void save_stack_trace_tsk(struct task_struct *tsk, | 17 | extern void save_stack_trace_tsk(struct task_struct *tsk, |
| 15 | struct stack_trace *trace); | 18 | struct stack_trace *trace); |
| 16 | 19 | ||
diff --git a/include/linux/swap.h b/include/linux/swap.h index d476aad3ff57..0cedf31af0b0 100644 --- a/include/linux/swap.h +++ b/include/linux/swap.h | |||
| @@ -129,9 +129,10 @@ enum { | |||
| 129 | 129 | ||
| 130 | #define SWAP_CLUSTER_MAX 32 | 130 | #define SWAP_CLUSTER_MAX 32 |
| 131 | 131 | ||
| 132 | #define SWAP_MAP_MAX 0x7fff | 132 | #define SWAP_MAP_MAX 0x7ffe |
| 133 | #define SWAP_MAP_BAD 0x8000 | 133 | #define SWAP_MAP_BAD 0x7fff |
| 134 | 134 | #define SWAP_HAS_CACHE 0x8000 /* There is a swap cache of entry. */ | |
| 135 | #define SWAP_COUNT_MASK (~SWAP_HAS_CACHE) | ||
| 135 | /* | 136 | /* |
| 136 | * The in-memory structure used to track swap areas. | 137 | * The in-memory structure used to track swap areas. |
| 137 | */ | 138 | */ |
| @@ -235,7 +236,6 @@ static inline int zone_reclaim(struct zone *z, gfp_t mask, unsigned int order) | |||
| 235 | } | 236 | } |
| 236 | #endif | 237 | #endif |
| 237 | 238 | ||
| 238 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 239 | extern int page_evictable(struct page *page, struct vm_area_struct *vma); | 239 | extern int page_evictable(struct page *page, struct vm_area_struct *vma); |
| 240 | extern void scan_mapping_unevictable_pages(struct address_space *); | 240 | extern void scan_mapping_unevictable_pages(struct address_space *); |
| 241 | 241 | ||
| @@ -244,24 +244,6 @@ extern int scan_unevictable_handler(struct ctl_table *, int, struct file *, | |||
| 244 | void __user *, size_t *, loff_t *); | 244 | void __user *, size_t *, loff_t *); |
| 245 | extern int scan_unevictable_register_node(struct node *node); | 245 | extern int scan_unevictable_register_node(struct node *node); |
| 246 | extern void scan_unevictable_unregister_node(struct node *node); | 246 | extern void scan_unevictable_unregister_node(struct node *node); |
| 247 | #else | ||
| 248 | static inline int page_evictable(struct page *page, | ||
| 249 | struct vm_area_struct *vma) | ||
| 250 | { | ||
| 251 | return 1; | ||
| 252 | } | ||
| 253 | |||
| 254 | static inline void scan_mapping_unevictable_pages(struct address_space *mapping) | ||
| 255 | { | ||
| 256 | } | ||
| 257 | |||
| 258 | static inline int scan_unevictable_register_node(struct node *node) | ||
| 259 | { | ||
| 260 | return 0; | ||
| 261 | } | ||
| 262 | |||
| 263 | static inline void scan_unevictable_unregister_node(struct node *node) { } | ||
| 264 | #endif | ||
| 265 | 247 | ||
| 266 | extern int kswapd_run(int nid); | 248 | extern int kswapd_run(int nid); |
| 267 | 249 | ||
| @@ -274,7 +256,7 @@ extern void swap_unplug_io_fn(struct backing_dev_info *, struct page *); | |||
| 274 | 256 | ||
| 275 | #ifdef CONFIG_SWAP | 257 | #ifdef CONFIG_SWAP |
| 276 | /* linux/mm/page_io.c */ | 258 | /* linux/mm/page_io.c */ |
| 277 | extern int swap_readpage(struct file *, struct page *); | 259 | extern int swap_readpage(struct page *); |
| 278 | extern int swap_writepage(struct page *page, struct writeback_control *wbc); | 260 | extern int swap_writepage(struct page *page, struct writeback_control *wbc); |
| 279 | extern void end_swap_bio_read(struct bio *bio, int err); | 261 | extern void end_swap_bio_read(struct bio *bio, int err); |
| 280 | 262 | ||
| @@ -300,9 +282,11 @@ extern long total_swap_pages; | |||
| 300 | extern void si_swapinfo(struct sysinfo *); | 282 | extern void si_swapinfo(struct sysinfo *); |
| 301 | extern swp_entry_t get_swap_page(void); | 283 | extern swp_entry_t get_swap_page(void); |
| 302 | extern swp_entry_t get_swap_page_of_type(int); | 284 | extern swp_entry_t get_swap_page_of_type(int); |
| 303 | extern int swap_duplicate(swp_entry_t); | 285 | extern void swap_duplicate(swp_entry_t); |
| 286 | extern int swapcache_prepare(swp_entry_t); | ||
| 304 | extern int valid_swaphandles(swp_entry_t, unsigned long *); | 287 | extern int valid_swaphandles(swp_entry_t, unsigned long *); |
| 305 | extern void swap_free(swp_entry_t); | 288 | extern void swap_free(swp_entry_t); |
| 289 | extern void swapcache_free(swp_entry_t, struct page *page); | ||
| 306 | extern int free_swap_and_cache(swp_entry_t); | 290 | extern int free_swap_and_cache(swp_entry_t); |
| 307 | extern int swap_type_of(dev_t, sector_t, struct block_device **); | 291 | extern int swap_type_of(dev_t, sector_t, struct block_device **); |
| 308 | extern unsigned int count_swap_pages(int, int); | 292 | extern unsigned int count_swap_pages(int, int); |
| @@ -370,12 +354,20 @@ static inline void show_swap_cache_info(void) | |||
| 370 | } | 354 | } |
| 371 | 355 | ||
| 372 | #define free_swap_and_cache(swp) is_migration_entry(swp) | 356 | #define free_swap_and_cache(swp) is_migration_entry(swp) |
| 373 | #define swap_duplicate(swp) is_migration_entry(swp) | 357 | #define swapcache_prepare(swp) is_migration_entry(swp) |
| 358 | |||
| 359 | static inline void swap_duplicate(swp_entry_t swp) | ||
| 360 | { | ||
| 361 | } | ||
| 374 | 362 | ||
| 375 | static inline void swap_free(swp_entry_t swp) | 363 | static inline void swap_free(swp_entry_t swp) |
| 376 | { | 364 | { |
| 377 | } | 365 | } |
| 378 | 366 | ||
| 367 | static inline void swapcache_free(swp_entry_t swp, struct page *page) | ||
| 368 | { | ||
| 369 | } | ||
| 370 | |||
| 379 | static inline struct page *swapin_readahead(swp_entry_t swp, gfp_t gfp_mask, | 371 | static inline struct page *swapin_readahead(swp_entry_t swp, gfp_t gfp_mask, |
| 380 | struct vm_area_struct *vma, unsigned long addr) | 372 | struct vm_area_struct *vma, unsigned long addr) |
| 381 | { | 373 | { |
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h index 418d90f5effe..fa4242cdade8 100644 --- a/include/linux/syscalls.h +++ b/include/linux/syscalls.h | |||
| @@ -434,6 +434,7 @@ asmlinkage long sys_fcntl(unsigned int fd, unsigned int cmd, unsigned long arg); | |||
| 434 | asmlinkage long sys_fcntl64(unsigned int fd, | 434 | asmlinkage long sys_fcntl64(unsigned int fd, |
| 435 | unsigned int cmd, unsigned long arg); | 435 | unsigned int cmd, unsigned long arg); |
| 436 | #endif | 436 | #endif |
| 437 | asmlinkage long sys_pipe(int __user *fildes); | ||
| 437 | asmlinkage long sys_pipe2(int __user *fildes, int flags); | 438 | asmlinkage long sys_pipe2(int __user *fildes, int flags); |
| 438 | asmlinkage long sys_dup(unsigned int fildes); | 439 | asmlinkage long sys_dup(unsigned int fildes); |
| 439 | asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd); | 440 | asmlinkage long sys_dup2(unsigned int oldfd, unsigned int newfd); |
| @@ -751,8 +752,6 @@ asmlinkage long sys_pselect6(int, fd_set __user *, fd_set __user *, | |||
| 751 | asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int, | 752 | asmlinkage long sys_ppoll(struct pollfd __user *, unsigned int, |
| 752 | struct timespec __user *, const sigset_t __user *, | 753 | struct timespec __user *, const sigset_t __user *, |
| 753 | size_t); | 754 | size_t); |
| 754 | asmlinkage long sys_pipe2(int __user *, int); | ||
| 755 | asmlinkage long sys_pipe(int __user *); | ||
| 756 | 755 | ||
| 757 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]); | 756 | int kernel_execve(const char *filename, char *const argv[], char *const envp[]); |
| 758 | 757 | ||
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index 9d5078bd23a3..8afac76cd748 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -377,7 +377,7 @@ struct tcp_sock { | |||
| 377 | unsigned int keepalive_time; /* time before keep alive takes place */ | 377 | unsigned int keepalive_time; /* time before keep alive takes place */ |
| 378 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ | 378 | unsigned int keepalive_intvl; /* time interval between keep alive probes */ |
| 379 | 379 | ||
| 380 | unsigned long last_synq_overflow; | 380 | int linger2; |
| 381 | 381 | ||
| 382 | /* Receiver side RTT estimation */ | 382 | /* Receiver side RTT estimation */ |
| 383 | struct { | 383 | struct { |
| @@ -406,8 +406,6 @@ struct tcp_sock { | |||
| 406 | /* TCP MD5 Signagure Option information */ | 406 | /* TCP MD5 Signagure Option information */ |
| 407 | struct tcp_md5sig_info *md5sig_info; | 407 | struct tcp_md5sig_info *md5sig_info; |
| 408 | #endif | 408 | #endif |
| 409 | |||
| 410 | int linger2; | ||
| 411 | }; | 409 | }; |
| 412 | 410 | ||
| 413 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) | 411 | static inline struct tcp_sock *tcp_sk(const struct sock *sk) |
diff --git a/include/linux/tick.h b/include/linux/tick.h index 469b82d88b3b..0482229c07db 100644 --- a/include/linux/tick.h +++ b/include/linux/tick.h | |||
| @@ -97,10 +97,12 @@ extern void tick_clock_notify(void); | |||
| 97 | extern int tick_check_oneshot_change(int allow_nohz); | 97 | extern int tick_check_oneshot_change(int allow_nohz); |
| 98 | extern struct tick_sched *tick_get_tick_sched(int cpu); | 98 | extern struct tick_sched *tick_get_tick_sched(int cpu); |
| 99 | extern void tick_check_idle(int cpu); | 99 | extern void tick_check_idle(int cpu); |
| 100 | extern int tick_oneshot_mode_active(void); | ||
| 100 | # else | 101 | # else |
| 101 | static inline void tick_clock_notify(void) { } | 102 | static inline void tick_clock_notify(void) { } |
| 102 | static inline int tick_check_oneshot_change(int allow_nohz) { return 0; } | 103 | static inline int tick_check_oneshot_change(int allow_nohz) { return 0; } |
| 103 | static inline void tick_check_idle(int cpu) { } | 104 | static inline void tick_check_idle(int cpu) { } |
| 105 | static inline int tick_oneshot_mode_active(void) { return 0; } | ||
| 104 | # endif | 106 | # endif |
| 105 | 107 | ||
| 106 | #else /* CONFIG_GENERIC_CLOCKEVENTS */ | 108 | #else /* CONFIG_GENERIC_CLOCKEVENTS */ |
| @@ -109,6 +111,7 @@ static inline void tick_cancel_sched_timer(int cpu) { } | |||
| 109 | static inline void tick_clock_notify(void) { } | 111 | static inline void tick_clock_notify(void) { } |
| 110 | static inline int tick_check_oneshot_change(int allow_nohz) { return 0; } | 112 | static inline int tick_check_oneshot_change(int allow_nohz) { return 0; } |
| 111 | static inline void tick_check_idle(int cpu) { } | 113 | static inline void tick_check_idle(int cpu) { } |
| 114 | static inline int tick_oneshot_mode_active(void) { return 0; } | ||
| 112 | #endif /* !CONFIG_GENERIC_CLOCKEVENTS */ | 115 | #endif /* !CONFIG_GENERIC_CLOCKEVENTS */ |
| 113 | 116 | ||
| 114 | # ifdef CONFIG_NO_HZ | 117 | # ifdef CONFIG_NO_HZ |
diff --git a/include/linux/timer.h b/include/linux/timer.h index 6cdb6f3331f1..ccf882eed8f8 100644 --- a/include/linux/timer.h +++ b/include/linux/timer.h | |||
| @@ -163,7 +163,10 @@ extern void add_timer_on(struct timer_list *timer, int cpu); | |||
| 163 | extern int del_timer(struct timer_list * timer); | 163 | extern int del_timer(struct timer_list * timer); |
| 164 | extern int mod_timer(struct timer_list *timer, unsigned long expires); | 164 | extern int mod_timer(struct timer_list *timer, unsigned long expires); |
| 165 | extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); | 165 | extern int mod_timer_pending(struct timer_list *timer, unsigned long expires); |
| 166 | extern int mod_timer_pinned(struct timer_list *timer, unsigned long expires); | ||
| 166 | 167 | ||
| 168 | #define TIMER_NOT_PINNED 0 | ||
| 169 | #define TIMER_PINNED 1 | ||
| 167 | /* | 170 | /* |
| 168 | * The jiffies value which is added to now, when there is no timer | 171 | * The jiffies value which is added to now, when there is no timer |
| 169 | * in the timer wheel: | 172 | * in the timer wheel: |
diff --git a/include/linux/timex.h b/include/linux/timex.h index aa3475fcff64..e6967d10d9e5 100644 --- a/include/linux/timex.h +++ b/include/linux/timex.h | |||
| @@ -170,17 +170,37 @@ struct timex { | |||
| 170 | #include <asm/timex.h> | 170 | #include <asm/timex.h> |
| 171 | 171 | ||
| 172 | /* | 172 | /* |
| 173 | * SHIFT_KG and SHIFT_KF establish the damping of the PLL and are chosen | 173 | * SHIFT_PLL is used as a dampening factor to define how much we |
| 174 | * for a slightly underdamped convergence characteristic. SHIFT_KH | 174 | * adjust the frequency correction for a given offset in PLL mode. |
| 175 | * establishes the damping of the FLL and is chosen by wisdom and black | 175 | * It also used in dampening the offset correction, to define how |
| 176 | * art. | 176 | * much of the current value in time_offset we correct for each |
| 177 | * second. Changing this value changes the stiffness of the ntp | ||
| 178 | * adjustment code. A lower value makes it more flexible, reducing | ||
| 179 | * NTP convergence time. A higher value makes it stiffer, increasing | ||
| 180 | * convergence time, but making the clock more stable. | ||
| 177 | * | 181 | * |
| 178 | * MAXTC establishes the maximum time constant of the PLL. With the | 182 | * In David Mills' nanokernel reference implementation SHIFT_PLL is 4. |
| 179 | * SHIFT_KG and SHIFT_KF values given and a time constant range from | 183 | * However this seems to increase convergence time much too long. |
| 180 | * zero to MAXTC, the PLL will converge in 15 minutes to 16 hours, | 184 | * |
| 181 | * respectively. | 185 | * https://lists.ntp.org/pipermail/hackers/2008-January/003487.html |
| 186 | * | ||
| 187 | * In the above mailing list discussion, it seems the value of 4 | ||
| 188 | * was appropriate for other Unix systems with HZ=100, and that | ||
| 189 | * SHIFT_PLL should be decreased as HZ increases. However, Linux's | ||
| 190 | * clock steering implementation is HZ independent. | ||
| 191 | * | ||
| 192 | * Through experimentation, a SHIFT_PLL value of 2 was found to allow | ||
| 193 | * for fast convergence (very similar to the NTPv3 code used prior to | ||
| 194 | * v2.6.19), with good clock stability. | ||
| 195 | * | ||
| 196 | * | ||
| 197 | * SHIFT_FLL is used as a dampening factor to define how much we | ||
| 198 | * adjust the frequency correction for a given offset in FLL mode. | ||
| 199 | * In David Mills' nanokernel reference implementation SHIFT_FLL is 2. | ||
| 200 | * | ||
| 201 | * MAXTC establishes the maximum time constant of the PLL. | ||
| 182 | */ | 202 | */ |
| 183 | #define SHIFT_PLL 4 /* PLL frequency factor (shift) */ | 203 | #define SHIFT_PLL 2 /* PLL frequency factor (shift) */ |
| 184 | #define SHIFT_FLL 2 /* FLL frequency factor (shift) */ | 204 | #define SHIFT_FLL 2 /* FLL frequency factor (shift) */ |
| 185 | #define MAXTC 10 /* maximum time constant (shift) */ | 205 | #define MAXTC 10 /* maximum time constant (shift) */ |
| 186 | 206 | ||
| @@ -192,10 +212,10 @@ struct timex { | |||
| 192 | #define SHIFT_USEC 16 /* frequency offset scale (shift) */ | 212 | #define SHIFT_USEC 16 /* frequency offset scale (shift) */ |
| 193 | #define PPM_SCALE ((s64)NSEC_PER_USEC << (NTP_SCALE_SHIFT - SHIFT_USEC)) | 213 | #define PPM_SCALE ((s64)NSEC_PER_USEC << (NTP_SCALE_SHIFT - SHIFT_USEC)) |
| 194 | #define PPM_SCALE_INV_SHIFT 19 | 214 | #define PPM_SCALE_INV_SHIFT 19 |
| 195 | #define PPM_SCALE_INV ((1ll << (PPM_SCALE_INV_SHIFT + NTP_SCALE_SHIFT)) / \ | 215 | #define PPM_SCALE_INV ((1LL << (PPM_SCALE_INV_SHIFT + NTP_SCALE_SHIFT)) / \ |
| 196 | PPM_SCALE + 1) | 216 | PPM_SCALE + 1) |
| 197 | 217 | ||
| 198 | #define MAXPHASE 500000000l /* max phase error (ns) */ | 218 | #define MAXPHASE 500000000L /* max phase error (ns) */ |
| 199 | #define MAXFREQ 500000 /* max frequency error (ns/s) */ | 219 | #define MAXFREQ 500000 /* max frequency error (ns/s) */ |
| 200 | #define MAXFREQ_SCALED ((s64)MAXFREQ << NTP_SCALE_SHIFT) | 220 | #define MAXFREQ_SCALED ((s64)MAXFREQ << NTP_SCALE_SHIFT) |
| 201 | #define MINSEC 256 /* min interval between updates (s) */ | 221 | #define MINSEC 256 /* min interval between updates (s) */ |
| @@ -260,6 +280,9 @@ extern int do_adjtimex(struct timex *); | |||
| 260 | 280 | ||
| 261 | int read_current_timer(unsigned long *timer_val); | 281 | int read_current_timer(unsigned long *timer_val); |
| 262 | 282 | ||
| 283 | /* The clock frequency of the i8253/i8254 PIT */ | ||
| 284 | #define PIT_TICK_RATE 1193182ul | ||
| 285 | |||
| 263 | #endif /* KERNEL */ | 286 | #endif /* KERNEL */ |
| 264 | 287 | ||
| 265 | #endif /* LINUX_TIMEX_H */ | 288 | #endif /* LINUX_TIMEX_H */ |
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 14df7e635d43..b9dc4ca0246f 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h | |||
| @@ -198,7 +198,7 @@ static inline void tracepoint_synchronize_unregister(void) | |||
| 198 | * * This is how the trace record is structured and will | 198 | * * This is how the trace record is structured and will |
| 199 | * * be saved into the ring buffer. These are the fields | 199 | * * be saved into the ring buffer. These are the fields |
| 200 | * * that will be exposed to user-space in | 200 | * * that will be exposed to user-space in |
| 201 | * * /debug/tracing/events/<*>/format. | 201 | * * /sys/kernel/debug/tracing/events/<*>/format. |
| 202 | * * | 202 | * * |
| 203 | * * The declared 'local variable' is called '__entry' | 203 | * * The declared 'local variable' is called '__entry' |
| 204 | * * | 204 | * * |
| @@ -258,7 +258,7 @@ static inline void tracepoint_synchronize_unregister(void) | |||
| 258 | * tracepoint callback (this is used by programmatic plugins and | 258 | * tracepoint callback (this is used by programmatic plugins and |
| 259 | * can also by used by generic instrumentation like SystemTap), and | 259 | * can also by used by generic instrumentation like SystemTap), and |
| 260 | * it is also used to expose a structured trace record in | 260 | * it is also used to expose a structured trace record in |
| 261 | * /debug/tracing/events/. | 261 | * /sys/kernel/debug/tracing/events/. |
| 262 | */ | 262 | */ |
| 263 | 263 | ||
| 264 | #define TRACE_EVENT(name, proto, args, struct, assign, print) \ | 264 | #define TRACE_EVENT(name, proto, args, struct, assign, print) \ |
diff --git a/include/linux/usb.h b/include/linux/usb.h index 3aa2cd1f8d08..84929e914034 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h | |||
| @@ -36,6 +36,7 @@ struct wusb_dev; | |||
| 36 | * - configs have one (often) or more interfaces; | 36 | * - configs have one (often) or more interfaces; |
| 37 | * - interfaces have one (usually) or more settings; | 37 | * - interfaces have one (usually) or more settings; |
| 38 | * - each interface setting has zero or (usually) more endpoints. | 38 | * - each interface setting has zero or (usually) more endpoints. |
| 39 | * - a SuperSpeed endpoint has a companion descriptor | ||
| 39 | * | 40 | * |
| 40 | * And there might be other descriptors mixed in with those. | 41 | * And there might be other descriptors mixed in with those. |
| 41 | * | 42 | * |
| @@ -44,6 +45,19 @@ struct wusb_dev; | |||
| 44 | 45 | ||
| 45 | struct ep_device; | 46 | struct ep_device; |
| 46 | 47 | ||
| 48 | /* For SS devices */ | ||
| 49 | /** | ||
| 50 | * struct usb_host_ss_ep_comp - Valid for SuperSpeed devices only | ||
| 51 | * @desc: endpoint companion descriptor, wMaxPacketSize in native byteorder | ||
| 52 | * @extra: descriptors following this endpoint companion descriptor | ||
| 53 | * @extralen: how many bytes of "extra" are valid | ||
| 54 | */ | ||
| 55 | struct usb_host_ss_ep_comp { | ||
| 56 | struct usb_ss_ep_comp_descriptor desc; | ||
| 57 | unsigned char *extra; /* Extra descriptors */ | ||
| 58 | int extralen; | ||
| 59 | }; | ||
| 60 | |||
| 47 | /** | 61 | /** |
| 48 | * struct usb_host_endpoint - host-side endpoint descriptor and queue | 62 | * struct usb_host_endpoint - host-side endpoint descriptor and queue |
| 49 | * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder | 63 | * @desc: descriptor for this endpoint, wMaxPacketSize in native byteorder |
| @@ -51,6 +65,7 @@ struct ep_device; | |||
| 51 | * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) | 65 | * @hcpriv: for use by HCD; typically holds hardware dma queue head (QH) |
| 52 | * with one or more transfer descriptors (TDs) per urb | 66 | * with one or more transfer descriptors (TDs) per urb |
| 53 | * @ep_dev: ep_device for sysfs info | 67 | * @ep_dev: ep_device for sysfs info |
| 68 | * @ss_ep_comp: companion descriptor information for this endpoint | ||
| 54 | * @extra: descriptors following this endpoint in the configuration | 69 | * @extra: descriptors following this endpoint in the configuration |
| 55 | * @extralen: how many bytes of "extra" are valid | 70 | * @extralen: how many bytes of "extra" are valid |
| 56 | * @enabled: URBs may be submitted to this endpoint | 71 | * @enabled: URBs may be submitted to this endpoint |
| @@ -63,6 +78,7 @@ struct usb_host_endpoint { | |||
| 63 | struct list_head urb_list; | 78 | struct list_head urb_list; |
| 64 | void *hcpriv; | 79 | void *hcpriv; |
| 65 | struct ep_device *ep_dev; /* For sysfs info */ | 80 | struct ep_device *ep_dev; /* For sysfs info */ |
| 81 | struct usb_host_ss_ep_comp *ss_ep_comp; /* For SS devices */ | ||
| 66 | 82 | ||
| 67 | unsigned char *extra; /* Extra descriptors */ | 83 | unsigned char *extra; /* Extra descriptors */ |
| 68 | int extralen; | 84 | int extralen; |
| @@ -336,7 +352,6 @@ struct usb_bus { | |||
| 336 | #ifdef CONFIG_USB_DEVICEFS | 352 | #ifdef CONFIG_USB_DEVICEFS |
| 337 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ | 353 | struct dentry *usbfs_dentry; /* usbfs dentry entry for the bus */ |
| 338 | #endif | 354 | #endif |
| 339 | struct device *dev; /* device for this bus */ | ||
| 340 | 355 | ||
| 341 | #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) | 356 | #if defined(CONFIG_USB_MON) || defined(CONFIG_USB_MON_MODULE) |
| 342 | struct mon_bus *mon_bus; /* non-null when associated */ | 357 | struct mon_bus *mon_bus; /* non-null when associated */ |
| @@ -363,6 +378,7 @@ struct usb_tt; | |||
| 363 | * struct usb_device - kernel's representation of a USB device | 378 | * struct usb_device - kernel's representation of a USB device |
| 364 | * @devnum: device number; address on a USB bus | 379 | * @devnum: device number; address on a USB bus |
| 365 | * @devpath: device ID string for use in messages (e.g., /port/...) | 380 | * @devpath: device ID string for use in messages (e.g., /port/...) |
| 381 | * @route: tree topology hex string for use with xHCI | ||
| 366 | * @state: device state: configured, not attached, etc. | 382 | * @state: device state: configured, not attached, etc. |
| 367 | * @speed: device speed: high/full/low (or error) | 383 | * @speed: device speed: high/full/low (or error) |
| 368 | * @tt: Transaction Translator info; used with low/full speed dev, highspeed hub | 384 | * @tt: Transaction Translator info; used with low/full speed dev, highspeed hub |
| @@ -420,6 +436,7 @@ struct usb_tt; | |||
| 420 | * @skip_sys_resume: skip the next system resume | 436 | * @skip_sys_resume: skip the next system resume |
| 421 | * @wusb_dev: if this is a Wireless USB device, link to the WUSB | 437 | * @wusb_dev: if this is a Wireless USB device, link to the WUSB |
| 422 | * specific data for the device. | 438 | * specific data for the device. |
| 439 | * @slot_id: Slot ID assigned by xHCI | ||
| 423 | * | 440 | * |
| 424 | * Notes: | 441 | * Notes: |
| 425 | * Usbcore drivers should not set usbdev->state directly. Instead use | 442 | * Usbcore drivers should not set usbdev->state directly. Instead use |
| @@ -428,6 +445,7 @@ struct usb_tt; | |||
| 428 | struct usb_device { | 445 | struct usb_device { |
| 429 | int devnum; | 446 | int devnum; |
| 430 | char devpath [16]; | 447 | char devpath [16]; |
| 448 | u32 route; | ||
| 431 | enum usb_device_state state; | 449 | enum usb_device_state state; |
| 432 | enum usb_device_speed speed; | 450 | enum usb_device_speed speed; |
| 433 | 451 | ||
| @@ -503,6 +521,7 @@ struct usb_device { | |||
| 503 | unsigned skip_sys_resume:1; | 521 | unsigned skip_sys_resume:1; |
| 504 | #endif | 522 | #endif |
| 505 | struct wusb_dev *wusb_dev; | 523 | struct wusb_dev *wusb_dev; |
| 524 | int slot_id; | ||
| 506 | }; | 525 | }; |
| 507 | #define to_usb_device(d) container_of(d, struct usb_device, dev) | 526 | #define to_usb_device(d) container_of(d, struct usb_device, dev) |
| 508 | 527 | ||
| @@ -869,6 +888,8 @@ struct usb_driver { | |||
| 869 | * struct usb_device_driver - identifies USB device driver to usbcore | 888 | * struct usb_device_driver - identifies USB device driver to usbcore |
| 870 | * @name: The driver name should be unique among USB drivers, | 889 | * @name: The driver name should be unique among USB drivers, |
| 871 | * and should normally be the same as the module name. | 890 | * and should normally be the same as the module name. |
| 891 | * @nodename: Callback to provide a naming hint for a possible | ||
| 892 | * device node to create. | ||
| 872 | * @probe: Called to see if the driver is willing to manage a particular | 893 | * @probe: Called to see if the driver is willing to manage a particular |
| 873 | * device. If it is, probe returns zero and uses dev_set_drvdata() | 894 | * device. If it is, probe returns zero and uses dev_set_drvdata() |
| 874 | * to associate driver-specific data with the device. If unwilling | 895 | * to associate driver-specific data with the device. If unwilling |
| @@ -912,6 +933,7 @@ extern struct bus_type usb_bus_type; | |||
| 912 | */ | 933 | */ |
| 913 | struct usb_class_driver { | 934 | struct usb_class_driver { |
| 914 | char *name; | 935 | char *name; |
| 936 | char *(*nodename)(struct device *dev); | ||
| 915 | const struct file_operations *fops; | 937 | const struct file_operations *fops; |
| 916 | int minor_base; | 938 | int minor_base; |
| 917 | }; | 939 | }; |
| @@ -1041,7 +1063,9 @@ typedef void (*usb_complete_t)(struct urb *); | |||
| 1041 | * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the | 1063 | * @setup_dma: For control transfers with URB_NO_SETUP_DMA_MAP set, the |
| 1042 | * device driver has provided this DMA address for the setup packet. | 1064 | * device driver has provided this DMA address for the setup packet. |
| 1043 | * The host controller driver should use this in preference to | 1065 | * The host controller driver should use this in preference to |
| 1044 | * setup_packet. | 1066 | * setup_packet, but the HCD may chose to ignore the address if it must |
| 1067 | * copy the setup packet into internal structures. Therefore, setup_packet | ||
| 1068 | * must always point to a valid buffer. | ||
| 1045 | * @start_frame: Returns the initial frame for isochronous transfers. | 1069 | * @start_frame: Returns the initial frame for isochronous transfers. |
| 1046 | * @number_of_packets: Lists the number of ISO transfer buffers. | 1070 | * @number_of_packets: Lists the number of ISO transfer buffers. |
| 1047 | * @interval: Specifies the polling interval for interrupt or isochronous | 1071 | * @interval: Specifies the polling interval for interrupt or isochronous |
| @@ -1177,6 +1201,8 @@ struct urb { | |||
| 1177 | unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/ | 1201 | unsigned int transfer_flags; /* (in) URB_SHORT_NOT_OK | ...*/ |
| 1178 | void *transfer_buffer; /* (in) associated data buffer */ | 1202 | void *transfer_buffer; /* (in) associated data buffer */ |
| 1179 | dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */ | 1203 | dma_addr_t transfer_dma; /* (in) dma addr for transfer_buffer */ |
| 1204 | struct usb_sg_request *sg; /* (in) scatter gather buffer list */ | ||
| 1205 | int num_sgs; /* (in) number of entries in the sg list */ | ||
| 1180 | u32 transfer_buffer_length; /* (in) data buffer length */ | 1206 | u32 transfer_buffer_length; /* (in) data buffer length */ |
| 1181 | u32 actual_length; /* (return) actual transfer length */ | 1207 | u32 actual_length; /* (return) actual transfer length */ |
| 1182 | unsigned char *setup_packet; /* (in) setup packet (control only) */ | 1208 | unsigned char *setup_packet; /* (in) setup packet (control only) */ |
| @@ -1422,8 +1448,8 @@ struct usb_sg_request { | |||
| 1422 | int status; | 1448 | int status; |
| 1423 | size_t bytes; | 1449 | size_t bytes; |
| 1424 | 1450 | ||
| 1425 | /* | 1451 | /* private: |
| 1426 | * members below are private: to usbcore, | 1452 | * members below are private to usbcore, |
| 1427 | * and are not provided for driver access! | 1453 | * and are not provided for driver access! |
| 1428 | */ | 1454 | */ |
| 1429 | spinlock_t lock; | 1455 | spinlock_t lock; |
| @@ -1558,6 +1584,9 @@ extern void usb_unregister_notify(struct notifier_block *nb); | |||
| 1558 | #define err(format, arg...) printk(KERN_ERR KBUILD_MODNAME ": " \ | 1584 | #define err(format, arg...) printk(KERN_ERR KBUILD_MODNAME ": " \ |
| 1559 | format "\n" , ## arg) | 1585 | format "\n" , ## arg) |
| 1560 | 1586 | ||
| 1587 | /* debugfs stuff */ | ||
| 1588 | extern struct dentry *usb_debug_root; | ||
| 1589 | |||
| 1561 | #endif /* __KERNEL__ */ | 1590 | #endif /* __KERNEL__ */ |
| 1562 | 1591 | ||
| 1563 | #endif | 1592 | #endif |
diff --git a/include/linux/usb/audio.h b/include/linux/usb/audio.h index 8cb025fef634..b5744bc218ab 100644 --- a/include/linux/usb/audio.h +++ b/include/linux/usb/audio.h | |||
| @@ -24,10 +24,75 @@ | |||
| 24 | #define USB_SUBCLASS_AUDIOCONTROL 0x01 | 24 | #define USB_SUBCLASS_AUDIOCONTROL 0x01 |
| 25 | #define USB_SUBCLASS_AUDIOSTREAMING 0x02 | 25 | #define USB_SUBCLASS_AUDIOSTREAMING 0x02 |
| 26 | #define USB_SUBCLASS_MIDISTREAMING 0x03 | 26 | #define USB_SUBCLASS_MIDISTREAMING 0x03 |
| 27 | #define USB_SUBCLASS_VENDOR_SPEC 0xff | ||
| 27 | 28 | ||
| 29 | /* A.5 Audio Class-Specific AC interface Descriptor Subtypes*/ | ||
| 30 | #define HEADER 0x01 | ||
| 31 | #define INPUT_TERMINAL 0x02 | ||
| 32 | #define OUTPUT_TERMINAL 0x03 | ||
| 33 | #define MIXER_UNIT 0x04 | ||
| 34 | #define SELECTOR_UNIT 0x05 | ||
| 35 | #define FEATURE_UNIT 0x06 | ||
| 36 | #define PROCESSING_UNIT 0x07 | ||
| 37 | #define EXTENSION_UNIT 0x08 | ||
| 38 | |||
| 39 | #define AS_GENERAL 0x01 | ||
| 40 | #define FORMAT_TYPE 0x02 | ||
| 41 | #define FORMAT_SPECIFIC 0x03 | ||
| 42 | |||
| 43 | #define EP_GENERAL 0x01 | ||
| 44 | |||
| 45 | #define MS_GENERAL 0x01 | ||
| 46 | #define MIDI_IN_JACK 0x02 | ||
| 47 | #define MIDI_OUT_JACK 0x03 | ||
| 48 | |||
| 49 | /* endpoint attributes */ | ||
| 50 | #define EP_ATTR_MASK 0x0c | ||
| 51 | #define EP_ATTR_ASYNC 0x04 | ||
| 52 | #define EP_ATTR_ADAPTIVE 0x08 | ||
| 53 | #define EP_ATTR_SYNC 0x0c | ||
| 54 | |||
| 55 | /* cs endpoint attributes */ | ||
| 56 | #define EP_CS_ATTR_SAMPLE_RATE 0x01 | ||
| 57 | #define EP_CS_ATTR_PITCH_CONTROL 0x02 | ||
| 58 | #define EP_CS_ATTR_FILL_MAX 0x80 | ||
| 59 | |||
| 60 | /* Audio Class specific Request Codes */ | ||
| 61 | #define USB_AUDIO_SET_INTF 0x21 | ||
| 62 | #define USB_AUDIO_SET_ENDPOINT 0x22 | ||
| 63 | #define USB_AUDIO_GET_INTF 0xa1 | ||
| 64 | #define USB_AUDIO_GET_ENDPOINT 0xa2 | ||
| 65 | |||
| 66 | #define SET_ 0x00 | ||
| 67 | #define GET_ 0x80 | ||
| 68 | |||
| 69 | #define _CUR 0x1 | ||
| 70 | #define _MIN 0x2 | ||
| 71 | #define _MAX 0x3 | ||
| 72 | #define _RES 0x4 | ||
| 73 | #define _MEM 0x5 | ||
| 74 | |||
| 75 | #define SET_CUR (SET_ | _CUR) | ||
| 76 | #define GET_CUR (GET_ | _CUR) | ||
| 77 | #define SET_MIN (SET_ | _MIN) | ||
| 78 | #define GET_MIN (GET_ | _MIN) | ||
| 79 | #define SET_MAX (SET_ | _MAX) | ||
| 80 | #define GET_MAX (GET_ | _MAX) | ||
| 81 | #define SET_RES (SET_ | _RES) | ||
| 82 | #define GET_RES (GET_ | _RES) | ||
| 83 | #define SET_MEM (SET_ | _MEM) | ||
| 84 | #define GET_MEM (GET_ | _MEM) | ||
| 85 | |||
| 86 | #define GET_STAT 0xff | ||
| 87 | |||
| 88 | #define USB_AC_TERMINAL_UNDEFINED 0x100 | ||
| 89 | #define USB_AC_TERMINAL_STREAMING 0x101 | ||
| 90 | #define USB_AC_TERMINAL_VENDOR_SPEC 0x1FF | ||
| 91 | |||
| 92 | /* Terminal Control Selectors */ | ||
| 28 | /* 4.3.2 Class-Specific AC Interface Descriptor */ | 93 | /* 4.3.2 Class-Specific AC Interface Descriptor */ |
| 29 | struct usb_ac_header_descriptor { | 94 | struct usb_ac_header_descriptor { |
| 30 | __u8 bLength; /* 8+n */ | 95 | __u8 bLength; /* 8 + n */ |
| 31 | __u8 bDescriptorType; /* USB_DT_CS_INTERFACE */ | 96 | __u8 bDescriptorType; /* USB_DT_CS_INTERFACE */ |
| 32 | __u8 bDescriptorSubtype; /* USB_MS_HEADER */ | 97 | __u8 bDescriptorSubtype; /* USB_MS_HEADER */ |
| 33 | __le16 bcdADC; /* 0x0100 */ | 98 | __le16 bcdADC; /* 0x0100 */ |
| @@ -36,7 +101,7 @@ struct usb_ac_header_descriptor { | |||
| 36 | __u8 baInterfaceNr[]; /* [n] */ | 101 | __u8 baInterfaceNr[]; /* [n] */ |
| 37 | } __attribute__ ((packed)); | 102 | } __attribute__ ((packed)); |
| 38 | 103 | ||
| 39 | #define USB_DT_AC_HEADER_SIZE(n) (8+(n)) | 104 | #define USB_DT_AC_HEADER_SIZE(n) (8 + (n)) |
| 40 | 105 | ||
| 41 | /* As above, but more useful for defining your own descriptors: */ | 106 | /* As above, but more useful for defining your own descriptors: */ |
| 42 | #define DECLARE_USB_AC_HEADER_DESCRIPTOR(n) \ | 107 | #define DECLARE_USB_AC_HEADER_DESCRIPTOR(n) \ |
| @@ -50,4 +115,200 @@ struct usb_ac_header_descriptor_##n { \ | |||
| 50 | __u8 baInterfaceNr[n]; \ | 115 | __u8 baInterfaceNr[n]; \ |
| 51 | } __attribute__ ((packed)) | 116 | } __attribute__ ((packed)) |
| 52 | 117 | ||
| 118 | /* 4.3.2.1 Input Terminal Descriptor */ | ||
| 119 | struct usb_input_terminal_descriptor { | ||
| 120 | __u8 bLength; /* in bytes: 12 */ | ||
| 121 | __u8 bDescriptorType; /* CS_INTERFACE descriptor type */ | ||
| 122 | __u8 bDescriptorSubtype; /* INPUT_TERMINAL descriptor subtype */ | ||
| 123 | __u8 bTerminalID; /* Constant uniquely terminal ID */ | ||
| 124 | __le16 wTerminalType; /* USB Audio Terminal Types */ | ||
| 125 | __u8 bAssocTerminal; /* ID of the Output Terminal associated */ | ||
| 126 | __u8 bNrChannels; /* Number of logical output channels */ | ||
| 127 | __le16 wChannelConfig; | ||
| 128 | __u8 iChannelNames; | ||
| 129 | __u8 iTerminal; | ||
| 130 | } __attribute__ ((packed)); | ||
| 131 | |||
| 132 | #define USB_DT_AC_INPUT_TERMINAL_SIZE 12 | ||
| 133 | |||
| 134 | #define USB_AC_INPUT_TERMINAL_UNDEFINED 0x200 | ||
| 135 | #define USB_AC_INPUT_TERMINAL_MICROPHONE 0x201 | ||
| 136 | #define USB_AC_INPUT_TERMINAL_DESKTOP_MICROPHONE 0x202 | ||
| 137 | #define USB_AC_INPUT_TERMINAL_PERSONAL_MICROPHONE 0x203 | ||
| 138 | #define USB_AC_INPUT_TERMINAL_OMNI_DIR_MICROPHONE 0x204 | ||
| 139 | #define USB_AC_INPUT_TERMINAL_MICROPHONE_ARRAY 0x205 | ||
| 140 | #define USB_AC_INPUT_TERMINAL_PROC_MICROPHONE_ARRAY 0x206 | ||
| 141 | |||
| 142 | /* 4.3.2.2 Output Terminal Descriptor */ | ||
| 143 | struct usb_output_terminal_descriptor { | ||
| 144 | __u8 bLength; /* in bytes: 9 */ | ||
| 145 | __u8 bDescriptorType; /* CS_INTERFACE descriptor type */ | ||
| 146 | __u8 bDescriptorSubtype; /* OUTPUT_TERMINAL descriptor subtype */ | ||
| 147 | __u8 bTerminalID; /* Constant uniquely terminal ID */ | ||
| 148 | __le16 wTerminalType; /* USB Audio Terminal Types */ | ||
| 149 | __u8 bAssocTerminal; /* ID of the Input Terminal associated */ | ||
| 150 | __u8 bSourceID; /* ID of the connected Unit or Terminal*/ | ||
| 151 | __u8 iTerminal; | ||
| 152 | } __attribute__ ((packed)); | ||
| 153 | |||
| 154 | #define USB_DT_AC_OUTPUT_TERMINAL_SIZE 9 | ||
| 155 | |||
| 156 | #define USB_AC_OUTPUT_TERMINAL_UNDEFINED 0x300 | ||
| 157 | #define USB_AC_OUTPUT_TERMINAL_SPEAKER 0x301 | ||
| 158 | #define USB_AC_OUTPUT_TERMINAL_HEADPHONES 0x302 | ||
| 159 | #define USB_AC_OUTPUT_TERMINAL_HEAD_MOUNTED_DISPLAY_AUDIO 0x303 | ||
| 160 | #define USB_AC_OUTPUT_TERMINAL_DESKTOP_SPEAKER 0x304 | ||
| 161 | #define USB_AC_OUTPUT_TERMINAL_ROOM_SPEAKER 0x305 | ||
| 162 | #define USB_AC_OUTPUT_TERMINAL_COMMUNICATION_SPEAKER 0x306 | ||
| 163 | #define USB_AC_OUTPUT_TERMINAL_LOW_FREQ_EFFECTS_SPEAKER 0x307 | ||
| 164 | |||
| 165 | /* Set bControlSize = 2 as default setting */ | ||
| 166 | #define USB_DT_AC_FEATURE_UNIT_SIZE(ch) (7 + ((ch) + 1) * 2) | ||
| 167 | |||
| 168 | /* As above, but more useful for defining your own descriptors: */ | ||
| 169 | #define DECLARE_USB_AC_FEATURE_UNIT_DESCRIPTOR(ch) \ | ||
| 170 | struct usb_ac_feature_unit_descriptor_##ch { \ | ||
| 171 | __u8 bLength; \ | ||
| 172 | __u8 bDescriptorType; \ | ||
| 173 | __u8 bDescriptorSubtype; \ | ||
| 174 | __u8 bUnitID; \ | ||
| 175 | __u8 bSourceID; \ | ||
| 176 | __u8 bControlSize; \ | ||
| 177 | __le16 bmaControls[ch + 1]; \ | ||
| 178 | __u8 iFeature; \ | ||
| 179 | } __attribute__ ((packed)) | ||
| 180 | |||
| 181 | /* 4.5.2 Class-Specific AS Interface Descriptor */ | ||
| 182 | struct usb_as_header_descriptor { | ||
| 183 | __u8 bLength; /* in bytes: 7 */ | ||
| 184 | __u8 bDescriptorType; /* USB_DT_CS_INTERFACE */ | ||
| 185 | __u8 bDescriptorSubtype; /* AS_GENERAL */ | ||
| 186 | __u8 bTerminalLink; /* Terminal ID of connected Terminal */ | ||
| 187 | __u8 bDelay; /* Delay introduced by the data path */ | ||
| 188 | __le16 wFormatTag; /* The Audio Data Format */ | ||
| 189 | } __attribute__ ((packed)); | ||
| 190 | |||
| 191 | #define USB_DT_AS_HEADER_SIZE 7 | ||
| 192 | |||
| 193 | #define USB_AS_AUDIO_FORMAT_TYPE_I_UNDEFINED 0x0 | ||
| 194 | #define USB_AS_AUDIO_FORMAT_TYPE_I_PCM 0x1 | ||
| 195 | #define USB_AS_AUDIO_FORMAT_TYPE_I_PCM8 0x2 | ||
| 196 | #define USB_AS_AUDIO_FORMAT_TYPE_I_IEEE_FLOAT 0x3 | ||
| 197 | #define USB_AS_AUDIO_FORMAT_TYPE_I_ALAW 0x4 | ||
| 198 | #define USB_AS_AUDIO_FORMAT_TYPE_I_MULAW 0x5 | ||
| 199 | |||
| 200 | struct usb_as_format_type_i_continuous_descriptor { | ||
| 201 | __u8 bLength; /* in bytes: 8 + (ns * 3) */ | ||
| 202 | __u8 bDescriptorType; /* USB_DT_CS_INTERFACE */ | ||
| 203 | __u8 bDescriptorSubtype; /* FORMAT_TYPE */ | ||
| 204 | __u8 bFormatType; /* FORMAT_TYPE_1 */ | ||
| 205 | __u8 bNrChannels; /* physical channels in the stream */ | ||
| 206 | __u8 bSubframeSize; /* */ | ||
| 207 | __u8 bBitResolution; | ||
| 208 | __u8 bSamFreqType; | ||
| 209 | __u8 tLowerSamFreq[3]; | ||
| 210 | __u8 tUpperSamFreq[3]; | ||
| 211 | } __attribute__ ((packed)); | ||
| 212 | |||
| 213 | #define USB_AS_FORMAT_TYPE_I_CONTINUOUS_DESC_SIZE 14 | ||
| 214 | |||
| 215 | struct usb_as_formate_type_i_discrete_descriptor { | ||
| 216 | __u8 bLength; /* in bytes: 8 + (ns * 3) */ | ||
| 217 | __u8 bDescriptorType; /* USB_DT_CS_INTERFACE */ | ||
| 218 | __u8 bDescriptorSubtype; /* FORMAT_TYPE */ | ||
| 219 | __u8 bFormatType; /* FORMAT_TYPE_1 */ | ||
| 220 | __u8 bNrChannels; /* physical channels in the stream */ | ||
| 221 | __u8 bSubframeSize; /* */ | ||
| 222 | __u8 bBitResolution; | ||
| 223 | __u8 bSamFreqType; | ||
| 224 | __u8 tSamFreq[][3]; | ||
| 225 | } __attribute__ ((packed)); | ||
| 226 | |||
| 227 | #define DECLARE_USB_AS_FORMAT_TYPE_I_DISCRETE_DESC(n) \ | ||
| 228 | struct usb_as_formate_type_i_discrete_descriptor_##n { \ | ||
| 229 | __u8 bLength; \ | ||
| 230 | __u8 bDescriptorType; \ | ||
| 231 | __u8 bDescriptorSubtype; \ | ||
| 232 | __u8 bFormatType; \ | ||
| 233 | __u8 bNrChannels; \ | ||
| 234 | __u8 bSubframeSize; \ | ||
| 235 | __u8 bBitResolution; \ | ||
| 236 | __u8 bSamFreqType; \ | ||
| 237 | __u8 tSamFreq[n][3]; \ | ||
| 238 | } __attribute__ ((packed)) | ||
| 239 | |||
| 240 | #define USB_AS_FORMAT_TYPE_I_DISCRETE_DESC_SIZE(n) (8 + (n * 3)) | ||
| 241 | |||
| 242 | #define USB_AS_FORMAT_TYPE_UNDEFINED 0x0 | ||
| 243 | #define USB_AS_FORMAT_TYPE_I 0x1 | ||
| 244 | #define USB_AS_FORMAT_TYPE_II 0x2 | ||
| 245 | #define USB_AS_FORMAT_TYPE_III 0x3 | ||
| 246 | |||
| 247 | #define USB_AS_ENDPOINT_ASYNC (1 << 2) | ||
| 248 | #define USB_AS_ENDPOINT_ADAPTIVE (2 << 2) | ||
| 249 | #define USB_AS_ENDPOINT_SYNC (3 << 2) | ||
| 250 | |||
| 251 | struct usb_as_iso_endpoint_descriptor { | ||
| 252 | __u8 bLength; /* in bytes: 7 */ | ||
| 253 | __u8 bDescriptorType; /* USB_DT_CS_ENDPOINT */ | ||
| 254 | __u8 bDescriptorSubtype; /* EP_GENERAL */ | ||
| 255 | __u8 bmAttributes; | ||
| 256 | __u8 bLockDelayUnits; | ||
| 257 | __le16 wLockDelay; | ||
| 258 | }; | ||
| 259 | #define USB_AS_ISO_ENDPOINT_DESC_SIZE 7 | ||
| 260 | |||
| 261 | #define FU_CONTROL_UNDEFINED 0x00 | ||
| 262 | #define MUTE_CONTROL 0x01 | ||
| 263 | #define VOLUME_CONTROL 0x02 | ||
| 264 | #define BASS_CONTROL 0x03 | ||
| 265 | #define MID_CONTROL 0x04 | ||
| 266 | #define TREBLE_CONTROL 0x05 | ||
| 267 | #define GRAPHIC_EQUALIZER_CONTROL 0x06 | ||
| 268 | #define AUTOMATIC_GAIN_CONTROL 0x07 | ||
| 269 | #define DELAY_CONTROL 0x08 | ||
| 270 | #define BASS_BOOST_CONTROL 0x09 | ||
| 271 | #define LOUDNESS_CONTROL 0x0a | ||
| 272 | |||
| 273 | #define FU_MUTE (1 << (MUTE_CONTROL - 1)) | ||
| 274 | #define FU_VOLUME (1 << (VOLUME_CONTROL - 1)) | ||
| 275 | #define FU_BASS (1 << (BASS_CONTROL - 1)) | ||
| 276 | #define FU_MID (1 << (MID_CONTROL - 1)) | ||
| 277 | #define FU_TREBLE (1 << (TREBLE_CONTROL - 1)) | ||
| 278 | #define FU_GRAPHIC_EQ (1 << (GRAPHIC_EQUALIZER_CONTROL - 1)) | ||
| 279 | #define FU_AUTO_GAIN (1 << (AUTOMATIC_GAIN_CONTROL - 1)) | ||
| 280 | #define FU_DELAY (1 << (DELAY_CONTROL - 1)) | ||
| 281 | #define FU_BASS_BOOST (1 << (BASS_BOOST_CONTROL - 1)) | ||
| 282 | #define FU_LOUDNESS (1 << (LOUDNESS_CONTROL - 1)) | ||
| 283 | |||
| 284 | struct usb_audio_control { | ||
| 285 | struct list_head list; | ||
| 286 | const char *name; | ||
| 287 | u8 type; | ||
| 288 | int data[5]; | ||
| 289 | int (*set)(struct usb_audio_control *con, u8 cmd, int value); | ||
| 290 | int (*get)(struct usb_audio_control *con, u8 cmd); | ||
| 291 | }; | ||
| 292 | |||
| 293 | static inline int generic_set_cmd(struct usb_audio_control *con, u8 cmd, int value) | ||
| 294 | { | ||
| 295 | con->data[cmd] = value; | ||
| 296 | |||
| 297 | return 0; | ||
| 298 | } | ||
| 299 | |||
| 300 | static inline int generic_get_cmd(struct usb_audio_control *con, u8 cmd) | ||
| 301 | { | ||
| 302 | return con->data[cmd]; | ||
| 303 | } | ||
| 304 | |||
| 305 | struct usb_audio_control_selector { | ||
| 306 | struct list_head list; | ||
| 307 | struct list_head control; | ||
| 308 | u8 id; | ||
| 309 | const char *name; | ||
| 310 | u8 type; | ||
| 311 | struct usb_descriptor_header *desc; | ||
| 312 | }; | ||
| 313 | |||
| 53 | #endif /* __LINUX_USB_AUDIO_H */ | 314 | #endif /* __LINUX_USB_AUDIO_H */ |
diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h index b145119a90da..93223638f702 100644 --- a/include/linux/usb/ch9.h +++ b/include/linux/usb/ch9.h | |||
| @@ -191,6 +191,8 @@ struct usb_ctrlrequest { | |||
| 191 | #define USB_DT_WIRE_ADAPTER 0x21 | 191 | #define USB_DT_WIRE_ADAPTER 0x21 |
| 192 | #define USB_DT_RPIPE 0x22 | 192 | #define USB_DT_RPIPE 0x22 |
| 193 | #define USB_DT_CS_RADIO_CONTROL 0x23 | 193 | #define USB_DT_CS_RADIO_CONTROL 0x23 |
| 194 | /* From the USB 3.0 spec */ | ||
| 195 | #define USB_DT_SS_ENDPOINT_COMP 0x30 | ||
| 194 | 196 | ||
| 195 | /* Conventional codes for class-specific descriptors. The convention is | 197 | /* Conventional codes for class-specific descriptors. The convention is |
| 196 | * defined in the USB "Common Class" Spec (3.11). Individual class specs | 198 | * defined in the USB "Common Class" Spec (3.11). Individual class specs |
| @@ -535,6 +537,20 @@ static inline int usb_endpoint_is_isoc_out( | |||
| 535 | 537 | ||
| 536 | /*-------------------------------------------------------------------------*/ | 538 | /*-------------------------------------------------------------------------*/ |
| 537 | 539 | ||
| 540 | /* USB_DT_SS_ENDPOINT_COMP: SuperSpeed Endpoint Companion descriptor */ | ||
| 541 | struct usb_ss_ep_comp_descriptor { | ||
| 542 | __u8 bLength; | ||
| 543 | __u8 bDescriptorType; | ||
| 544 | |||
| 545 | __u8 bMaxBurst; | ||
| 546 | __u8 bmAttributes; | ||
| 547 | __u16 wBytesPerInterval; | ||
| 548 | } __attribute__ ((packed)); | ||
| 549 | |||
| 550 | #define USB_DT_SS_EP_COMP_SIZE 6 | ||
| 551 | |||
| 552 | /*-------------------------------------------------------------------------*/ | ||
| 553 | |||
| 538 | /* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */ | 554 | /* USB_DT_DEVICE_QUALIFIER: Device Qualifier descriptor */ |
| 539 | struct usb_qualifier_descriptor { | 555 | struct usb_qualifier_descriptor { |
| 540 | __u8 bLength; | 556 | __u8 bLength; |
| @@ -752,6 +768,7 @@ enum usb_device_speed { | |||
| 752 | USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ | 768 | USB_SPEED_LOW, USB_SPEED_FULL, /* usb 1.1 */ |
| 753 | USB_SPEED_HIGH, /* usb 2.0 */ | 769 | USB_SPEED_HIGH, /* usb 2.0 */ |
| 754 | USB_SPEED_VARIABLE, /* wireless (usb 2.5) */ | 770 | USB_SPEED_VARIABLE, /* wireless (usb 2.5) */ |
| 771 | USB_SPEED_SUPER, /* usb 3.0 */ | ||
| 755 | }; | 772 | }; |
| 756 | 773 | ||
| 757 | enum usb_device_state { | 774 | enum usb_device_state { |
diff --git a/include/linux/usb/composite.h b/include/linux/usb/composite.h index acd7b0f06c8a..4f6bb3d2160e 100644 --- a/include/linux/usb/composite.h +++ b/include/linux/usb/composite.h | |||
| @@ -124,6 +124,7 @@ struct usb_function { | |||
| 124 | void (*suspend)(struct usb_function *); | 124 | void (*suspend)(struct usb_function *); |
| 125 | void (*resume)(struct usb_function *); | 125 | void (*resume)(struct usb_function *); |
| 126 | 126 | ||
| 127 | /* private: */ | ||
| 127 | /* internals */ | 128 | /* internals */ |
| 128 | struct list_head list; | 129 | struct list_head list; |
| 129 | }; | 130 | }; |
| @@ -219,6 +220,7 @@ struct usb_configuration { | |||
| 219 | 220 | ||
| 220 | struct usb_composite_dev *cdev; | 221 | struct usb_composite_dev *cdev; |
| 221 | 222 | ||
| 223 | /* private: */ | ||
| 222 | /* internals */ | 224 | /* internals */ |
| 223 | struct list_head list; | 225 | struct list_head list; |
| 224 | struct list_head functions; | 226 | struct list_head functions; |
| @@ -321,6 +323,7 @@ struct usb_composite_dev { | |||
| 321 | 323 | ||
| 322 | struct usb_configuration *config; | 324 | struct usb_configuration *config; |
| 323 | 325 | ||
| 326 | /* private: */ | ||
| 324 | /* internals */ | 327 | /* internals */ |
| 325 | struct usb_device_descriptor desc; | 328 | struct usb_device_descriptor desc; |
| 326 | struct list_head configs; | 329 | struct list_head configs; |
diff --git a/include/linux/usb/langwell_otg.h b/include/linux/usb/langwell_otg.h new file mode 100644 index 000000000000..e115ae6df1da --- /dev/null +++ b/include/linux/usb/langwell_otg.h | |||
| @@ -0,0 +1,177 @@ | |||
| 1 | /* | ||
| 2 | * Intel Langwell USB OTG transceiver driver | ||
| 3 | * Copyright (C) 2008, Intel Corporation. | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify it | ||
| 6 | * under the terms and conditions of the GNU General Public License, | ||
| 7 | * version 2, as published by the Free Software Foundation. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 12 | * more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License along with | ||
| 15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
| 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 17 | * | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef __LANGWELL_OTG_H__ | ||
| 21 | #define __LANGWELL_OTG_H__ | ||
| 22 | |||
| 23 | /* notify transceiver driver about OTG events */ | ||
| 24 | extern void langwell_update_transceiver(void); | ||
| 25 | /* HCD register bus driver */ | ||
| 26 | extern int langwell_register_host(struct pci_driver *host_driver); | ||
| 27 | /* HCD unregister bus driver */ | ||
| 28 | extern void langwell_unregister_host(struct pci_driver *host_driver); | ||
| 29 | /* DCD register bus driver */ | ||
| 30 | extern int langwell_register_peripheral(struct pci_driver *client_driver); | ||
| 31 | /* DCD unregister bus driver */ | ||
| 32 | extern void langwell_unregister_peripheral(struct pci_driver *client_driver); | ||
| 33 | /* No silent failure, output warning message */ | ||
| 34 | extern void langwell_otg_nsf_msg(unsigned long message); | ||
| 35 | |||
| 36 | #define CI_USBCMD 0x30 | ||
| 37 | # define USBCMD_RST BIT(1) | ||
| 38 | # define USBCMD_RS BIT(0) | ||
| 39 | #define CI_USBSTS 0x34 | ||
| 40 | # define USBSTS_SLI BIT(8) | ||
| 41 | # define USBSTS_URI BIT(6) | ||
| 42 | # define USBSTS_PCI BIT(2) | ||
| 43 | #define CI_PORTSC1 0x74 | ||
| 44 | # define PORTSC_PP BIT(12) | ||
| 45 | # define PORTSC_LS (BIT(11) | BIT(10)) | ||
| 46 | # define PORTSC_SUSP BIT(7) | ||
| 47 | # define PORTSC_CCS BIT(0) | ||
| 48 | #define CI_HOSTPC1 0xb4 | ||
| 49 | # define HOSTPC1_PHCD BIT(22) | ||
| 50 | #define CI_OTGSC 0xf4 | ||
| 51 | # define OTGSC_DPIE BIT(30) | ||
| 52 | # define OTGSC_1MSE BIT(29) | ||
| 53 | # define OTGSC_BSEIE BIT(28) | ||
| 54 | # define OTGSC_BSVIE BIT(27) | ||
| 55 | # define OTGSC_ASVIE BIT(26) | ||
| 56 | # define OTGSC_AVVIE BIT(25) | ||
| 57 | # define OTGSC_IDIE BIT(24) | ||
| 58 | # define OTGSC_DPIS BIT(22) | ||
| 59 | # define OTGSC_1MSS BIT(21) | ||
| 60 | # define OTGSC_BSEIS BIT(20) | ||
| 61 | # define OTGSC_BSVIS BIT(19) | ||
| 62 | # define OTGSC_ASVIS BIT(18) | ||
| 63 | # define OTGSC_AVVIS BIT(17) | ||
| 64 | # define OTGSC_IDIS BIT(16) | ||
| 65 | # define OTGSC_DPS BIT(14) | ||
| 66 | # define OTGSC_1MST BIT(13) | ||
| 67 | # define OTGSC_BSE BIT(12) | ||
| 68 | # define OTGSC_BSV BIT(11) | ||
| 69 | # define OTGSC_ASV BIT(10) | ||
| 70 | # define OTGSC_AVV BIT(9) | ||
| 71 | # define OTGSC_ID BIT(8) | ||
| 72 | # define OTGSC_HABA BIT(7) | ||
| 73 | # define OTGSC_HADP BIT(6) | ||
| 74 | # define OTGSC_IDPU BIT(5) | ||
| 75 | # define OTGSC_DP BIT(4) | ||
| 76 | # define OTGSC_OT BIT(3) | ||
| 77 | # define OTGSC_HAAR BIT(2) | ||
| 78 | # define OTGSC_VC BIT(1) | ||
| 79 | # define OTGSC_VD BIT(0) | ||
| 80 | # define OTGSC_INTEN_MASK (0x7f << 24) | ||
| 81 | # define OTGSC_INTSTS_MASK (0x7f << 16) | ||
| 82 | #define CI_USBMODE 0xf8 | ||
| 83 | # define USBMODE_CM (BIT(1) | BIT(0)) | ||
| 84 | # define USBMODE_IDLE 0 | ||
| 85 | # define USBMODE_DEVICE 0x2 | ||
| 86 | # define USBMODE_HOST 0x3 | ||
| 87 | |||
| 88 | #define INTR_DUMMY_MASK (USBSTS_SLI | USBSTS_URI | USBSTS_PCI) | ||
| 89 | |||
| 90 | struct otg_hsm { | ||
| 91 | /* Input */ | ||
| 92 | int a_bus_resume; | ||
| 93 | int a_bus_suspend; | ||
| 94 | int a_conn; | ||
| 95 | int a_sess_vld; | ||
| 96 | int a_srp_det; | ||
| 97 | int a_vbus_vld; | ||
| 98 | int b_bus_resume; | ||
| 99 | int b_bus_suspend; | ||
| 100 | int b_conn; | ||
| 101 | int b_se0_srp; | ||
| 102 | int b_sess_end; | ||
| 103 | int b_sess_vld; | ||
| 104 | int id; | ||
| 105 | |||
| 106 | /* Internal variables */ | ||
| 107 | int a_set_b_hnp_en; | ||
| 108 | int b_srp_done; | ||
| 109 | int b_hnp_enable; | ||
| 110 | |||
| 111 | /* Timeout indicator for timers */ | ||
| 112 | int a_wait_vrise_tmout; | ||
| 113 | int a_wait_bcon_tmout; | ||
| 114 | int a_aidl_bdis_tmout; | ||
| 115 | int b_ase0_brst_tmout; | ||
| 116 | int b_bus_suspend_tmout; | ||
| 117 | int b_srp_res_tmout; | ||
| 118 | |||
| 119 | /* Informative variables */ | ||
| 120 | int a_bus_drop; | ||
| 121 | int a_bus_req; | ||
| 122 | int a_clr_err; | ||
| 123 | int a_suspend_req; | ||
| 124 | int b_bus_req; | ||
| 125 | |||
| 126 | /* Output */ | ||
| 127 | int drv_vbus; | ||
| 128 | int loc_conn; | ||
| 129 | int loc_sof; | ||
| 130 | |||
| 131 | /* Others */ | ||
| 132 | int b_bus_suspend_vld; | ||
| 133 | }; | ||
| 134 | |||
| 135 | #define TA_WAIT_VRISE 100 | ||
| 136 | #define TA_WAIT_BCON 30000 | ||
| 137 | #define TA_AIDL_BDIS 15000 | ||
| 138 | #define TB_ASE0_BRST 5000 | ||
| 139 | #define TB_SE0_SRP 2 | ||
| 140 | #define TB_SRP_RES 100 | ||
| 141 | #define TB_BUS_SUSPEND 500 | ||
| 142 | |||
| 143 | struct langwell_otg_timer { | ||
| 144 | unsigned long expires; /* Number of count increase to timeout */ | ||
| 145 | unsigned long count; /* Tick counter */ | ||
| 146 | void (*function)(unsigned long); /* Timeout function */ | ||
| 147 | unsigned long data; /* Data passed to function */ | ||
| 148 | struct list_head list; | ||
| 149 | }; | ||
| 150 | |||
| 151 | struct langwell_otg { | ||
| 152 | struct otg_transceiver otg; | ||
| 153 | struct otg_hsm hsm; | ||
| 154 | void __iomem *regs; | ||
| 155 | unsigned region; | ||
| 156 | struct pci_driver *host_ops; | ||
| 157 | struct pci_driver *client_ops; | ||
| 158 | struct pci_dev *pdev; | ||
| 159 | struct work_struct work; | ||
| 160 | struct workqueue_struct *qwork; | ||
| 161 | spinlock_t lock; | ||
| 162 | spinlock_t wq_lock; | ||
| 163 | }; | ||
| 164 | |||
| 165 | static inline struct langwell_otg *otg_to_langwell(struct otg_transceiver *otg) | ||
| 166 | { | ||
| 167 | return container_of(otg, struct langwell_otg, otg); | ||
| 168 | } | ||
| 169 | |||
| 170 | #ifdef DEBUG | ||
| 171 | #define otg_dbg(fmt, args...) \ | ||
| 172 | printk(KERN_DEBUG fmt , ## args) | ||
| 173 | #else | ||
| 174 | #define otg_dbg(fmt, args...) \ | ||
| 175 | do { } while (0) | ||
| 176 | #endif /* DEBUG */ | ||
| 177 | #endif /* __LANGWELL_OTG_H__ */ | ||
diff --git a/include/linux/usb/langwell_udc.h b/include/linux/usb/langwell_udc.h new file mode 100644 index 000000000000..c949178a6530 --- /dev/null +++ b/include/linux/usb/langwell_udc.h | |||
| @@ -0,0 +1,310 @@ | |||
| 1 | /* | ||
| 2 | * Intel Langwell USB Device Controller driver | ||
| 3 | * Copyright (C) 2008-2009, Intel Corporation. | ||
| 4 | * | ||
| 5 | * This program is free software; you can redistribute it and/or modify it | ||
| 6 | * under the terms and conditions of the GNU General Public License, | ||
| 7 | * version 2, as published by the Free Software Foundation. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope it will be useful, but WITHOUT | ||
| 10 | * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or | ||
| 11 | * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for | ||
| 12 | * more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License along with | ||
| 15 | * this program; if not, write to the Free Software Foundation, Inc., | ||
| 16 | * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 17 | * | ||
| 18 | */ | ||
| 19 | |||
| 20 | #ifndef __LANGWELL_UDC_H | ||
| 21 | #define __LANGWELL_UDC_H | ||
| 22 | |||
| 23 | |||
| 24 | /* MACRO defines */ | ||
| 25 | #define CAP_REG_OFFSET 0x0 | ||
| 26 | #define OP_REG_OFFSET 0x28 | ||
| 27 | |||
| 28 | #define DMA_ADDR_INVALID (~(dma_addr_t)0) | ||
| 29 | |||
| 30 | #define DQH_ALIGNMENT 2048 | ||
| 31 | #define DTD_ALIGNMENT 64 | ||
| 32 | #define DMA_BOUNDARY 4096 | ||
| 33 | |||
| 34 | #define EP0_MAX_PKT_SIZE 64 | ||
| 35 | #define EP_DIR_IN 1 | ||
| 36 | #define EP_DIR_OUT 0 | ||
| 37 | |||
| 38 | #define FLUSH_TIMEOUT 1000 | ||
| 39 | #define RESET_TIMEOUT 1000 | ||
| 40 | #define SETUPSTAT_TIMEOUT 100 | ||
| 41 | #define PRIME_TIMEOUT 100 | ||
| 42 | |||
| 43 | |||
| 44 | /* device memory space registers */ | ||
| 45 | |||
| 46 | /* Capability Registers, BAR0 + CAP_REG_OFFSET */ | ||
| 47 | struct langwell_cap_regs { | ||
| 48 | /* offset: 0x0 */ | ||
| 49 | u8 caplength; /* offset of Operational Register */ | ||
| 50 | u8 _reserved3; | ||
| 51 | u16 hciversion; /* H: BCD encoding of host version */ | ||
| 52 | u32 hcsparams; /* H: host port steering logic capability */ | ||
| 53 | u32 hccparams; /* H: host multiple mode control capability */ | ||
| 54 | #define HCC_LEN BIT(17) /* Link power management (LPM) capability */ | ||
| 55 | u8 _reserved4[0x20-0xc]; | ||
| 56 | /* offset: 0x20 */ | ||
| 57 | u16 dciversion; /* BCD encoding of device version */ | ||
| 58 | u8 _reserved5[0x24-0x22]; | ||
| 59 | u32 dccparams; /* overall device controller capability */ | ||
| 60 | #define HOSTCAP BIT(8) /* host capable */ | ||
| 61 | #define DEVCAP BIT(7) /* device capable */ | ||
| 62 | #define DEN(d) \ | ||
| 63 | (((d)>>0)&0x1f) /* bits 4:0, device endpoint number */ | ||
| 64 | } __attribute__ ((packed)); | ||
| 65 | |||
| 66 | |||
| 67 | /* Operational Registers, BAR0 + OP_REG_OFFSET */ | ||
| 68 | struct langwell_op_regs { | ||
| 69 | /* offset: 0x28 */ | ||
| 70 | u32 extsts; | ||
| 71 | #define EXTS_TI1 BIT(4) /* general purpose timer interrupt 1 */ | ||
| 72 | #define EXTS_TI1TI0 BIT(3) /* general purpose timer interrupt 0 */ | ||
| 73 | #define EXTS_TI1UPI BIT(2) /* USB host periodic interrupt */ | ||
| 74 | #define EXTS_TI1UAI BIT(1) /* USB host asynchronous interrupt */ | ||
| 75 | #define EXTS_TI1NAKI BIT(0) /* NAK interrupt */ | ||
| 76 | u32 extintr; | ||
| 77 | #define EXTI_TIE1 BIT(4) /* general purpose timer interrupt enable 1 */ | ||
| 78 | #define EXTI_TIE0 BIT(3) /* general purpose timer interrupt enable 0 */ | ||
| 79 | #define EXTI_UPIE BIT(2) /* USB host periodic interrupt enable */ | ||
| 80 | #define EXTI_UAIE BIT(1) /* USB host asynchronous interrupt enable */ | ||
| 81 | #define EXTI_NAKE BIT(0) /* NAK interrupt enable */ | ||
| 82 | /* offset: 0x30 */ | ||
| 83 | u32 usbcmd; | ||
| 84 | #define CMD_HIRD(u) \ | ||
| 85 | (((u)>>24)&0xf) /* bits 27:24, host init resume duration */ | ||
| 86 | #define CMD_ITC(u) \ | ||
| 87 | (((u)>>16)&0xff) /* bits 23:16, interrupt threshold control */ | ||
| 88 | #define CMD_PPE BIT(15) /* per-port change events enable */ | ||
| 89 | #define CMD_ATDTW BIT(14) /* add dTD tripwire */ | ||
| 90 | #define CMD_SUTW BIT(13) /* setup tripwire */ | ||
| 91 | #define CMD_ASPE BIT(11) /* asynchronous schedule park mode enable */ | ||
| 92 | #define CMD_FS2 BIT(10) /* frame list size */ | ||
| 93 | #define CMD_ASP1 BIT(9) /* asynchronous schedule park mode count */ | ||
| 94 | #define CMD_ASP0 BIT(8) | ||
| 95 | #define CMD_LR BIT(7) /* light host/device controller reset */ | ||
| 96 | #define CMD_IAA BIT(6) /* interrupt on async advance doorbell */ | ||
| 97 | #define CMD_ASE BIT(5) /* asynchronous schedule enable */ | ||
| 98 | #define CMD_PSE BIT(4) /* periodic schedule enable */ | ||
| 99 | #define CMD_FS1 BIT(3) | ||
| 100 | #define CMD_FS0 BIT(2) | ||
| 101 | #define CMD_RST BIT(1) /* controller reset */ | ||
| 102 | #define CMD_RUNSTOP BIT(0) /* run/stop */ | ||
| 103 | u32 usbsts; | ||
| 104 | #define STS_PPCI(u) \ | ||
| 105 | (((u)>>16)&0xffff) /* bits 31:16, port-n change detect */ | ||
| 106 | #define STS_AS BIT(15) /* asynchronous schedule status */ | ||
| 107 | #define STS_PS BIT(14) /* periodic schedule status */ | ||
| 108 | #define STS_RCL BIT(13) /* reclamation */ | ||
| 109 | #define STS_HCH BIT(12) /* HC halted */ | ||
| 110 | #define STS_ULPII BIT(10) /* ULPI interrupt */ | ||
| 111 | #define STS_SLI BIT(8) /* DC suspend */ | ||
| 112 | #define STS_SRI BIT(7) /* SOF received */ | ||
| 113 | #define STS_URI BIT(6) /* USB reset received */ | ||
| 114 | #define STS_AAI BIT(5) /* interrupt on async advance */ | ||
| 115 | #define STS_SEI BIT(4) /* system error */ | ||
| 116 | #define STS_FRI BIT(3) /* frame list rollover */ | ||
| 117 | #define STS_PCI BIT(2) /* port change detect */ | ||
| 118 | #define STS_UEI BIT(1) /* USB error interrupt */ | ||
| 119 | #define STS_UI BIT(0) /* USB interrupt */ | ||
| 120 | u32 usbintr; | ||
| 121 | /* bits 31:16, per-port interrupt enable */ | ||
| 122 | #define INTR_PPCE(u) (((u)>>16)&0xffff) | ||
| 123 | #define INTR_ULPIE BIT(10) /* ULPI enable */ | ||
| 124 | #define INTR_SLE BIT(8) /* DC sleep/suspend enable */ | ||
| 125 | #define INTR_SRE BIT(7) /* SOF received enable */ | ||
| 126 | #define INTR_URE BIT(6) /* USB reset enable */ | ||
| 127 | #define INTR_AAE BIT(5) /* interrupt on async advance enable */ | ||
| 128 | #define INTR_SEE BIT(4) /* system error enable */ | ||
| 129 | #define INTR_FRE BIT(3) /* frame list rollover enable */ | ||
| 130 | #define INTR_PCE BIT(2) /* port change detect enable */ | ||
| 131 | #define INTR_UEE BIT(1) /* USB error interrupt enable */ | ||
| 132 | #define INTR_UE BIT(0) /* USB interrupt enable */ | ||
| 133 | u32 frindex; /* frame index */ | ||
| 134 | #define FRINDEX_MASK (0x3fff << 0) | ||
| 135 | u32 ctrldssegment; /* not used */ | ||
| 136 | u32 deviceaddr; | ||
| 137 | #define USBADR_SHIFT 25 | ||
| 138 | #define USBADR(d) \ | ||
| 139 | (((d)>>25)&0x7f) /* bits 31:25, device address */ | ||
| 140 | #define USBADR_MASK (0x7f << 25) | ||
| 141 | #define USBADRA BIT(24) /* device address advance */ | ||
| 142 | u32 endpointlistaddr;/* endpoint list top memory address */ | ||
| 143 | /* bits 31:11, endpoint list pointer */ | ||
| 144 | #define EPBASE(d) (((d)>>11)&0x1fffff) | ||
| 145 | #define ENDPOINTLISTADDR_MASK (0x1fffff << 11) | ||
| 146 | u32 ttctrl; /* H: TT operatin, not used */ | ||
| 147 | /* offset: 0x50 */ | ||
| 148 | u32 burstsize; /* burst size of data movement */ | ||
| 149 | #define TXPBURST(b) \ | ||
| 150 | (((b)>>8)&0xff) /* bits 15:8, TX burst length */ | ||
| 151 | #define RXPBURST(b) \ | ||
| 152 | (((b)>>0)&0xff) /* bits 7:0, RX burst length */ | ||
| 153 | u32 txfilltuning; /* TX tuning */ | ||
| 154 | u32 txttfilltuning; /* H: TX TT tuning */ | ||
| 155 | u32 ic_usb; /* control the IC_USB FS/LS transceiver */ | ||
| 156 | /* offset: 0x60 */ | ||
| 157 | u32 ulpi_viewport; /* indirect access to ULPI PHY */ | ||
| 158 | #define ULPIWU BIT(31) /* ULPI wakeup */ | ||
| 159 | #define ULPIRUN BIT(30) /* ULPI read/write run */ | ||
| 160 | #define ULPIRW BIT(29) /* ULPI read/write control */ | ||
| 161 | #define ULPISS BIT(27) /* ULPI sync state */ | ||
| 162 | #define ULPIPORT(u) \ | ||
| 163 | (((u)>>24)&7) /* bits 26:24, ULPI port number */ | ||
| 164 | #define ULPIADDR(u) \ | ||
| 165 | (((u)>>16)&0xff) /* bits 23:16, ULPI data address */ | ||
| 166 | #define ULPIDATRD(u) \ | ||
| 167 | (((u)>>8)&0xff) /* bits 15:8, ULPI data read */ | ||
| 168 | #define ULPIDATWR(u) \ | ||
| 169 | (((u)>>0)&0xff) /* bits 7:0, ULPI date write */ | ||
| 170 | u8 _reserved6[0x70-0x64]; | ||
| 171 | /* offset: 0x70 */ | ||
| 172 | u32 configflag; /* H: not used */ | ||
| 173 | u32 portsc1; /* port status */ | ||
| 174 | #define DA(p) \ | ||
| 175 | (((p)>>25)&0x7f) /* bits 31:25, device address */ | ||
| 176 | #define PORTS_SSTS (BIT(24) | BIT(23)) /* suspend status */ | ||
| 177 | #define PORTS_WKOC BIT(22) /* wake on over-current enable */ | ||
| 178 | #define PORTS_WKDS BIT(21) /* wake on disconnect enable */ | ||
| 179 | #define PORTS_WKCN BIT(20) /* wake on connect enable */ | ||
| 180 | #define PORTS_PTC(p) (((p)>>16)&0xf) /* bits 19:16, port test control */ | ||
| 181 | #define PORTS_PIC (BIT(15) | BIT(14)) /* port indicator control */ | ||
| 182 | #define PORTS_PO BIT(13) /* port owner */ | ||
| 183 | #define PORTS_PP BIT(12) /* port power */ | ||
| 184 | #define PORTS_LS (BIT(11) | BIT(10)) /* line status */ | ||
| 185 | #define PORTS_SLP BIT(9) /* suspend using L1 */ | ||
| 186 | #define PORTS_PR BIT(8) /* port reset */ | ||
| 187 | #define PORTS_SUSP BIT(7) /* suspend */ | ||
| 188 | #define PORTS_FPR BIT(6) /* force port resume */ | ||
| 189 | #define PORTS_OCC BIT(5) /* over-current change */ | ||
| 190 | #define PORTS_OCA BIT(4) /* over-current active */ | ||
| 191 | #define PORTS_PEC BIT(3) /* port enable/disable change */ | ||
| 192 | #define PORTS_PE BIT(2) /* port enable/disable */ | ||
| 193 | #define PORTS_CSC BIT(1) /* connect status change */ | ||
| 194 | #define PORTS_CCS BIT(0) /* current connect status */ | ||
| 195 | u8 _reserved7[0xb4-0x78]; | ||
| 196 | /* offset: 0xb4 */ | ||
| 197 | u32 devlc; /* control LPM and each USB port behavior */ | ||
| 198 | /* bits 31:29, parallel transceiver select */ | ||
| 199 | #define LPM_PTS(d) (((d)>>29)&7) | ||
| 200 | #define LPM_STS BIT(28) /* serial transceiver select */ | ||
| 201 | #define LPM_PTW BIT(27) /* parallel transceiver width */ | ||
| 202 | #define LPM_PSPD(d) (((d)>>25)&3) /* bits 26:25, port speed */ | ||
| 203 | #define LPM_PSPD_MASK (BIT(26) | BIT(25)) | ||
| 204 | #define LPM_SPEED_FULL 0 | ||
| 205 | #define LPM_SPEED_LOW 1 | ||
| 206 | #define LPM_SPEED_HIGH 2 | ||
| 207 | #define LPM_SRT BIT(24) /* shorten reset time */ | ||
| 208 | #define LPM_PFSC BIT(23) /* port force full speed connect */ | ||
| 209 | #define LPM_PHCD BIT(22) /* PHY low power suspend clock disable */ | ||
| 210 | #define LPM_STL BIT(16) /* STALL reply to LPM token */ | ||
| 211 | #define LPM_BA(d) \ | ||
| 212 | (((d)>>1)&0x7ff) /* bits 11:1, BmAttributes */ | ||
| 213 | #define LPM_NYT_ACK BIT(0) /* NYET/ACK reply to LPM token */ | ||
| 214 | u8 _reserved8[0xf4-0xb8]; | ||
| 215 | /* offset: 0xf4 */ | ||
| 216 | u32 otgsc; /* On-The-Go status and control */ | ||
| 217 | #define OTGSC_DPIE BIT(30) /* data pulse interrupt enable */ | ||
| 218 | #define OTGSC_MSE BIT(29) /* 1 ms timer interrupt enable */ | ||
| 219 | #define OTGSC_BSEIE BIT(28) /* B session end interrupt enable */ | ||
| 220 | #define OTGSC_BSVIE BIT(27) /* B session valid interrupt enable */ | ||
| 221 | #define OTGSC_ASVIE BIT(26) /* A session valid interrupt enable */ | ||
| 222 | #define OTGSC_AVVIE BIT(25) /* A VBUS valid interrupt enable */ | ||
| 223 | #define OTGSC_IDIE BIT(24) /* USB ID interrupt enable */ | ||
| 224 | #define OTGSC_DPIS BIT(22) /* data pulse interrupt status */ | ||
| 225 | #define OTGSC_MSS BIT(21) /* 1 ms timer interrupt status */ | ||
| 226 | #define OTGSC_BSEIS BIT(20) /* B session end interrupt status */ | ||
| 227 | #define OTGSC_BSVIS BIT(19) /* B session valid interrupt status */ | ||
| 228 | #define OTGSC_ASVIS BIT(18) /* A session valid interrupt status */ | ||
| 229 | #define OTGSC_AVVIS BIT(17) /* A VBUS valid interrupt status */ | ||
| 230 | #define OTGSC_IDIS BIT(16) /* USB ID interrupt status */ | ||
| 231 | #define OTGSC_DPS BIT(14) /* data bus pulsing status */ | ||
| 232 | #define OTGSC_MST BIT(13) /* 1 ms timer toggle */ | ||
| 233 | #define OTGSC_BSE BIT(12) /* B session end */ | ||
| 234 | #define OTGSC_BSV BIT(11) /* B session valid */ | ||
| 235 | #define OTGSC_ASV BIT(10) /* A session valid */ | ||
| 236 | #define OTGSC_AVV BIT(9) /* A VBUS valid */ | ||
| 237 | #define OTGSC_USBID BIT(8) /* USB ID */ | ||
| 238 | #define OTGSC_HABA BIT(7) /* hw assist B-disconnect to A-connect */ | ||
| 239 | #define OTGSC_HADP BIT(6) /* hw assist data pulse */ | ||
| 240 | #define OTGSC_IDPU BIT(5) /* ID pullup */ | ||
| 241 | #define OTGSC_DP BIT(4) /* data pulsing */ | ||
| 242 | #define OTGSC_OT BIT(3) /* OTG termination */ | ||
| 243 | #define OTGSC_HAAR BIT(2) /* hw assist auto reset */ | ||
| 244 | #define OTGSC_VC BIT(1) /* VBUS charge */ | ||
| 245 | #define OTGSC_VD BIT(0) /* VBUS discharge */ | ||
| 246 | u32 usbmode; | ||
| 247 | #define MODE_VBPS BIT(5) /* R/W VBUS power select */ | ||
| 248 | #define MODE_SDIS BIT(4) /* R/W stream disable mode */ | ||
| 249 | #define MODE_SLOM BIT(3) /* R/W setup lockout mode */ | ||
| 250 | #define MODE_ENSE BIT(2) /* endian select */ | ||
| 251 | #define MODE_CM(u) (((u)>>0)&3) /* bits 1:0, controller mode */ | ||
| 252 | #define MODE_IDLE 0 | ||
| 253 | #define MODE_DEVICE 2 | ||
| 254 | #define MODE_HOST 3 | ||
| 255 | u8 _reserved9[0x100-0xfc]; | ||
| 256 | /* offset: 0x100 */ | ||
| 257 | u32 endptnak; | ||
| 258 | #define EPTN(e) \ | ||
| 259 | (((e)>>16)&0xffff) /* bits 31:16, TX endpoint NAK */ | ||
| 260 | #define EPRN(e) \ | ||
| 261 | (((e)>>0)&0xffff) /* bits 15:0, RX endpoint NAK */ | ||
| 262 | u32 endptnaken; | ||
| 263 | #define EPTNE(e) \ | ||
| 264 | (((e)>>16)&0xffff) /* bits 31:16, TX endpoint NAK enable */ | ||
| 265 | #define EPRNE(e) \ | ||
| 266 | (((e)>>0)&0xffff) /* bits 15:0, RX endpoint NAK enable */ | ||
| 267 | u32 endptsetupstat; | ||
| 268 | #define SETUPSTAT_MASK (0xffff << 0) /* bits 15:0 */ | ||
| 269 | #define EP0SETUPSTAT_MASK 1 | ||
| 270 | u32 endptprime; | ||
| 271 | /* bits 31:16, prime endpoint transmit buffer */ | ||
| 272 | #define PETB(e) (((e)>>16)&0xffff) | ||
| 273 | /* bits 15:0, prime endpoint receive buffer */ | ||
| 274 | #define PERB(e) (((e)>>0)&0xffff) | ||
| 275 | /* offset: 0x110 */ | ||
| 276 | u32 endptflush; | ||
| 277 | /* bits 31:16, flush endpoint transmit buffer */ | ||
| 278 | #define FETB(e) (((e)>>16)&0xffff) | ||
| 279 | /* bits 15:0, flush endpoint receive buffer */ | ||
| 280 | #define FERB(e) (((e)>>0)&0xffff) | ||
| 281 | u32 endptstat; | ||
| 282 | /* bits 31:16, endpoint transmit buffer ready */ | ||
| 283 | #define ETBR(e) (((e)>>16)&0xffff) | ||
| 284 | /* bits 15:0, endpoint receive buffer ready */ | ||
| 285 | #define ERBR(e) (((e)>>0)&0xffff) | ||
| 286 | u32 endptcomplete; | ||
| 287 | /* bits 31:16, endpoint transmit complete event */ | ||
| 288 | #define ETCE(e) (((e)>>16)&0xffff) | ||
| 289 | /* bits 15:0, endpoint receive complete event */ | ||
| 290 | #define ERCE(e) (((e)>>0)&0xffff) | ||
| 291 | /* offset: 0x11c */ | ||
| 292 | u32 endptctrl[16]; | ||
| 293 | #define EPCTRL_TXE BIT(23) /* TX endpoint enable */ | ||
| 294 | #define EPCTRL_TXR BIT(22) /* TX data toggle reset */ | ||
| 295 | #define EPCTRL_TXI BIT(21) /* TX data toggle inhibit */ | ||
| 296 | #define EPCTRL_TXT(e) (((e)>>18)&3) /* bits 19:18, TX endpoint type */ | ||
| 297 | #define EPCTRL_TXT_SHIFT 18 | ||
| 298 | #define EPCTRL_TXD BIT(17) /* TX endpoint data source */ | ||
| 299 | #define EPCTRL_TXS BIT(16) /* TX endpoint STALL */ | ||
| 300 | #define EPCTRL_RXE BIT(7) /* RX endpoint enable */ | ||
| 301 | #define EPCTRL_RXR BIT(6) /* RX data toggle reset */ | ||
| 302 | #define EPCTRL_RXI BIT(5) /* RX data toggle inhibit */ | ||
| 303 | #define EPCTRL_RXT(e) (((e)>>2)&3) /* bits 3:2, RX endpoint type */ | ||
| 304 | #define EPCTRL_RXT_SHIFT 2 /* bits 19:18, TX endpoint type */ | ||
| 305 | #define EPCTRL_RXD BIT(1) /* RX endpoint data sink */ | ||
| 306 | #define EPCTRL_RXS BIT(0) /* RX endpoint STALL */ | ||
| 307 | } __attribute__ ((packed)); | ||
| 308 | |||
| 309 | #endif /* __LANGWELL_UDC_H */ | ||
| 310 | |||
diff --git a/include/linux/usb/otg.h b/include/linux/usb/otg.h index 1aaa826396a1..2443c0e7a80c 100644 --- a/include/linux/usb/otg.h +++ b/include/linux/usb/otg.h | |||
| @@ -80,10 +80,10 @@ struct otg_transceiver { | |||
| 80 | 80 | ||
| 81 | /* for board-specific init logic */ | 81 | /* for board-specific init logic */ |
| 82 | extern int otg_set_transceiver(struct otg_transceiver *); | 82 | extern int otg_set_transceiver(struct otg_transceiver *); |
| 83 | #ifdef CONFIG_NOP_USB_XCEIV | 83 | |
| 84 | /* sometimes transceivers are accessed only through e.g. ULPI */ | ||
| 84 | extern void usb_nop_xceiv_register(void); | 85 | extern void usb_nop_xceiv_register(void); |
| 85 | extern void usb_nop_xceiv_unregister(void); | 86 | extern void usb_nop_xceiv_unregister(void); |
| 86 | #endif | ||
| 87 | 87 | ||
| 88 | 88 | ||
| 89 | /* for usb host and peripheral controller drivers */ | 89 | /* for usb host and peripheral controller drivers */ |
diff --git a/include/linux/usb/r8a66597.h b/include/linux/usb/r8a66597.h new file mode 100644 index 000000000000..e9f0384fa20c --- /dev/null +++ b/include/linux/usb/r8a66597.h | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | /* | ||
| 2 | * R8A66597 driver platform data | ||
| 3 | * | ||
| 4 | * Copyright (C) 2009 Renesas Solutions Corp. | ||
| 5 | * | ||
| 6 | * Author : Yoshihiro Shimoda <shimoda.yoshihiro@renesas.com> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License as published by | ||
| 10 | * the Free Software Foundation; version 2 of the License. | ||
| 11 | * | ||
| 12 | * This program is distributed in the hope that it will be useful, | ||
| 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 15 | * GNU General Public License for more details. | ||
| 16 | * | ||
| 17 | * You should have received a copy of the GNU General Public License | ||
| 18 | * along with this program; if not, write to the Free Software | ||
| 19 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 20 | * | ||
| 21 | */ | ||
| 22 | |||
| 23 | #ifndef __LINUX_USB_R8A66597_H | ||
| 24 | #define __LINUX_USB_R8A66597_H | ||
| 25 | |||
| 26 | #define R8A66597_PLATDATA_XTAL_12MHZ 0x01 | ||
| 27 | #define R8A66597_PLATDATA_XTAL_24MHZ 0x02 | ||
| 28 | #define R8A66597_PLATDATA_XTAL_48MHZ 0x03 | ||
| 29 | |||
| 30 | struct r8a66597_platdata { | ||
| 31 | /* This ops can controll port power instead of DVSTCTR register. */ | ||
| 32 | void (*port_power)(int port, int power); | ||
| 33 | |||
| 34 | /* (external controller only) set R8A66597_PLATDATA_XTAL_nnMHZ */ | ||
| 35 | unsigned xtal:2; | ||
| 36 | |||
| 37 | /* set one = 3.3V, set zero = 1.5V */ | ||
| 38 | unsigned vif:1; | ||
| 39 | |||
| 40 | /* set one = big endian, set zero = little endian */ | ||
| 41 | unsigned endian:1; | ||
| 42 | }; | ||
| 43 | #endif | ||
| 44 | |||
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h index 8cdfed738fe4..44801d26a37a 100644 --- a/include/linux/usb/serial.h +++ b/include/linux/usb/serial.h | |||
| @@ -15,6 +15,7 @@ | |||
| 15 | 15 | ||
| 16 | #include <linux/kref.h> | 16 | #include <linux/kref.h> |
| 17 | #include <linux/mutex.h> | 17 | #include <linux/mutex.h> |
| 18 | #include <linux/sysrq.h> | ||
| 18 | 19 | ||
| 19 | #define SERIAL_TTY_MAJOR 188 /* Nice legal number now */ | 20 | #define SERIAL_TTY_MAJOR 188 /* Nice legal number now */ |
| 20 | #define SERIAL_TTY_MINORS 254 /* loads of devices :) */ | 21 | #define SERIAL_TTY_MINORS 254 /* loads of devices :) */ |
| @@ -26,6 +27,13 @@ | |||
| 26 | /* parity check flag */ | 27 | /* parity check flag */ |
| 27 | #define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) | 28 | #define RELEVANT_IFLAG(iflag) (iflag & (IGNBRK|BRKINT|IGNPAR|PARMRK|INPCK)) |
| 28 | 29 | ||
| 30 | enum port_dev_state { | ||
| 31 | PORT_UNREGISTERED, | ||
| 32 | PORT_REGISTERING, | ||
| 33 | PORT_REGISTERED, | ||
| 34 | PORT_UNREGISTERING, | ||
| 35 | }; | ||
| 36 | |||
| 29 | /** | 37 | /** |
| 30 | * usb_serial_port: structure for the specific ports of a device. | 38 | * usb_serial_port: structure for the specific ports of a device. |
| 31 | * @serial: pointer back to the struct usb_serial owner of this port. | 39 | * @serial: pointer back to the struct usb_serial owner of this port. |
| @@ -91,12 +99,17 @@ struct usb_serial_port { | |||
| 91 | int write_urb_busy; | 99 | int write_urb_busy; |
| 92 | __u8 bulk_out_endpointAddress; | 100 | __u8 bulk_out_endpointAddress; |
| 93 | 101 | ||
| 102 | int tx_bytes_flight; | ||
| 103 | int urbs_in_flight; | ||
| 104 | |||
| 94 | wait_queue_head_t write_wait; | 105 | wait_queue_head_t write_wait; |
| 95 | struct work_struct work; | 106 | struct work_struct work; |
| 96 | char throttled; | 107 | char throttled; |
| 97 | char throttle_req; | 108 | char throttle_req; |
| 98 | char console; | 109 | char console; |
| 110 | unsigned long sysrq; /* sysrq timeout */ | ||
| 99 | struct device dev; | 111 | struct device dev; |
| 112 | enum port_dev_state dev_state; | ||
| 100 | }; | 113 | }; |
| 101 | #define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev) | 114 | #define to_usb_serial_port(d) container_of(d, struct usb_serial_port, dev) |
| 102 | 115 | ||
| @@ -181,8 +194,10 @@ static inline void usb_set_serial_data(struct usb_serial *serial, void *data) | |||
| 181 | * This will be called when the struct usb_serial structure is fully set | 194 | * This will be called when the struct usb_serial structure is fully set |
| 182 | * set up. Do any local initialization of the device, or any private | 195 | * set up. Do any local initialization of the device, or any private |
| 183 | * memory structure allocation at this point in time. | 196 | * memory structure allocation at this point in time. |
| 184 | * @shutdown: pointer to the driver's shutdown function. This will be | 197 | * @disconnect: pointer to the driver's disconnect function. This will be |
| 185 | * called when the device is removed from the system. | 198 | * called when the device is unplugged or unbound from the driver. |
| 199 | * @release: pointer to the driver's release function. This will be called | ||
| 200 | * when the usb_serial data structure is about to be destroyed. | ||
| 186 | * @usb_driver: pointer to the struct usb_driver that controls this | 201 | * @usb_driver: pointer to the struct usb_driver that controls this |
| 187 | * device. This is necessary to allow dynamic ids to be added to | 202 | * device. This is necessary to allow dynamic ids to be added to |
| 188 | * the driver from sysfs. | 203 | * the driver from sysfs. |
| @@ -207,12 +222,14 @@ struct usb_serial_driver { | |||
| 207 | struct device_driver driver; | 222 | struct device_driver driver; |
| 208 | struct usb_driver *usb_driver; | 223 | struct usb_driver *usb_driver; |
| 209 | struct usb_dynids dynids; | 224 | struct usb_dynids dynids; |
| 225 | int max_in_flight_urbs; | ||
| 210 | 226 | ||
| 211 | int (*probe)(struct usb_serial *serial, const struct usb_device_id *id); | 227 | int (*probe)(struct usb_serial *serial, const struct usb_device_id *id); |
| 212 | int (*attach)(struct usb_serial *serial); | 228 | int (*attach)(struct usb_serial *serial); |
| 213 | int (*calc_num_ports) (struct usb_serial *serial); | 229 | int (*calc_num_ports) (struct usb_serial *serial); |
| 214 | 230 | ||
| 215 | void (*shutdown)(struct usb_serial *serial); | 231 | void (*disconnect)(struct usb_serial *serial); |
| 232 | void (*release)(struct usb_serial *serial); | ||
| 216 | 233 | ||
| 217 | int (*port_probe)(struct usb_serial_port *port); | 234 | int (*port_probe)(struct usb_serial_port *port); |
| 218 | int (*port_remove)(struct usb_serial_port *port); | 235 | int (*port_remove)(struct usb_serial_port *port); |
| @@ -294,9 +311,16 @@ extern void usb_serial_generic_read_bulk_callback(struct urb *urb); | |||
| 294 | extern void usb_serial_generic_write_bulk_callback(struct urb *urb); | 311 | extern void usb_serial_generic_write_bulk_callback(struct urb *urb); |
| 295 | extern void usb_serial_generic_throttle(struct tty_struct *tty); | 312 | extern void usb_serial_generic_throttle(struct tty_struct *tty); |
| 296 | extern void usb_serial_generic_unthrottle(struct tty_struct *tty); | 313 | extern void usb_serial_generic_unthrottle(struct tty_struct *tty); |
| 297 | extern void usb_serial_generic_shutdown(struct usb_serial *serial); | 314 | extern void usb_serial_generic_disconnect(struct usb_serial *serial); |
| 315 | extern void usb_serial_generic_release(struct usb_serial *serial); | ||
| 298 | extern int usb_serial_generic_register(int debug); | 316 | extern int usb_serial_generic_register(int debug); |
| 299 | extern void usb_serial_generic_deregister(void); | 317 | extern void usb_serial_generic_deregister(void); |
| 318 | extern void usb_serial_generic_resubmit_read_urb(struct usb_serial_port *port, | ||
| 319 | gfp_t mem_flags); | ||
| 320 | extern int usb_serial_handle_sysrq_char(struct usb_serial_port *port, | ||
| 321 | unsigned int ch); | ||
| 322 | extern int usb_serial_handle_break(struct usb_serial_port *port); | ||
| 323 | |||
| 300 | 324 | ||
| 301 | extern int usb_serial_bus_register(struct usb_serial_driver *device); | 325 | extern int usb_serial_bus_register(struct usb_serial_driver *device); |
| 302 | extern void usb_serial_bus_deregister(struct usb_serial_driver *device); | 326 | extern void usb_serial_bus_deregister(struct usb_serial_driver *device); |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index 36fabb95c7d3..5d44059f6d63 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
| @@ -183,6 +183,7 @@ extern void usbnet_tx_timeout (struct net_device *net); | |||
| 183 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); | 183 | extern int usbnet_change_mtu (struct net_device *net, int new_mtu); |
| 184 | 184 | ||
| 185 | extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *); | 185 | extern int usbnet_get_endpoints(struct usbnet *, struct usb_interface *); |
| 186 | extern int usbnet_get_ethernet_addr(struct usbnet *, int); | ||
| 186 | extern void usbnet_defer_kevent (struct usbnet *, int); | 187 | extern void usbnet_defer_kevent (struct usbnet *, int); |
| 187 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); | 188 | extern void usbnet_skb_return (struct usbnet *, struct sk_buff *); |
| 188 | extern void usbnet_unlink_rx_urbs(struct usbnet *); | 189 | extern void usbnet_unlink_rx_urbs(struct usbnet *); |
diff --git a/include/linux/utsname.h b/include/linux/utsname.h index 11232676bfff..3656b300de3a 100644 --- a/include/linux/utsname.h +++ b/include/linux/utsname.h | |||
| @@ -22,12 +22,12 @@ struct old_utsname { | |||
| 22 | }; | 22 | }; |
| 23 | 23 | ||
| 24 | struct new_utsname { | 24 | struct new_utsname { |
| 25 | char sysname[65]; | 25 | char sysname[__NEW_UTS_LEN + 1]; |
| 26 | char nodename[65]; | 26 | char nodename[__NEW_UTS_LEN + 1]; |
| 27 | char release[65]; | 27 | char release[__NEW_UTS_LEN + 1]; |
| 28 | char version[65]; | 28 | char version[__NEW_UTS_LEN + 1]; |
| 29 | char machine[65]; | 29 | char machine[__NEW_UTS_LEN + 1]; |
| 30 | char domainname[65]; | 30 | char domainname[__NEW_UTS_LEN + 1]; |
| 31 | }; | 31 | }; |
| 32 | 32 | ||
| 33 | #ifdef __KERNEL__ | 33 | #ifdef __KERNEL__ |
diff --git a/include/linux/videodev2.h b/include/linux/videodev2.h index ebb2ea6b4995..f24eceecc5a6 100644 --- a/include/linux/videodev2.h +++ b/include/linux/videodev2.h | |||
| @@ -347,7 +347,8 @@ struct v4l2_pix_format { | |||
| 347 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ | 347 | #define V4L2_PIX_FMT_MR97310A v4l2_fourcc('M', '3', '1', '0') /* compressed BGGR bayer */ |
| 348 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ | 348 | #define V4L2_PIX_FMT_SQ905C v4l2_fourcc('9', '0', '5', 'C') /* compressed RGGB bayer */ |
| 349 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ | 349 | #define V4L2_PIX_FMT_PJPG v4l2_fourcc('P', 'J', 'P', 'G') /* Pixart 73xx JPEG */ |
| 350 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ | 350 | #define V4L2_PIX_FMT_YVYU v4l2_fourcc('Y', 'V', 'Y', 'U') /* 16 YVU 4:2:2 */ |
| 351 | #define V4L2_PIX_FMT_OV518 v4l2_fourcc('O', '5', '1', '8') /* ov518 JPEG */ | ||
| 351 | 352 | ||
| 352 | /* | 353 | /* |
| 353 | * F O R M A T E N U M E R A T I O N | 354 | * F O R M A T E N U M E R A T I O N |
diff --git a/include/linux/vlynq.h b/include/linux/vlynq.h new file mode 100644 index 000000000000..8f6a95882b09 --- /dev/null +++ b/include/linux/vlynq.h | |||
| @@ -0,0 +1,161 @@ | |||
| 1 | /* | ||
| 2 | * Copyright (C) 2006, 2007 Eugene Konev <ejka@openwrt.org> | ||
| 3 | * | ||
| 4 | * This program is free software; you can redistribute it and/or modify | ||
| 5 | * it under the terms of the GNU General Public License as published by | ||
| 6 | * the Free Software Foundation; either version 2 of the License, or | ||
| 7 | * (at your option) any later version. | ||
| 8 | * | ||
| 9 | * This program is distributed in the hope that it will be useful, | ||
| 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 12 | * GNU General Public License for more details. | ||
| 13 | * | ||
| 14 | * You should have received a copy of the GNU General Public License | ||
| 15 | * along with this program; if not, write to the Free Software | ||
| 16 | * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | ||
| 17 | */ | ||
| 18 | |||
| 19 | #ifndef __VLYNQ_H__ | ||
| 20 | #define __VLYNQ_H__ | ||
| 21 | |||
| 22 | #include <linux/device.h> | ||
| 23 | #include <linux/module.h> | ||
| 24 | #include <linux/types.h> | ||
| 25 | |||
| 26 | #define VLYNQ_NUM_IRQS 32 | ||
| 27 | |||
| 28 | struct vlynq_mapping { | ||
| 29 | u32 size; | ||
| 30 | u32 offset; | ||
| 31 | }; | ||
| 32 | |||
| 33 | enum vlynq_divisor { | ||
| 34 | vlynq_div_auto = 0, | ||
| 35 | vlynq_ldiv1, | ||
| 36 | vlynq_ldiv2, | ||
| 37 | vlynq_ldiv3, | ||
| 38 | vlynq_ldiv4, | ||
| 39 | vlynq_ldiv5, | ||
| 40 | vlynq_ldiv6, | ||
| 41 | vlynq_ldiv7, | ||
| 42 | vlynq_ldiv8, | ||
| 43 | vlynq_rdiv1, | ||
| 44 | vlynq_rdiv2, | ||
| 45 | vlynq_rdiv3, | ||
| 46 | vlynq_rdiv4, | ||
| 47 | vlynq_rdiv5, | ||
| 48 | vlynq_rdiv6, | ||
| 49 | vlynq_rdiv7, | ||
| 50 | vlynq_rdiv8, | ||
| 51 | vlynq_div_external | ||
| 52 | }; | ||
| 53 | |||
| 54 | struct vlynq_device_id { | ||
| 55 | u32 id; | ||
| 56 | enum vlynq_divisor divisor; | ||
| 57 | unsigned long driver_data; | ||
| 58 | }; | ||
| 59 | |||
| 60 | struct vlynq_regs; | ||
| 61 | struct vlynq_device { | ||
| 62 | u32 id, dev_id; | ||
| 63 | int local_irq; | ||
| 64 | int remote_irq; | ||
| 65 | enum vlynq_divisor divisor; | ||
| 66 | u32 regs_start, regs_end; | ||
| 67 | u32 mem_start, mem_end; | ||
| 68 | u32 irq_start, irq_end; | ||
| 69 | int irq; | ||
| 70 | int enabled; | ||
| 71 | struct vlynq_regs *local; | ||
| 72 | struct vlynq_regs *remote; | ||
| 73 | struct device dev; | ||
| 74 | }; | ||
| 75 | |||
| 76 | struct vlynq_driver { | ||
| 77 | char *name; | ||
| 78 | struct vlynq_device_id *id_table; | ||
| 79 | int (*probe)(struct vlynq_device *dev, struct vlynq_device_id *id); | ||
| 80 | void (*remove)(struct vlynq_device *dev); | ||
| 81 | struct device_driver driver; | ||
| 82 | }; | ||
| 83 | |||
| 84 | struct plat_vlynq_ops { | ||
| 85 | int (*on)(struct vlynq_device *dev); | ||
| 86 | void (*off)(struct vlynq_device *dev); | ||
| 87 | }; | ||
| 88 | |||
| 89 | static inline struct vlynq_driver *to_vlynq_driver(struct device_driver *drv) | ||
| 90 | { | ||
| 91 | return container_of(drv, struct vlynq_driver, driver); | ||
| 92 | } | ||
| 93 | |||
| 94 | static inline struct vlynq_device *to_vlynq_device(struct device *device) | ||
| 95 | { | ||
| 96 | return container_of(device, struct vlynq_device, dev); | ||
| 97 | } | ||
| 98 | |||
| 99 | extern struct bus_type vlynq_bus_type; | ||
| 100 | |||
| 101 | extern int __vlynq_register_driver(struct vlynq_driver *driver, | ||
| 102 | struct module *owner); | ||
| 103 | |||
| 104 | static inline int vlynq_register_driver(struct vlynq_driver *driver) | ||
| 105 | { | ||
| 106 | return __vlynq_register_driver(driver, THIS_MODULE); | ||
| 107 | } | ||
| 108 | |||
| 109 | static inline void *vlynq_get_drvdata(struct vlynq_device *dev) | ||
| 110 | { | ||
| 111 | return dev_get_drvdata(&dev->dev); | ||
| 112 | } | ||
| 113 | |||
| 114 | static inline void vlynq_set_drvdata(struct vlynq_device *dev, void *data) | ||
| 115 | { | ||
| 116 | dev_set_drvdata(&dev->dev, data); | ||
| 117 | } | ||
| 118 | |||
| 119 | static inline u32 vlynq_mem_start(struct vlynq_device *dev) | ||
| 120 | { | ||
| 121 | return dev->mem_start; | ||
| 122 | } | ||
| 123 | |||
| 124 | static inline u32 vlynq_mem_end(struct vlynq_device *dev) | ||
| 125 | { | ||
| 126 | return dev->mem_end; | ||
| 127 | } | ||
| 128 | |||
| 129 | static inline u32 vlynq_mem_len(struct vlynq_device *dev) | ||
| 130 | { | ||
| 131 | return dev->mem_end - dev->mem_start + 1; | ||
| 132 | } | ||
| 133 | |||
| 134 | static inline int vlynq_virq_to_irq(struct vlynq_device *dev, int virq) | ||
| 135 | { | ||
| 136 | int irq = dev->irq_start + virq; | ||
| 137 | if ((irq < dev->irq_start) || (irq > dev->irq_end)) | ||
| 138 | return -EINVAL; | ||
| 139 | |||
| 140 | return irq; | ||
| 141 | } | ||
| 142 | |||
| 143 | static inline int vlynq_irq_to_virq(struct vlynq_device *dev, int irq) | ||
| 144 | { | ||
| 145 | if ((irq < dev->irq_start) || (irq > dev->irq_end)) | ||
| 146 | return -EINVAL; | ||
| 147 | |||
| 148 | return irq - dev->irq_start; | ||
| 149 | } | ||
| 150 | |||
| 151 | extern void vlynq_unregister_driver(struct vlynq_driver *driver); | ||
| 152 | extern int vlynq_enable_device(struct vlynq_device *dev); | ||
| 153 | extern void vlynq_disable_device(struct vlynq_device *dev); | ||
| 154 | extern int vlynq_set_local_mapping(struct vlynq_device *dev, u32 tx_offset, | ||
| 155 | struct vlynq_mapping *mapping); | ||
| 156 | extern int vlynq_set_remote_mapping(struct vlynq_device *dev, u32 tx_offset, | ||
| 157 | struct vlynq_mapping *mapping); | ||
| 158 | extern int vlynq_set_local_irq(struct vlynq_device *dev, int virq); | ||
| 159 | extern int vlynq_set_remote_irq(struct vlynq_device *dev, int virq); | ||
| 160 | |||
| 161 | #endif /* __VLYNQ_H__ */ | ||
diff --git a/include/linux/vmstat.h b/include/linux/vmstat.h index 524cd1b28ecb..81a97cf8f0a0 100644 --- a/include/linux/vmstat.h +++ b/include/linux/vmstat.h | |||
| @@ -36,12 +36,14 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | |||
| 36 | FOR_ALL_ZONES(PGSTEAL), | 36 | FOR_ALL_ZONES(PGSTEAL), |
| 37 | FOR_ALL_ZONES(PGSCAN_KSWAPD), | 37 | FOR_ALL_ZONES(PGSCAN_KSWAPD), |
| 38 | FOR_ALL_ZONES(PGSCAN_DIRECT), | 38 | FOR_ALL_ZONES(PGSCAN_DIRECT), |
| 39 | #ifdef CONFIG_NUMA | ||
| 40 | PGSCAN_ZONE_RECLAIM_FAILED, | ||
| 41 | #endif | ||
| 39 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, | 42 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, |
| 40 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, | 43 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, |
| 41 | #ifdef CONFIG_HUGETLB_PAGE | 44 | #ifdef CONFIG_HUGETLB_PAGE |
| 42 | HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, | 45 | HTLB_BUDDY_PGALLOC, HTLB_BUDDY_PGALLOC_FAIL, |
| 43 | #endif | 46 | #endif |
| 44 | #ifdef CONFIG_UNEVICTABLE_LRU | ||
| 45 | UNEVICTABLE_PGCULLED, /* culled to noreclaim list */ | 47 | UNEVICTABLE_PGCULLED, /* culled to noreclaim list */ |
| 46 | UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */ | 48 | UNEVICTABLE_PGSCANNED, /* scanned for reclaimability */ |
| 47 | UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */ | 49 | UNEVICTABLE_PGRESCUED, /* rescued from noreclaim list */ |
| @@ -50,7 +52,6 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | |||
| 50 | UNEVICTABLE_PGCLEARED, /* on COW, page truncate */ | 52 | UNEVICTABLE_PGCLEARED, /* on COW, page truncate */ |
| 51 | UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */ | 53 | UNEVICTABLE_PGSTRANDED, /* unable to isolate on unlock */ |
| 52 | UNEVICTABLE_MLOCKFREED, | 54 | UNEVICTABLE_MLOCKFREED, |
| 53 | #endif | ||
| 54 | NR_VM_EVENT_ITEMS | 55 | NR_VM_EVENT_ITEMS |
| 55 | }; | 56 | }; |
| 56 | 57 | ||
diff --git a/include/linux/wimax.h b/include/linux/wimax.h index c89de7f4e5b9..4fdcc5635518 100644 --- a/include/linux/wimax.h +++ b/include/linux/wimax.h | |||
| @@ -59,7 +59,7 @@ enum { | |||
| 59 | * M - Major: change if removing or modifying an existing call. | 59 | * M - Major: change if removing or modifying an existing call. |
| 60 | * m - minor: change when adding a new call | 60 | * m - minor: change when adding a new call |
| 61 | */ | 61 | */ |
| 62 | WIMAX_GNL_VERSION = 00, | 62 | WIMAX_GNL_VERSION = 01, |
| 63 | /* Generic NetLink attributes */ | 63 | /* Generic NetLink attributes */ |
| 64 | WIMAX_GNL_ATTR_INVALID = 0x00, | 64 | WIMAX_GNL_ATTR_INVALID = 0x00, |
| 65 | WIMAX_GNL_ATTR_MAX = 10, | 65 | WIMAX_GNL_ATTR_MAX = 10, |
| @@ -78,6 +78,7 @@ enum { | |||
| 78 | WIMAX_GNL_OP_RFKILL, /* Run wimax_rfkill() */ | 78 | WIMAX_GNL_OP_RFKILL, /* Run wimax_rfkill() */ |
| 79 | WIMAX_GNL_OP_RESET, /* Run wimax_rfkill() */ | 79 | WIMAX_GNL_OP_RESET, /* Run wimax_rfkill() */ |
| 80 | WIMAX_GNL_RE_STATE_CHANGE, /* Report: status change */ | 80 | WIMAX_GNL_RE_STATE_CHANGE, /* Report: status change */ |
| 81 | WIMAX_GNL_OP_STATE_GET, /* Request for current state */ | ||
| 81 | }; | 82 | }; |
| 82 | 83 | ||
| 83 | 84 | ||
| @@ -113,6 +114,10 @@ enum { | |||
| 113 | WIMAX_GNL_RESET_IFIDX = 1, | 114 | WIMAX_GNL_RESET_IFIDX = 1, |
| 114 | }; | 115 | }; |
| 115 | 116 | ||
| 117 | /* Atributes for wimax_state_get() */ | ||
| 118 | enum { | ||
| 119 | WIMAX_GNL_STGET_IFIDX = 1, | ||
| 120 | }; | ||
| 116 | 121 | ||
| 117 | /* | 122 | /* |
| 118 | * Attributes for the Report State Change | 123 | * Attributes for the Report State Change |
diff --git a/include/linux/wimax/i2400m.h b/include/linux/wimax/i2400m.h index d5148a7889a6..433693ef2bb0 100644 --- a/include/linux/wimax/i2400m.h +++ b/include/linux/wimax/i2400m.h | |||
| @@ -266,7 +266,7 @@ enum i2400m_ro_type { | |||
| 266 | 266 | ||
| 267 | /* Misc constants */ | 267 | /* Misc constants */ |
| 268 | enum { | 268 | enum { |
| 269 | I2400M_PL_PAD = 16, /* Payload data size alignment */ | 269 | I2400M_PL_ALIGN = 16, /* Payload data size alignment */ |
| 270 | I2400M_PL_SIZE_MAX = 0x3EFF, | 270 | I2400M_PL_SIZE_MAX = 0x3EFF, |
| 271 | I2400M_MAX_PLS_IN_MSG = 60, | 271 | I2400M_MAX_PLS_IN_MSG = 60, |
| 272 | /* protocol barkers: sync sequences; for notifications they | 272 | /* protocol barkers: sync sequences; for notifications they |
