diff options
| author | Olof Johansson <olof@lixom.net> | 2012-05-12 01:59:11 -0400 |
|---|---|---|
| committer | Olof Johansson <olof@lixom.net> | 2012-05-12 01:59:11 -0400 |
| commit | 4a0dfe69fe489b06ae5bad26ae67ae8aefaca3aa (patch) | |
| tree | cdac4232b95103402e8328815be80105620d41f2 /include | |
| parent | 7488185d0777ef84be7b365b08037fc7213010f6 (diff) | |
| parent | a0f5e3631b07cabf624e7d818df76d47d9d21017 (diff) | |
Merge branch 'imx/pinctrl/for-3.5' of git://git.linaro.org/people/shawnguo/linux-2.6 into next/pinctrl
* 'imx/pinctrl/for-3.5' of git://git.linaro.org/people/shawnguo/linux-2.6: (290 commits)
ARM: mxs: enable pinctrl support
video: mxsfb: adopt pinctrl support
ASoC: mxs-saif: adopt pinctrl support
i2c: mxs: adopt pinctrl support
mtd: nand: gpmi: adopt pinctrl support
mmc: mxs-mmc: adopt pinctrl support
serial: mxs-auart: adopt pinctrl support
serial: amba-pl011: adopt pinctrl support
spi/imx: adopt pinctrl support
i2c: imx: adopt pinctrl support
can: flexcan: adopt pinctrl support
net: fec: adopt pinctrl support
tty: serial: imx: adopt pinctrl support
mmc: sdhci-imx-esdhc: adopt pinctrl support
ARM: imx6q: switch to use pinctrl subsystem
ARM: mxs: enable pinctrl dummy states
ARM: imx: enable pinctrl dummy states
+3.4-rc5 update
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-generic/siginfo.h | 14 | ||||
| -rw-r--r-- | include/linux/gpio-pxa.h | 4 | ||||
| -rw-r--r-- | include/linux/hsi/hsi.h | 31 | ||||
| -rw-r--r-- | include/linux/irq.h | 7 | ||||
| -rw-r--r-- | include/linux/nfs_xdr.h | 7 | ||||
| -rw-r--r-- | include/linux/pipe_fs_i.h | 1 | ||||
| -rw-r--r-- | include/linux/skbuff.h | 7 | ||||
| -rw-r--r-- | include/linux/spi/spi.h | 2 | ||||
| -rw-r--r-- | include/linux/usb/hcd.h | 2 | ||||
| -rw-r--r-- | include/linux/vm_event_item.h | 5 | ||||
| -rw-r--r-- | include/net/dst.h | 6 | ||||
| -rw-r--r-- | include/net/ip6_fib.h | 48 | ||||
| -rw-r--r-- | include/net/red.h | 6 | ||||
| -rw-r--r-- | include/net/sock.h | 1 |
14 files changed, 113 insertions, 28 deletions
diff --git a/include/asm-generic/siginfo.h b/include/asm-generic/siginfo.h index 0dd4e87f6fba..5e5e3865f1ed 100644 --- a/include/asm-generic/siginfo.h +++ b/include/asm-generic/siginfo.h | |||
| @@ -35,6 +35,14 @@ typedef union sigval { | |||
| 35 | #define __ARCH_SI_BAND_T long | 35 | #define __ARCH_SI_BAND_T long |
| 36 | #endif | 36 | #endif |
| 37 | 37 | ||
| 38 | #ifndef __ARCH_SI_CLOCK_T | ||
| 39 | #define __ARCH_SI_CLOCK_T __kernel_clock_t | ||
| 40 | #endif | ||
| 41 | |||
| 42 | #ifndef __ARCH_SI_ATTRIBUTES | ||
| 43 | #define __ARCH_SI_ATTRIBUTES | ||
| 44 | #endif | ||
| 45 | |||
| 38 | #ifndef HAVE_ARCH_SIGINFO_T | 46 | #ifndef HAVE_ARCH_SIGINFO_T |
| 39 | 47 | ||
| 40 | typedef struct siginfo { | 48 | typedef struct siginfo { |
| @@ -72,8 +80,8 @@ typedef struct siginfo { | |||
| 72 | __kernel_pid_t _pid; /* which child */ | 80 | __kernel_pid_t _pid; /* which child */ |
| 73 | __ARCH_SI_UID_T _uid; /* sender's uid */ | 81 | __ARCH_SI_UID_T _uid; /* sender's uid */ |
| 74 | int _status; /* exit code */ | 82 | int _status; /* exit code */ |
| 75 | __kernel_clock_t _utime; | 83 | __ARCH_SI_CLOCK_T _utime; |
| 76 | __kernel_clock_t _stime; | 84 | __ARCH_SI_CLOCK_T _stime; |
| 77 | } _sigchld; | 85 | } _sigchld; |
| 78 | 86 | ||
| 79 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ | 87 | /* SIGILL, SIGFPE, SIGSEGV, SIGBUS */ |
| @@ -91,7 +99,7 @@ typedef struct siginfo { | |||
| 91 | int _fd; | 99 | int _fd; |
| 92 | } _sigpoll; | 100 | } _sigpoll; |
| 93 | } _sifields; | 101 | } _sifields; |
| 94 | } siginfo_t; | 102 | } __ARCH_SI_ATTRIBUTES siginfo_t; |
| 95 | 103 | ||
| 96 | #endif | 104 | #endif |
| 97 | 105 | ||
diff --git a/include/linux/gpio-pxa.h b/include/linux/gpio-pxa.h index 05071ee34c3f..d755b28ba635 100644 --- a/include/linux/gpio-pxa.h +++ b/include/linux/gpio-pxa.h | |||
| @@ -13,4 +13,8 @@ extern int pxa_last_gpio; | |||
| 13 | 13 | ||
| 14 | extern int pxa_irq_to_gpio(int irq); | 14 | extern int pxa_irq_to_gpio(int irq); |
| 15 | 15 | ||
| 16 | struct pxa_gpio_platform_data { | ||
| 17 | int (*gpio_set_wake)(unsigned int gpio, unsigned int on); | ||
| 18 | }; | ||
| 19 | |||
| 16 | #endif /* __GPIO_PXA_H */ | 20 | #endif /* __GPIO_PXA_H */ |
diff --git a/include/linux/hsi/hsi.h b/include/linux/hsi/hsi.h index 4b178067f405..56fae865e272 100644 --- a/include/linux/hsi/hsi.h +++ b/include/linux/hsi/hsi.h | |||
| @@ -26,9 +26,9 @@ | |||
| 26 | #include <linux/device.h> | 26 | #include <linux/device.h> |
| 27 | #include <linux/mutex.h> | 27 | #include <linux/mutex.h> |
| 28 | #include <linux/scatterlist.h> | 28 | #include <linux/scatterlist.h> |
| 29 | #include <linux/spinlock.h> | ||
| 30 | #include <linux/list.h> | 29 | #include <linux/list.h> |
| 31 | #include <linux/module.h> | 30 | #include <linux/module.h> |
| 31 | #include <linux/notifier.h> | ||
| 32 | 32 | ||
| 33 | /* HSI message ttype */ | 33 | /* HSI message ttype */ |
| 34 | #define HSI_MSG_READ 0 | 34 | #define HSI_MSG_READ 0 |
| @@ -121,18 +121,18 @@ static inline int hsi_register_board_info(struct hsi_board_info const *info, | |||
| 121 | * @device: Driver model representation of the device | 121 | * @device: Driver model representation of the device |
| 122 | * @tx_cfg: HSI TX configuration | 122 | * @tx_cfg: HSI TX configuration |
| 123 | * @rx_cfg: HSI RX configuration | 123 | * @rx_cfg: HSI RX configuration |
| 124 | * @hsi_start_rx: Called after incoming wake line goes high | 124 | * @e_handler: Callback for handling port events (RX Wake High/Low) |
| 125 | * @hsi_stop_rx: Called after incoming wake line goes low | 125 | * @pclaimed: Keeps tracks if the clients claimed its associated HSI port |
| 126 | * @nb: Notifier block for port events | ||
| 126 | */ | 127 | */ |
| 127 | struct hsi_client { | 128 | struct hsi_client { |
| 128 | struct device device; | 129 | struct device device; |
| 129 | struct hsi_config tx_cfg; | 130 | struct hsi_config tx_cfg; |
| 130 | struct hsi_config rx_cfg; | 131 | struct hsi_config rx_cfg; |
| 131 | void (*hsi_start_rx)(struct hsi_client *cl); | ||
| 132 | void (*hsi_stop_rx)(struct hsi_client *cl); | ||
| 133 | /* private: */ | 132 | /* private: */ |
| 133 | void (*ehandler)(struct hsi_client *, unsigned long); | ||
| 134 | unsigned int pclaimed:1; | 134 | unsigned int pclaimed:1; |
| 135 | struct list_head link; | 135 | struct notifier_block nb; |
| 136 | }; | 136 | }; |
| 137 | 137 | ||
| 138 | #define to_hsi_client(dev) container_of(dev, struct hsi_client, device) | 138 | #define to_hsi_client(dev) container_of(dev, struct hsi_client, device) |
| @@ -147,6 +147,10 @@ static inline void *hsi_client_drvdata(struct hsi_client *cl) | |||
| 147 | return dev_get_drvdata(&cl->device); | 147 | return dev_get_drvdata(&cl->device); |
| 148 | } | 148 | } |
| 149 | 149 | ||
| 150 | int hsi_register_port_event(struct hsi_client *cl, | ||
| 151 | void (*handler)(struct hsi_client *, unsigned long)); | ||
| 152 | int hsi_unregister_port_event(struct hsi_client *cl); | ||
| 153 | |||
| 150 | /** | 154 | /** |
| 151 | * struct hsi_client_driver - Driver associated to an HSI client | 155 | * struct hsi_client_driver - Driver associated to an HSI client |
| 152 | * @driver: Driver model representation of the driver | 156 | * @driver: Driver model representation of the driver |
| @@ -214,8 +218,7 @@ void hsi_free_msg(struct hsi_msg *msg); | |||
| 214 | * @start_tx: Callback to inform that a client wants to TX data | 218 | * @start_tx: Callback to inform that a client wants to TX data |
| 215 | * @stop_tx: Callback to inform that a client no longer wishes to TX data | 219 | * @stop_tx: Callback to inform that a client no longer wishes to TX data |
| 216 | * @release: Callback to inform that a client no longer uses the port | 220 | * @release: Callback to inform that a client no longer uses the port |
| 217 | * @clients: List of hsi_clients using the port. | 221 | * @n_head: Notifier chain for signaling port events to the clients. |
| 218 | * @clock: Lock to serialize access to the clients list. | ||
| 219 | */ | 222 | */ |
| 220 | struct hsi_port { | 223 | struct hsi_port { |
| 221 | struct device device; | 224 | struct device device; |
| @@ -231,14 +234,14 @@ struct hsi_port { | |||
| 231 | int (*start_tx)(struct hsi_client *cl); | 234 | int (*start_tx)(struct hsi_client *cl); |
| 232 | int (*stop_tx)(struct hsi_client *cl); | 235 | int (*stop_tx)(struct hsi_client *cl); |
| 233 | int (*release)(struct hsi_client *cl); | 236 | int (*release)(struct hsi_client *cl); |
| 234 | struct list_head clients; | 237 | /* private */ |
| 235 | spinlock_t clock; | 238 | struct atomic_notifier_head n_head; |
| 236 | }; | 239 | }; |
| 237 | 240 | ||
| 238 | #define to_hsi_port(dev) container_of(dev, struct hsi_port, device) | 241 | #define to_hsi_port(dev) container_of(dev, struct hsi_port, device) |
| 239 | #define hsi_get_port(cl) to_hsi_port((cl)->device.parent) | 242 | #define hsi_get_port(cl) to_hsi_port((cl)->device.parent) |
| 240 | 243 | ||
| 241 | void hsi_event(struct hsi_port *port, unsigned int event); | 244 | int hsi_event(struct hsi_port *port, unsigned long event); |
| 242 | int hsi_claim_port(struct hsi_client *cl, unsigned int share); | 245 | int hsi_claim_port(struct hsi_client *cl, unsigned int share); |
| 243 | void hsi_release_port(struct hsi_client *cl); | 246 | void hsi_release_port(struct hsi_client *cl); |
| 244 | 247 | ||
| @@ -270,13 +273,13 @@ struct hsi_controller { | |||
| 270 | struct module *owner; | 273 | struct module *owner; |
| 271 | unsigned int id; | 274 | unsigned int id; |
| 272 | unsigned int num_ports; | 275 | unsigned int num_ports; |
| 273 | struct hsi_port *port; | 276 | struct hsi_port **port; |
| 274 | }; | 277 | }; |
| 275 | 278 | ||
| 276 | #define to_hsi_controller(dev) container_of(dev, struct hsi_controller, device) | 279 | #define to_hsi_controller(dev) container_of(dev, struct hsi_controller, device) |
| 277 | 280 | ||
| 278 | struct hsi_controller *hsi_alloc_controller(unsigned int n_ports, gfp_t flags); | 281 | struct hsi_controller *hsi_alloc_controller(unsigned int n_ports, gfp_t flags); |
| 279 | void hsi_free_controller(struct hsi_controller *hsi); | 282 | void hsi_put_controller(struct hsi_controller *hsi); |
| 280 | int hsi_register_controller(struct hsi_controller *hsi); | 283 | int hsi_register_controller(struct hsi_controller *hsi); |
| 281 | void hsi_unregister_controller(struct hsi_controller *hsi); | 284 | void hsi_unregister_controller(struct hsi_controller *hsi); |
| 282 | 285 | ||
| @@ -294,7 +297,7 @@ static inline void *hsi_controller_drvdata(struct hsi_controller *hsi) | |||
| 294 | static inline struct hsi_port *hsi_find_port_num(struct hsi_controller *hsi, | 297 | static inline struct hsi_port *hsi_find_port_num(struct hsi_controller *hsi, |
| 295 | unsigned int num) | 298 | unsigned int num) |
| 296 | { | 299 | { |
| 297 | return (num < hsi->num_ports) ? &hsi->port[num] : NULL; | 300 | return (num < hsi->num_ports) ? hsi->port[num] : NULL; |
| 298 | } | 301 | } |
| 299 | 302 | ||
| 300 | /* | 303 | /* |
diff --git a/include/linux/irq.h b/include/linux/irq.h index 7810406f3d80..b27cfcfd3a59 100644 --- a/include/linux/irq.h +++ b/include/linux/irq.h | |||
| @@ -49,6 +49,12 @@ typedef void (*irq_preflow_handler_t)(struct irq_data *data); | |||
| 49 | * IRQ_TYPE_LEVEL_LOW - low level triggered | 49 | * IRQ_TYPE_LEVEL_LOW - low level triggered |
| 50 | * IRQ_TYPE_LEVEL_MASK - Mask to filter out the level bits | 50 | * IRQ_TYPE_LEVEL_MASK - Mask to filter out the level bits |
| 51 | * IRQ_TYPE_SENSE_MASK - Mask for all the above bits | 51 | * IRQ_TYPE_SENSE_MASK - Mask for all the above bits |
| 52 | * IRQ_TYPE_DEFAULT - For use by some PICs to ask irq_set_type | ||
| 53 | * to setup the HW to a sane default (used | ||
| 54 | * by irqdomain map() callbacks to synchronize | ||
| 55 | * the HW state and SW flags for a newly | ||
| 56 | * allocated descriptor). | ||
| 57 | * | ||
| 52 | * IRQ_TYPE_PROBE - Special flag for probing in progress | 58 | * IRQ_TYPE_PROBE - Special flag for probing in progress |
| 53 | * | 59 | * |
| 54 | * Bits which can be modified via irq_set/clear/modify_status_flags() | 60 | * Bits which can be modified via irq_set/clear/modify_status_flags() |
| @@ -77,6 +83,7 @@ enum { | |||
| 77 | IRQ_TYPE_LEVEL_LOW = 0x00000008, | 83 | IRQ_TYPE_LEVEL_LOW = 0x00000008, |
| 78 | IRQ_TYPE_LEVEL_MASK = (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH), | 84 | IRQ_TYPE_LEVEL_MASK = (IRQ_TYPE_LEVEL_LOW | IRQ_TYPE_LEVEL_HIGH), |
| 79 | IRQ_TYPE_SENSE_MASK = 0x0000000f, | 85 | IRQ_TYPE_SENSE_MASK = 0x0000000f, |
| 86 | IRQ_TYPE_DEFAULT = IRQ_TYPE_SENSE_MASK, | ||
| 80 | 87 | ||
| 81 | IRQ_TYPE_PROBE = 0x00000010, | 88 | IRQ_TYPE_PROBE = 0x00000010, |
| 82 | 89 | ||
diff --git a/include/linux/nfs_xdr.h b/include/linux/nfs_xdr.h index bfd0d1bf6707..7ba3551a0414 100644 --- a/include/linux/nfs_xdr.h +++ b/include/linux/nfs_xdr.h | |||
| @@ -312,6 +312,11 @@ struct nfs4_layoutreturn { | |||
| 312 | int rpc_status; | 312 | int rpc_status; |
| 313 | }; | 313 | }; |
| 314 | 314 | ||
| 315 | struct stateowner_id { | ||
| 316 | __u64 create_time; | ||
| 317 | __u32 uniquifier; | ||
| 318 | }; | ||
| 319 | |||
| 315 | /* | 320 | /* |
| 316 | * Arguments to the open call. | 321 | * Arguments to the open call. |
| 317 | */ | 322 | */ |
| @@ -321,7 +326,7 @@ struct nfs_openargs { | |||
| 321 | int open_flags; | 326 | int open_flags; |
| 322 | fmode_t fmode; | 327 | fmode_t fmode; |
| 323 | __u64 clientid; | 328 | __u64 clientid; |
| 324 | __u64 id; | 329 | struct stateowner_id id; |
| 325 | union { | 330 | union { |
| 326 | struct { | 331 | struct { |
| 327 | struct iattr * attrs; /* UNCHECKED, GUARDED */ | 332 | struct iattr * attrs; /* UNCHECKED, GUARDED */ |
diff --git a/include/linux/pipe_fs_i.h b/include/linux/pipe_fs_i.h index 6d626ff0cfd0..e1ac1ce16fb0 100644 --- a/include/linux/pipe_fs_i.h +++ b/include/linux/pipe_fs_i.h | |||
| @@ -6,6 +6,7 @@ | |||
| 6 | #define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */ | 6 | #define PIPE_BUF_FLAG_LRU 0x01 /* page is on the LRU */ |
| 7 | #define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */ | 7 | #define PIPE_BUF_FLAG_ATOMIC 0x02 /* was atomically mapped */ |
| 8 | #define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */ | 8 | #define PIPE_BUF_FLAG_GIFT 0x04 /* page is a gift */ |
| 9 | #define PIPE_BUF_FLAG_PACKET 0x08 /* read() as a packet */ | ||
| 9 | 10 | ||
| 10 | /** | 11 | /** |
| 11 | * struct pipe_buffer - a linux kernel pipe buffer | 12 | * struct pipe_buffer - a linux kernel pipe buffer |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 70a3f8d49118..775292a66fa4 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
| @@ -238,11 +238,12 @@ enum { | |||
| 238 | /* | 238 | /* |
| 239 | * The callback notifies userspace to release buffers when skb DMA is done in | 239 | * The callback notifies userspace to release buffers when skb DMA is done in |
| 240 | * lower device, the skb last reference should be 0 when calling this. | 240 | * lower device, the skb last reference should be 0 when calling this. |
| 241 | * The desc is used to track userspace buffer index. | 241 | * The ctx field is used to track device context. |
| 242 | * The desc field is used to track userspace buffer index. | ||
| 242 | */ | 243 | */ |
| 243 | struct ubuf_info { | 244 | struct ubuf_info { |
| 244 | void (*callback)(void *); | 245 | void (*callback)(struct ubuf_info *); |
| 245 | void *arg; | 246 | void *ctx; |
| 246 | unsigned long desc; | 247 | unsigned long desc; |
| 247 | }; | 248 | }; |
| 248 | 249 | ||
diff --git a/include/linux/spi/spi.h b/include/linux/spi/spi.h index 98679b061b63..fa702aeb5038 100644 --- a/include/linux/spi/spi.h +++ b/include/linux/spi/spi.h | |||
| @@ -254,7 +254,7 @@ static inline void spi_unregister_driver(struct spi_driver *sdrv) | |||
| 254 | * driver is finished with this message, it must call | 254 | * driver is finished with this message, it must call |
| 255 | * spi_finalize_current_message() so the subsystem can issue the next | 255 | * spi_finalize_current_message() so the subsystem can issue the next |
| 256 | * transfer | 256 | * transfer |
| 257 | * @prepare_transfer_hardware: there are currently no more messages on the | 257 | * @unprepare_transfer_hardware: there are currently no more messages on the |
| 258 | * queue so the subsystem notifies the driver that it may relax the | 258 | * queue so the subsystem notifies the driver that it may relax the |
| 259 | * hardware by issuing this call | 259 | * hardware by issuing this call |
| 260 | * | 260 | * |
diff --git a/include/linux/usb/hcd.h b/include/linux/usb/hcd.h index 5de415707c23..d28cc78a38e4 100644 --- a/include/linux/usb/hcd.h +++ b/include/linux/usb/hcd.h | |||
| @@ -126,6 +126,8 @@ struct usb_hcd { | |||
| 126 | unsigned wireless:1; /* Wireless USB HCD */ | 126 | unsigned wireless:1; /* Wireless USB HCD */ |
| 127 | unsigned authorized_default:1; | 127 | unsigned authorized_default:1; |
| 128 | unsigned has_tt:1; /* Integrated TT in root hub */ | 128 | unsigned has_tt:1; /* Integrated TT in root hub */ |
| 129 | unsigned broken_pci_sleep:1; /* Don't put the | ||
| 130 | controller in PCI-D3 for system sleep */ | ||
| 129 | 131 | ||
| 130 | unsigned int irq; /* irq allocated */ | 132 | unsigned int irq; /* irq allocated */ |
| 131 | void __iomem *regs; /* device memory/io */ | 133 | void __iomem *regs; /* device memory/io */ |
diff --git a/include/linux/vm_event_item.h b/include/linux/vm_event_item.h index 03b90cdc1921..06f8e3858251 100644 --- a/include/linux/vm_event_item.h +++ b/include/linux/vm_event_item.h | |||
| @@ -26,13 +26,14 @@ enum vm_event_item { PGPGIN, PGPGOUT, PSWPIN, PSWPOUT, | |||
| 26 | PGFREE, PGACTIVATE, PGDEACTIVATE, | 26 | PGFREE, PGACTIVATE, PGDEACTIVATE, |
| 27 | PGFAULT, PGMAJFAULT, | 27 | PGFAULT, PGMAJFAULT, |
| 28 | FOR_ALL_ZONES(PGREFILL), | 28 | FOR_ALL_ZONES(PGREFILL), |
| 29 | FOR_ALL_ZONES(PGSTEAL), | 29 | FOR_ALL_ZONES(PGSTEAL_KSWAPD), |
| 30 | FOR_ALL_ZONES(PGSTEAL_DIRECT), | ||
| 30 | FOR_ALL_ZONES(PGSCAN_KSWAPD), | 31 | FOR_ALL_ZONES(PGSCAN_KSWAPD), |
| 31 | FOR_ALL_ZONES(PGSCAN_DIRECT), | 32 | FOR_ALL_ZONES(PGSCAN_DIRECT), |
| 32 | #ifdef CONFIG_NUMA | 33 | #ifdef CONFIG_NUMA |
| 33 | PGSCAN_ZONE_RECLAIM_FAILED, | 34 | PGSCAN_ZONE_RECLAIM_FAILED, |
| 34 | #endif | 35 | #endif |
| 35 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_STEAL, KSWAPD_INODESTEAL, | 36 | PGINODESTEAL, SLABS_SCANNED, KSWAPD_INODESTEAL, |
| 36 | KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, | 37 | KSWAPD_LOW_WMARK_HIT_QUICKLY, KSWAPD_HIGH_WMARK_HIT_QUICKLY, |
| 37 | KSWAPD_SKIP_CONGESTION_WAIT, | 38 | KSWAPD_SKIP_CONGESTION_WAIT, |
| 38 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, | 39 | PAGEOUTRUN, ALLOCSTALL, PGROTATED, |
diff --git a/include/net/dst.h b/include/net/dst.h index 59c5d18cc385..ff4da42fcfc6 100644 --- a/include/net/dst.h +++ b/include/net/dst.h | |||
| @@ -36,7 +36,11 @@ struct dst_entry { | |||
| 36 | struct net_device *dev; | 36 | struct net_device *dev; |
| 37 | struct dst_ops *ops; | 37 | struct dst_ops *ops; |
| 38 | unsigned long _metrics; | 38 | unsigned long _metrics; |
| 39 | unsigned long expires; | 39 | union { |
| 40 | unsigned long expires; | ||
| 41 | /* point to where the dst_entry copied from */ | ||
| 42 | struct dst_entry *from; | ||
| 43 | }; | ||
| 40 | struct dst_entry *path; | 44 | struct dst_entry *path; |
| 41 | struct neighbour __rcu *_neighbour; | 45 | struct neighbour __rcu *_neighbour; |
| 42 | #ifdef CONFIG_XFRM | 46 | #ifdef CONFIG_XFRM |
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h index b26bb8101981..0ae759a6c76e 100644 --- a/include/net/ip6_fib.h +++ b/include/net/ip6_fib.h | |||
| @@ -123,6 +123,54 @@ static inline struct inet6_dev *ip6_dst_idev(struct dst_entry *dst) | |||
| 123 | return ((struct rt6_info *)dst)->rt6i_idev; | 123 | return ((struct rt6_info *)dst)->rt6i_idev; |
| 124 | } | 124 | } |
| 125 | 125 | ||
| 126 | static inline void rt6_clean_expires(struct rt6_info *rt) | ||
| 127 | { | ||
| 128 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) | ||
| 129 | dst_release(rt->dst.from); | ||
| 130 | |||
| 131 | rt->rt6i_flags &= ~RTF_EXPIRES; | ||
| 132 | rt->dst.from = NULL; | ||
| 133 | } | ||
| 134 | |||
| 135 | static inline void rt6_set_expires(struct rt6_info *rt, unsigned long expires) | ||
| 136 | { | ||
| 137 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) | ||
| 138 | dst_release(rt->dst.from); | ||
| 139 | |||
| 140 | rt->rt6i_flags |= RTF_EXPIRES; | ||
| 141 | rt->dst.expires = expires; | ||
| 142 | } | ||
| 143 | |||
| 144 | static inline void rt6_update_expires(struct rt6_info *rt, int timeout) | ||
| 145 | { | ||
| 146 | if (!(rt->rt6i_flags & RTF_EXPIRES)) { | ||
| 147 | if (rt->dst.from) | ||
| 148 | dst_release(rt->dst.from); | ||
| 149 | /* dst_set_expires relies on expires == 0 | ||
| 150 | * if it has not been set previously. | ||
| 151 | */ | ||
| 152 | rt->dst.expires = 0; | ||
| 153 | } | ||
| 154 | |||
| 155 | dst_set_expires(&rt->dst, timeout); | ||
| 156 | rt->rt6i_flags |= RTF_EXPIRES; | ||
| 157 | } | ||
| 158 | |||
| 159 | static inline void rt6_set_from(struct rt6_info *rt, struct rt6_info *from) | ||
| 160 | { | ||
| 161 | struct dst_entry *new = (struct dst_entry *) from; | ||
| 162 | |||
| 163 | if (!(rt->rt6i_flags & RTF_EXPIRES) && rt->dst.from) { | ||
| 164 | if (new == rt->dst.from) | ||
| 165 | return; | ||
| 166 | dst_release(rt->dst.from); | ||
| 167 | } | ||
| 168 | |||
| 169 | rt->rt6i_flags &= ~RTF_EXPIRES; | ||
| 170 | rt->dst.from = new; | ||
| 171 | dst_hold(new); | ||
| 172 | } | ||
| 173 | |||
| 126 | struct fib6_walker_t { | 174 | struct fib6_walker_t { |
| 127 | struct list_head lh; | 175 | struct list_head lh; |
| 128 | struct fib6_node *root, *node; | 176 | struct fib6_node *root, *node; |
diff --git a/include/net/red.h b/include/net/red.h index 77d4c3745cb5..ef46058d35bf 100644 --- a/include/net/red.h +++ b/include/net/red.h | |||
| @@ -245,7 +245,7 @@ static inline unsigned long red_calc_qavg_from_idle_time(const struct red_parms | |||
| 245 | * | 245 | * |
| 246 | * dummy packets as a burst after idle time, i.e. | 246 | * dummy packets as a burst after idle time, i.e. |
| 247 | * | 247 | * |
| 248 | * p->qavg *= (1-W)^m | 248 | * v->qavg *= (1-W)^m |
| 249 | * | 249 | * |
| 250 | * This is an apparently overcomplicated solution (f.e. we have to | 250 | * This is an apparently overcomplicated solution (f.e. we have to |
| 251 | * precompute a table to make this calculation in reasonable time) | 251 | * precompute a table to make this calculation in reasonable time) |
| @@ -279,7 +279,7 @@ static inline unsigned long red_calc_qavg_no_idle_time(const struct red_parms *p | |||
| 279 | unsigned int backlog) | 279 | unsigned int backlog) |
| 280 | { | 280 | { |
| 281 | /* | 281 | /* |
| 282 | * NOTE: p->qavg is fixed point number with point at Wlog. | 282 | * NOTE: v->qavg is fixed point number with point at Wlog. |
| 283 | * The formula below is equvalent to floating point | 283 | * The formula below is equvalent to floating point |
| 284 | * version: | 284 | * version: |
| 285 | * | 285 | * |
| @@ -390,7 +390,7 @@ static inline void red_adaptative_algo(struct red_parms *p, struct red_vars *v) | |||
| 390 | if (red_is_idling(v)) | 390 | if (red_is_idling(v)) |
| 391 | qavg = red_calc_qavg_from_idle_time(p, v); | 391 | qavg = red_calc_qavg_from_idle_time(p, v); |
| 392 | 392 | ||
| 393 | /* p->qavg is fixed point number with point at Wlog */ | 393 | /* v->qavg is fixed point number with point at Wlog */ |
| 394 | qavg >>= p->Wlog; | 394 | qavg >>= p->Wlog; |
| 395 | 395 | ||
| 396 | if (qavg > p->target_max && p->max_P <= MAX_P_MAX) | 396 | if (qavg > p->target_max && p->max_P <= MAX_P_MAX) |
diff --git a/include/net/sock.h b/include/net/sock.h index a6ba1f8871fd..188532ee88b6 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -246,6 +246,7 @@ struct cg_proto; | |||
| 246 | * @sk_user_data: RPC layer private data | 246 | * @sk_user_data: RPC layer private data |
| 247 | * @sk_sndmsg_page: cached page for sendmsg | 247 | * @sk_sndmsg_page: cached page for sendmsg |
| 248 | * @sk_sndmsg_off: cached offset for sendmsg | 248 | * @sk_sndmsg_off: cached offset for sendmsg |
| 249 | * @sk_peek_off: current peek_offset value | ||
| 249 | * @sk_send_head: front of stuff to transmit | 250 | * @sk_send_head: front of stuff to transmit |
| 250 | * @sk_security: used by security modules | 251 | * @sk_security: used by security modules |
| 251 | * @sk_mark: generic packet mark | 252 | * @sk_mark: generic packet mark |
