aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-30 04:13:15 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2018-07-30 04:13:15 -0400
commitc88b94a9f43cecdeae4fa3d30cadd9a3f604372f (patch)
tree113aea97fed1f08e0b5c9603c43fe1e147b68474 /include
parent38c6aa2175c35358d01c29266000d26c78af9e36 (diff)
parentacb1872577b346bd15ab3a3f8dff780d6cca4b70 (diff)
Merge 4.18-rc7 into staging-next
We want the staging changes in here for testing and merge issues. Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include')
-rw-r--r--include/linux/blk-mq.h14
-rw-r--r--include/linux/bpf-cgroup.h1
-rw-r--r--include/linux/bpfilter.h6
-rw-r--r--include/linux/delayacct.h2
-rw-r--r--include/linux/eventfd.h1
-rw-r--r--include/linux/filter.h6
-rw-r--r--include/linux/fs.h1
-rw-r--r--include/linux/fsl/guts.h1
-rw-r--r--include/linux/if_bridge.h4
-rw-r--r--include/linux/igmp.h2
-rw-r--r--include/linux/intel-iommu.h1
-rw-r--r--include/linux/marvell_phy.h2
-rw-r--r--include/linux/mlx5/driver.h18
-rw-r--r--include/linux/mm.h20
-rw-r--r--include/linux/pci.h2
-rw-r--r--include/linux/ring_buffer.h1
-rw-r--r--include/linux/sched/task.h2
-rw-r--r--include/linux/skbuff.h10
-rw-r--r--include/linux/syscalls.h1
-rw-r--r--include/net/cfg80211.h12
-rw-r--r--include/net/ip6_fib.h5
-rw-r--r--include/net/ip6_route.h6
-rw-r--r--include/net/ipv6.h13
-rw-r--r--include/net/netfilter/nf_tables.h5
-rw-r--r--include/net/netfilter/nf_tables_core.h6
-rw-r--r--include/net/netfilter/nf_tproxy.h4
-rw-r--r--include/net/tc_act/tc_csum.h1
-rw-r--r--include/net/tc_act/tc_tunnel_key.h1
-rw-r--r--include/net/tcp.h13
-rw-r--r--include/net/xdp_sock.h4
-rw-r--r--include/uapi/linux/aio_abi.h6
-rw-r--r--include/uapi/linux/btf.h2
-rw-r--r--include/uapi/linux/ethtool.h2
-rw-r--r--include/uapi/linux/tcp.h4
34 files changed, 127 insertions, 52 deletions
diff --git a/include/linux/blk-mq.h b/include/linux/blk-mq.h
index e3147eb74222..ca3f2c2edd85 100644
--- a/include/linux/blk-mq.h
+++ b/include/linux/blk-mq.h
@@ -287,6 +287,20 @@ void blk_mq_update_nr_hw_queues(struct blk_mq_tag_set *set, int nr_hw_queues);
287 287
288void blk_mq_quiesce_queue_nowait(struct request_queue *q); 288void blk_mq_quiesce_queue_nowait(struct request_queue *q);
289 289
290/**
291 * blk_mq_mark_complete() - Set request state to complete
292 * @rq: request to set to complete state
293 *
294 * Returns true if request state was successfully set to complete. If
295 * successful, the caller is responsibile for seeing this request is ended, as
296 * blk_mq_complete_request will not work again.
297 */
298static inline bool blk_mq_mark_complete(struct request *rq)
299{
300 return cmpxchg(&rq->state, MQ_RQ_IN_FLIGHT, MQ_RQ_COMPLETE) ==
301 MQ_RQ_IN_FLIGHT;
302}
303
290/* 304/*
291 * Driver command data is immediately after the request. So subtract request 305 * Driver command data is immediately after the request. So subtract request
292 * size to get back to the original request, add request size to get the PDU. 306 * size to get back to the original request, add request size to get the PDU.
diff --git a/include/linux/bpf-cgroup.h b/include/linux/bpf-cgroup.h
index 79795c5fa7c3..d50c2f0a655a 100644
--- a/include/linux/bpf-cgroup.h
+++ b/include/linux/bpf-cgroup.h
@@ -2,6 +2,7 @@
2#ifndef _BPF_CGROUP_H 2#ifndef _BPF_CGROUP_H
3#define _BPF_CGROUP_H 3#define _BPF_CGROUP_H
4 4
5#include <linux/errno.h>
5#include <linux/jump_label.h> 6#include <linux/jump_label.h>
6#include <uapi/linux/bpf.h> 7#include <uapi/linux/bpf.h>
7 8
diff --git a/include/linux/bpfilter.h b/include/linux/bpfilter.h
index 687b1760bb9f..f02cee0225d4 100644
--- a/include/linux/bpfilter.h
+++ b/include/linux/bpfilter.h
@@ -5,10 +5,10 @@
5#include <uapi/linux/bpfilter.h> 5#include <uapi/linux/bpfilter.h>
6 6
7struct sock; 7struct sock;
8int bpfilter_ip_set_sockopt(struct sock *sk, int optname, char *optval, 8int bpfilter_ip_set_sockopt(struct sock *sk, int optname, char __user *optval,
9 unsigned int optlen); 9 unsigned int optlen);
10int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char *optval, 10int bpfilter_ip_get_sockopt(struct sock *sk, int optname, char __user *optval,
11 int *optlen); 11 int __user *optlen);
12extern int (*bpfilter_process_sockopt)(struct sock *sk, int optname, 12extern int (*bpfilter_process_sockopt)(struct sock *sk, int optname,
13 char __user *optval, 13 char __user *optval,
14 unsigned int optlen, bool is_set); 14 unsigned int optlen, bool is_set);
diff --git a/include/linux/delayacct.h b/include/linux/delayacct.h
index e6c0448ebcc7..31c865d1842e 100644
--- a/include/linux/delayacct.h
+++ b/include/linux/delayacct.h
@@ -124,7 +124,7 @@ static inline void delayacct_blkio_start(void)
124 124
125static inline void delayacct_blkio_end(struct task_struct *p) 125static inline void delayacct_blkio_end(struct task_struct *p)
126{ 126{
127 if (current->delays) 127 if (p->delays)
128 __delayacct_blkio_end(p); 128 __delayacct_blkio_end(p);
129 delayacct_clear_flag(DELAYACCT_PF_BLKIO); 129 delayacct_clear_flag(DELAYACCT_PF_BLKIO);
130} 130}
diff --git a/include/linux/eventfd.h b/include/linux/eventfd.h
index 7094718b653b..ffcc7724ca21 100644
--- a/include/linux/eventfd.h
+++ b/include/linux/eventfd.h
@@ -11,6 +11,7 @@
11 11
12#include <linux/fcntl.h> 12#include <linux/fcntl.h>
13#include <linux/wait.h> 13#include <linux/wait.h>
14#include <linux/err.h>
14 15
15/* 16/*
16 * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining 17 * CAREFUL: Check include/uapi/asm-generic/fcntl.h when defining
diff --git a/include/linux/filter.h b/include/linux/filter.h
index 300baad62c88..c73dd7396886 100644
--- a/include/linux/filter.h
+++ b/include/linux/filter.h
@@ -765,8 +765,8 @@ static inline bool bpf_dump_raw_ok(void)
765struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off, 765struct bpf_prog *bpf_patch_insn_single(struct bpf_prog *prog, u32 off,
766 const struct bpf_insn *patch, u32 len); 766 const struct bpf_insn *patch, u32 len);
767 767
768static inline int __xdp_generic_ok_fwd_dev(struct sk_buff *skb, 768static inline int xdp_ok_fwd_dev(const struct net_device *fwd,
769 struct net_device *fwd) 769 unsigned int pktlen)
770{ 770{
771 unsigned int len; 771 unsigned int len;
772 772
@@ -774,7 +774,7 @@ static inline int __xdp_generic_ok_fwd_dev(struct sk_buff *skb,
774 return -ENETDOWN; 774 return -ENETDOWN;
775 775
776 len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN; 776 len = fwd->mtu + fwd->hard_header_len + VLAN_HLEN;
777 if (skb->len > len) 777 if (pktlen > len)
778 return -EMSGSIZE; 778 return -EMSGSIZE;
779 779
780 return 0; 780 return 0;
diff --git a/include/linux/fs.h b/include/linux/fs.h
index d78d146a98da..805bf22898cf 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -2420,6 +2420,7 @@ extern struct file *filp_open(const char *, int, umode_t);
2420extern struct file *file_open_root(struct dentry *, struct vfsmount *, 2420extern struct file *file_open_root(struct dentry *, struct vfsmount *,
2421 const char *, int, umode_t); 2421 const char *, int, umode_t);
2422extern struct file * dentry_open(const struct path *, int, const struct cred *); 2422extern struct file * dentry_open(const struct path *, int, const struct cred *);
2423extern struct file *filp_clone_open(struct file *);
2423extern int filp_close(struct file *, fl_owner_t id); 2424extern int filp_close(struct file *, fl_owner_t id);
2424 2425
2425extern struct filename *getname_flags(const char __user *, int, int *); 2426extern struct filename *getname_flags(const char __user *, int, int *);
diff --git a/include/linux/fsl/guts.h b/include/linux/fsl/guts.h
index 3efa3b861d44..941b11811f85 100644
--- a/include/linux/fsl/guts.h
+++ b/include/linux/fsl/guts.h
@@ -16,6 +16,7 @@
16#define __FSL_GUTS_H__ 16#define __FSL_GUTS_H__
17 17
18#include <linux/types.h> 18#include <linux/types.h>
19#include <linux/io.h>
19 20
20/** 21/**
21 * Global Utility Registers. 22 * Global Utility Registers.
diff --git a/include/linux/if_bridge.h b/include/linux/if_bridge.h
index 7843b98e1c6e..c20c7e197d07 100644
--- a/include/linux/if_bridge.h
+++ b/include/linux/if_bridge.h
@@ -105,13 +105,13 @@ static inline bool br_vlan_enabled(const struct net_device *dev)
105 105
106static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid) 106static inline int br_vlan_get_pvid(const struct net_device *dev, u16 *p_pvid)
107{ 107{
108 return -1; 108 return -EINVAL;
109} 109}
110 110
111static inline int br_vlan_get_info(const struct net_device *dev, u16 vid, 111static inline int br_vlan_get_info(const struct net_device *dev, u16 vid,
112 struct bridge_vlan_info *p_vinfo) 112 struct bridge_vlan_info *p_vinfo)
113{ 113{
114 return -1; 114 return -EINVAL;
115} 115}
116#endif 116#endif
117 117
diff --git a/include/linux/igmp.h b/include/linux/igmp.h
index f8231854b5d6..119f53941c12 100644
--- a/include/linux/igmp.h
+++ b/include/linux/igmp.h
@@ -109,6 +109,8 @@ struct ip_mc_list {
109extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u8 proto); 109extern int ip_check_mc_rcu(struct in_device *dev, __be32 mc_addr, __be32 src_addr, u8 proto);
110extern int igmp_rcv(struct sk_buff *); 110extern int igmp_rcv(struct sk_buff *);
111extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr); 111extern int ip_mc_join_group(struct sock *sk, struct ip_mreqn *imr);
112extern int ip_mc_join_group_ssm(struct sock *sk, struct ip_mreqn *imr,
113 unsigned int mode);
112extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr); 114extern int ip_mc_leave_group(struct sock *sk, struct ip_mreqn *imr);
113extern void ip_mc_drop_socket(struct sock *sk); 115extern void ip_mc_drop_socket(struct sock *sk);
114extern int ip_mc_source(int add, int omode, struct sock *sk, 116extern int ip_mc_source(int add, int omode, struct sock *sk,
diff --git a/include/linux/intel-iommu.h b/include/linux/intel-iommu.h
index 1df940196ab2..ef169d67df92 100644
--- a/include/linux/intel-iommu.h
+++ b/include/linux/intel-iommu.h
@@ -121,6 +121,7 @@
121#define ecap_srs(e) ((e >> 31) & 0x1) 121#define ecap_srs(e) ((e >> 31) & 0x1)
122#define ecap_ers(e) ((e >> 30) & 0x1) 122#define ecap_ers(e) ((e >> 30) & 0x1)
123#define ecap_prs(e) ((e >> 29) & 0x1) 123#define ecap_prs(e) ((e >> 29) & 0x1)
124#define ecap_broken_pasid(e) ((e >> 28) & 0x1)
124#define ecap_dis(e) ((e >> 27) & 0x1) 125#define ecap_dis(e) ((e >> 27) & 0x1)
125#define ecap_nest(e) ((e >> 26) & 0x1) 126#define ecap_nest(e) ((e >> 26) & 0x1)
126#define ecap_mts(e) ((e >> 25) & 0x1) 127#define ecap_mts(e) ((e >> 25) & 0x1)
diff --git a/include/linux/marvell_phy.h b/include/linux/marvell_phy.h
index 4f5f8c21e283..1eb6f244588d 100644
--- a/include/linux/marvell_phy.h
+++ b/include/linux/marvell_phy.h
@@ -27,6 +27,8 @@
27 */ 27 */
28#define MARVELL_PHY_ID_88E6390 0x01410f90 28#define MARVELL_PHY_ID_88E6390 0x01410f90
29 29
30#define MARVELL_PHY_FAMILY_ID(id) ((id) >> 4)
31
30/* struct phy_device dev_flags definitions */ 32/* struct phy_device dev_flags definitions */
31#define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001 33#define MARVELL_PHY_M1145_FLAGS_RESISTANCE 0x00000001
32#define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002 34#define MARVELL_PHY_M1118_DNS323_LEDS 0x00000002
diff --git a/include/linux/mlx5/driver.h b/include/linux/mlx5/driver.h
index 80cbb7fdce4a..83957920653a 100644
--- a/include/linux/mlx5/driver.h
+++ b/include/linux/mlx5/driver.h
@@ -358,6 +358,7 @@ struct mlx5_frag_buf_ctrl {
358 struct mlx5_frag_buf frag_buf; 358 struct mlx5_frag_buf frag_buf;
359 u32 sz_m1; 359 u32 sz_m1;
360 u32 frag_sz_m1; 360 u32 frag_sz_m1;
361 u32 strides_offset;
361 u8 log_sz; 362 u8 log_sz;
362 u8 log_stride; 363 u8 log_stride;
363 u8 log_frag_strides; 364 u8 log_frag_strides;
@@ -983,14 +984,22 @@ static inline u32 mlx5_base_mkey(const u32 key)
983 return key & 0xffffff00u; 984 return key & 0xffffff00u;
984} 985}
985 986
986static inline void mlx5_fill_fbc(u8 log_stride, u8 log_sz, 987static inline void mlx5_fill_fbc_offset(u8 log_stride, u8 log_sz,
987 struct mlx5_frag_buf_ctrl *fbc) 988 u32 strides_offset,
989 struct mlx5_frag_buf_ctrl *fbc)
988{ 990{
989 fbc->log_stride = log_stride; 991 fbc->log_stride = log_stride;
990 fbc->log_sz = log_sz; 992 fbc->log_sz = log_sz;
991 fbc->sz_m1 = (1 << fbc->log_sz) - 1; 993 fbc->sz_m1 = (1 << fbc->log_sz) - 1;
992 fbc->log_frag_strides = PAGE_SHIFT - fbc->log_stride; 994 fbc->log_frag_strides = PAGE_SHIFT - fbc->log_stride;
993 fbc->frag_sz_m1 = (1 << fbc->log_frag_strides) - 1; 995 fbc->frag_sz_m1 = (1 << fbc->log_frag_strides) - 1;
996 fbc->strides_offset = strides_offset;
997}
998
999static inline void mlx5_fill_fbc(u8 log_stride, u8 log_sz,
1000 struct mlx5_frag_buf_ctrl *fbc)
1001{
1002 mlx5_fill_fbc_offset(log_stride, log_sz, 0, fbc);
994} 1003}
995 1004
996static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc, 1005static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc,
@@ -1004,7 +1013,10 @@ static inline void mlx5_core_init_cq_frag_buf(struct mlx5_frag_buf_ctrl *fbc,
1004static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc, 1013static inline void *mlx5_frag_buf_get_wqe(struct mlx5_frag_buf_ctrl *fbc,
1005 u32 ix) 1014 u32 ix)
1006{ 1015{
1007 unsigned int frag = (ix >> fbc->log_frag_strides); 1016 unsigned int frag;
1017
1018 ix += fbc->strides_offset;
1019 frag = ix >> fbc->log_frag_strides;
1008 1020
1009 return fbc->frag_buf.frags[frag].buf + 1021 return fbc->frag_buf.frags[frag].buf +
1010 ((fbc->frag_sz_m1 & ix) << fbc->log_stride); 1022 ((fbc->frag_sz_m1 & ix) << fbc->log_stride);
diff --git a/include/linux/mm.h b/include/linux/mm.h
index a0fbb9ffe380..7ba6d356d18f 100644
--- a/include/linux/mm.h
+++ b/include/linux/mm.h
@@ -155,7 +155,9 @@ extern int overcommit_kbytes_handler(struct ctl_table *, int, void __user *,
155 * mmap() functions). 155 * mmap() functions).
156 */ 156 */
157 157
158extern struct kmem_cache *vm_area_cachep; 158struct vm_area_struct *vm_area_alloc(struct mm_struct *);
159struct vm_area_struct *vm_area_dup(struct vm_area_struct *);
160void vm_area_free(struct vm_area_struct *);
159 161
160#ifndef CONFIG_MMU 162#ifndef CONFIG_MMU
161extern struct rb_root nommu_region_tree; 163extern struct rb_root nommu_region_tree;
@@ -450,6 +452,20 @@ struct vm_operations_struct {
450 unsigned long addr); 452 unsigned long addr);
451}; 453};
452 454
455static inline void vma_init(struct vm_area_struct *vma, struct mm_struct *mm)
456{
457 static const struct vm_operations_struct dummy_vm_ops = {};
458
459 vma->vm_mm = mm;
460 vma->vm_ops = &dummy_vm_ops;
461 INIT_LIST_HEAD(&vma->anon_vma_chain);
462}
463
464static inline void vma_set_anonymous(struct vm_area_struct *vma)
465{
466 vma->vm_ops = NULL;
467}
468
453struct mmu_gather; 469struct mmu_gather;
454struct inode; 470struct inode;
455 471
@@ -2132,7 +2148,7 @@ extern int __meminit __early_pfn_to_nid(unsigned long pfn,
2132 struct mminit_pfnnid_cache *state); 2148 struct mminit_pfnnid_cache *state);
2133#endif 2149#endif
2134 2150
2135#ifdef CONFIG_HAVE_MEMBLOCK 2151#if defined(CONFIG_HAVE_MEMBLOCK) && !defined(CONFIG_FLAT_NODE_MEM_MAP)
2136void zero_resv_unavail(void); 2152void zero_resv_unavail(void);
2137#else 2153#else
2138static inline void zero_resv_unavail(void) {} 2154static inline void zero_resv_unavail(void) {}
diff --git a/include/linux/pci.h b/include/linux/pci.h
index 340029b2fb38..abd5d5e17aee 100644
--- a/include/linux/pci.h
+++ b/include/linux/pci.h
@@ -1240,6 +1240,8 @@ int pci_register_io_range(struct fwnode_handle *fwnode, phys_addr_t addr,
1240unsigned long pci_address_to_pio(phys_addr_t addr); 1240unsigned long pci_address_to_pio(phys_addr_t addr);
1241phys_addr_t pci_pio_to_address(unsigned long pio); 1241phys_addr_t pci_pio_to_address(unsigned long pio);
1242int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr); 1242int pci_remap_iospace(const struct resource *res, phys_addr_t phys_addr);
1243int devm_pci_remap_iospace(struct device *dev, const struct resource *res,
1244 phys_addr_t phys_addr);
1243void pci_unmap_iospace(struct resource *res); 1245void pci_unmap_iospace(struct resource *res);
1244void __iomem *devm_pci_remap_cfgspace(struct device *dev, 1246void __iomem *devm_pci_remap_cfgspace(struct device *dev,
1245 resource_size_t offset, 1247 resource_size_t offset,
diff --git a/include/linux/ring_buffer.h b/include/linux/ring_buffer.h
index b72ebdff0b77..003d09ab308d 100644
--- a/include/linux/ring_buffer.h
+++ b/include/linux/ring_buffer.h
@@ -165,6 +165,7 @@ void ring_buffer_record_enable(struct ring_buffer *buffer);
165void ring_buffer_record_off(struct ring_buffer *buffer); 165void ring_buffer_record_off(struct ring_buffer *buffer);
166void ring_buffer_record_on(struct ring_buffer *buffer); 166void ring_buffer_record_on(struct ring_buffer *buffer);
167int ring_buffer_record_is_on(struct ring_buffer *buffer); 167int ring_buffer_record_is_on(struct ring_buffer *buffer);
168int ring_buffer_record_is_set_on(struct ring_buffer *buffer);
168void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu); 169void ring_buffer_record_disable_cpu(struct ring_buffer *buffer, int cpu);
169void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu); 170void ring_buffer_record_enable_cpu(struct ring_buffer *buffer, int cpu);
170 171
diff --git a/include/linux/sched/task.h b/include/linux/sched/task.h
index 5be31eb7b266..108ede99e533 100644
--- a/include/linux/sched/task.h
+++ b/include/linux/sched/task.h
@@ -75,7 +75,7 @@ extern long _do_fork(unsigned long, unsigned long, unsigned long, int __user *,
75extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *); 75extern long do_fork(unsigned long, unsigned long, unsigned long, int __user *, int __user *);
76struct task_struct *fork_idle(int); 76struct task_struct *fork_idle(int);
77extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags); 77extern pid_t kernel_thread(int (*fn)(void *), void *arg, unsigned long flags);
78extern long kernel_wait4(pid_t, int *, int, struct rusage *); 78extern long kernel_wait4(pid_t, int __user *, int, struct rusage *);
79 79
80extern void free_task(struct task_struct *tsk); 80extern void free_task(struct task_struct *tsk);
81 81
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index 164cdedf6012..610a201126ee 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -630,6 +630,7 @@ typedef unsigned char *sk_buff_data_t;
630 * @hash: the packet hash 630 * @hash: the packet hash
631 * @queue_mapping: Queue mapping for multiqueue devices 631 * @queue_mapping: Queue mapping for multiqueue devices
632 * @xmit_more: More SKBs are pending for this queue 632 * @xmit_more: More SKBs are pending for this queue
633 * @pfmemalloc: skbuff was allocated from PFMEMALLOC reserves
633 * @ndisc_nodetype: router type (from link layer) 634 * @ndisc_nodetype: router type (from link layer)
634 * @ooo_okay: allow the mapping of a socket to a queue to be changed 635 * @ooo_okay: allow the mapping of a socket to a queue to be changed
635 * @l4_hash: indicate hash is a canonical 4-tuple hash over transport 636 * @l4_hash: indicate hash is a canonical 4-tuple hash over transport
@@ -735,7 +736,7 @@ struct sk_buff {
735 peeked:1, 736 peeked:1,
736 head_frag:1, 737 head_frag:1,
737 xmit_more:1, 738 xmit_more:1,
738 __unused:1; /* one bit hole */ 739 pfmemalloc:1;
739 740
740 /* fields enclosed in headers_start/headers_end are copied 741 /* fields enclosed in headers_start/headers_end are copied
741 * using a single memcpy() in __copy_skb_header() 742 * using a single memcpy() in __copy_skb_header()
@@ -754,31 +755,30 @@ struct sk_buff {
754 755
755 __u8 __pkt_type_offset[0]; 756 __u8 __pkt_type_offset[0];
756 __u8 pkt_type:3; 757 __u8 pkt_type:3;
757 __u8 pfmemalloc:1;
758 __u8 ignore_df:1; 758 __u8 ignore_df:1;
759
760 __u8 nf_trace:1; 759 __u8 nf_trace:1;
761 __u8 ip_summed:2; 760 __u8 ip_summed:2;
762 __u8 ooo_okay:1; 761 __u8 ooo_okay:1;
762
763 __u8 l4_hash:1; 763 __u8 l4_hash:1;
764 __u8 sw_hash:1; 764 __u8 sw_hash:1;
765 __u8 wifi_acked_valid:1; 765 __u8 wifi_acked_valid:1;
766 __u8 wifi_acked:1; 766 __u8 wifi_acked:1;
767
768 __u8 no_fcs:1; 767 __u8 no_fcs:1;
769 /* Indicates the inner headers are valid in the skbuff. */ 768 /* Indicates the inner headers are valid in the skbuff. */
770 __u8 encapsulation:1; 769 __u8 encapsulation:1;
771 __u8 encap_hdr_csum:1; 770 __u8 encap_hdr_csum:1;
772 __u8 csum_valid:1; 771 __u8 csum_valid:1;
772
773 __u8 csum_complete_sw:1; 773 __u8 csum_complete_sw:1;
774 __u8 csum_level:2; 774 __u8 csum_level:2;
775 __u8 csum_not_inet:1; 775 __u8 csum_not_inet:1;
776
777 __u8 dst_pending_confirm:1; 776 __u8 dst_pending_confirm:1;
778#ifdef CONFIG_IPV6_NDISC_NODETYPE 777#ifdef CONFIG_IPV6_NDISC_NODETYPE
779 __u8 ndisc_nodetype:2; 778 __u8 ndisc_nodetype:2;
780#endif 779#endif
781 __u8 ipvs_property:1; 780 __u8 ipvs_property:1;
781
782 __u8 inner_protocol_type:1; 782 __u8 inner_protocol_type:1;
783 __u8 remcsum_offload:1; 783 __u8 remcsum_offload:1;
784#ifdef CONFIG_NET_SWITCHDEV 784#ifdef CONFIG_NET_SWITCHDEV
diff --git a/include/linux/syscalls.h b/include/linux/syscalls.h
index a368a68cb667..5c1a0933768e 100644
--- a/include/linux/syscalls.h
+++ b/include/linux/syscalls.h
@@ -11,6 +11,7 @@
11#ifndef _LINUX_SYSCALLS_H 11#ifndef _LINUX_SYSCALLS_H
12#define _LINUX_SYSCALLS_H 12#define _LINUX_SYSCALLS_H
13 13
14struct __aio_sigset;
14struct epoll_event; 15struct epoll_event;
15struct iattr; 16struct iattr;
16struct inode; 17struct inode;
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h
index 5fbfe61f41c6..1beb3ead0385 100644
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -5835,10 +5835,11 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie,
5835/** 5835/**
5836 * cfg80211_rx_control_port - notification about a received control port frame 5836 * cfg80211_rx_control_port - notification about a received control port frame
5837 * @dev: The device the frame matched to 5837 * @dev: The device the frame matched to
5838 * @buf: control port frame 5838 * @skb: The skbuf with the control port frame. It is assumed that the skbuf
5839 * @len: length of the frame data 5839 * is 802.3 formatted (with 802.3 header). The skb can be non-linear.
5840 * @addr: The peer from which the frame was received 5840 * This function does not take ownership of the skb, so the caller is
5841 * @proto: frame protocol, typically PAE or Pre-authentication 5841 * responsible for any cleanup. The caller must also ensure that
5842 * skb->protocol is set appropriately.
5842 * @unencrypted: Whether the frame was received unencrypted 5843 * @unencrypted: Whether the frame was received unencrypted
5843 * 5844 *
5844 * This function is used to inform userspace about a received control port 5845 * This function is used to inform userspace about a received control port
@@ -5851,8 +5852,7 @@ void cfg80211_mgmt_tx_status(struct wireless_dev *wdev, u64 cookie,
5851 * Return: %true if the frame was passed to userspace 5852 * Return: %true if the frame was passed to userspace
5852 */ 5853 */
5853bool cfg80211_rx_control_port(struct net_device *dev, 5854bool cfg80211_rx_control_port(struct net_device *dev,
5854 const u8 *buf, size_t len, 5855 struct sk_buff *skb, bool unencrypted);
5855 const u8 *addr, u16 proto, bool unencrypted);
5856 5856
5857/** 5857/**
5858 * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event 5858 * cfg80211_cqm_rssi_notify - connection quality monitoring rssi event
diff --git a/include/net/ip6_fib.h b/include/net/ip6_fib.h
index 71b9043aa0e7..3d4930528db0 100644
--- a/include/net/ip6_fib.h
+++ b/include/net/ip6_fib.h
@@ -281,6 +281,11 @@ static inline void fib6_info_hold(struct fib6_info *f6i)
281 atomic_inc(&f6i->fib6_ref); 281 atomic_inc(&f6i->fib6_ref);
282} 282}
283 283
284static inline bool fib6_info_hold_safe(struct fib6_info *f6i)
285{
286 return atomic_inc_not_zero(&f6i->fib6_ref);
287}
288
284static inline void fib6_info_release(struct fib6_info *f6i) 289static inline void fib6_info_release(struct fib6_info *f6i)
285{ 290{
286 if (f6i && atomic_dec_and_test(&f6i->fib6_ref)) 291 if (f6i && atomic_dec_and_test(&f6i->fib6_ref))
diff --git a/include/net/ip6_route.h b/include/net/ip6_route.h
index 59656fc580df..7b9c82de11cc 100644
--- a/include/net/ip6_route.h
+++ b/include/net/ip6_route.h
@@ -66,6 +66,12 @@ static inline bool rt6_need_strict(const struct in6_addr *daddr)
66 (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK); 66 (IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK);
67} 67}
68 68
69static inline bool rt6_qualify_for_ecmp(const struct fib6_info *f6i)
70{
71 return (f6i->fib6_flags & (RTF_GATEWAY|RTF_ADDRCONF|RTF_DYNAMIC)) ==
72 RTF_GATEWAY;
73}
74
69void ip6_route_input(struct sk_buff *skb); 75void ip6_route_input(struct sk_buff *skb);
70struct dst_entry *ip6_route_input_lookup(struct net *net, 76struct dst_entry *ip6_route_input_lookup(struct net *net,
71 struct net_device *dev, 77 struct net_device *dev,
diff --git a/include/net/ipv6.h b/include/net/ipv6.h
index 16475c269749..8f73be494503 100644
--- a/include/net/ipv6.h
+++ b/include/net/ipv6.h
@@ -355,14 +355,7 @@ struct ipv6_txoptions *ipv6_dup_options(struct sock *sk,
355struct ipv6_txoptions *ipv6_renew_options(struct sock *sk, 355struct ipv6_txoptions *ipv6_renew_options(struct sock *sk,
356 struct ipv6_txoptions *opt, 356 struct ipv6_txoptions *opt,
357 int newtype, 357 int newtype,
358 struct ipv6_opt_hdr __user *newopt, 358 struct ipv6_opt_hdr *newopt);
359 int newoptlen);
360struct ipv6_txoptions *
361ipv6_renew_options_kern(struct sock *sk,
362 struct ipv6_txoptions *opt,
363 int newtype,
364 struct ipv6_opt_hdr *newopt,
365 int newoptlen);
366struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space, 359struct ipv6_txoptions *ipv6_fixup_options(struct ipv6_txoptions *opt_space,
367 struct ipv6_txoptions *opt); 360 struct ipv6_txoptions *opt);
368 361
@@ -830,7 +823,7 @@ static inline __be32 ip6_make_flowlabel(struct net *net, struct sk_buff *skb,
830 * to minimize possbility that any useful information to an 823 * to minimize possbility that any useful information to an
831 * attacker is leaked. Only lower 20 bits are relevant. 824 * attacker is leaked. Only lower 20 bits are relevant.
832 */ 825 */
833 rol32(hash, 16); 826 hash = rol32(hash, 16);
834 827
835 flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK; 828 flowlabel = (__force __be32)hash & IPV6_FLOWLABEL_MASK;
836 829
@@ -1107,6 +1100,8 @@ void ipv6_sysctl_unregister(void);
1107 1100
1108int ipv6_sock_mc_join(struct sock *sk, int ifindex, 1101int ipv6_sock_mc_join(struct sock *sk, int ifindex,
1109 const struct in6_addr *addr); 1102 const struct in6_addr *addr);
1103int ipv6_sock_mc_join_ssm(struct sock *sk, int ifindex,
1104 const struct in6_addr *addr, unsigned int mode);
1110int ipv6_sock_mc_drop(struct sock *sk, int ifindex, 1105int ipv6_sock_mc_drop(struct sock *sk, int ifindex,
1111 const struct in6_addr *addr); 1106 const struct in6_addr *addr);
1112#endif /* _NET_IPV6_H */ 1107#endif /* _NET_IPV6_H */
diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
index 08c005ce56e9..dc417ef0a0c5 100644
--- a/include/net/netfilter/nf_tables.h
+++ b/include/net/netfilter/nf_tables.h
@@ -150,6 +150,7 @@ static inline void nft_data_debug(const struct nft_data *data)
150 * @portid: netlink portID of the original message 150 * @portid: netlink portID of the original message
151 * @seq: netlink sequence number 151 * @seq: netlink sequence number
152 * @family: protocol family 152 * @family: protocol family
153 * @level: depth of the chains
153 * @report: notify via unicast netlink message 154 * @report: notify via unicast netlink message
154 */ 155 */
155struct nft_ctx { 156struct nft_ctx {
@@ -160,6 +161,7 @@ struct nft_ctx {
160 u32 portid; 161 u32 portid;
161 u32 seq; 162 u32 seq;
162 u8 family; 163 u8 family;
164 u8 level;
163 bool report; 165 bool report;
164}; 166};
165 167
@@ -865,7 +867,6 @@ enum nft_chain_flags {
865 * @table: table that this chain belongs to 867 * @table: table that this chain belongs to
866 * @handle: chain handle 868 * @handle: chain handle
867 * @use: number of jump references to this chain 869 * @use: number of jump references to this chain
868 * @level: length of longest path to this chain
869 * @flags: bitmask of enum nft_chain_flags 870 * @flags: bitmask of enum nft_chain_flags
870 * @name: name of the chain 871 * @name: name of the chain
871 */ 872 */
@@ -878,7 +879,6 @@ struct nft_chain {
878 struct nft_table *table; 879 struct nft_table *table;
879 u64 handle; 880 u64 handle;
880 u32 use; 881 u32 use;
881 u16 level;
882 u8 flags:6, 882 u8 flags:6,
883 genmask:2; 883 genmask:2;
884 char *name; 884 char *name;
@@ -1124,7 +1124,6 @@ struct nft_flowtable {
1124 u32 genmask:2, 1124 u32 genmask:2,
1125 use:30; 1125 use:30;
1126 u64 handle; 1126 u64 handle;
1127 char *dev_name[NFT_FLOWTABLE_DEVICE_MAX];
1128 /* runtime data below here */ 1127 /* runtime data below here */
1129 struct nf_hook_ops *ops ____cacheline_aligned; 1128 struct nf_hook_ops *ops ____cacheline_aligned;
1130 struct nf_flowtable data; 1129 struct nf_flowtable data;
diff --git a/include/net/netfilter/nf_tables_core.h b/include/net/netfilter/nf_tables_core.h
index e0c0c2558ec4..a05134507e7b 100644
--- a/include/net/netfilter/nf_tables_core.h
+++ b/include/net/netfilter/nf_tables_core.h
@@ -65,4 +65,10 @@ extern const struct nft_expr_ops nft_payload_fast_ops;
65extern struct static_key_false nft_counters_enabled; 65extern struct static_key_false nft_counters_enabled;
66extern struct static_key_false nft_trace_enabled; 66extern struct static_key_false nft_trace_enabled;
67 67
68extern struct nft_set_type nft_set_rhash_type;
69extern struct nft_set_type nft_set_hash_type;
70extern struct nft_set_type nft_set_hash_fast_type;
71extern struct nft_set_type nft_set_rbtree_type;
72extern struct nft_set_type nft_set_bitmap_type;
73
68#endif /* _NET_NF_TABLES_CORE_H */ 74#endif /* _NET_NF_TABLES_CORE_H */
diff --git a/include/net/netfilter/nf_tproxy.h b/include/net/netfilter/nf_tproxy.h
index 9754a50ecde9..4cc64c8446eb 100644
--- a/include/net/netfilter/nf_tproxy.h
+++ b/include/net/netfilter/nf_tproxy.h
@@ -64,7 +64,7 @@ nf_tproxy_handle_time_wait4(struct net *net, struct sk_buff *skb,
64 * belonging to established connections going through that one. 64 * belonging to established connections going through that one.
65 */ 65 */
66struct sock * 66struct sock *
67nf_tproxy_get_sock_v4(struct net *net, struct sk_buff *skb, void *hp, 67nf_tproxy_get_sock_v4(struct net *net, struct sk_buff *skb,
68 const u8 protocol, 68 const u8 protocol,
69 const __be32 saddr, const __be32 daddr, 69 const __be32 saddr, const __be32 daddr,
70 const __be16 sport, const __be16 dport, 70 const __be16 sport, const __be16 dport,
@@ -103,7 +103,7 @@ nf_tproxy_handle_time_wait6(struct sk_buff *skb, int tproto, int thoff,
103 struct sock *sk); 103 struct sock *sk);
104 104
105struct sock * 105struct sock *
106nf_tproxy_get_sock_v6(struct net *net, struct sk_buff *skb, int thoff, void *hp, 106nf_tproxy_get_sock_v6(struct net *net, struct sk_buff *skb, int thoff,
107 const u8 protocol, 107 const u8 protocol,
108 const struct in6_addr *saddr, const struct in6_addr *daddr, 108 const struct in6_addr *saddr, const struct in6_addr *daddr,
109 const __be16 sport, const __be16 dport, 109 const __be16 sport, const __be16 dport,
diff --git a/include/net/tc_act/tc_csum.h b/include/net/tc_act/tc_csum.h
index 9470fd7e4350..32d2454c0479 100644
--- a/include/net/tc_act/tc_csum.h
+++ b/include/net/tc_act/tc_csum.h
@@ -7,7 +7,6 @@
7#include <linux/tc_act/tc_csum.h> 7#include <linux/tc_act/tc_csum.h>
8 8
9struct tcf_csum_params { 9struct tcf_csum_params {
10 int action;
11 u32 update_flags; 10 u32 update_flags;
12 struct rcu_head rcu; 11 struct rcu_head rcu;
13}; 12};
diff --git a/include/net/tc_act/tc_tunnel_key.h b/include/net/tc_act/tc_tunnel_key.h
index efef0b4b1b2b..46b8c7f1c8d5 100644
--- a/include/net/tc_act/tc_tunnel_key.h
+++ b/include/net/tc_act/tc_tunnel_key.h
@@ -18,7 +18,6 @@
18struct tcf_tunnel_key_params { 18struct tcf_tunnel_key_params {
19 struct rcu_head rcu; 19 struct rcu_head rcu;
20 int tcft_action; 20 int tcft_action;
21 int action;
22 struct metadata_dst *tcft_enc_metadata; 21 struct metadata_dst *tcft_enc_metadata;
23}; 22};
24 23
diff --git a/include/net/tcp.h b/include/net/tcp.h
index 800582b5dd54..cd3ecda9386a 100644
--- a/include/net/tcp.h
+++ b/include/net/tcp.h
@@ -342,6 +342,7 @@ ssize_t tcp_splice_read(struct socket *sk, loff_t *ppos,
342 struct pipe_inode_info *pipe, size_t len, 342 struct pipe_inode_info *pipe, size_t len,
343 unsigned int flags); 343 unsigned int flags);
344 344
345void tcp_enter_quickack_mode(struct sock *sk, unsigned int max_quickacks);
345static inline void tcp_dec_quickack_mode(struct sock *sk, 346static inline void tcp_dec_quickack_mode(struct sock *sk,
346 const unsigned int pkts) 347 const unsigned int pkts)
347{ 348{
@@ -539,6 +540,7 @@ void tcp_send_fin(struct sock *sk);
539void tcp_send_active_reset(struct sock *sk, gfp_t priority); 540void tcp_send_active_reset(struct sock *sk, gfp_t priority);
540int tcp_send_synack(struct sock *); 541int tcp_send_synack(struct sock *);
541void tcp_push_one(struct sock *, unsigned int mss_now); 542void tcp_push_one(struct sock *, unsigned int mss_now);
543void __tcp_send_ack(struct sock *sk, u32 rcv_nxt);
542void tcp_send_ack(struct sock *sk); 544void tcp_send_ack(struct sock *sk);
543void tcp_send_delayed_ack(struct sock *sk); 545void tcp_send_delayed_ack(struct sock *sk);
544void tcp_send_loss_probe(struct sock *sk); 546void tcp_send_loss_probe(struct sock *sk);
@@ -828,6 +830,10 @@ struct tcp_skb_cb {
828 830
829#define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0])) 831#define TCP_SKB_CB(__skb) ((struct tcp_skb_cb *)&((__skb)->cb[0]))
830 832
833static inline void bpf_compute_data_end_sk_skb(struct sk_buff *skb)
834{
835 TCP_SKB_CB(skb)->bpf.data_end = skb->data + skb_headlen(skb);
836}
831 837
832#if IS_ENABLED(CONFIG_IPV6) 838#if IS_ENABLED(CONFIG_IPV6)
833/* This is the variant of inet6_iif() that must be used by TCP, 839/* This is the variant of inet6_iif() that must be used by TCP,
@@ -835,6 +841,11 @@ struct tcp_skb_cb {
835 */ 841 */
836static inline int tcp_v6_iif(const struct sk_buff *skb) 842static inline int tcp_v6_iif(const struct sk_buff *skb)
837{ 843{
844 return TCP_SKB_CB(skb)->header.h6.iif;
845}
846
847static inline int tcp_v6_iif_l3_slave(const struct sk_buff *skb)
848{
838 bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags); 849 bool l3_slave = ipv6_l3mdev_skb(TCP_SKB_CB(skb)->header.h6.flags);
839 850
840 return l3_slave ? skb->skb_iif : TCP_SKB_CB(skb)->header.h6.iif; 851 return l3_slave ? skb->skb_iif : TCP_SKB_CB(skb)->header.h6.iif;
@@ -908,8 +919,6 @@ enum tcp_ca_event {
908 CA_EVENT_LOSS, /* loss timeout */ 919 CA_EVENT_LOSS, /* loss timeout */
909 CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */ 920 CA_EVENT_ECN_NO_CE, /* ECT set, but not CE marked */
910 CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */ 921 CA_EVENT_ECN_IS_CE, /* received CE marked IP packet */
911 CA_EVENT_DELAYED_ACK, /* Delayed ack is sent */
912 CA_EVENT_NON_DELAYED_ACK,
913}; 922};
914 923
915/* Information about inbound ACK, passed to cong_ops->in_ack_event() */ 924/* Information about inbound ACK, passed to cong_ops->in_ack_event() */
diff --git a/include/net/xdp_sock.h b/include/net/xdp_sock.h
index 9fe472f2ac95..7161856bcf9c 100644
--- a/include/net/xdp_sock.h
+++ b/include/net/xdp_sock.h
@@ -60,6 +60,10 @@ struct xdp_sock {
60 bool zc; 60 bool zc;
61 /* Protects multiple processes in the control path */ 61 /* Protects multiple processes in the control path */
62 struct mutex mutex; 62 struct mutex mutex;
63 /* Mutual exclusion of NAPI TX thread and sendmsg error paths
64 * in the SKB destructor callback.
65 */
66 spinlock_t tx_completion_lock;
63 u64 rx_dropped; 67 u64 rx_dropped;
64}; 68};
65 69
diff --git a/include/uapi/linux/aio_abi.h b/include/uapi/linux/aio_abi.h
index 3c5038b587ba..d4593a6062ef 100644
--- a/include/uapi/linux/aio_abi.h
+++ b/include/uapi/linux/aio_abi.h
@@ -29,7 +29,6 @@
29 29
30#include <linux/types.h> 30#include <linux/types.h>
31#include <linux/fs.h> 31#include <linux/fs.h>
32#include <linux/signal.h>
33#include <asm/byteorder.h> 32#include <asm/byteorder.h>
34 33
35typedef __kernel_ulong_t aio_context_t; 34typedef __kernel_ulong_t aio_context_t;
@@ -110,10 +109,5 @@ struct iocb {
110#undef IFBIG 109#undef IFBIG
111#undef IFLITTLE 110#undef IFLITTLE
112 111
113struct __aio_sigset {
114 const sigset_t __user *sigmask;
115 size_t sigsetsize;
116};
117
118#endif /* __LINUX__AIO_ABI_H */ 112#endif /* __LINUX__AIO_ABI_H */
119 113
diff --git a/include/uapi/linux/btf.h b/include/uapi/linux/btf.h
index 0b5ddbe135a4..972265f32871 100644
--- a/include/uapi/linux/btf.h
+++ b/include/uapi/linux/btf.h
@@ -76,7 +76,7 @@ struct btf_type {
76 */ 76 */
77#define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24) 77#define BTF_INT_ENCODING(VAL) (((VAL) & 0x0f000000) >> 24)
78#define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16) 78#define BTF_INT_OFFSET(VAL) (((VAL & 0x00ff0000)) >> 16)
79#define BTF_INT_BITS(VAL) ((VAL) & 0x0000ffff) 79#define BTF_INT_BITS(VAL) ((VAL) & 0x000000ff)
80 80
81/* Attributes stored in the BTF_INT_ENCODING */ 81/* Attributes stored in the BTF_INT_ENCODING */
82#define BTF_INT_SIGNED (1 << 0) 82#define BTF_INT_SIGNED (1 << 0)
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 4ca65b56084f..7363f18e65a5 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -226,7 +226,7 @@ enum tunable_id {
226 ETHTOOL_TX_COPYBREAK, 226 ETHTOOL_TX_COPYBREAK,
227 ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */ 227 ETHTOOL_PFC_PREVENTION_TOUT, /* timeout in msecs */
228 /* 228 /*
229 * Add your fresh new tubale attribute above and remember to update 229 * Add your fresh new tunable attribute above and remember to update
230 * tunable_strings[] in net/core/ethtool.c 230 * tunable_strings[] in net/core/ethtool.c
231 */ 231 */
232 __ETHTOOL_TUNABLE_COUNT, 232 __ETHTOOL_TUNABLE_COUNT,
diff --git a/include/uapi/linux/tcp.h b/include/uapi/linux/tcp.h
index 29eb659aa77a..e3f6ed8a7064 100644
--- a/include/uapi/linux/tcp.h
+++ b/include/uapi/linux/tcp.h
@@ -127,6 +127,10 @@ enum {
127 127
128#define TCP_CM_INQ TCP_INQ 128#define TCP_CM_INQ TCP_INQ
129 129
130#define TCP_REPAIR_ON 1
131#define TCP_REPAIR_OFF 0
132#define TCP_REPAIR_OFF_NO_WP -1 /* Turn off without window probes */
133
130struct tcp_repair_opt { 134struct tcp_repair_opt {
131 __u32 opt_code; 135 __u32 opt_code;
132 __u32 opt_val; 136 __u32 opt_val;