diff options
| author | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-04-08 11:40:17 -0400 |
|---|---|---|
| committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2015-04-08 12:30:21 -0400 |
| commit | aadd51aa71f8d013c818a312bb2a0c5714830dbc (patch) | |
| tree | 28ca52d17183cb1d732b1324fce4f7b5d6b3dfc0 /include | |
| parent | 68e942e88add0ac8576fc8397e86495edf3dcea7 (diff) | |
| parent | ee90b81203a91d4e5385622811ee7872b5bcfe76 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next
Resolve conflicts between 5888b93 ("Merge branch 'nf-hook-compress'") and
Florian Westphal br_netfilter works.
Conflicts:
net/bridge/br_netfilter.c
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'include')
57 files changed, 419 insertions, 250 deletions
diff --git a/include/linux/bcma/bcma.h b/include/linux/bcma/bcma.h index 44057b45ed32..e34f906647d3 100644 --- a/include/linux/bcma/bcma.h +++ b/include/linux/bcma/bcma.h | |||
| @@ -437,6 +437,8 @@ static inline struct bcma_device *bcma_find_core(struct bcma_bus *bus, | |||
| 437 | #ifdef CONFIG_BCMA_HOST_PCI | 437 | #ifdef CONFIG_BCMA_HOST_PCI |
| 438 | extern void bcma_host_pci_up(struct bcma_bus *bus); | 438 | extern void bcma_host_pci_up(struct bcma_bus *bus); |
| 439 | extern void bcma_host_pci_down(struct bcma_bus *bus); | 439 | extern void bcma_host_pci_down(struct bcma_bus *bus); |
| 440 | extern int bcma_host_pci_irq_ctl(struct bcma_bus *bus, | ||
| 441 | struct bcma_device *core, bool enable); | ||
| 440 | #else | 442 | #else |
| 441 | static inline void bcma_host_pci_up(struct bcma_bus *bus) | 443 | static inline void bcma_host_pci_up(struct bcma_bus *bus) |
| 442 | { | 444 | { |
| @@ -444,6 +446,13 @@ static inline void bcma_host_pci_up(struct bcma_bus *bus) | |||
| 444 | static inline void bcma_host_pci_down(struct bcma_bus *bus) | 446 | static inline void bcma_host_pci_down(struct bcma_bus *bus) |
| 445 | { | 447 | { |
| 446 | } | 448 | } |
| 449 | static inline int bcma_host_pci_irq_ctl(struct bcma_bus *bus, | ||
| 450 | struct bcma_device *core, bool enable) | ||
| 451 | { | ||
| 452 | if (bus->hosttype == BCMA_HOSTTYPE_PCI) | ||
| 453 | return -ENOTSUPP; | ||
| 454 | return 0; | ||
| 455 | } | ||
| 447 | #endif | 456 | #endif |
| 448 | 457 | ||
| 449 | extern bool bcma_core_is_enabled(struct bcma_device *core); | 458 | extern bool bcma_core_is_enabled(struct bcma_device *core); |
diff --git a/include/linux/bcma/bcma_driver_pci.h b/include/linux/bcma/bcma_driver_pci.h index 8e90004fdfd7..5ba6918ca20b 100644 --- a/include/linux/bcma/bcma_driver_pci.h +++ b/include/linux/bcma/bcma_driver_pci.h | |||
| @@ -238,9 +238,13 @@ struct bcma_drv_pci { | |||
| 238 | #define pcicore_write16(pc, offset, val) bcma_write16((pc)->core, offset, val) | 238 | #define pcicore_write16(pc, offset, val) bcma_write16((pc)->core, offset, val) |
| 239 | #define pcicore_write32(pc, offset, val) bcma_write32((pc)->core, offset, val) | 239 | #define pcicore_write32(pc, offset, val) bcma_write32((pc)->core, offset, val) |
| 240 | 240 | ||
| 241 | extern int bcma_core_pci_irq_ctl(struct bcma_bus *bus, | 241 | #ifdef CONFIG_BCMA_DRIVER_PCI |
| 242 | struct bcma_device *core, bool enable); | ||
| 243 | extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up); | 242 | extern void bcma_core_pci_power_save(struct bcma_bus *bus, bool up); |
| 243 | #else | ||
| 244 | static inline void bcma_core_pci_power_save(struct bcma_bus *bus, bool up) | ||
| 245 | { | ||
| 246 | } | ||
| 247 | #endif | ||
| 244 | 248 | ||
| 245 | extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev); | 249 | extern int bcma_core_pci_pcibios_map_irq(const struct pci_dev *dev); |
| 246 | extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev); | 250 | extern int bcma_core_pci_plat_dev_init(struct pci_dev *dev); |
diff --git a/include/linux/fs.h b/include/linux/fs.h index b4d71b5e1ff2..f4131e8ead74 100644 --- a/include/linux/fs.h +++ b/include/linux/fs.h | |||
| @@ -604,6 +604,7 @@ struct inode { | |||
| 604 | struct mutex i_mutex; | 604 | struct mutex i_mutex; |
| 605 | 605 | ||
| 606 | unsigned long dirtied_when; /* jiffies of first dirtying */ | 606 | unsigned long dirtied_when; /* jiffies of first dirtying */ |
| 607 | unsigned long dirtied_time_when; | ||
| 607 | 608 | ||
| 608 | struct hlist_node i_hash; | 609 | struct hlist_node i_hash; |
| 609 | struct list_head i_wb_list; /* backing dev IO list */ | 610 | struct list_head i_wb_list; /* backing dev IO list */ |
diff --git a/include/linux/irqchip/arm-gic-v3.h b/include/linux/irqchip/arm-gic-v3.h index 781974afff9f..ffbc034c8810 100644 --- a/include/linux/irqchip/arm-gic-v3.h +++ b/include/linux/irqchip/arm-gic-v3.h | |||
| @@ -126,8 +126,23 @@ | |||
| 126 | #define GICR_PROPBASER_WaWb (5U << 7) | 126 | #define GICR_PROPBASER_WaWb (5U << 7) |
| 127 | #define GICR_PROPBASER_RaWaWt (6U << 7) | 127 | #define GICR_PROPBASER_RaWaWt (6U << 7) |
| 128 | #define GICR_PROPBASER_RaWaWb (7U << 7) | 128 | #define GICR_PROPBASER_RaWaWb (7U << 7) |
| 129 | #define GICR_PROPBASER_CACHEABILITY_MASK (7U << 7) | ||
| 129 | #define GICR_PROPBASER_IDBITS_MASK (0x1f) | 130 | #define GICR_PROPBASER_IDBITS_MASK (0x1f) |
| 130 | 131 | ||
| 132 | #define GICR_PENDBASER_NonShareable (0U << 10) | ||
| 133 | #define GICR_PENDBASER_InnerShareable (1U << 10) | ||
| 134 | #define GICR_PENDBASER_OuterShareable (2U << 10) | ||
| 135 | #define GICR_PENDBASER_SHAREABILITY_MASK (3UL << 10) | ||
| 136 | #define GICR_PENDBASER_nCnB (0U << 7) | ||
| 137 | #define GICR_PENDBASER_nC (1U << 7) | ||
| 138 | #define GICR_PENDBASER_RaWt (2U << 7) | ||
| 139 | #define GICR_PENDBASER_RaWb (3U << 7) | ||
| 140 | #define GICR_PENDBASER_WaWt (4U << 7) | ||
| 141 | #define GICR_PENDBASER_WaWb (5U << 7) | ||
| 142 | #define GICR_PENDBASER_RaWaWt (6U << 7) | ||
| 143 | #define GICR_PENDBASER_RaWaWb (7U << 7) | ||
| 144 | #define GICR_PENDBASER_CACHEABILITY_MASK (7U << 7) | ||
| 145 | |||
| 131 | /* | 146 | /* |
| 132 | * Re-Distributor registers, offsets from SGI_base | 147 | * Re-Distributor registers, offsets from SGI_base |
| 133 | */ | 148 | */ |
| @@ -182,6 +197,7 @@ | |||
| 182 | #define GITS_CBASER_WaWb (5UL << 59) | 197 | #define GITS_CBASER_WaWb (5UL << 59) |
| 183 | #define GITS_CBASER_RaWaWt (6UL << 59) | 198 | #define GITS_CBASER_RaWaWt (6UL << 59) |
| 184 | #define GITS_CBASER_RaWaWb (7UL << 59) | 199 | #define GITS_CBASER_RaWaWb (7UL << 59) |
| 200 | #define GITS_CBASER_CACHEABILITY_MASK (7UL << 59) | ||
| 185 | #define GITS_CBASER_NonShareable (0UL << 10) | 201 | #define GITS_CBASER_NonShareable (0UL << 10) |
| 186 | #define GITS_CBASER_InnerShareable (1UL << 10) | 202 | #define GITS_CBASER_InnerShareable (1UL << 10) |
| 187 | #define GITS_CBASER_OuterShareable (2UL << 10) | 203 | #define GITS_CBASER_OuterShareable (2UL << 10) |
| @@ -198,6 +214,7 @@ | |||
| 198 | #define GITS_BASER_WaWb (5UL << 59) | 214 | #define GITS_BASER_WaWb (5UL << 59) |
| 199 | #define GITS_BASER_RaWaWt (6UL << 59) | 215 | #define GITS_BASER_RaWaWt (6UL << 59) |
| 200 | #define GITS_BASER_RaWaWb (7UL << 59) | 216 | #define GITS_BASER_RaWaWb (7UL << 59) |
| 217 | #define GITS_BASER_CACHEABILITY_MASK (7UL << 59) | ||
| 201 | #define GITS_BASER_TYPE_SHIFT (56) | 218 | #define GITS_BASER_TYPE_SHIFT (56) |
| 202 | #define GITS_BASER_TYPE(r) (((r) >> GITS_BASER_TYPE_SHIFT) & 7) | 219 | #define GITS_BASER_TYPE(r) (((r) >> GITS_BASER_TYPE_SHIFT) & 7) |
| 203 | #define GITS_BASER_ENTRY_SIZE_SHIFT (48) | 220 | #define GITS_BASER_ENTRY_SIZE_SHIFT (48) |
diff --git a/include/linux/jhash.h b/include/linux/jhash.h index 47cb09edec1a..348c6f47e4cc 100644 --- a/include/linux/jhash.h +++ b/include/linux/jhash.h | |||
| @@ -145,11 +145,11 @@ static inline u32 jhash2(const u32 *k, u32 length, u32 initval) | |||
| 145 | } | 145 | } |
| 146 | 146 | ||
| 147 | 147 | ||
| 148 | /* jhash_3words - hash exactly 3, 2 or 1 word(s) */ | 148 | /* __jhash_nwords - hash exactly 3, 2 or 1 word(s) */ |
| 149 | static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval) | 149 | static inline u32 __jhash_nwords(u32 a, u32 b, u32 c, u32 initval) |
| 150 | { | 150 | { |
| 151 | a += JHASH_INITVAL; | 151 | a += initval; |
| 152 | b += JHASH_INITVAL; | 152 | b += initval; |
| 153 | c += initval; | 153 | c += initval; |
| 154 | 154 | ||
| 155 | __jhash_final(a, b, c); | 155 | __jhash_final(a, b, c); |
| @@ -157,14 +157,19 @@ static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval) | |||
| 157 | return c; | 157 | return c; |
| 158 | } | 158 | } |
| 159 | 159 | ||
| 160 | static inline u32 jhash_3words(u32 a, u32 b, u32 c, u32 initval) | ||
| 161 | { | ||
| 162 | return __jhash_nwords(a, b, c, initval + JHASH_INITVAL + (3 << 2)); | ||
| 163 | } | ||
| 164 | |||
| 160 | static inline u32 jhash_2words(u32 a, u32 b, u32 initval) | 165 | static inline u32 jhash_2words(u32 a, u32 b, u32 initval) |
| 161 | { | 166 | { |
| 162 | return jhash_3words(a, b, 0, initval); | 167 | return __jhash_nwords(a, b, 0, initval + JHASH_INITVAL + (2 << 2)); |
| 163 | } | 168 | } |
| 164 | 169 | ||
| 165 | static inline u32 jhash_1word(u32 a, u32 initval) | 170 | static inline u32 jhash_1word(u32 a, u32 initval) |
| 166 | { | 171 | { |
| 167 | return jhash_3words(a, 0, 0, initval); | 172 | return __jhash_nwords(a, 0, 0, initval + JHASH_INITVAL + (1 << 2)); |
| 168 | } | 173 | } |
| 169 | 174 | ||
| 170 | #endif /* _LINUX_JHASH_H */ | 175 | #endif /* _LINUX_JHASH_H */ |
diff --git a/include/linux/lcm.h b/include/linux/lcm.h index 7bf01d779b45..1ce79a7f1daa 100644 --- a/include/linux/lcm.h +++ b/include/linux/lcm.h | |||
| @@ -4,5 +4,6 @@ | |||
| 4 | #include <linux/compiler.h> | 4 | #include <linux/compiler.h> |
| 5 | 5 | ||
| 6 | unsigned long lcm(unsigned long a, unsigned long b) __attribute_const__; | 6 | unsigned long lcm(unsigned long a, unsigned long b) __attribute_const__; |
| 7 | unsigned long lcm_not_zero(unsigned long a, unsigned long b) __attribute_const__; | ||
| 7 | 8 | ||
| 8 | #endif /* _LCM_H */ | 9 | #endif /* _LCM_H */ |
diff --git a/include/linux/libata.h b/include/linux/libata.h index fc03efa64ffe..6b08cc106c21 100644 --- a/include/linux/libata.h +++ b/include/linux/libata.h | |||
| @@ -232,6 +232,7 @@ enum { | |||
| 232 | * led */ | 232 | * led */ |
| 233 | ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */ | 233 | ATA_FLAG_NO_DIPM = (1 << 23), /* host not happy with DIPM */ |
| 234 | ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */ | 234 | ATA_FLAG_LOWTAG = (1 << 24), /* host wants lowest available tag */ |
| 235 | ATA_FLAG_SAS_HOST = (1 << 25), /* SAS host */ | ||
| 235 | 236 | ||
| 236 | /* bits 24:31 of ap->flags are reserved for LLD specific flags */ | 237 | /* bits 24:31 of ap->flags are reserved for LLD specific flags */ |
| 237 | 238 | ||
diff --git a/include/linux/mfd/palmas.h b/include/linux/mfd/palmas.h index fb0390a1a498..ee7b1ce7a6f8 100644 --- a/include/linux/mfd/palmas.h +++ b/include/linux/mfd/palmas.h | |||
| @@ -2999,6 +2999,9 @@ enum usb_irq_events { | |||
| 2999 | #define PALMAS_GPADC_TRIM15 0x0E | 2999 | #define PALMAS_GPADC_TRIM15 0x0E |
| 3000 | #define PALMAS_GPADC_TRIM16 0x0F | 3000 | #define PALMAS_GPADC_TRIM16 0x0F |
| 3001 | 3001 | ||
| 3002 | /* TPS659038 regen2_ctrl offset iss different from palmas */ | ||
| 3003 | #define TPS659038_REGEN2_CTRL 0x12 | ||
| 3004 | |||
| 3002 | /* TPS65917 Interrupt registers */ | 3005 | /* TPS65917 Interrupt registers */ |
| 3003 | 3006 | ||
| 3004 | /* Registers for function INTERRUPT */ | 3007 | /* Registers for function INTERRUPT */ |
diff --git a/include/linux/mlx4/cmd.h b/include/linux/mlx4/cmd.h index 7299e9548906..f62e7cf227c6 100644 --- a/include/linux/mlx4/cmd.h +++ b/include/linux/mlx4/cmd.h | |||
| @@ -68,6 +68,8 @@ enum { | |||
| 68 | MLX4_CMD_UNMAP_ICM_AUX = 0xffb, | 68 | MLX4_CMD_UNMAP_ICM_AUX = 0xffb, |
| 69 | MLX4_CMD_SET_ICM_SIZE = 0xffd, | 69 | MLX4_CMD_SET_ICM_SIZE = 0xffd, |
| 70 | MLX4_CMD_ACCESS_REG = 0x3b, | 70 | MLX4_CMD_ACCESS_REG = 0x3b, |
| 71 | MLX4_CMD_ALLOCATE_VPP = 0x80, | ||
| 72 | MLX4_CMD_SET_VPORT_QOS = 0x81, | ||
| 71 | 73 | ||
| 72 | /*master notify fw on finish for slave's flr*/ | 74 | /*master notify fw on finish for slave's flr*/ |
| 73 | MLX4_CMD_INFORM_FLR_DONE = 0x5b, | 75 | MLX4_CMD_INFORM_FLR_DONE = 0x5b, |
| @@ -186,7 +188,14 @@ enum { | |||
| 186 | }; | 188 | }; |
| 187 | 189 | ||
| 188 | enum { | 190 | enum { |
| 189 | /* set port opcode modifiers */ | 191 | /* Set port opcode modifiers */ |
| 192 | MLX4_SET_PORT_IB_OPCODE = 0x0, | ||
| 193 | MLX4_SET_PORT_ETH_OPCODE = 0x1, | ||
| 194 | MLX4_SET_PORT_BEACON_OPCODE = 0x4, | ||
| 195 | }; | ||
| 196 | |||
| 197 | enum { | ||
| 198 | /* Set port Ethernet input modifiers */ | ||
| 190 | MLX4_SET_PORT_GENERAL = 0x0, | 199 | MLX4_SET_PORT_GENERAL = 0x0, |
| 191 | MLX4_SET_PORT_RQP_CALC = 0x1, | 200 | MLX4_SET_PORT_RQP_CALC = 0x1, |
| 192 | MLX4_SET_PORT_MAC_TABLE = 0x2, | 201 | MLX4_SET_PORT_MAC_TABLE = 0x2, |
| @@ -294,6 +303,8 @@ void mlx4_free_cmd_mailbox(struct mlx4_dev *dev, struct mlx4_cmd_mailbox *mailbo | |||
| 294 | u32 mlx4_comm_get_version(void); | 303 | u32 mlx4_comm_get_version(void); |
| 295 | int mlx4_set_vf_mac(struct mlx4_dev *dev, int port, int vf, u64 mac); | 304 | int mlx4_set_vf_mac(struct mlx4_dev *dev, int port, int vf, u64 mac); |
| 296 | int mlx4_set_vf_vlan(struct mlx4_dev *dev, int port, int vf, u16 vlan, u8 qos); | 305 | int mlx4_set_vf_vlan(struct mlx4_dev *dev, int port, int vf, u16 vlan, u8 qos); |
| 306 | int mlx4_set_vf_rate(struct mlx4_dev *dev, int port, int vf, int min_tx_rate, | ||
| 307 | int max_tx_rate); | ||
| 297 | int mlx4_set_vf_spoofchk(struct mlx4_dev *dev, int port, int vf, bool setting); | 308 | int mlx4_set_vf_spoofchk(struct mlx4_dev *dev, int port, int vf, bool setting); |
| 298 | int mlx4_get_vf_config(struct mlx4_dev *dev, int port, int vf, struct ifla_vf_info *ivf); | 309 | int mlx4_get_vf_config(struct mlx4_dev *dev, int port, int vf, struct ifla_vf_info *ivf); |
| 299 | int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_state); | 310 | int mlx4_set_vf_link_state(struct mlx4_dev *dev, int port, int vf, int link_state); |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index ab7ebec943b8..f9ce34bec45b 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
| @@ -49,8 +49,6 @@ | |||
| 49 | #define MSIX_LEGACY_SZ 4 | 49 | #define MSIX_LEGACY_SZ 4 |
| 50 | #define MIN_MSIX_P_PORT 5 | 50 | #define MIN_MSIX_P_PORT 5 |
| 51 | 51 | ||
| 52 | #define MLX4_NUM_UP 8 | ||
| 53 | #define MLX4_NUM_TC 8 | ||
| 54 | #define MLX4_MAX_100M_UNITS_VAL 255 /* | 52 | #define MLX4_MAX_100M_UNITS_VAL 255 /* |
| 55 | * work around: can't set values | 53 | * work around: can't set values |
| 56 | * greater then this value when | 54 | * greater then this value when |
| @@ -174,6 +172,7 @@ enum { | |||
| 174 | MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41, | 172 | MLX4_DEV_CAP_FLAG_VEP_UC_STEER = 1LL << 41, |
| 175 | MLX4_DEV_CAP_FLAG_VEP_MC_STEER = 1LL << 42, | 173 | MLX4_DEV_CAP_FLAG_VEP_MC_STEER = 1LL << 42, |
| 176 | MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48, | 174 | MLX4_DEV_CAP_FLAG_COUNTERS = 1LL << 48, |
| 175 | MLX4_DEV_CAP_FLAG_RSS_IP_FRAG = 1LL << 52, | ||
| 177 | MLX4_DEV_CAP_FLAG_SET_ETH_SCHED = 1LL << 53, | 176 | MLX4_DEV_CAP_FLAG_SET_ETH_SCHED = 1LL << 53, |
| 178 | MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55, | 177 | MLX4_DEV_CAP_FLAG_SENSE_SUPPORT = 1LL << 55, |
| 179 | MLX4_DEV_CAP_FLAG_PORT_MNG_CHG_EV = 1LL << 59, | 178 | MLX4_DEV_CAP_FLAG_PORT_MNG_CHG_EV = 1LL << 59, |
| @@ -206,7 +205,11 @@ enum { | |||
| 206 | MLX4_DEV_CAP_FLAG2_PORT_REMAP = 1LL << 21, | 205 | MLX4_DEV_CAP_FLAG2_PORT_REMAP = 1LL << 21, |
| 207 | MLX4_DEV_CAP_FLAG2_QCN = 1LL << 22, | 206 | MLX4_DEV_CAP_FLAG2_QCN = 1LL << 22, |
| 208 | MLX4_DEV_CAP_FLAG2_QP_RATE_LIMIT = 1LL << 23, | 207 | MLX4_DEV_CAP_FLAG2_QP_RATE_LIMIT = 1LL << 23, |
| 209 | MLX4_DEV_CAP_FLAG2_FLOWSTATS_EN = 1LL << 24 | 208 | MLX4_DEV_CAP_FLAG2_FLOWSTATS_EN = 1LL << 24, |
| 209 | MLX4_DEV_CAP_FLAG2_QOS_VPP = 1LL << 25, | ||
| 210 | MLX4_DEV_CAP_FLAG2_ETS_CFG = 1LL << 26, | ||
| 211 | MLX4_DEV_CAP_FLAG2_PORT_BEACON = 1LL << 27, | ||
| 212 | MLX4_DEV_CAP_FLAG2_IGNORE_FCS = 1LL << 28, | ||
| 210 | }; | 213 | }; |
| 211 | 214 | ||
| 212 | enum { | 215 | enum { |
| @@ -1001,6 +1004,11 @@ static inline int mlx4_is_slave(struct mlx4_dev *dev) | |||
| 1001 | return dev->flags & MLX4_FLAG_SLAVE; | 1004 | return dev->flags & MLX4_FLAG_SLAVE; |
| 1002 | } | 1005 | } |
| 1003 | 1006 | ||
| 1007 | static inline int mlx4_is_eth(struct mlx4_dev *dev, int port) | ||
| 1008 | { | ||
| 1009 | return dev->caps.port_type[port] == MLX4_PORT_TYPE_IB ? 0 : 1; | ||
| 1010 | } | ||
| 1011 | |||
| 1004 | int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, | 1012 | int mlx4_buf_alloc(struct mlx4_dev *dev, int size, int max_direct, |
| 1005 | struct mlx4_buf *buf, gfp_t gfp); | 1013 | struct mlx4_buf *buf, gfp_t gfp); |
| 1006 | void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); | 1014 | void mlx4_buf_free(struct mlx4_dev *dev, int size, struct mlx4_buf *buf); |
| @@ -1305,9 +1313,9 @@ int mlx4_SET_PORT_general(struct mlx4_dev *dev, u8 port, int mtu, | |||
| 1305 | u8 pptx, u8 pfctx, u8 pprx, u8 pfcrx); | 1313 | u8 pptx, u8 pfctx, u8 pprx, u8 pfcrx); |
| 1306 | int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn, | 1314 | int mlx4_SET_PORT_qpn_calc(struct mlx4_dev *dev, u8 port, u32 base_qpn, |
| 1307 | u8 promisc); | 1315 | u8 promisc); |
| 1308 | int mlx4_SET_PORT_PRIO2TC(struct mlx4_dev *dev, u8 port, u8 *prio2tc); | 1316 | int mlx4_SET_PORT_BEACON(struct mlx4_dev *dev, u8 port, u16 time); |
| 1309 | int mlx4_SET_PORT_SCHEDULER(struct mlx4_dev *dev, u8 port, u8 *tc_tx_bw, | 1317 | int mlx4_SET_PORT_fcs_check(struct mlx4_dev *dev, u8 port, |
| 1310 | u8 *pg, u16 *ratelimit); | 1318 | u8 ignore_fcs_value); |
| 1311 | int mlx4_SET_PORT_VXLAN(struct mlx4_dev *dev, u8 port, u8 steering, int enable); | 1319 | int mlx4_SET_PORT_VXLAN(struct mlx4_dev *dev, u8 port, u8 steering, int enable); |
| 1312 | int mlx4_find_cached_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *idx); | 1320 | int mlx4_find_cached_mac(struct mlx4_dev *dev, u8 port, u64 mac, int *idx); |
| 1313 | int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); | 1321 | int mlx4_find_cached_vlan(struct mlx4_dev *dev, u8 port, u16 vid, int *idx); |
diff --git a/include/linux/mlx4/qp.h b/include/linux/mlx4/qp.h index 1023ebe035b7..6fed539e5456 100644 --- a/include/linux/mlx4/qp.h +++ b/include/linux/mlx4/qp.h | |||
| @@ -209,7 +209,8 @@ struct mlx4_qp_context { | |||
| 209 | __be16 sq_wqe_counter; | 209 | __be16 sq_wqe_counter; |
| 210 | u32 reserved3; | 210 | u32 reserved3; |
| 211 | __be16 rate_limit_params; | 211 | __be16 rate_limit_params; |
| 212 | __be16 reserved4; | 212 | u8 reserved4; |
| 213 | u8 qos_vport; | ||
| 213 | __be32 param3; | 214 | __be32 param3; |
| 214 | __be32 nummmcpeers_basemkey; | 215 | __be32 nummmcpeers_basemkey; |
| 215 | u8 log_page_size; | 216 | u8 log_page_size; |
| @@ -231,6 +232,7 @@ struct mlx4_update_qp_context { | |||
| 231 | enum { | 232 | enum { |
| 232 | MLX4_UPD_QP_MASK_PM_STATE = 32, | 233 | MLX4_UPD_QP_MASK_PM_STATE = 32, |
| 233 | MLX4_UPD_QP_MASK_VSD = 33, | 234 | MLX4_UPD_QP_MASK_VSD = 33, |
| 235 | MLX4_UPD_QP_MASK_QOS_VPP = 34, | ||
| 234 | MLX4_UPD_QP_MASK_RATE_LIMIT = 35, | 236 | MLX4_UPD_QP_MASK_RATE_LIMIT = 35, |
| 235 | }; | 237 | }; |
| 236 | 238 | ||
| @@ -432,7 +434,8 @@ enum mlx4_update_qp_attr { | |||
| 432 | MLX4_UPDATE_QP_SMAC = 1 << 0, | 434 | MLX4_UPDATE_QP_SMAC = 1 << 0, |
| 433 | MLX4_UPDATE_QP_VSD = 1 << 1, | 435 | MLX4_UPDATE_QP_VSD = 1 << 1, |
| 434 | MLX4_UPDATE_QP_RATE_LIMIT = 1 << 2, | 436 | MLX4_UPDATE_QP_RATE_LIMIT = 1 << 2, |
| 435 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 3) - 1 | 437 | MLX4_UPDATE_QP_QOS_VPORT = 1 << 3, |
| 438 | MLX4_UPDATE_QP_SUPPORTED_ATTRS = (1 << 4) - 1 | ||
| 436 | }; | 439 | }; |
| 437 | 440 | ||
| 438 | enum mlx4_update_qp_params_flags { | 441 | enum mlx4_update_qp_params_flags { |
| @@ -441,6 +444,7 @@ enum mlx4_update_qp_params_flags { | |||
| 441 | 444 | ||
| 442 | struct mlx4_update_qp_params { | 445 | struct mlx4_update_qp_params { |
| 443 | u8 smac_index; | 446 | u8 smac_index; |
| 447 | u8 qos_vport; | ||
| 444 | u32 flags; | 448 | u32 flags; |
| 445 | u16 rate_unit; | 449 | u16 rate_unit; |
| 446 | u16 rate_val; | 450 | u16 rate_val; |
diff --git a/include/linux/mlx5/cmd.h b/include/linux/mlx5/cmd.h index 2826a4b6071e..68cd08f02c2f 100644 --- a/include/linux/mlx5/cmd.h +++ b/include/linux/mlx5/cmd.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mlx5/cq.h b/include/linux/mlx5/cq.h index f6b17ac601bd..2695ced222df 100644 --- a/include/linux/mlx5/cq.h +++ b/include/linux/mlx5/cq.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
| @@ -137,14 +137,15 @@ enum { | |||
| 137 | 137 | ||
| 138 | static inline void mlx5_cq_arm(struct mlx5_core_cq *cq, u32 cmd, | 138 | static inline void mlx5_cq_arm(struct mlx5_core_cq *cq, u32 cmd, |
| 139 | void __iomem *uar_page, | 139 | void __iomem *uar_page, |
| 140 | spinlock_t *doorbell_lock) | 140 | spinlock_t *doorbell_lock, |
| 141 | u32 cons_index) | ||
| 141 | { | 142 | { |
| 142 | __be32 doorbell[2]; | 143 | __be32 doorbell[2]; |
| 143 | u32 sn; | 144 | u32 sn; |
| 144 | u32 ci; | 145 | u32 ci; |
| 145 | 146 | ||
| 146 | sn = cq->arm_sn & 3; | 147 | sn = cq->arm_sn & 3; |
| 147 | ci = cq->cons_index & 0xffffff; | 148 | ci = cons_index & 0xffffff; |
| 148 | 149 | ||
| 149 | *cq->arm_db = cpu_to_be32(sn << 28 | cmd | ci); | 150 | *cq->arm_db = cpu_to_be32(sn << 28 | cmd | ci); |
| 150 | 151 | ||
diff --git a/include/linux/mlx5/device.h b/include/linux/mlx5/device.h index 4e5bd813bb9a..abf65c790421 100644 --- a/include/linux/mlx5/device.h +++ b/include/linux/mlx5/device.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mlx5/doorbell.h b/include/linux/mlx5/doorbell.h index 163a818411e7..afc78a3f4462 100644 --- a/include/linux/mlx5/doorbell.h +++ b/include/linux/mlx5/doorbell.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h index 166d9315fe4b..9a90e7523dc2 100644 --- a/include/linux/mlx5/driver.h +++ b/include/linux/mlx5/driver.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
| @@ -232,6 +232,9 @@ struct mlx5_cmd_stats { | |||
| 232 | }; | 232 | }; |
| 233 | 233 | ||
| 234 | struct mlx5_cmd { | 234 | struct mlx5_cmd { |
| 235 | void *cmd_alloc_buf; | ||
| 236 | dma_addr_t alloc_dma; | ||
| 237 | int alloc_size; | ||
| 235 | void *cmd_buf; | 238 | void *cmd_buf; |
| 236 | dma_addr_t dma; | 239 | dma_addr_t dma; |
| 237 | u16 cmdif_rev; | 240 | u16 cmdif_rev; |
| @@ -407,7 +410,7 @@ struct mlx5_core_srq { | |||
| 407 | struct mlx5_eq_table { | 410 | struct mlx5_eq_table { |
| 408 | void __iomem *update_ci; | 411 | void __iomem *update_ci; |
| 409 | void __iomem *update_arm_ci; | 412 | void __iomem *update_arm_ci; |
| 410 | struct list_head *comp_eq_head; | 413 | struct list_head comp_eqs_list; |
| 411 | struct mlx5_eq pages_eq; | 414 | struct mlx5_eq pages_eq; |
| 412 | struct mlx5_eq async_eq; | 415 | struct mlx5_eq async_eq; |
| 413 | struct mlx5_eq cmd_eq; | 416 | struct mlx5_eq cmd_eq; |
| @@ -722,6 +725,7 @@ int mlx5_create_map_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq, u8 vecidx, | |||
| 722 | int mlx5_destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq); | 725 | int mlx5_destroy_unmap_eq(struct mlx5_core_dev *dev, struct mlx5_eq *eq); |
| 723 | int mlx5_start_eqs(struct mlx5_core_dev *dev); | 726 | int mlx5_start_eqs(struct mlx5_core_dev *dev); |
| 724 | int mlx5_stop_eqs(struct mlx5_core_dev *dev); | 727 | int mlx5_stop_eqs(struct mlx5_core_dev *dev); |
| 728 | int mlx5_vector2eqn(struct mlx5_core_dev *dev, int vector, int *eqn, int *irqn); | ||
| 725 | int mlx5_core_attach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); | 729 | int mlx5_core_attach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); |
| 726 | int mlx5_core_detach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); | 730 | int mlx5_core_detach_mcg(struct mlx5_core_dev *dev, union ib_gid *mgid, u32 qpn); |
| 727 | 731 | ||
| @@ -777,14 +781,22 @@ enum { | |||
| 777 | MAX_MR_CACHE_ENTRIES = 16, | 781 | MAX_MR_CACHE_ENTRIES = 16, |
| 778 | }; | 782 | }; |
| 779 | 783 | ||
| 784 | enum { | ||
| 785 | MLX5_INTERFACE_PROTOCOL_IB = 0, | ||
| 786 | MLX5_INTERFACE_PROTOCOL_ETH = 1, | ||
| 787 | }; | ||
| 788 | |||
| 780 | struct mlx5_interface { | 789 | struct mlx5_interface { |
| 781 | void * (*add)(struct mlx5_core_dev *dev); | 790 | void * (*add)(struct mlx5_core_dev *dev); |
| 782 | void (*remove)(struct mlx5_core_dev *dev, void *context); | 791 | void (*remove)(struct mlx5_core_dev *dev, void *context); |
| 783 | void (*event)(struct mlx5_core_dev *dev, void *context, | 792 | void (*event)(struct mlx5_core_dev *dev, void *context, |
| 784 | enum mlx5_dev_event event, unsigned long param); | 793 | enum mlx5_dev_event event, unsigned long param); |
| 794 | void * (*get_dev)(void *context); | ||
| 795 | int protocol; | ||
| 785 | struct list_head list; | 796 | struct list_head list; |
| 786 | }; | 797 | }; |
| 787 | 798 | ||
| 799 | void *mlx5_get_protocol_dev(struct mlx5_core_dev *mdev, int protocol); | ||
| 788 | int mlx5_register_interface(struct mlx5_interface *intf); | 800 | int mlx5_register_interface(struct mlx5_interface *intf); |
| 789 | void mlx5_unregister_interface(struct mlx5_interface *intf); | 801 | void mlx5_unregister_interface(struct mlx5_interface *intf); |
| 790 | 802 | ||
diff --git a/include/linux/mlx5/mlx5_ifc.h b/include/linux/mlx5/mlx5_ifc.h index 5f48b8f592c5..cb3ad17edd1f 100644 --- a/include/linux/mlx5/mlx5_ifc.h +++ b/include/linux/mlx5/mlx5_ifc.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2014, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mlx5/qp.h b/include/linux/mlx5/qp.h index 61f7a342d1bf..310b5f7fd6ae 100644 --- a/include/linux/mlx5/qp.h +++ b/include/linux/mlx5/qp.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mlx5/srq.h b/include/linux/mlx5/srq.h index e1a363a33663..f43ed054a3e0 100644 --- a/include/linux/mlx5/srq.h +++ b/include/linux/mlx5/srq.h | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Copyright (c) 2013, Mellanox Technologies inc. All rights reserved. | 2 | * Copyright (c) 2013-2015, Mellanox Technologies. All rights reserved. |
| 3 | * | 3 | * |
| 4 | * This software is available to you under a choice of one of two | 4 | * This software is available to you under a choice of one of two |
| 5 | * licenses. You may choose to be licensed under the terms of the GNU | 5 | * licenses. You may choose to be licensed under the terms of the GNU |
diff --git a/include/linux/mmc/sdio_ids.h b/include/linux/mmc/sdio_ids.h index 996807963716..83430f2ea757 100644 --- a/include/linux/mmc/sdio_ids.h +++ b/include/linux/mmc/sdio_ids.h | |||
| @@ -33,6 +33,8 @@ | |||
| 33 | #define SDIO_DEVICE_ID_BROADCOM_43341 0xa94d | 33 | #define SDIO_DEVICE_ID_BROADCOM_43341 0xa94d |
| 34 | #define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335 | 34 | #define SDIO_DEVICE_ID_BROADCOM_4335_4339 0x4335 |
| 35 | #define SDIO_DEVICE_ID_BROADCOM_43362 0xa962 | 35 | #define SDIO_DEVICE_ID_BROADCOM_43362 0xa962 |
| 36 | #define SDIO_DEVICE_ID_BROADCOM_43430 0xa9a6 | ||
| 37 | #define SDIO_DEVICE_ID_BROADCOM_4345 0x4345 | ||
| 36 | #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354 | 38 | #define SDIO_DEVICE_ID_BROADCOM_4354 0x4354 |
| 37 | 39 | ||
| 38 | #define SDIO_VENDOR_ID_INTEL 0x0089 | 40 | #define SDIO_VENDOR_ID_INTEL 0x0089 |
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 967bb4c8caf1..bf6d9df34d7b 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
| @@ -795,7 +795,10 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev, | |||
| 795 | * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, | 795 | * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb, |
| 796 | * struct net_device *dev); | 796 | * struct net_device *dev); |
| 797 | * Called when a packet needs to be transmitted. | 797 | * Called when a packet needs to be transmitted. |
| 798 | * Must return NETDEV_TX_OK , NETDEV_TX_BUSY. | 798 | * Returns NETDEV_TX_OK. Can return NETDEV_TX_BUSY, but you should stop |
| 799 | * the queue before that can happen; it's for obsolete devices and weird | ||
| 800 | * corner cases, but the stack really does a non-trivial amount | ||
| 801 | * of useless work if you return NETDEV_TX_BUSY. | ||
| 799 | * (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX) | 802 | * (can also return NETDEV_TX_LOCKED iff NETIF_F_LLTX) |
| 800 | * Required can not be NULL. | 803 | * Required can not be NULL. |
| 801 | * | 804 | * |
| @@ -1030,6 +1033,8 @@ typedef u16 (*select_queue_fallback_t)(struct net_device *dev, | |||
| 1030 | * int queue_index, u32 maxrate); | 1033 | * int queue_index, u32 maxrate); |
| 1031 | * Called when a user wants to set a max-rate limitation of specific | 1034 | * Called when a user wants to set a max-rate limitation of specific |
| 1032 | * TX queue. | 1035 | * TX queue. |
| 1036 | * int (*ndo_get_iflink)(const struct net_device *dev); | ||
| 1037 | * Called to get the iflink value of this device. | ||
| 1033 | */ | 1038 | */ |
| 1034 | struct net_device_ops { | 1039 | struct net_device_ops { |
| 1035 | int (*ndo_init)(struct net_device *dev); | 1040 | int (*ndo_init)(struct net_device *dev); |
| @@ -1191,6 +1196,7 @@ struct net_device_ops { | |||
| 1191 | int (*ndo_set_tx_maxrate)(struct net_device *dev, | 1196 | int (*ndo_set_tx_maxrate)(struct net_device *dev, |
| 1192 | int queue_index, | 1197 | int queue_index, |
| 1193 | u32 maxrate); | 1198 | u32 maxrate); |
| 1199 | int (*ndo_get_iflink)(const struct net_device *dev); | ||
| 1194 | }; | 1200 | }; |
| 1195 | 1201 | ||
| 1196 | /** | 1202 | /** |
| @@ -1322,7 +1328,7 @@ enum netdev_priv_flags { | |||
| 1322 | * @mpls_features: Mask of features inheritable by MPLS | 1328 | * @mpls_features: Mask of features inheritable by MPLS |
| 1323 | * | 1329 | * |
| 1324 | * @ifindex: interface index | 1330 | * @ifindex: interface index |
| 1325 | * @iflink: unique device identifier | 1331 | * @group: The group, that the device belongs to |
| 1326 | * | 1332 | * |
| 1327 | * @stats: Statistics struct, which was left as a legacy, use | 1333 | * @stats: Statistics struct, which was left as a legacy, use |
| 1328 | * rtnl_link_stats64 instead | 1334 | * rtnl_link_stats64 instead |
| @@ -1482,7 +1488,6 @@ enum netdev_priv_flags { | |||
| 1482 | * | 1488 | * |
| 1483 | * @qdisc_tx_busylock: XXX: need comments on this one | 1489 | * @qdisc_tx_busylock: XXX: need comments on this one |
| 1484 | * | 1490 | * |
| 1485 | * @group: The group, that the device belongs to | ||
| 1486 | * @pm_qos_req: Power Management QoS object | 1491 | * @pm_qos_req: Power Management QoS object |
| 1487 | * | 1492 | * |
| 1488 | * FIXME: cleanup struct net_device such that network protocol info | 1493 | * FIXME: cleanup struct net_device such that network protocol info |
| @@ -1535,7 +1540,7 @@ struct net_device { | |||
| 1535 | netdev_features_t mpls_features; | 1540 | netdev_features_t mpls_features; |
| 1536 | 1541 | ||
| 1537 | int ifindex; | 1542 | int ifindex; |
| 1538 | int iflink; | 1543 | int group; |
| 1539 | 1544 | ||
| 1540 | struct net_device_stats stats; | 1545 | struct net_device_stats stats; |
| 1541 | 1546 | ||
| @@ -1738,7 +1743,6 @@ struct net_device { | |||
| 1738 | #endif | 1743 | #endif |
| 1739 | struct phy_device *phydev; | 1744 | struct phy_device *phydev; |
| 1740 | struct lock_class_key *qdisc_tx_busylock; | 1745 | struct lock_class_key *qdisc_tx_busylock; |
| 1741 | int group; | ||
| 1742 | struct pm_qos_request pm_qos_req; | 1746 | struct pm_qos_request pm_qos_req; |
| 1743 | }; | 1747 | }; |
| 1744 | #define to_net_dev(d) container_of(d, struct net_device, dev) | 1748 | #define to_net_dev(d) container_of(d, struct net_device, dev) |
| @@ -2149,6 +2153,7 @@ void __dev_remove_pack(struct packet_type *pt); | |||
| 2149 | void dev_add_offload(struct packet_offload *po); | 2153 | void dev_add_offload(struct packet_offload *po); |
| 2150 | void dev_remove_offload(struct packet_offload *po); | 2154 | void dev_remove_offload(struct packet_offload *po); |
| 2151 | 2155 | ||
| 2156 | int dev_get_iflink(const struct net_device *dev); | ||
| 2152 | struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags, | 2157 | struct net_device *__dev_get_by_flags(struct net *net, unsigned short flags, |
| 2153 | unsigned short mask); | 2158 | unsigned short mask); |
| 2154 | struct net_device *dev_get_by_name(struct net *net, const char *name); | 2159 | struct net_device *dev_get_by_name(struct net *net, const char *name); |
| @@ -2159,8 +2164,12 @@ int dev_open(struct net_device *dev); | |||
| 2159 | int dev_close(struct net_device *dev); | 2164 | int dev_close(struct net_device *dev); |
| 2160 | int dev_close_many(struct list_head *head, bool unlink); | 2165 | int dev_close_many(struct list_head *head, bool unlink); |
| 2161 | void dev_disable_lro(struct net_device *dev); | 2166 | void dev_disable_lro(struct net_device *dev); |
| 2162 | int dev_loopback_xmit(struct sk_buff *newskb); | 2167 | int dev_loopback_xmit(struct sock *sk, struct sk_buff *newskb); |
| 2163 | int dev_queue_xmit(struct sk_buff *skb); | 2168 | int dev_queue_xmit_sk(struct sock *sk, struct sk_buff *skb); |
| 2169 | static inline int dev_queue_xmit(struct sk_buff *skb) | ||
| 2170 | { | ||
| 2171 | return dev_queue_xmit_sk(skb->sk, skb); | ||
| 2172 | } | ||
| 2164 | int dev_queue_xmit_accel(struct sk_buff *skb, void *accel_priv); | 2173 | int dev_queue_xmit_accel(struct sk_buff *skb, void *accel_priv); |
| 2165 | int register_netdevice(struct net_device *dev); | 2174 | int register_netdevice(struct net_device *dev); |
| 2166 | void unregister_netdevice_queue(struct net_device *dev, struct list_head *head); | 2175 | void unregister_netdevice_queue(struct net_device *dev, struct list_head *head); |
| @@ -2176,6 +2185,12 @@ void netdev_freemem(struct net_device *dev); | |||
| 2176 | void synchronize_net(void); | 2185 | void synchronize_net(void); |
| 2177 | int init_dummy_netdev(struct net_device *dev); | 2186 | int init_dummy_netdev(struct net_device *dev); |
| 2178 | 2187 | ||
| 2188 | DECLARE_PER_CPU(int, xmit_recursion); | ||
| 2189 | static inline int dev_recursion_level(void) | ||
| 2190 | { | ||
| 2191 | return this_cpu_read(xmit_recursion); | ||
| 2192 | } | ||
| 2193 | |||
| 2179 | struct net_device *dev_get_by_index(struct net *net, int ifindex); | 2194 | struct net_device *dev_get_by_index(struct net *net, int ifindex); |
| 2180 | struct net_device *__dev_get_by_index(struct net *net, int ifindex); | 2195 | struct net_device *__dev_get_by_index(struct net *net, int ifindex); |
| 2181 | struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); | 2196 | struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex); |
| @@ -2915,7 +2930,11 @@ static inline void dev_consume_skb_any(struct sk_buff *skb) | |||
| 2915 | 2930 | ||
| 2916 | int netif_rx(struct sk_buff *skb); | 2931 | int netif_rx(struct sk_buff *skb); |
| 2917 | int netif_rx_ni(struct sk_buff *skb); | 2932 | int netif_rx_ni(struct sk_buff *skb); |
| 2918 | int netif_receive_skb(struct sk_buff *skb); | 2933 | int netif_receive_skb_sk(struct sock *sk, struct sk_buff *skb); |
| 2934 | static inline int netif_receive_skb(struct sk_buff *skb) | ||
| 2935 | { | ||
| 2936 | return netif_receive_skb_sk(skb->sk, skb); | ||
| 2937 | } | ||
| 2919 | gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb); | 2938 | gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb); |
| 2920 | void napi_gro_flush(struct napi_struct *napi, bool flush_old); | 2939 | void napi_gro_flush(struct napi_struct *napi, bool flush_old); |
| 2921 | struct sk_buff *napi_get_frags(struct napi_struct *napi); | 2940 | struct sk_buff *napi_get_frags(struct napi_struct *napi); |
diff --git a/include/linux/netfilter.h b/include/linux/netfilter.h index 2517ece98820..63560d0a8dfe 100644 --- a/include/linux/netfilter.h +++ b/include/linux/netfilter.h | |||
| @@ -44,11 +44,39 @@ int netfilter_init(void); | |||
| 44 | struct sk_buff; | 44 | struct sk_buff; |
| 45 | 45 | ||
| 46 | struct nf_hook_ops; | 46 | struct nf_hook_ops; |
| 47 | |||
| 48 | struct sock; | ||
| 49 | |||
| 50 | struct nf_hook_state { | ||
| 51 | unsigned int hook; | ||
| 52 | int thresh; | ||
| 53 | u_int8_t pf; | ||
| 54 | struct net_device *in; | ||
| 55 | struct net_device *out; | ||
| 56 | struct sock *sk; | ||
| 57 | int (*okfn)(struct sock *, struct sk_buff *); | ||
| 58 | }; | ||
| 59 | |||
| 60 | static inline void nf_hook_state_init(struct nf_hook_state *p, | ||
| 61 | unsigned int hook, | ||
| 62 | int thresh, u_int8_t pf, | ||
| 63 | struct net_device *indev, | ||
| 64 | struct net_device *outdev, | ||
| 65 | struct sock *sk, | ||
| 66 | int (*okfn)(struct sock *, struct sk_buff *)) | ||
| 67 | { | ||
| 68 | p->hook = hook; | ||
| 69 | p->thresh = thresh; | ||
| 70 | p->pf = pf; | ||
| 71 | p->in = indev; | ||
| 72 | p->out = outdev; | ||
| 73 | p->sk = sk; | ||
| 74 | p->okfn = okfn; | ||
| 75 | } | ||
| 76 | |||
| 47 | typedef unsigned int nf_hookfn(const struct nf_hook_ops *ops, | 77 | typedef unsigned int nf_hookfn(const struct nf_hook_ops *ops, |
| 48 | struct sk_buff *skb, | 78 | struct sk_buff *skb, |
| 49 | const struct net_device *in, | 79 | const struct nf_hook_state *state); |
| 50 | const struct net_device *out, | ||
| 51 | int (*okfn)(struct sk_buff *)); | ||
| 52 | 80 | ||
| 53 | struct nf_hook_ops { | 81 | struct nf_hook_ops { |
| 54 | struct list_head list; | 82 | struct list_head list; |
| @@ -118,9 +146,7 @@ static inline bool nf_hooks_active(u_int8_t pf, unsigned int hook) | |||
| 118 | } | 146 | } |
| 119 | #endif | 147 | #endif |
| 120 | 148 | ||
| 121 | int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb, | 149 | int nf_hook_slow(struct sk_buff *skb, struct nf_hook_state *state); |
| 122 | struct net_device *indev, struct net_device *outdev, | ||
| 123 | int (*okfn)(struct sk_buff *), int thresh); | ||
| 124 | 150 | ||
| 125 | /** | 151 | /** |
| 126 | * nf_hook_thresh - call a netfilter hook | 152 | * nf_hook_thresh - call a netfilter hook |
| @@ -130,21 +156,29 @@ int nf_hook_slow(u_int8_t pf, unsigned int hook, struct sk_buff *skb, | |||
| 130 | * value indicates the packet has been consumed by the hook. | 156 | * value indicates the packet has been consumed by the hook. |
| 131 | */ | 157 | */ |
| 132 | static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, | 158 | static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, |
| 159 | struct sock *sk, | ||
| 133 | struct sk_buff *skb, | 160 | struct sk_buff *skb, |
| 134 | struct net_device *indev, | 161 | struct net_device *indev, |
| 135 | struct net_device *outdev, | 162 | struct net_device *outdev, |
| 136 | int (*okfn)(struct sk_buff *), int thresh) | 163 | int (*okfn)(struct sock *, struct sk_buff *), |
| 164 | int thresh) | ||
| 137 | { | 165 | { |
| 138 | if (nf_hooks_active(pf, hook)) | 166 | if (nf_hooks_active(pf, hook)) { |
| 139 | return nf_hook_slow(pf, hook, skb, indev, outdev, okfn, thresh); | 167 | struct nf_hook_state state; |
| 168 | |||
| 169 | nf_hook_state_init(&state, hook, thresh, pf, | ||
| 170 | indev, outdev, sk, okfn); | ||
| 171 | return nf_hook_slow(skb, &state); | ||
| 172 | } | ||
| 140 | return 1; | 173 | return 1; |
| 141 | } | 174 | } |
| 142 | 175 | ||
| 143 | static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb, | 176 | static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sock *sk, |
| 144 | struct net_device *indev, struct net_device *outdev, | 177 | struct sk_buff *skb, struct net_device *indev, |
| 145 | int (*okfn)(struct sk_buff *)) | 178 | struct net_device *outdev, |
| 179 | int (*okfn)(struct sock *, struct sk_buff *)) | ||
| 146 | { | 180 | { |
| 147 | return nf_hook_thresh(pf, hook, skb, indev, outdev, okfn, INT_MIN); | 181 | return nf_hook_thresh(pf, hook, sk, skb, indev, outdev, okfn, INT_MIN); |
| 148 | } | 182 | } |
| 149 | 183 | ||
| 150 | /* Activate hook; either okfn or kfree_skb called, unless a hook | 184 | /* Activate hook; either okfn or kfree_skb called, unless a hook |
| @@ -165,35 +199,36 @@ static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb, | |||
| 165 | */ | 199 | */ |
| 166 | 200 | ||
| 167 | static inline int | 201 | static inline int |
| 168 | NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sk_buff *skb, | 202 | NF_HOOK_THRESH(uint8_t pf, unsigned int hook, struct sock *sk, |
| 169 | struct net_device *in, struct net_device *out, | 203 | struct sk_buff *skb, struct net_device *in, |
| 170 | int (*okfn)(struct sk_buff *), int thresh) | 204 | struct net_device *out, |
| 205 | int (*okfn)(struct sock *, struct sk_buff *), int thresh) | ||
| 171 | { | 206 | { |
| 172 | int ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, thresh); | 207 | int ret = nf_hook_thresh(pf, hook, sk, skb, in, out, okfn, thresh); |
| 173 | if (ret == 1) | 208 | if (ret == 1) |
| 174 | ret = okfn(skb); | 209 | ret = okfn(sk, skb); |
| 175 | return ret; | 210 | return ret; |
| 176 | } | 211 | } |
| 177 | 212 | ||
| 178 | static inline int | 213 | static inline int |
| 179 | NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sk_buff *skb, | 214 | NF_HOOK_COND(uint8_t pf, unsigned int hook, struct sock *sk, |
| 180 | struct net_device *in, struct net_device *out, | 215 | struct sk_buff *skb, struct net_device *in, struct net_device *out, |
| 181 | int (*okfn)(struct sk_buff *), bool cond) | 216 | int (*okfn)(struct sock *, struct sk_buff *), bool cond) |
| 182 | { | 217 | { |
| 183 | int ret; | 218 | int ret; |
| 184 | 219 | ||
| 185 | if (!cond || | 220 | if (!cond || |
| 186 | ((ret = nf_hook_thresh(pf, hook, skb, in, out, okfn, INT_MIN)) == 1)) | 221 | ((ret = nf_hook_thresh(pf, hook, sk, skb, in, out, okfn, INT_MIN)) == 1)) |
| 187 | ret = okfn(skb); | 222 | ret = okfn(sk, skb); |
| 188 | return ret; | 223 | return ret; |
| 189 | } | 224 | } |
| 190 | 225 | ||
| 191 | static inline int | 226 | static inline int |
| 192 | NF_HOOK(uint8_t pf, unsigned int hook, struct sk_buff *skb, | 227 | NF_HOOK(uint8_t pf, unsigned int hook, struct sock *sk, struct sk_buff *skb, |
| 193 | struct net_device *in, struct net_device *out, | 228 | struct net_device *in, struct net_device *out, |
| 194 | int (*okfn)(struct sk_buff *)) | 229 | int (*okfn)(struct sock *, struct sk_buff *)) |
| 195 | { | 230 | { |
| 196 | return NF_HOOK_THRESH(pf, hook, skb, in, out, okfn, INT_MIN); | 231 | return NF_HOOK_THRESH(pf, hook, sk, skb, in, out, okfn, INT_MIN); |
| 197 | } | 232 | } |
| 198 | 233 | ||
| 199 | /* Call setsockopt() */ | 234 | /* Call setsockopt() */ |
| @@ -293,19 +328,21 @@ nf_nat_decode_session(struct sk_buff *skb, struct flowi *fl, u_int8_t family) | |||
| 293 | } | 328 | } |
| 294 | 329 | ||
| 295 | #else /* !CONFIG_NETFILTER */ | 330 | #else /* !CONFIG_NETFILTER */ |
| 296 | #define NF_HOOK(pf, hook, skb, indev, outdev, okfn) (okfn)(skb) | 331 | #define NF_HOOK(pf, hook, sk, skb, indev, outdev, okfn) (okfn)(sk, skb) |
| 297 | #define NF_HOOK_COND(pf, hook, skb, indev, outdev, okfn, cond) (okfn)(skb) | 332 | #define NF_HOOK_COND(pf, hook, sk, skb, indev, outdev, okfn, cond) (okfn)(sk, skb) |
| 298 | static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, | 333 | static inline int nf_hook_thresh(u_int8_t pf, unsigned int hook, |
| 334 | struct sock *sk, | ||
| 299 | struct sk_buff *skb, | 335 | struct sk_buff *skb, |
| 300 | struct net_device *indev, | 336 | struct net_device *indev, |
| 301 | struct net_device *outdev, | 337 | struct net_device *outdev, |
| 302 | int (*okfn)(struct sk_buff *), int thresh) | 338 | int (*okfn)(struct sock *sk, struct sk_buff *), int thresh) |
| 303 | { | 339 | { |
| 304 | return okfn(skb); | 340 | return okfn(sk, skb); |
| 305 | } | 341 | } |
| 306 | static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sk_buff *skb, | 342 | static inline int nf_hook(u_int8_t pf, unsigned int hook, struct sock *sk, |
| 307 | struct net_device *indev, struct net_device *outdev, | 343 | struct sk_buff *skb, struct net_device *indev, |
| 308 | int (*okfn)(struct sk_buff *)) | 344 | struct net_device *outdev, |
| 345 | int (*okfn)(struct sock *, struct sk_buff *)) | ||
| 309 | { | 346 | { |
| 310 | return 1; | 347 | return 1; |
| 311 | } | 348 | } |
diff --git a/include/linux/netfilter_arp/arp_tables.h b/include/linux/netfilter_arp/arp_tables.h index cfb7191e6efa..c22a7fb8d0df 100644 --- a/include/linux/netfilter_arp/arp_tables.h +++ b/include/linux/netfilter_arp/arp_tables.h | |||
| @@ -54,8 +54,7 @@ extern struct xt_table *arpt_register_table(struct net *net, | |||
| 54 | extern void arpt_unregister_table(struct xt_table *table); | 54 | extern void arpt_unregister_table(struct xt_table *table); |
| 55 | extern unsigned int arpt_do_table(struct sk_buff *skb, | 55 | extern unsigned int arpt_do_table(struct sk_buff *skb, |
| 56 | unsigned int hook, | 56 | unsigned int hook, |
| 57 | const struct net_device *in, | 57 | const struct nf_hook_state *state, |
| 58 | const struct net_device *out, | ||
| 59 | struct xt_table *table); | 58 | struct xt_table *table); |
| 60 | 59 | ||
| 61 | #ifdef CONFIG_COMPAT | 60 | #ifdef CONFIG_COMPAT |
diff --git a/include/linux/netfilter_bridge.h b/include/linux/netfilter_bridge.h index 8912e8c355fd..ab8f76dba668 100644 --- a/include/linux/netfilter_bridge.h +++ b/include/linux/netfilter_bridge.h | |||
| @@ -27,7 +27,7 @@ static inline unsigned int nf_bridge_mtu_reduction(const struct sk_buff *skb) | |||
| 27 | return 0; | 27 | return 0; |
| 28 | } | 28 | } |
| 29 | 29 | ||
| 30 | int br_handle_frame_finish(struct sk_buff *skb); | 30 | int br_handle_frame_finish(struct sock *sk, struct sk_buff *skb); |
| 31 | 31 | ||
| 32 | static inline void br_drop_fake_rtable(struct sk_buff *skb) | 32 | static inline void br_drop_fake_rtable(struct sk_buff *skb) |
| 33 | { | 33 | { |
diff --git a/include/linux/netfilter_ipv4/ip_tables.h b/include/linux/netfilter_ipv4/ip_tables.h index 901e84db847d..4073510da485 100644 --- a/include/linux/netfilter_ipv4/ip_tables.h +++ b/include/linux/netfilter_ipv4/ip_tables.h | |||
| @@ -65,8 +65,7 @@ struct ipt_error { | |||
| 65 | extern void *ipt_alloc_initial_table(const struct xt_table *); | 65 | extern void *ipt_alloc_initial_table(const struct xt_table *); |
| 66 | extern unsigned int ipt_do_table(struct sk_buff *skb, | 66 | extern unsigned int ipt_do_table(struct sk_buff *skb, |
| 67 | unsigned int hook, | 67 | unsigned int hook, |
| 68 | const struct net_device *in, | 68 | const struct nf_hook_state *state, |
| 69 | const struct net_device *out, | ||
| 70 | struct xt_table *table); | 69 | struct xt_table *table); |
| 71 | 70 | ||
| 72 | #ifdef CONFIG_COMPAT | 71 | #ifdef CONFIG_COMPAT |
diff --git a/include/linux/netfilter_ipv6/ip6_tables.h b/include/linux/netfilter_ipv6/ip6_tables.h index 610208b18c05..b40d2b635778 100644 --- a/include/linux/netfilter_ipv6/ip6_tables.h +++ b/include/linux/netfilter_ipv6/ip6_tables.h | |||
| @@ -31,8 +31,7 @@ extern struct xt_table *ip6t_register_table(struct net *net, | |||
| 31 | extern void ip6t_unregister_table(struct net *net, struct xt_table *table); | 31 | extern void ip6t_unregister_table(struct net *net, struct xt_table *table); |
| 32 | extern unsigned int ip6t_do_table(struct sk_buff *skb, | 32 | extern unsigned int ip6t_do_table(struct sk_buff *skb, |
| 33 | unsigned int hook, | 33 | unsigned int hook, |
| 34 | const struct net_device *in, | 34 | const struct nf_hook_state *state, |
| 35 | const struct net_device *out, | ||
| 36 | struct xt_table *table); | 35 | struct xt_table *table); |
| 37 | 36 | ||
| 38 | /* Check for an extension */ | 37 | /* Check for an extension */ |
diff --git a/include/linux/phy_fixed.h b/include/linux/phy_fixed.h index 7e75bfe37cc7..fe5732d53eda 100644 --- a/include/linux/phy_fixed.h +++ b/include/linux/phy_fixed.h | |||
| @@ -21,6 +21,9 @@ extern void fixed_phy_del(int phy_addr); | |||
| 21 | extern int fixed_phy_set_link_update(struct phy_device *phydev, | 21 | extern int fixed_phy_set_link_update(struct phy_device *phydev, |
| 22 | int (*link_update)(struct net_device *, | 22 | int (*link_update)(struct net_device *, |
| 23 | struct fixed_phy_status *)); | 23 | struct fixed_phy_status *)); |
| 24 | extern int fixed_phy_update_state(struct phy_device *phydev, | ||
| 25 | const struct fixed_phy_status *status, | ||
| 26 | const struct fixed_phy_status *changed); | ||
| 24 | #else | 27 | #else |
| 25 | static inline int fixed_phy_add(unsigned int irq, int phy_id, | 28 | static inline int fixed_phy_add(unsigned int irq, int phy_id, |
| 26 | struct fixed_phy_status *status) | 29 | struct fixed_phy_status *status) |
| @@ -43,6 +46,12 @@ static inline int fixed_phy_set_link_update(struct phy_device *phydev, | |||
| 43 | { | 46 | { |
| 44 | return -ENODEV; | 47 | return -ENODEV; |
| 45 | } | 48 | } |
| 49 | static inline int fixed_phy_update_state(struct phy_device *phydev, | ||
| 50 | const struct fixed_phy_status *status, | ||
| 51 | const struct fixed_phy_status *changed) | ||
| 52 | { | ||
| 53 | return -ENODEV; | ||
| 54 | } | ||
| 46 | #endif /* CONFIG_FIXED_PHY */ | 55 | #endif /* CONFIG_FIXED_PHY */ |
| 47 | 56 | ||
| 48 | #endif /* __PHY_FIXED_H */ | 57 | #endif /* __PHY_FIXED_H */ |
diff --git a/include/linux/regulator/driver.h b/include/linux/regulator/driver.h index d4ad5b5a02bb..045f709cb89b 100644 --- a/include/linux/regulator/driver.h +++ b/include/linux/regulator/driver.h | |||
| @@ -316,7 +316,7 @@ struct regulator_desc { | |||
| 316 | * @driver_data: private regulator data | 316 | * @driver_data: private regulator data |
| 317 | * @of_node: OpenFirmware node to parse for device tree bindings (may be | 317 | * @of_node: OpenFirmware node to parse for device tree bindings (may be |
| 318 | * NULL). | 318 | * NULL). |
| 319 | * @regmap: regmap to use for core regmap helpers if dev_get_regulator() is | 319 | * @regmap: regmap to use for core regmap helpers if dev_get_regmap() is |
| 320 | * insufficient. | 320 | * insufficient. |
| 321 | * @ena_gpio_initialized: GPIO controlling regulator enable was properly | 321 | * @ena_gpio_initialized: GPIO controlling regulator enable was properly |
| 322 | * initialized, meaning that >= 0 is a valid gpio | 322 | * initialized, meaning that >= 0 is a valid gpio |
diff --git a/include/linux/sched.h b/include/linux/sched.h index 6d77432e14ff..a419b65770d6 100644 --- a/include/linux/sched.h +++ b/include/linux/sched.h | |||
| @@ -1625,11 +1625,11 @@ struct task_struct { | |||
| 1625 | 1625 | ||
| 1626 | /* | 1626 | /* |
| 1627 | * numa_faults_locality tracks if faults recorded during the last | 1627 | * numa_faults_locality tracks if faults recorded during the last |
| 1628 | * scan window were remote/local. The task scan period is adapted | 1628 | * scan window were remote/local or failed to migrate. The task scan |
| 1629 | * based on the locality of the faults with different weights | 1629 | * period is adapted based on the locality of the faults with different |
| 1630 | * depending on whether they were shared or private faults | 1630 | * weights depending on whether they were shared or private faults |
| 1631 | */ | 1631 | */ |
| 1632 | unsigned long numa_faults_locality[2]; | 1632 | unsigned long numa_faults_locality[3]; |
| 1633 | 1633 | ||
| 1634 | unsigned long numa_pages_migrated; | 1634 | unsigned long numa_pages_migrated; |
| 1635 | #endif /* CONFIG_NUMA_BALANCING */ | 1635 | #endif /* CONFIG_NUMA_BALANCING */ |
| @@ -1719,6 +1719,7 @@ struct task_struct { | |||
| 1719 | #define TNF_NO_GROUP 0x02 | 1719 | #define TNF_NO_GROUP 0x02 |
| 1720 | #define TNF_SHARED 0x04 | 1720 | #define TNF_SHARED 0x04 |
| 1721 | #define TNF_FAULT_LOCAL 0x08 | 1721 | #define TNF_FAULT_LOCAL 0x08 |
| 1722 | #define TNF_MIGRATE_FAIL 0x10 | ||
| 1722 | 1723 | ||
| 1723 | #ifdef CONFIG_NUMA_BALANCING | 1724 | #ifdef CONFIG_NUMA_BALANCING |
| 1724 | extern void task_numa_fault(int last_node, int node, int pages, int flags); | 1725 | extern void task_numa_fault(int last_node, int node, int pages, int flags); |
diff --git a/include/linux/sunrpc/debug.h b/include/linux/sunrpc/debug.h index c57d8ea0716c..59a7889e15db 100644 --- a/include/linux/sunrpc/debug.h +++ b/include/linux/sunrpc/debug.h | |||
| @@ -60,17 +60,17 @@ struct rpc_xprt; | |||
| 60 | #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) | 60 | #if IS_ENABLED(CONFIG_SUNRPC_DEBUG) |
| 61 | void rpc_register_sysctl(void); | 61 | void rpc_register_sysctl(void); |
| 62 | void rpc_unregister_sysctl(void); | 62 | void rpc_unregister_sysctl(void); |
| 63 | int sunrpc_debugfs_init(void); | 63 | void sunrpc_debugfs_init(void); |
| 64 | void sunrpc_debugfs_exit(void); | 64 | void sunrpc_debugfs_exit(void); |
| 65 | int rpc_clnt_debugfs_register(struct rpc_clnt *); | 65 | void rpc_clnt_debugfs_register(struct rpc_clnt *); |
| 66 | void rpc_clnt_debugfs_unregister(struct rpc_clnt *); | 66 | void rpc_clnt_debugfs_unregister(struct rpc_clnt *); |
| 67 | int rpc_xprt_debugfs_register(struct rpc_xprt *); | 67 | void rpc_xprt_debugfs_register(struct rpc_xprt *); |
| 68 | void rpc_xprt_debugfs_unregister(struct rpc_xprt *); | 68 | void rpc_xprt_debugfs_unregister(struct rpc_xprt *); |
| 69 | #else | 69 | #else |
| 70 | static inline int | 70 | static inline void |
| 71 | sunrpc_debugfs_init(void) | 71 | sunrpc_debugfs_init(void) |
| 72 | { | 72 | { |
| 73 | return 0; | 73 | return; |
| 74 | } | 74 | } |
| 75 | 75 | ||
| 76 | static inline void | 76 | static inline void |
| @@ -79,10 +79,10 @@ sunrpc_debugfs_exit(void) | |||
| 79 | return; | 79 | return; |
| 80 | } | 80 | } |
| 81 | 81 | ||
| 82 | static inline int | 82 | static inline void |
| 83 | rpc_clnt_debugfs_register(struct rpc_clnt *clnt) | 83 | rpc_clnt_debugfs_register(struct rpc_clnt *clnt) |
| 84 | { | 84 | { |
| 85 | return 0; | 85 | return; |
| 86 | } | 86 | } |
| 87 | 87 | ||
| 88 | static inline void | 88 | static inline void |
| @@ -91,10 +91,10 @@ rpc_clnt_debugfs_unregister(struct rpc_clnt *clnt) | |||
| 91 | return; | 91 | return; |
| 92 | } | 92 | } |
| 93 | 93 | ||
| 94 | static inline int | 94 | static inline void |
| 95 | rpc_xprt_debugfs_register(struct rpc_xprt *xprt) | 95 | rpc_xprt_debugfs_register(struct rpc_xprt *xprt) |
| 96 | { | 96 | { |
| 97 | return 0; | 97 | return; |
| 98 | } | 98 | } |
| 99 | 99 | ||
| 100 | static inline void | 100 | static inline void |
diff --git a/include/linux/tcp.h b/include/linux/tcp.h index f869ae8afbaf..0caa3a2d4106 100644 --- a/include/linux/tcp.h +++ b/include/linux/tcp.h | |||
| @@ -58,6 +58,7 @@ static inline unsigned int tcp_optlen(const struct sk_buff *skb) | |||
| 58 | struct tcp_fastopen_cookie { | 58 | struct tcp_fastopen_cookie { |
| 59 | s8 len; | 59 | s8 len; |
| 60 | u8 val[TCP_FASTOPEN_COOKIE_MAX]; | 60 | u8 val[TCP_FASTOPEN_COOKIE_MAX]; |
| 61 | bool exp; /* In RFC6994 experimental option format */ | ||
| 61 | }; | 62 | }; |
| 62 | 63 | ||
| 63 | /* This defines a selective acknowledgement block. */ | 64 | /* This defines a selective acknowledgement block. */ |
| @@ -188,6 +189,7 @@ struct tcp_sock { | |||
| 188 | u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */ | 189 | u8 do_early_retrans:1,/* Enable RFC5827 early-retransmit */ |
| 189 | syn_data:1, /* SYN includes data */ | 190 | syn_data:1, /* SYN includes data */ |
| 190 | syn_fastopen:1, /* SYN includes Fast Open option */ | 191 | syn_fastopen:1, /* SYN includes Fast Open option */ |
| 192 | syn_fastopen_exp:1,/* SYN includes Fast Open exp. option */ | ||
| 191 | syn_data_acked:1,/* data in SYN is acked by SYN-ACK */ | 193 | syn_data_acked:1,/* data in SYN is acked by SYN-ACK */ |
| 192 | is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */ | 194 | is_cwnd_limited:1;/* forward progress limited by snd_cwnd? */ |
| 193 | u32 tlp_high_seq; /* snd_nxt at the time of TLP retransmit. */ | 195 | u32 tlp_high_seq; /* snd_nxt at the time of TLP retransmit. */ |
diff --git a/include/linux/usb/usbnet.h b/include/linux/usb/usbnet.h index ff3fb2bd0e90..6e0ce8c7b8cb 100644 --- a/include/linux/usb/usbnet.h +++ b/include/linux/usb/usbnet.h | |||
| @@ -227,7 +227,7 @@ struct skb_data { /* skb->cb is one of these */ | |||
| 227 | struct urb *urb; | 227 | struct urb *urb; |
| 228 | struct usbnet *dev; | 228 | struct usbnet *dev; |
| 229 | enum skb_state state; | 229 | enum skb_state state; |
| 230 | size_t length; | 230 | long length; |
| 231 | unsigned long packets; | 231 | unsigned long packets; |
| 232 | }; | 232 | }; |
| 233 | 233 | ||
| @@ -235,11 +235,13 @@ struct skb_data { /* skb->cb is one of these */ | |||
| 235 | * tx_fixup method before returning an skb. | 235 | * tx_fixup method before returning an skb. |
| 236 | */ | 236 | */ |
| 237 | static inline void | 237 | static inline void |
| 238 | usbnet_set_skb_tx_stats(struct sk_buff *skb, unsigned long packets) | 238 | usbnet_set_skb_tx_stats(struct sk_buff *skb, |
| 239 | unsigned long packets, long bytes_delta) | ||
| 239 | { | 240 | { |
| 240 | struct skb_data *entry = (struct skb_data *) skb->cb; | 241 | struct skb_data *entry = (struct skb_data *) skb->cb; |
| 241 | 242 | ||
| 242 | entry->packets = packets; | 243 | entry->packets = packets; |
| 244 | entry->length = bytes_delta; | ||
| 243 | } | 245 | } |
| 244 | 246 | ||
| 245 | extern int usbnet_open(struct net_device *net); | 247 | extern int usbnet_open(struct net_device *net); |
diff --git a/include/linux/writeback.h b/include/linux/writeback.h index 00048339c23e..b2dd371ec0ca 100644 --- a/include/linux/writeback.h +++ b/include/linux/writeback.h | |||
| @@ -130,6 +130,7 @@ extern int vm_dirty_ratio; | |||
| 130 | extern unsigned long vm_dirty_bytes; | 130 | extern unsigned long vm_dirty_bytes; |
| 131 | extern unsigned int dirty_writeback_interval; | 131 | extern unsigned int dirty_writeback_interval; |
| 132 | extern unsigned int dirty_expire_interval; | 132 | extern unsigned int dirty_expire_interval; |
| 133 | extern unsigned int dirtytime_expire_interval; | ||
| 133 | extern int vm_highmem_is_dirtyable; | 134 | extern int vm_highmem_is_dirtyable; |
| 134 | extern int block_dump; | 135 | extern int block_dump; |
| 135 | extern int laptop_mode; | 136 | extern int laptop_mode; |
| @@ -146,6 +147,8 @@ extern int dirty_ratio_handler(struct ctl_table *table, int write, | |||
| 146 | extern int dirty_bytes_handler(struct ctl_table *table, int write, | 147 | extern int dirty_bytes_handler(struct ctl_table *table, int write, |
| 147 | void __user *buffer, size_t *lenp, | 148 | void __user *buffer, size_t *lenp, |
| 148 | loff_t *ppos); | 149 | loff_t *ppos); |
| 150 | int dirtytime_interval_handler(struct ctl_table *table, int write, | ||
| 151 | void __user *buffer, size_t *lenp, loff_t *ppos); | ||
| 149 | 152 | ||
| 150 | struct ctl_table; | 153 | struct ctl_table; |
| 151 | int dirty_writeback_centisecs_handler(struct ctl_table *, int, | 154 | int dirty_writeback_centisecs_handler(struct ctl_table *, int, |
diff --git a/include/net/bluetooth/bluetooth.h b/include/net/bluetooth/bluetooth.h index 33a5e00025aa..7dba80546f16 100644 --- a/include/net/bluetooth/bluetooth.h +++ b/include/net/bluetooth/bluetooth.h | |||
| @@ -269,11 +269,23 @@ struct l2cap_ctrl { | |||
| 269 | __u16 reqseq; | 269 | __u16 reqseq; |
| 270 | __u16 txseq; | 270 | __u16 txseq; |
| 271 | __u8 retries; | 271 | __u8 retries; |
| 272 | __le16 psm; | ||
| 273 | bdaddr_t bdaddr; | ||
| 274 | struct l2cap_chan *chan; | ||
| 272 | }; | 275 | }; |
| 273 | 276 | ||
| 274 | struct hci_dev; | 277 | struct hci_dev; |
| 275 | 278 | ||
| 276 | typedef void (*hci_req_complete_t)(struct hci_dev *hdev, u8 status, u16 opcode); | 279 | typedef void (*hci_req_complete_t)(struct hci_dev *hdev, u8 status, u16 opcode); |
| 280 | typedef void (*hci_req_complete_skb_t)(struct hci_dev *hdev, u8 status, | ||
| 281 | u16 opcode, struct sk_buff *skb); | ||
| 282 | |||
| 283 | struct req_ctrl { | ||
| 284 | bool start; | ||
| 285 | u8 event; | ||
| 286 | hci_req_complete_t complete; | ||
| 287 | hci_req_complete_skb_t complete_skb; | ||
| 288 | }; | ||
| 277 | 289 | ||
| 278 | struct bt_skb_cb { | 290 | struct bt_skb_cb { |
| 279 | __u8 pkt_type; | 291 | __u8 pkt_type; |
| @@ -281,13 +293,10 @@ struct bt_skb_cb { | |||
| 281 | __u16 opcode; | 293 | __u16 opcode; |
| 282 | __u16 expect; | 294 | __u16 expect; |
| 283 | __u8 incoming:1; | 295 | __u8 incoming:1; |
| 284 | __u8 req_start:1; | 296 | union { |
| 285 | u8 req_event; | 297 | struct l2cap_ctrl l2cap; |
| 286 | hci_req_complete_t req_complete; | 298 | struct req_ctrl req; |
| 287 | struct l2cap_chan *chan; | 299 | }; |
| 288 | struct l2cap_ctrl control; | ||
| 289 | bdaddr_t bdaddr; | ||
| 290 | __le16 psm; | ||
| 291 | }; | 300 | }; |
| 292 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) | 301 | #define bt_cb(skb) ((struct bt_skb_cb *)((skb)->cb)) |
| 293 | 302 | ||
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 540c07feece7..93fd3e756b8a 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
| @@ -326,7 +326,6 @@ struct hci_dev { | |||
| 326 | struct sk_buff_head raw_q; | 326 | struct sk_buff_head raw_q; |
| 327 | struct sk_buff_head cmd_q; | 327 | struct sk_buff_head cmd_q; |
| 328 | 328 | ||
| 329 | struct sk_buff *recv_evt; | ||
| 330 | struct sk_buff *sent_cmd; | 329 | struct sk_buff *sent_cmd; |
| 331 | struct sk_buff *reassembly[NUM_REASSEMBLY]; | 330 | struct sk_buff *reassembly[NUM_REASSEMBLY]; |
| 332 | 331 | ||
| @@ -334,6 +333,7 @@ struct hci_dev { | |||
| 334 | wait_queue_head_t req_wait_q; | 333 | wait_queue_head_t req_wait_q; |
| 335 | __u32 req_status; | 334 | __u32 req_status; |
| 336 | __u32 req_result; | 335 | __u32 req_result; |
| 336 | struct sk_buff *req_skb; | ||
| 337 | 337 | ||
| 338 | void *smp_data; | 338 | void *smp_data; |
| 339 | void *smp_bredr_data; | 339 | void *smp_bredr_data; |
| @@ -1284,8 +1284,6 @@ static inline int hci_check_conn_params(u16 min, u16 max, u16 latency, | |||
| 1284 | int hci_register_cb(struct hci_cb *hcb); | 1284 | int hci_register_cb(struct hci_cb *hcb); |
| 1285 | int hci_unregister_cb(struct hci_cb *hcb); | 1285 | int hci_unregister_cb(struct hci_cb *hcb); |
| 1286 | 1286 | ||
| 1287 | bool hci_req_pending(struct hci_dev *hdev); | ||
| 1288 | |||
| 1289 | struct sk_buff *__hci_cmd_sync(struct hci_dev *hdev, u16 opcode, u32 plen, | 1287 | struct sk_buff *__hci_cmd_sync(struct hci_dev *hdev, u16 opcode, u32 plen, |
| 1290 | const void *param, u32 timeout); | 1288 | const void *param, u32 timeout); |
| 1291 | struct sk_buff *__hci_cmd_sync_ev(struct hci_dev *hdev, u16 opcode, u32 plen, | 1289 | struct sk_buff *__hci_cmd_sync_ev(struct hci_dev *hdev, u16 opcode, u32 plen, |
| @@ -1393,9 +1391,6 @@ void mgmt_ssp_enable_complete(struct hci_dev *hdev, u8 enable, u8 status); | |||
| 1393 | void mgmt_set_class_of_dev_complete(struct hci_dev *hdev, u8 *dev_class, | 1391 | void mgmt_set_class_of_dev_complete(struct hci_dev *hdev, u8 *dev_class, |
| 1394 | u8 status); | 1392 | u8 status); |
| 1395 | void mgmt_set_local_name_complete(struct hci_dev *hdev, u8 *name, u8 status); | 1393 | void mgmt_set_local_name_complete(struct hci_dev *hdev, u8 *name, u8 status); |
| 1396 | void mgmt_read_local_oob_data_complete(struct hci_dev *hdev, u8 *hash192, | ||
| 1397 | u8 *rand192, u8 *hash256, u8 *rand256, | ||
| 1398 | u8 status); | ||
| 1399 | void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type, | 1394 | void mgmt_device_found(struct hci_dev *hdev, bdaddr_t *bdaddr, u8 link_type, |
| 1400 | u8 addr_type, u8 *dev_class, s8 rssi, u32 flags, | 1395 | u8 addr_type, u8 *dev_class, s8 rssi, u32 flags, |
| 1401 | u8 *eir, u16 eir_len, u8 *scan_rsp, u8 scan_rsp_len); | 1396 | u8 *eir, u16 eir_len, u8 *scan_rsp, u8 scan_rsp_len); |
diff --git a/include/net/dn_neigh.h b/include/net/dn_neigh.h index 0f26aa707e62..d0424269313f 100644 --- a/include/net/dn_neigh.h +++ b/include/net/dn_neigh.h | |||
| @@ -18,11 +18,11 @@ struct dn_neigh { | |||
| 18 | 18 | ||
| 19 | void dn_neigh_init(void); | 19 | void dn_neigh_init(void); |
| 20 | void dn_neigh_cleanup(void); | 20 | void dn_neigh_cleanup(void); |
| 21 | int dn_neigh_router_hello(struct sk_buff *skb); | 21 | int dn_neigh_router_hello(struct sock *sk, struct sk_buff *skb); |
| 22 | int dn_neigh_endnode_hello(struct sk_buff *skb); | 22 | int dn_neigh_endnode_hello(struct sock *sk, struct sk_buff *skb); |
| 23 | void dn_neigh_pointopoint_hello(struct sk_buff *skb); | 23 | void dn_neigh_pointopoint_hello(struct sk_buff *skb); |
| 24 | int dn_neigh_elist(struct net_device *dev, unsigned char *ptr, int n); | 24 | int dn_neigh_elist(struct net_device *dev, unsigned char *ptr, int n); |
| 25 | int dn_to_neigh_output(struct sk_buff *skb); | 25 | int dn_to_neigh_output(struct sock *sk, struct sk_buff *skb); |
| 26 | 26 | ||
| 27 | extern struct neigh_table dn_neigh_table; | 27 | extern struct neigh_table dn_neigh_table; |
| 28 | 28 | ||
diff --git a/include/net/ip.h b/include/net/ip.h index d0808a323763..d14af7edd197 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
| @@ -108,7 +108,8 @@ int ip_local_deliver(struct sk_buff *skb); | |||
| 108 | int ip_mr_input(struct sk_buff *skb); | 108 | int ip_mr_input(struct sk_buff *skb); |
| 109 | int ip_output(struct sock *sk, struct sk_buff *skb); | 109 | int ip_output(struct sock *sk, struct sk_buff *skb); |
| 110 | int ip_mc_output(struct sock *sk, struct sk_buff *skb); | 110 | int ip_mc_output(struct sock *sk, struct sk_buff *skb); |
| 111 | int ip_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)); | 111 | int ip_fragment(struct sock *sk, struct sk_buff *skb, |
| 112 | int (*output)(struct sock *, struct sk_buff *)); | ||
| 112 | int ip_do_nat(struct sk_buff *skb); | 113 | int ip_do_nat(struct sk_buff *skb); |
| 113 | void ip_send_check(struct iphdr *ip); | 114 | void ip_send_check(struct iphdr *ip); |
| 114 | int __ip_local_out(struct sk_buff *skb); | 115 | int __ip_local_out(struct sk_buff *skb); |
| @@ -455,22 +456,6 @@ static __inline__ void inet_reset_saddr(struct sock *sk) | |||
| 455 | 456 | ||
| 456 | #endif | 457 | #endif |
| 457 | 458 | ||
| 458 | static inline int sk_mc_loop(struct sock *sk) | ||
| 459 | { | ||
| 460 | if (!sk) | ||
| 461 | return 1; | ||
| 462 | switch (sk->sk_family) { | ||
| 463 | case AF_INET: | ||
| 464 | return inet_sk(sk)->mc_loop; | ||
| 465 | #if IS_ENABLED(CONFIG_IPV6) | ||
| 466 | case AF_INET6: | ||
| 467 | return inet6_sk(sk)->mc_loop; | ||
| 468 | #endif | ||
| 469 | } | ||
| 470 | WARN_ON(1); | ||
| 471 | return 1; | ||
| 472 | } | ||
| 473 | |||
| 474 | bool ip_call_ra_chain(struct sk_buff *skb); | 459 | bool ip_call_ra_chain(struct sk_buff *skb); |
| 475 | 460 | ||
| 476 | /* | 461 | /* |
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h index 1d09b46c1e48..5e192068e6cb 100644 --- a/include/net/ip6_route.h +++ b/include/net/ip6_route.h | |||
| @@ -170,11 +170,13 @@ static inline bool ipv6_anycast_destination(const struct sk_buff *skb) | |||
| 170 | return rt->rt6i_flags & RTF_ANYCAST; | 170 | return rt->rt6i_flags & RTF_ANYCAST; |
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | int ip6_fragment(struct sk_buff *skb, int (*output)(struct sk_buff *)); | 173 | int ip6_fragment(struct sock *sk, struct sk_buff *skb, |
| 174 | int (*output)(struct sock *, struct sk_buff *)); | ||
| 174 | 175 | ||
| 175 | static inline int ip6_skb_dst_mtu(struct sk_buff *skb) | 176 | static inline int ip6_skb_dst_mtu(struct sk_buff *skb) |
| 176 | { | 177 | { |
| 177 | struct ipv6_pinfo *np = skb->sk ? inet6_sk(skb->sk) : NULL; | 178 | struct ipv6_pinfo *np = skb->sk && !dev_recursion_level() ? |
| 179 | inet6_sk(skb->sk) : NULL; | ||
| 178 | 180 | ||
| 179 | return (np && np->pmtudisc >= IPV6_PMTUDISC_PROBE) ? | 181 | return (np && np->pmtudisc >= IPV6_PMTUDISC_PROBE) ? |
| 180 | skb_dst(skb)->dev->mtu : dst_mtu(skb_dst(skb)); | 182 | skb_dst(skb)->dev->mtu : dst_mtu(skb_dst(skb)); |
diff --git a/include/net/ip6_tunnel.h b/include/net/ip6_tunnel.h index 76c091b53dae..b8529aa1dae7 100644 --- a/include/net/ip6_tunnel.h +++ b/include/net/ip6_tunnel.h | |||
| @@ -71,14 +71,16 @@ __u16 ip6_tnl_parse_tlv_enc_lim(struct sk_buff *skb, __u8 *raw); | |||
| 71 | __u32 ip6_tnl_get_cap(struct ip6_tnl *t, const struct in6_addr *laddr, | 71 | __u32 ip6_tnl_get_cap(struct ip6_tnl *t, const struct in6_addr *laddr, |
| 72 | const struct in6_addr *raddr); | 72 | const struct in6_addr *raddr); |
| 73 | struct net *ip6_tnl_get_link_net(const struct net_device *dev); | 73 | struct net *ip6_tnl_get_link_net(const struct net_device *dev); |
| 74 | int ip6_tnl_get_iflink(const struct net_device *dev); | ||
| 74 | 75 | ||
| 75 | static inline void ip6tunnel_xmit(struct sk_buff *skb, struct net_device *dev) | 76 | static inline void ip6tunnel_xmit(struct sock *sk, struct sk_buff *skb, |
| 77 | struct net_device *dev) | ||
| 76 | { | 78 | { |
| 77 | struct net_device_stats *stats = &dev->stats; | 79 | struct net_device_stats *stats = &dev->stats; |
| 78 | int pkt_len, err; | 80 | int pkt_len, err; |
| 79 | 81 | ||
| 80 | pkt_len = skb->len; | 82 | pkt_len = skb->len; |
| 81 | err = ip6_local_out(skb); | 83 | err = ip6_local_out_sk(sk, skb); |
| 82 | 84 | ||
| 83 | if (net_xmit_eval(err) == 0) { | 85 | if (net_xmit_eval(err) == 0) { |
| 84 | struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats); | 86 | struct pcpu_sw_netstats *tstats = this_cpu_ptr(dev->tstats); |
diff --git a/include/net/ip_tunnels.h b/include/net/ip_tunnels.h index 2c47061a6954..d8214cb88bbc 100644 --- a/include/net/ip_tunnels.h +++ b/include/net/ip_tunnels.h | |||
| @@ -142,6 +142,7 @@ int ip_tunnel_init(struct net_device *dev); | |||
| 142 | void ip_tunnel_uninit(struct net_device *dev); | 142 | void ip_tunnel_uninit(struct net_device *dev); |
| 143 | void ip_tunnel_dellink(struct net_device *dev, struct list_head *head); | 143 | void ip_tunnel_dellink(struct net_device *dev, struct list_head *head); |
| 144 | struct net *ip_tunnel_get_link_net(const struct net_device *dev); | 144 | struct net *ip_tunnel_get_link_net(const struct net_device *dev); |
| 145 | int ip_tunnel_get_iflink(const struct net_device *dev); | ||
| 145 | int ip_tunnel_init_net(struct net *net, int ip_tnl_net_id, | 146 | int ip_tunnel_init_net(struct net *net, int ip_tnl_net_id, |
| 146 | struct rtnl_link_ops *ops, char *devname); | 147 | struct rtnl_link_ops *ops, char *devname); |
| 147 | 148 | ||
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 65142e6af440..27470cd1d5f8 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
| @@ -769,7 +769,7 @@ static inline u8 ip6_tclass(__be32 flowinfo) | |||
| 769 | int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, | 769 | int ipv6_rcv(struct sk_buff *skb, struct net_device *dev, |
| 770 | struct packet_type *pt, struct net_device *orig_dev); | 770 | struct packet_type *pt, struct net_device *orig_dev); |
| 771 | 771 | ||
| 772 | int ip6_rcv_finish(struct sk_buff *skb); | 772 | int ip6_rcv_finish(struct sock *sk, struct sk_buff *skb); |
| 773 | 773 | ||
| 774 | /* | 774 | /* |
| 775 | * upper-layer output functions | 775 | * upper-layer output functions |
| @@ -827,6 +827,7 @@ int ip6_input(struct sk_buff *skb); | |||
| 827 | int ip6_mc_input(struct sk_buff *skb); | 827 | int ip6_mc_input(struct sk_buff *skb); |
| 828 | 828 | ||
| 829 | int __ip6_local_out(struct sk_buff *skb); | 829 | int __ip6_local_out(struct sk_buff *skb); |
| 830 | int ip6_local_out_sk(struct sock *sk, struct sk_buff *skb); | ||
| 830 | int ip6_local_out(struct sk_buff *skb); | 831 | int ip6_local_out(struct sk_buff *skb); |
| 831 | 832 | ||
| 832 | /* | 833 | /* |
diff --git a/include/net/netfilter/nf_nat_l3proto.h b/include/net/netfilter/nf_nat_l3proto.h index 340c013795a4..a3127325f624 100644 --- a/include/net/netfilter/nf_nat_l3proto.h +++ b/include/net/netfilter/nf_nat_l3proto.h | |||
| @@ -44,40 +44,32 @@ int nf_nat_icmp_reply_translation(struct sk_buff *skb, struct nf_conn *ct, | |||
| 44 | unsigned int hooknum); | 44 | unsigned int hooknum); |
| 45 | 45 | ||
| 46 | unsigned int nf_nat_ipv4_in(const struct nf_hook_ops *ops, struct sk_buff *skb, | 46 | unsigned int nf_nat_ipv4_in(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 47 | const struct net_device *in, | 47 | const struct nf_hook_state *state, |
| 48 | const struct net_device *out, | ||
| 49 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 48 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 50 | struct sk_buff *skb, | 49 | struct sk_buff *skb, |
| 51 | const struct net_device *in, | 50 | const struct nf_hook_state *state, |
| 52 | const struct net_device *out, | ||
| 53 | struct nf_conn *ct)); | 51 | struct nf_conn *ct)); |
| 54 | 52 | ||
| 55 | unsigned int nf_nat_ipv4_out(const struct nf_hook_ops *ops, struct sk_buff *skb, | 53 | unsigned int nf_nat_ipv4_out(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 56 | const struct net_device *in, | 54 | const struct nf_hook_state *state, |
| 57 | const struct net_device *out, | ||
| 58 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 55 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 59 | struct sk_buff *skb, | 56 | struct sk_buff *skb, |
| 60 | const struct net_device *in, | 57 | const struct nf_hook_state *state, |
| 61 | const struct net_device *out, | ||
| 62 | struct nf_conn *ct)); | 58 | struct nf_conn *ct)); |
| 63 | 59 | ||
| 64 | unsigned int nf_nat_ipv4_local_fn(const struct nf_hook_ops *ops, | 60 | unsigned int nf_nat_ipv4_local_fn(const struct nf_hook_ops *ops, |
| 65 | struct sk_buff *skb, | 61 | struct sk_buff *skb, |
| 66 | const struct net_device *in, | 62 | const struct nf_hook_state *state, |
| 67 | const struct net_device *out, | ||
| 68 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 63 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 69 | struct sk_buff *skb, | 64 | struct sk_buff *skb, |
| 70 | const struct net_device *in, | 65 | const struct nf_hook_state *state, |
| 71 | const struct net_device *out, | ||
| 72 | struct nf_conn *ct)); | 66 | struct nf_conn *ct)); |
| 73 | 67 | ||
| 74 | unsigned int nf_nat_ipv4_fn(const struct nf_hook_ops *ops, struct sk_buff *skb, | 68 | unsigned int nf_nat_ipv4_fn(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 75 | const struct net_device *in, | 69 | const struct nf_hook_state *state, |
| 76 | const struct net_device *out, | ||
| 77 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 70 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 78 | struct sk_buff *skb, | 71 | struct sk_buff *skb, |
| 79 | const struct net_device *in, | 72 | const struct nf_hook_state *state, |
| 80 | const struct net_device *out, | ||
| 81 | struct nf_conn *ct)); | 73 | struct nf_conn *ct)); |
| 82 | 74 | ||
| 83 | int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct, | 75 | int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct, |
| @@ -85,40 +77,32 @@ int nf_nat_icmpv6_reply_translation(struct sk_buff *skb, struct nf_conn *ct, | |||
| 85 | unsigned int hooknum, unsigned int hdrlen); | 77 | unsigned int hooknum, unsigned int hdrlen); |
| 86 | 78 | ||
| 87 | unsigned int nf_nat_ipv6_in(const struct nf_hook_ops *ops, struct sk_buff *skb, | 79 | unsigned int nf_nat_ipv6_in(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 88 | const struct net_device *in, | 80 | const struct nf_hook_state *state, |
| 89 | const struct net_device *out, | ||
| 90 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 81 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 91 | struct sk_buff *skb, | 82 | struct sk_buff *skb, |
| 92 | const struct net_device *in, | 83 | const struct nf_hook_state *state, |
| 93 | const struct net_device *out, | ||
| 94 | struct nf_conn *ct)); | 84 | struct nf_conn *ct)); |
| 95 | 85 | ||
| 96 | unsigned int nf_nat_ipv6_out(const struct nf_hook_ops *ops, struct sk_buff *skb, | 86 | unsigned int nf_nat_ipv6_out(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 97 | const struct net_device *in, | 87 | const struct nf_hook_state *state, |
| 98 | const struct net_device *out, | ||
| 99 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 88 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 100 | struct sk_buff *skb, | 89 | struct sk_buff *skb, |
| 101 | const struct net_device *in, | 90 | const struct nf_hook_state *state, |
| 102 | const struct net_device *out, | ||
| 103 | struct nf_conn *ct)); | 91 | struct nf_conn *ct)); |
| 104 | 92 | ||
| 105 | unsigned int nf_nat_ipv6_local_fn(const struct nf_hook_ops *ops, | 93 | unsigned int nf_nat_ipv6_local_fn(const struct nf_hook_ops *ops, |
| 106 | struct sk_buff *skb, | 94 | struct sk_buff *skb, |
| 107 | const struct net_device *in, | 95 | const struct nf_hook_state *state, |
| 108 | const struct net_device *out, | ||
| 109 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 96 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 110 | struct sk_buff *skb, | 97 | struct sk_buff *skb, |
| 111 | const struct net_device *in, | 98 | const struct nf_hook_state *state, |
| 112 | const struct net_device *out, | ||
| 113 | struct nf_conn *ct)); | 99 | struct nf_conn *ct)); |
| 114 | 100 | ||
| 115 | unsigned int nf_nat_ipv6_fn(const struct nf_hook_ops *ops, struct sk_buff *skb, | 101 | unsigned int nf_nat_ipv6_fn(const struct nf_hook_ops *ops, struct sk_buff *skb, |
| 116 | const struct net_device *in, | 102 | const struct nf_hook_state *state, |
| 117 | const struct net_device *out, | ||
| 118 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, | 103 | unsigned int (*do_chain)(const struct nf_hook_ops *ops, |
| 119 | struct sk_buff *skb, | 104 | struct sk_buff *skb, |
| 120 | const struct net_device *in, | 105 | const struct nf_hook_state *state, |
| 121 | const struct net_device *out, | ||
| 122 | struct nf_conn *ct)); | 106 | struct nf_conn *ct)); |
| 123 | 107 | ||
| 124 | #endif /* _NF_NAT_L3PROTO_H */ | 108 | #endif /* _NF_NAT_L3PROTO_H */ |
diff --git a/include/net/netfilter/nf_queue.h b/include/net/netfilter/nf_queue.h index 84a53d780306..d81d584157e1 100644 --- a/include/net/netfilter/nf_queue.h +++ b/include/net/netfilter/nf_queue.h | |||
| @@ -12,12 +12,8 @@ struct nf_queue_entry { | |||
| 12 | unsigned int id; | 12 | unsigned int id; |
| 13 | 13 | ||
| 14 | struct nf_hook_ops *elem; | 14 | struct nf_hook_ops *elem; |
| 15 | u_int8_t pf; | 15 | struct nf_hook_state state; |
| 16 | u16 size; /* sizeof(entry) + saved route keys */ | 16 | u16 size; /* sizeof(entry) + saved route keys */ |
| 17 | unsigned int hook; | ||
| 18 | struct net_device *indev; | ||
| 19 | struct net_device *outdev; | ||
| 20 | int (*okfn)(struct sk_buff *); | ||
| 21 | 17 | ||
| 22 | /* extra space to store route keys */ | 18 | /* extra space to store route keys */ |
| 23 | }; | 19 | }; |
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 63c44bdfdd3b..d6a2f0ed5130 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
| @@ -26,12 +26,11 @@ struct nft_pktinfo { | |||
| 26 | static inline void nft_set_pktinfo(struct nft_pktinfo *pkt, | 26 | static inline void nft_set_pktinfo(struct nft_pktinfo *pkt, |
| 27 | const struct nf_hook_ops *ops, | 27 | const struct nf_hook_ops *ops, |
| 28 | struct sk_buff *skb, | 28 | struct sk_buff *skb, |
| 29 | const struct net_device *in, | 29 | const struct nf_hook_state *state) |
| 30 | const struct net_device *out) | ||
| 31 | { | 30 | { |
| 32 | pkt->skb = skb; | 31 | pkt->skb = skb; |
| 33 | pkt->in = pkt->xt.in = in; | 32 | pkt->in = pkt->xt.in = state->in; |
| 34 | pkt->out = pkt->xt.out = out; | 33 | pkt->out = pkt->xt.out = state->out; |
| 35 | pkt->ops = ops; | 34 | pkt->ops = ops; |
| 36 | pkt->xt.hooknum = ops->hooknum; | 35 | pkt->xt.hooknum = ops->hooknum; |
| 37 | pkt->xt.family = ops->pf; | 36 | pkt->xt.family = ops->pf; |
diff --git a/include/net/netfilter/nf_tables_ipv4.h b/include/net/netfilter/nf_tables_ipv4.h index cba143fbd2e4..2df7f96902ee 100644 --- a/include/net/netfilter/nf_tables_ipv4.h +++ b/include/net/netfilter/nf_tables_ipv4.h | |||
| @@ -8,12 +8,11 @@ static inline void | |||
| 8 | nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt, | 8 | nft_set_pktinfo_ipv4(struct nft_pktinfo *pkt, |
| 9 | const struct nf_hook_ops *ops, | 9 | const struct nf_hook_ops *ops, |
| 10 | struct sk_buff *skb, | 10 | struct sk_buff *skb, |
| 11 | const struct net_device *in, | 11 | const struct nf_hook_state *state) |
| 12 | const struct net_device *out) | ||
| 13 | { | 12 | { |
| 14 | struct iphdr *ip; | 13 | struct iphdr *ip; |
| 15 | 14 | ||
| 16 | nft_set_pktinfo(pkt, ops, skb, in, out); | 15 | nft_set_pktinfo(pkt, ops, skb, state); |
| 17 | 16 | ||
| 18 | ip = ip_hdr(pkt->skb); | 17 | ip = ip_hdr(pkt->skb); |
| 19 | pkt->tprot = ip->protocol; | 18 | pkt->tprot = ip->protocol; |
diff --git a/include/net/netfilter/nf_tables_ipv6.h b/include/net/netfilter/nf_tables_ipv6.h index 74d976137658..97db2e3a5e65 100644 --- a/include/net/netfilter/nf_tables_ipv6.h +++ b/include/net/netfilter/nf_tables_ipv6.h | |||
| @@ -8,13 +8,12 @@ static inline int | |||
| 8 | nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt, | 8 | nft_set_pktinfo_ipv6(struct nft_pktinfo *pkt, |
| 9 | const struct nf_hook_ops *ops, | 9 | const struct nf_hook_ops *ops, |
| 10 | struct sk_buff *skb, | 10 | struct sk_buff *skb, |
| 11 | const struct net_device *in, | 11 | const struct nf_hook_state *state) |
| 12 | const struct net_device *out) | ||
| 13 | { | 12 | { |
| 14 | int protohdr, thoff = 0; | 13 | int protohdr, thoff = 0; |
| 15 | unsigned short frag_off; | 14 | unsigned short frag_off; |
| 16 | 15 | ||
| 17 | nft_set_pktinfo(pkt, ops, skb, in, out); | 16 | nft_set_pktinfo(pkt, ops, skb, state); |
| 18 | 17 | ||
| 19 | protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, NULL); | 18 | protohdr = ipv6_find_hdr(pkt->skb, &thoff, -1, &frag_off, NULL); |
| 20 | /* If malformed, drop it */ | 19 | /* If malformed, drop it */ |
diff --git a/include/net/sock.h b/include/net/sock.h index 3f9b8ce56948..bd6f523f2251 100644 --- a/include/net/sock.h +++ b/include/net/sock.h | |||
| @@ -1762,6 +1762,8 @@ struct dst_entry *__sk_dst_check(struct sock *sk, u32 cookie); | |||
| 1762 | 1762 | ||
| 1763 | struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie); | 1763 | struct dst_entry *sk_dst_check(struct sock *sk, u32 cookie); |
| 1764 | 1764 | ||
| 1765 | bool sk_mc_loop(struct sock *sk); | ||
| 1766 | |||
| 1765 | static inline bool sk_can_gso(const struct sock *sk) | 1767 | static inline bool sk_can_gso(const struct sock *sk) |
| 1766 | { | 1768 | { |
| 1767 | return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type); | 1769 | return net_gso_ok(sk->sk_route_caps, sk->sk_gso_type); |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 963303fb96ae..9598871485ce 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -179,6 +179,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo); | |||
| 179 | #define TCPOPT_SACK 5 /* SACK Block */ | 179 | #define TCPOPT_SACK 5 /* SACK Block */ |
| 180 | #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ | 180 | #define TCPOPT_TIMESTAMP 8 /* Better RTT estimations/PAWS */ |
| 181 | #define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */ | 181 | #define TCPOPT_MD5SIG 19 /* MD5 Signature (RFC2385) */ |
| 182 | #define TCPOPT_FASTOPEN 34 /* Fast open (RFC7413) */ | ||
| 182 | #define TCPOPT_EXP 254 /* Experimental */ | 183 | #define TCPOPT_EXP 254 /* Experimental */ |
| 183 | /* Magic number to be after the option value for sharing TCP | 184 | /* Magic number to be after the option value for sharing TCP |
| 184 | * experimental options. See draft-ietf-tcpm-experimental-options-00.txt | 185 | * experimental options. See draft-ietf-tcpm-experimental-options-00.txt |
| @@ -194,6 +195,7 @@ void tcp_time_wait(struct sock *sk, int state, int timeo); | |||
| 194 | #define TCPOLEN_SACK_PERM 2 | 195 | #define TCPOLEN_SACK_PERM 2 |
| 195 | #define TCPOLEN_TIMESTAMP 10 | 196 | #define TCPOLEN_TIMESTAMP 10 |
| 196 | #define TCPOLEN_MD5SIG 18 | 197 | #define TCPOLEN_MD5SIG 18 |
| 198 | #define TCPOLEN_FASTOPEN_BASE 2 | ||
| 197 | #define TCPOLEN_EXP_FASTOPEN_BASE 4 | 199 | #define TCPOLEN_EXP_FASTOPEN_BASE 4 |
| 198 | 200 | ||
| 199 | /* But this is what stacks really send out. */ | 201 | /* But this is what stacks really send out. */ |
| @@ -1337,7 +1339,8 @@ void tcp_fastopen_cache_get(struct sock *sk, u16 *mss, | |||
| 1337 | struct tcp_fastopen_cookie *cookie, int *syn_loss, | 1339 | struct tcp_fastopen_cookie *cookie, int *syn_loss, |
| 1338 | unsigned long *last_syn_loss); | 1340 | unsigned long *last_syn_loss); |
| 1339 | void tcp_fastopen_cache_set(struct sock *sk, u16 mss, | 1341 | void tcp_fastopen_cache_set(struct sock *sk, u16 mss, |
| 1340 | struct tcp_fastopen_cookie *cookie, bool syn_lost); | 1342 | struct tcp_fastopen_cookie *cookie, bool syn_lost, |
| 1343 | u16 try_exp); | ||
| 1341 | struct tcp_fastopen_request { | 1344 | struct tcp_fastopen_request { |
| 1342 | /* Fast Open cookie. Size 0 means a cookie request */ | 1345 | /* Fast Open cookie. Size 0 means a cookie request */ |
| 1343 | struct tcp_fastopen_cookie cookie; | 1346 | struct tcp_fastopen_cookie cookie; |
diff --git a/include/net/udp_tunnel.h b/include/net/udp_tunnel.h index 1a20d33d56bc..c491c1221606 100644 --- a/include/net/udp_tunnel.h +++ b/include/net/udp_tunnel.h | |||
| @@ -77,13 +77,14 @@ void setup_udp_tunnel_sock(struct net *net, struct socket *sock, | |||
| 77 | struct udp_tunnel_sock_cfg *sock_cfg); | 77 | struct udp_tunnel_sock_cfg *sock_cfg); |
| 78 | 78 | ||
| 79 | /* Transmit the skb using UDP encapsulation. */ | 79 | /* Transmit the skb using UDP encapsulation. */ |
| 80 | int udp_tunnel_xmit_skb(struct rtable *rt, struct sk_buff *skb, | 80 | int udp_tunnel_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb, |
| 81 | __be32 src, __be32 dst, __u8 tos, __u8 ttl, | 81 | __be32 src, __be32 dst, __u8 tos, __u8 ttl, |
| 82 | __be16 df, __be16 src_port, __be16 dst_port, | 82 | __be16 df, __be16 src_port, __be16 dst_port, |
| 83 | bool xnet, bool nocheck); | 83 | bool xnet, bool nocheck); |
| 84 | 84 | ||
| 85 | #if IS_ENABLED(CONFIG_IPV6) | 85 | #if IS_ENABLED(CONFIG_IPV6) |
| 86 | int udp_tunnel6_xmit_skb(struct dst_entry *dst, struct sk_buff *skb, | 86 | int udp_tunnel6_xmit_skb(struct dst_entry *dst, struct sock *sk, |
| 87 | struct sk_buff *skb, | ||
| 87 | struct net_device *dev, struct in6_addr *saddr, | 88 | struct net_device *dev, struct in6_addr *saddr, |
| 88 | struct in6_addr *daddr, | 89 | struct in6_addr *daddr, |
| 89 | __u8 prio, __u8 ttl, __be16 src_port, | 90 | __u8 prio, __u8 ttl, __be16 src_port, |
diff --git a/include/net/vxlan.h b/include/net/vxlan.h index 756e4636bad8..0082b5d33d7d 100644 --- a/include/net/vxlan.h +++ b/include/net/vxlan.h | |||
| @@ -145,7 +145,7 @@ struct vxlan_sock *vxlan_sock_add(struct net *net, __be16 port, | |||
| 145 | 145 | ||
| 146 | void vxlan_sock_release(struct vxlan_sock *vs); | 146 | void vxlan_sock_release(struct vxlan_sock *vs); |
| 147 | 147 | ||
| 148 | int vxlan_xmit_skb(struct rtable *rt, struct sk_buff *skb, | 148 | int vxlan_xmit_skb(struct rtable *rt, struct sock *sk, struct sk_buff *skb, |
| 149 | __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df, | 149 | __be32 src, __be32 dst, __u8 tos, __u8 ttl, __be16 df, |
| 150 | __be16 src_port, __be16 dst_port, struct vxlan_metadata *md, | 150 | __be16 src_port, __be16 dst_port, struct vxlan_metadata *md, |
| 151 | bool xnet, u32 vxflags); | 151 | bool xnet, u32 vxflags); |
diff --git a/include/net/xfrm.h b/include/net/xfrm.h index 461f83539493..36ac102c97c7 100644 --- a/include/net/xfrm.h +++ b/include/net/xfrm.h | |||
| @@ -332,7 +332,7 @@ struct xfrm_state_afinfo { | |||
| 332 | int (*tmpl_sort)(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n); | 332 | int (*tmpl_sort)(struct xfrm_tmpl **dst, struct xfrm_tmpl **src, int n); |
| 333 | int (*state_sort)(struct xfrm_state **dst, struct xfrm_state **src, int n); | 333 | int (*state_sort)(struct xfrm_state **dst, struct xfrm_state **src, int n); |
| 334 | int (*output)(struct sock *sk, struct sk_buff *skb); | 334 | int (*output)(struct sock *sk, struct sk_buff *skb); |
| 335 | int (*output_finish)(struct sk_buff *skb); | 335 | int (*output_finish)(struct sock *sk, struct sk_buff *skb); |
| 336 | int (*extract_input)(struct xfrm_state *x, | 336 | int (*extract_input)(struct xfrm_state *x, |
| 337 | struct sk_buff *skb); | 337 | struct sk_buff *skb); |
| 338 | int (*extract_output)(struct xfrm_state *x, | 338 | int (*extract_output)(struct xfrm_state *x, |
| @@ -1503,7 +1503,7 @@ int xfrm_prepare_input(struct xfrm_state *x, struct sk_buff *skb); | |||
| 1503 | int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type); | 1503 | int xfrm_input(struct sk_buff *skb, int nexthdr, __be32 spi, int encap_type); |
| 1504 | int xfrm_input_resume(struct sk_buff *skb, int nexthdr); | 1504 | int xfrm_input_resume(struct sk_buff *skb, int nexthdr); |
| 1505 | int xfrm_output_resume(struct sk_buff *skb, int err); | 1505 | int xfrm_output_resume(struct sk_buff *skb, int err); |
| 1506 | int xfrm_output(struct sk_buff *skb); | 1506 | int xfrm_output(struct sock *sk, struct sk_buff *skb); |
| 1507 | int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb); | 1507 | int xfrm_inner_extract_output(struct xfrm_state *x, struct sk_buff *skb); |
| 1508 | void xfrm_local_error(struct sk_buff *skb, int mtu); | 1508 | void xfrm_local_error(struct sk_buff *skb, int mtu); |
| 1509 | int xfrm4_extract_header(struct sk_buff *skb); | 1509 | int xfrm4_extract_header(struct sk_buff *skb); |
| @@ -1524,7 +1524,7 @@ static inline int xfrm4_rcv_spi(struct sk_buff *skb, int nexthdr, __be32 spi) | |||
| 1524 | int xfrm4_extract_output(struct xfrm_state *x, struct sk_buff *skb); | 1524 | int xfrm4_extract_output(struct xfrm_state *x, struct sk_buff *skb); |
| 1525 | int xfrm4_prepare_output(struct xfrm_state *x, struct sk_buff *skb); | 1525 | int xfrm4_prepare_output(struct xfrm_state *x, struct sk_buff *skb); |
| 1526 | int xfrm4_output(struct sock *sk, struct sk_buff *skb); | 1526 | int xfrm4_output(struct sock *sk, struct sk_buff *skb); |
| 1527 | int xfrm4_output_finish(struct sk_buff *skb); | 1527 | int xfrm4_output_finish(struct sock *sk, struct sk_buff *skb); |
| 1528 | int xfrm4_rcv_cb(struct sk_buff *skb, u8 protocol, int err); | 1528 | int xfrm4_rcv_cb(struct sk_buff *skb, u8 protocol, int err); |
| 1529 | int xfrm4_protocol_register(struct xfrm4_protocol *handler, unsigned char protocol); | 1529 | int xfrm4_protocol_register(struct xfrm4_protocol *handler, unsigned char protocol); |
| 1530 | int xfrm4_protocol_deregister(struct xfrm4_protocol *handler, unsigned char protocol); | 1530 | int xfrm4_protocol_deregister(struct xfrm4_protocol *handler, unsigned char protocol); |
| @@ -1549,7 +1549,7 @@ __be32 xfrm6_tunnel_spi_lookup(struct net *net, const xfrm_address_t *saddr); | |||
| 1549 | int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb); | 1549 | int xfrm6_extract_output(struct xfrm_state *x, struct sk_buff *skb); |
| 1550 | int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb); | 1550 | int xfrm6_prepare_output(struct xfrm_state *x, struct sk_buff *skb); |
| 1551 | int xfrm6_output(struct sock *sk, struct sk_buff *skb); | 1551 | int xfrm6_output(struct sock *sk, struct sk_buff *skb); |
| 1552 | int xfrm6_output_finish(struct sk_buff *skb); | 1552 | int xfrm6_output_finish(struct sock *sk, struct sk_buff *skb); |
| 1553 | int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb, | 1553 | int xfrm6_find_1stfragopt(struct xfrm_state *x, struct sk_buff *skb, |
| 1554 | u8 **prevhdr); | 1554 | u8 **prevhdr); |
| 1555 | 1555 | ||
diff --git a/include/trace/events/regmap.h b/include/trace/events/regmap.h index 23d561512f64..22317d2b52ab 100644 --- a/include/trace/events/regmap.h +++ b/include/trace/events/regmap.h | |||
| @@ -7,27 +7,26 @@ | |||
| 7 | #include <linux/ktime.h> | 7 | #include <linux/ktime.h> |
| 8 | #include <linux/tracepoint.h> | 8 | #include <linux/tracepoint.h> |
| 9 | 9 | ||
| 10 | struct device; | 10 | #include "../../../drivers/base/regmap/internal.h" |
| 11 | struct regmap; | ||
| 12 | 11 | ||
| 13 | /* | 12 | /* |
| 14 | * Log register events | 13 | * Log register events |
| 15 | */ | 14 | */ |
| 16 | DECLARE_EVENT_CLASS(regmap_reg, | 15 | DECLARE_EVENT_CLASS(regmap_reg, |
| 17 | 16 | ||
| 18 | TP_PROTO(struct device *dev, unsigned int reg, | 17 | TP_PROTO(struct regmap *map, unsigned int reg, |
| 19 | unsigned int val), | 18 | unsigned int val), |
| 20 | 19 | ||
| 21 | TP_ARGS(dev, reg, val), | 20 | TP_ARGS(map, reg, val), |
| 22 | 21 | ||
| 23 | TP_STRUCT__entry( | 22 | TP_STRUCT__entry( |
| 24 | __string( name, dev_name(dev) ) | 23 | __string( name, regmap_name(map) ) |
| 25 | __field( unsigned int, reg ) | 24 | __field( unsigned int, reg ) |
| 26 | __field( unsigned int, val ) | 25 | __field( unsigned int, val ) |
| 27 | ), | 26 | ), |
| 28 | 27 | ||
| 29 | TP_fast_assign( | 28 | TP_fast_assign( |
| 30 | __assign_str(name, dev_name(dev)); | 29 | __assign_str(name, regmap_name(map)); |
| 31 | __entry->reg = reg; | 30 | __entry->reg = reg; |
| 32 | __entry->val = val; | 31 | __entry->val = val; |
| 33 | ), | 32 | ), |
| @@ -39,45 +38,45 @@ DECLARE_EVENT_CLASS(regmap_reg, | |||
| 39 | 38 | ||
| 40 | DEFINE_EVENT(regmap_reg, regmap_reg_write, | 39 | DEFINE_EVENT(regmap_reg, regmap_reg_write, |
| 41 | 40 | ||
| 42 | TP_PROTO(struct device *dev, unsigned int reg, | 41 | TP_PROTO(struct regmap *map, unsigned int reg, |
| 43 | unsigned int val), | 42 | unsigned int val), |
| 44 | 43 | ||
| 45 | TP_ARGS(dev, reg, val) | 44 | TP_ARGS(map, reg, val) |
| 46 | 45 | ||
| 47 | ); | 46 | ); |
| 48 | 47 | ||
| 49 | DEFINE_EVENT(regmap_reg, regmap_reg_read, | 48 | DEFINE_EVENT(regmap_reg, regmap_reg_read, |
| 50 | 49 | ||
| 51 | TP_PROTO(struct device *dev, unsigned int reg, | 50 | TP_PROTO(struct regmap *map, unsigned int reg, |
| 52 | unsigned int val), | 51 | unsigned int val), |
| 53 | 52 | ||
| 54 | TP_ARGS(dev, reg, val) | 53 | TP_ARGS(map, reg, val) |
| 55 | 54 | ||
| 56 | ); | 55 | ); |
| 57 | 56 | ||
| 58 | DEFINE_EVENT(regmap_reg, regmap_reg_read_cache, | 57 | DEFINE_EVENT(regmap_reg, regmap_reg_read_cache, |
| 59 | 58 | ||
| 60 | TP_PROTO(struct device *dev, unsigned int reg, | 59 | TP_PROTO(struct regmap *map, unsigned int reg, |
| 61 | unsigned int val), | 60 | unsigned int val), |
| 62 | 61 | ||
| 63 | TP_ARGS(dev, reg, val) | 62 | TP_ARGS(map, reg, val) |
| 64 | 63 | ||
| 65 | ); | 64 | ); |
| 66 | 65 | ||
| 67 | DECLARE_EVENT_CLASS(regmap_block, | 66 | DECLARE_EVENT_CLASS(regmap_block, |
| 68 | 67 | ||
| 69 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 68 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 70 | 69 | ||
| 71 | TP_ARGS(dev, reg, count), | 70 | TP_ARGS(map, reg, count), |
| 72 | 71 | ||
| 73 | TP_STRUCT__entry( | 72 | TP_STRUCT__entry( |
| 74 | __string( name, dev_name(dev) ) | 73 | __string( name, regmap_name(map) ) |
| 75 | __field( unsigned int, reg ) | 74 | __field( unsigned int, reg ) |
| 76 | __field( int, count ) | 75 | __field( int, count ) |
| 77 | ), | 76 | ), |
| 78 | 77 | ||
| 79 | TP_fast_assign( | 78 | TP_fast_assign( |
| 80 | __assign_str(name, dev_name(dev)); | 79 | __assign_str(name, regmap_name(map)); |
| 81 | __entry->reg = reg; | 80 | __entry->reg = reg; |
| 82 | __entry->count = count; | 81 | __entry->count = count; |
| 83 | ), | 82 | ), |
| @@ -89,48 +88,48 @@ DECLARE_EVENT_CLASS(regmap_block, | |||
| 89 | 88 | ||
| 90 | DEFINE_EVENT(regmap_block, regmap_hw_read_start, | 89 | DEFINE_EVENT(regmap_block, regmap_hw_read_start, |
| 91 | 90 | ||
| 92 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 91 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 93 | 92 | ||
| 94 | TP_ARGS(dev, reg, count) | 93 | TP_ARGS(map, reg, count) |
| 95 | ); | 94 | ); |
| 96 | 95 | ||
| 97 | DEFINE_EVENT(regmap_block, regmap_hw_read_done, | 96 | DEFINE_EVENT(regmap_block, regmap_hw_read_done, |
| 98 | 97 | ||
| 99 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 98 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 100 | 99 | ||
| 101 | TP_ARGS(dev, reg, count) | 100 | TP_ARGS(map, reg, count) |
| 102 | ); | 101 | ); |
| 103 | 102 | ||
| 104 | DEFINE_EVENT(regmap_block, regmap_hw_write_start, | 103 | DEFINE_EVENT(regmap_block, regmap_hw_write_start, |
| 105 | 104 | ||
| 106 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 105 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 107 | 106 | ||
| 108 | TP_ARGS(dev, reg, count) | 107 | TP_ARGS(map, reg, count) |
| 109 | ); | 108 | ); |
| 110 | 109 | ||
| 111 | DEFINE_EVENT(regmap_block, regmap_hw_write_done, | 110 | DEFINE_EVENT(regmap_block, regmap_hw_write_done, |
| 112 | 111 | ||
| 113 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 112 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 114 | 113 | ||
| 115 | TP_ARGS(dev, reg, count) | 114 | TP_ARGS(map, reg, count) |
| 116 | ); | 115 | ); |
| 117 | 116 | ||
| 118 | TRACE_EVENT(regcache_sync, | 117 | TRACE_EVENT(regcache_sync, |
| 119 | 118 | ||
| 120 | TP_PROTO(struct device *dev, const char *type, | 119 | TP_PROTO(struct regmap *map, const char *type, |
| 121 | const char *status), | 120 | const char *status), |
| 122 | 121 | ||
| 123 | TP_ARGS(dev, type, status), | 122 | TP_ARGS(map, type, status), |
| 124 | 123 | ||
| 125 | TP_STRUCT__entry( | 124 | TP_STRUCT__entry( |
| 126 | __string( name, dev_name(dev) ) | 125 | __string( name, regmap_name(map) ) |
| 127 | __string( status, status ) | 126 | __string( status, status ) |
| 128 | __string( type, type ) | 127 | __string( type, type ) |
| 129 | __field( int, type ) | 128 | __field( int, type ) |
| 130 | ), | 129 | ), |
| 131 | 130 | ||
| 132 | TP_fast_assign( | 131 | TP_fast_assign( |
| 133 | __assign_str(name, dev_name(dev)); | 132 | __assign_str(name, regmap_name(map)); |
| 134 | __assign_str(status, status); | 133 | __assign_str(status, status); |
| 135 | __assign_str(type, type); | 134 | __assign_str(type, type); |
| 136 | ), | 135 | ), |
| @@ -141,17 +140,17 @@ TRACE_EVENT(regcache_sync, | |||
| 141 | 140 | ||
| 142 | DECLARE_EVENT_CLASS(regmap_bool, | 141 | DECLARE_EVENT_CLASS(regmap_bool, |
| 143 | 142 | ||
| 144 | TP_PROTO(struct device *dev, bool flag), | 143 | TP_PROTO(struct regmap *map, bool flag), |
| 145 | 144 | ||
| 146 | TP_ARGS(dev, flag), | 145 | TP_ARGS(map, flag), |
| 147 | 146 | ||
| 148 | TP_STRUCT__entry( | 147 | TP_STRUCT__entry( |
| 149 | __string( name, dev_name(dev) ) | 148 | __string( name, regmap_name(map) ) |
| 150 | __field( int, flag ) | 149 | __field( int, flag ) |
| 151 | ), | 150 | ), |
| 152 | 151 | ||
| 153 | TP_fast_assign( | 152 | TP_fast_assign( |
| 154 | __assign_str(name, dev_name(dev)); | 153 | __assign_str(name, regmap_name(map)); |
| 155 | __entry->flag = flag; | 154 | __entry->flag = flag; |
| 156 | ), | 155 | ), |
| 157 | 156 | ||
| @@ -161,32 +160,32 @@ DECLARE_EVENT_CLASS(regmap_bool, | |||
| 161 | 160 | ||
| 162 | DEFINE_EVENT(regmap_bool, regmap_cache_only, | 161 | DEFINE_EVENT(regmap_bool, regmap_cache_only, |
| 163 | 162 | ||
| 164 | TP_PROTO(struct device *dev, bool flag), | 163 | TP_PROTO(struct regmap *map, bool flag), |
| 165 | 164 | ||
| 166 | TP_ARGS(dev, flag) | 165 | TP_ARGS(map, flag) |
| 167 | 166 | ||
| 168 | ); | 167 | ); |
| 169 | 168 | ||
| 170 | DEFINE_EVENT(regmap_bool, regmap_cache_bypass, | 169 | DEFINE_EVENT(regmap_bool, regmap_cache_bypass, |
| 171 | 170 | ||
| 172 | TP_PROTO(struct device *dev, bool flag), | 171 | TP_PROTO(struct regmap *map, bool flag), |
| 173 | 172 | ||
| 174 | TP_ARGS(dev, flag) | 173 | TP_ARGS(map, flag) |
| 175 | 174 | ||
| 176 | ); | 175 | ); |
| 177 | 176 | ||
| 178 | DECLARE_EVENT_CLASS(regmap_async, | 177 | DECLARE_EVENT_CLASS(regmap_async, |
| 179 | 178 | ||
| 180 | TP_PROTO(struct device *dev), | 179 | TP_PROTO(struct regmap *map), |
| 181 | 180 | ||
| 182 | TP_ARGS(dev), | 181 | TP_ARGS(map), |
| 183 | 182 | ||
| 184 | TP_STRUCT__entry( | 183 | TP_STRUCT__entry( |
| 185 | __string( name, dev_name(dev) ) | 184 | __string( name, regmap_name(map) ) |
| 186 | ), | 185 | ), |
| 187 | 186 | ||
| 188 | TP_fast_assign( | 187 | TP_fast_assign( |
| 189 | __assign_str(name, dev_name(dev)); | 188 | __assign_str(name, regmap_name(map)); |
| 190 | ), | 189 | ), |
| 191 | 190 | ||
| 192 | TP_printk("%s", __get_str(name)) | 191 | TP_printk("%s", __get_str(name)) |
| @@ -194,50 +193,50 @@ DECLARE_EVENT_CLASS(regmap_async, | |||
| 194 | 193 | ||
| 195 | DEFINE_EVENT(regmap_block, regmap_async_write_start, | 194 | DEFINE_EVENT(regmap_block, regmap_async_write_start, |
| 196 | 195 | ||
| 197 | TP_PROTO(struct device *dev, unsigned int reg, int count), | 196 | TP_PROTO(struct regmap *map, unsigned int reg, int count), |
| 198 | 197 | ||
| 199 | TP_ARGS(dev, reg, count) | 198 | TP_ARGS(map, reg, count) |
| 200 | ); | 199 | ); |
| 201 | 200 | ||
| 202 | DEFINE_EVENT(regmap_async, regmap_async_io_complete, | 201 | DEFINE_EVENT(regmap_async, regmap_async_io_complete, |
| 203 | 202 | ||
| 204 | TP_PROTO(struct device *dev), | 203 | TP_PROTO(struct regmap *map), |
| 205 | 204 | ||
| 206 | TP_ARGS(dev) | 205 | TP_ARGS(map) |
| 207 | 206 | ||
| 208 | ); | 207 | ); |
| 209 | 208 | ||
| 210 | DEFINE_EVENT(regmap_async, regmap_async_complete_start, | 209 | DEFINE_EVENT(regmap_async, regmap_async_complete_start, |
| 211 | 210 | ||
| 212 | TP_PROTO(struct device *dev), | 211 | TP_PROTO(struct regmap *map), |
| 213 | 212 | ||
| 214 | TP_ARGS(dev) | 213 | TP_ARGS(map) |
| 215 | 214 | ||
| 216 | ); | 215 | ); |
| 217 | 216 | ||
| 218 | DEFINE_EVENT(regmap_async, regmap_async_complete_done, | 217 | DEFINE_EVENT(regmap_async, regmap_async_complete_done, |
| 219 | 218 | ||
| 220 | TP_PROTO(struct device *dev), | 219 | TP_PROTO(struct regmap *map), |
| 221 | 220 | ||
| 222 | TP_ARGS(dev) | 221 | TP_ARGS(map) |
| 223 | 222 | ||
| 224 | ); | 223 | ); |
| 225 | 224 | ||
| 226 | TRACE_EVENT(regcache_drop_region, | 225 | TRACE_EVENT(regcache_drop_region, |
| 227 | 226 | ||
| 228 | TP_PROTO(struct device *dev, unsigned int from, | 227 | TP_PROTO(struct regmap *map, unsigned int from, |
| 229 | unsigned int to), | 228 | unsigned int to), |
| 230 | 229 | ||
| 231 | TP_ARGS(dev, from, to), | 230 | TP_ARGS(map, from, to), |
| 232 | 231 | ||
| 233 | TP_STRUCT__entry( | 232 | TP_STRUCT__entry( |
| 234 | __string( name, dev_name(dev) ) | 233 | __string( name, regmap_name(map) ) |
| 235 | __field( unsigned int, from ) | 234 | __field( unsigned int, from ) |
| 236 | __field( unsigned int, to ) | 235 | __field( unsigned int, to ) |
| 237 | ), | 236 | ), |
| 238 | 237 | ||
| 239 | TP_fast_assign( | 238 | TP_fast_assign( |
| 240 | __assign_str(name, dev_name(dev)); | 239 | __assign_str(name, regmap_name(map)); |
| 241 | __entry->from = from; | 240 | __entry->from = from; |
| 242 | __entry->to = to; | 241 | __entry->to = to; |
| 243 | ), | 242 | ), |
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index 74aab6e0d964..23df3e7f8e7d 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h | |||
| @@ -168,7 +168,43 @@ enum bpf_func_id { | |||
| 168 | BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */ | 168 | BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */ |
| 169 | BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */ | 169 | BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */ |
| 170 | BPF_FUNC_get_smp_processor_id, /* u32 raw_smp_processor_id(void) */ | 170 | BPF_FUNC_get_smp_processor_id, /* u32 raw_smp_processor_id(void) */ |
| 171 | BPF_FUNC_skb_store_bytes, /* int skb_store_bytes(skb, offset, from, len) */ | 171 | |
| 172 | /** | ||
| 173 | * skb_store_bytes(skb, offset, from, len, flags) - store bytes into packet | ||
| 174 | * @skb: pointer to skb | ||
| 175 | * @offset: offset within packet from skb->data | ||
| 176 | * @from: pointer where to copy bytes from | ||
| 177 | * @len: number of bytes to store into packet | ||
| 178 | * @flags: bit 0 - if true, recompute skb->csum | ||
| 179 | * other bits - reserved | ||
| 180 | * Return: 0 on success | ||
| 181 | */ | ||
| 182 | BPF_FUNC_skb_store_bytes, | ||
| 183 | |||
| 184 | /** | ||
| 185 | * l3_csum_replace(skb, offset, from, to, flags) - recompute IP checksum | ||
| 186 | * @skb: pointer to skb | ||
| 187 | * @offset: offset within packet where IP checksum is located | ||
| 188 | * @from: old value of header field | ||
| 189 | * @to: new value of header field | ||
| 190 | * @flags: bits 0-3 - size of header field | ||
| 191 | * other bits - reserved | ||
| 192 | * Return: 0 on success | ||
| 193 | */ | ||
| 194 | BPF_FUNC_l3_csum_replace, | ||
| 195 | |||
| 196 | /** | ||
| 197 | * l4_csum_replace(skb, offset, from, to, flags) - recompute TCP/UDP checksum | ||
| 198 | * @skb: pointer to skb | ||
| 199 | * @offset: offset within packet where TCP/UDP checksum is located | ||
| 200 | * @from: old value of header field | ||
| 201 | * @to: new value of header field | ||
| 202 | * @flags: bits 0-3 - size of header field | ||
| 203 | * bit 4 - is pseudo header | ||
| 204 | * other bits - reserved | ||
| 205 | * Return: 0 on success | ||
| 206 | */ | ||
| 207 | BPF_FUNC_l4_csum_replace, | ||
| 172 | __BPF_FUNC_MAX_ID, | 208 | __BPF_FUNC_MAX_ID, |
| 173 | }; | 209 | }; |
| 174 | 210 | ||
| @@ -184,6 +220,7 @@ struct __sk_buff { | |||
| 184 | __u32 vlan_present; | 220 | __u32 vlan_present; |
| 185 | __u32 vlan_tci; | 221 | __u32 vlan_tci; |
| 186 | __u32 vlan_proto; | 222 | __u32 vlan_proto; |
| 223 | __u32 priority; | ||
| 187 | }; | 224 | }; |
| 188 | 225 | ||
| 189 | #endif /* _UAPI__LINUX_BPF_H__ */ | 226 | #endif /* _UAPI__LINUX_BPF_H__ */ |
diff --git a/include/uapi/linux/can/raw.h b/include/uapi/linux/can/raw.h index 78ec76fd89a6..8735f1080385 100644 --- a/include/uapi/linux/can/raw.h +++ b/include/uapi/linux/can/raw.h | |||
| @@ -57,6 +57,7 @@ enum { | |||
| 57 | CAN_RAW_LOOPBACK, /* local loopback (default:on) */ | 57 | CAN_RAW_LOOPBACK, /* local loopback (default:on) */ |
| 58 | CAN_RAW_RECV_OWN_MSGS, /* receive my own msgs (default:off) */ | 58 | CAN_RAW_RECV_OWN_MSGS, /* receive my own msgs (default:off) */ |
| 59 | CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */ | 59 | CAN_RAW_FD_FRAMES, /* allow CAN FD frames (default:off) */ |
| 60 | CAN_RAW_JOIN_FILTERS, /* all filters must match to trigger */ | ||
| 60 | }; | 61 | }; |
| 61 | 62 | ||
| 62 | #endif /* !_UAPI_CAN_RAW_H */ | 63 | #endif /* !_UAPI_CAN_RAW_H */ |
diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h index b0a813079852..2f62ab2d7bf9 100644 --- a/include/uapi/linux/input.h +++ b/include/uapi/linux/input.h | |||
| @@ -973,7 +973,8 @@ struct input_keymap_entry { | |||
| 973 | */ | 973 | */ |
| 974 | #define MT_TOOL_FINGER 0 | 974 | #define MT_TOOL_FINGER 0 |
| 975 | #define MT_TOOL_PEN 1 | 975 | #define MT_TOOL_PEN 1 |
| 976 | #define MT_TOOL_MAX 1 | 976 | #define MT_TOOL_PALM 2 |
| 977 | #define MT_TOOL_MAX 2 | ||
| 977 | 978 | ||
| 978 | /* | 979 | /* |
| 979 | * Values describing the status of a force-feedback effect | 980 | * Values describing the status of a force-feedback effect |
diff --git a/include/uapi/linux/nfsd/export.h b/include/uapi/linux/nfsd/export.h index 4742f2cb42f2..d3bd6ffec041 100644 --- a/include/uapi/linux/nfsd/export.h +++ b/include/uapi/linux/nfsd/export.h | |||
| @@ -47,7 +47,7 @@ | |||
| 47 | * exported filesystem. | 47 | * exported filesystem. |
| 48 | */ | 48 | */ |
| 49 | #define NFSEXP_V4ROOT 0x10000 | 49 | #define NFSEXP_V4ROOT 0x10000 |
| 50 | #define NFSEXP_NOPNFS 0x20000 | 50 | #define NFSEXP_PNFS 0x20000 |
| 51 | 51 | ||
| 52 | /* All flags that we claim to support. (Note we don't support NOACL.) */ | 52 | /* All flags that we claim to support. (Note we don't support NOACL.) */ |
| 53 | #define NFSEXP_ALLFLAGS 0x3FE7F | 53 | #define NFSEXP_ALLFLAGS 0x3FE7F |
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h index bea910f924dd..974db03f7b1a 100644 --- a/include/uapi/linux/rtnetlink.h +++ b/include/uapi/linux/rtnetlink.h | |||
| @@ -134,6 +134,8 @@ enum { | |||
| 134 | 134 | ||
| 135 | RTM_NEWNSID = 88, | 135 | RTM_NEWNSID = 88, |
| 136 | #define RTM_NEWNSID RTM_NEWNSID | 136 | #define RTM_NEWNSID RTM_NEWNSID |
| 137 | RTM_DELNSID = 89, | ||
| 138 | #define RTM_DELNSID RTM_DELNSID | ||
| 137 | RTM_GETNSID = 90, | 139 | RTM_GETNSID = 90, |
| 138 | #define RTM_GETNSID RTM_GETNSID | 140 | #define RTM_GETNSID RTM_GETNSID |
| 139 | 141 | ||
| @@ -635,6 +637,8 @@ enum rtnetlink_groups { | |||
| 635 | #define RTNLGRP_MDB RTNLGRP_MDB | 637 | #define RTNLGRP_MDB RTNLGRP_MDB |
| 636 | RTNLGRP_MPLS_ROUTE, | 638 | RTNLGRP_MPLS_ROUTE, |
| 637 | #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE | 639 | #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE |
| 640 | RTNLGRP_NSID, | ||
| 641 | #define RTNLGRP_NSID RTNLGRP_NSID | ||
| 638 | __RTNLGRP_MAX | 642 | __RTNLGRP_MAX |
| 639 | }; | 643 | }; |
| 640 | #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) | 644 | #define RTNLGRP_MAX (__RTNLGRP_MAX - 1) |
