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/linux | |
| 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/linux')
33 files changed, 241 insertions, 92 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, |
