aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux')
-rw-r--r--include/linux/Kbuild2
-rw-r--r--include/linux/aer.h10
-rw-r--r--include/linux/ata.h29
-rw-r--r--include/linux/debugfs.h9
-rw-r--r--include/linux/device.h5
-rw-r--r--include/linux/dmi.h8
-rw-r--r--include/linux/edd.h4
-rw-r--r--include/linux/etherdevice.h9
-rw-r--r--include/linux/i2c.h19
-rw-r--r--include/linux/idr.h29
-rw-r--r--include/linux/if_link.h47
-rw-r--r--include/linux/if_ppp.h16
-rw-r--r--include/linux/if_pppol2tp.h69
-rw-r--r--include/linux/if_pppox.h16
-rw-r--r--include/linux/if_tun.h2
-rw-r--r--include/linux/if_vlan.h12
-rw-r--r--include/linux/ip_mp_alg.h22
-rw-r--r--include/linux/ipv6.h10
-rw-r--r--include/linux/irda.h28
-rw-r--r--include/linux/kobject.h9
-rw-r--r--include/linux/ktime.h10
-rw-r--r--include/linux/libata.h12
-rw-r--r--include/linux/mlx4/device.h2
-rw-r--r--include/linux/mlx4/qp.h3
-rw-r--r--include/linux/netdevice.h143
-rw-r--r--include/linux/netfilter.h3
-rw-r--r--include/linux/netfilter/nf_conntrack_pptp.h2
-rw-r--r--include/linux/netfilter/x_tables.h36
-rw-r--r--include/linux/netfilter/xt_u32.h40
-rw-r--r--include/linux/netfilter_ipv4/ipt_CLUSTERIP.h4
-rw-r--r--include/linux/netfilter_ipv6/ip6_tables.h10
-rw-r--r--include/linux/pci.h17
-rw-r--r--include/linux/pci_ids.h75
-rw-r--r--include/linux/pkt_cls.h17
-rw-r--r--include/linux/pkt_sched.h9
-rw-r--r--include/linux/pm.h5
-rw-r--r--include/linux/rtnetlink.h20
-rw-r--r--include/linux/screen_info.h9
-rw-r--r--include/linux/security.h17
-rw-r--r--include/linux/serio.h1
-rw-r--r--include/linux/skbuff.h65
-rw-r--r--include/linux/socket.h1
-rw-r--r--include/linux/sysdev.h3
-rw-r--r--include/linux/sysfs.h43
-rw-r--r--include/linux/udp.h6
-rw-r--r--include/linux/usb.h69
-rw-r--r--include/linux/usb/Kbuild1
-rw-r--r--include/linux/usb/gadgetfs.h (renamed from include/linux/usb_gadgetfs.h)24
-rw-r--r--include/linux/usb/quirks.h3
-rw-r--r--include/linux/usb/serial.h7
-rw-r--r--include/linux/usb_gadget.h48
51 files changed, 772 insertions, 288 deletions
diff --git a/include/linux/Kbuild b/include/linux/Kbuild
index afae306b177c..127d2d192b5a 100644
--- a/include/linux/Kbuild
+++ b/include/linux/Kbuild
@@ -91,7 +91,6 @@ header-y += in6.h
91header-y += in_route.h 91header-y += in_route.h
92header-y += ioctl.h 92header-y += ioctl.h
93header-y += ipmi_msgdefs.h 93header-y += ipmi_msgdefs.h
94header-y += ip_mp_alg.h
95header-y += ipsec.h 94header-y += ipsec.h
96header-y += ipx.h 95header-y += ipx.h
97header-y += irda.h 96header-y += irda.h
@@ -226,6 +225,7 @@ unifdef-y += if_fddi.h
226unifdef-y += if_frad.h 225unifdef-y += if_frad.h
227unifdef-y += if_ltalk.h 226unifdef-y += if_ltalk.h
228unifdef-y += if_link.h 227unifdef-y += if_link.h
228unifdef-y += if_pppol2tp.h
229unifdef-y += if_pppox.h 229unifdef-y += if_pppox.h
230unifdef-y += if_shaper.h 230unifdef-y += if_shaper.h
231unifdef-y += if_tr.h 231unifdef-y += if_tr.h
diff --git a/include/linux/aer.h b/include/linux/aer.h
index 402e178b38eb..509656286e53 100644
--- a/include/linux/aer.h
+++ b/include/linux/aer.h
@@ -13,11 +13,13 @@ extern int pci_enable_pcie_error_reporting(struct pci_dev *dev);
13extern int pci_find_aer_capability(struct pci_dev *dev); 13extern int pci_find_aer_capability(struct pci_dev *dev);
14extern int pci_disable_pcie_error_reporting(struct pci_dev *dev); 14extern int pci_disable_pcie_error_reporting(struct pci_dev *dev);
15extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev); 15extern int pci_cleanup_aer_uncorrect_error_status(struct pci_dev *dev);
16extern int pci_cleanup_aer_correct_error_status(struct pci_dev *dev);
16#else 17#else
17#define pci_enable_pcie_error_reporting(dev) do { } while (0) 18#define pci_enable_pcie_error_reporting(dev) (-EINVAL)
18#define pci_find_aer_capability(dev) do { } while (0) 19#define pci_find_aer_capability(dev) (0)
19#define pci_disable_pcie_error_reporting(dev) do { } while (0) 20#define pci_disable_pcie_error_reporting(dev) (-EINVAL)
20#define pci_cleanup_aer_uncorrect_error_status(dev) do { } while (0) 21#define pci_cleanup_aer_uncorrect_error_status(dev) (-EINVAL)
22#define pci_cleanup_aer_correct_error_status(dev) (-EINVAL)
21#endif 23#endif
22 24
23#endif //_AER_H_ 25#endif //_AER_H_
diff --git a/include/linux/ata.h b/include/linux/ata.h
index 407dc7e098bc..b5a20162af32 100644
--- a/include/linux/ata.h
+++ b/include/linux/ata.h
@@ -164,6 +164,8 @@ enum {
164 ATA_CMD_SET_MAX = 0xF9, 164 ATA_CMD_SET_MAX = 0xF9,
165 ATA_CMD_SET_MAX_EXT = 0x37, 165 ATA_CMD_SET_MAX_EXT = 0x37,
166 ATA_CMD_READ_LOG_EXT = 0x2f, 166 ATA_CMD_READ_LOG_EXT = 0x2f,
167 ATA_CMD_PMP_READ = 0xE4,
168 ATA_CMD_PMP_WRITE = 0xE8,
167 169
168 /* READ_LOG_EXT pages */ 170 /* READ_LOG_EXT pages */
169 ATA_LOG_SATA_NCQ = 0x10, 171 ATA_LOG_SATA_NCQ = 0x10,
@@ -212,6 +214,28 @@ enum {
212 0=to device, 1=to host */ 214 0=to device, 1=to host */
213 ATAPI_CDB_LEN = 16, 215 ATAPI_CDB_LEN = 16,
214 216
217 /* PMP stuff */
218 SATA_PMP_MAX_PORTS = 15,
219 SATA_PMP_CTRL_PORT = 15,
220
221 SATA_PMP_GSCR_DWORDS = 128,
222 SATA_PMP_GSCR_PROD_ID = 0,
223 SATA_PMP_GSCR_REV = 1,
224 SATA_PMP_GSCR_PORT_INFO = 2,
225 SATA_PMP_GSCR_ERROR = 32,
226 SATA_PMP_GSCR_ERROR_EN = 33,
227 SATA_PMP_GSCR_FEAT = 64,
228 SATA_PMP_GSCR_FEAT_EN = 96,
229
230 SATA_PMP_PSCR_STATUS = 0,
231 SATA_PMP_PSCR_ERROR = 1,
232 SATA_PMP_PSCR_CONTROL = 2,
233
234 SATA_PMP_FEAT_BIST = (1 << 0),
235 SATA_PMP_FEAT_PMREQ = (1 << 1),
236 SATA_PMP_FEAT_DYNSSC = (1 << 2),
237 SATA_PMP_FEAT_NOTIFY = (1 << 3),
238
215 /* cable types */ 239 /* cable types */
216 ATA_CBL_NONE = 0, 240 ATA_CBL_NONE = 0,
217 ATA_CBL_PATA40 = 1, 241 ATA_CBL_PATA40 = 1,
@@ -418,4 +442,9 @@ static inline int lba_48_ok(u64 block, u32 n_block)
418 return ((block + n_block - 1) < ((u64)1 << 48)) && (n_block <= 65536); 442 return ((block + n_block - 1) < ((u64)1 << 48)) && (n_block <= 65536);
419} 443}
420 444
445#define sata_pmp_gscr_vendor(gscr) ((gscr)[SATA_PMP_GSCR_PROD_ID] & 0xffff)
446#define sata_pmp_gscr_devid(gscr) ((gscr)[SATA_PMP_GSCR_PROD_ID] >> 16)
447#define sata_pmp_gscr_rev(gscr) (((gscr)[SATA_PMP_GSCR_REV] >> 8) & 0xff)
448#define sata_pmp_gscr_ports(gscr) ((gscr)[SATA_PMP_GSCR_PORT_INFO] & 0xf)
449
421#endif /* __LINUX_ATA_H__ */ 450#endif /* __LINUX_ATA_H__ */
diff --git a/include/linux/debugfs.h b/include/linux/debugfs.h
index 5a9c49534d08..104e51e20e14 100644
--- a/include/linux/debugfs.h
+++ b/include/linux/debugfs.h
@@ -38,6 +38,9 @@ struct dentry *debugfs_create_symlink(const char *name, struct dentry *parent,
38 38
39void debugfs_remove(struct dentry *dentry); 39void debugfs_remove(struct dentry *dentry);
40 40
41struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry,
42 struct dentry *new_dir, const char *new_name);
43
41struct dentry *debugfs_create_u8(const char *name, mode_t mode, 44struct dentry *debugfs_create_u8(const char *name, mode_t mode,
42 struct dentry *parent, u8 *value); 45 struct dentry *parent, u8 *value);
43struct dentry *debugfs_create_u16(const char *name, mode_t mode, 46struct dentry *debugfs_create_u16(const char *name, mode_t mode,
@@ -85,6 +88,12 @@ static inline struct dentry *debugfs_create_symlink(const char *name,
85static inline void debugfs_remove(struct dentry *dentry) 88static inline void debugfs_remove(struct dentry *dentry)
86{ } 89{ }
87 90
91static inline struct dentry *debugfs_rename(struct dentry *old_dir, struct dentry *old_dentry,
92 struct dentry *new_dir, char *new_name)
93{
94 return ERR_PTR(-ENODEV);
95}
96
88static inline struct dentry *debugfs_create_u8(const char *name, mode_t mode, 97static inline struct dentry *debugfs_create_u8(const char *name, mode_t mode,
89 struct dentry *parent, 98 struct dentry *parent,
90 u8 *value) 99 u8 *value)
diff --git a/include/linux/device.h b/include/linux/device.h
index 2e1a2988b7e1..be2debed70d2 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -238,7 +238,6 @@ extern int __must_check class_device_create_file(struct class_device *,
238 * @devt: for internal use by the driver core only. 238 * @devt: for internal use by the driver core only.
239 * @node: for internal use by the driver core only. 239 * @node: for internal use by the driver core only.
240 * @kobj: for internal use by the driver core only. 240 * @kobj: for internal use by the driver core only.
241 * @devt_attr: for internal use by the driver core only.
242 * @groups: optional additional groups to be created 241 * @groups: optional additional groups to be created
243 * @dev: if set, a symlink to the struct device is created in the sysfs 242 * @dev: if set, a symlink to the struct device is created in the sysfs
244 * directory for this struct class device. 243 * directory for this struct class device.
@@ -263,8 +262,6 @@ struct class_device {
263 struct kobject kobj; 262 struct kobject kobj;
264 struct class * class; /* required */ 263 struct class * class; /* required */
265 dev_t devt; /* dev_t, creates the sysfs "dev" */ 264 dev_t devt; /* dev_t, creates the sysfs "dev" */
266 struct class_device_attribute *devt_attr;
267 struct class_device_attribute uevent_attr;
268 struct device * dev; /* not necessary, but nice to have */ 265 struct device * dev; /* not necessary, but nice to have */
269 void * class_data; /* class-specific data */ 266 void * class_data; /* class-specific data */
270 struct class_device *parent; /* parent of this child device, if there is one */ 267 struct class_device *parent; /* parent of this child device, if there is one */
@@ -419,8 +416,6 @@ struct device {
419 struct device_type *type; 416 struct device_type *type;
420 unsigned is_registered:1; 417 unsigned is_registered:1;
421 unsigned uevent_suppress:1; 418 unsigned uevent_suppress:1;
422 struct device_attribute uevent_attr;
423 struct device_attribute *devt_attr;
424 419
425 struct semaphore sem; /* semaphore to synchronize calls to 420 struct semaphore sem; /* semaphore to synchronize calls to
426 * its driver. 421 * its driver.
diff --git a/include/linux/dmi.h b/include/linux/dmi.h
index 904bf3d2d90b..b8ac7b01c45e 100644
--- a/include/linux/dmi.h
+++ b/include/linux/dmi.h
@@ -12,9 +12,17 @@ enum dmi_field {
12 DMI_PRODUCT_NAME, 12 DMI_PRODUCT_NAME,
13 DMI_PRODUCT_VERSION, 13 DMI_PRODUCT_VERSION,
14 DMI_PRODUCT_SERIAL, 14 DMI_PRODUCT_SERIAL,
15 DMI_PRODUCT_UUID,
15 DMI_BOARD_VENDOR, 16 DMI_BOARD_VENDOR,
16 DMI_BOARD_NAME, 17 DMI_BOARD_NAME,
17 DMI_BOARD_VERSION, 18 DMI_BOARD_VERSION,
19 DMI_BOARD_SERIAL,
20 DMI_BOARD_ASSET_TAG,
21 DMI_CHASSIS_VENDOR,
22 DMI_CHASSIS_TYPE,
23 DMI_CHASSIS_VERSION,
24 DMI_CHASSIS_SERIAL,
25 DMI_CHASSIS_ASSET_TAG,
18 DMI_STRING_MAX, 26 DMI_STRING_MAX,
19}; 27};
20 28
diff --git a/include/linux/edd.h b/include/linux/edd.h
index b2b3e68aa512..7b647822d6dc 100644
--- a/include/linux/edd.h
+++ b/include/linux/edd.h
@@ -49,10 +49,6 @@
49#define EDD_MBR_SIG_MAX 16 /* max number of signatures to store */ 49#define EDD_MBR_SIG_MAX 16 /* max number of signatures to store */
50#define EDD_MBR_SIG_NR_BUF 0x1ea /* addr of number of MBR signtaures at EDD_MBR_SIG_BUF 50#define EDD_MBR_SIG_NR_BUF 0x1ea /* addr of number of MBR signtaures at EDD_MBR_SIG_BUF
51 in boot_params - treat this as 1 byte */ 51 in boot_params - treat this as 1 byte */
52#define EDD_CL_EQUALS 0x3d646465 /* "edd=" */
53#define EDD_CL_OFF 0x666f /* "of" for off */
54#define EDD_CL_SKIP 0x6b73 /* "sk" for skipmbr */
55#define EDD_CL_ON 0x6e6f /* "on" for on */
56 52
57#ifndef __ASSEMBLY__ 53#ifndef __ASSEMBLY__
58 54
diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h
index 071c67abed86..6cdb97365e47 100644
--- a/include/linux/etherdevice.h
+++ b/include/linux/etherdevice.h
@@ -39,13 +39,8 @@ extern void eth_header_cache_update(struct hh_cache *hh, struct net_device *dev
39extern int eth_header_cache(struct neighbour *neigh, 39extern int eth_header_cache(struct neighbour *neigh,
40 struct hh_cache *hh); 40 struct hh_cache *hh);
41 41
42extern struct net_device *alloc_etherdev(int sizeof_priv); 42extern struct net_device *alloc_etherdev_mq(int sizeof_priv, unsigned int queue_count);
43static inline void eth_copy_and_sum (struct sk_buff *dest, 43#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)
44 const unsigned char *src,
45 int len, int base)
46{
47 memcpy (dest->data, src, len);
48}
49 44
50/** 45/**
51 * is_zero_ether_addr - Determine if give Ethernet address is all zeros. 46 * is_zero_ether_addr - Determine if give Ethernet address is all zeros.
diff --git a/include/linux/i2c.h b/include/linux/i2c.h
index cae7d618030c..2eaba21b9b1a 100644
--- a/include/linux/i2c.h
+++ b/include/linux/i2c.h
@@ -90,7 +90,7 @@ extern s32 i2c_smbus_write_block_data(struct i2c_client * client,
90 const u8 *values); 90 const u8 *values);
91/* Returns the number of read bytes */ 91/* Returns the number of read bytes */
92extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client, 92extern s32 i2c_smbus_read_i2c_block_data(struct i2c_client * client,
93 u8 command, u8 *values); 93 u8 command, u8 length, u8 *values);
94extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client, 94extern s32 i2c_smbus_write_i2c_block_data(struct i2c_client * client,
95 u8 command, u8 length, 95 u8 command, u8 length,
96 const u8 *values); 96 const u8 *values);
@@ -150,15 +150,20 @@ struct i2c_driver {
150 150
151/** 151/**
152 * struct i2c_client - represent an I2C slave device 152 * struct i2c_client - represent an I2C slave device
153 * @flags: I2C_CLIENT_TEN indicates the device uses a ten bit chip address;
154 * I2C_CLIENT_PEC indicates it uses SMBus Packet Error Checking
153 * @addr: Address used on the I2C bus connected to the parent adapter. 155 * @addr: Address used on the I2C bus connected to the parent adapter.
154 * @name: Indicates the type of the device, usually a chip name that's 156 * @name: Indicates the type of the device, usually a chip name that's
155 * generic enough to hide second-sourcing and compatible revisions. 157 * generic enough to hide second-sourcing and compatible revisions.
158 * @adapter: manages the bus segment hosting this I2C device
156 * @dev: Driver model device node for the slave. 159 * @dev: Driver model device node for the slave.
160 * @irq: indicates the IRQ generated by this device (if any)
157 * @driver_name: Identifies new-style driver used with this device; also 161 * @driver_name: Identifies new-style driver used with this device; also
158 * used as the module name for hotplug/coldplug modprobe support. 162 * used as the module name for hotplug/coldplug modprobe support.
159 * 163 *
160 * An i2c_client identifies a single device (i.e. chip) connected to an 164 * An i2c_client identifies a single device (i.e. chip) connected to an
161 * i2c bus. The behaviour is defined by the routines of the driver. 165 * i2c bus. The behaviour exposed to Linux is defined by the driver
166 * managing the device.
162 */ 167 */
163struct i2c_client { 168struct i2c_client {
164 unsigned short flags; /* div., see below */ 169 unsigned short flags; /* div., see below */
@@ -180,7 +185,8 @@ struct i2c_client {
180 185
181static inline struct i2c_client *kobj_to_i2c_client(struct kobject *kobj) 186static inline struct i2c_client *kobj_to_i2c_client(struct kobject *kobj)
182{ 187{
183 return to_i2c_client(container_of(kobj, struct device, kobj)); 188 struct device * const dev = container_of(kobj, struct device, kobj);
189 return to_i2c_client(dev);
184} 190}
185 191
186static inline void *i2c_get_clientdata (struct i2c_client *dev) 192static inline void *i2c_get_clientdata (struct i2c_client *dev)
@@ -201,7 +207,7 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data)
201 * @addr: stored in i2c_client.addr 207 * @addr: stored in i2c_client.addr
202 * @platform_data: stored in i2c_client.dev.platform_data 208 * @platform_data: stored in i2c_client.dev.platform_data
203 * @irq: stored in i2c_client.irq 209 * @irq: stored in i2c_client.irq
204 210 *
205 * I2C doesn't actually support hardware probing, although controllers and 211 * I2C doesn't actually support hardware probing, although controllers and
206 * devices may be able to use I2C_SMBUS_QUICK to tell whether or not there's 212 * devices may be able to use I2C_SMBUS_QUICK to tell whether or not there's
207 * a device at a given address. Drivers commonly need more information than 213 * a device at a given address. Drivers commonly need more information than
@@ -210,7 +216,7 @@ static inline void i2c_set_clientdata (struct i2c_client *dev, void *data)
210 * i2c_board_info is used to build tables of information listing I2C devices 216 * i2c_board_info is used to build tables of information listing I2C devices
211 * that are present. This information is used to grow the driver model tree 217 * that are present. This information is used to grow the driver model tree
212 * for "new style" I2C drivers. For mainboards this is done statically using 218 * for "new style" I2C drivers. For mainboards this is done statically using
213 * i2c_register_board_info(), where @bus_num represents an adapter that isn't 219 * i2c_register_board_info(); bus numbers identify adapters that aren't
214 * yet available. For add-on boards, i2c_new_device() does this dynamically 220 * yet available. For add-on boards, i2c_new_device() does this dynamically
215 * with the adapter already known. 221 * with the adapter already known.
216 */ 222 */
@@ -518,8 +524,9 @@ union i2c_smbus_data {
518#define I2C_SMBUS_WORD_DATA 3 524#define I2C_SMBUS_WORD_DATA 3
519#define I2C_SMBUS_PROC_CALL 4 525#define I2C_SMBUS_PROC_CALL 4
520#define I2C_SMBUS_BLOCK_DATA 5 526#define I2C_SMBUS_BLOCK_DATA 5
521#define I2C_SMBUS_I2C_BLOCK_DATA 6 527#define I2C_SMBUS_I2C_BLOCK_BROKEN 6
522#define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */ 528#define I2C_SMBUS_BLOCK_PROC_CALL 7 /* SMBus 2.0 */
529#define I2C_SMBUS_I2C_BLOCK_DATA 8
523 530
524 531
525/* ----- commands for the ioctl like i2c_command call: 532/* ----- commands for the ioctl like i2c_command call:
diff --git a/include/linux/idr.h b/include/linux/idr.h
index 826803449db7..915572fa030b 100644
--- a/include/linux/idr.h
+++ b/include/linux/idr.h
@@ -83,4 +83,33 @@ void idr_remove(struct idr *idp, int id);
83void idr_destroy(struct idr *idp); 83void idr_destroy(struct idr *idp);
84void idr_init(struct idr *idp); 84void idr_init(struct idr *idp);
85 85
86
87/*
88 * IDA - IDR based id allocator, use when translation from id to
89 * pointer isn't necessary.
90 */
91#define IDA_CHUNK_SIZE 128 /* 128 bytes per chunk */
92#define IDA_BITMAP_LONGS (128 / sizeof(long) - 1)
93#define IDA_BITMAP_BITS (IDA_BITMAP_LONGS * sizeof(long) * 8)
94
95struct ida_bitmap {
96 long nr_busy;
97 unsigned long bitmap[IDA_BITMAP_LONGS];
98};
99
100struct ida {
101 struct idr idr;
102 struct ida_bitmap *free_bitmap;
103};
104
105#define IDA_INIT(name) { .idr = IDR_INIT(name), .free_bitmap = NULL, }
106#define DEFINE_IDA(name) struct ida name = IDA_INIT(name)
107
108int ida_pre_get(struct ida *ida, gfp_t gfp_mask);
109int ida_get_new_above(struct ida *ida, int starting_id, int *p_id);
110int ida_get_new(struct ida *ida, int *p_id);
111void ida_remove(struct ida *ida, int id);
112void ida_destroy(struct ida *ida);
113void ida_init(struct ida *ida);
114
86#endif /* __IDR_H__ */ 115#endif /* __IDR_H__ */
diff --git a/include/linux/if_link.h b/include/linux/if_link.h
index 604c2434f71c..422084d18ce1 100644
--- a/include/linux/if_link.h
+++ b/include/linux/if_link.h
@@ -76,6 +76,8 @@ enum
76#define IFLA_WEIGHT IFLA_WEIGHT 76#define IFLA_WEIGHT IFLA_WEIGHT
77 IFLA_OPERSTATE, 77 IFLA_OPERSTATE,
78 IFLA_LINKMODE, 78 IFLA_LINKMODE,
79 IFLA_LINKINFO,
80#define IFLA_LINKINFO IFLA_LINKINFO
79 __IFLA_MAX 81 __IFLA_MAX
80}; 82};
81 83
@@ -140,4 +142,49 @@ struct ifla_cacheinfo
140 __u32 retrans_time; 142 __u32 retrans_time;
141}; 143};
142 144
145enum
146{
147 IFLA_INFO_UNSPEC,
148 IFLA_INFO_KIND,
149 IFLA_INFO_DATA,
150 IFLA_INFO_XSTATS,
151 __IFLA_INFO_MAX,
152};
153
154#define IFLA_INFO_MAX (__IFLA_INFO_MAX - 1)
155
156/* VLAN section */
157
158enum
159{
160 IFLA_VLAN_UNSPEC,
161 IFLA_VLAN_ID,
162 IFLA_VLAN_FLAGS,
163 IFLA_VLAN_EGRESS_QOS,
164 IFLA_VLAN_INGRESS_QOS,
165 __IFLA_VLAN_MAX,
166};
167
168#define IFLA_VLAN_MAX (__IFLA_VLAN_MAX - 1)
169
170struct ifla_vlan_flags {
171 __u32 flags;
172 __u32 mask;
173};
174
175enum
176{
177 IFLA_VLAN_QOS_UNSPEC,
178 IFLA_VLAN_QOS_MAPPING,
179 __IFLA_VLAN_QOS_MAX
180};
181
182#define IFLA_VLAN_QOS_MAX (__IFLA_VLAN_QOS_MAX - 1)
183
184struct ifla_vlan_qos_mapping
185{
186 __u32 from;
187 __u32 to;
188};
189
143#endif /* _LINUX_IF_LINK_H */ 190#endif /* _LINUX_IF_LINK_H */
diff --git a/include/linux/if_ppp.h b/include/linux/if_ppp.h
index 768372f07caa..0f2f70d4e48c 100644
--- a/include/linux/if_ppp.h
+++ b/include/linux/if_ppp.h
@@ -110,6 +110,21 @@ struct ifpppcstatsreq {
110 struct ppp_comp_stats stats; 110 struct ppp_comp_stats stats;
111}; 111};
112 112
113/* For PPPIOCGL2TPSTATS */
114struct pppol2tp_ioc_stats {
115 __u16 tunnel_id; /* redundant */
116 __u16 session_id; /* if zero, get tunnel stats */
117 __u32 using_ipsec:1; /* valid only for session_id == 0 */
118 aligned_u64 tx_packets;
119 aligned_u64 tx_bytes;
120 aligned_u64 tx_errors;
121 aligned_u64 rx_packets;
122 aligned_u64 rx_bytes;
123 aligned_u64 rx_seq_discards;
124 aligned_u64 rx_oos_packets;
125 aligned_u64 rx_errors;
126};
127
113#define ifr__name b.ifr_ifrn.ifrn_name 128#define ifr__name b.ifr_ifrn.ifrn_name
114#define stats_ptr b.ifr_ifru.ifru_data 129#define stats_ptr b.ifr_ifru.ifru_data
115 130
@@ -146,6 +161,7 @@ struct ifpppcstatsreq {
146#define PPPIOCDISCONN _IO('t', 57) /* disconnect channel */ 161#define PPPIOCDISCONN _IO('t', 57) /* disconnect channel */
147#define PPPIOCATTCHAN _IOW('t', 56, int) /* attach to ppp channel */ 162#define PPPIOCATTCHAN _IOW('t', 56, int) /* attach to ppp channel */
148#define PPPIOCGCHAN _IOR('t', 55, int) /* get ppp channel number */ 163#define PPPIOCGCHAN _IOR('t', 55, int) /* get ppp channel number */
164#define PPPIOCGL2TPSTATS _IOR('t', 54, struct pppol2tp_ioc_stats)
149 165
150#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0) 166#define SIOCGPPPSTATS (SIOCDEVPRIVATE + 0)
151#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */ 167#define SIOCGPPPVER (SIOCDEVPRIVATE + 1) /* NEVER change this!! */
diff --git a/include/linux/if_pppol2tp.h b/include/linux/if_pppol2tp.h
new file mode 100644
index 000000000000..516203b6fdeb
--- /dev/null
+++ b/include/linux/if_pppol2tp.h
@@ -0,0 +1,69 @@
1/***************************************************************************
2 * Linux PPP over L2TP (PPPoL2TP) Socket Implementation (RFC 2661)
3 *
4 * This file supplies definitions required by the PPP over L2TP driver
5 * (pppol2tp.c). All version information wrt this file is located in pppol2tp.c
6 *
7 * License:
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 * as published by the Free Software Foundation; either version
11 * 2 of the License, or (at your option) any later version.
12 *
13 */
14
15#ifndef __LINUX_IF_PPPOL2TP_H
16#define __LINUX_IF_PPPOL2TP_H
17
18#include <asm/types.h>
19
20#ifdef __KERNEL__
21#include <linux/in.h>
22#endif
23
24/* Structure used to connect() the socket to a particular tunnel UDP
25 * socket.
26 */
27struct pppol2tp_addr
28{
29 pid_t pid; /* pid that owns the fd.
30 * 0 => current */
31 int fd; /* FD of UDP socket to use */
32
33 struct sockaddr_in addr; /* IP address and port to send to */
34
35 __be16 s_tunnel, s_session; /* For matching incoming packets */
36 __be16 d_tunnel, d_session; /* For sending outgoing packets */
37};
38
39/* Socket options:
40 * DEBUG - bitmask of debug message categories
41 * SENDSEQ - 0 => don't send packets with sequence numbers
42 * 1 => send packets with sequence numbers
43 * RECVSEQ - 0 => receive packet sequence numbers are optional
44 * 1 => drop receive packets without sequence numbers
45 * LNSMODE - 0 => act as LAC.
46 * 1 => act as LNS.
47 * REORDERTO - reorder timeout (in millisecs). If 0, don't try to reorder.
48 */
49enum {
50 PPPOL2TP_SO_DEBUG = 1,
51 PPPOL2TP_SO_RECVSEQ = 2,
52 PPPOL2TP_SO_SENDSEQ = 3,
53 PPPOL2TP_SO_LNSMODE = 4,
54 PPPOL2TP_SO_REORDERTO = 5,
55};
56
57/* Debug message categories for the DEBUG socket option */
58enum {
59 PPPOL2TP_MSG_DEBUG = (1 << 0), /* verbose debug (if
60 * compiled in) */
61 PPPOL2TP_MSG_CONTROL = (1 << 1), /* userspace - kernel
62 * interface */
63 PPPOL2TP_MSG_SEQ = (1 << 2), /* sequence numbers */
64 PPPOL2TP_MSG_DATA = (1 << 3), /* data packets */
65};
66
67
68
69#endif
diff --git a/include/linux/if_pppox.h b/include/linux/if_pppox.h
index 6f987be60fe2..25652545ba6e 100644
--- a/include/linux/if_pppox.h
+++ b/include/linux/if_pppox.h
@@ -27,6 +27,7 @@
27#include <asm/semaphore.h> 27#include <asm/semaphore.h>
28#include <linux/ppp_channel.h> 28#include <linux/ppp_channel.h>
29#endif /* __KERNEL__ */ 29#endif /* __KERNEL__ */
30#include <linux/if_pppol2tp.h>
30 31
31/* For user-space programs to pick up these definitions 32/* For user-space programs to pick up these definitions
32 * which they wouldn't get otherwise without defining __KERNEL__ 33 * which they wouldn't get otherwise without defining __KERNEL__
@@ -50,8 +51,9 @@ struct pppoe_addr{
50 * Protocols supported by AF_PPPOX 51 * Protocols supported by AF_PPPOX
51 */ 52 */
52#define PX_PROTO_OE 0 /* Currently just PPPoE */ 53#define PX_PROTO_OE 0 /* Currently just PPPoE */
53#define PX_MAX_PROTO 1 54#define PX_PROTO_OL2TP 1 /* Now L2TP also */
54 55#define PX_MAX_PROTO 2
56
55struct sockaddr_pppox { 57struct sockaddr_pppox {
56 sa_family_t sa_family; /* address family, AF_PPPOX */ 58 sa_family_t sa_family; /* address family, AF_PPPOX */
57 unsigned int sa_protocol; /* protocol identifier */ 59 unsigned int sa_protocol; /* protocol identifier */
@@ -60,6 +62,16 @@ struct sockaddr_pppox {
60 }sa_addr; 62 }sa_addr;
61}__attribute__ ((packed)); 63}__attribute__ ((packed));
62 64
65/* The use of the above union isn't viable because the size of this
66 * struct must stay fixed over time -- applications use sizeof(struct
67 * sockaddr_pppox) to fill it. We use a protocol specific sockaddr
68 * type instead.
69 */
70struct sockaddr_pppol2tp {
71 sa_family_t sa_family; /* address family, AF_PPPOX */
72 unsigned int sa_protocol; /* protocol identifier */
73 struct pppol2tp_addr pppol2tp;
74}__attribute__ ((packed));
63 75
64/********************************************************************* 76/*********************************************************************
65 * 77 *
diff --git a/include/linux/if_tun.h b/include/linux/if_tun.h
index 88aef7b86ef4..42eb6945b93e 100644
--- a/include/linux/if_tun.h
+++ b/include/linux/if_tun.h
@@ -36,6 +36,7 @@ struct tun_struct {
36 unsigned long flags; 36 unsigned long flags;
37 int attached; 37 int attached;
38 uid_t owner; 38 uid_t owner;
39 gid_t group;
39 40
40 wait_queue_head_t read_wait; 41 wait_queue_head_t read_wait;
41 struct sk_buff_head readq; 42 struct sk_buff_head readq;
@@ -78,6 +79,7 @@ struct tun_struct {
78#define TUNSETPERSIST _IOW('T', 203, int) 79#define TUNSETPERSIST _IOW('T', 203, int)
79#define TUNSETOWNER _IOW('T', 204, int) 80#define TUNSETOWNER _IOW('T', 204, int)
80#define TUNSETLINK _IOW('T', 205, int) 81#define TUNSETLINK _IOW('T', 205, int)
82#define TUNSETGROUP _IOW('T', 206, int)
81 83
82/* TUNSETIFF ifr flags */ 84/* TUNSETIFF ifr flags */
83#define IFF_TUN 0x0001 85#define IFF_TUN 0x0001
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h
index 81e9bc93569b..61a57dc2ac99 100644
--- a/include/linux/if_vlan.h
+++ b/include/linux/if_vlan.h
@@ -99,7 +99,7 @@ static inline void vlan_group_set_device(struct vlan_group *vg, int vlan_id,
99} 99}
100 100
101struct vlan_priority_tci_mapping { 101struct vlan_priority_tci_mapping {
102 unsigned long priority; 102 u32 priority;
103 unsigned short vlan_qos; /* This should be shifted when first set, so we only do it 103 unsigned short vlan_qos; /* This should be shifted when first set, so we only do it
104 * at provisioning time. 104 * at provisioning time.
105 * ((skb->priority << 13) & 0xE000) 105 * ((skb->priority << 13) & 0xE000)
@@ -112,7 +112,10 @@ struct vlan_dev_info {
112 /** This will be the mapping that correlates skb->priority to 112 /** This will be the mapping that correlates skb->priority to
113 * 3 bits of VLAN QOS tags... 113 * 3 bits of VLAN QOS tags...
114 */ 114 */
115 unsigned long ingress_priority_map[8]; 115 unsigned int nr_ingress_mappings;
116 u32 ingress_priority_map[8];
117
118 unsigned int nr_egress_mappings;
116 struct vlan_priority_tci_mapping *egress_priority_map[16]; /* hash table */ 119 struct vlan_priority_tci_mapping *egress_priority_map[16]; /* hash table */
117 120
118 unsigned short vlan_id; /* The VLAN Identifier for this interface. */ 121 unsigned short vlan_id; /* The VLAN Identifier for this interface. */
@@ -132,6 +135,7 @@ struct vlan_dev_info {
132 int old_allmulti; /* similar to above. */ 135 int old_allmulti; /* similar to above. */
133 int old_promiscuity; /* similar to above. */ 136 int old_promiscuity; /* similar to above. */
134 struct net_device *real_dev; /* the underlying device/interface */ 137 struct net_device *real_dev; /* the underlying device/interface */
138 unsigned char real_dev_addr[ETH_ALEN];
135 struct proc_dir_entry *dent; /* Holds the proc data */ 139 struct proc_dir_entry *dent; /* Holds the proc data */
136 unsigned long cnt_inc_headroom_on_tx; /* How many times did we have to grow the skb on TX. */ 140 unsigned long cnt_inc_headroom_on_tx; /* How many times did we have to grow the skb on TX. */
137 unsigned long cnt_encap_on_xmit; /* How many times did we have to encapsulate the skb on TX. */ 141 unsigned long cnt_encap_on_xmit; /* How many times did we have to encapsulate the skb on TX. */
@@ -395,6 +399,10 @@ enum vlan_ioctl_cmds {
395 GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */ 399 GET_VLAN_VID_CMD /* Get the VID of this VLAN (specified by name) */
396}; 400};
397 401
402enum vlan_flags {
403 VLAN_FLAG_REORDER_HDR = 0x1,
404};
405
398enum vlan_name_types { 406enum vlan_name_types {
399 VLAN_NAME_TYPE_PLUS_VID, /* Name will look like: vlan0005 */ 407 VLAN_NAME_TYPE_PLUS_VID, /* Name will look like: vlan0005 */
400 VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like: eth1.0005 */ 408 VLAN_NAME_TYPE_RAW_PLUS_VID, /* name will look like: eth1.0005 */
diff --git a/include/linux/ip_mp_alg.h b/include/linux/ip_mp_alg.h
deleted file mode 100644
index e234e2008f5d..000000000000
--- a/include/linux/ip_mp_alg.h
+++ /dev/null
@@ -1,22 +0,0 @@
1/* ip_mp_alg.h: IPV4 multipath algorithm support, user-visible values.
2 *
3 * Copyright (C) 2004, 2005 Einar Lueck <elueck@de.ibm.com>
4 * Copyright (C) 2005 David S. Miller <davem@davemloft.net>
5 */
6
7#ifndef _LINUX_IP_MP_ALG_H
8#define _LINUX_IP_MP_ALG_H
9
10enum ip_mp_alg {
11 IP_MP_ALG_NONE,
12 IP_MP_ALG_RR,
13 IP_MP_ALG_DRR,
14 IP_MP_ALG_RANDOM,
15 IP_MP_ALG_WRANDOM,
16 __IP_MP_ALG_MAX
17};
18
19#define IP_MP_ALG_MAX (__IP_MP_ALG_MAX - 1)
20
21#endif /* _LINUX_IP_MP_ALG_H */
22
diff --git a/include/linux/ipv6.h b/include/linux/ipv6.h
index 648bd1f0912d..97983dc9df13 100644
--- a/include/linux/ipv6.h
+++ b/include/linux/ipv6.h
@@ -27,8 +27,8 @@ struct in6_ifreq {
27 int ifr6_ifindex; 27 int ifr6_ifindex;
28}; 28};
29 29
30#define IPV6_SRCRT_STRICT 0x01 /* this hop must be a neighbor */ 30#define IPV6_SRCRT_STRICT 0x01 /* Deprecated; will be removed */
31#define IPV6_SRCRT_TYPE_0 0 /* IPv6 type 0 Routing Header */ 31#define IPV6_SRCRT_TYPE_0 0 /* Deprecated; will be removed */
32#define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */ 32#define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */
33 33
34/* 34/*
@@ -247,7 +247,7 @@ struct inet6_skb_parm {
247 __u16 lastopt; 247 __u16 lastopt;
248 __u32 nhoff; 248 __u32 nhoff;
249 __u16 flags; 249 __u16 flags;
250#ifdef CONFIG_IPV6_MIP6 250#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
251 __u16 dsthao; 251 __u16 dsthao;
252#endif 252#endif
253 253
@@ -299,8 +299,8 @@ struct ipv6_pinfo {
299 /* pktoption flags */ 299 /* pktoption flags */
300 union { 300 union {
301 struct { 301 struct {
302 __u16 srcrt:2, 302 __u16 srcrt:1,
303 osrcrt:2, 303 osrcrt:1,
304 rxinfo:1, 304 rxinfo:1,
305 rxoinfo:1, 305 rxoinfo:1,
306 rxhlim:1, 306 rxhlim:1,
diff --git a/include/linux/irda.h b/include/linux/irda.h
index 945ba3110874..8e3735714c1c 100644
--- a/include/linux/irda.h
+++ b/include/linux/irda.h
@@ -216,6 +216,34 @@ struct if_irda_req {
216#define ifr_dtr ifr_ifru.ifru_line.dtr 216#define ifr_dtr ifr_ifru.ifru_line.dtr
217#define ifr_rts ifr_ifru.ifru_line.rts 217#define ifr_rts ifr_ifru.ifru_line.rts
218 218
219
220/* IrDA netlink definitions */
221#define IRDA_NL_NAME "irda"
222#define IRDA_NL_VERSION 1
223
224enum irda_nl_commands {
225 IRDA_NL_CMD_UNSPEC,
226 IRDA_NL_CMD_SET_MODE,
227 IRDA_NL_CMD_GET_MODE,
228
229 __IRDA_NL_CMD_AFTER_LAST
230};
231#define IRDA_NL_CMD_MAX (__IRDA_NL_CMD_AFTER_LAST - 1)
232
233enum nl80211_attrs {
234 IRDA_NL_ATTR_UNSPEC,
235 IRDA_NL_ATTR_IFNAME,
236 IRDA_NL_ATTR_MODE,
237
238 __IRDA_NL_ATTR_AFTER_LAST
239};
240#define IRDA_NL_ATTR_MAX (__IRDA_NL_ATTR_AFTER_LAST - 1)
241
242/* IrDA modes */
243#define IRDA_MODE_PRIMARY 0x1
244#define IRDA_MODE_SECONDARY 0x2
245#define IRDA_MODE_MONITOR 0x4
246
219#endif /* KERNEL_IRDA_H */ 247#endif /* KERNEL_IRDA_H */
220 248
221 249
diff --git a/include/linux/kobject.h b/include/linux/kobject.h
index c288e41ba331..06cbf41d32d2 100644
--- a/include/linux/kobject.h
+++ b/include/linux/kobject.h
@@ -55,7 +55,7 @@ struct kobject {
55 struct kobject * parent; 55 struct kobject * parent;
56 struct kset * kset; 56 struct kset * kset;
57 struct kobj_type * ktype; 57 struct kobj_type * ktype;
58 struct dentry * dentry; 58 struct sysfs_dirent * sd;
59 wait_queue_head_t poll; 59 wait_queue_head_t poll;
60}; 60};
61 61
@@ -71,13 +71,14 @@ extern void kobject_init(struct kobject *);
71extern void kobject_cleanup(struct kobject *); 71extern void kobject_cleanup(struct kobject *);
72 72
73extern int __must_check kobject_add(struct kobject *); 73extern int __must_check kobject_add(struct kobject *);
74extern int __must_check kobject_shadow_add(struct kobject *, struct dentry *); 74extern int __must_check kobject_shadow_add(struct kobject *kobj,
75 struct sysfs_dirent *shadow_parent);
75extern void kobject_del(struct kobject *); 76extern void kobject_del(struct kobject *);
76 77
77extern int __must_check kobject_rename(struct kobject *, const char *new_name); 78extern int __must_check kobject_rename(struct kobject *, const char *new_name);
78extern int __must_check kobject_shadow_rename(struct kobject *kobj, 79extern int __must_check kobject_shadow_rename(struct kobject *kobj,
79 struct dentry *new_parent, 80 struct sysfs_dirent *new_parent,
80 const char *new_name); 81 const char *new_name);
81extern int __must_check kobject_move(struct kobject *, struct kobject *); 82extern int __must_check kobject_move(struct kobject *, struct kobject *);
82 83
83extern int __must_check kobject_register(struct kobject *); 84extern int __must_check kobject_register(struct kobject *);
diff --git a/include/linux/ktime.h b/include/linux/ktime.h
index 2b139f66027f..dae7143644fe 100644
--- a/include/linux/ktime.h
+++ b/include/linux/ktime.h
@@ -279,6 +279,16 @@ static inline s64 ktime_to_us(const ktime_t kt)
279 return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec; 279 return (s64) tv.tv_sec * USEC_PER_SEC + tv.tv_usec;
280} 280}
281 281
282static inline s64 ktime_us_delta(const ktime_t later, const ktime_t earlier)
283{
284 return ktime_to_us(ktime_sub(later, earlier));
285}
286
287static inline ktime_t ktime_add_us(const ktime_t kt, const u64 usec)
288{
289 return ktime_add_ns(kt, usec * 1000);
290}
291
282/* 292/*
283 * The resolution of the clocks. The resolution value is returned in 293 * The resolution of the clocks. The resolution value is returned in
284 * the clock_getres() system call to give application programmers an 294 * the clock_getres() system call to give application programmers an
diff --git a/include/linux/libata.h b/include/linux/libata.h
index a3df64677ac3..47cd2a1c5544 100644
--- a/include/linux/libata.h
+++ b/include/linux/libata.h
@@ -196,7 +196,6 @@ enum {
196 ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), /* SCSI hotplug scheduled */ 196 ATA_PFLAG_SCSI_HOTPLUG = (1 << 6), /* SCSI hotplug scheduled */
197 ATA_PFLAG_INITIALIZING = (1 << 7), /* being initialized, don't touch */ 197 ATA_PFLAG_INITIALIZING = (1 << 7), /* being initialized, don't touch */
198 198
199 ATA_PFLAG_FLUSH_PORT_TASK = (1 << 16), /* flush port task */
200 ATA_PFLAG_SUSPENDED = (1 << 17), /* port is suspended (power) */ 199 ATA_PFLAG_SUSPENDED = (1 << 17), /* port is suspended (power) */
201 ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */ 200 ATA_PFLAG_PM_PENDING = (1 << 18), /* PM operation pending */
202 ATA_PFLAG_GTM_VALID = (1 << 19), /* acpi_gtm data valid */ 201 ATA_PFLAG_GTM_VALID = (1 << 19), /* acpi_gtm data valid */
@@ -435,6 +434,7 @@ struct ata_device {
435 struct ata_port *ap; 434 struct ata_port *ap;
436 unsigned int devno; /* 0 or 1 */ 435 unsigned int devno; /* 0 or 1 */
437 unsigned long flags; /* ATA_DFLAG_xxx */ 436 unsigned long flags; /* ATA_DFLAG_xxx */
437 unsigned int horkage; /* List of broken features */
438 struct scsi_device *sdev; /* attached SCSI device */ 438 struct scsi_device *sdev; /* attached SCSI device */
439#ifdef CONFIG_ATA_ACPI 439#ifdef CONFIG_ATA_ACPI
440 acpi_handle acpi_handle; 440 acpi_handle acpi_handle;
@@ -466,7 +466,6 @@ struct ata_device {
466 /* error history */ 466 /* error history */
467 struct ata_ering ering; 467 struct ata_ering ering;
468 int spdn_cnt; 468 int spdn_cnt;
469 unsigned int horkage; /* List of broken features */
470}; 469};
471 470
472/* Offset into struct ata_device. Fields above it are maintained 471/* Offset into struct ata_device. Fields above it are maintained
@@ -794,7 +793,6 @@ extern void ata_id_string(const u16 *id, unsigned char *s,
794extern void ata_id_c_string(const u16 *id, unsigned char *s, 793extern void ata_id_c_string(const u16 *id, unsigned char *s,
795 unsigned int ofs, unsigned int len); 794 unsigned int ofs, unsigned int len);
796extern void ata_id_to_dma_mode(struct ata_device *dev, u8 unknown); 795extern void ata_id_to_dma_mode(struct ata_device *dev, u8 unknown);
797extern unsigned long ata_device_blacklisted(const struct ata_device *dev);
798extern void ata_bmdma_setup (struct ata_queued_cmd *qc); 796extern void ata_bmdma_setup (struct ata_queued_cmd *qc);
799extern void ata_bmdma_start (struct ata_queued_cmd *qc); 797extern void ata_bmdma_start (struct ata_queued_cmd *qc);
800extern void ata_bmdma_stop(struct ata_queued_cmd *qc); 798extern void ata_bmdma_stop(struct ata_queued_cmd *qc);
@@ -871,11 +869,11 @@ struct pci_bits {
871 unsigned long val; 869 unsigned long val;
872}; 870};
873 871
874extern int ata_pci_init_native_host(struct ata_host *host); 872extern int ata_pci_init_sff_host(struct ata_host *host);
875extern int ata_pci_init_bmdma(struct ata_host *host); 873extern int ata_pci_init_bmdma(struct ata_host *host);
876extern int ata_pci_prepare_native_host(struct pci_dev *pdev, 874extern int ata_pci_prepare_sff_host(struct pci_dev *pdev,
877 const struct ata_port_info * const * ppi, 875 const struct ata_port_info * const * ppi,
878 struct ata_host **r_host); 876 struct ata_host **r_host);
879extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits); 877extern int pci_test_config_bits(struct pci_dev *pdev, const struct pci_bits *bits);
880extern unsigned long ata_pci_default_filter(struct ata_device *, unsigned long); 878extern unsigned long ata_pci_default_filter(struct ata_device *, unsigned long);
881#endif /* CONFIG_PCI */ 879#endif /* CONFIG_PCI */
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h
index b372f5910fc1..cfb78fb2c046 100644
--- a/include/linux/mlx4/device.h
+++ b/include/linux/mlx4/device.h
@@ -172,6 +172,7 @@ struct mlx4_caps {
172 int num_pds; 172 int num_pds;
173 int reserved_pds; 173 int reserved_pds;
174 int mtt_entry_sz; 174 int mtt_entry_sz;
175 u32 max_msg_sz;
175 u32 page_size_cap; 176 u32 page_size_cap;
176 u32 flags; 177 u32 flags;
177 u16 stat_rate_support; 178 u16 stat_rate_support;
@@ -322,6 +323,7 @@ int mlx4_srq_alloc(struct mlx4_dev *dev, u32 pdn, struct mlx4_mtt *mtt,
322 u64 db_rec, struct mlx4_srq *srq); 323 u64 db_rec, struct mlx4_srq *srq);
323void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq); 324void mlx4_srq_free(struct mlx4_dev *dev, struct mlx4_srq *srq);
324int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark); 325int mlx4_srq_arm(struct mlx4_dev *dev, struct mlx4_srq *srq, int limit_watermark);
326int mlx4_srq_query(struct mlx4_dev *dev, struct mlx4_srq *srq, int *limit_watermark);
325 327
326int mlx4_INIT_PORT(struct mlx4_dev *dev, int port); 328int mlx4_INIT_PORT(struct mlx4_dev *dev, int port);
327int mlx4_CLOSE_PORT(struct mlx4_dev *dev, int port); 329int mlx4_CLOSE_PORT(struct mlx4_dev *dev, int port);
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h
index 10c57d279144..3968b943259a 100644
--- a/include/linux/mlx4/qp.h
+++ b/include/linux/mlx4/qp.h
@@ -282,6 +282,9 @@ int mlx4_qp_modify(struct mlx4_dev *dev, struct mlx4_mtt *mtt,
282 struct mlx4_qp_context *context, enum mlx4_qp_optpar optpar, 282 struct mlx4_qp_context *context, enum mlx4_qp_optpar optpar,
283 int sqd_event, struct mlx4_qp *qp); 283 int sqd_event, struct mlx4_qp *qp);
284 284
285int mlx4_qp_query(struct mlx4_dev *dev, struct mlx4_qp *qp,
286 struct mlx4_qp_context *context);
287
285static inline struct mlx4_qp *__mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn) 288static inline struct mlx4_qp *__mlx4_qp_lookup(struct mlx4_dev *dev, u32 qpn)
286{ 289{
287 return radix_tree_lookup(&dev->qp_table_tree, qpn & (dev->caps.num_qps - 1)); 290 return radix_tree_lookup(&dev->qp_table_tree, qpn & (dev->caps.num_qps - 1));
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 3a70f553b28f..79cc3dab4be7 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -108,6 +108,14 @@ struct wireless_dev;
108#define MAX_HEADER (LL_MAX_HEADER + 48) 108#define MAX_HEADER (LL_MAX_HEADER + 48)
109#endif 109#endif
110 110
111struct net_device_subqueue
112{
113 /* Give a control state for each queue. This struct may contain
114 * per-queue locks in the future.
115 */
116 unsigned long state;
117};
118
111/* 119/*
112 * Network device statistics. Akin to the 2.0 ether stats but 120 * Network device statistics. Akin to the 2.0 ether stats but
113 * with byte counters. 121 * with byte counters.
@@ -177,19 +185,24 @@ struct netif_rx_stats
177 185
178DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat); 186DECLARE_PER_CPU(struct netif_rx_stats, netdev_rx_stat);
179 187
188struct dev_addr_list
189{
190 struct dev_addr_list *next;
191 u8 da_addr[MAX_ADDR_LEN];
192 u8 da_addrlen;
193 int da_users;
194 int da_gusers;
195};
180 196
181/* 197/*
182 * We tag multicasts with these structures. 198 * We tag multicasts with these structures.
183 */ 199 */
184 200
185struct dev_mc_list 201#define dev_mc_list dev_addr_list
186{ 202#define dmi_addr da_addr
187 struct dev_mc_list *next; 203#define dmi_addrlen da_addrlen
188 __u8 dmi_addr[MAX_ADDR_LEN]; 204#define dmi_users da_users
189 unsigned char dmi_addrlen; 205#define dmi_gusers da_gusers
190 int dmi_users;
191 int dmi_gusers;
192};
193 206
194struct hh_cache 207struct hh_cache
195{ 208{
@@ -248,6 +261,8 @@ enum netdev_state_t
248 __LINK_STATE_LINKWATCH_PENDING, 261 __LINK_STATE_LINKWATCH_PENDING,
249 __LINK_STATE_DORMANT, 262 __LINK_STATE_DORMANT,
250 __LINK_STATE_QDISC_RUNNING, 263 __LINK_STATE_QDISC_RUNNING,
264 /* Set by the netpoll NAPI code */
265 __LINK_STATE_POLL_LIST_FROZEN,
251}; 266};
252 267
253 268
@@ -314,9 +329,10 @@ struct net_device
314 /* Net device features */ 329 /* Net device features */
315 unsigned long features; 330 unsigned long features;
316#define NETIF_F_SG 1 /* Scatter/gather IO. */ 331#define NETIF_F_SG 1 /* Scatter/gather IO. */
317#define NETIF_F_IP_CSUM 2 /* Can checksum only TCP/UDP over IPv4. */ 332#define NETIF_F_IP_CSUM 2 /* Can checksum TCP/UDP over IPv4. */
318#define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */ 333#define NETIF_F_NO_CSUM 4 /* Does not require checksum. F.e. loopack. */
319#define NETIF_F_HW_CSUM 8 /* Can checksum all the packets. */ 334#define NETIF_F_HW_CSUM 8 /* Can checksum all the packets. */
335#define NETIF_F_IPV6_CSUM 16 /* Can checksum TCP/UDP over IPV6 */
320#define NETIF_F_HIGHDMA 32 /* Can DMA to high memory. */ 336#define NETIF_F_HIGHDMA 32 /* Can DMA to high memory. */
321#define NETIF_F_FRAGLIST 64 /* Scatter/gather IO. */ 337#define NETIF_F_FRAGLIST 64 /* Scatter/gather IO. */
322#define NETIF_F_HW_VLAN_TX 128 /* Transmit VLAN hw acceleration */ 338#define NETIF_F_HW_VLAN_TX 128 /* Transmit VLAN hw acceleration */
@@ -325,6 +341,7 @@ struct net_device
325#define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */ 341#define NETIF_F_VLAN_CHALLENGED 1024 /* Device cannot handle VLAN packets */
326#define NETIF_F_GSO 2048 /* Enable software GSO. */ 342#define NETIF_F_GSO 2048 /* Enable software GSO. */
327#define NETIF_F_LLTX 4096 /* LockLess TX */ 343#define NETIF_F_LLTX 4096 /* LockLess TX */
344#define NETIF_F_MULTI_QUEUE 16384 /* Has multiple TX/RX queues */
328 345
329 /* Segmentation offload features */ 346 /* Segmentation offload features */
330#define NETIF_F_GSO_SHIFT 16 347#define NETIF_F_GSO_SHIFT 16
@@ -338,8 +355,11 @@ struct net_device
338 /* List of features with software fallbacks. */ 355 /* List of features with software fallbacks. */
339#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6) 356#define NETIF_F_GSO_SOFTWARE (NETIF_F_TSO | NETIF_F_TSO_ECN | NETIF_F_TSO6)
340 357
358
341#define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM) 359#define NETIF_F_GEN_CSUM (NETIF_F_NO_CSUM | NETIF_F_HW_CSUM)
342#define NETIF_F_ALL_CSUM (NETIF_F_IP_CSUM | NETIF_F_GEN_CSUM) 360#define NETIF_F_V4_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IP_CSUM)
361#define NETIF_F_V6_CSUM (NETIF_F_GEN_CSUM | NETIF_F_IPV6_CSUM)
362#define NETIF_F_ALL_CSUM (NETIF_F_V4_CSUM | NETIF_F_V6_CSUM)
343 363
344 struct net_device *next_sched; 364 struct net_device *next_sched;
345 365
@@ -388,7 +408,10 @@ struct net_device
388 unsigned char addr_len; /* hardware address length */ 408 unsigned char addr_len; /* hardware address length */
389 unsigned short dev_id; /* for shared network cards */ 409 unsigned short dev_id; /* for shared network cards */
390 410
391 struct dev_mc_list *mc_list; /* Multicast mac addresses */ 411 struct dev_addr_list *uc_list; /* Secondary unicast mac addresses */
412 int uc_count; /* Number of installed ucasts */
413 int uc_promisc;
414 struct dev_addr_list *mc_list; /* Multicast mac addresses */
392 int mc_count; /* Number of installed mcasts */ 415 int mc_count; /* Number of installed mcasts */
393 int promiscuity; 416 int promiscuity;
394 int allmulti; 417 int allmulti;
@@ -493,6 +516,8 @@ struct net_device
493 void *saddr, 516 void *saddr,
494 unsigned len); 517 unsigned len);
495 int (*rebuild_header)(struct sk_buff *skb); 518 int (*rebuild_header)(struct sk_buff *skb);
519#define HAVE_SET_RX_MODE
520 void (*set_rx_mode)(struct net_device *dev);
496#define HAVE_MULTICAST 521#define HAVE_MULTICAST
497 void (*set_multicast_list)(struct net_device *dev); 522 void (*set_multicast_list)(struct net_device *dev);
498#define HAVE_SET_MAC_ADDR 523#define HAVE_SET_MAC_ADDR
@@ -540,17 +565,22 @@ struct net_device
540 struct device dev; 565 struct device dev;
541 /* space for optional statistics and wireless sysfs groups */ 566 /* space for optional statistics and wireless sysfs groups */
542 struct attribute_group *sysfs_groups[3]; 567 struct attribute_group *sysfs_groups[3];
568
569 /* rtnetlink link ops */
570 const struct rtnl_link_ops *rtnl_link_ops;
571
572 /* The TX queue control structures */
573 unsigned int egress_subqueue_count;
574 struct net_device_subqueue egress_subqueue[0];
543}; 575};
544#define to_net_dev(d) container_of(d, struct net_device, dev) 576#define to_net_dev(d) container_of(d, struct net_device, dev)
545 577
546#define NETDEV_ALIGN 32 578#define NETDEV_ALIGN 32
547#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1) 579#define NETDEV_ALIGN_CONST (NETDEV_ALIGN - 1)
548 580
549static inline void *netdev_priv(struct net_device *dev) 581static inline void *netdev_priv(const struct net_device *dev)
550{ 582{
551 return (char *)dev + ((sizeof(struct net_device) 583 return dev->priv;
552 + NETDEV_ALIGN_CONST)
553 & ~NETDEV_ALIGN_CONST);
554} 584}
555 585
556#define SET_MODULE_OWNER(dev) do { } while (0) 586#define SET_MODULE_OWNER(dev) do { } while (0)
@@ -702,6 +732,62 @@ static inline int netif_running(const struct net_device *dev)
702 return test_bit(__LINK_STATE_START, &dev->state); 732 return test_bit(__LINK_STATE_START, &dev->state);
703} 733}
704 734
735/*
736 * Routines to manage the subqueues on a device. We only need start
737 * stop, and a check if it's stopped. All other device management is
738 * done at the overall netdevice level.
739 * Also test the device if we're multiqueue.
740 */
741static inline void netif_start_subqueue(struct net_device *dev, u16 queue_index)
742{
743#ifdef CONFIG_NETDEVICES_MULTIQUEUE
744 clear_bit(__LINK_STATE_XOFF, &dev->egress_subqueue[queue_index].state);
745#endif
746}
747
748static inline void netif_stop_subqueue(struct net_device *dev, u16 queue_index)
749{
750#ifdef CONFIG_NETDEVICES_MULTIQUEUE
751#ifdef CONFIG_NETPOLL_TRAP
752 if (netpoll_trap())
753 return;
754#endif
755 set_bit(__LINK_STATE_XOFF, &dev->egress_subqueue[queue_index].state);
756#endif
757}
758
759static inline int netif_subqueue_stopped(const struct net_device *dev,
760 u16 queue_index)
761{
762#ifdef CONFIG_NETDEVICES_MULTIQUEUE
763 return test_bit(__LINK_STATE_XOFF,
764 &dev->egress_subqueue[queue_index].state);
765#else
766 return 0;
767#endif
768}
769
770static inline void netif_wake_subqueue(struct net_device *dev, u16 queue_index)
771{
772#ifdef CONFIG_NETDEVICES_MULTIQUEUE
773#ifdef CONFIG_NETPOLL_TRAP
774 if (netpoll_trap())
775 return;
776#endif
777 if (test_and_clear_bit(__LINK_STATE_XOFF,
778 &dev->egress_subqueue[queue_index].state))
779 __netif_schedule(dev);
780#endif
781}
782
783static inline int netif_is_multiqueue(const struct net_device *dev)
784{
785#ifdef CONFIG_NETDEVICES_MULTIQUEUE
786 return (!!(NETIF_F_MULTI_QUEUE & dev->features));
787#else
788 return 0;
789#endif
790}
705 791
706/* Use this variant when it is known for sure that it 792/* Use this variant when it is known for sure that it
707 * is executing from interrupt context. 793 * is executing from interrupt context.
@@ -930,6 +1016,14 @@ static inline void netif_rx_complete(struct net_device *dev)
930{ 1016{
931 unsigned long flags; 1017 unsigned long flags;
932 1018
1019#ifdef CONFIG_NETPOLL
1020 /* Prevent race with netpoll - yes, this is a kludge.
1021 * But at least it doesn't penalize the non-netpoll
1022 * code path. */
1023 if (test_bit(__LINK_STATE_POLL_LIST_FROZEN, &dev->state))
1024 return;
1025#endif
1026
933 local_irq_save(flags); 1027 local_irq_save(flags);
934 __netif_rx_complete(dev); 1028 __netif_rx_complete(dev);
935 local_irq_restore(flags); 1029 local_irq_restore(flags);
@@ -992,15 +1086,24 @@ static inline void netif_tx_disable(struct net_device *dev)
992extern void ether_setup(struct net_device *dev); 1086extern void ether_setup(struct net_device *dev);
993 1087
994/* Support for loadable net-drivers */ 1088/* Support for loadable net-drivers */
995extern struct net_device *alloc_netdev(int sizeof_priv, const char *name, 1089extern struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,
996 void (*setup)(struct net_device *)); 1090 void (*setup)(struct net_device *),
1091 unsigned int queue_count);
1092#define alloc_netdev(sizeof_priv, name, setup) \
1093 alloc_netdev_mq(sizeof_priv, name, setup, 1)
997extern int register_netdev(struct net_device *dev); 1094extern int register_netdev(struct net_device *dev);
998extern void unregister_netdev(struct net_device *dev); 1095extern void unregister_netdev(struct net_device *dev);
999/* Functions used for multicast support */ 1096/* Functions used for secondary unicast and multicast support */
1000extern void dev_mc_upload(struct net_device *dev); 1097extern void dev_set_rx_mode(struct net_device *dev);
1098extern void __dev_set_rx_mode(struct net_device *dev);
1099extern int dev_unicast_delete(struct net_device *dev, void *addr, int alen);
1100extern int dev_unicast_add(struct net_device *dev, void *addr, int alen);
1001extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all); 1101extern int dev_mc_delete(struct net_device *dev, void *addr, int alen, int all);
1002extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly); 1102extern int dev_mc_add(struct net_device *dev, void *addr, int alen, int newonly);
1003extern void dev_mc_discard(struct net_device *dev); 1103extern void dev_mc_discard(struct net_device *dev);
1104extern int __dev_addr_delete(struct dev_addr_list **list, int *count, void *addr, int alen, int all);
1105extern int __dev_addr_add(struct dev_addr_list **list, int *count, void *addr, int alen, int newonly);
1106extern void __dev_addr_discard(struct dev_addr_list **list);
1004extern void dev_set_promiscuity(struct net_device *dev, int inc); 1107extern void dev_set_promiscuity(struct net_device *dev, int inc);
1005extern void dev_set_allmulti(struct net_device *dev, int inc); 1108extern void dev_set_allmulti(struct net_device *dev, int inc);
1006extern void netdev_state_change(struct net_device *dev); 1109extern void netdev_state_change(struct net_device *dev);
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h
index 10b5c6275706..0eed0b7ab2df 100644
--- a/include/linux/netfilter.h
+++ b/include/linux/netfilter.h
@@ -275,7 +275,8 @@ struct nf_queue_handler {
275}; 275};
276extern int nf_register_queue_handler(int pf, 276extern int nf_register_queue_handler(int pf,
277 struct nf_queue_handler *qh); 277 struct nf_queue_handler *qh);
278extern int nf_unregister_queue_handler(int pf); 278extern int nf_unregister_queue_handler(int pf,
279 struct nf_queue_handler *qh);
279extern void nf_unregister_queue_handlers(struct nf_queue_handler *qh); 280extern void nf_unregister_queue_handlers(struct nf_queue_handler *qh);
280extern void nf_reinject(struct sk_buff *skb, 281extern void nf_reinject(struct sk_buff *skb,
281 struct nf_info *info, 282 struct nf_info *info,
diff --git a/include/linux/netfilter/nf_conntrack_pptp.h b/include/linux/netfilter/nf_conntrack_pptp.h
index 9d8144a488cd..c93061f33144 100644
--- a/include/linux/netfilter/nf_conntrack_pptp.h
+++ b/include/linux/netfilter/nf_conntrack_pptp.h
@@ -4,6 +4,8 @@
4 4
5#include <linux/netfilter/nf_conntrack_common.h> 5#include <linux/netfilter/nf_conntrack_common.h>
6 6
7extern const char *pptp_msg_name[];
8
7/* state of the control session */ 9/* state of the control session */
8enum pptp_ctrlsess_state { 10enum pptp_ctrlsess_state {
9 PPTP_SESSION_NONE, /* no session present */ 11 PPTP_SESSION_NONE, /* no session present */
diff --git a/include/linux/netfilter/x_tables.h b/include/linux/netfilter/x_tables.h
index 7e733a6ba4f6..64f425a855bb 100644
--- a/include/linux/netfilter/x_tables.h
+++ b/include/linux/netfilter/x_tables.h
@@ -141,22 +141,22 @@ struct xt_match
141 /* Arguments changed since 2.6.9, as this must now handle 141 /* Arguments changed since 2.6.9, as this must now handle
142 non-linear skb, using skb_header_pointer and 142 non-linear skb, using skb_header_pointer and
143 skb_ip_make_writable. */ 143 skb_ip_make_writable. */
144 int (*match)(const struct sk_buff *skb, 144 bool (*match)(const struct sk_buff *skb,
145 const struct net_device *in, 145 const struct net_device *in,
146 const struct net_device *out, 146 const struct net_device *out,
147 const struct xt_match *match, 147 const struct xt_match *match,
148 const void *matchinfo, 148 const void *matchinfo,
149 int offset, 149 int offset,
150 unsigned int protoff, 150 unsigned int protoff,
151 int *hotdrop); 151 bool *hotdrop);
152 152
153 /* Called when user tries to insert an entry of this type. */ 153 /* Called when user tries to insert an entry of this type. */
154 /* Should return true or false. */ 154 /* Should return true or false. */
155 int (*checkentry)(const char *tablename, 155 bool (*checkentry)(const char *tablename,
156 const void *ip, 156 const void *ip,
157 const struct xt_match *match, 157 const struct xt_match *match,
158 void *matchinfo, 158 void *matchinfo,
159 unsigned int hook_mask); 159 unsigned int hook_mask);
160 160
161 /* Called when entry of this type deleted. */ 161 /* Called when entry of this type deleted. */
162 void (*destroy)(const struct xt_match *match, void *matchinfo); 162 void (*destroy)(const struct xt_match *match, void *matchinfo);
@@ -202,11 +202,11 @@ struct xt_target
202 hook_mask is a bitmask of hooks from which it can be 202 hook_mask is a bitmask of hooks from which it can be
203 called. */ 203 called. */
204 /* Should return true or false. */ 204 /* Should return true or false. */
205 int (*checkentry)(const char *tablename, 205 bool (*checkentry)(const char *tablename,
206 const void *entry, 206 const void *entry,
207 const struct xt_target *target, 207 const struct xt_target *target,
208 void *targinfo, 208 void *targinfo,
209 unsigned int hook_mask); 209 unsigned int hook_mask);
210 210
211 /* Called when entry of this type deleted. */ 211 /* Called when entry of this type deleted. */
212 void (*destroy)(const struct xt_target *target, void *targinfo); 212 void (*destroy)(const struct xt_target *target, void *targinfo);
diff --git a/include/linux/netfilter/xt_u32.h b/include/linux/netfilter/xt_u32.h
new file mode 100644
index 000000000000..9947f56cdbdd
--- /dev/null
+++ b/include/linux/netfilter/xt_u32.h
@@ -0,0 +1,40 @@
1#ifndef _XT_U32_H
2#define _XT_U32_H 1
3
4enum xt_u32_ops {
5 XT_U32_AND,
6 XT_U32_LEFTSH,
7 XT_U32_RIGHTSH,
8 XT_U32_AT,
9};
10
11struct xt_u32_location_element {
12 u_int32_t number;
13 u_int8_t nextop;
14};
15
16struct xt_u32_value_element {
17 u_int32_t min;
18 u_int32_t max;
19};
20
21/*
22 * Any way to allow for an arbitrary number of elements?
23 * For now, I settle with a limit of 10 each.
24 */
25#define XT_U32_MAXSIZE 10
26
27struct xt_u32_test {
28 struct xt_u32_location_element location[XT_U32_MAXSIZE+1];
29 struct xt_u32_value_element value[XT_U32_MAXSIZE+1];
30 u_int8_t nnums;
31 u_int8_t nvalues;
32};
33
34struct xt_u32 {
35 struct xt_u32_test tests[XT_U32_MAXSIZE+1];
36 u_int8_t ntests;
37 u_int8_t invert;
38};
39
40#endif /* _XT_U32_H */
diff --git a/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h b/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
index d9bceedfb3dc..daf50be22c9d 100644
--- a/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
+++ b/include/linux/netfilter_ipv4/ipt_CLUSTERIP.h
@@ -18,13 +18,13 @@ struct clusterip_config;
18struct ipt_clusterip_tgt_info { 18struct ipt_clusterip_tgt_info {
19 19
20 u_int32_t flags; 20 u_int32_t flags;
21 21
22 /* only relevant for new ones */ 22 /* only relevant for new ones */
23 u_int8_t clustermac[6]; 23 u_int8_t clustermac[6];
24 u_int16_t num_total_nodes; 24 u_int16_t num_total_nodes;
25 u_int16_t num_local_nodes; 25 u_int16_t num_local_nodes;
26 u_int16_t local_nodes[CLUSTERIP_MAX_NODES]; 26 u_int16_t local_nodes[CLUSTERIP_MAX_NODES];
27 enum clusterip_hashmode hash_mode; 27 u_int32_t hash_mode;
28 u_int32_t hash_initval; 28 u_int32_t hash_initval;
29 29
30 struct clusterip_config *config; 30 struct clusterip_config *config;
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h
index 4686f8342cbd..9a720f05888f 100644
--- a/include/linux/netfilter_ipv6/ip6_tables.h
+++ b/include/linux/netfilter_ipv6/ip6_tables.h
@@ -44,8 +44,14 @@ struct ip6t_ip6 {
44 char iniface[IFNAMSIZ], outiface[IFNAMSIZ]; 44 char iniface[IFNAMSIZ], outiface[IFNAMSIZ];
45 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ]; 45 unsigned char iniface_mask[IFNAMSIZ], outiface_mask[IFNAMSIZ];
46 46
47 /* ARGH, HopByHop uses 0, so can't do 0 = ANY, 47 /* Upper protocol number
48 instead IP6T_F_NOPROTO must be set */ 48 * - The allowed value is 0 (any) or protocol number of last parsable
49 * header, which is 50 (ESP), 59 (No Next Header), 135 (MH), or
50 * the non IPv6 extension headers.
51 * - The protocol numbers of IPv6 extension headers except of ESP and
52 * MH do not match any packets.
53 * - You also need to set IP6T_FLAGS_PROTO to "flags" to check protocol.
54 */
49 u_int16_t proto; 55 u_int16_t proto;
50 /* TOS to match iff flags & IP6T_F_TOS */ 56 /* TOS to match iff flags & IP6T_F_TOS */
51 u_int8_t tos; 57 u_int8_t tos;
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 086a0e5a6318..37a71580ad8a 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -111,7 +111,8 @@ enum pcie_reset_state {
111 111
112typedef unsigned short __bitwise pci_bus_flags_t; 112typedef unsigned short __bitwise pci_bus_flags_t;
113enum pci_bus_flags { 113enum pci_bus_flags {
114 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1, 114 PCI_BUS_FLAGS_NO_MSI = (__force pci_bus_flags_t) 1,
115 PCI_BUS_FLAGS_NO_MMRBC = (__force pci_bus_flags_t) 2,
115}; 116};
116 117
117struct pci_cap_saved_state { 118struct pci_cap_saved_state {
@@ -138,6 +139,7 @@ struct pci_dev {
138 unsigned short subsystem_vendor; 139 unsigned short subsystem_vendor;
139 unsigned short subsystem_device; 140 unsigned short subsystem_device;
140 unsigned int class; /* 3 bytes: (base,sub,prog-if) */ 141 unsigned int class; /* 3 bytes: (base,sub,prog-if) */
142 u8 revision; /* PCI revision, low byte of class word */
141 u8 hdr_type; /* PCI header type (`multi' flag masked out) */ 143 u8 hdr_type; /* PCI header type (`multi' flag masked out) */
142 u8 rom_base_reg; /* which config register controls the ROM */ 144 u8 rom_base_reg; /* which config register controls the ROM */
143 u8 pin; /* which interrupt pin this device uses */ 145 u8 pin; /* which interrupt pin this device uses */
@@ -313,7 +315,7 @@ struct pci_dynids {
313 315
314/* ---------------------------------------------------------------- */ 316/* ---------------------------------------------------------------- */
315/** PCI Error Recovery System (PCI-ERS). If a PCI device driver provides 317/** PCI Error Recovery System (PCI-ERS). If a PCI device driver provides
316 * a set fof callbacks in struct pci_error_handlers, then that device driver 318 * a set of callbacks in struct pci_error_handlers, then that device driver
317 * will be notified of PCI bus errors, and will be driven to recovery 319 * will be notified of PCI bus errors, and will be driven to recovery
318 * when an error occurs. 320 * when an error occurs.
319 */ 321 */
@@ -370,7 +372,6 @@ struct pci_driver {
370 int (*suspend_late) (struct pci_dev *dev, pm_message_t state); 372 int (*suspend_late) (struct pci_dev *dev, pm_message_t state);
371 int (*resume_early) (struct pci_dev *dev); 373 int (*resume_early) (struct pci_dev *dev);
372 int (*resume) (struct pci_dev *dev); /* Device woken up */ 374 int (*resume) (struct pci_dev *dev); /* Device woken up */
373 int (*enable_wake) (struct pci_dev *dev, pci_power_t state, int enable); /* Enable wake event */
374 void (*shutdown) (struct pci_dev *dev); 375 void (*shutdown) (struct pci_dev *dev);
375 376
376 struct pci_error_handlers *err_handler; 377 struct pci_error_handlers *err_handler;
@@ -475,7 +476,7 @@ extern void pci_sort_breadthfirst(void);
475/* Generic PCI functions exported to card drivers */ 476/* Generic PCI functions exported to card drivers */
476 477
477struct pci_dev __deprecated *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from); 478struct pci_dev __deprecated *pci_find_device (unsigned int vendor, unsigned int device, const struct pci_dev *from);
478struct pci_dev *pci_find_slot (unsigned int bus, unsigned int devfn); 479struct pci_dev __deprecated *pci_find_slot (unsigned int bus, unsigned int devfn);
479int pci_find_capability (struct pci_dev *dev, int cap); 480int pci_find_capability (struct pci_dev *dev, int cap);
480int pci_find_next_capability (struct pci_dev *dev, u8 pos, int cap); 481int pci_find_next_capability (struct pci_dev *dev, u8 pos, int cap);
481int pci_find_ext_capability (struct pci_dev *dev, int cap); 482int pci_find_ext_capability (struct pci_dev *dev, int cap);
@@ -544,11 +545,16 @@ void pci_set_master(struct pci_dev *dev);
544int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state); 545int pci_set_pcie_reset_state(struct pci_dev *dev, enum pcie_reset_state state);
545#define HAVE_PCI_SET_MWI 546#define HAVE_PCI_SET_MWI
546int __must_check pci_set_mwi(struct pci_dev *dev); 547int __must_check pci_set_mwi(struct pci_dev *dev);
548int pci_try_set_mwi(struct pci_dev *dev);
547void pci_clear_mwi(struct pci_dev *dev); 549void pci_clear_mwi(struct pci_dev *dev);
548void pci_intx(struct pci_dev *dev, int enable); 550void pci_intx(struct pci_dev *dev, int enable);
549void pci_msi_off(struct pci_dev *dev); 551void pci_msi_off(struct pci_dev *dev);
550int pci_set_dma_mask(struct pci_dev *dev, u64 mask); 552int pci_set_dma_mask(struct pci_dev *dev, u64 mask);
551int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask); 553int pci_set_consistent_dma_mask(struct pci_dev *dev, u64 mask);
554int pcix_get_max_mmrbc(struct pci_dev *dev);
555int pcix_get_mmrbc(struct pci_dev *dev);
556int pcix_set_mmrbc(struct pci_dev *dev, int mmrbc);
557int pcie_set_readrq(struct pci_dev *dev, int rq);
552void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno); 558void pci_update_resource(struct pci_dev *dev, struct resource *res, int resno);
553int __must_check pci_assign_resource(struct pci_dev *dev, int i); 559int __must_check pci_assign_resource(struct pci_dev *dev, int i);
554int __must_check pci_assign_resource_fixed(struct pci_dev *dev, int i); 560int __must_check pci_assign_resource_fixed(struct pci_dev *dev, int i);
@@ -560,6 +566,7 @@ void __iomem __must_check *pci_map_rom(struct pci_dev *pdev, size_t *size);
560void __iomem __must_check *pci_map_rom_copy(struct pci_dev *pdev, size_t *size); 566void __iomem __must_check *pci_map_rom_copy(struct pci_dev *pdev, size_t *size);
561void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom); 567void pci_unmap_rom(struct pci_dev *pdev, void __iomem *rom);
562void pci_remove_rom(struct pci_dev *pdev); 568void pci_remove_rom(struct pci_dev *pdev);
569size_t pci_get_rom_size(void __iomem *rom, size_t size);
563 570
564/* Power management related routines */ 571/* Power management related routines */
565int pci_save_state(struct pci_dev *dev); 572int pci_save_state(struct pci_dev *dev);
@@ -876,5 +883,7 @@ extern int pci_pci_problems;
876extern unsigned long pci_cardbus_io_size; 883extern unsigned long pci_cardbus_io_size;
877extern unsigned long pci_cardbus_mem_size; 884extern unsigned long pci_cardbus_mem_size;
878 885
886extern int pcibios_add_platform_entries(struct pci_dev *dev);
887
879#endif /* __KERNEL__ */ 888#endif /* __KERNEL__ */
880#endif /* LINUX_PCI_H */ 889#endif /* LINUX_PCI_H */
diff --git a/include/linux/pci_ids.h b/include/linux/pci_ids.h
index 75c4d4d06892..9366182fffa7 100644
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
@@ -133,6 +133,9 @@
133 133
134/* Vendors and devices. Sort key: vendor first, device next. */ 134/* Vendors and devices. Sort key: vendor first, device next. */
135 135
136#define PCI_VENDOR_ID_TTTECH 0x0357
137#define PCI_DEVICE_ID_TTTECH_MC322 0x000a
138
136#define PCI_VENDOR_ID_DYNALINK 0x0675 139#define PCI_VENDOR_ID_DYNALINK 0x0675
137#define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702 140#define PCI_DEVICE_ID_DYNALINK_IS64PH 0x1702
138 141
@@ -371,6 +374,7 @@
371#define PCI_DEVICE_ID_ATI_IXP600_SMBUS 0x4385 374#define PCI_DEVICE_ID_ATI_IXP600_SMBUS 0x4385
372#define PCI_DEVICE_ID_ATI_IXP600_IDE 0x438c 375#define PCI_DEVICE_ID_ATI_IXP600_IDE 0x438c
373#define PCI_DEVICE_ID_ATI_IXP700_SATA 0x4390 376#define PCI_DEVICE_ID_ATI_IXP700_SATA 0x4390
377#define PCI_DEVICE_ID_ATI_IXP700_SMBUS 0x4395
374#define PCI_DEVICE_ID_ATI_IXP700_IDE 0x439c 378#define PCI_DEVICE_ID_ATI_IXP700_IDE 0x439c
375 379
376#define PCI_VENDOR_ID_VLSI 0x1004 380#define PCI_VENDOR_ID_VLSI 0x1004
@@ -732,7 +736,6 @@
732#define PCI_DEVICE_ID_ELSA_MICROLINK 0x1000 736#define PCI_DEVICE_ID_ELSA_MICROLINK 0x1000
733#define PCI_DEVICE_ID_ELSA_QS3000 0x3000 737#define PCI_DEVICE_ID_ELSA_QS3000 0x3000
734 738
735
736#define PCI_VENDOR_ID_BUSLOGIC 0x104B 739#define PCI_VENDOR_ID_BUSLOGIC 0x104B
737#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140 740#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER_NC 0x0140
738#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040 741#define PCI_DEVICE_ID_BUSLOGIC_MULTIMASTER 0x1040
@@ -778,7 +781,6 @@
778 781
779#define PCI_VENDOR_ID_SONY 0x104d 782#define PCI_VENDOR_ID_SONY 0x104d
780 783
781
782/* Winbond have two vendor IDs! See 0x10ad as well */ 784/* Winbond have two vendor IDs! See 0x10ad as well */
783#define PCI_VENDOR_ID_WINBOND2 0x1050 785#define PCI_VENDOR_ID_WINBOND2 0x1050
784#define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a 786#define PCI_DEVICE_ID_WINBOND2_89C940F 0x5a5a
@@ -816,7 +818,6 @@
816#define PCI_DEVICE_ID_PROMISE_20276 0x5275 818#define PCI_DEVICE_ID_PROMISE_20276 0x5275
817#define PCI_DEVICE_ID_PROMISE_20277 0x7275 819#define PCI_DEVICE_ID_PROMISE_20277 0x7275
818 820
819
820#define PCI_VENDOR_ID_UMC 0x1060 821#define PCI_VENDOR_ID_UMC 0x1060
821#define PCI_DEVICE_ID_UMC_UM8673F 0x0101 822#define PCI_DEVICE_ID_UMC_UM8673F 0x0101
822#define PCI_DEVICE_ID_UMC_UM8886BF 0x673a 823#define PCI_DEVICE_ID_UMC_UM8886BF 0x673a
@@ -832,7 +833,6 @@
832#define PCI_DEVICE_ID_MYLEX_DAC960_BA 0xBA56 833#define PCI_DEVICE_ID_MYLEX_DAC960_BA 0xBA56
833#define PCI_DEVICE_ID_MYLEX_DAC960_GEM 0xB166 834#define PCI_DEVICE_ID_MYLEX_DAC960_GEM 0xB166
834 835
835
836#define PCI_VENDOR_ID_APPLE 0x106b 836#define PCI_VENDOR_ID_APPLE 0x106b
837#define PCI_DEVICE_ID_APPLE_BANDIT 0x0001 837#define PCI_DEVICE_ID_APPLE_BANDIT 0x0001
838#define PCI_DEVICE_ID_APPLE_HYDRA 0x000e 838#define PCI_DEVICE_ID_APPLE_HYDRA 0x000e
@@ -868,7 +868,6 @@
868#define PCI_DEVICE_ID_YAMAHA_744 0x0010 868#define PCI_DEVICE_ID_YAMAHA_744 0x0010
869#define PCI_DEVICE_ID_YAMAHA_754 0x0012 869#define PCI_DEVICE_ID_YAMAHA_754 0x0012
870 870
871
872#define PCI_VENDOR_ID_QLOGIC 0x1077 871#define PCI_VENDOR_ID_QLOGIC 0x1077
873#define PCI_DEVICE_ID_QLOGIC_ISP10160 0x1016 872#define PCI_DEVICE_ID_QLOGIC_ISP10160 0x1016
874#define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020 873#define PCI_DEVICE_ID_QLOGIC_ISP1020 0x1020
@@ -899,12 +898,9 @@
899#define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103 898#define PCI_DEVICE_ID_CYRIX_5530_AUDIO 0x0103
900#define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104 899#define PCI_DEVICE_ID_CYRIX_5530_VIDEO 0x0104
901 900
902
903
904#define PCI_VENDOR_ID_CONTAQ 0x1080 901#define PCI_VENDOR_ID_CONTAQ 0x1080
905#define PCI_DEVICE_ID_CONTAQ_82C693 0xc693 902#define PCI_DEVICE_ID_CONTAQ_82C693 0xc693
906 903
907
908#define PCI_VENDOR_ID_OLICOM 0x108d 904#define PCI_VENDOR_ID_OLICOM 0x108d
909#define PCI_DEVICE_ID_OLICOM_OC2325 0x0012 905#define PCI_DEVICE_ID_OLICOM_OC2325 0x0012
910#define PCI_DEVICE_ID_OLICOM_OC2183 0x0013 906#define PCI_DEVICE_ID_OLICOM_OC2183 0x0013
@@ -936,23 +932,19 @@
936#define PCI_DEVICE_ID_SII_3112 0x3112 932#define PCI_DEVICE_ID_SII_3112 0x3112
937#define PCI_DEVICE_ID_SII_1210SA 0x0240 933#define PCI_DEVICE_ID_SII_1210SA 0x0240
938 934
939
940#define PCI_VENDOR_ID_BROOKTREE 0x109e 935#define PCI_VENDOR_ID_BROOKTREE 0x109e
941#define PCI_DEVICE_ID_BROOKTREE_878 0x0878 936#define PCI_DEVICE_ID_BROOKTREE_878 0x0878
942#define PCI_DEVICE_ID_BROOKTREE_879 0x0879 937#define PCI_DEVICE_ID_BROOKTREE_879 0x0879
943 938
944
945#define PCI_VENDOR_ID_SGI 0x10a9 939#define PCI_VENDOR_ID_SGI 0x10a9
946#define PCI_DEVICE_ID_SGI_IOC3 0x0003 940#define PCI_DEVICE_ID_SGI_IOC3 0x0003
941#define PCI_DEVICE_ID_SGI_LITHIUM 0x1002
947#define PCI_DEVICE_ID_SGI_IOC4 0x100a 942#define PCI_DEVICE_ID_SGI_IOC4 0x100a
948#define PCI_VENDOR_ID_SGI_LITHIUM 0x1002
949
950 943
951#define PCI_VENDOR_ID_WINBOND 0x10ad 944#define PCI_VENDOR_ID_WINBOND 0x10ad
952#define PCI_DEVICE_ID_WINBOND_82C105 0x0105 945#define PCI_DEVICE_ID_WINBOND_82C105 0x0105
953#define PCI_DEVICE_ID_WINBOND_83C553 0x0565 946#define PCI_DEVICE_ID_WINBOND_83C553 0x0565
954 947
955
956#define PCI_VENDOR_ID_PLX 0x10b5 948#define PCI_VENDOR_ID_PLX 0x10b5
957#define PCI_DEVICE_ID_PLX_R685 0x1030 949#define PCI_DEVICE_ID_PLX_R685 0x1030
958#define PCI_DEVICE_ID_PLX_ROMULUS 0x106a 950#define PCI_DEVICE_ID_PLX_ROMULUS 0x106a
@@ -986,7 +978,6 @@
986#define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909 978#define PCI_DEVICE_ID_3COM_3CR990SVR97 0x9909
987#define PCI_DEVICE_ID_3COM_3CR990SVR 0x990a 979#define PCI_DEVICE_ID_3COM_3CR990SVR 0x990a
988 980
989
990#define PCI_VENDOR_ID_AL 0x10b9 981#define PCI_VENDOR_ID_AL 0x10b9
991#define PCI_DEVICE_ID_AL_M1533 0x1533 982#define PCI_DEVICE_ID_AL_M1533 0x1533
992#define PCI_DEVICE_ID_AL_M1535 0x1535 983#define PCI_DEVICE_ID_AL_M1535 0x1535
@@ -1009,18 +1000,14 @@
1009#define PCI_DEVICE_ID_AL_M5451 0x5451 1000#define PCI_DEVICE_ID_AL_M5451 0x5451
1010#define PCI_DEVICE_ID_AL_M7101 0x7101 1001#define PCI_DEVICE_ID_AL_M7101 0x7101
1011 1002
1012
1013
1014#define PCI_VENDOR_ID_NEOMAGIC 0x10c8 1003#define PCI_VENDOR_ID_NEOMAGIC 0x10c8
1015#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005 1004#define PCI_DEVICE_ID_NEOMAGIC_NM256AV_AUDIO 0x8005
1016#define PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO 0x8006 1005#define PCI_DEVICE_ID_NEOMAGIC_NM256ZX_AUDIO 0x8006
1017#define PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO 0x8016 1006#define PCI_DEVICE_ID_NEOMAGIC_NM256XL_PLUS_AUDIO 0x8016
1018 1007
1019
1020#define PCI_VENDOR_ID_TCONRAD 0x10da 1008#define PCI_VENDOR_ID_TCONRAD 0x10da
1021#define PCI_DEVICE_ID_TCONRAD_TOKENRING 0x0508 1009#define PCI_DEVICE_ID_TCONRAD_TOKENRING 0x0508
1022 1010
1023
1024#define PCI_VENDOR_ID_NVIDIA 0x10de 1011#define PCI_VENDOR_ID_NVIDIA 0x10de
1025#define PCI_DEVICE_ID_NVIDIA_TNT 0x0020 1012#define PCI_DEVICE_ID_NVIDIA_TNT 0x0020
1026#define PCI_DEVICE_ID_NVIDIA_TNT2 0x0028 1013#define PCI_DEVICE_ID_NVIDIA_TNT2 0x0028
@@ -1241,9 +1228,6 @@
1241#define PCI_DEVICE_ID_IMS_TT128 0x9128 1228#define PCI_DEVICE_ID_IMS_TT128 0x9128
1242#define PCI_DEVICE_ID_IMS_TT3D 0x9135 1229#define PCI_DEVICE_ID_IMS_TT3D 0x9135
1243 1230
1244
1245
1246
1247#define PCI_VENDOR_ID_INTERG 0x10ea 1231#define PCI_VENDOR_ID_INTERG 0x10ea
1248#define PCI_DEVICE_ID_INTERG_1682 0x1682 1232#define PCI_DEVICE_ID_INTERG_1682 0x1682
1249#define PCI_DEVICE_ID_INTERG_2000 0x2000 1233#define PCI_DEVICE_ID_INTERG_2000 0x2000
@@ -1262,7 +1246,6 @@
1262#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5 1246#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP 0x3fc5
1263#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6 1247#define PCI_DEVICE_ID_XILINX_HAMMERFALL_DSP_MADI 0x3fc6
1264 1248
1265
1266#define PCI_VENDOR_ID_INIT 0x1101 1249#define PCI_VENDOR_ID_INIT 0x1101
1267 1250
1268#define PCI_VENDOR_ID_CREATIVE 0x1102 /* duplicate: ECTIVA */ 1251#define PCI_VENDOR_ID_CREATIVE 0x1102 /* duplicate: ECTIVA */
@@ -1357,7 +1340,6 @@
1357#define PCI_VENDOR_ID_SIEMENS 0x110A 1340#define PCI_VENDOR_ID_SIEMENS 0x110A
1358#define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102 1341#define PCI_DEVICE_ID_SIEMENS_DSCC4 0x2102
1359 1342
1360
1361#define PCI_VENDOR_ID_VORTEX 0x1119 1343#define PCI_VENDOR_ID_VORTEX 0x1119
1362#define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000 1344#define PCI_DEVICE_ID_VORTEX_GDT60x0 0x0000
1363#define PCI_DEVICE_ID_VORTEX_GDT6000B 0x0001 1345#define PCI_DEVICE_ID_VORTEX_GDT6000B 0x0001
@@ -1383,8 +1365,8 @@
1383#define PCI_VENDOR_ID_EF 0x111a 1365#define PCI_VENDOR_ID_EF 0x111a
1384#define PCI_DEVICE_ID_EF_ATM_FPGA 0x0000 1366#define PCI_DEVICE_ID_EF_ATM_FPGA 0x0000
1385#define PCI_DEVICE_ID_EF_ATM_ASIC 0x0002 1367#define PCI_DEVICE_ID_EF_ATM_ASIC 0x0002
1386#define PCI_VENDOR_ID_EF_ATM_LANAI2 0x0003 1368#define PCI_DEVICE_ID_EF_ATM_LANAI2 0x0003
1387#define PCI_VENDOR_ID_EF_ATM_LANAIHB 0x0005 1369#define PCI_DEVICE_ID_EF_ATM_LANAIHB 0x0005
1388 1370
1389#define PCI_VENDOR_ID_IDT 0x111d 1371#define PCI_VENDOR_ID_IDT 0x111d
1390#define PCI_DEVICE_ID_IDT_IDT77201 0x0001 1372#define PCI_DEVICE_ID_IDT_IDT77201 0x0001
@@ -1392,7 +1374,6 @@
1392#define PCI_VENDOR_ID_FORE 0x1127 1374#define PCI_VENDOR_ID_FORE 0x1127
1393#define PCI_DEVICE_ID_FORE_PCA200E 0x0300 1375#define PCI_DEVICE_ID_FORE_PCA200E 0x0300
1394 1376
1395
1396#define PCI_VENDOR_ID_PHILIPS 0x1131 1377#define PCI_VENDOR_ID_PHILIPS 0x1131
1397#define PCI_DEVICE_ID_PHILIPS_SAA7146 0x7146 1378#define PCI_DEVICE_ID_PHILIPS_SAA7146 0x7146
1398#define PCI_DEVICE_ID_PHILIPS_SAA9730 0x9730 1379#define PCI_DEVICE_ID_PHILIPS_SAA9730 0x9730
@@ -1411,7 +1392,6 @@
1411#define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550 1392#define PCI_DEVICE_ID_ZIATECH_5550_HC 0x5550
1412 1393
1413 1394
1414
1415#define PCI_VENDOR_ID_SYSKONNECT 0x1148 1395#define PCI_VENDOR_ID_SYSKONNECT 0x1148
1416#define PCI_DEVICE_ID_SYSKONNECT_TR 0x4200 1396#define PCI_DEVICE_ID_SYSKONNECT_TR 0x4200
1417#define PCI_DEVICE_ID_SYSKONNECT_GE 0x4300 1397#define PCI_DEVICE_ID_SYSKONNECT_GE 0x4300
@@ -1419,7 +1399,6 @@
1419#define PCI_DEVICE_ID_SYSKONNECT_9DXX 0x4400 1399#define PCI_DEVICE_ID_SYSKONNECT_9DXX 0x4400
1420#define PCI_DEVICE_ID_SYSKONNECT_9MXX 0x4500 1400#define PCI_DEVICE_ID_SYSKONNECT_9MXX 0x4500
1421 1401
1422
1423#define PCI_VENDOR_ID_DIGI 0x114f 1402#define PCI_VENDOR_ID_DIGI 0x114f
1424#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070 1403#define PCI_DEVICE_ID_DIGI_DF_M_IOM2_E 0x0070
1425#define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071 1404#define PCI_DEVICE_ID_DIGI_DF_M_E 0x0071
@@ -1430,12 +1409,10 @@
1430#define PCI_DEVICE_ID_NEO_2RJ45 0x00CA 1409#define PCI_DEVICE_ID_NEO_2RJ45 0x00CA
1431#define PCI_DEVICE_ID_NEO_2RJ45PRI 0x00CB 1410#define PCI_DEVICE_ID_NEO_2RJ45PRI 0x00CB
1432 1411
1433
1434#define PCI_VENDOR_ID_XIRCOM 0x115d 1412#define PCI_VENDOR_ID_XIRCOM 0x115d
1435#define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101 1413#define PCI_DEVICE_ID_XIRCOM_RBM56G 0x0101
1436#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103 1414#define PCI_DEVICE_ID_XIRCOM_X3201_MDM 0x0103
1437 1415
1438
1439#define PCI_VENDOR_ID_SERVERWORKS 0x1166 1416#define PCI_VENDOR_ID_SERVERWORKS 0x1166
1440#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008 1417#define PCI_DEVICE_ID_SERVERWORKS_HE 0x0008
1441#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009 1418#define PCI_DEVICE_ID_SERVERWORKS_LE 0x0009
@@ -1504,7 +1481,6 @@
1504#define PCI_DEVICE_ID_ZEITNET_1221 0x0001 1481#define PCI_DEVICE_ID_ZEITNET_1221 0x0001
1505#define PCI_DEVICE_ID_ZEITNET_1225 0x0002 1482#define PCI_DEVICE_ID_ZEITNET_1225 0x0002
1506 1483
1507
1508#define PCI_VENDOR_ID_FUJITSU_ME 0x119e 1484#define PCI_VENDOR_ID_FUJITSU_ME 0x119e
1509#define PCI_DEVICE_ID_FUJITSU_FS155 0x0001 1485#define PCI_DEVICE_ID_FUJITSU_FS155 0x0001
1510#define PCI_DEVICE_ID_FUJITSU_FS50 0x0003 1486#define PCI_DEVICE_ID_FUJITSU_FS50 0x0003
@@ -1522,28 +1498,23 @@
1522#define PCI_DEVICE_ID_V3_V960 0x0001 1498#define PCI_DEVICE_ID_V3_V960 0x0001
1523#define PCI_DEVICE_ID_V3_V351 0x0002 1499#define PCI_DEVICE_ID_V3_V351 0x0002
1524 1500
1525
1526#define PCI_VENDOR_ID_ATT 0x11c1 1501#define PCI_VENDOR_ID_ATT 0x11c1
1527#define PCI_DEVICE_ID_ATT_VENUS_MODEM 0x480 1502#define PCI_DEVICE_ID_ATT_VENUS_MODEM 0x480
1528 1503
1529
1530#define PCI_VENDOR_ID_SPECIALIX 0x11cb 1504#define PCI_VENDOR_ID_SPECIALIX 0x11cb
1531#define PCI_DEVICE_ID_SPECIALIX_IO8 0x2000 1505#define PCI_DEVICE_ID_SPECIALIX_IO8 0x2000
1532#define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000 1506#define PCI_DEVICE_ID_SPECIALIX_RIO 0x8000
1533#define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004 1507#define PCI_SUBDEVICE_ID_SPECIALIX_SPEED4 0xa004
1534 1508
1535
1536#define PCI_VENDOR_ID_ANALOG_DEVICES 0x11d4 1509#define PCI_VENDOR_ID_ANALOG_DEVICES 0x11d4
1537#define PCI_DEVICE_ID_AD1889JS 0x1889 1510#define PCI_DEVICE_ID_AD1889JS 0x1889
1538 1511
1539
1540#define PCI_DEVICE_ID_SEGA_BBA 0x1234 1512#define PCI_DEVICE_ID_SEGA_BBA 0x1234
1541 1513
1542#define PCI_VENDOR_ID_ZORAN 0x11de 1514#define PCI_VENDOR_ID_ZORAN 0x11de
1543#define PCI_DEVICE_ID_ZORAN_36057 0x6057 1515#define PCI_DEVICE_ID_ZORAN_36057 0x6057
1544#define PCI_DEVICE_ID_ZORAN_36120 0x6120 1516#define PCI_DEVICE_ID_ZORAN_36120 0x6120
1545 1517
1546
1547#define PCI_VENDOR_ID_COMPEX 0x11f6 1518#define PCI_VENDOR_ID_COMPEX 0x11f6
1548#define PCI_DEVICE_ID_COMPEX_ENET100VG4 0x0112 1519#define PCI_DEVICE_ID_COMPEX_ENET100VG4 0x0112
1549 1520
@@ -1602,8 +1573,6 @@
1602#define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005 1573#define PCI_DEVICE_ID_3DFX_VOODOO3 0x0005
1603#define PCI_DEVICE_ID_3DFX_VOODOO5 0x0009 1574#define PCI_DEVICE_ID_3DFX_VOODOO5 0x0009
1604 1575
1605
1606
1607#define PCI_VENDOR_ID_AVM 0x1244 1576#define PCI_VENDOR_ID_AVM 0x1244
1608#define PCI_DEVICE_ID_AVM_B1 0x0700 1577#define PCI_DEVICE_ID_AVM_B1 0x0700
1609#define PCI_DEVICE_ID_AVM_C4 0x0800 1578#define PCI_DEVICE_ID_AVM_C4 0x0800
@@ -1612,7 +1581,6 @@
1612#define PCI_DEVICE_ID_AVM_C2 0x1100 1581#define PCI_DEVICE_ID_AVM_C2 0x1100
1613#define PCI_DEVICE_ID_AVM_T1 0x1200 1582#define PCI_DEVICE_ID_AVM_T1 0x1200
1614 1583
1615
1616#define PCI_VENDOR_ID_STALLION 0x124d 1584#define PCI_VENDOR_ID_STALLION 0x124d
1617 1585
1618/* Allied Telesyn */ 1586/* Allied Telesyn */
@@ -1635,7 +1603,6 @@
1635#define PCI_VENDOR_ID_SATSAGEM 0x1267 1603#define PCI_VENDOR_ID_SATSAGEM 0x1267
1636#define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016 1604#define PCI_DEVICE_ID_SATSAGEM_NICCY 0x1016
1637 1605
1638
1639#define PCI_VENDOR_ID_ENSONIQ 0x1274 1606#define PCI_VENDOR_ID_ENSONIQ 0x1274
1640#define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880 1607#define PCI_DEVICE_ID_ENSONIQ_CT5880 0x5880
1641#define PCI_DEVICE_ID_ENSONIQ_ES1370 0x5000 1608#define PCI_DEVICE_ID_ENSONIQ_ES1370 0x5000
@@ -1658,7 +1625,6 @@
1658 1625
1659#define PCI_VENDOR_ID_ALTEON 0x12ae 1626#define PCI_VENDOR_ID_ALTEON 0x12ae
1660 1627
1661
1662#define PCI_SUBVENDOR_ID_CONNECT_TECH 0x12c4 1628#define PCI_SUBVENDOR_ID_CONNECT_TECH 0x12c4
1663#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232 0x0001 1629#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH8_232 0x0001
1664#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232 0x0002 1630#define PCI_SUBDEVICE_ID_CONNECT_TECH_BH4_232 0x0002
@@ -1689,7 +1655,6 @@
1689#define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4_485 0x0331 1655#define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_4_485 0x0331
1690#define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485 0x0332 1656#define PCI_SUBDEVICE_ID_CONNECT_TECH_PCI_UART_8_485 0x0332
1691 1657
1692
1693#define PCI_VENDOR_ID_NVIDIA_SGS 0x12d2 1658#define PCI_VENDOR_ID_NVIDIA_SGS 0x12d2
1694#define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018 1659#define PCI_DEVICE_ID_NVIDIA_SGS_RIVA128 0x0018
1695 1660
@@ -1799,7 +1764,6 @@
1799#define PCI_DEVICE_ID_LMC_SSI 0x0005 1764#define PCI_DEVICE_ID_LMC_SSI 0x0005
1800#define PCI_DEVICE_ID_LMC_T1 0x0006 1765#define PCI_DEVICE_ID_LMC_T1 0x0006
1801 1766
1802
1803#define PCI_VENDOR_ID_NETGEAR 0x1385 1767#define PCI_VENDOR_ID_NETGEAR 0x1385
1804#define PCI_DEVICE_ID_NETGEAR_GA620 0x620a 1768#define PCI_DEVICE_ID_NETGEAR_GA620 0x620a
1805 1769
@@ -1902,6 +1866,8 @@
1902#define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521 1866#define PCI_DEVICE_ID_OXSEMI_16PCI952 0x9521
1903#define PCI_DEVICE_ID_OXSEMI_16PCI952PP 0x9523 1867#define PCI_DEVICE_ID_OXSEMI_16PCI952PP 0x9523
1904 1868
1869#define PCI_VENDOR_ID_CHELSIO 0x1425
1870
1905#define PCI_VENDOR_ID_SAMSUNG 0x144d 1871#define PCI_VENDOR_ID_SAMSUNG 0x144d
1906 1872
1907#define PCI_VENDOR_ID_MYRICOM 0x14c1 1873#define PCI_VENDOR_ID_MYRICOM 0x14c1
@@ -2010,13 +1976,10 @@
2010#define PCI_DEVICE_ID_ENE_720 0x1421 1976#define PCI_DEVICE_ID_ENE_720 0x1421
2011#define PCI_DEVICE_ID_ENE_722 0x1422 1977#define PCI_DEVICE_ID_ENE_722 0x1422
2012 1978
2013#define PCI_VENDOR_ID_CHELSIO 0x1425
2014
2015#define PCI_SUBVENDOR_ID_PERLE 0x155f 1979#define PCI_SUBVENDOR_ID_PERLE 0x155f
2016#define PCI_SUBDEVICE_ID_PCI_RAS4 0xf001 1980#define PCI_SUBDEVICE_ID_PCI_RAS4 0xf001
2017#define PCI_SUBDEVICE_ID_PCI_RAS8 0xf010 1981#define PCI_SUBDEVICE_ID_PCI_RAS8 0xf010
2018 1982
2019
2020#define PCI_VENDOR_ID_SYBA 0x1592 1983#define PCI_VENDOR_ID_SYBA 0x1592
2021#define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782 1984#define PCI_DEVICE_ID_SYBA_2P_EPP 0x0782
2022#define PCI_DEVICE_ID_SYBA_1P_ECP 0x0783 1985#define PCI_DEVICE_ID_SYBA_1P_ECP 0x0783
@@ -2035,8 +1998,10 @@
2035#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c 1998#define PCI_DEVICE_ID_MELLANOX_SINAI_OLD 0x5e8c
2036#define PCI_DEVICE_ID_MELLANOX_SINAI 0x6274 1999#define PCI_DEVICE_ID_MELLANOX_SINAI 0x6274
2037 2000
2038#define PCI_VENDOR_ID_PDC 0x15e9 2001#define PCI_VENDOR_ID_QUICKNET 0x15e2
2002#define PCI_DEVICE_ID_QUICKNET_XJ 0x0500
2039 2003
2004#define PCI_VENDOR_ID_PDC 0x15e9
2040 2005
2041#define PCI_VENDOR_ID_FARSITE 0x1619 2006#define PCI_VENDOR_ID_FARSITE 0x1619
2042#define PCI_DEVICE_ID_FARSITE_T2P 0x0400 2007#define PCI_DEVICE_ID_FARSITE_T2P 0x0400
@@ -2053,6 +2018,8 @@
2053#define PCI_DEVICE_ID_BCM1250_PCI 0x0001 2018#define PCI_DEVICE_ID_BCM1250_PCI 0x0001
2054#define PCI_DEVICE_ID_BCM1250_HT 0x0002 2019#define PCI_DEVICE_ID_BCM1250_HT 0x0002
2055 2020
2021#define PCI_VENDOR_ID_ATHEROS 0x168c
2022
2056#define PCI_VENDOR_ID_NETCELL 0x169c 2023#define PCI_VENDOR_ID_NETCELL 0x169c
2057#define PCI_DEVICE_ID_REVOLUTION 0x0044 2024#define PCI_DEVICE_ID_REVOLUTION 0x0044
2058 2025
@@ -2091,7 +2058,6 @@
2091#define PCI_DEVICE_ID_HERC_WIN 0x5732 2058#define PCI_DEVICE_ID_HERC_WIN 0x5732
2092#define PCI_DEVICE_ID_HERC_UNI 0x5832 2059#define PCI_DEVICE_ID_HERC_UNI 0x5832
2093 2060
2094
2095#define PCI_VENDOR_ID_SITECOM 0x182d 2061#define PCI_VENDOR_ID_SITECOM 0x182d
2096#define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069 2062#define PCI_DEVICE_ID_SITECOM_DC105V2 0x3069
2097 2063
@@ -2127,12 +2093,9 @@
2127#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007 2093#define PCI_DEVICE_ID_3DLABS_PERMEDIA2 0x0007
2128#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V 0x0009 2094#define PCI_DEVICE_ID_3DLABS_PERMEDIA2V 0x0009
2129 2095
2130
2131#define PCI_VENDOR_ID_AKS 0x416c 2096#define PCI_VENDOR_ID_AKS 0x416c
2132#define PCI_DEVICE_ID_AKS_ALADDINCARD 0x0100 2097#define PCI_DEVICE_ID_AKS_ALADDINCARD 0x0100
2133 2098
2134
2135
2136#define PCI_VENDOR_ID_S3 0x5333 2099#define PCI_VENDOR_ID_S3 0x5333
2137#define PCI_DEVICE_ID_S3_TRIO 0x8811 2100#define PCI_DEVICE_ID_S3_TRIO 0x8811
2138#define PCI_DEVICE_ID_S3_868 0x8880 2101#define PCI_DEVICE_ID_S3_868 0x8880
@@ -2144,7 +2107,6 @@
2144#define PCI_VENDOR_ID_DUNORD 0x5544 2107#define PCI_VENDOR_ID_DUNORD 0x5544
2145#define PCI_DEVICE_ID_DUNORD_I3000 0x0001 2108#define PCI_DEVICE_ID_DUNORD_I3000 0x0001
2146 2109
2147
2148#define PCI_VENDOR_ID_DCI 0x6666 2110#define PCI_VENDOR_ID_DCI 0x6666
2149#define PCI_DEVICE_ID_DCI_PCCOM4 0x0001 2111#define PCI_DEVICE_ID_DCI_PCCOM4 0x0001
2150#define PCI_DEVICE_ID_DCI_PCCOM8 0x0002 2112#define PCI_DEVICE_ID_DCI_PCCOM8 0x0002
@@ -2388,7 +2350,6 @@
2388#define PCI_DEVICE_ID_ADAPTEC2_OBSIDIAN 0x0500 2350#define PCI_DEVICE_ID_ADAPTEC2_OBSIDIAN 0x0500
2389#define PCI_DEVICE_ID_ADAPTEC2_SCAMP 0x0503 2351#define PCI_DEVICE_ID_ADAPTEC2_SCAMP 0x0503
2390 2352
2391
2392#define PCI_VENDOR_ID_HOLTEK 0x9412 2353#define PCI_VENDOR_ID_HOLTEK 0x9412
2393#define PCI_DEVICE_ID_HOLTEK_6565 0x6565 2354#define PCI_DEVICE_ID_HOLTEK_6565 0x6565
2394 2355
@@ -2404,6 +2365,8 @@
2404#define PCI_DEVICE_ID_NETMOS_9845 0x9845 2365#define PCI_DEVICE_ID_NETMOS_9845 0x9845
2405#define PCI_DEVICE_ID_NETMOS_9855 0x9855 2366#define PCI_DEVICE_ID_NETMOS_9855 0x9855
2406 2367
2368#define PCI_VENDOR_ID_3COM_2 0xa727
2369
2407#define PCI_SUBVENDOR_ID_EXSYS 0xd84d 2370#define PCI_SUBVENDOR_ID_EXSYS 0xd84d
2408#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014 2371#define PCI_SUBDEVICE_ID_EXSYS_4014 0x4014
2409#define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055 2372#define PCI_SUBDEVICE_ID_EXSYS_4055 0x4055
@@ -2412,13 +2375,7 @@
2412#define PCI_DEVICE_ID_TIGERJET_300 0x0001 2375#define PCI_DEVICE_ID_TIGERJET_300 0x0001
2413#define PCI_DEVICE_ID_TIGERJET_100 0x0002 2376#define PCI_DEVICE_ID_TIGERJET_100 0x0002
2414 2377
2415#define PCI_VENDOR_ID_TTTECH 0x0357
2416#define PCI_DEVICE_ID_TTTECH_MC322 0x000A
2417
2418#define PCI_VENDOR_ID_XILINX_RME 0xea60 2378#define PCI_VENDOR_ID_XILINX_RME 0xea60
2419#define PCI_DEVICE_ID_RME_DIGI32 0x9896 2379#define PCI_DEVICE_ID_RME_DIGI32 0x9896
2420#define PCI_DEVICE_ID_RME_DIGI32_PRO 0x9897 2380#define PCI_DEVICE_ID_RME_DIGI32_PRO 0x9897
2421#define PCI_DEVICE_ID_RME_DIGI32_8 0x9898 2381#define PCI_DEVICE_ID_RME_DIGI32_8 0x9898
2422
2423#define PCI_VENDOR_ID_QUICKNET 0x15E2
2424#define PCI_DEVICE_ID_QUICKNET_XJ 0x0500
diff --git a/include/linux/pkt_cls.h b/include/linux/pkt_cls.h
index c3f01b3085a4..30b8571e6b34 100644
--- a/include/linux/pkt_cls.h
+++ b/include/linux/pkt_cls.h
@@ -403,16 +403,13 @@ enum
403 * 1..32767 Reserved for ematches inside kernel tree 403 * 1..32767 Reserved for ematches inside kernel tree
404 * 32768..65535 Free to use, not reliable 404 * 32768..65535 Free to use, not reliable
405 */ 405 */
406enum 406#define TCF_EM_CONTAINER 0
407{ 407#define TCF_EM_CMP 1
408 TCF_EM_CONTAINER, 408#define TCF_EM_NBYTE 2
409 TCF_EM_CMP, 409#define TCF_EM_U32 3
410 TCF_EM_NBYTE, 410#define TCF_EM_META 4
411 TCF_EM_U32, 411#define TCF_EM_TEXT 5
412 TCF_EM_META, 412#define TCF_EM_MAX 5
413 TCF_EM_TEXT,
414 __TCF_EM_MAX
415};
416 413
417enum 414enum
418{ 415{
diff --git a/include/linux/pkt_sched.h b/include/linux/pkt_sched.h
index d10f35338507..268c51599eb8 100644
--- a/include/linux/pkt_sched.h
+++ b/include/linux/pkt_sched.h
@@ -101,6 +101,15 @@ struct tc_prio_qopt
101 __u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */ 101 __u8 priomap[TC_PRIO_MAX+1]; /* Map: logical priority -> PRIO band */
102}; 102};
103 103
104enum
105{
106 TCA_PRIO_UNSPEC,
107 TCA_PRIO_MQ,
108 __TCA_PRIO_MAX
109};
110
111#define TCA_PRIO_MAX (__TCA_PRIO_MAX - 1)
112
104/* TBF section */ 113/* TBF section */
105 114
106struct tc_tbf_qopt 115struct tc_tbf_qopt
diff --git a/include/linux/pm.h b/include/linux/pm.h
index b2c4fde4e994..273781c82e4d 100644
--- a/include/linux/pm.h
+++ b/include/linux/pm.h
@@ -267,15 +267,10 @@ struct dev_pm_info {
267 unsigned can_wakeup:1; 267 unsigned can_wakeup:1;
268#ifdef CONFIG_PM 268#ifdef CONFIG_PM
269 unsigned should_wakeup:1; 269 unsigned should_wakeup:1;
270 pm_message_t prev_state;
271 void * saved_state;
272 struct device * pm_parent;
273 struct list_head entry; 270 struct list_head entry;
274#endif 271#endif
275}; 272};
276 273
277extern void device_pm_set_parent(struct device * dev, struct device * parent);
278
279extern int device_power_down(pm_message_t state); 274extern int device_power_down(pm_message_t state);
280extern void device_power_up(void); 275extern void device_power_up(void);
281extern void device_resume(void); 276extern void device_resume(void);
diff --git a/include/linux/rtnetlink.h b/include/linux/rtnetlink.h
index 1fae30af91f3..c91476ce314a 100644
--- a/include/linux/rtnetlink.h
+++ b/include/linux/rtnetlink.h
@@ -261,7 +261,7 @@ enum rtattr_type_t
261 RTA_FLOW, 261 RTA_FLOW,
262 RTA_CACHEINFO, 262 RTA_CACHEINFO,
263 RTA_SESSION, 263 RTA_SESSION,
264 RTA_MP_ALGO, 264 RTA_MP_ALGO, /* no longer used */
265 RTA_TABLE, 265 RTA_TABLE,
266 __RTA_MAX 266 __RTA_MAX
267}; 267};
@@ -570,10 +570,16 @@ static __inline__ int rtattr_strcmp(const struct rtattr *rta, const char *str)
570} 570}
571 571
572extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len); 572extern int rtattr_parse(struct rtattr *tb[], int maxattr, struct rtattr *rta, int len);
573extern int __rtattr_parse_nested_compat(struct rtattr *tb[], int maxattr,
574 struct rtattr *rta, int len);
573 575
574#define rtattr_parse_nested(tb, max, rta) \ 576#define rtattr_parse_nested(tb, max, rta) \
575 rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta))) 577 rtattr_parse((tb), (max), RTA_DATA((rta)), RTA_PAYLOAD((rta)))
576 578
579#define rtattr_parse_nested_compat(tb, max, rta, data, len) \
580({ data = RTA_PAYLOAD(rta) >= len ? RTA_DATA(rta) : NULL; \
581 __rtattr_parse_nested_compat(tb, max, rta, len); })
582
577extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo); 583extern int rtnetlink_send(struct sk_buff *skb, u32 pid, u32 group, int echo);
578extern int rtnl_unicast(struct sk_buff *skb, u32 pid); 584extern int rtnl_unicast(struct sk_buff *skb, u32 pid);
579extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group, 585extern int rtnl_notify(struct sk_buff *skb, u32 pid, u32 group,
@@ -638,6 +644,18 @@ extern void __rta_fill(struct sk_buff *skb, int attrtype, int attrlen, const voi
638({ (start)->rta_len = skb_tail_pointer(skb) - (unsigned char *)(start); \ 644({ (start)->rta_len = skb_tail_pointer(skb) - (unsigned char *)(start); \
639 (skb)->len; }) 645 (skb)->len; })
640 646
647#define RTA_NEST_COMPAT(skb, type, attrlen, data) \
648({ struct rtattr *__start = (struct rtattr *)skb_tail_pointer(skb); \
649 RTA_PUT(skb, type, attrlen, data); \
650 RTA_NEST(skb, type); \
651 __start; })
652
653#define RTA_NEST_COMPAT_END(skb, start) \
654({ struct rtattr *__nest = (void *)(start) + NLMSG_ALIGN((start)->rta_len); \
655 (start)->rta_len = skb_tail_pointer(skb) - (unsigned char *)(start); \
656 RTA_NEST_END(skb, __nest); \
657 (skb)->len; })
658
641#define RTA_NEST_CANCEL(skb, start) \ 659#define RTA_NEST_CANCEL(skb, start) \
642({ if (start) \ 660({ if (start) \
643 skb_trim(skb, (unsigned char *) (start) - (skb)->data); \ 661 skb_trim(skb, (unsigned char *) (start) - (skb)->data); \
diff --git a/include/linux/screen_info.h b/include/linux/screen_info.h
index b02308ee7667..3ee412bc00ec 100644
--- a/include/linux/screen_info.h
+++ b/include/linux/screen_info.h
@@ -10,7 +10,7 @@
10struct screen_info { 10struct screen_info {
11 u8 orig_x; /* 0x00 */ 11 u8 orig_x; /* 0x00 */
12 u8 orig_y; /* 0x01 */ 12 u8 orig_y; /* 0x01 */
13 u16 dontuse1; /* 0x02 -- EXT_MEM_K sits here */ 13 u16 ext_mem_k; /* 0x02 */
14 u16 orig_video_page; /* 0x04 */ 14 u16 orig_video_page; /* 0x04 */
15 u8 orig_video_mode; /* 0x06 */ 15 u8 orig_video_mode; /* 0x06 */
16 u8 orig_video_cols; /* 0x07 */ 16 u8 orig_video_cols; /* 0x07 */
@@ -27,7 +27,7 @@ struct screen_info {
27 u16 lfb_depth; /* 0x16 */ 27 u16 lfb_depth; /* 0x16 */
28 u32 lfb_base; /* 0x18 */ 28 u32 lfb_base; /* 0x18 */
29 u32 lfb_size; /* 0x1c */ 29 u32 lfb_size; /* 0x1c */
30 u16 dontuse2, dontuse3; /* 0x20 -- CL_MAGIC and CL_OFFSET here */ 30 u16 cl_magic, cl_offset; /* 0x20 */
31 u16 lfb_linelength; /* 0x24 */ 31 u16 lfb_linelength; /* 0x24 */
32 u8 red_size; /* 0x26 */ 32 u8 red_size; /* 0x26 */
33 u8 red_pos; /* 0x27 */ 33 u8 red_pos; /* 0x27 */
@@ -42,9 +42,8 @@ struct screen_info {
42 u16 pages; /* 0x32 */ 42 u16 pages; /* 0x32 */
43 u16 vesa_attributes; /* 0x34 */ 43 u16 vesa_attributes; /* 0x34 */
44 u32 capabilities; /* 0x36 */ 44 u32 capabilities; /* 0x36 */
45 /* 0x3a -- 0x3b reserved for future expansion */ 45 u8 _reserved[6]; /* 0x3a */
46 /* 0x3c -- 0x3f micro stack for relocatable kernels */ 46} __attribute__((packed));
47};
48 47
49extern struct screen_info screen_info; 48extern struct screen_info screen_info;
50 49
diff --git a/include/linux/security.h b/include/linux/security.h
index 9eb9e0fe0331..c11dc8aa0351 100644
--- a/include/linux/security.h
+++ b/include/linux/security.h
@@ -71,6 +71,7 @@ struct xfrm_user_sec_ctx;
71extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb); 71extern int cap_netlink_send(struct sock *sk, struct sk_buff *skb);
72extern int cap_netlink_recv(struct sk_buff *skb, int cap); 72extern int cap_netlink_recv(struct sk_buff *skb, int cap);
73 73
74extern unsigned long mmap_min_addr;
74/* 75/*
75 * Values used in the task_security_ops calls 76 * Values used in the task_security_ops calls
76 */ 77 */
@@ -1241,8 +1242,9 @@ struct security_operations {
1241 int (*file_ioctl) (struct file * file, unsigned int cmd, 1242 int (*file_ioctl) (struct file * file, unsigned int cmd,
1242 unsigned long arg); 1243 unsigned long arg);
1243 int (*file_mmap) (struct file * file, 1244 int (*file_mmap) (struct file * file,
1244 unsigned long reqprot, 1245 unsigned long reqprot, unsigned long prot,
1245 unsigned long prot, unsigned long flags); 1246 unsigned long flags, unsigned long addr,
1247 unsigned long addr_only);
1246 int (*file_mprotect) (struct vm_area_struct * vma, 1248 int (*file_mprotect) (struct vm_area_struct * vma,
1247 unsigned long reqprot, 1249 unsigned long reqprot,
1248 unsigned long prot); 1250 unsigned long prot);
@@ -1814,9 +1816,12 @@ static inline int security_file_ioctl (struct file *file, unsigned int cmd,
1814 1816
1815static inline int security_file_mmap (struct file *file, unsigned long reqprot, 1817static inline int security_file_mmap (struct file *file, unsigned long reqprot,
1816 unsigned long prot, 1818 unsigned long prot,
1817 unsigned long flags) 1819 unsigned long flags,
1820 unsigned long addr,
1821 unsigned long addr_only)
1818{ 1822{
1819 return security_ops->file_mmap (file, reqprot, prot, flags); 1823 return security_ops->file_mmap (file, reqprot, prot, flags, addr,
1824 addr_only);
1820} 1825}
1821 1826
1822static inline int security_file_mprotect (struct vm_area_struct *vma, 1827static inline int security_file_mprotect (struct vm_area_struct *vma,
@@ -2489,7 +2494,9 @@ static inline int security_file_ioctl (struct file *file, unsigned int cmd,
2489 2494
2490static inline int security_file_mmap (struct file *file, unsigned long reqprot, 2495static inline int security_file_mmap (struct file *file, unsigned long reqprot,
2491 unsigned long prot, 2496 unsigned long prot,
2492 unsigned long flags) 2497 unsigned long flags,
2498 unsigned long addr,
2499 unsigned long addr_only)
2493{ 2500{
2494 return 0; 2501 return 0;
2495} 2502}
diff --git a/include/linux/serio.h b/include/linux/serio.h
index 1ebf0455e224..d9377ce9ffd1 100644
--- a/include/linux/serio.h
+++ b/include/linux/serio.h
@@ -209,5 +209,6 @@ static inline void serio_unpin_driver(struct serio *serio)
209#define SERIO_PENMOUNT 0x31 209#define SERIO_PENMOUNT 0x31
210#define SERIO_TOUCHRIGHT 0x32 210#define SERIO_TOUCHRIGHT 0x32
211#define SERIO_TOUCHWIN 0x33 211#define SERIO_TOUCHWIN 0x33
212#define SERIO_TAOSEVM 0x34
212 213
213#endif 214#endif
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 6f0b2f7d0010..9391e4a4c344 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -65,13 +65,20 @@
65 * is able to produce some skb->csum, it MUST use COMPLETE, 65 * is able to produce some skb->csum, it MUST use COMPLETE,
66 * not UNNECESSARY. 66 * not UNNECESSARY.
67 * 67 *
68 * PARTIAL: identical to the case for output below. This may occur
69 * on a packet received directly from another Linux OS, e.g.,
70 * a virtualised Linux kernel on the same host. The packet can
71 * be treated in the same way as UNNECESSARY except that on
72 * output (i.e., forwarding) the checksum must be filled in
73 * by the OS or the hardware.
74 *
68 * B. Checksumming on output. 75 * B. Checksumming on output.
69 * 76 *
70 * NONE: skb is checksummed by protocol or csum is not required. 77 * NONE: skb is checksummed by protocol or csum is not required.
71 * 78 *
72 * PARTIAL: device is required to csum packet as seen by hard_start_xmit 79 * PARTIAL: device is required to csum packet as seen by hard_start_xmit
73 * from skb->transport_header to the end and to record the checksum 80 * from skb->csum_start to the end and to record the checksum
74 * at skb->transport_header + skb->csum. 81 * at skb->csum_start + skb->csum_offset.
75 * 82 *
76 * Device must show its capabilities in dev->features, set 83 * Device must show its capabilities in dev->features, set
77 * at device setup time. 84 * at device setup time.
@@ -82,6 +89,7 @@
82 * TCP/UDP over IPv4. Sigh. Vendors like this 89 * TCP/UDP over IPv4. Sigh. Vendors like this
83 * way by an unknown reason. Though, see comment above 90 * way by an unknown reason. Though, see comment above
84 * about CHECKSUM_UNNECESSARY. 8) 91 * about CHECKSUM_UNNECESSARY. 8)
92 * NETIF_F_IPV6_CSUM about as dumb as the last one but does IPv6 instead.
85 * 93 *
86 * Any questions? No questions, good. --ANK 94 * Any questions? No questions, good. --ANK
87 */ 95 */
@@ -147,8 +155,8 @@ struct skb_shared_info {
147 155
148/* We divide dataref into two halves. The higher 16 bits hold references 156/* We divide dataref into two halves. The higher 16 bits hold references
149 * to the payload part of skb->data. The lower 16 bits hold references to 157 * to the payload part of skb->data. The lower 16 bits hold references to
150 * the entire skb->data. It is up to the users of the skb to agree on 158 * the entire skb->data. A clone of a headerless skb holds the length of
151 * where the payload starts. 159 * the header in skb->hdr_len.
152 * 160 *
153 * All users must obey the rule that the skb->data reference count must be 161 * All users must obey the rule that the skb->data reference count must be
154 * greater than or equal to the payload reference count. 162 * greater than or equal to the payload reference count.
@@ -196,7 +204,6 @@ typedef unsigned char *sk_buff_data_t;
196 * @sk: Socket we are owned by 204 * @sk: Socket we are owned by
197 * @tstamp: Time we arrived 205 * @tstamp: Time we arrived
198 * @dev: Device we arrived on/are leaving by 206 * @dev: Device we arrived on/are leaving by
199 * @iif: ifindex of device we arrived on
200 * @transport_header: Transport layer header 207 * @transport_header: Transport layer header
201 * @network_header: Network layer header 208 * @network_header: Network layer header
202 * @mac_header: Link layer header 209 * @mac_header: Link layer header
@@ -206,6 +213,7 @@ typedef unsigned char *sk_buff_data_t;
206 * @len: Length of actual data 213 * @len: Length of actual data
207 * @data_len: Data length 214 * @data_len: Data length
208 * @mac_len: Length of link layer header 215 * @mac_len: Length of link layer header
216 * @hdr_len: writable header length of cloned skb
209 * @csum: Checksum (must include start/offset pair) 217 * @csum: Checksum (must include start/offset pair)
210 * @csum_start: Offset from skb->head where checksumming should start 218 * @csum_start: Offset from skb->head where checksumming should start
211 * @csum_offset: Offset from csum_start where checksum should be stored 219 * @csum_offset: Offset from csum_start where checksum should be stored
@@ -227,9 +235,12 @@ typedef unsigned char *sk_buff_data_t;
227 * @mark: Generic packet mark 235 * @mark: Generic packet mark
228 * @nfct: Associated connection, if any 236 * @nfct: Associated connection, if any
229 * @ipvs_property: skbuff is owned by ipvs 237 * @ipvs_property: skbuff is owned by ipvs
238 * @nf_trace: netfilter packet trace flag
230 * @nfctinfo: Relationship of this skb to the connection 239 * @nfctinfo: Relationship of this skb to the connection
231 * @nfct_reasm: netfilter conntrack re-assembly pointer 240 * @nfct_reasm: netfilter conntrack re-assembly pointer
232 * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c 241 * @nf_bridge: Saved data about a bridged frame - see br_netfilter.c
242 * @iif: ifindex of device we arrived on
243 * @queue_mapping: Queue mapping for multiqueue devices
233 * @tc_index: Traffic control index 244 * @tc_index: Traffic control index
234 * @tc_verd: traffic control verdict 245 * @tc_verd: traffic control verdict
235 * @dma_cookie: a cookie to one of several possible DMA operations 246 * @dma_cookie: a cookie to one of several possible DMA operations
@@ -245,8 +256,6 @@ struct sk_buff {
245 struct sock *sk; 256 struct sock *sk;
246 ktime_t tstamp; 257 ktime_t tstamp;
247 struct net_device *dev; 258 struct net_device *dev;
248 int iif;
249 /* 4 byte hole on 64 bit*/
250 259
251 struct dst_entry *dst; 260 struct dst_entry *dst;
252 struct sec_path *sp; 261 struct sec_path *sp;
@@ -260,8 +269,9 @@ struct sk_buff {
260 char cb[48]; 269 char cb[48];
261 270
262 unsigned int len, 271 unsigned int len,
263 data_len, 272 data_len;
264 mac_len; 273 __u16 mac_len,
274 hdr_len;
265 union { 275 union {
266 __wsum csum; 276 __wsum csum;
267 struct { 277 struct {
@@ -277,7 +287,8 @@ struct sk_buff {
277 nfctinfo:3; 287 nfctinfo:3;
278 __u8 pkt_type:3, 288 __u8 pkt_type:3,
279 fclone:2, 289 fclone:2,
280 ipvs_property:1; 290 ipvs_property:1,
291 nf_trace:1;
281 __be16 protocol; 292 __be16 protocol;
282 293
283 void (*destructor)(struct sk_buff *skb); 294 void (*destructor)(struct sk_buff *skb);
@@ -288,12 +299,18 @@ struct sk_buff {
288#ifdef CONFIG_BRIDGE_NETFILTER 299#ifdef CONFIG_BRIDGE_NETFILTER
289 struct nf_bridge_info *nf_bridge; 300 struct nf_bridge_info *nf_bridge;
290#endif 301#endif
302
303 int iif;
304 __u16 queue_mapping;
305
291#ifdef CONFIG_NET_SCHED 306#ifdef CONFIG_NET_SCHED
292 __u16 tc_index; /* traffic control index */ 307 __u16 tc_index; /* traffic control index */
293#ifdef CONFIG_NET_CLS_ACT 308#ifdef CONFIG_NET_CLS_ACT
294 __u16 tc_verd; /* traffic control verdict */ 309 __u16 tc_verd; /* traffic control verdict */
295#endif 310#endif
296#endif 311#endif
312 /* 2 byte hole */
313
297#ifdef CONFIG_NET_DMA 314#ifdef CONFIG_NET_DMA
298 dma_cookie_t dma_cookie; 315 dma_cookie_t dma_cookie;
299#endif 316#endif
@@ -1322,6 +1339,20 @@ static inline struct sk_buff *netdev_alloc_skb(struct net_device *dev,
1322} 1339}
1323 1340
1324/** 1341/**
1342 * skb_clone_writable - is the header of a clone writable
1343 * @skb: buffer to check
1344 * @len: length up to which to write
1345 *
1346 * Returns true if modifying the header part of the cloned buffer
1347 * does not requires the data to be copied.
1348 */
1349static inline int skb_clone_writable(struct sk_buff *skb, int len)
1350{
1351 return !skb_header_cloned(skb) &&
1352 skb_headroom(skb) + len <= skb->hdr_len;
1353}
1354
1355/**
1325 * skb_cow - copy header of skb when it is required 1356 * skb_cow - copy header of skb when it is required
1326 * @skb: buffer to cow 1357 * @skb: buffer to cow
1327 * @headroom: needed headroom 1358 * @headroom: needed headroom
@@ -1709,6 +1740,20 @@ static inline void skb_init_secmark(struct sk_buff *skb)
1709{ } 1740{ }
1710#endif 1741#endif
1711 1742
1743static inline void skb_set_queue_mapping(struct sk_buff *skb, u16 queue_mapping)
1744{
1745#ifdef CONFIG_NETDEVICES_MULTIQUEUE
1746 skb->queue_mapping = queue_mapping;
1747#endif
1748}
1749
1750static inline void skb_copy_queue_mapping(struct sk_buff *to, const struct sk_buff *from)
1751{
1752#ifdef CONFIG_NETDEVICES_MULTIQUEUE
1753 to->queue_mapping = from->queue_mapping;
1754#endif
1755}
1756
1712static inline int skb_is_gso(const struct sk_buff *skb) 1757static inline int skb_is_gso(const struct sk_buff *skb)
1713{ 1758{
1714 return skb_shinfo(skb)->gso_size; 1759 return skb_shinfo(skb)->gso_size;
diff --git a/include/linux/socket.h b/include/linux/socket.h
index 6e7c9483a6a6..fe195c97a89d 100644
--- a/include/linux/socket.h
+++ b/include/linux/socket.h
@@ -287,6 +287,7 @@ struct ucred {
287#define SOL_NETLINK 270 287#define SOL_NETLINK 270
288#define SOL_TIPC 271 288#define SOL_TIPC 271
289#define SOL_RXRPC 272 289#define SOL_RXRPC 272
290#define SOL_PPPOL2TP 273
290 291
291/* IPX options */ 292/* IPX options */
292#define IPX_TYPE 1 293#define IPX_TYPE 1
diff --git a/include/linux/sysdev.h b/include/linux/sysdev.h
index e699ab279c2c..e285746588d6 100644
--- a/include/linux/sysdev.h
+++ b/include/linux/sysdev.h
@@ -101,8 +101,7 @@ struct sysdev_attribute {
101 101
102#define _SYSDEV_ATTR(_name,_mode,_show,_store) \ 102#define _SYSDEV_ATTR(_name,_mode,_show,_store) \
103{ \ 103{ \
104 .attr = { .name = __stringify(_name), .mode = _mode, \ 104 .attr = { .name = __stringify(_name), .mode = _mode }, \
105 .owner = THIS_MODULE }, \
106 .show = _show, \ 105 .show = _show, \
107 .store = _store, \ 106 .store = _store, \
108} 107}
diff --git a/include/linux/sysfs.h b/include/linux/sysfs.h
index 7d5d1ec95c2e..be8228e50a27 100644
--- a/include/linux/sysfs.h
+++ b/include/linux/sysfs.h
@@ -19,10 +19,15 @@ struct kobject;
19struct module; 19struct module;
20struct nameidata; 20struct nameidata;
21struct dentry; 21struct dentry;
22struct sysfs_dirent;
22 23
24/* FIXME
25 * The *owner field is no longer used, but leave around
26 * until the tree gets cleaned up fully.
27 */
23struct attribute { 28struct attribute {
24 const char * name; 29 const char * name;
25 struct module * owner; 30 struct module * owner;
26 mode_t mode; 31 mode_t mode;
27}; 32};
28 33
@@ -39,14 +44,14 @@ struct attribute_group {
39 */ 44 */
40 45
41#define __ATTR(_name,_mode,_show,_store) { \ 46#define __ATTR(_name,_mode,_show,_store) { \
42 .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ 47 .attr = {.name = __stringify(_name), .mode = _mode }, \
43 .show = _show, \ 48 .show = _show, \
44 .store = _store, \ 49 .store = _store, \
45} 50}
46 51
47#define __ATTR_RO(_name) { \ 52#define __ATTR_RO(_name) { \
48 .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE }, \ 53 .attr = { .name = __stringify(_name), .mode = 0444 }, \
49 .show = _name##_show, \ 54 .show = _name##_show, \
50} 55}
51 56
52#define __ATTR_NULL { .attr = { .name = NULL } } 57#define __ATTR_NULL { .attr = { .name = NULL } }
@@ -59,8 +64,10 @@ struct bin_attribute {
59 struct attribute attr; 64 struct attribute attr;
60 size_t size; 65 size_t size;
61 void *private; 66 void *private;
62 ssize_t (*read)(struct kobject *, char *, loff_t, size_t); 67 ssize_t (*read)(struct kobject *, struct bin_attribute *,
63 ssize_t (*write)(struct kobject *, char *, loff_t, size_t); 68 char *, loff_t, size_t);
69 ssize_t (*write)(struct kobject *, struct bin_attribute *,
70 char *, loff_t, size_t);
64 int (*mmap)(struct kobject *, struct bin_attribute *attr, 71 int (*mmap)(struct kobject *, struct bin_attribute *attr,
65 struct vm_area_struct *vma); 72 struct vm_area_struct *vma);
66}; 73};
@@ -70,12 +77,16 @@ struct sysfs_ops {
70 ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t); 77 ssize_t (*store)(struct kobject *,struct attribute *,const char *, size_t);
71}; 78};
72 79
80#define SYSFS_TYPE_MASK 0x00ff
73#define SYSFS_ROOT 0x0001 81#define SYSFS_ROOT 0x0001
74#define SYSFS_DIR 0x0002 82#define SYSFS_DIR 0x0002
75#define SYSFS_KOBJ_ATTR 0x0004 83#define SYSFS_KOBJ_ATTR 0x0004
76#define SYSFS_KOBJ_BIN_ATTR 0x0008 84#define SYSFS_KOBJ_BIN_ATTR 0x0008
77#define SYSFS_KOBJ_LINK 0x0020 85#define SYSFS_KOBJ_LINK 0x0020
78#define SYSFS_NOT_PINNED (SYSFS_KOBJ_ATTR | SYSFS_KOBJ_BIN_ATTR | SYSFS_KOBJ_LINK) 86#define SYSFS_COPY_NAME (SYSFS_DIR | SYSFS_KOBJ_LINK)
87
88#define SYSFS_FLAG_MASK ~SYSFS_TYPE_MASK
89#define SYSFS_FLAG_REMOVED 0x0100
79 90
80#ifdef CONFIG_SYSFS 91#ifdef CONFIG_SYSFS
81 92
@@ -83,13 +94,14 @@ extern int sysfs_schedule_callback(struct kobject *kobj,
83 void (*func)(void *), void *data, struct module *owner); 94 void (*func)(void *), void *data, struct module *owner);
84 95
85extern int __must_check 96extern int __must_check
86sysfs_create_dir(struct kobject *, struct dentry *); 97sysfs_create_dir(struct kobject *kobj, struct sysfs_dirent *shadow_parent_sd);
87 98
88extern void 99extern void
89sysfs_remove_dir(struct kobject *); 100sysfs_remove_dir(struct kobject *);
90 101
91extern int __must_check 102extern int __must_check
92sysfs_rename_dir(struct kobject *, struct dentry *, const char *new_name); 103sysfs_rename_dir(struct kobject *kobj, struct sysfs_dirent *new_parent_sd,
104 const char *new_name);
93 105
94extern int __must_check 106extern int __must_check
95sysfs_move_dir(struct kobject *, struct kobject *); 107sysfs_move_dir(struct kobject *, struct kobject *);
@@ -129,8 +141,8 @@ void sysfs_notify(struct kobject * k, char *dir, char *attr);
129 141
130extern int sysfs_make_shadowed_dir(struct kobject *kobj, 142extern int sysfs_make_shadowed_dir(struct kobject *kobj,
131 void * (*follow_link)(struct dentry *, struct nameidata *)); 143 void * (*follow_link)(struct dentry *, struct nameidata *));
132extern struct dentry *sysfs_create_shadow_dir(struct kobject *kobj); 144extern struct sysfs_dirent *sysfs_create_shadow_dir(struct kobject *kobj);
133extern void sysfs_remove_shadow_dir(struct dentry *dir); 145extern void sysfs_remove_shadow_dir(struct sysfs_dirent *shadow_sd);
134 146
135extern int __must_check sysfs_init(void); 147extern int __must_check sysfs_init(void);
136 148
@@ -142,7 +154,8 @@ static inline int sysfs_schedule_callback(struct kobject *kobj,
142 return -ENOSYS; 154 return -ENOSYS;
143} 155}
144 156
145static inline int sysfs_create_dir(struct kobject * k, struct dentry *shadow) 157static inline int sysfs_create_dir(struct kobject *kobj,
158 struct sysfs_dirent *shadow_parent_sd)
146{ 159{
147 return 0; 160 return 0;
148} 161}
@@ -152,9 +165,9 @@ static inline void sysfs_remove_dir(struct kobject * k)
152 ; 165 ;
153} 166}
154 167
155static inline int sysfs_rename_dir(struct kobject * k, 168static inline int sysfs_rename_dir(struct kobject *kobj,
156 struct dentry *new_parent, 169 struct sysfs_dirent *new_parent_sd,
157 const char *new_name) 170 const char *new_name)
158{ 171{
159 return 0; 172 return 0;
160} 173}
diff --git a/include/linux/udp.h b/include/linux/udp.h
index 6de445c31a64..8ec703f462da 100644
--- a/include/linux/udp.h
+++ b/include/linux/udp.h
@@ -42,6 +42,7 @@ static inline struct udphdr *udp_hdr(const struct sk_buff *skb)
42/* UDP encapsulation types */ 42/* UDP encapsulation types */
43#define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */ 43#define UDP_ENCAP_ESPINUDP_NON_IKE 1 /* draft-ietf-ipsec-nat-t-ike-00/01 */
44#define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */ 44#define UDP_ENCAP_ESPINUDP 2 /* draft-ietf-ipsec-udp-encaps-06 */
45#define UDP_ENCAP_L2TPINUDP 3 /* rfc2661 */
45 46
46#ifdef __KERNEL__ 47#ifdef __KERNEL__
47#include <linux/types.h> 48#include <linux/types.h>
@@ -70,6 +71,11 @@ struct udp_sock {
70#define UDPLITE_SEND_CC 0x2 /* set via udplite setsockopt */ 71#define UDPLITE_SEND_CC 0x2 /* set via udplite setsockopt */
71#define UDPLITE_RECV_CC 0x4 /* set via udplite setsocktopt */ 72#define UDPLITE_RECV_CC 0x4 /* set via udplite setsocktopt */
72 __u8 pcflag; /* marks socket as UDP-Lite if > 0 */ 73 __u8 pcflag; /* marks socket as UDP-Lite if > 0 */
74 __u8 unused[3];
75 /*
76 * For encapsulation sockets.
77 */
78 int (*encap_rcv)(struct sock *sk, struct sk_buff *skb);
73}; 79};
74 80
75static inline struct udp_sock *udp_sk(const struct sock *sk) 81static inline struct udp_sock *udp_sk(const struct sock *sk)
diff --git a/include/linux/usb.h b/include/linux/usb.h
index 56aa2ee21f1b..7a60946df3b6 100644
--- a/include/linux/usb.h
+++ b/include/linux/usb.h
@@ -146,6 +146,10 @@ struct usb_interface {
146 * active alternate setting */ 146 * active alternate setting */
147 unsigned num_altsetting; /* number of alternate settings */ 147 unsigned num_altsetting; /* number of alternate settings */
148 148
149 /* If there is an interface association descriptor then it will list
150 * the associated interfaces */
151 struct usb_interface_assoc_descriptor *intf_assoc;
152
149 int minor; /* minor number this interface is 153 int minor; /* minor number this interface is
150 * bound to */ 154 * bound to */
151 enum usb_interface_condition condition; /* state of binding */ 155 enum usb_interface_condition condition; /* state of binding */
@@ -175,6 +179,7 @@ void usb_put_intf(struct usb_interface *intf);
175 179
176/* this maximum is arbitrary */ 180/* this maximum is arbitrary */
177#define USB_MAXINTERFACES 32 181#define USB_MAXINTERFACES 32
182#define USB_MAXIADS USB_MAXINTERFACES/2
178 183
179/** 184/**
180 * struct usb_interface_cache - long-term representation of a device interface 185 * struct usb_interface_cache - long-term representation of a device interface
@@ -245,6 +250,11 @@ struct usb_host_config {
245 struct usb_config_descriptor desc; 250 struct usb_config_descriptor desc;
246 251
247 char *string; /* iConfiguration string, if present */ 252 char *string; /* iConfiguration string, if present */
253
254 /* List of any Interface Association Descriptors in this
255 * configuration. */
256 struct usb_interface_assoc_descriptor *intf_assoc[USB_MAXIADS];
257
248 /* the interfaces associated with this configuration, 258 /* the interfaces associated with this configuration,
249 * stored in no particular order */ 259 * stored in no particular order */
250 struct usb_interface *interface[USB_MAXINTERFACES]; 260 struct usb_interface *interface[USB_MAXINTERFACES];
@@ -403,6 +413,8 @@ struct usb_device {
403 413
404 unsigned auto_pm:1; /* autosuspend/resume in progress */ 414 unsigned auto_pm:1; /* autosuspend/resume in progress */
405 unsigned do_remote_wakeup:1; /* remote wakeup should be enabled */ 415 unsigned do_remote_wakeup:1; /* remote wakeup should be enabled */
416 unsigned reset_resume:1; /* needs reset instead of resume */
417 unsigned persist_enabled:1; /* USB_PERSIST enabled for this dev */
406 unsigned autosuspend_disabled:1; /* autosuspend and autoresume */ 418 unsigned autosuspend_disabled:1; /* autosuspend and autoresume */
407 unsigned autoresume_disabled:1; /* disabled by the user */ 419 unsigned autoresume_disabled:1; /* disabled by the user */
408#endif 420#endif
@@ -770,6 +782,28 @@ static inline int usb_endpoint_is_isoc_out(const struct usb_endpoint_descriptor
770 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), \ 782 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = (cl), \
771 .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr) 783 .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr)
772 784
785/**
786 * USB_DEVICE_AND_INTERFACE_INFO - macro used to describe a specific usb device
787 * with a class of usb interfaces
788 * @vend: the 16 bit USB Vendor ID
789 * @prod: the 16 bit USB Product ID
790 * @cl: bInterfaceClass value
791 * @sc: bInterfaceSubClass value
792 * @pr: bInterfaceProtocol value
793 *
794 * This macro is used to create a struct usb_device_id that matches a
795 * specific device with a specific class of interfaces.
796 *
797 * This is especially useful when explicitly matching devices that have
798 * vendor specific bDeviceClass values, but standards-compliant interfaces.
799 */
800#define USB_DEVICE_AND_INTERFACE_INFO(vend,prod,cl,sc,pr) \
801 .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \
802 | USB_DEVICE_ID_MATCH_DEVICE, \
803 .idVendor = (vend), .idProduct = (prod), \
804 .bInterfaceClass = (cl), \
805 .bInterfaceSubClass = (sc), .bInterfaceProtocol = (pr)
806
773/* ----------------------------------------------------------------------- */ 807/* ----------------------------------------------------------------------- */
774 808
775/* Stuff for dynamic usb ids */ 809/* Stuff for dynamic usb ids */
@@ -816,10 +850,15 @@ struct usbdrv_wrap {
816 * do (or don't) show up otherwise in the filesystem. 850 * do (or don't) show up otherwise in the filesystem.
817 * @suspend: Called when the device is going to be suspended by the system. 851 * @suspend: Called when the device is going to be suspended by the system.
818 * @resume: Called when the device is being resumed by the system. 852 * @resume: Called when the device is being resumed by the system.
853 * @reset_resume: Called when the suspended device has been reset instead
854 * of being resumed.
819 * @pre_reset: Called by usb_reset_composite_device() when the device 855 * @pre_reset: Called by usb_reset_composite_device() when the device
820 * is about to be reset. 856 * is about to be reset.
821 * @post_reset: Called by usb_reset_composite_device() after the device 857 * @post_reset: Called by usb_reset_composite_device() after the device
822 * has been reset. 858 * has been reset, or in lieu of @resume following a reset-resume
859 * (i.e., the device is reset instead of being resumed, as might
860 * happen if power was lost). The second argument tells which is
861 * the reason.
823 * @id_table: USB drivers use ID table to support hotplugging. 862 * @id_table: USB drivers use ID table to support hotplugging.
824 * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set 863 * Export this with MODULE_DEVICE_TABLE(usb,...). This must be set
825 * or your driver's probe function will never get called. 864 * or your driver's probe function will never get called.
@@ -859,9 +898,10 @@ struct usb_driver {
859 898
860 int (*suspend) (struct usb_interface *intf, pm_message_t message); 899 int (*suspend) (struct usb_interface *intf, pm_message_t message);
861 int (*resume) (struct usb_interface *intf); 900 int (*resume) (struct usb_interface *intf);
901 int (*reset_resume)(struct usb_interface *intf);
862 902
863 void (*pre_reset) (struct usb_interface *intf); 903 int (*pre_reset)(struct usb_interface *intf);
864 void (*post_reset) (struct usb_interface *intf); 904 int (*post_reset)(struct usb_interface *intf);
865 905
866 const struct usb_device_id *id_table; 906 const struct usb_device_id *id_table;
867 907
@@ -964,6 +1004,7 @@ extern int usb_disabled(void);
964#define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */ 1004#define URB_ZERO_PACKET 0x0040 /* Finish bulk OUT with short packet */
965#define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt 1005#define URB_NO_INTERRUPT 0x0080 /* HINT: no non-error interrupt
966 * needed */ 1006 * needed */
1007#define URB_FREE_BUFFER 0x0100 /* Free transfer buffer with the URB */
967 1008
968struct usb_iso_packet_descriptor { 1009struct usb_iso_packet_descriptor {
969 unsigned int offset; 1010 unsigned int offset;
@@ -974,11 +1015,26 @@ struct usb_iso_packet_descriptor {
974 1015
975struct urb; 1016struct urb;
976 1017
1018struct usb_anchor {
1019 struct list_head urb_list;
1020 wait_queue_head_t wait;
1021 spinlock_t lock;
1022};
1023
1024static inline void init_usb_anchor(struct usb_anchor *anchor)
1025{
1026 INIT_LIST_HEAD(&anchor->urb_list);
1027 init_waitqueue_head(&anchor->wait);
1028 spin_lock_init(&anchor->lock);
1029}
1030
977typedef void (*usb_complete_t)(struct urb *); 1031typedef void (*usb_complete_t)(struct urb *);
978 1032
979/** 1033/**
980 * struct urb - USB Request Block 1034 * struct urb - USB Request Block
981 * @urb_list: For use by current owner of the URB. 1035 * @urb_list: For use by current owner of the URB.
1036 * @anchor_list: membership in the list of an anchor
1037 * @anchor: to anchor URBs to a common mooring
982 * @pipe: Holds endpoint number, direction, type, and more. 1038 * @pipe: Holds endpoint number, direction, type, and more.
983 * Create these values with the eight macros available; 1039 * Create these values with the eight macros available;
984 * usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl" 1040 * usb_{snd,rcv}TYPEpipe(dev,endpoint), where the TYPE is "ctrl"
@@ -1151,6 +1207,8 @@ struct urb
1151 /* public: documented fields in the urb that can be used by drivers */ 1207 /* public: documented fields in the urb that can be used by drivers */
1152 struct list_head urb_list; /* list head for use by the urb's 1208 struct list_head urb_list; /* list head for use by the urb's
1153 * current owner */ 1209 * current owner */
1210 struct list_head anchor_list; /* the URB may be anchored by the driver */
1211 struct usb_anchor *anchor;
1154 struct usb_device *dev; /* (in) pointer to associated device */ 1212 struct usb_device *dev; /* (in) pointer to associated device */
1155 unsigned int pipe; /* (in) pipe information */ 1213 unsigned int pipe; /* (in) pipe information */
1156 int status; /* (return) non-ISO status */ 1214 int status; /* (return) non-ISO status */
@@ -1286,6 +1344,11 @@ extern struct urb *usb_get_urb(struct urb *urb);
1286extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags); 1344extern int usb_submit_urb(struct urb *urb, gfp_t mem_flags);
1287extern int usb_unlink_urb(struct urb *urb); 1345extern int usb_unlink_urb(struct urb *urb);
1288extern void usb_kill_urb(struct urb *urb); 1346extern void usb_kill_urb(struct urb *urb);
1347extern void usb_kill_anchored_urbs(struct usb_anchor *anchor);
1348extern void usb_anchor_urb(struct urb *urb, struct usb_anchor *anchor);
1349extern void usb_unanchor_urb(struct urb *urb);
1350extern int usb_wait_anchor_empty_timeout(struct usb_anchor *anchor,
1351 unsigned int timeout);
1289 1352
1290void *usb_buffer_alloc (struct usb_device *dev, size_t size, 1353void *usb_buffer_alloc (struct usb_device *dev, size_t size,
1291 gfp_t mem_flags, dma_addr_t *dma); 1354 gfp_t mem_flags, dma_addr_t *dma);
diff --git a/include/linux/usb/Kbuild b/include/linux/usb/Kbuild
index 43f160cfe003..6ce42bf9f743 100644
--- a/include/linux/usb/Kbuild
+++ b/include/linux/usb/Kbuild
@@ -1,5 +1,6 @@
1unifdef-y += audio.h 1unifdef-y += audio.h
2unifdef-y += cdc.h 2unifdef-y += cdc.h
3unifdef-y += ch9.h 3unifdef-y += ch9.h
4unifdef-y += gadgetfs.h
4unifdef-y += midi.h 5unifdef-y += midi.h
5 6
diff --git a/include/linux/usb_gadgetfs.h b/include/linux/usb/gadgetfs.h
index 8086d5a9b94e..e8654c338729 100644
--- a/include/linux/usb_gadgetfs.h
+++ b/include/linux/usb/gadgetfs.h
@@ -1,3 +1,5 @@
1#ifndef __LINUX_USB_GADGETFS_H
2#define __LINUX_USB_GADGETFS_H
1 3
2#include <asm/types.h> 4#include <asm/types.h>
3#include <asm/ioctl.h> 5#include <asm/ioctl.h>
@@ -7,11 +9,12 @@
7/* 9/*
8 * Filesystem based user-mode API to USB Gadget controller hardware 10 * Filesystem based user-mode API to USB Gadget controller hardware
9 * 11 *
10 * Almost everything can be done with only read and write operations, 12 * Other than ep0 operations, most things are done by read() and write()
11 * on endpoint files found in one directory. They are configured by 13 * on endpoint files found in one directory. They are configured by
12 * writing descriptors, and then may be used for normal stream style 14 * writing descriptors, and then may be used for normal stream style
13 * i/o requests. When ep0 is configured, the device can enumerate; 15 * i/o requests. When ep0 is configured, the device can enumerate;
14 * when it's closed, the device disconnects from usb. 16 * when it's closed, the device disconnects from usb. Operations on
17 * ep0 require ioctl() operations.
15 * 18 *
16 * Configuration and device descriptors get written to /dev/gadget/$CHIP, 19 * Configuration and device descriptors get written to /dev/gadget/$CHIP,
17 * which may then be used to read usb_gadgetfs_event structs. The driver 20 * which may then be used to read usb_gadgetfs_event structs. The driver
@@ -21,9 +24,9 @@
21 */ 24 */
22 25
23/* 26/*
24 * Events are delivered on the ep0 file descriptor, if the user mode driver 27 * Events are delivered on the ep0 file descriptor, when the user mode driver
25 * reads from this file descriptor after writing the descriptors. Don't 28 * reads from this file descriptor after writing the descriptors. Don't
26 * stop polling this descriptor, if you write that kind of driver. 29 * stop polling this descriptor.
27 */ 30 */
28 31
29enum usb_gadgetfs_event_type { 32enum usb_gadgetfs_event_type {
@@ -36,8 +39,10 @@ enum usb_gadgetfs_event_type {
36 // and likely more ! 39 // and likely more !
37}; 40};
38 41
42/* NOTE: this structure must stay the same size and layout on
43 * both 32-bit and 64-bit kernels.
44 */
39struct usb_gadgetfs_event { 45struct usb_gadgetfs_event {
40 enum usb_gadgetfs_event_type type;
41 union { 46 union {
42 // NOP, DISCONNECT, SUSPEND: nothing 47 // NOP, DISCONNECT, SUSPEND: nothing
43 // ... some hardware can't report disconnection 48 // ... some hardware can't report disconnection
@@ -46,19 +51,20 @@ struct usb_gadgetfs_event {
46 enum usb_device_speed speed; 51 enum usb_device_speed speed;
47 52
48 // SETUP: packet; DATA phase i/o precedes next event 53 // SETUP: packet; DATA phase i/o precedes next event
49 // (setup.bmRequestType & USB_DIR_IN) flags direction 54 // (setup.bmRequestType & USB_DIR_IN) flags direction
50 // ... includes SET_CONFIGURATION, SET_INTERFACE 55 // ... includes SET_CONFIGURATION, SET_INTERFACE
51 struct usb_ctrlrequest setup; 56 struct usb_ctrlrequest setup;
52 } u; 57 } u;
58 enum usb_gadgetfs_event_type type;
53}; 59};
54 60
55 61
56/* endpoint ioctls */ 62/* endpoint ioctls */
57 63
58/* IN transfers may be reported to the gadget driver as complete 64/* IN transfers may be reported to the gadget driver as complete
59 * when the fifo is loaded, before the host reads the data; 65 * when the fifo is loaded, before the host reads the data;
60 * OUT transfers may be reported to the host's "client" driver as 66 * OUT transfers may be reported to the host's "client" driver as
61 * complete when they're sitting in the FIFO unread. 67 * complete when they're sitting in the FIFO unread.
62 * THIS returns how many bytes are "unclaimed" in the endpoint fifo 68 * THIS returns how many bytes are "unclaimed" in the endpoint fifo
63 * (needed for precise fault handling, when the hardware allows it) 69 * (needed for precise fault handling, when the hardware allows it)
64 */ 70 */
@@ -72,4 +78,4 @@ struct usb_gadgetfs_event {
72 */ 78 */
73#define GADGETFS_CLEAR_HALT _IO('g',3) 79#define GADGETFS_CLEAR_HALT _IO('g',3)
74 80
75 81#endif /* __LINUX_USB_GADGETFS_H */
diff --git a/include/linux/usb/quirks.h b/include/linux/usb/quirks.h
index 6bac8faacbc6..8da374caf582 100644
--- a/include/linux/usb/quirks.h
+++ b/include/linux/usb/quirks.h
@@ -9,3 +9,6 @@
9 9
10/* string descriptors must not be fetched using a 255-byte read */ 10/* string descriptors must not be fetched using a 255-byte read */
11#define USB_QUIRK_STRING_FETCH_255 0x00000002 11#define USB_QUIRK_STRING_FETCH_255 0x00000002
12
13/* device can't resume correctly so reset it instead */
14#define USB_QUIRK_RESET_RESUME 0x00000004
diff --git a/include/linux/usb/serial.h b/include/linux/usb/serial.h
index 32acbae28d24..e8b8928232c8 100644
--- a/include/linux/usb/serial.h
+++ b/include/linux/usb/serial.h
@@ -221,6 +221,9 @@ struct usb_serial_driver {
221 int (*port_probe) (struct usb_serial_port *port); 221 int (*port_probe) (struct usb_serial_port *port);
222 int (*port_remove) (struct usb_serial_port *port); 222 int (*port_remove) (struct usb_serial_port *port);
223 223
224 int (*suspend) (struct usb_serial *serial, pm_message_t message);
225 int (*resume) (struct usb_serial *serial);
226
224 /* serial function calls */ 227 /* serial function calls */
225 int (*open) (struct usb_serial_port *port, struct file * filp); 228 int (*open) (struct usb_serial_port *port, struct file * filp);
226 void (*close) (struct usb_serial_port *port, struct file * filp); 229 void (*close) (struct usb_serial_port *port, struct file * filp);
@@ -249,6 +252,9 @@ extern void usb_serial_port_softint(struct usb_serial_port *port);
249extern int usb_serial_probe(struct usb_interface *iface, const struct usb_device_id *id); 252extern int usb_serial_probe(struct usb_interface *iface, const struct usb_device_id *id);
250extern void usb_serial_disconnect(struct usb_interface *iface); 253extern void usb_serial_disconnect(struct usb_interface *iface);
251 254
255extern int usb_serial_suspend(struct usb_interface *intf, pm_message_t message);
256extern int usb_serial_resume(struct usb_interface *intf);
257
252extern int ezusb_writememory (struct usb_serial *serial, int address, unsigned char *data, int length, __u8 bRequest); 258extern int ezusb_writememory (struct usb_serial *serial, int address, unsigned char *data, int length, __u8 bRequest);
253extern int ezusb_set_reset (struct usb_serial *serial, unsigned char reset_bit); 259extern int ezusb_set_reset (struct usb_serial *serial, unsigned char reset_bit);
254 260
@@ -269,6 +275,7 @@ extern void usb_serial_put(struct usb_serial *serial);
269extern int usb_serial_generic_open (struct usb_serial_port *port, struct file *filp); 275extern int usb_serial_generic_open (struct usb_serial_port *port, struct file *filp);
270extern int usb_serial_generic_write (struct usb_serial_port *port, const unsigned char *buf, int count); 276extern int usb_serial_generic_write (struct usb_serial_port *port, const unsigned char *buf, int count);
271extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp); 277extern void usb_serial_generic_close (struct usb_serial_port *port, struct file *filp);
278extern int usb_serial_generic_resume (struct usb_serial *serial);
272extern int usb_serial_generic_write_room (struct usb_serial_port *port); 279extern int usb_serial_generic_write_room (struct usb_serial_port *port);
273extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port); 280extern int usb_serial_generic_chars_in_buffer (struct usb_serial_port *port);
274extern void usb_serial_generic_read_bulk_callback (struct urb *urb); 281extern void usb_serial_generic_read_bulk_callback (struct urb *urb);
diff --git a/include/linux/usb_gadget.h b/include/linux/usb_gadget.h
index e17186dbcdca..4f59b2aa8a9e 100644
--- a/include/linux/usb_gadget.h
+++ b/include/linux/usb_gadget.h
@@ -110,13 +110,6 @@ struct usb_ep_ops {
110 gfp_t gfp_flags); 110 gfp_t gfp_flags);
111 void (*free_request) (struct usb_ep *ep, struct usb_request *req); 111 void (*free_request) (struct usb_ep *ep, struct usb_request *req);
112 112
113 void *(*alloc_buffer) (struct usb_ep *ep, unsigned bytes,
114 dma_addr_t *dma, gfp_t gfp_flags);
115 void (*free_buffer) (struct usb_ep *ep, void *buf, dma_addr_t dma,
116 unsigned bytes);
117 // NOTE: on 2.6, drivers may also use dma_map() and
118 // dma_sync_single_*() to directly manage dma overhead.
119
120 int (*queue) (struct usb_ep *ep, struct usb_request *req, 113 int (*queue) (struct usb_ep *ep, struct usb_request *req,
121 gfp_t gfp_flags); 114 gfp_t gfp_flags);
122 int (*dequeue) (struct usb_ep *ep, struct usb_request *req); 115 int (*dequeue) (struct usb_ep *ep, struct usb_request *req);
@@ -235,47 +228,6 @@ usb_ep_free_request (struct usb_ep *ep, struct usb_request *req)
235} 228}
236 229
237/** 230/**
238 * usb_ep_alloc_buffer - allocate an I/O buffer
239 * @ep:the endpoint associated with the buffer
240 * @len:length of the desired buffer
241 * @dma:pointer to the buffer's DMA address; must be valid
242 * @gfp_flags:GFP_* flags to use
243 *
244 * Returns a new buffer, or null if one could not be allocated.
245 * The buffer is suitably aligned for dma, if that endpoint uses DMA,
246 * and the caller won't have to care about dma-inconsistency
247 * or any hidden "bounce buffer" mechanism. No additional per-request
248 * DMA mapping will be required for such buffers.
249 * Free it later with usb_ep_free_buffer().
250 *
251 * You don't need to use this call to allocate I/O buffers unless you
252 * want to make sure drivers don't incur costs for such "bounce buffer"
253 * copies or per-request DMA mappings.
254 */
255static inline void *
256usb_ep_alloc_buffer (struct usb_ep *ep, unsigned len, dma_addr_t *dma,
257 gfp_t gfp_flags)
258{
259 return ep->ops->alloc_buffer (ep, len, dma, gfp_flags);
260}
261
262/**
263 * usb_ep_free_buffer - frees an i/o buffer
264 * @ep:the endpoint associated with the buffer
265 * @buf:CPU view address of the buffer
266 * @dma:the buffer's DMA address
267 * @len:length of the buffer
268 *
269 * reverses the effect of usb_ep_alloc_buffer().
270 * caller guarantees the buffer will no longer be accessed
271 */
272static inline void
273usb_ep_free_buffer (struct usb_ep *ep, void *buf, dma_addr_t dma, unsigned len)
274{
275 ep->ops->free_buffer (ep, buf, dma, len);
276}
277
278/**
279 * usb_ep_queue - queues (submits) an I/O request to an endpoint. 231 * usb_ep_queue - queues (submits) an I/O request to an endpoint.
280 * @ep:the endpoint associated with the request 232 * @ep:the endpoint associated with the request
281 * @req:the request being submitted 233 * @req:the request being submitted