diff options
| author | David S. Miller <davem@davemloft.net> | 2015-02-05 17:33:28 -0500 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2015-02-05 17:33:28 -0500 |
| commit | 6e03f896b52cd2ca88942170c5c9c407ec0ede69 (patch) | |
| tree | 48ca9a6efa5f99819667538838bab3679416f92c /include | |
| parent | db79a621835ee91d3e10177abd97f48e0a4dcf9b (diff) | |
| parent | 9d82f5eb3376cbae96ad36a063a9390de1694546 (diff) | |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Conflicts:
drivers/net/vxlan.c
drivers/vhost/net.c
include/linux/if_vlan.h
net/core/dev.c
The net/core/dev.c conflict was the overlap of one commit marking an
existing function static whilst another was adding a new function.
In the include/linux/if_vlan.h case, the type used for a local
variable was changed in 'net', whereas the function got rewritten
to fix a stacked vlan bug in 'net-next'.
In drivers/vhost/net.c, Al Viro's iov_iter conversions in 'net-next'
overlapped with an endainness fix for VHOST 1.0 in 'net'.
In drivers/net/vxlan.c, vxlan_find_vni() added a 'flags' parameter
in 'net-next' whereas in 'net' there was a bug fix to pass in the
correct network namespace pointer in calls to this function.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/i2c.h | 6 | ||||
| -rw-r--r-- | include/linux/if_vlan.h | 60 | ||||
| -rw-r--r-- | include/linux/kernel.h | 2 | ||||
| -rw-r--r-- | include/linux/mlx4/device.h | 2 | ||||
| -rw-r--r-- | include/linux/mm.h | 6 | ||||
| -rw-r--r-- | include/linux/perf_event.h | 6 | ||||
| -rw-r--r-- | include/linux/quota.h | 47 | ||||
| -rw-r--r-- | include/linux/quotaops.h | 4 | ||||
| -rw-r--r-- | include/net/flow_keys.h | 6 | ||||
| -rw-r--r-- | include/net/ip.h | 2 | ||||
| -rw-r--r-- | include/net/ipv6.h | 7 | ||||
| -rw-r--r-- | include/net/netfilter/nf_tables.h | 2 | ||||
| -rw-r--r-- | include/net/netns/ipv4.h | 1 | ||||
| -rw-r--r-- | include/net/sch_generic.h | 13 | ||||
| -rw-r--r-- | include/net/tcp.h | 4 |
15 files changed, 124 insertions, 44 deletions
diff --git a/include/linux/i2c.h b/include/linux/i2c.h index e3a1721c8354..7c7695940ddd 100644 --- a/include/linux/i2c.h +++ b/include/linux/i2c.h | |||
| @@ -228,7 +228,9 @@ struct i2c_client { | |||
| 228 | struct device dev; /* the device structure */ | 228 | struct device dev; /* the device structure */ |
| 229 | int irq; /* irq issued by device */ | 229 | int irq; /* irq issued by device */ |
| 230 | struct list_head detected; | 230 | struct list_head detected; |
| 231 | #if IS_ENABLED(CONFIG_I2C_SLAVE) | ||
| 231 | i2c_slave_cb_t slave_cb; /* callback for slave mode */ | 232 | i2c_slave_cb_t slave_cb; /* callback for slave mode */ |
| 233 | #endif | ||
| 232 | }; | 234 | }; |
| 233 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) | 235 | #define to_i2c_client(d) container_of(d, struct i2c_client, dev) |
| 234 | 236 | ||
| @@ -253,6 +255,7 @@ static inline void i2c_set_clientdata(struct i2c_client *dev, void *data) | |||
| 253 | 255 | ||
| 254 | /* I2C slave support */ | 256 | /* I2C slave support */ |
| 255 | 257 | ||
| 258 | #if IS_ENABLED(CONFIG_I2C_SLAVE) | ||
| 256 | enum i2c_slave_event { | 259 | enum i2c_slave_event { |
| 257 | I2C_SLAVE_REQ_READ_START, | 260 | I2C_SLAVE_REQ_READ_START, |
| 258 | I2C_SLAVE_REQ_READ_END, | 261 | I2C_SLAVE_REQ_READ_END, |
| @@ -269,6 +272,7 @@ static inline int i2c_slave_event(struct i2c_client *client, | |||
| 269 | { | 272 | { |
| 270 | return client->slave_cb(client, event, val); | 273 | return client->slave_cb(client, event, val); |
| 271 | } | 274 | } |
| 275 | #endif | ||
| 272 | 276 | ||
| 273 | /** | 277 | /** |
| 274 | * struct i2c_board_info - template for device creation | 278 | * struct i2c_board_info - template for device creation |
| @@ -404,8 +408,10 @@ struct i2c_algorithm { | |||
| 404 | /* To determine what the adapter supports */ | 408 | /* To determine what the adapter supports */ |
| 405 | u32 (*functionality) (struct i2c_adapter *); | 409 | u32 (*functionality) (struct i2c_adapter *); |
| 406 | 410 | ||
| 411 | #if IS_ENABLED(CONFIG_I2C_SLAVE) | ||
| 407 | int (*reg_slave)(struct i2c_client *client); | 412 | int (*reg_slave)(struct i2c_client *client); |
| 408 | int (*unreg_slave)(struct i2c_client *client); | 413 | int (*unreg_slave)(struct i2c_client *client); |
| 414 | #endif | ||
| 409 | }; | 415 | }; |
| 410 | 416 | ||
| 411 | /** | 417 | /** |
diff --git a/include/linux/if_vlan.h b/include/linux/if_vlan.h index bea465f24ebb..b11b28a30b9e 100644 --- a/include/linux/if_vlan.h +++ b/include/linux/if_vlan.h | |||
| @@ -472,27 +472,59 @@ static inline int vlan_get_tag(const struct sk_buff *skb, u16 *vlan_tci) | |||
| 472 | /** | 472 | /** |
| 473 | * vlan_get_protocol - get protocol EtherType. | 473 | * vlan_get_protocol - get protocol EtherType. |
| 474 | * @skb: skbuff to query | 474 | * @skb: skbuff to query |
| 475 | * @type: first vlan protocol | ||
| 476 | * @depth: buffer to store length of eth and vlan tags in bytes | ||
| 475 | * | 477 | * |
| 476 | * Returns the EtherType of the packet, regardless of whether it is | 478 | * Returns the EtherType of the packet, regardless of whether it is |
| 477 | * vlan encapsulated (normal or hardware accelerated) or not. | 479 | * vlan encapsulated (normal or hardware accelerated) or not. |
| 478 | */ | 480 | */ |
| 479 | static inline __be16 vlan_get_protocol(const struct sk_buff *skb) | 481 | static inline __be16 __vlan_get_protocol(struct sk_buff *skb, __be16 type, |
| 482 | int *depth) | ||
| 480 | { | 483 | { |
| 481 | __be16 protocol = 0; | 484 | unsigned int vlan_depth = skb->mac_len; |
| 482 | 485 | ||
| 483 | if (skb_vlan_tag_present(skb) || | 486 | /* if type is 802.1Q/AD then the header should already be |
| 484 | skb->protocol != cpu_to_be16(ETH_P_8021Q)) | 487 | * present at mac_len - VLAN_HLEN (if mac_len > 0), or at |
| 485 | protocol = skb->protocol; | 488 | * ETH_HLEN otherwise |
| 486 | else { | 489 | */ |
| 487 | __be16 proto, *protop; | 490 | if (type == htons(ETH_P_8021Q) || type == htons(ETH_P_8021AD)) { |
| 488 | protop = skb_header_pointer(skb, offsetof(struct vlan_ethhdr, | 491 | if (vlan_depth) { |
| 489 | h_vlan_encapsulated_proto), | 492 | if (WARN_ON(vlan_depth < VLAN_HLEN)) |
| 490 | sizeof(proto), &proto); | 493 | return 0; |
| 491 | if (likely(protop)) | 494 | vlan_depth -= VLAN_HLEN; |
| 492 | protocol = *protop; | 495 | } else { |
| 496 | vlan_depth = ETH_HLEN; | ||
| 497 | } | ||
| 498 | do { | ||
| 499 | struct vlan_hdr *vh; | ||
| 500 | |||
| 501 | if (unlikely(!pskb_may_pull(skb, | ||
| 502 | vlan_depth + VLAN_HLEN))) | ||
| 503 | return 0; | ||
| 504 | |||
| 505 | vh = (struct vlan_hdr *)(skb->data + vlan_depth); | ||
| 506 | type = vh->h_vlan_encapsulated_proto; | ||
| 507 | vlan_depth += VLAN_HLEN; | ||
| 508 | } while (type == htons(ETH_P_8021Q) || | ||
| 509 | type == htons(ETH_P_8021AD)); | ||
| 493 | } | 510 | } |
| 494 | 511 | ||
| 495 | return protocol; | 512 | if (depth) |
| 513 | *depth = vlan_depth; | ||
| 514 | |||
| 515 | return type; | ||
| 516 | } | ||
| 517 | |||
| 518 | /** | ||
| 519 | * vlan_get_protocol - get protocol EtherType. | ||
| 520 | * @skb: skbuff to query | ||
| 521 | * | ||
| 522 | * Returns the EtherType of the packet, regardless of whether it is | ||
| 523 | * vlan encapsulated (normal or hardware accelerated) or not. | ||
| 524 | */ | ||
| 525 | static inline __be16 vlan_get_protocol(struct sk_buff *skb) | ||
| 526 | { | ||
| 527 | return __vlan_get_protocol(skb, skb->protocol, NULL); | ||
| 496 | } | 528 | } |
| 497 | 529 | ||
| 498 | static inline void vlan_set_encap_proto(struct sk_buff *skb, | 530 | static inline void vlan_set_encap_proto(struct sk_buff *skb, |
diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 5449d2f4a1ef..64ce58bee6f5 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h | |||
| @@ -176,7 +176,7 @@ extern int _cond_resched(void); | |||
| 176 | */ | 176 | */ |
| 177 | # define might_sleep() \ | 177 | # define might_sleep() \ |
| 178 | do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0) | 178 | do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0) |
| 179 | # define sched_annotate_sleep() __set_current_state(TASK_RUNNING) | 179 | # define sched_annotate_sleep() (current->task_state_change = 0) |
| 180 | #else | 180 | #else |
| 181 | static inline void ___might_sleep(const char *file, int line, | 181 | static inline void ___might_sleep(const char *file, int line, |
| 182 | int preempt_offset) { } | 182 | int preempt_offset) { } |
diff --git a/include/linux/mlx4/device.h b/include/linux/mlx4/device.h index 977b0b164431..c116cb02475c 100644 --- a/include/linux/mlx4/device.h +++ b/include/linux/mlx4/device.h | |||
| @@ -98,7 +98,7 @@ enum { | |||
| 98 | MLX4_MAX_NUM_PF = 16, | 98 | MLX4_MAX_NUM_PF = 16, |
| 99 | MLX4_MAX_NUM_VF = 126, | 99 | MLX4_MAX_NUM_VF = 126, |
| 100 | MLX4_MAX_NUM_VF_P_PORT = 64, | 100 | MLX4_MAX_NUM_VF_P_PORT = 64, |
| 101 | MLX4_MFUNC_MAX = 80, | 101 | MLX4_MFUNC_MAX = 128, |
| 102 | MLX4_MAX_EQ_NUM = 1024, | 102 | MLX4_MAX_EQ_NUM = 1024, |
| 103 | MLX4_MFUNC_EQ_NUM = 4, | 103 | MLX4_MFUNC_EQ_NUM = 4, |
| 104 | MLX4_MFUNC_MAX_EQES = 8, | 104 | MLX4_MFUNC_MAX_EQES = 8, |
diff --git a/include/linux/mm.h b/include/linux/mm.h index 80fc92a49649..dd5ea3016fc4 100644 --- a/include/linux/mm.h +++ b/include/linux/mm.h | |||
| @@ -1070,6 +1070,7 @@ static inline int page_mapped(struct page *page) | |||
| 1070 | #define VM_FAULT_WRITE 0x0008 /* Special case for get_user_pages */ | 1070 | #define VM_FAULT_WRITE 0x0008 /* Special case for get_user_pages */ |
| 1071 | #define VM_FAULT_HWPOISON 0x0010 /* Hit poisoned small page */ | 1071 | #define VM_FAULT_HWPOISON 0x0010 /* Hit poisoned small page */ |
| 1072 | #define VM_FAULT_HWPOISON_LARGE 0x0020 /* Hit poisoned large page. Index encoded in upper bits */ | 1072 | #define VM_FAULT_HWPOISON_LARGE 0x0020 /* Hit poisoned large page. Index encoded in upper bits */ |
| 1073 | #define VM_FAULT_SIGSEGV 0x0040 | ||
| 1073 | 1074 | ||
| 1074 | #define VM_FAULT_NOPAGE 0x0100 /* ->fault installed the pte, not return page */ | 1075 | #define VM_FAULT_NOPAGE 0x0100 /* ->fault installed the pte, not return page */ |
| 1075 | #define VM_FAULT_LOCKED 0x0200 /* ->fault locked the returned page */ | 1076 | #define VM_FAULT_LOCKED 0x0200 /* ->fault locked the returned page */ |
| @@ -1078,8 +1079,9 @@ static inline int page_mapped(struct page *page) | |||
| 1078 | 1079 | ||
| 1079 | #define VM_FAULT_HWPOISON_LARGE_MASK 0xf000 /* encodes hpage index for large hwpoison */ | 1080 | #define VM_FAULT_HWPOISON_LARGE_MASK 0xf000 /* encodes hpage index for large hwpoison */ |
| 1080 | 1081 | ||
| 1081 | #define VM_FAULT_ERROR (VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_HWPOISON | \ | 1082 | #define VM_FAULT_ERROR (VM_FAULT_OOM | VM_FAULT_SIGBUS | VM_FAULT_SIGSEGV | \ |
| 1082 | VM_FAULT_FALLBACK | VM_FAULT_HWPOISON_LARGE) | 1083 | VM_FAULT_HWPOISON | VM_FAULT_HWPOISON_LARGE | \ |
| 1084 | VM_FAULT_FALLBACK) | ||
| 1083 | 1085 | ||
| 1084 | /* Encode hstate index for a hwpoisoned large page */ | 1086 | /* Encode hstate index for a hwpoisoned large page */ |
| 1085 | #define VM_FAULT_SET_HINDEX(x) ((x) << 12) | 1087 | #define VM_FAULT_SET_HINDEX(x) ((x) << 12) |
diff --git a/include/linux/perf_event.h b/include/linux/perf_event.h index 4f7a61ca4b39..664de5a4ec46 100644 --- a/include/linux/perf_event.h +++ b/include/linux/perf_event.h | |||
| @@ -450,11 +450,6 @@ struct perf_event { | |||
| 450 | #endif /* CONFIG_PERF_EVENTS */ | 450 | #endif /* CONFIG_PERF_EVENTS */ |
| 451 | }; | 451 | }; |
| 452 | 452 | ||
| 453 | enum perf_event_context_type { | ||
| 454 | task_context, | ||
| 455 | cpu_context, | ||
| 456 | }; | ||
| 457 | |||
| 458 | /** | 453 | /** |
| 459 | * struct perf_event_context - event context structure | 454 | * struct perf_event_context - event context structure |
| 460 | * | 455 | * |
| @@ -462,7 +457,6 @@ enum perf_event_context_type { | |||
| 462 | */ | 457 | */ |
| 463 | struct perf_event_context { | 458 | struct perf_event_context { |
| 464 | struct pmu *pmu; | 459 | struct pmu *pmu; |
| 465 | enum perf_event_context_type type; | ||
| 466 | /* | 460 | /* |
| 467 | * Protect the states of the events in the list, | 461 | * Protect the states of the events in the list, |
| 468 | * nr_active, and the list: | 462 | * nr_active, and the list: |
diff --git a/include/linux/quota.h b/include/linux/quota.h index 50978b781a19..097d7eb2441e 100644 --- a/include/linux/quota.h +++ b/include/linux/quota.h | |||
| @@ -321,6 +321,49 @@ struct dquot_operations { | |||
| 321 | 321 | ||
| 322 | struct path; | 322 | struct path; |
| 323 | 323 | ||
| 324 | /* Structure for communicating via ->get_dqblk() & ->set_dqblk() */ | ||
| 325 | struct qc_dqblk { | ||
| 326 | int d_fieldmask; /* mask of fields to change in ->set_dqblk() */ | ||
| 327 | u64 d_spc_hardlimit; /* absolute limit on used space */ | ||
| 328 | u64 d_spc_softlimit; /* preferred limit on used space */ | ||
| 329 | u64 d_ino_hardlimit; /* maximum # allocated inodes */ | ||
| 330 | u64 d_ino_softlimit; /* preferred inode limit */ | ||
| 331 | u64 d_space; /* Space owned by the user */ | ||
| 332 | u64 d_ino_count; /* # inodes owned by the user */ | ||
| 333 | s64 d_ino_timer; /* zero if within inode limits */ | ||
| 334 | /* if not, we refuse service */ | ||
| 335 | s64 d_spc_timer; /* similar to above; for space */ | ||
| 336 | int d_ino_warns; /* # warnings issued wrt num inodes */ | ||
| 337 | int d_spc_warns; /* # warnings issued wrt used space */ | ||
| 338 | u64 d_rt_spc_hardlimit; /* absolute limit on realtime space */ | ||
| 339 | u64 d_rt_spc_softlimit; /* preferred limit on RT space */ | ||
| 340 | u64 d_rt_space; /* realtime space owned */ | ||
| 341 | s64 d_rt_spc_timer; /* similar to above; for RT space */ | ||
| 342 | int d_rt_spc_warns; /* # warnings issued wrt RT space */ | ||
| 343 | }; | ||
| 344 | |||
| 345 | /* Field specifiers for ->set_dqblk() in struct qc_dqblk */ | ||
| 346 | #define QC_INO_SOFT (1<<0) | ||
| 347 | #define QC_INO_HARD (1<<1) | ||
| 348 | #define QC_SPC_SOFT (1<<2) | ||
| 349 | #define QC_SPC_HARD (1<<3) | ||
| 350 | #define QC_RT_SPC_SOFT (1<<4) | ||
| 351 | #define QC_RT_SPC_HARD (1<<5) | ||
| 352 | #define QC_LIMIT_MASK (QC_INO_SOFT | QC_INO_HARD | QC_SPC_SOFT | QC_SPC_HARD | \ | ||
| 353 | QC_RT_SPC_SOFT | QC_RT_SPC_HARD) | ||
| 354 | #define QC_SPC_TIMER (1<<6) | ||
| 355 | #define QC_INO_TIMER (1<<7) | ||
| 356 | #define QC_RT_SPC_TIMER (1<<8) | ||
| 357 | #define QC_TIMER_MASK (QC_SPC_TIMER | QC_INO_TIMER | QC_RT_SPC_TIMER) | ||
| 358 | #define QC_SPC_WARNS (1<<9) | ||
| 359 | #define QC_INO_WARNS (1<<10) | ||
| 360 | #define QC_RT_SPC_WARNS (1<<11) | ||
| 361 | #define QC_WARNS_MASK (QC_SPC_WARNS | QC_INO_WARNS | QC_RT_SPC_WARNS) | ||
| 362 | #define QC_SPACE (1<<12) | ||
| 363 | #define QC_INO_COUNT (1<<13) | ||
| 364 | #define QC_RT_SPACE (1<<14) | ||
| 365 | #define QC_ACCT_MASK (QC_SPACE | QC_INO_COUNT | QC_RT_SPACE) | ||
| 366 | |||
| 324 | /* Operations handling requests from userspace */ | 367 | /* Operations handling requests from userspace */ |
| 325 | struct quotactl_ops { | 368 | struct quotactl_ops { |
| 326 | int (*quota_on)(struct super_block *, int, int, struct path *); | 369 | int (*quota_on)(struct super_block *, int, int, struct path *); |
| @@ -329,8 +372,8 @@ struct quotactl_ops { | |||
| 329 | int (*quota_sync)(struct super_block *, int); | 372 | int (*quota_sync)(struct super_block *, int); |
| 330 | int (*get_info)(struct super_block *, int, struct if_dqinfo *); | 373 | int (*get_info)(struct super_block *, int, struct if_dqinfo *); |
| 331 | int (*set_info)(struct super_block *, int, struct if_dqinfo *); | 374 | int (*set_info)(struct super_block *, int, struct if_dqinfo *); |
| 332 | int (*get_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *); | 375 | int (*get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); |
| 333 | int (*set_dqblk)(struct super_block *, struct kqid, struct fs_disk_quota *); | 376 | int (*set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); |
| 334 | int (*get_xstate)(struct super_block *, struct fs_quota_stat *); | 377 | int (*get_xstate)(struct super_block *, struct fs_quota_stat *); |
| 335 | int (*set_xstate)(struct super_block *, unsigned int, int); | 378 | int (*set_xstate)(struct super_block *, unsigned int, int); |
| 336 | int (*get_xstatev)(struct super_block *, struct fs_quota_statv *); | 379 | int (*get_xstatev)(struct super_block *, struct fs_quota_statv *); |
diff --git a/include/linux/quotaops.h b/include/linux/quotaops.h index f23538a6e411..29e3455f7d41 100644 --- a/include/linux/quotaops.h +++ b/include/linux/quotaops.h | |||
| @@ -98,9 +98,9 @@ int dquot_quota_sync(struct super_block *sb, int type); | |||
| 98 | int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii); | 98 | int dquot_get_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii); |
| 99 | int dquot_set_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii); | 99 | int dquot_set_dqinfo(struct super_block *sb, int type, struct if_dqinfo *ii); |
| 100 | int dquot_get_dqblk(struct super_block *sb, struct kqid id, | 100 | int dquot_get_dqblk(struct super_block *sb, struct kqid id, |
| 101 | struct fs_disk_quota *di); | 101 | struct qc_dqblk *di); |
| 102 | int dquot_set_dqblk(struct super_block *sb, struct kqid id, | 102 | int dquot_set_dqblk(struct super_block *sb, struct kqid id, |
| 103 | struct fs_disk_quota *di); | 103 | struct qc_dqblk *di); |
| 104 | 104 | ||
| 105 | int __dquot_transfer(struct inode *inode, struct dquot **transfer_to); | 105 | int __dquot_transfer(struct inode *inode, struct dquot **transfer_to); |
| 106 | int dquot_transfer(struct inode *inode, struct iattr *iattr); | 106 | int dquot_transfer(struct inode *inode, struct iattr *iattr); |
diff --git a/include/net/flow_keys.h b/include/net/flow_keys.h index 7ee2df083542..dc8fd81412bf 100644 --- a/include/net/flow_keys.h +++ b/include/net/flow_keys.h | |||
| @@ -22,9 +22,9 @@ struct flow_keys { | |||
| 22 | __be32 ports; | 22 | __be32 ports; |
| 23 | __be16 port16[2]; | 23 | __be16 port16[2]; |
| 24 | }; | 24 | }; |
| 25 | u16 thoff; | 25 | u16 thoff; |
| 26 | u16 n_proto; | 26 | __be16 n_proto; |
| 27 | u8 ip_proto; | 27 | u8 ip_proto; |
| 28 | }; | 28 | }; |
| 29 | 29 | ||
| 30 | bool __skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow, | 30 | bool __skb_flow_dissect(const struct sk_buff *skb, struct flow_keys *flow, |
diff --git a/include/net/ip.h b/include/net/ip.h index 14211eaff17f..025c61c0dffb 100644 --- a/include/net/ip.h +++ b/include/net/ip.h | |||
| @@ -181,7 +181,7 @@ static inline __u8 ip_reply_arg_flowi_flags(const struct ip_reply_arg *arg) | |||
| 181 | return (arg->flags & IP_REPLY_ARG_NOSRCCHECK) ? FLOWI_FLAG_ANYSRC : 0; | 181 | return (arg->flags & IP_REPLY_ARG_NOSRCCHECK) ? FLOWI_FLAG_ANYSRC : 0; |
| 182 | } | 182 | } |
| 183 | 183 | ||
| 184 | void ip_send_unicast_reply(struct net *net, struct sk_buff *skb, | 184 | void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb, |
| 185 | const struct ip_options *sopt, | 185 | const struct ip_options *sopt, |
| 186 | __be32 daddr, __be32 saddr, | 186 | __be32 daddr, __be32 saddr, |
| 187 | const struct ip_reply_arg *arg, | 187 | const struct ip_reply_arg *arg, |
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index 8027ca53e31f..8ae7c9edbd3c 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h | |||
| @@ -671,6 +671,9 @@ static inline int ipv6_addr_diff(const struct in6_addr *a1, const struct in6_add | |||
| 671 | return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr)); | 671 | return __ipv6_addr_diff(a1, a2, sizeof(struct in6_addr)); |
| 672 | } | 672 | } |
| 673 | 673 | ||
| 674 | u32 __ipv6_select_ident(u32 hashrnd, struct in6_addr *dst, | ||
| 675 | struct in6_addr *src); | ||
| 676 | void ipv6_select_ident(struct frag_hdr *fhdr, struct rt6_info *rt); | ||
| 674 | void ipv6_proxy_select_ident(struct sk_buff *skb); | 677 | void ipv6_proxy_select_ident(struct sk_buff *skb); |
| 675 | 678 | ||
| 676 | int ip6_dst_hoplimit(struct dst_entry *dst); | 679 | int ip6_dst_hoplimit(struct dst_entry *dst); |
| @@ -708,7 +711,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, | |||
| 708 | __be32 flowlabel, bool autolabel) | 711 | __be32 flowlabel, bool autolabel) |
| 709 | { | 712 | { |
| 710 | if (!flowlabel && (autolabel || net->ipv6.sysctl.auto_flowlabels)) { | 713 | if (!flowlabel && (autolabel || net->ipv6.sysctl.auto_flowlabels)) { |
| 711 | __be32 hash; | 714 | u32 hash; |
| 712 | 715 | ||
| 713 | hash = skb_get_hash(skb); | 716 | hash = skb_get_hash(skb); |
| 714 | 717 | ||
| @@ -718,7 +721,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb, | |||
| 718 | */ | 721 | */ |
| 719 | hash ^= hash >> 12; | 722 | hash ^= hash >> 12; |
| 720 | 723 | ||
| 721 | flowlabel = hash & IPV6_FLOWLABEL_MASK; | 724 | flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK; |
| 722 | } | 725 | } |
| 723 | 726 | ||
| 724 | return flowlabel; | 727 | return flowlabel; |
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h index 3ae969e3acf0..9eaaa7884586 100644 --- a/include/net/netfilter/nf_tables.h +++ b/include/net/netfilter/nf_tables.h | |||
| @@ -530,6 +530,8 @@ enum nft_chain_type { | |||
| 530 | 530 | ||
| 531 | int nft_chain_validate_dependency(const struct nft_chain *chain, | 531 | int nft_chain_validate_dependency(const struct nft_chain *chain, |
| 532 | enum nft_chain_type type); | 532 | enum nft_chain_type type); |
| 533 | int nft_chain_validate_hooks(const struct nft_chain *chain, | ||
| 534 | unsigned int hook_flags); | ||
| 533 | 535 | ||
| 534 | struct nft_stats { | 536 | struct nft_stats { |
| 535 | u64 bytes; | 537 | u64 bytes; |
diff --git a/include/net/netns/ipv4.h b/include/net/netns/ipv4.h index 7283f4d39ae2..e0bdcb147326 100644 --- a/include/net/netns/ipv4.h +++ b/include/net/netns/ipv4.h | |||
| @@ -53,6 +53,7 @@ struct netns_ipv4 { | |||
| 53 | struct inet_peer_base *peers; | 53 | struct inet_peer_base *peers; |
| 54 | struct tcpm_hash_bucket *tcp_metrics_hash; | 54 | struct tcpm_hash_bucket *tcp_metrics_hash; |
| 55 | unsigned int tcp_metrics_hash_log; | 55 | unsigned int tcp_metrics_hash_log; |
| 56 | struct sock * __percpu *tcp_sk; | ||
| 56 | struct netns_frags frags; | 57 | struct netns_frags frags; |
| 57 | #ifdef CONFIG_NETFILTER | 58 | #ifdef CONFIG_NETFILTER |
| 58 | struct xt_table *iptable_filter; | 59 | struct xt_table *iptable_filter; |
diff --git a/include/net/sch_generic.h b/include/net/sch_generic.h index 3d282cbb66bf..c605d305c577 100644 --- a/include/net/sch_generic.h +++ b/include/net/sch_generic.h | |||
| @@ -79,6 +79,9 @@ struct Qdisc { | |||
| 79 | struct netdev_queue *dev_queue; | 79 | struct netdev_queue *dev_queue; |
| 80 | 80 | ||
| 81 | struct gnet_stats_rate_est64 rate_est; | 81 | struct gnet_stats_rate_est64 rate_est; |
| 82 | struct gnet_stats_basic_cpu __percpu *cpu_bstats; | ||
| 83 | struct gnet_stats_queue __percpu *cpu_qstats; | ||
| 84 | |||
| 82 | struct Qdisc *next_sched; | 85 | struct Qdisc *next_sched; |
| 83 | struct sk_buff *gso_skb; | 86 | struct sk_buff *gso_skb; |
| 84 | /* | 87 | /* |
| @@ -86,15 +89,9 @@ struct Qdisc { | |||
| 86 | */ | 89 | */ |
| 87 | unsigned long state; | 90 | unsigned long state; |
| 88 | struct sk_buff_head q; | 91 | struct sk_buff_head q; |
| 89 | union { | 92 | struct gnet_stats_basic_packed bstats; |
| 90 | struct gnet_stats_basic_packed bstats; | ||
| 91 | struct gnet_stats_basic_cpu __percpu *cpu_bstats; | ||
| 92 | } __packed; | ||
| 93 | unsigned int __state; | 93 | unsigned int __state; |
| 94 | union { | 94 | struct gnet_stats_queue qstats; |
| 95 | struct gnet_stats_queue qstats; | ||
| 96 | struct gnet_stats_queue __percpu *cpu_qstats; | ||
| 97 | } __packed; | ||
| 98 | struct rcu_head rcu_head; | 95 | struct rcu_head rcu_head; |
| 99 | int padded; | 96 | int padded; |
| 100 | atomic_t refcnt; | 97 | atomic_t refcnt; |
diff --git a/include/net/tcp.h b/include/net/tcp.h index 637ee490ec81..28e9bd3abceb 100644 --- a/include/net/tcp.h +++ b/include/net/tcp.h | |||
| @@ -843,8 +843,8 @@ void tcp_get_available_congestion_control(char *buf, size_t len); | |||
| 843 | void tcp_get_allowed_congestion_control(char *buf, size_t len); | 843 | void tcp_get_allowed_congestion_control(char *buf, size_t len); |
| 844 | int tcp_set_allowed_congestion_control(char *allowed); | 844 | int tcp_set_allowed_congestion_control(char *allowed); |
| 845 | int tcp_set_congestion_control(struct sock *sk, const char *name); | 845 | int tcp_set_congestion_control(struct sock *sk, const char *name); |
| 846 | void tcp_slow_start(struct tcp_sock *tp, u32 acked); | 846 | u32 tcp_slow_start(struct tcp_sock *tp, u32 acked); |
| 847 | void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w); | 847 | void tcp_cong_avoid_ai(struct tcp_sock *tp, u32 w, u32 acked); |
| 848 | 848 | ||
| 849 | u32 tcp_reno_ssthresh(struct sock *sk); | 849 | u32 tcp_reno_ssthresh(struct sock *sk); |
| 850 | void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 acked); | 850 | void tcp_reno_cong_avoid(struct sock *sk, u32 ack, u32 acked); |
