History

Merge tag 'v4.11-rc1' into patchwork

Linux 4.11-rc1 * tag 'v4.11-rc1': (10730 commits) Linux 4.11-rc1 strparser: destroy workqueue on module exit Documentation/sphinx: fix primary_domain configuration docs: Fix htmldocs build failure doc/ko_KR/memory-barriers: Update control-dependencies section pcieaer doc: update the link Documentation: Update path to sysrq.txt sfc: fix IPID endianness in TSOv2 sfc: avoid max() in array size rds: remove unnecessary returned value check rxrpc: Fix potential NULL-pointer exception nfp: correct DMA direction in XDP DMA sync nfp: don't tell FW about the reserved buffer space net: ethernet: bgmac: mac address change bug net: ethernet: bgmac: init sequence bug xen-netback: don't vfree() queues under spinlock xen-netback: keep a local pointer for vif in backend_disconnect() netfilter: nf_tables: don't call nfnetlink_set_err() if nfnetlink_send() fails netfilter: nft_set_rbtree: incorrect assumption on lower interval lookups netfilter: nf_conntrack_sip: fix wrong memory initialisation ...

Mauro Carvalho Chehab committed 9 years ago

Commit 700ea5e2 parents 3dc2046 c1ae3cf11068 files · +493243 −213585Browse files

Showing the changes to include/uapi/linux (74 of 11068 files). Show all

Unified · Split

74 files
  1. include/uapi/linux/Kbuild +9 −0
  2. include/uapi/linux/android/binder.h +101 −3
  3. include/uapi/linux/audit.h +6 −1
  4. include/uapi/linux/auto_dev-ioctl.h +2 −8
  5. include/uapi/linux/auto_fs.h +18 −7
  6. include/uapi/linux/auto_fs4.h +11 −5
  7. include/uapi/linux/batman_adv.h +1 −1
  8. include/uapi/linux/bpf.h +22 −1
  9. include/uapi/linux/can/netlink.h +7 −0
  10. include/uapi/linux/devlink.h +8 −2
  11. include/uapi/linux/fcntl.h +5 −0
  12. include/uapi/linux/fs.h +1 −0
  13. include/uapi/linux/if.h +4 −0
  14. include/uapi/linux/if_bridge.h +11 −0
  15. include/uapi/linux/if_ether.h +1 −0
  16. include/uapi/linux/if_link.h +3 −0
  17. include/uapi/linux/ife.h +18 −0
  18. include/uapi/linux/igmp.h +2 −2
  19. include/uapi/linux/iio/types.h +1 −0
  20. include/uapi/linux/ip6_tunnel.h +2 −0
  21. include/uapi/linux/ipv6.h +1 −0
  22. include/uapi/linux/ipv6_route.h +1 −0
  23. include/uapi/linux/kvm.h +20 −1
  24. include/uapi/linux/kvm_para.h +2 −0
  25. include/uapi/linux/lightnvm.h +50 −0
  26. include/uapi/linux/llc.h +1 −0
  27. include/uapi/linux/mpls.h +30 −0
  28. include/uapi/linux/mqueue.h +2 −0
  29. include/uapi/linux/mroute.h +1 −0
  30. include/uapi/linux/mroute6.h +1 −0
  31. include/uapi/linux/neighbour.h +1 −0
  32. include/uapi/linux/netconf.h +1 −0
  33. include/uapi/linux/netfilter.h +0 −1
  34. include/uapi/linux/netfilter/nf_conntrack_common.h +4 −0
  35. include/uapi/linux/netfilter/nf_tables.h +31 −1
  36. include/uapi/linux/netfilter/nfnetlink.h +12 −0
  37. include/uapi/linux/netfilter/nfnetlink_queue.h +1 −1
  38. include/uapi/linux/netfilter/xt_hashlimit.h +1 −0
  39. include/uapi/linux/netlink.h +1 −0
  40. include/uapi/linux/nfsd/export.h +3 −2
  41. include/uapi/linux/nl80211.h +91 −33
  42. include/uapi/linux/nsfs.h +7 −2
  43. include/uapi/linux/openvswitch.h +30 −3
  44. include/uapi/linux/pci_regs.h +17 −0
  45. include/uapi/linux/pkt_cls.h +17 −56
  46. include/uapi/linux/psample.h +35 −0
  47. include/uapi/linux/rds.h +87 −53
  48. include/uapi/linux/rpmsg.h +35 −0
  49. include/uapi/linux/rtnetlink.h +3 −0
  50. include/uapi/linux/sched/types.h +74 −0
  51. include/uapi/linux/sctp.h +42 −0
  52. include/uapi/linux/sed-opal.h +119 −0
  53. include/uapi/linux/seg6.h +3 −0
  54. include/uapi/linux/seg6_hmac.h +1 −0
  55. include/uapi/linux/seg6_iptunnel.h +6 −0
  56. include/uapi/linux/serial_core.h +2 −1
  57. include/uapi/linux/serial_reg.h +8 −18
  58. include/uapi/linux/serio.h +4 −3
  59. include/uapi/linux/smc.h +35 −0
  60. include/uapi/linux/smc_diag.h +85 −0
  61. include/uapi/linux/snmp.h +1 −0
  62. include/uapi/linux/stat.h +131 −0
  63. include/uapi/linux/target_core_user.h +11 −11
  64. include/uapi/linux/tc_act/Kbuild +1 −0
  65. include/uapi/linux/tc_act/tc_csum.h +2 −1
  66. include/uapi/linux/tc_act/tc_ife.h +1 −9
  67. include/uapi/linux/tc_act/tc_pedit.h +31 −0
  68. include/uapi/linux/tc_act/tc_sample.h +26 −0
  69. include/uapi/linux/tcp.h +3 −0
  70. include/uapi/linux/tipc.h +4 −2
  71. include/uapi/linux/un.h +2 −0
  72. include/uapi/linux/userfaultfd.h +64 −9
  73. include/uapi/linux/virtio_mmio.h +141 −0
  74. include/uapi/linux/virtio_pci.h +1 −1
include/uapi/linux/Kbuild+9−0
@@ -64,6 +64,7 @@ header-y += auto_fs.h · 63 unmodified lines
6464 header-y += auxvec.h
6565 header-y += ax25.h
6666 header-y += b1lli.h
67+header-y += batman_adv.h
6768 header-y += baycom.h
6869 header-y += bcm933xx_hcs.h
6970 header-y += bfs_fs.h
@@ -109,6 +110,7 @@ header-y += dlm_netlink.h · 39 unmodified lines
109110 header-y += dlm_plock.h
110111 header-y += dm-ioctl.h
111112 header-y += dm-log-userspace.h
113+header-y += dma-buf.h
112114 header-y += dn.h
113115 header-y += dqblk_xfs.h
114116 header-y += edd.h
@@ -194,6 +196,7 @@ header-y += if_tun.h · 79 unmodified lines
194196 header-y += if_tunnel.h
195197 header-y += if_vlan.h
196198 header-y += if_x25.h
199+header-y += ife.h
197200 header-y += igmp.h
198201 header-y += ila.h
199202 header-y += in6.h
@@ -305,6 +308,7 @@ header-y += netrom.h · 105 unmodified lines
305308 header-y += net_namespace.h
306309 header-y += net_tstamp.h
307310 header-y += nfc.h
311+header-y += psample.h
308312 header-y += nfs2.h
309313 header-y += nfs3.h
310314 header-y += nfs4.h
@@ -379,6 +383,10 @@ header-y += sctp.h · 68 unmodified lines
379383 header-y += sdla.h
380384 header-y += seccomp.h
381385 header-y += securebits.h
386+header-y += seg6_genl.h
387+header-y += seg6.h
388+header-y += seg6_hmac.h
389+header-y += seg6_iptunnel.h
382390 header-y += selinux_netlink.h
383391 header-y += sem.h
384392 header-y += serial_core.h
@@ -458,6 +466,7 @@ header-y += virtio_console.h · 73 unmodified lines
458466 header-y += virtio_gpu.h
459467 header-y += virtio_ids.h
460468 header-y += virtio_input.h
469+header-y += virtio_mmio.h
461470 header-y += virtio_net.h
462471 header-y += virtio_pci.h
463472 header-y += virtio_ring.h
include/uapi/linux/android/binder.h+101−3
@@ -33,6 +33,8 @@ enum { · 32 unmodified lines
3333 BINDER_TYPE_HANDLE = B_PACK_CHARS('s', 'h', '*', B_TYPE_LARGE),
3434 BINDER_TYPE_WEAK_HANDLE = B_PACK_CHARS('w', 'h', '*', B_TYPE_LARGE),
3535 BINDER_TYPE_FD = B_PACK_CHARS('f', 'd', '*', B_TYPE_LARGE),
36+ BINDER_TYPE_FDA = B_PACK_CHARS('f', 'd', 'a', B_TYPE_LARGE),
37+ BINDER_TYPE_PTR = B_PACK_CHARS('p', 't', '*', B_TYPE_LARGE),
3638 };
3739
3840 enum {
@@ -48,6 +50,14 @@ typedef __u64 binder_size_t; · 9 unmodified lines
4850 typedef __u64 binder_uintptr_t;
4951 #endif
5052
53+/**
54+ * struct binder_object_header - header shared by all binder metadata objects.
55+ * @type: type of the object
56+ */
57+struct binder_object_header {
58+ __u32 type;
59+};
60+
5161 /*
5262 * This is the flattened representation of a Binder object for transfer
5363 * between processes. The 'offsets' supplied as part of a binder transaction
@@ -56,9 +66,8 @@ typedef __u64 binder_uintptr_t; · 2 unmodified lines
5666 * between processes.
5767 */
5868 struct flat_binder_object {
59− /* 8 bytes for large_flat_header. */
60− __u32 type;
61− __u32 flags;
69+ struct binder_object_header hdr;
70+ __u32 flags;
6271
6372 /* 8 bytes of data. */
6473 union {
@@ -70,6 +79,84 @@ struct flat_binder_object { · 5 unmodified lines
7079 binder_uintptr_t cookie;
7180 };
7281
82+/**
83+ * struct binder_fd_object - describes a filedescriptor to be fixed up.
84+ * @hdr: common header structure
85+ * @pad_flags: padding to remain compatible with old userspace code
86+ * @pad_binder: padding to remain compatible with old userspace code
87+ * @fd: file descriptor
88+ * @cookie: opaque data, used by user-space
89+ */
90+struct binder_fd_object {
91+ struct binder_object_header hdr;
92+ __u32 pad_flags;
93+ union {
94+ binder_uintptr_t pad_binder;
95+ __u32 fd;
96+ };
97+
98+ binder_uintptr_t cookie;
99+};
100+
101+/* struct binder_buffer_object - object describing a userspace buffer
102+ * @hdr: common header structure
103+ * @flags: one or more BINDER_BUFFER_* flags
104+ * @buffer: address of the buffer
105+ * @length: length of the buffer
106+ * @parent: index in offset array pointing to parent buffer
107+ * @parent_offset: offset in @parent pointing to this buffer
108+ *
109+ * A binder_buffer object represents an object that the
110+ * binder kernel driver can copy verbatim to the target
111+ * address space. A buffer itself may be pointed to from
112+ * within another buffer, meaning that the pointer inside
113+ * that other buffer needs to be fixed up as well. This
114+ * can be done by setting the BINDER_BUFFER_FLAG_HAS_PARENT
115+ * flag in @flags, by setting @parent buffer to the index
116+ * in the offset array pointing to the parent binder_buffer_object,
117+ * and by setting @parent_offset to the offset in the parent buffer
118+ * at which the pointer to this buffer is located.
119+ */
120+struct binder_buffer_object {
121+ struct binder_object_header hdr;
122+ __u32 flags;
123+ binder_uintptr_t buffer;
124+ binder_size_t length;
125+ binder_size_t parent;
126+ binder_size_t parent_offset;
127+};
128+
129+enum {
130+ BINDER_BUFFER_FLAG_HAS_PARENT = 0x01,
131+};
132+
133+/* struct binder_fd_array_object - object describing an array of fds in a buffer
134+ * @hdr: common header structure
135+ * @num_fds: number of file descriptors in the buffer
136+ * @parent: index in offset array to buffer holding the fd array
137+ * @parent_offset: start offset of fd array in the buffer
138+ *
139+ * A binder_fd_array object represents an array of file
140+ * descriptors embedded in a binder_buffer_object. It is
141+ * different from a regular binder_buffer_object because it
142+ * describes a list of file descriptors to fix up, not an opaque
143+ * blob of memory, and hence the kernel needs to treat it differently.
144+ *
145+ * An example of how this would be used is with Android's
146+ * native_handle_t object, which is a struct with a list of integers
147+ * and a list of file descriptors. The native_handle_t struct itself
148+ * will be represented by a struct binder_buffer_objct, whereas the
149+ * embedded list of file descriptors is represented by a
150+ * struct binder_fd_array_object with that binder_buffer_object as
151+ * a parent.
152+ */
153+struct binder_fd_array_object {
154+ struct binder_object_header hdr;
155+ binder_size_t num_fds;
156+ binder_size_t parent;
157+ binder_size_t parent_offset;
158+};
159+
73160 /*
74161 * On 64-bit platforms where user code may run in 32-bits the driver must
75162 * translate the buffer (and local binder) addresses appropriately.
@@ -162,6 +249,11 @@ struct binder_transaction_data { · 86 unmodified lines
162249 } data;
163250 };
164251
252+struct binder_transaction_data_sg {
253+ struct binder_transaction_data transaction_data;
254+ binder_size_t buffers_size;
255+};
256+
165257 struct binder_ptr_cookie {
166258 binder_uintptr_t ptr;
167259 binder_uintptr_t cookie;
@@ -346,6 +438,12 @@ enum binder_driver_command_protocol { · 178 unmodified lines
346438 /*
347439 * void *: cookie
348440 */
441+
442+ BC_TRANSACTION_SG = _IOW('c', 17, struct binder_transaction_data_sg),
443+ BC_REPLY_SG = _IOW('c', 18, struct binder_transaction_data_sg),
444+ /*
445+ * binder_transaction_data_sg: the sent command.
446+ */
349447 };
350448
351449 #endif /* _UAPI_LINUX_BINDER_H */
include/uapi/linux/audit.h+6−1
@@ -111,6 +111,7 @@ · 110 unmodified lines
111111 #define AUDIT_PROCTITLE 1327 /* Proctitle emit event */
112112 #define AUDIT_FEATURE_CHANGE 1328 /* audit log listing feature changes */
113113 #define AUDIT_REPLACE 1329 /* Replace auditd if this packet unanswerd */
114+#define AUDIT_KERN_MODULE 1330 /* Kernel Module events */
114115
115116 #define AUDIT_AVC 1400 /* SE Linux avc denial or grant */
116117 #define AUDIT_SELINUX_ERR 1401 /* Internal SE Linux Errors */
@@ -326,17 +327,21 @@ enum { · 209 unmodified lines
326327 #define AUDIT_STATUS_RATE_LIMIT 0x0008
327328 #define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
328329 #define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
330+#define AUDIT_STATUS_LOST 0x0040
329331
330332 #define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT 0x00000001
331333 #define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
332334 #define AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH 0x00000004
333335 #define AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND 0x00000008
334336 #define AUDIT_FEATURE_BITMAP_SESSIONID_FILTER 0x00000010
337+#define AUDIT_FEATURE_BITMAP_LOST_RESET 0x00000020
338+
335339 #define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | \
336340 AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | \
337341 AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | \
338342 AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | \
339− AUDIT_FEATURE_BITMAP_SESSIONID_FILTER)
343+ AUDIT_FEATURE_BITMAP_SESSIONID_FILTER | \
344+ AUDIT_FEATURE_BITMAP_LOST_RESET)
340345
341346 /* deprecated: AUDIT_VERSION_* */
342347 #define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
include/uapi/linux/auto_dev-ioctl.h+2−8
@@ -113,17 +113,13 @@ struct autofs_dev_ioctl { · 112 unmodified lines
113113
114114 static inline void init_autofs_dev_ioctl(struct autofs_dev_ioctl *in)
115115 {
116− memset(in, 0, sizeof(struct autofs_dev_ioctl));
116+ memset(in, 0, AUTOFS_DEV_IOCTL_SIZE);
117117 in->ver_major = AUTOFS_DEV_IOCTL_VERSION_MAJOR;
118118 in->ver_minor = AUTOFS_DEV_IOCTL_VERSION_MINOR;
119− in->size = sizeof(struct autofs_dev_ioctl);
119+ in->size = AUTOFS_DEV_IOCTL_SIZE;
120120 in->ioctlfd = -1;
121121 }
122122
123−/*
124− * If you change this make sure you make the corresponding change
125− * to autofs-dev-ioctl.c:lookup_ioctl()
126− */
127123 enum {
128124 /* Get various version info */
129125 AUTOFS_DEV_IOCTL_VERSION_CMD = 0x71,
@@ -160,8 +156,6 @@ enum { · 30 unmodified lines
160156 AUTOFS_DEV_IOCTL_ISMOUNTPOINT_CMD,
161157 };
162158
163−#define AUTOFS_IOCTL 0x93
164−
165159 #define AUTOFS_DEV_IOCTL_VERSION \
166160 _IOWR(AUTOFS_IOCTL, \
167161 AUTOFS_DEV_IOCTL_VERSION_CMD, struct autofs_dev_ioctl)
include/uapi/linux/auto_fs.h+18−7
@@ -61,12 +61,23 @@ struct autofs_packet_expire { · 60 unmodified lines
6161 char name[NAME_MAX+1];
6262 };
6363
64−#define AUTOFS_IOC_READY _IO(0x93, 0x60)
65−#define AUTOFS_IOC_FAIL _IO(0x93, 0x61)
66−#define AUTOFS_IOC_CATATONIC _IO(0x93, 0x62)
67−#define AUTOFS_IOC_PROTOVER _IOR(0x93, 0x63, int)
68−#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(0x93, 0x64, compat_ulong_t)
69−#define AUTOFS_IOC_SETTIMEOUT _IOWR(0x93, 0x64, unsigned long)
70−#define AUTOFS_IOC_EXPIRE _IOR(0x93, 0x65, struct autofs_packet_expire)
64+#define AUTOFS_IOCTL 0x93
65+
66+enum {
67+ AUTOFS_IOC_READY_CMD = 0x60,
68+ AUTOFS_IOC_FAIL_CMD,
69+ AUTOFS_IOC_CATATONIC_CMD,
70+ AUTOFS_IOC_PROTOVER_CMD,
71+ AUTOFS_IOC_SETTIMEOUT_CMD,
72+ AUTOFS_IOC_EXPIRE_CMD,
73+};
74+
75+#define AUTOFS_IOC_READY _IO(AUTOFS_IOCTL, AUTOFS_IOC_READY_CMD)
76+#define AUTOFS_IOC_FAIL _IO(AUTOFS_IOCTL, AUTOFS_IOC_FAIL_CMD)
77+#define AUTOFS_IOC_CATATONIC _IO(AUTOFS_IOCTL, AUTOFS_IOC_CATATONIC_CMD)
78+#define AUTOFS_IOC_PROTOVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOVER_CMD, int)
79+#define AUTOFS_IOC_SETTIMEOUT32 _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, compat_ulong_t)
80+#define AUTOFS_IOC_SETTIMEOUT _IOWR(AUTOFS_IOCTL, AUTOFS_IOC_SETTIMEOUT_CMD, unsigned long)
81+#define AUTOFS_IOC_EXPIRE _IOR(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_CMD, struct autofs_packet_expire)
7182
7283 #endif /* _UAPI_LINUX_AUTO_FS_H */
include/uapi/linux/auto_fs4.h+11−5
@@ -148,10 +148,16 @@ union autofs_v5_packet_union { · 147 unmodified lines
148148 autofs_packet_expire_direct_t expire_direct;
149149 };
150150
151−#define AUTOFS_IOC_EXPIRE_MULTI _IOW(0x93, 0x66, int)
152−#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
153−#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
154−#define AUTOFS_IOC_PROTOSUBVER _IOR(0x93, 0x67, int)
155−#define AUTOFS_IOC_ASKUMOUNT _IOR(0x93, 0x70, int)
151+enum {
152+ AUTOFS_IOC_EXPIRE_MULTI_CMD = 0x66, /* AUTOFS_IOC_EXPIRE_CMD + 1 */
153+ AUTOFS_IOC_PROTOSUBVER_CMD,
154+ AUTOFS_IOC_ASKUMOUNT_CMD = 0x70, /* AUTOFS_DEV_IOCTL_VERSION_CMD - 1 */
155+};
156+
157+#define AUTOFS_IOC_EXPIRE_MULTI _IOW(AUTOFS_IOCTL, AUTOFS_IOC_EXPIRE_MULTI_CMD, int)
158+#define AUTOFS_IOC_EXPIRE_INDIRECT AUTOFS_IOC_EXPIRE_MULTI
159+#define AUTOFS_IOC_EXPIRE_DIRECT AUTOFS_IOC_EXPIRE_MULTI
160+#define AUTOFS_IOC_PROTOSUBVER _IOR(AUTOFS_IOCTL, AUTOFS_IOC_PROTOSUBVER_CMD, int)
161+#define AUTOFS_IOC_ASKUMOUNT _IOR(AUTOFS_IOCTL, AUTOFS_IOC_ASKUMOUNT_CMD, int)
156162
157163 #endif /* _LINUX_AUTO_FS4_H */
include/uapi/linux/batman_adv.h+1−1
@@ -1,4 +1,4 @@
1−/* Copyright (C) 2016 B.A.T.M.A.N. contributors:
1+/* Copyright (C) 2016-2017 B.A.T.M.A.N. contributors:
22 *
33 * Matthias Schiffer
44 *
include/uapi/linux/bpf.h+22−1
@@ -63,6 +63,12 @@ struct bpf_insn { · 62 unmodified lines
6363 __s32 imm; /* signed immediate constant */
6464 };
6565
66+/* Key of an a BPF_MAP_TYPE_LPM_TRIE entry */
67+struct bpf_lpm_trie_key {
68+ __u32 prefixlen; /* up to 32 for AF_INET, 128 for AF_INET6 */
69+ __u8 data[0]; /* Arbitrary size */
70+};
71+
6672 /* BPF syscall commands, see bpf(2) man-page for details. */
6773 enum bpf_cmd {
6874 BPF_MAP_CREATE,
@@ -89,6 +95,7 @@ enum bpf_map_type { · 20 unmodified lines
8995 BPF_MAP_TYPE_CGROUP_ARRAY,
9096 BPF_MAP_TYPE_LRU_HASH,
9197 BPF_MAP_TYPE_LRU_PERCPU_HASH,
98+ BPF_MAP_TYPE_LPM_TRIE,
9299 };
93100
94101 enum bpf_prog_type {
@@ -437,6 +444,18 @@ union bpf_attr { · 342 unmodified lines
437444 * @xdp_md: pointer to xdp_md
438445 * @delta: An positive/negative integer to be added to xdp_md.data
439446 * Return: 0 on success or negative on error
447+ *
448+ * int bpf_probe_read_str(void *dst, int size, const void *unsafe_ptr)
449+ * Copy a NUL terminated string from unsafe address. In case the string
450+ * length is smaller than size, the target is not padded with further NUL
451+ * bytes. In case the string length is larger than size, just count-1
452+ * bytes are copied and the last byte is set to NUL.
453+ * @dst: destination address
454+ * @size: maximum number of bytes to copy, including the trailing NUL
455+ * @unsafe_ptr: unsafe address
456+ * Return:
457+ * > 0 length of the string including the trailing NUL on success
458+ * < 0 error
440459 */
441460 #define __BPF_FUNC_MAPPER(FN) \
442461 FN(unspec), \
@@ -483,7 +502,8 @@ union bpf_attr { · 40 unmodified lines
483502 FN(set_hash_invalid), \
484503 FN(get_numa_node_id), \
485504 FN(skb_change_head), \
486− FN(xdp_adjust_head),
505+ FN(xdp_adjust_head), \
506+ FN(probe_read_str),
487507
488508 /* integer value in 'imm' field of BPF_CALL instruction selects which helper
489509 * function eBPF program intends to call
@@ -509,6 +529,7 @@ enum bpf_func_id { · 19 unmodified lines
509529 /* BPF_FUNC_l4_csum_replace flags. */
510530 #define BPF_F_PSEUDO_HDR (1ULL << 4)
511531 #define BPF_F_MARK_MANGLED_0 (1ULL << 5)
532+#define BPF_F_MARK_ENFORCE (1ULL << 6)
512533
513534 /* BPF_FUNC_clone_redirect and BPF_FUNC_redirect flags. */
514535 #define BPF_F_INGRESS (1ULL << 0)
include/uapi/linux/can/netlink.h+7−0
@@ -127,9 +127,16 @@ enum { · 126 unmodified lines
127127 IFLA_CAN_BERR_COUNTER,
128128 IFLA_CAN_DATA_BITTIMING,
129129 IFLA_CAN_DATA_BITTIMING_CONST,
130+ IFLA_CAN_TERMINATION,
131+ IFLA_CAN_TERMINATION_CONST,
132+ IFLA_CAN_BITRATE_CONST,
133+ IFLA_CAN_DATA_BITRATE_CONST,
130134 __IFLA_CAN_MAX
131135 };
132136
133137 #define IFLA_CAN_MAX (__IFLA_CAN_MAX - 1)
134138
139+/* u16 termination range: 1..65535 Ohms */
140+#define CAN_TERMINATION_DISABLED 0
141+
135142 #endif /* !_UAPI_CAN_NETLINK_H */
include/uapi/linux/devlink.h+8−2
@@ -57,8 +57,14 @@ enum devlink_command { · 56 unmodified lines
5757 DEVLINK_CMD_SB_OCC_SNAPSHOT,
5858 DEVLINK_CMD_SB_OCC_MAX_CLEAR,
5959
60− DEVLINK_CMD_ESWITCH_MODE_GET,
61− DEVLINK_CMD_ESWITCH_MODE_SET,
60+ DEVLINK_CMD_ESWITCH_GET,
61+#define DEVLINK_CMD_ESWITCH_MODE_GET /* obsolete, never use this! */ \
62+ DEVLINK_CMD_ESWITCH_GET
63+
64+ DEVLINK_CMD_ESWITCH_SET,
65+#define DEVLINK_CMD_ESWITCH_MODE_SET /* obsolete, never use this! */ \
66+ DEVLINK_CMD_ESWITCH_SET
67+
6268 /* add new commands above here */
6369
6470 __DEVLINK_CMD_MAX,
include/uapi/linux/fcntl.h+5−0
@@ -63,5 +63,10 @@ · 62 unmodified lines
6363 #define AT_NO_AUTOMOUNT 0x800 /* Suppress terminal automount traversal */
6464 #define AT_EMPTY_PATH 0x1000 /* Allow empty relative pathname */
6565
66+#define AT_STATX_SYNC_TYPE 0x6000 /* Type of synchronisation required from statx() */
67+#define AT_STATX_SYNC_AS_STAT 0x0000 /* - Do whatever stat() does */
68+#define AT_STATX_FORCE_SYNC 0x2000 /* - Force the attributes to be sync'd with the server */
69+#define AT_STATX_DONT_SYNC 0x4000 /* - Don't sync attributes with the server */
70+
6671
6772 #endif /* _UAPI_LINUX_FCNTL_H */
include/uapi/linux/fs.h+1−0
@@ -132,6 +132,7 @@ struct inodes_stat_t { · 131 unmodified lines
132132 #define MS_LAZYTIME (1<<25) /* Update the on-disk [acm]times lazily */
133133
134134 /* These sb flags are internal to the kernel */
135+#define MS_SUBMOUNT (1<<26)
135136 #define MS_NOREMOTELOCK (1<<27)
136137 #define MS_NOSEC (1<<28)
137138 #define MS_BORN (1<<29)
include/uapi/linux/if.h+4−0
@@ -24,6 +24,10 @@ · 23 unmodified lines
2424 #include <linux/socket.h> /* for "struct sockaddr" et al */
2525 #include <linux/compiler.h> /* for "__user" et al */
2626
27+#ifndef __KERNEL__
28+#include <sys/socket.h> /* for struct sockaddr. */
29+#endif
30+
2731 #if __UAPI_DEF_IF_IFNAMSIZ
2832 #define IFNAMSIZ 16
2933 #endif /* __UAPI_DEF_IF_IFNAMSIZ */
include/uapi/linux/if_bridge.h+11−0
@@ -118,6 +118,7 @@ enum { · 117 unmodified lines
118118 IFLA_BRIDGE_FLAGS,
119119 IFLA_BRIDGE_MODE,
120120 IFLA_BRIDGE_VLAN_INFO,
121+ IFLA_BRIDGE_VLAN_TUNNEL_INFO,
121122 __IFLA_BRIDGE_MAX,
122123 };
123124 #define IFLA_BRIDGE_MAX (__IFLA_BRIDGE_MAX - 1)
@@ -134,6 +135,16 @@ struct bridge_vlan_info { · 10 unmodified lines
134135 __u16 vid;
135136 };
136137
138+enum {
139+ IFLA_BRIDGE_VLAN_TUNNEL_UNSPEC,
140+ IFLA_BRIDGE_VLAN_TUNNEL_ID,
141+ IFLA_BRIDGE_VLAN_TUNNEL_VID,
142+ IFLA_BRIDGE_VLAN_TUNNEL_FLAGS,
143+ __IFLA_BRIDGE_VLAN_TUNNEL_MAX,
144+};
145+
146+#define IFLA_BRIDGE_VLAN_TUNNEL_MAX (__IFLA_BRIDGE_VLAN_TUNNEL_MAX - 1)
147+
137148 struct bridge_vlan_xstats {
138149 __u64 rx_bytes;
139150 __u64 rx_packets;
include/uapi/linux/if_ether.h+1−0
@@ -93,6 +93,7 @@ · 92 unmodified lines
9393 #define ETH_P_NCSI 0x88F8 /* NCSI protocol */
9494 #define ETH_P_PRP 0x88FB /* IEC 62439-3 PRP/HSRv0 */
9595 #define ETH_P_FCOE 0x8906 /* Fibre Channel over Ethernet */
96+#define ETH_P_IBOE 0x8915 /* Infiniband over Ethernet */
9697 #define ETH_P_TDLS 0x890D /* TDLS */
9798 #define ETH_P_FIP 0x8914 /* FCoE Initialization Protocol */
9899 #define ETH_P_80221 0x8917 /* IEEE 802.21 Media Independent Handover Protocol */
include/uapi/linux/if_link.h+3−0
@@ -321,6 +321,8 @@ enum { · 320 unmodified lines
321321 IFLA_BRPORT_MULTICAST_ROUTER,
322322 IFLA_BRPORT_PAD,
323323 IFLA_BRPORT_MCAST_FLOOD,
324+ IFLA_BRPORT_MCAST_TO_UCAST,
325+ IFLA_BRPORT_VLAN_TUNNEL,
324326 __IFLA_BRPORT_MAX
325327 };
326328 #define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -847,6 +849,7 @@ enum { · 520 unmodified lines
847849 IFLA_STATS_LINK_XSTATS,
848850 IFLA_STATS_LINK_XSTATS_SLAVE,
849851 IFLA_STATS_LINK_OFFLOAD_XSTATS,
852+ IFLA_STATS_AF_SPEC,
850853 __IFLA_STATS_MAX,
851854 };
852855
include/uapi/linux/ife.h+18−0
@@ -0,0 +1,18 @@
1+#ifndef __UAPI_IFE_H
2+#define __UAPI_IFE_H
3+
4+#define IFE_METAHDRLEN 2
5+
6+enum {
7+ IFE_META_SKBMARK = 1,
8+ IFE_META_HASHID,
9+ IFE_META_PRIO,
10+ IFE_META_QMAP,
11+ IFE_META_TCINDEX,
12+ __IFE_META_MAX
13+};
14+
15+/*Can be overridden at runtime by module option*/
16+#define IFE_META_MAX (__IFE_META_MAX - 1)
17+
18+#endif
include/uapi/linux/igmp.h+2−2
@@ -53,7 +53,7 @@ struct igmpv3_grec { · 52 unmodified lines
5353 struct igmpv3_report {
5454 __u8 type;
5555 __u8 resv1;
56− __be16 csum;
56+ __sum16 csum;
5757 __be16 resv2;
5858 __be16 ngrec;
5959 struct igmpv3_grec grec[0];
@@ -62,7 +62,7 @@ struct igmpv3_report { · 2 unmodified lines
6262 struct igmpv3_query {
6363 __u8 type;
6464 __u8 code;
65− __be16 csum;
65+ __sum16 csum;
6666 __be32 group;
6767 #if defined(__LITTLE_ENDIAN_BITFIELD)
6868 __u8 qrv:3,
include/uapi/linux/iio/types.h+1−0
@@ -42,6 +42,7 @@ enum iio_chan_type { · 41 unmodified lines
4242 IIO_ELECTRICALCONDUCTIVITY,
4343 IIO_COUNT,
4444 IIO_INDEX,
45+ IIO_GRAVITY,
4546 };
4647
4748 enum iio_modifier {
include/uapi/linux/ip6_tunnel.h+2−0
@@ -2,6 +2,8 @@ · 1 unmodified line
22 #define _IP6_TUNNEL_H
33
44 #include <linux/types.h>
5+#include <linux/if.h> /* For IFNAMSIZ. */
6+#include <linux/in6.h> /* For struct in6_addr. */
57
68 #define IPV6_TLV_TNL_ENCAP_LIMIT 4
79 #define IPV6_DEFAULT_TNL_ENCAP_LIMIT 4
include/uapi/linux/ipv6.h+1−0
@@ -182,6 +182,7 @@ enum { · 181 unmodified lines
182182 DEVCONF_SEG6_ENABLED,
183183 DEVCONF_SEG6_REQUIRE_HMAC,
184184 DEVCONF_ENHANCED_DAD,
185+ DEVCONF_ADDR_GEN_MODE,
185186 DEVCONF_MAX
186187 };
187188
include/uapi/linux/ipv6_route.h+1−0
@@ -14,6 +14,7 @@ · 13 unmodified lines
1414 #define _UAPI_LINUX_IPV6_ROUTE_H
1515
1616 #include <linux/types.h>
17+#include <linux/in6.h> /* For struct in6_addr. */
1718
1819 #define RTF_DEFAULT 0x00010000 /* default - learned via ND */
1920 #define RTF_ALLONLINK 0x00020000 /* (deprecated and will be removed)
include/uapi/linux/kvm.h+20−1
@@ -218,7 +218,8 @@ struct kvm_hyperv_exit { · 217 unmodified lines
218218 struct kvm_run {
219219 /* in */
220220 __u8 request_interrupt_window;
221− __u8 padding1[7];
221+ __u8 immediate_exit;
222+ __u8 padding1[6];
222223
223224 /* out */
224225 __u32 exit_reason;
@@ -685,6 +686,13 @@ struct kvm_ppc_smmu_info { · 460 unmodified lines
685686 struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
686687 };
687688
689+/* for KVM_PPC_RESIZE_HPT_{PREPARE,COMMIT} */
690+struct kvm_ppc_resize_hpt {
691+ __u64 flags;
692+ __u32 shift;
693+ __u32 pad;
694+};
695+
688696 #define KVMIO 0xAE
689697
690698 /* machine type bits, to be used as argument to KVM_CREATE_VM */
@@ -871,6 +879,10 @@ struct kvm_ppc_smmu_info { · 180 unmodified lines
871879 #define KVM_CAP_S390_USER_INSTR0 130
872880 #define KVM_CAP_MSI_DEVID 131
873881 #define KVM_CAP_PPC_HTM 132
882+#define KVM_CAP_SPAPR_RESIZE_HPT 133
883+#define KVM_CAP_PPC_MMU_RADIX 134
884+#define KVM_CAP_PPC_MMU_HASH_V3 135
885+#define KVM_CAP_IMMEDIATE_EXIT 136
874886
875887 #ifdef KVM_CAP_IRQ_ROUTING
876888
@@ -1187,6 +1199,13 @@ struct kvm_s390_ucas_mapping { · 310 unmodified lines
11871199 #define KVM_ARM_SET_DEVICE_ADDR _IOW(KVMIO, 0xab, struct kvm_arm_device_addr)
11881200 /* Available with KVM_CAP_PPC_RTAS */
11891201 #define KVM_PPC_RTAS_DEFINE_TOKEN _IOW(KVMIO, 0xac, struct kvm_rtas_token_args)
1202+/* Available with KVM_CAP_SPAPR_RESIZE_HPT */
1203+#define KVM_PPC_RESIZE_HPT_PREPARE _IOR(KVMIO, 0xad, struct kvm_ppc_resize_hpt)
1204+#define KVM_PPC_RESIZE_HPT_COMMIT _IOR(KVMIO, 0xae, struct kvm_ppc_resize_hpt)
1205+/* Available with KVM_CAP_PPC_RADIX_MMU or KVM_CAP_PPC_HASH_MMU_V3 */
1206+#define KVM_PPC_CONFIGURE_V3_MMU _IOW(KVMIO, 0xaf, struct kvm_ppc_mmuv3_cfg)
1207+/* Available with KVM_CAP_PPC_RADIX_MMU */
1208+#define KVM_PPC_GET_RMMU_INFO _IOW(KVMIO, 0xb0, struct kvm_ppc_rmmu_info)
11901209
11911210 /* ioctl for vm fd */
11921211 #define KVM_CREATE_DEVICE _IOWR(KVMIO, 0xe0, struct kvm_create_device)
include/uapi/linux/kvm_para.h+2−0
@@ -14,6 +14,7 @@ · 13 unmodified lines
1414 #define KVM_EFAULT EFAULT
1515 #define KVM_E2BIG E2BIG
1616 #define KVM_EPERM EPERM
17+#define KVM_EOPNOTSUPP 95
1718
1819 #define KVM_HC_VAPIC_POLL_IRQ 1
1920 #define KVM_HC_MMU_OP 2
@@ -23,6 +24,7 @@ · 3 unmodified lines
2324 #define KVM_HC_MIPS_GET_CLOCK_FREQ 6
2425 #define KVM_HC_MIPS_EXIT_VM 7
2526 #define KVM_HC_MIPS_CONSOLE_OUTPUT 8
27+#define KVM_HC_CLOCK_PAIRING 9
2628
2729 /*
2830 * hypercalls use architecture specific
include/uapi/linux/lightnvm.h+50−0
@@ -122,6 +122,44 @@ struct nvm_ioctl_dev_factory { · 121 unmodified lines
122122 __u32 flags;
123123 };
124124
125+struct nvm_user_vio {
126+ __u8 opcode;
127+ __u8 flags;
128+ __u16 control;
129+ __u16 nppas;
130+ __u16 rsvd;
131+ __u64 metadata;
132+ __u64 addr;
133+ __u64 ppa_list;
134+ __u32 metadata_len;
135+ __u32 data_len;
136+ __u64 status;
137+ __u32 result;
138+ __u32 rsvd3[3];
139+};
140+
141+struct nvm_passthru_vio {
142+ __u8 opcode;
143+ __u8 flags;
144+ __u8 rsvd[2];
145+ __u32 nsid;
146+ __u32 cdw2;
147+ __u32 cdw3;
148+ __u64 metadata;
149+ __u64 addr;
150+ __u32 metadata_len;
151+ __u32 data_len;
152+ __u64 ppa_list;
153+ __u16 nppas;
154+ __u16 control;
155+ __u32 cdw13;
156+ __u32 cdw14;
157+ __u32 cdw15;
158+ __u64 status;
159+ __u32 result;
160+ __u32 timeout_ms;
161+};
162+
125163 /* The ioctl type, 'L', 0x20 - 0x2F documented in ioctl-number.txt */
126164 enum {
127165 /* top level cmds */
@@ -137,6 +175,11 @@ enum { · 9 unmodified lines
137175
138176 /* Factory reset device */
139177 NVM_DEV_FACTORY_CMD,
178+
179+ /* Vector user I/O */
180+ NVM_DEV_VIO_ADMIN_CMD = 0x41,
181+ NVM_DEV_VIO_CMD = 0x42,
182+ NVM_DEV_VIO_USER_CMD = 0x43,
140183 };
141184
142185 #define NVM_IOCTL 'L' /* 0x4c */
@@ -154,6 +197,13 @@ enum { · 11 unmodified lines
154197 #define NVM_DEV_FACTORY _IOW(NVM_IOCTL, NVM_DEV_FACTORY_CMD, \
155198 struct nvm_ioctl_dev_factory)
156199
200+#define NVME_NVM_IOCTL_IO_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_USER_CMD, \
201+ struct nvm_passthru_vio)
202+#define NVME_NVM_IOCTL_ADMIN_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_ADMIN_CMD,\
203+ struct nvm_passthru_vio)
204+#define NVME_NVM_IOCTL_SUBMIT_VIO _IOWR(NVM_IOCTL, NVM_DEV_VIO_CMD,\
205+ struct nvm_user_vio)
206+
157207 #define NVM_VERSION_MAJOR 1
158208 #define NVM_VERSION_MINOR 0
159209 #define NVM_VERSION_PATCHLEVEL 0
include/uapi/linux/llc.h+1−0
@@ -14,6 +14,7 @@ · 13 unmodified lines
1414 #define _UAPI__LINUX_LLC_H
1515
1616 #include <linux/socket.h>
17+#include <linux/if.h> /* For IFHWADDRLEN. */
1718
1819 #define __LLC_SOCK_SIZE__ 16 /* sizeof(sockaddr_llc), word align. */
1920 struct sockaddr_llc {
include/uapi/linux/mpls.h+30−0
@@ -43,4 +43,34 @@ struct mpls_label { · 42 unmodified lines
4343
4444 #define MPLS_LABEL_FIRST_UNRESERVED 16 /* RFC3032 */
4545
46+/* These are embedded into IFLA_STATS_AF_SPEC:
47+ * [IFLA_STATS_AF_SPEC]
48+ * -> [AF_MPLS]
49+ * -> [MPLS_STATS_xxx]
50+ *
51+ * Attributes:
52+ * [MPLS_STATS_LINK] = {
53+ * struct mpls_link_stats
54+ * }
55+ */
56+enum {
57+ MPLS_STATS_UNSPEC, /* also used as 64bit pad attribute */
58+ MPLS_STATS_LINK,
59+ __MPLS_STATS_MAX,
60+};
61+
62+#define MPLS_STATS_MAX (__MPLS_STATS_MAX - 1)
63+
64+struct mpls_link_stats {
65+ __u64 rx_packets; /* total packets received */
66+ __u64 tx_packets; /* total packets transmitted */
67+ __u64 rx_bytes; /* total bytes received */
68+ __u64 tx_bytes; /* total bytes transmitted */
69+ __u64 rx_errors; /* bad packets received */
70+ __u64 tx_errors; /* packet transmit problems */
71+ __u64 rx_dropped; /* packet dropped on receive */
72+ __u64 tx_dropped; /* packet dropped on transmit */
73+ __u64 rx_noroute; /* no route for packet dest */
74+};
75+
4676 #endif /* _UAPI_MPLS_H */
include/uapi/linux/mqueue.h+2−0
@@ -18,6 +18,8 @@ · 17 unmodified lines
1818 #ifndef _LINUX_MQUEUE_H
1919 #define _LINUX_MQUEUE_H
2020
21+#include <linux/types.h>
22+
2123 #define MQ_PRIO_MAX 32768
2224 /* per-uid limit of kernel memory used by mqueue, in bytes */
2325 #define MQ_BYTES_MAX 819200
include/uapi/linux/mroute.h+1−0
@@ -3,6 +3,7 @@ · 2 unmodified lines
33
44 #include <linux/sockios.h>
55 #include <linux/types.h>
6+#include <linux/in.h> /* For struct in_addr. */
67
78 /* Based on the MROUTING 3.5 defines primarily to keep
89 * source compatibility with BSD.
include/uapi/linux/mroute6.h+1−0
@@ -4,6 +4,7 @@ · 3 unmodified lines
44 #include <linux/kernel.h>
55 #include <linux/types.h>
66 #include <linux/sockios.h>
7+#include <linux/in6.h> /* For struct sockaddr_in6. */
78
89 /*
910 * Based on the MROUTING 3.5 defines primarily to keep
include/uapi/linux/neighbour.h+1−0
@@ -26,6 +26,7 @@ enum { · 25 unmodified lines
2626 NDA_IFINDEX,
2727 NDA_MASTER,
2828 NDA_LINK_NETNSID,
29+ NDA_SRC_VNI,
2930 __NDA_MAX
3031 };
3132
include/uapi/linux/netconf.h+1−0
@@ -16,6 +16,7 @@ enum { · 15 unmodified lines
1616 NETCONFA_MC_FORWARDING,
1717 NETCONFA_PROXY_NEIGH,
1818 NETCONFA_IGNORE_ROUTES_WITH_LINKDOWN,
19+ NETCONFA_INPUT,
1920 __NETCONFA_MAX
2021 };
2122 #define NETCONFA_MAX (__NETCONFA_MAX - 1)
include/uapi/linux/netfilter.h+0−1
@@ -3,7 +3,6 @@ · 2 unmodified lines
33
44 #include <linux/types.h>
55 #include <linux/compiler.h>
6−#include <linux/sysctl.h>
76 #include <linux/in.h>
87 #include <linux/in6.h>
98
include/uapi/linux/netfilter/nf_conntrack_common.h+4−0
@@ -82,6 +82,10 @@ enum ip_conntrack_status { · 81 unmodified lines
8282 IPS_DYING_BIT = 9,
8383 IPS_DYING = (1 << IPS_DYING_BIT),
8484
85+ /* Bits that cannot be altered from userland. */
86+ IPS_UNCHANGEABLE_MASK = (IPS_NAT_DONE_MASK | IPS_NAT_MASK |
87+ IPS_EXPECTED | IPS_CONFIRMED | IPS_DYING),
88+
8589 /* Connection has fixed timeout. */
8690 IPS_FIXED_TIMEOUT_BIT = 10,
8791 IPS_FIXED_TIMEOUT = (1 << IPS_FIXED_TIMEOUT_BIT),
include/uapi/linux/netfilter/nf_tables.h+31−1
@@ -207,6 +207,7 @@ enum nft_chain_attributes { · 206 unmodified lines
207207 * @NFTA_RULE_COMPAT: compatibility specifications of the rule (NLA_NESTED: nft_rule_compat_attributes)
208208 * @NFTA_RULE_POSITION: numeric handle of the previous rule (NLA_U64)
209209 * @NFTA_RULE_USERDATA: user data (NLA_BINARY, NFT_USERDATA_MAXLEN)
210+ * @NFTA_RULE_ID: uniquely identifies a rule in a transaction (NLA_U32)
210211 */
211212 enum nft_rule_attributes {
212213 NFTA_RULE_UNSPEC,
@@ -218,6 +219,7 @@ enum nft_rule_attributes { · 5 unmodified lines
218219 NFTA_RULE_POSITION,
219220 NFTA_RULE_USERDATA,
220221 NFTA_RULE_PAD,
222+ NFTA_RULE_ID,
221223 __NFTA_RULE_MAX
222224 };
223225 #define NFTA_RULE_MAX (__NFTA_RULE_MAX - 1)
@@ -704,13 +706,32 @@ enum nft_payload_attributes { · 480 unmodified lines
704706 };
705707 #define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
706708
709+enum nft_exthdr_flags {
710+ NFT_EXTHDR_F_PRESENT = (1 << 0),
711+};
712+
713+/**
714+ * enum nft_exthdr_op - nf_tables match options
715+ *
716+ * @NFT_EXTHDR_OP_IPV6: match against ipv6 extension headers
717+ * @NFT_EXTHDR_OP_TCP: match against tcp options
718+ */
719+enum nft_exthdr_op {
720+ NFT_EXTHDR_OP_IPV6,
721+ NFT_EXTHDR_OP_TCPOPT,
722+ __NFT_EXTHDR_OP_MAX
723+};
724+#define NFT_EXTHDR_OP_MAX (__NFT_EXTHDR_OP_MAX - 1)
725+
707726 /**
708− * enum nft_exthdr_attributes - nf_tables IPv6 extension header expression netlink attributes
727+ * enum nft_exthdr_attributes - nf_tables extension header expression netlink attributes
709728 *
710729 * @NFTA_EXTHDR_DREG: destination register (NLA_U32: nft_registers)
711730 * @NFTA_EXTHDR_TYPE: extension header type (NLA_U8)
712731 * @NFTA_EXTHDR_OFFSET: extension header offset (NLA_U32)
713732 * @NFTA_EXTHDR_LEN: extension header length (NLA_U32)
733+ * @NFTA_EXTHDR_FLAGS: extension header flags (NLA_U32)
734+ * @NFTA_EXTHDR_OP: option match type (NLA_U8)
714735 */
715736 enum nft_exthdr_attributes {
716737 NFTA_EXTHDR_UNSPEC,
@@ -718,6 +739,8 @@ enum nft_exthdr_attributes { · 1 unmodified line
718739 NFTA_EXTHDR_TYPE,
719740 NFTA_EXTHDR_OFFSET,
720741 NFTA_EXTHDR_LEN,
742+ NFTA_EXTHDR_FLAGS,
743+ NFTA_EXTHDR_OP,
721744 __NFTA_EXTHDR_MAX
722745 };
723746 #define NFTA_EXTHDR_MAX (__NFTA_EXTHDR_MAX - 1)
@@ -860,6 +883,11 @@ enum nft_rt_attributes { · 136 unmodified lines
860883 * @NFT_CT_PROTOCOL: conntrack layer 4 protocol
861884 * @NFT_CT_PROTO_SRC: conntrack layer 4 protocol source
862885 * @NFT_CT_PROTO_DST: conntrack layer 4 protocol destination
886+ * @NFT_CT_LABELS: conntrack labels
887+ * @NFT_CT_PKTS: conntrack packets
888+ * @NFT_CT_BYTES: conntrack bytes
889+ * @NFT_CT_AVGPKT: conntrack average bytes per packet
890+ * @NFT_CT_ZONE: conntrack zone
863891 */
864892 enum nft_ct_keys {
865893 NFT_CT_STATE,
@@ -878,6 +906,8 @@ enum nft_ct_keys { · 12 unmodified lines
878906 NFT_CT_LABELS,
879907 NFT_CT_PKTS,
880908 NFT_CT_BYTES,
909+ NFT_CT_AVGPKT,
910+ NFT_CT_ZONE,
881911 };
882912
883913 /**
include/uapi/linux/netfilter/nfnetlink.h+12−0
@@ -65,4 +65,16 @@ struct nfgenmsg { · 64 unmodified lines
6565 #define NFNL_MSG_BATCH_BEGIN NLMSG_MIN_TYPE
6666 #define NFNL_MSG_BATCH_END NLMSG_MIN_TYPE+1
6767
68+/**
69+ * enum nfnl_batch_attributes - nfnetlink batch netlink attributes
70+ *
71+ * @NFNL_BATCH_GENID: generation ID for this changeset (NLA_U32)
72+ */
73+enum nfnl_batch_attributes {
74+ NFNL_BATCH_UNSPEC,
75+ NFNL_BATCH_GENID,
76+ __NFNL_BATCH_MAX
77+};
78+#define NFNL_BATCH_MAX (__NFNL_BATCH_MAX - 1)
79+
6880 #endif /* _UAPI_NFNETLINK_H */
include/uapi/linux/netfilter/nfnetlink_queue.h+1−1
@@ -36,7 +36,7 @@ enum nfqnl_vlan_attr { · 35 unmodified lines
3636 NFQA_VLAN_TCI, /* __be16 skb htons(vlan_tci) */
3737 __NFQA_VLAN_MAX,
3838 };
39−#define NFQA_VLAN_MAX (__NFQA_VLAN_MAX + 1)
39+#define NFQA_VLAN_MAX (__NFQA_VLAN_MAX - 1)
4040
4141 enum nfqnl_attr_type {
4242 NFQA_UNSPEC,
include/uapi/linux/netfilter/xt_hashlimit.h+1−0
@@ -2,6 +2,7 @@ · 1 unmodified line
22 #define _UAPI_XT_HASHLIMIT_H
33
44 #include <linux/types.h>
5+#include <linux/limits.h>
56 #include <linux/if.h>
67
78 /* timings are in milliseconds. */
include/uapi/linux/netlink.h+1−0
@@ -27,6 +27,7 @@ · 26 unmodified lines
2727 #define NETLINK_ECRYPTFS 19
2828 #define NETLINK_RDMA 20
2929 #define NETLINK_CRYPTO 21 /* Crypto layer */
30+#define NETLINK_SMC 22 /* SMC monitoring */
3031
3132 #define NETLINK_INET_DIAG NETLINK_SOCK_DIAG
3233
include/uapi/linux/nfsd/export.h+3−2
@@ -32,7 +32,8 @@ · 31 unmodified lines
3232 #define NFSEXP_ASYNC 0x0010
3333 #define NFSEXP_GATHERED_WRITES 0x0020
3434 #define NFSEXP_NOREADDIRPLUS 0x0040
35−/* 80 100 currently unused */
35+#define NFSEXP_SECURITY_LABEL 0x0080
36+/* 0x100 currently unused */
3637 #define NFSEXP_NOHIDE 0x0200
3738 #define NFSEXP_NOSUBTREECHECK 0x0400
3839 #define NFSEXP_NOAUTHNLM 0x0800 /* Don't authenticate NLM requests - just trust */
@@ -53,7 +54,7 @@ · 14 unmodified lines
5354 #define NFSEXP_PNFS 0x20000
5455
5556 /* All flags that we claim to support. (Note we don't support NOACL.) */
56−#define NFSEXP_ALLFLAGS 0x3FE7F
57+#define NFSEXP_ALLFLAGS 0x3FEFF
5758
5859 /* The flags that may vary depending on security flavor: */
5960 #define NFSEXP_SECINFO_FLAGS (NFSEXP_READONLY | NFSEXP_ROOTSQUASH \
include/uapi/linux/nl80211.h+91−33
@@ -10,7 +10,7 @@ · 9 unmodified lines
1010 * Copyright 2008, 2009 Luis R. Rodriguez <lrodriguez@atheros.com>
1111 * Copyright 2008 Jouni Malinen <jouni.malinen@atheros.com>
1212 * Copyright 2008 Colin McCabe <colin@cozybit.com>
13− * Copyright 2015 Intel Deutschland GmbH
13+ * Copyright 2015-2017 Intel Deutschland GmbH
1414 *
1515 * Permission to use, copy, modify, and/or distribute this software for any
1616 * purpose with or without fee is hereby granted, provided that the above
@@ -854,12 +854,15 @@ · 837 unmodified lines
854854 * cfg80211_scan_done().
855855 *
856856 * @NL80211_CMD_START_NAN: Start NAN operation, identified by its
857− * %NL80211_ATTR_WDEV interface. This interface must have been previously
858− * created with %NL80211_CMD_NEW_INTERFACE. After it has been started, the
859− * NAN interface will create or join a cluster. This command must have a
860− * valid %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
861− * %NL80211_ATTR_NAN_DUAL attributes.
862− * After this command NAN functions can be added.
857+ * %NL80211_ATTR_WDEV interface. This interface must have been
858+ * previously created with %NL80211_CMD_NEW_INTERFACE. After it
859+ * has been started, the NAN interface will create or join a
860+ * cluster. This command must have a valid
861+ * %NL80211_ATTR_NAN_MASTER_PREF attribute and optional
862+ * %NL80211_ATTR_BANDS attributes. If %NL80211_ATTR_BANDS is
863+ * omitted or set to 0, it means don't-care and the device will
864+ * decide what to use. After this command NAN functions can be
865+ * added.
863866 * @NL80211_CMD_STOP_NAN: Stop the NAN operation, identified by
864867 * its %NL80211_ATTR_WDEV interface.
865868 * @NL80211_CMD_ADD_NAN_FUNCTION: Add a NAN function. The function is defined
@@ -880,10 +883,14 @@ · 14 unmodified lines
880883 * This command is also used as a notification sent when a NAN function is
881884 * terminated. This will contain a %NL80211_ATTR_NAN_FUNC_INST_ID
882885 * and %NL80211_ATTR_COOKIE attributes.
883− * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN configuration. NAN
884− * must be operational (%NL80211_CMD_START_NAN was executed).
885− * It must contain at least one of the following attributes:
886− * %NL80211_ATTR_NAN_MASTER_PREF, %NL80211_ATTR_NAN_DUAL.
886+ * @NL80211_CMD_CHANGE_NAN_CONFIG: Change current NAN
887+ * configuration. NAN must be operational (%NL80211_CMD_START_NAN
888+ * was executed). It must contain at least one of the following
889+ * attributes: %NL80211_ATTR_NAN_MASTER_PREF,
890+ * %NL80211_ATTR_BANDS. If %NL80211_ATTR_BANDS is omitted, the
891+ * current configuration is not changed. If it is present but
892+ * set to zero, the configuration is changed to don't-care
893+ * (i.e. the device can decide what to do).
887894 * @NL80211_CMD_NAN_FUNC_MATCH: Notification sent when a match is reported.
888895 * This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
889896 * %NL80211_ATTR_COOKIE.
@@ -1822,6 +1829,8 @@ enum nl80211_commands { · 932 unmodified lines
18221829 * and remove functions. NAN notifications will be sent in unicast to that
18231830 * socket. Without this attribute, any socket can add functions and the
18241831 * notifications will be sent to the %NL80211_MCGRP_NAN multicast group.
1832+ * If set during %NL80211_CMD_ASSOCIATE or %NL80211_CMD_CONNECT the
1833+ * station will deauthenticate when the socket is closed.
18251834 *
18261835 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
18271836 * the TDLS link initiator.
@@ -1961,10 +1970,13 @@ enum nl80211_commands { · 133 unmodified lines
19611970 * %NL80211_CMD_CHANGE_NAN_CONFIG. Its type is u8 and it can't be 0.
19621971 * Also, values 1 and 255 are reserved for certification purposes and
19631972 * should not be used during a normal device operation.
1964− * @NL80211_ATTR_NAN_DUAL: NAN dual band operation config (see
1965− * &enum nl80211_nan_dual_band_conf). This attribute is used with
1966− * %NL80211_CMD_START_NAN and optionally with
1967− * %NL80211_CMD_CHANGE_NAN_CONFIG.
1973+ * @NL80211_ATTR_BANDS: operating bands configuration. This is a u32
1974+ * bitmask of BIT(NL80211_BAND_*) as described in %enum
1975+ * nl80211_band. For instance, for NL80211_BAND_2GHZ, bit 0
1976+ * would be set. This attribute is used with
1977+ * %NL80211_CMD_START_NAN and %NL80211_CMD_CHANGE_NAN_CONFIG, and
1978+ * it is optional. If no bands are set, it means don't-care and
1979+ * the device will decide what to use.
19681980 * @NL80211_ATTR_NAN_FUNC: a function that can be added to NAN. See
19691981 * &enum nl80211_nan_func_attributes for description of this nested
19701982 * attribute.
@@ -1982,6 +1994,24 @@ enum nl80211_commands { · 11 unmodified lines
19821994 * @NL80211_ATTR_BSSID: The BSSID of the AP. Note that %NL80211_ATTR_MAC is also
19831995 * used in various commands/events for specifying the BSSID.
19841996 *
1997+ * @NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI: Relative RSSI threshold by which
1998+ * other BSSs has to be better or slightly worse than the current
1999+ * connected BSS so that they get reported to user space.
2000+ * This will give an opportunity to userspace to consider connecting to
2001+ * other matching BSSs which have better or slightly worse RSSI than
2002+ * the current connected BSS by using an offloaded operation to avoid
2003+ * unnecessary wakeups.
2004+ *
2005+ * @NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST: When present the RSSI level for BSSs in
2006+ * the specified band is to be adjusted before doing
2007+ * %NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI based comparision to figure out
2008+ * better BSSs. The attribute value is a packed structure
2009+ * value as specified by &struct nl80211_bss_select_rssi_adjust.
2010+ *
2011+ * @NL80211_ATTR_TIMEOUT_REASON: The reason for which an operation timed out.
2012+ * u32 attribute with an &enum nl80211_timeout_reason value. This is used,
2013+ * e.g., with %NL80211_CMD_CONNECT event.
2014+ *
19852015 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
19862016 * @NL80211_ATTR_MAX: highest attribute number currently defined
19872017 * @__NL80211_ATTR_AFTER_LAST: internal use
@@ -2377,7 +2407,7 @@ enum nl80211_attrs { · 389 unmodified lines
23772407 NL80211_ATTR_MESH_PEER_AID,
23782408
23792409 NL80211_ATTR_NAN_MASTER_PREF,
2380− NL80211_ATTR_NAN_DUAL,
2410+ NL80211_ATTR_BANDS,
23812411 NL80211_ATTR_NAN_FUNC,
23822412 NL80211_ATTR_NAN_MATCH,
23832413
@@ -2388,6 +2418,11 @@ enum nl80211_attrs { · 4 unmodified lines
23882418
23892419 NL80211_ATTR_BSSID,
23902420
2421+ NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI,
2422+ NL80211_ATTR_SCHED_SCAN_RSSI_ADJUST,
2423+
2424+ NL80211_ATTR_TIMEOUT_REASON,
2425+
23912426 /* add attributes here, update the policy in nl80211.c */
23922427
23932428 __NL80211_ATTR_AFTER_LAST,
@@ -3080,6 +3115,13 @@ enum nl80211_reg_rule_attr { · 686 unmodified lines
30803115 * how this API was implemented in the past. Also, due to the same problem,
30813116 * the only way to create a matchset with only an RSSI filter (with this
30823117 * attribute) is if there's only a single matchset with the RSSI attribute.
3118+ * @NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI: Flag indicating whether
3119+ * %NL80211_SCHED_SCAN_MATCH_ATTR_RSSI to be used as absolute RSSI or
3120+ * relative to current bss's RSSI.
3121+ * @NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST: When present the RSSI level for
3122+ * BSS-es in the specified band is to be adjusted before doing
3123+ * RSSI-based BSS selection. The attribute value is a packed structure
3124+ * value as specified by &struct nl80211_bss_select_rssi_adjust.
30833125 * @NL80211_SCHED_SCAN_MATCH_ATTR_MAX: highest scheduled scan filter
30843126 * attribute number currently defined
30853127 * @__NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST: internal use
@@ -3089,6 +3131,8 @@ enum nl80211_sched_scan_match_attr { · 3 unmodified lines
30893131
30903132 NL80211_SCHED_SCAN_MATCH_ATTR_SSID,
30913133 NL80211_SCHED_SCAN_MATCH_ATTR_RSSI,
3134+ NL80211_SCHED_SCAN_MATCH_ATTR_RELATIVE_RSSI,
3135+ NL80211_SCHED_SCAN_MATCH_ATTR_RSSI_ADJUST,
30923136
30933137 /* keep last */
30943138 __NL80211_SCHED_SCAN_MATCH_ATTR_AFTER_LAST,
@@ -3918,6 +3962,8 @@ enum nl80211_ps_state { · 823 unmodified lines
39183962 * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting.
39193963 * @NL80211_ATTR_CQM_BEACON_LOSS_EVENT: flag attribute that's set in a beacon
39203964 * loss event
3965+ * @NL80211_ATTR_CQM_RSSI_LEVEL: the RSSI value in dBm that triggered the
3966+ * RSSI threshold event.
39213967 * @__NL80211_ATTR_CQM_AFTER_LAST: internal
39223968 * @NL80211_ATTR_CQM_MAX: highest key attribute
39233969 */
@@ -3931,6 +3977,7 @@ enum nl80211_attr_cqm { · 7 unmodified lines
39313977 NL80211_ATTR_CQM_TXE_PKTS,
39323978 NL80211_ATTR_CQM_TXE_INTVL,
39333979 NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
3980+ NL80211_ATTR_CQM_RSSI_LEVEL,
39343981
39353982 /* keep last */
39363983 __NL80211_ATTR_CQM_AFTER_LAST,
@@ -4699,6 +4746,13 @@ enum nl80211_feature_flags { · 762 unmodified lines
46994746 * configuration (AP/mesh) with VHT rates.
47004747 * @NL80211_EXT_FEATURE_FILS_STA: This driver supports Fast Initial Link Setup
47014748 * with user space SME (NL80211_CMD_AUTHENTICATE) in station mode.
4749+ * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA: This driver supports randomized TA
4750+ * in @NL80211_CMD_FRAME while not associated.
4751+ * @NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED: This driver supports
4752+ * randomized TA in @NL80211_CMD_FRAME while associated.
4753+ * @NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI: The driver supports sched_scan
4754+ * for reporting BSSs with better RSSI than the current connected BSS
4755+ * (%NL80211_ATTR_SCHED_SCAN_RELATIVE_RSSI).
47024756 *
47034757 * @NUM_NL80211_EXT_FEATURES: number of extended features.
47044758 * @MAX_NL80211_EXT_FEATURES: highest extended feature index.
@@ -4714,6 +4768,9 @@ enum nl80211_ext_feature_index { · 9 unmodified lines
47144768 NL80211_EXT_FEATURE_BEACON_RATE_HT,
47154769 NL80211_EXT_FEATURE_BEACON_RATE_VHT,
47164770 NL80211_EXT_FEATURE_FILS_STA,
4771+ NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA,
4772+ NL80211_EXT_FEATURE_MGMT_TX_RANDOM_TA_CONNECTED,
4773+ NL80211_EXT_FEATURE_SCHED_SCAN_RELATIVE_RSSI,
47174774
47184775 /* add new features before the definition below */
47194776 NUM_NL80211_EXT_FEATURES,
@@ -4752,6 +4809,21 @@ enum nl80211_connect_failed_reason { · 32 unmodified lines
47524809 NL80211_CONN_FAIL_BLOCKED_CLIENT,
47534810 };
47544811
4812+/**
4813+ * enum nl80211_timeout_reason - timeout reasons
4814+ *
4815+ * @NL80211_TIMEOUT_UNSPECIFIED: Timeout reason unspecified.
4816+ * @NL80211_TIMEOUT_SCAN: Scan (AP discovery) timed out.
4817+ * @NL80211_TIMEOUT_AUTH: Authentication timed out.
4818+ * @NL80211_TIMEOUT_ASSOC: Association timed out.
4819+ */
4820+enum nl80211_timeout_reason {
4821+ NL80211_TIMEOUT_UNSPECIFIED,
4822+ NL80211_TIMEOUT_SCAN,
4823+ NL80211_TIMEOUT_AUTH,
4824+ NL80211_TIMEOUT_ASSOC,
4825+};
4826+
47554827 /**
47564828 * enum nl80211_scan_flags - scan request control flags
47574829 *
@@ -4966,8 +5038,9 @@ enum nl80211_sched_scan_plan { · 208 unmodified lines
49665038 /**
49675039 * struct nl80211_bss_select_rssi_adjust - RSSI adjustment parameters.
49685040 *
4969− * @band: band of BSS that must match for RSSI value adjustment.
4970− * @delta: value used to adjust the RSSI value of matching BSS.
5041+ * @band: band of BSS that must match for RSSI value adjustment. The value
5042+ * of this field is according to &enum nl80211_band.
5043+ * @delta: value used to adjust the RSSI value of matching BSS in dB.
49715044 */
49725045 struct nl80211_bss_select_rssi_adjust {
49735046 __u8 band;
@@ -5007,21 +5080,6 @@ enum nl80211_bss_select_attr { · 33 unmodified lines
50075080 NL80211_BSS_SELECT_ATTR_MAX = __NL80211_BSS_SELECT_ATTR_AFTER_LAST - 1
50085081 };
50095082
5010−/**
5011− * enum nl80211_nan_dual_band_conf - NAN dual band configuration
5012− *
5013− * Defines the NAN dual band mode of operation
5014− *
5015− * @NL80211_NAN_BAND_DEFAULT: device default mode
5016− * @NL80211_NAN_BAND_2GHZ: 2.4GHz mode
5017− * @NL80211_NAN_BAND_5GHZ: 5GHz mode
5018− */
5019−enum nl80211_nan_dual_band_conf {
5020− NL80211_NAN_BAND_DEFAULT = 1 << 0,
5021− NL80211_NAN_BAND_2GHZ = 1 << 1,
5022− NL80211_NAN_BAND_5GHZ = 1 << 2,
5023−};
5024−
50255083 /**
50265084 * enum nl80211_nan_function_type - NAN function type
50275085 *
include/uapi/linux/nsfs.h+7−2
@@ -6,8 +6,13 @@ · 5 unmodified lines
66 #define NSIO 0xb7
77
88 /* Returns a file descriptor that refers to an owning user namespace */
9−#define NS_GET_USERNS _IO(NSIO, 0x1)
9+#define NS_GET_USERNS _IO(NSIO, 0x1)
1010 /* Returns a file descriptor that refers to a parent namespace */
11−#define NS_GET_PARENT _IO(NSIO, 0x2)
11+#define NS_GET_PARENT _IO(NSIO, 0x2)
12+/* Returns the type of namespace (CLONE_NEW* value) referred to by
13+ file descriptor */
14+#define NS_GET_NSTYPE _IO(NSIO, 0x3)
15+/* Get owner UID (in the caller's user namespace) for a user namespace */
16+#define NS_GET_OWNER_UID _IO(NSIO, 0x4)
1217
1318 #endif /* __LINUX_NSFS_H */
include/uapi/linux/openvswitch.h+30−3
@@ -1,6 +1,6 @@
11
22 /*
3− * Copyright (c) 2007-2013 Nicira, Inc.
3+ * Copyright (c) 2007-2017 Nicira, Inc.
44 *
55 * This program is free software; you can redistribute it and/or
66 * modify it under the terms of version 2 of the GNU General Public
@@ -331,6 +331,8 @@ enum ovs_key_attr { · 324 unmodified lines
331331 OVS_KEY_ATTR_CT_ZONE, /* u16 connection tracking zone. */
332332 OVS_KEY_ATTR_CT_MARK, /* u32 connection tracking mark */
333333 OVS_KEY_ATTR_CT_LABELS, /* 16-octet connection tracking label */
334+ OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV4, /* struct ovs_key_ct_tuple_ipv4 */
335+ OVS_KEY_ATTR_CT_ORIG_TUPLE_IPV6, /* struct ovs_key_ct_tuple_ipv6 */
334336
335337 #ifdef __KERNEL__
336338 OVS_KEY_ATTR_TUNNEL_INFO, /* struct ip_tunnel_info */
@@ -446,9 +448,13 @@ struct ovs_key_nd { · 109 unmodified lines
446448 __u8 nd_tll[ETH_ALEN];
447449 };
448450
449−#define OVS_CT_LABELS_LEN 16
451+#define OVS_CT_LABELS_LEN_32 4
452+#define OVS_CT_LABELS_LEN (OVS_CT_LABELS_LEN_32 * sizeof(__u32))
450453 struct ovs_key_ct_labels {
451− __u8 ct_labels[OVS_CT_LABELS_LEN];
454+ union {
455+ __u8 ct_labels[OVS_CT_LABELS_LEN];
456+ __u32 ct_labels_32[OVS_CT_LABELS_LEN_32];
457+ };
452458 };
453459
454460 /* OVS_KEY_ATTR_CT_STATE flags */
@@ -468,6 +474,22 @@ struct ovs_key_ct_labels { · 13 unmodified lines
468474
469475 #define OVS_CS_F_NAT_MASK (OVS_CS_F_SRC_NAT | OVS_CS_F_DST_NAT)
470476
477+struct ovs_key_ct_tuple_ipv4 {
478+ __be32 ipv4_src;
479+ __be32 ipv4_dst;
480+ __be16 src_port;
481+ __be16 dst_port;
482+ __u8 ipv4_proto;
483+};
484+
485+struct ovs_key_ct_tuple_ipv6 {
486+ __be32 ipv6_src[4];
487+ __be32 ipv6_dst[4];
488+ __be16 src_port;
489+ __be16 dst_port;
490+ __u8 ipv6_proto;
491+};
492+
471493 /**
472494 * enum ovs_flow_attr - attributes for %OVS_FLOW_* commands.
473495 * @OVS_FLOW_ATTR_KEY: Nested %OVS_KEY_ATTR_* attributes specifying the flow
@@ -652,6 +674,10 @@ struct ovs_action_hash { · 178 unmodified lines
652674 * @OVS_CT_ATTR_HELPER: variable length string defining conntrack ALG.
653675 * @OVS_CT_ATTR_NAT: Nested OVS_NAT_ATTR_* for performing L3 network address
654676 * translation (NAT) on the packet.
677+ * @OVS_CT_ATTR_FORCE_COMMIT: Like %OVS_CT_ATTR_COMMIT, but instead of doing
678+ * nothing if the connection is already committed will check that the current
679+ * packet is in conntrack entry's original direction. If directionality does
680+ * not match, will delete the existing conntrack entry and commit a new one.
655681 */
656682 enum ovs_ct_attr {
657683 OVS_CT_ATTR_UNSPEC,
@@ -662,6 +688,7 @@ enum ovs_ct_attr { · 4 unmodified lines
662688 OVS_CT_ATTR_HELPER, /* netlink helper to assist detection of
663689 related connections. */
664690 OVS_CT_ATTR_NAT, /* Nested OVS_NAT_ATTR_* */
691+ OVS_CT_ATTR_FORCE_COMMIT, /* No argument */
665692 __OVS_CT_ATTR_MAX
666693 };
667694
include/uapi/linux/pci_regs.h+17−0
@@ -682,6 +682,7 @@ · 681 unmodified lines
682682 #define PCI_EXT_CAP_ID_PMUX 0x1A /* Protocol Multiplexing */
683683 #define PCI_EXT_CAP_ID_PASID 0x1B /* Process Address Space ID */
684684 #define PCI_EXT_CAP_ID_DPC 0x1D /* Downstream Port Containment */
685+#define PCI_EXT_CAP_ID_L1SS 0x1E /* L1 PM Substates */
685686 #define PCI_EXT_CAP_ID_PTM 0x1F /* Precision Time Measurement */
686687 #define PCI_EXT_CAP_ID_MAX PCI_EXT_CAP_ID_PTM
687688
@@ -973,6 +974,7 @@ · 285 unmodified lines
973974 #define PCI_EXP_DPC_STATUS 8 /* DPC Status */
974975 #define PCI_EXP_DPC_STATUS_TRIGGER 0x01 /* Trigger Status */
975976 #define PCI_EXP_DPC_STATUS_INTERRUPT 0x08 /* Interrupt Status */
977+#define PCI_EXP_DPC_RP_BUSY 0x10 /* Root Port Busy */
976978
977979 #define PCI_EXP_DPC_SOURCE_ID 10 /* DPC Source Identifier */
978980
@@ -985,4 +987,19 @@ · 6 unmodified lines
985987 #define PCI_PTM_CTRL_ENABLE 0x00000001 /* PTM enable */
986988 #define PCI_PTM_CTRL_ROOT 0x00000002 /* Root select */
987989
990+/* L1 PM Substates */
991+#define PCI_L1SS_CAP 4 /* capability register */
992+#define PCI_L1SS_CAP_PCIPM_L1_2 1 /* PCI PM L1.2 Support */
993+#define PCI_L1SS_CAP_PCIPM_L1_1 2 /* PCI PM L1.1 Support */
994+#define PCI_L1SS_CAP_ASPM_L1_2 4 /* ASPM L1.2 Support */
995+#define PCI_L1SS_CAP_ASPM_L1_1 8 /* ASPM L1.1 Support */
996+#define PCI_L1SS_CAP_L1_PM_SS 16 /* L1 PM Substates Support */
997+#define PCI_L1SS_CTL1 8 /* Control Register 1 */
998+#define PCI_L1SS_CTL1_PCIPM_L1_2 1 /* PCI PM L1.2 Enable */
999+#define PCI_L1SS_CTL1_PCIPM_L1_1 2 /* PCI PM L1.1 Support */
1000+#define PCI_L1SS_CTL1_ASPM_L1_2 4 /* ASPM L1.2 Support */
1001+#define PCI_L1SS_CTL1_ASPM_L1_1 8 /* ASPM L1.1 Support */
1002+#define PCI_L1SS_CTL1_L1SS_MASK 0x0000000F
1003+#define PCI_L1SS_CTL2 0xC /* Control Register 2 */
1004+
9881005 #endif /* LINUX_PCI_REGS_H */
include/uapi/linux/pkt_cls.h+17−56
@@ -4,60 +4,7 @@ · 3 unmodified lines
44 #include <linux/types.h>
55 #include <linux/pkt_sched.h>
66
7−#ifdef __KERNEL__
8−/* I think i could have done better macros ; for now this is stolen from
9− * some arch/mips code - jhs
10−*/
11−#define _TC_MAKE32(x) ((x))
12−
13−#define _TC_MAKEMASK1(n) (_TC_MAKE32(1) << _TC_MAKE32(n))
14−#define _TC_MAKEMASK(v,n) (_TC_MAKE32((_TC_MAKE32(1)<<(v))-1) << _TC_MAKE32(n))
15−#define _TC_MAKEVALUE(v,n) (_TC_MAKE32(v) << _TC_MAKE32(n))
16−#define _TC_GETVALUE(v,n,m) ((_TC_MAKE32(v) & _TC_MAKE32(m)) >> _TC_MAKE32(n))
17−
18−/* verdict bit breakdown
19− *
20−bit 0: when set -> this packet has been munged already
21−
22−bit 1: when set -> It is ok to munge this packet
23−
24−bit 2,3,4,5: Reclassify counter - sort of reverse TTL - if exceeded
25−assume loop
26−
27−bit 6,7: Where this packet was last seen
28−0: Above the transmit example at the socket level
29−1: on the Ingress
30−2: on the Egress
31−
32−bit 8: when set --> Request not to classify on ingress.
33−
34−bits 9,10,11: redirect counter - redirect TTL. Loop avoidance
35−
36− *
37− * */
38−
39−#define S_TC_FROM _TC_MAKE32(6)
40−#define M_TC_FROM _TC_MAKEMASK(2,S_TC_FROM)
41−#define G_TC_FROM(x) _TC_GETVALUE(x,S_TC_FROM,M_TC_FROM)
42−#define V_TC_FROM(x) _TC_MAKEVALUE(x,S_TC_FROM)
43−#define SET_TC_FROM(v,n) ((V_TC_FROM(n)) | (v & ~M_TC_FROM))
44−#define AT_STACK 0x0
45−#define AT_INGRESS 0x1
46−#define AT_EGRESS 0x2
47−
48−#define TC_NCLS _TC_MAKEMASK1(8)
49−#define SET_TC_NCLS(v) ( TC_NCLS | (v & ~TC_NCLS))
50−#define CLR_TC_NCLS(v) ( v & ~TC_NCLS)
51−
52−#define S_TC_AT _TC_MAKE32(12)
53−#define M_TC_AT _TC_MAKEMASK(2,S_TC_AT)
54−#define G_TC_AT(x) _TC_GETVALUE(x,S_TC_AT,M_TC_AT)
55−#define V_TC_AT(x) _TC_MAKEVALUE(x,S_TC_AT)
56−#define SET_TC_AT(v,n) ((V_TC_AT(n)) | (v & ~M_TC_AT))
57−
58−#define MAX_REC_LOOP 4
59−#define MAX_RED_LOOP 4
60−#endif
7+#define TC_COOKIE_MAX_SIZE 16
618
629 /* Action attributes */
6310 enum {
@@ -67,6 +14,7 @@ enum { · 3 unmodified lines
6714 TCA_ACT_INDEX,
6815 TCA_ACT_STATS,
6916 TCA_ACT_PAD,
17+ TCA_ACT_COOKIE,
7018 __TCA_ACT_MAX
7119 };
7220
@@ -155,8 +103,10 @@ enum { · 82 unmodified lines
155103 #define TCA_POLICE_MAX (__TCA_POLICE_MAX - 1)
156104
157105 /* tca flags definitions */
158−#define TCA_CLS_FLAGS_SKIP_HW (1 << 0)
159−#define TCA_CLS_FLAGS_SKIP_SW (1 << 1)
106+#define TCA_CLS_FLAGS_SKIP_HW (1 << 0) /* don't offload filter to HW */
107+#define TCA_CLS_FLAGS_SKIP_SW (1 << 1) /* don't use filter in SW */
108+#define TCA_CLS_FLAGS_IN_HW (1 << 2) /* filter is offloaded to HW */
109+#define TCA_CLS_FLAGS_NOT_IN_HW (1 << 3) /* filter isn't offloaded to HW */
160110
161111 /* U32 filters */
162112
@@ -471,6 +421,17 @@ enum { · 308 unmodified lines
471421 TCA_FLOWER_KEY_ICMPV6_TYPE, /* u8 */
472422 TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */
473423
424+ TCA_FLOWER_KEY_ARP_SIP, /* be32 */
425+ TCA_FLOWER_KEY_ARP_SIP_MASK, /* be32 */
426+ TCA_FLOWER_KEY_ARP_TIP, /* be32 */
427+ TCA_FLOWER_KEY_ARP_TIP_MASK, /* be32 */
428+ TCA_FLOWER_KEY_ARP_OP, /* u8 */
429+ TCA_FLOWER_KEY_ARP_OP_MASK, /* u8 */
430+ TCA_FLOWER_KEY_ARP_SHA, /* ETH_ALEN */
431+ TCA_FLOWER_KEY_ARP_SHA_MASK, /* ETH_ALEN */
432+ TCA_FLOWER_KEY_ARP_THA, /* ETH_ALEN */
433+ TCA_FLOWER_KEY_ARP_THA_MASK, /* ETH_ALEN */
434+
474435 __TCA_FLOWER_MAX,
475436 };
476437
include/uapi/linux/psample.h+35−0
@@ -0,0 +1,35 @@
1+#ifndef __UAPI_PSAMPLE_H
2+#define __UAPI_PSAMPLE_H
3+
4+enum {
5+ /* sampled packet metadata */
6+ PSAMPLE_ATTR_IIFINDEX,
7+ PSAMPLE_ATTR_OIFINDEX,
8+ PSAMPLE_ATTR_ORIGSIZE,
9+ PSAMPLE_ATTR_SAMPLE_GROUP,
10+ PSAMPLE_ATTR_GROUP_SEQ,
11+ PSAMPLE_ATTR_SAMPLE_RATE,
12+ PSAMPLE_ATTR_DATA,
13+
14+ /* commands attributes */
15+ PSAMPLE_ATTR_GROUP_REFCOUNT,
16+
17+ __PSAMPLE_ATTR_MAX
18+};
19+
20+enum psample_command {
21+ PSAMPLE_CMD_SAMPLE,
22+ PSAMPLE_CMD_GET_GROUP,
23+ PSAMPLE_CMD_NEW_GROUP,
24+ PSAMPLE_CMD_DEL_GROUP,
25+};
26+
27+/* Can be overridden at runtime by module option */
28+#define PSAMPLE_ATTR_MAX (__PSAMPLE_ATTR_MAX - 1)
29+
30+#define PSAMPLE_NL_MCGRP_CONFIG_NAME "config"
31+#define PSAMPLE_NL_MCGRP_SAMPLE_NAME "packets"
32+#define PSAMPLE_GENL_NAME "psample"
33+#define PSAMPLE_GENL_VERSION 1
34+
35+#endif
include/uapi/linux/rds.h+87−53
@@ -35,6 +35,7 @@ · 34 unmodified lines
3535 #define _LINUX_RDS_H
3636
3737 #include <linux/types.h>
38+#include <linux/socket.h> /* For __kernel_sockaddr_storage. */
3839
3940 #define RDS_IB_ABI_VERSION 0x301
4041
@@ -52,6 +53,13 @@ · 11 unmodified lines
5253 #define RDS_GET_MR_FOR_DEST 7
5354 #define SO_RDS_TRANSPORT 8
5455
56+/* Socket option to tap receive path latency
57+ * SO_RDS: SO_RDS_MSG_RXPATH_LATENCY
58+ * Format used struct rds_rx_trace_so
59+ */
60+#define SO_RDS_MSG_RXPATH_LATENCY 10
61+
62+
5563 /* supported values for SO_RDS_TRANSPORT */
5664 #define RDS_TRANS_IB 0
5765 #define RDS_TRANS_IWARP 1
@@ -77,6 +85,12 @@ · 19 unmodified lines
7785 * the same as for the GET_MR setsockopt.
7886 * RDS_CMSG_RDMA_STATUS (recvmsg)
7987 * Returns the status of a completed RDMA operation.
88+ * RDS_CMSG_RXPATH_LATENCY(recvmsg)
89+ * Returns rds message latencies in various stages of receive
90+ * path in nS. Its set per socket using SO_RDS_MSG_RXPATH_LATENCY
91+ * socket option. Legitimate points are defined in
92+ * enum rds_message_rxpath_latency. More points can be added in
93+ * future. CSMG format is struct rds_cmsg_rx_trace.
8094 */
8195 #define RDS_CMSG_RDMA_ARGS 1
8296 #define RDS_CMSG_RDMA_DEST 2
@@ -87,6 +101,7 @@ · 4 unmodified lines
87101 #define RDS_CMSG_ATOMIC_CSWP 7
88102 #define RDS_CMSG_MASKED_ATOMIC_FADD 8
89103 #define RDS_CMSG_MASKED_ATOMIC_CSWP 9
104+#define RDS_CMSG_RXPATH_LATENCY 11
90105
91106 #define RDS_INFO_FIRST 10000
92107 #define RDS_INFO_COUNTERS 10000
@@ -103,8 +118,8 @@ · 10 unmodified lines
103118 #define RDS_INFO_LAST 10010
104119
105120 struct rds_info_counter {
106− uint8_t name[32];
107− uint64_t value;
121+ __u8 name[32];
122+ __u64 value;
108123 } __attribute__((packed));
109124
110125 #define RDS_INFO_CONNECTION_FLAG_SENDING 0x01
@@ -114,35 +129,35 @@ struct rds_info_counter { · 3 unmodified lines
114129 #define TRANSNAMSIZ 16
115130
116131 struct rds_info_connection {
117− uint64_t next_tx_seq;
118− uint64_t next_rx_seq;
132+ __u64 next_tx_seq;
133+ __u64 next_rx_seq;
119134 __be32 laddr;
120135 __be32 faddr;
121− uint8_t transport[TRANSNAMSIZ]; /* null term ascii */
122− uint8_t flags;
136+ __u8 transport[TRANSNAMSIZ]; /* null term ascii */
137+ __u8 flags;
123138 } __attribute__((packed));
124139
125140 #define RDS_INFO_MESSAGE_FLAG_ACK 0x01
126141 #define RDS_INFO_MESSAGE_FLAG_FAST_ACK 0x02
127142
128143 struct rds_info_message {
129− uint64_t seq;
130− uint32_t len;
144+ __u64 seq;
145+ __u32 len;
131146 __be32 laddr;
132147 __be32 faddr;
133148 __be16 lport;
134149 __be16 fport;
135− uint8_t flags;
150+ __u8 flags;
136151 } __attribute__((packed));
137152
138153 struct rds_info_socket {
139− uint32_t sndbuf;
154+ __u32 sndbuf;
140155 __be32 bound_addr;
141156 __be32 connected_addr;
142157 __be16 bound_port;
143158 __be16 connected_port;
144− uint32_t rcvbuf;
145− uint64_t inum;
159+ __u32 rcvbuf;
160+ __u64 inum;
146161 } __attribute__((packed));
147162
148163 struct rds_info_tcp_socket {
@@ -150,25 +165,44 @@ struct rds_info_tcp_socket { · 1 unmodified line
150165 __be16 local_port;
151166 __be32 peer_addr;
152167 __be16 peer_port;
153− uint64_t hdr_rem;
154− uint64_t data_rem;
155− uint32_t last_sent_nxt;
156− uint32_t last_expected_una;
157− uint32_t last_seen_una;
168+ __u64 hdr_rem;
169+ __u64 data_rem;
170+ __u32 last_sent_nxt;
171+ __u32 last_expected_una;
172+ __u32 last_seen_una;
158173 } __attribute__((packed));
159174
160175 #define RDS_IB_GID_LEN 16
161176 struct rds_info_rdma_connection {
162177 __be32 src_addr;
163178 __be32 dst_addr;
164− uint8_t src_gid[RDS_IB_GID_LEN];
165− uint8_t dst_gid[RDS_IB_GID_LEN];
166−
167− uint32_t max_send_wr;
168− uint32_t max_recv_wr;
169− uint32_t max_send_sge;
170− uint32_t rdma_mr_max;
171− uint32_t rdma_mr_size;
179+ __u8 src_gid[RDS_IB_GID_LEN];
180+ __u8 dst_gid[RDS_IB_GID_LEN];
181+
182+ __u32 max_send_wr;
183+ __u32 max_recv_wr;
184+ __u32 max_send_sge;
185+ __u32 rdma_mr_max;
186+ __u32 rdma_mr_size;
187+};
188+
189+/* RDS message Receive Path Latency points */
190+enum rds_message_rxpath_latency {
191+ RDS_MSG_RX_HDR_TO_DGRAM_START = 0,
192+ RDS_MSG_RX_DGRAM_REASSEMBLE,
193+ RDS_MSG_RX_DGRAM_DELIVERED,
194+ RDS_MSG_RX_DGRAM_TRACE_MAX
195+};
196+
197+struct rds_rx_trace_so {
198+ __u8 rx_traces;
199+ __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
200+};
201+
202+struct rds_cmsg_rx_trace {
203+ __u8 rx_traces;
204+ __u8 rx_trace_pos[RDS_MSG_RX_DGRAM_TRACE_MAX];
205+ __u64 rx_trace[RDS_MSG_RX_DGRAM_TRACE_MAX];
172206 };
173207
174208 /*
@@ -209,70 +243,70 @@ struct rds_info_rdma_connection { · 34 unmodified lines
209243 * (so that the application does not have to worry about
210244 * alignment).
211245 */
212−typedef uint64_t rds_rdma_cookie_t;
246+typedef __u64 rds_rdma_cookie_t;
213247
214248 struct rds_iovec {
215− uint64_t addr;
216− uint64_t bytes;
249+ __u64 addr;
250+ __u64 bytes;
217251 };
218252
219253 struct rds_get_mr_args {
220254 struct rds_iovec vec;
221− uint64_t cookie_addr;
222− uint64_t flags;
255+ __u64 cookie_addr;
256+ __u64 flags;
223257 };
224258
225259 struct rds_get_mr_for_dest_args {
226− struct sockaddr_storage dest_addr;
260+ struct __kernel_sockaddr_storage dest_addr;
227261 struct rds_iovec vec;
228− uint64_t cookie_addr;
229− uint64_t flags;
262+ __u64 cookie_addr;
263+ __u64 flags;
230264 };
231265
232266 struct rds_free_mr_args {
233267 rds_rdma_cookie_t cookie;
234− uint64_t flags;
268+ __u64 flags;
235269 };
236270
237271 struct rds_rdma_args {
238272 rds_rdma_cookie_t cookie;
239273 struct rds_iovec remote_vec;
240− uint64_t local_vec_addr;
241− uint64_t nr_local;
242− uint64_t flags;
243− uint64_t user_token;
274+ __u64 local_vec_addr;
275+ __u64 nr_local;
276+ __u64 flags;
277+ __u64 user_token;
244278 };
245279
246280 struct rds_atomic_args {
247281 rds_rdma_cookie_t cookie;
248− uint64_t local_addr;
249− uint64_t remote_addr;
282+ __u64 local_addr;
283+ __u64 remote_addr;
250284 union {
251285 struct {
252− uint64_t compare;
253− uint64_t swap;
286+ __u64 compare;
287+ __u64 swap;
254288 } cswp;
255289 struct {
256− uint64_t add;
290+ __u64 add;
257291 } fadd;
258292 struct {
259− uint64_t compare;
260− uint64_t swap;
261− uint64_t compare_mask;
262− uint64_t swap_mask;
293+ __u64 compare;
294+ __u64 swap;
295+ __u64 compare_mask;
296+ __u64 swap_mask;
263297 } m_cswp;
264298 struct {
265− uint64_t add;
266− uint64_t nocarry_mask;
299+ __u64 add;
300+ __u64 nocarry_mask;
267301 } m_fadd;
268302 };
269− uint64_t flags;
270− uint64_t user_token;
303+ __u64 flags;
304+ __u64 user_token;
271305 };
272306
273307 struct rds_rdma_notify {
274− uint64_t user_token;
275− int32_t status;
308+ __u64 user_token;
309+ __s32 status;
276310 };
277311
278312 #define RDS_RDMA_SUCCESS 0
include/uapi/linux/rpmsg.h+35−0
@@ -0,0 +1,35 @@
1+/*
2+ * Copyright (c) 2016, Linaro Ltd.
3+ *
4+ * This program is free software; you can redistribute it and/or modify
5+ * it under the terms of the GNU General Public License version 2 and
6+ * only version 2 as published by the Free Software Foundation.
7+ *
8+ * This program is distributed in the hope that it will be useful,
9+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
10+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11+ * GNU General Public License for more details.
12+ */
13+
14+#ifndef _UAPI_RPMSG_H_
15+#define _UAPI_RPMSG_H_
16+
17+#include <linux/ioctl.h>
18+#include <linux/types.h>
19+
20+/**
21+ * struct rpmsg_endpoint_info - endpoint info representation
22+ * @name: name of service
23+ * @src: local address
24+ * @dst: destination address
25+ */
26+struct rpmsg_endpoint_info {
27+ char name[32];
28+ __u32 src;
29+ __u32 dst;
30+};
31+
32+#define RPMSG_CREATE_EPT_IOCTL _IOW(0xb5, 0x1, struct rpmsg_endpoint_info)
33+#define RPMSG_DESTROY_EPT_IOCTL _IO(0xb5, 0x2)
34+
35+#endif
include/uapi/linux/rtnetlink.h+3−0
@@ -350,6 +350,7 @@ struct rtnexthop { · 349 unmodified lines
350350 #define RTNH_F_ONLINK 4 /* Gateway is forced on link */
351351 #define RTNH_F_OFFLOAD 8 /* offloaded route */
352352 #define RTNH_F_LINKDOWN 16 /* carrier-down on nexthop */
353+#define RTNH_F_UNRESOLVED 32 /* The entry is unresolved (ipmr) */
353354
354355 #define RTNH_COMPARE_MASK (RTNH_F_DEAD | RTNH_F_LINKDOWN | RTNH_F_OFFLOAD)
355356
@@ -657,6 +658,8 @@ enum rtnetlink_groups { · 301 unmodified lines
657658 #define RTNLGRP_MPLS_ROUTE RTNLGRP_MPLS_ROUTE
658659 RTNLGRP_NSID,
659660 #define RTNLGRP_NSID RTNLGRP_NSID
661+ RTNLGRP_MPLS_NETCONF,
662+#define RTNLGRP_MPLS_NETCONF RTNLGRP_MPLS_NETCONF
660663 __RTNLGRP_MAX
661664 };
662665 #define RTNLGRP_MAX (__RTNLGRP_MAX - 1)
include/uapi/linux/sched/types.h+74−0
@@ -0,0 +1,74 @@
1+#ifndef _UAPI_LINUX_SCHED_TYPES_H
2+#define _UAPI_LINUX_SCHED_TYPES_H
3+
4+#include <linux/types.h>
5+
6+struct sched_param {
7+ int sched_priority;
8+};
9+
10+#define SCHED_ATTR_SIZE_VER0 48 /* sizeof first published struct */
11+
12+/*
13+ * Extended scheduling parameters data structure.
14+ *
15+ * This is needed because the original struct sched_param can not be
16+ * altered without introducing ABI issues with legacy applications
17+ * (e.g., in sched_getparam()).
18+ *
19+ * However, the possibility of specifying more than just a priority for
20+ * the tasks may be useful for a wide variety of application fields, e.g.,
21+ * multimedia, streaming, automation and control, and many others.
22+ *
23+ * This variant (sched_attr) is meant at describing a so-called
24+ * sporadic time-constrained task. In such model a task is specified by:
25+ * - the activation period or minimum instance inter-arrival time;
26+ * - the maximum (or average, depending on the actual scheduling
27+ * discipline) computation time of all instances, a.k.a. runtime;
28+ * - the deadline (relative to the actual activation time) of each
29+ * instance.
30+ * Very briefly, a periodic (sporadic) task asks for the execution of
31+ * some specific computation --which is typically called an instance--
32+ * (at most) every period. Moreover, each instance typically lasts no more
33+ * than the runtime and must be completed by time instant t equal to
34+ * the instance activation time + the deadline.
35+ *
36+ * This is reflected by the actual fields of the sched_attr structure:
37+ *
38+ * @size size of the structure, for fwd/bwd compat.
39+ *
40+ * @sched_policy task's scheduling policy
41+ * @sched_flags for customizing the scheduler behaviour
42+ * @sched_nice task's nice value (SCHED_NORMAL/BATCH)
43+ * @sched_priority task's static priority (SCHED_FIFO/RR)
44+ * @sched_deadline representative of the task's deadline
45+ * @sched_runtime representative of the task's runtime
46+ * @sched_period representative of the task's period
47+ *
48+ * Given this task model, there are a multiplicity of scheduling algorithms
49+ * and policies, that can be used to ensure all the tasks will make their
50+ * timing constraints.
51+ *
52+ * As of now, the SCHED_DEADLINE policy (sched_dl scheduling class) is the
53+ * only user of this new interface. More information about the algorithm
54+ * available in the scheduling class file or in Documentation/.
55+ */
56+struct sched_attr {
57+ u32 size;
58+
59+ u32 sched_policy;
60+ u64 sched_flags;
61+
62+ /* SCHED_NORMAL, SCHED_BATCH */
63+ s32 sched_nice;
64+
65+ /* SCHED_FIFO, SCHED_RR */
66+ u32 sched_priority;
67+
68+ /* SCHED_DEADLINE */
69+ u64 sched_runtime;
70+ u64 sched_deadline;
71+ u64 sched_period;
72+};
73+
74+#endif /* _UAPI_LINUX_SCHED_TYPES_H */
include/uapi/linux/sctp.h+42−0
@@ -115,6 +115,10 @@ typedef __s32 sctp_assoc_t; · 114 unmodified lines
115115 #define SCTP_PR_SUPPORTED 113
116116 #define SCTP_DEFAULT_PRINFO 114
117117 #define SCTP_PR_ASSOC_STATUS 115
118+#define SCTP_ENABLE_STREAM_RESET 118
119+#define SCTP_RESET_STREAMS 119
120+#define SCTP_RESET_ASSOC 120
121+#define SCTP_ADD_STREAMS 121
118122
119123 /* PR-SCTP policies */
120124 #define SCTP_PR_SCTP_NONE 0x0000
@@ -138,6 +142,15 @@ typedef __s32 sctp_assoc_t; · 17 unmodified lines
138142 #define SCTP_PR_RTX_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_RTX)
139143 #define SCTP_PR_PRIO_ENABLED(x) (SCTP_PR_POLICY(x) == SCTP_PR_SCTP_PRIO)
140144
145+/* For enable stream reset */
146+#define SCTP_ENABLE_RESET_STREAM_REQ 0x01
147+#define SCTP_ENABLE_RESET_ASSOC_REQ 0x02
148+#define SCTP_ENABLE_CHANGE_ASSOC_REQ 0x04
149+#define SCTP_ENABLE_STRRESET_MASK 0x07
150+
151+#define SCTP_STREAM_RESET_INCOMING 0x01
152+#define SCTP_STREAM_RESET_OUTGOING 0x02
153+
141154 /* These are bit fields for msghdr->msg_flags. See section 5.1. */
142155 /* On user space Linux, these live in <bits/socket.h> as an enum. */
143156 enum sctp_msg_flags {
@@ -477,6 +490,18 @@ struct sctp_sender_dry_event { · 333 unmodified lines
477490 sctp_assoc_t sender_dry_assoc_id;
478491 };
479492
493+#define SCTP_STREAM_RESET_INCOMING_SSN 0x0001
494+#define SCTP_STREAM_RESET_OUTGOING_SSN 0x0002
495+#define SCTP_STREAM_RESET_DENIED 0x0004
496+#define SCTP_STREAM_RESET_FAILED 0x0008
497+struct sctp_stream_reset_event {
498+ __u16 strreset_type;
499+ __u16 strreset_flags;
500+ __u32 strreset_length;
501+ sctp_assoc_t strreset_assoc_id;
502+ __u16 strreset_stream_list[];
503+};
504+
480505 /*
481506 * Described in Section 7.3
482507 * Ancillary Data and Notification Interest Options
@@ -492,6 +517,7 @@ struct sctp_event_subscribe { · 9 unmodified lines
492517 __u8 sctp_adaptation_layer_event;
493518 __u8 sctp_authentication_event;
494519 __u8 sctp_sender_dry_event;
520+ __u8 sctp_stream_reset_event;
495521 };
496522
497523 /*
@@ -516,6 +542,7 @@ union sctp_notification { · 18 unmodified lines
516542 struct sctp_pdapi_event sn_pdapi_event;
517543 struct sctp_authkey_event sn_authkey_event;
518544 struct sctp_sender_dry_event sn_sender_dry_event;
545+ struct sctp_stream_reset_event sn_strreset_event;
519546 };
520547
521548 /* Section 5.3.1
@@ -543,6 +570,8 @@ enum sctp_sn_type { · 21 unmodified lines
543570 #define SCTP_AUTHENTICATION_INDICATION SCTP_AUTHENTICATION_EVENT
544571 SCTP_SENDER_DRY_EVENT,
545572 #define SCTP_SENDER_DRY_EVENT SCTP_SENDER_DRY_EVENT
573+ SCTP_STREAM_RESET_EVENT,
574+#define SCTP_STREAM_RESET_EVENT SCTP_STREAM_RESET_EVENT
546575 };
547576
548577 /* Notification error codes used to fill up the error fields in some
@@ -1008,4 +1037,17 @@ struct sctp_info { · 459 unmodified lines
10081037 __u32 __reserved3;
10091038 };
10101039
1040+struct sctp_reset_streams {
1041+ sctp_assoc_t srs_assoc_id;
1042+ uint16_t srs_flags;
1043+ uint16_t srs_number_streams; /* 0 == ALL */
1044+ uint16_t srs_stream_list[]; /* list if srs_num_streams is not 0 */
1045+};
1046+
1047+struct sctp_add_streams {
1048+ sctp_assoc_t sas_assoc_id;
1049+ uint16_t sas_instrms;
1050+ uint16_t sas_outstrms;
1051+};
1052+
10111053 #endif /* _UAPI_SCTP_H */
include/uapi/linux/sed-opal.h+119−0
@@ -0,0 +1,119 @@
1+/*
2+ * Copyright © 2016 Intel Corporation
3+ *
4+ * Authors:
5+ * Rafael Antognolli <rafael.antognolli@intel.com>
6+ * Scott Bauer <scott.bauer@intel.com>
7+ *
8+ * This program is free software; you can redistribute it and/or modify it
9+ * under the terms and conditions of the GNU General Public License,
10+ * version 2, as published by the Free Software Foundation.
11+ *
12+ * This program is distributed in the hope it will be useful, but WITHOUT
13+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14+ * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
15+ * more details.
16+ */
17+
18+#ifndef _UAPI_SED_OPAL_H
19+#define _UAPI_SED_OPAL_H
20+
21+#include <linux/types.h>
22+
23+#define OPAL_KEY_MAX 256
24+#define OPAL_MAX_LRS 9
25+
26+enum opal_mbr {
27+ OPAL_MBR_ENABLE = 0x0,
28+ OPAL_MBR_DISABLE = 0x01,
29+};
30+
31+enum opal_user {
32+ OPAL_ADMIN1 = 0x0,
33+ OPAL_USER1 = 0x01,
34+ OPAL_USER2 = 0x02,
35+ OPAL_USER3 = 0x03,
36+ OPAL_USER4 = 0x04,
37+ OPAL_USER5 = 0x05,
38+ OPAL_USER6 = 0x06,
39+ OPAL_USER7 = 0x07,
40+ OPAL_USER8 = 0x08,
41+ OPAL_USER9 = 0x09,
42+};
43+
44+enum opal_lock_state {
45+ OPAL_RO = 0x01, /* 0001 */
46+ OPAL_RW = 0x02, /* 0010 */
47+ OPAL_LK = 0x04, /* 0100 */
48+};
49+
50+struct opal_key {
51+ __u8 lr;
52+ __u8 key_len;
53+ __u8 __align[6];
54+ __u8 key[OPAL_KEY_MAX];
55+};
56+
57+struct opal_lr_act {
58+ struct opal_key key;
59+ __u32 sum;
60+ __u8 num_lrs;
61+ __u8 lr[OPAL_MAX_LRS];
62+ __u8 align[2]; /* Align to 8 byte boundary */
63+};
64+
65+struct opal_session_info {
66+ __u32 sum;
67+ __u32 who;
68+ struct opal_key opal_key;
69+};
70+
71+struct opal_user_lr_setup {
72+ __u64 range_start;
73+ __u64 range_length;
74+ __u32 RLE; /* Read Lock enabled */
75+ __u32 WLE; /* Write Lock Enabled */
76+ struct opal_session_info session;
77+};
78+
79+struct opal_lock_unlock {
80+ struct opal_session_info session;
81+ __u32 l_state;
82+ __u8 __align[4];
83+};
84+
85+struct opal_new_pw {
86+ struct opal_session_info session;
87+
88+ /* When we're not operating in sum, and we first set
89+ * passwords we need to set them via ADMIN authority.
90+ * After passwords are changed, we can set them via,
91+ * User authorities.
92+ * Because of this restriction we need to know about
93+ * Two different users. One in 'session' which we will use
94+ * to start the session and new_userr_pw as the user we're
95+ * chaning the pw for.
96+ */
97+ struct opal_session_info new_user_pw;
98+};
99+
100+struct opal_mbr_data {
101+ struct opal_key key;
102+ __u8 enable_disable;
103+ __u8 __align[7];
104+};
105+
106+#define IOC_OPAL_SAVE _IOW('p', 220, struct opal_lock_unlock)
107+#define IOC_OPAL_LOCK_UNLOCK _IOW('p', 221, struct opal_lock_unlock)
108+#define IOC_OPAL_TAKE_OWNERSHIP _IOW('p', 222, struct opal_key)
109+#define IOC_OPAL_ACTIVATE_LSP _IOW('p', 223, struct opal_lr_act)
110+#define IOC_OPAL_SET_PW _IOW('p', 224, struct opal_new_pw)
111+#define IOC_OPAL_ACTIVATE_USR _IOW('p', 225, struct opal_session_info)
112+#define IOC_OPAL_REVERT_TPR _IOW('p', 226, struct opal_key)
113+#define IOC_OPAL_LR_SETUP _IOW('p', 227, struct opal_user_lr_setup)
114+#define IOC_OPAL_ADD_USR_TO_LR _IOW('p', 228, struct opal_lock_unlock)
115+#define IOC_OPAL_ENABLE_DISABLE_MBR _IOW('p', 229, struct opal_mbr_data)
116+#define IOC_OPAL_ERASE_LR _IOW('p', 230, struct opal_session_info)
117+#define IOC_OPAL_SECURE_ERASE_LR _IOW('p', 231, struct opal_session_info)
118+
119+#endif /* _UAPI_SED_OPAL_H */
include/uapi/linux/seg6.h+3−0
@@ -14,6 +14,9 @@ · 13 unmodified lines
1414 #ifndef _UAPI_LINUX_SEG6_H
1515 #define _UAPI_LINUX_SEG6_H
1616
17+#include <linux/types.h>
18+#include <linux/in6.h> /* For struct in6_addr. */
19+
1720 /*
1821 * SRH
1922 */
include/uapi/linux/seg6_hmac.h+1−0
@@ -1,6 +1,7 @@
11 #ifndef _UAPI_LINUX_SEG6_HMAC_H
22 #define _UAPI_LINUX_SEG6_HMAC_H
33
4+#include <linux/types.h>
45 #include <linux/seg6.h>
56
67 #define SEG6_HMAC_SECRET_LEN 64
include/uapi/linux/seg6_iptunnel.h+6−0
@@ -14,6 +14,8 @@ · 13 unmodified lines
1414 #ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
1515 #define _UAPI_LINUX_SEG6_IPTUNNEL_H
1616
17+#include <linux/seg6.h> /* For struct ipv6_sr_hdr. */
18+
1719 enum {
1820 SEG6_IPTUNNEL_UNSPEC,
1921 SEG6_IPTUNNEL_SRH,
@@ -33,6 +35,8 @@ enum { · 13 unmodified lines
3335 SEG6_IPTUN_MODE_ENCAP,
3436 };
3537
38+#ifdef __KERNEL__
39+
3640 static inline size_t seg6_lwt_headroom(struct seg6_iptunnel_encap *tuninfo)
3741 {
3842 int encap = (tuninfo->mode == SEG6_IPTUN_MODE_ENCAP);
@@ -42,3 +46,5 @@ static inline size_t seg6_lwt_headroom(struct seg6_iptunnel_encap *tuninfo) · 3 unmodified lines
4246 }
4347
4448 #endif
49+
50+#endif
include/uapi/linux/serial_core.h+2−1
@@ -56,7 +56,8 @@ · 55 unmodified lines
5656 #define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */
5757 #define PORT_RT2880 29 /* Ralink RT2880 internal UART */
5858 #define PORT_16550A_FSL64 30 /* Freescale 16550 UART with 64 FIFOs */
59−#define PORT_MAX_8250 30 /* max port ID */
59+#define PORT_DA830 31 /* TI DA8xx/66AK2x */
60+#define PORT_MAX_8250 31 /* max port ID */
6061
6162 /*
6263 * ARM specific type numbers. These are not currently guaranteed
include/uapi/linux/serial_reg.h+8−18
@@ -327,6 +327,14 @@ · 326 unmodified lines
327327 #define SERIAL_RSA_BAUD_BASE (921600)
328328 #define SERIAL_RSA_BAUD_BASE_LO (SERIAL_RSA_BAUD_BASE / 8)
329329
330+/* Extra registers for TI DA8xx/66AK2x */
331+#define UART_DA830_PWREMU_MGMT 12
332+
333+/* PWREMU_MGMT register bits */
334+#define UART_DA830_PWREMU_MGMT_FREE (1 << 0) /* Free-running mode */
335+#define UART_DA830_PWREMU_MGMT_URRST (1 << 13) /* Receiver reset/enable */
336+#define UART_DA830_PWREMU_MGMT_UTRST (1 << 14) /* Transmitter reset/enable */
337+
330338 /*
331339 * Extra serial register definitions for the internal UARTs
332340 * in TI OMAP processors.
@@ -358,24 +366,6 @@ · 25 unmodified lines
358366 #define UART_OMAP_MDR1_CIR_MODE 0x06 /* CIR mode */
359367 #define UART_OMAP_MDR1_DISABLE 0x07 /* Disable (default state) */
360368
361−/*
362− * These are definitions for the Exar XR17V35X and XR17(C|D)15X
363− */
364−#define UART_EXAR_8XMODE 0x88 /* 8X sampling rate select */
365−#define UART_EXAR_SLEEP 0x8b /* Sleep mode */
366−#define UART_EXAR_DVID 0x8d /* Device identification */
367−
368−#define UART_EXAR_FCTR 0x08 /* Feature Control Register */
369−#define UART_FCTR_EXAR_IRDA 0x08 /* IrDa data encode select */
370−#define UART_FCTR_EXAR_485 0x10 /* Auto 485 half duplex dir ctl */
371−#define UART_FCTR_EXAR_TRGA 0x00 /* FIFO trigger table A */
372−#define UART_FCTR_EXAR_TRGB 0x60 /* FIFO trigger table B */
373−#define UART_FCTR_EXAR_TRGC 0x80 /* FIFO trigger table C */
374−#define UART_FCTR_EXAR_TRGD 0xc0 /* FIFO trigger table D programmable */
375−
376−#define UART_EXAR_TXTRG 0x0a /* Tx FIFO trigger level write-only */
377−#define UART_EXAR_RXTRG 0x0b /* Rx FIFO trigger level write-only */
378−
379369 /*
380370 * These are definitions for the Altera ALTR_16550_F32/F64/F128
381371 * Normalized from 0x100 to 0x40 because of shift by 2 (32 bit regs).
include/uapi/linux/serio.h+4−3
@@ -17,9 +17,10 @@ · 16 unmodified lines
1717 /*
1818 * bit masks for use in "interrupt" flags (3rd argument)
1919 */
20−#define SERIO_TIMEOUT 1
21−#define SERIO_PARITY 2
22−#define SERIO_FRAME 4
20+#define SERIO_TIMEOUT BIT(0)
21+#define SERIO_PARITY BIT(1)
22+#define SERIO_FRAME BIT(2)
23+#define SERIO_OOB_DATA BIT(3)
2324
2425 /*
2526 * Serio types
include/uapi/linux/smc.h+35−0
@@ -0,0 +1,35 @@
1+/*
2+ * Shared Memory Communications over RDMA (SMC-R) and RoCE
3+ *
4+ * Definitions for generic netlink based configuration of an SMC-R PNET table
5+ *
6+ * Copyright IBM Corp. 2016
7+ *
8+ * Author(s): Thomas Richter <tmricht@linux.vnet.ibm.com>
9+ */
10+
11+#ifndef _UAPI_LINUX_SMC_H_
12+#define _UAPI_LINUX_SMC_H_
13+
14+/* Netlink SMC_PNETID attributes */
15+enum {
16+ SMC_PNETID_UNSPEC,
17+ SMC_PNETID_NAME,
18+ SMC_PNETID_ETHNAME,
19+ SMC_PNETID_IBNAME,
20+ SMC_PNETID_IBPORT,
21+ __SMC_PNETID_MAX,
22+ SMC_PNETID_MAX = __SMC_PNETID_MAX - 1
23+};
24+
25+enum { /* SMC PNET Table commands */
26+ SMC_PNETID_GET = 1,
27+ SMC_PNETID_ADD,
28+ SMC_PNETID_DEL,
29+ SMC_PNETID_FLUSH
30+};
31+
32+#define SMCR_GENL_FAMILY_NAME "SMC_PNETID"
33+#define SMCR_GENL_FAMILY_VERSION 1
34+
35+#endif /* _UAPI_LINUX_SMC_H */
include/uapi/linux/smc_diag.h+85−0
@@ -0,0 +1,85 @@
1+#ifndef _UAPI_SMC_DIAG_H_
2+#define _UAPI_SMC_DIAG_H_
3+
4+#include <linux/types.h>
5+#include <linux/inet_diag.h>
6+#include <rdma/ib_verbs.h>
7+
8+/* Request structure */
9+struct smc_diag_req {
10+ __u8 diag_family;
11+ __u8 pad[2];
12+ __u8 diag_ext; /* Query extended information */
13+ struct inet_diag_sockid id;
14+};
15+
16+/* Base info structure. It contains socket identity (addrs/ports/cookie) based
17+ * on the internal clcsock, and more SMC-related socket data
18+ */
19+struct smc_diag_msg {
20+ __u8 diag_family;
21+ __u8 diag_state;
22+ __u8 diag_fallback;
23+ __u8 diag_shutdown;
24+ struct inet_diag_sockid id;
25+
26+ __u32 diag_uid;
27+ __u64 diag_inode;
28+};
29+
30+/* Extensions */
31+
32+enum {
33+ SMC_DIAG_NONE,
34+ SMC_DIAG_CONNINFO,
35+ SMC_DIAG_LGRINFO,
36+ SMC_DIAG_SHUTDOWN,
37+ __SMC_DIAG_MAX,
38+};
39+
40+#define SMC_DIAG_MAX (__SMC_DIAG_MAX - 1)
41+
42+/* SMC_DIAG_CONNINFO */
43+
44+struct smc_diag_cursor {
45+ __u16 reserved;
46+ __u16 wrap;
47+ __u32 count;
48+};
49+
50+struct smc_diag_conninfo {
51+ __u32 token; /* unique connection id */
52+ __u32 sndbuf_size; /* size of send buffer */
53+ __u32 rmbe_size; /* size of RMB element */
54+ __u32 peer_rmbe_size; /* size of peer RMB element */
55+ /* local RMB element cursors */
56+ struct smc_diag_cursor rx_prod; /* received producer cursor */
57+ struct smc_diag_cursor rx_cons; /* received consumer cursor */
58+ /* peer RMB element cursors */
59+ struct smc_diag_cursor tx_prod; /* sent producer cursor */
60+ struct smc_diag_cursor tx_cons; /* sent consumer cursor */
61+ __u8 rx_prod_flags; /* received producer flags */
62+ __u8 rx_conn_state_flags; /* recvd connection flags*/
63+ __u8 tx_prod_flags; /* sent producer flags */
64+ __u8 tx_conn_state_flags; /* sent connection flags*/
65+ /* send buffer cursors */
66+ struct smc_diag_cursor tx_prep; /* prepared to be sent cursor */
67+ struct smc_diag_cursor tx_sent; /* sent cursor */
68+ struct smc_diag_cursor tx_fin; /* confirmed sent cursor */
69+};
70+
71+/* SMC_DIAG_LINKINFO */
72+
73+struct smc_diag_linkinfo {
74+ __u8 link_id; /* link identifier */
75+ __u8 ibname[IB_DEVICE_NAME_MAX]; /* name of the RDMA device */
76+ __u8 ibport; /* RDMA device port number */
77+ __u8 gid[40]; /* local GID */
78+ __u8 peer_gid[40]; /* peer GID */
79+};
80+
81+struct smc_diag_lgrinfo {
82+ struct smc_diag_linkinfo lnk[1];
83+ __u8 role;
84+};
85+#endif /* _UAPI_SMC_DIAG_H_ */
include/uapi/linux/snmp.h+1−0
@@ -240,6 +240,7 @@ enum · 239 unmodified lines
240240 LINUX_MIB_SACKMERGED,
241241 LINUX_MIB_SACKSHIFTFALLBACK,
242242 LINUX_MIB_TCPBACKLOGDROP,
243+ LINUX_MIB_PFMEMALLOCDROP,
243244 LINUX_MIB_TCPMINTTLDROP, /* RFC 5082 */
244245 LINUX_MIB_TCPDEFERACCEPTDROP,
245246 LINUX_MIB_IPRPFILTER, /* IP Reverse Path Filter (rp_filter) */
include/uapi/linux/stat.h+131−0
@@ -1,6 +1,7 @@
11 #ifndef _UAPI_LINUX_STAT_H
22 #define _UAPI_LINUX_STAT_H
33
4+#include <linux/types.h>
45
56 #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
67
@@ -41,5 +42,135 @@ · 34 unmodified lines
4142
4243 #endif
4344
45+/*
46+ * Timestamp structure for the timestamps in struct statx.
47+ *
48+ * tv_sec holds the number of seconds before (negative) or after (positive)
49+ * 00:00:00 1st January 1970 UTC.
50+ *
51+ * tv_nsec holds a number of nanoseconds before (0..-999,999,999 if tv_sec is
52+ * negative) or after (0..999,999,999 if tv_sec is positive) the tv_sec time.
53+ *
54+ * Note that if both tv_sec and tv_nsec are non-zero, then the two values must
55+ * either be both positive or both negative.
56+ *
57+ * __reserved is held in case we need a yet finer resolution.
58+ */
59+struct statx_timestamp {
60+ __s64 tv_sec;
61+ __s32 tv_nsec;
62+ __s32 __reserved;
63+};
64+
65+/*
66+ * Structures for the extended file attribute retrieval system call
67+ * (statx()).
68+ *
69+ * The caller passes a mask of what they're specifically interested in as a
70+ * parameter to statx(). What statx() actually got will be indicated in
71+ * st_mask upon return.
72+ *
73+ * For each bit in the mask argument:
74+ *
75+ * - if the datum is not supported:
76+ *
77+ * - the bit will be cleared, and
78+ *
79+ * - the datum will be set to an appropriate fabricated value if one is
80+ * available (eg. CIFS can take a default uid and gid), otherwise
81+ *
82+ * - the field will be cleared;
83+ *
84+ * - otherwise, if explicitly requested:
85+ *
86+ * - the datum will be synchronised to the server if AT_STATX_FORCE_SYNC is
87+ * set or if the datum is considered out of date, and
88+ *
89+ * - the field will be filled in and the bit will be set;
90+ *
91+ * - otherwise, if not requested, but available in approximate form without any
92+ * effort, it will be filled in anyway, and the bit will be set upon return
93+ * (it might not be up to date, however, and no attempt will be made to
94+ * synchronise the internal state first);
95+ *
96+ * - otherwise the field and the bit will be cleared before returning.
97+ *
98+ * Items in STATX_BASIC_STATS may be marked unavailable on return, but they
99+ * will have values installed for compatibility purposes so that stat() and
100+ * co. can be emulated in userspace.
101+ */
102+struct statx {
103+ /* 0x00 */
104+ __u32 stx_mask; /* What results were written [uncond] */
105+ __u32 stx_blksize; /* Preferred general I/O size [uncond] */
106+ __u64 stx_attributes; /* Flags conveying information about the file [uncond] */
107+ /* 0x10 */
108+ __u32 stx_nlink; /* Number of hard links */
109+ __u32 stx_uid; /* User ID of owner */
110+ __u32 stx_gid; /* Group ID of owner */
111+ __u16 stx_mode; /* File mode */
112+ __u16 __spare0[1];
113+ /* 0x20 */
114+ __u64 stx_ino; /* Inode number */
115+ __u64 stx_size; /* File size */
116+ __u64 stx_blocks; /* Number of 512-byte blocks allocated */
117+ __u64 __spare1[1];
118+ /* 0x40 */
119+ struct statx_timestamp stx_atime; /* Last access time */
120+ struct statx_timestamp stx_btime; /* File creation time */
121+ struct statx_timestamp stx_ctime; /* Last attribute change time */
122+ struct statx_timestamp stx_mtime; /* Last data modification time */
123+ /* 0x80 */
124+ __u32 stx_rdev_major; /* Device ID of special file [if bdev/cdev] */
125+ __u32 stx_rdev_minor;
126+ __u32 stx_dev_major; /* ID of device containing file [uncond] */
127+ __u32 stx_dev_minor;
128+ /* 0x90 */
129+ __u64 __spare2[14]; /* Spare space for future expansion */
130+ /* 0x100 */
131+};
132+
133+/*
134+ * Flags to be stx_mask
135+ *
136+ * Query request/result mask for statx() and struct statx::stx_mask.
137+ *
138+ * These bits should be set in the mask argument of statx() to request
139+ * particular items when calling statx().
140+ */
141+#define STATX_TYPE 0x00000001U /* Want/got stx_mode & S_IFMT */
142+#define STATX_MODE 0x00000002U /* Want/got stx_mode & ~S_IFMT */
143+#define STATX_NLINK 0x00000004U /* Want/got stx_nlink */
144+#define STATX_UID 0x00000008U /* Want/got stx_uid */
145+#define STATX_GID 0x00000010U /* Want/got stx_gid */
146+#define STATX_ATIME 0x00000020U /* Want/got stx_atime */
147+#define STATX_MTIME 0x00000040U /* Want/got stx_mtime */
148+#define STATX_CTIME 0x00000080U /* Want/got stx_ctime */
149+#define STATX_INO 0x00000100U /* Want/got stx_ino */
150+#define STATX_SIZE 0x00000200U /* Want/got stx_size */
151+#define STATX_BLOCKS 0x00000400U /* Want/got stx_blocks */
152+#define STATX_BASIC_STATS 0x000007ffU /* The stuff in the normal stat struct */
153+#define STATX_BTIME 0x00000800U /* Want/got stx_btime */
154+#define STATX_ALL 0x00000fffU /* All currently supported flags */
155+
156+/*
157+ * Attributes to be found in stx_attributes
158+ *
159+ * These give information about the features or the state of a file that might
160+ * be of use to ordinary userspace programs such as GUIs or ls rather than
161+ * specialised tools.
162+ *
163+ * Note that the flags marked [I] correspond to generic FS_IOC_FLAGS
164+ * semantically. Where possible, the numerical value is picked to correspond
165+ * also.
166+ */
167+#define STATX_ATTR_COMPRESSED 0x00000004 /* [I] File is compressed by the fs */
168+#define STATX_ATTR_IMMUTABLE 0x00000010 /* [I] File is marked immutable */
169+#define STATX_ATTR_APPEND 0x00000020 /* [I] File is append-only */
170+#define STATX_ATTR_NODUMP 0x00000040 /* [I] File is not to be dumped */
171+#define STATX_ATTR_ENCRYPTED 0x00000800 /* [I] File requires key to decrypt in fs */
172+
173+#define STATX_ATTR_AUTOMOUNT 0x00001000 /* Dir: Automount trigger */
174+
44175
45176 #endif /* _UAPI_LINUX_STAT_H */
include/uapi/linux/target_core_user.h+11−11
@@ -105,26 +105,26 @@ struct tcmu_cmd_entry { · 104 unmodified lines
105105
106106 union {
107107 struct {
108− uint32_t iov_cnt;
109− uint32_t iov_bidi_cnt;
110− uint32_t iov_dif_cnt;
111− uint64_t cdb_off;
112− uint64_t __pad1;
113− uint64_t __pad2;
108+ __u32 iov_cnt;
109+ __u32 iov_bidi_cnt;
110+ __u32 iov_dif_cnt;
111+ __u64 cdb_off;
112+ __u64 __pad1;
113+ __u64 __pad2;
114114 struct iovec iov[0];
115115 } req;
116116 struct {
117− uint8_t scsi_status;
118− uint8_t __pad1;
119− uint16_t __pad2;
120− uint32_t __pad3;
117+ __u8 scsi_status;
118+ __u8 __pad1;
119+ __u16 __pad2;
120+ __u32 __pad3;
121121 char sense_buffer[TCMU_SENSE_BUFFERSIZE];
122122 } rsp;
123123 };
124124
125125 } __packed;
126126
127−#define TCMU_OP_ALIGN_SIZE sizeof(uint64_t)
127+#define TCMU_OP_ALIGN_SIZE sizeof(__u64)
128128
129129 enum tcmu_genl_cmd {
130130 TCMU_CMD_UNSPEC,
include/uapi/linux/tc_act/Kbuild+1−0
@@ -4,6 +4,7 @@ header-y += tc_defact.h · 3 unmodified lines
44 header-y += tc_gact.h
55 header-y += tc_ipt.h
66 header-y += tc_mirred.h
7+header-y += tc_sample.h
78 header-y += tc_nat.h
89 header-y += tc_pedit.h
910 header-y += tc_skbedit.h
include/uapi/linux/tc_act/tc_csum.h+2−1
@@ -21,7 +21,8 @@ enum { · 20 unmodified lines
2121 TCA_CSUM_UPDATE_FLAG_IGMP = 4,
2222 TCA_CSUM_UPDATE_FLAG_TCP = 8,
2323 TCA_CSUM_UPDATE_FLAG_UDP = 16,
24− TCA_CSUM_UPDATE_FLAG_UDPLITE = 32
24+ TCA_CSUM_UPDATE_FLAG_UDPLITE = 32,
25+ TCA_CSUM_UPDATE_FLAG_SCTP = 64,
2526 };
2627
2728 struct tc_csum {
include/uapi/linux/tc_act/tc_ife.h+1−9
@@ -3,6 +3,7 @@ · 2 unmodified lines
33
44 #include <linux/types.h>
55 #include <linux/pkt_cls.h>
6+#include <linux/ife.h>
67
78 #define TCA_ACT_IFE 25
89 /* Flag bits for now just encoding/decoding; mutually exclusive */
@@ -28,13 +29,4 @@ enum { · 19 unmodified lines
2829 };
2930 #define TCA_IFE_MAX (__TCA_IFE_MAX - 1)
3031
31−#define IFE_META_SKBMARK 1
32−#define IFE_META_HASHID 2
33−#define IFE_META_PRIO 3
34−#define IFE_META_QMAP 4
35−#define IFE_META_TCINDEX 5
36−/*Can be overridden at runtime by module option*/
37−#define __IFE_META_MAX 6
38−#define IFE_META_MAX (__IFE_META_MAX - 1)
39−
4032 #endif
include/uapi/linux/tc_act/tc_pedit.h+31−0
@@ -11,10 +11,41 @@ enum { · 10 unmodified lines
1111 TCA_PEDIT_TM,
1212 TCA_PEDIT_PARMS,
1313 TCA_PEDIT_PAD,
14+ TCA_PEDIT_PARMS_EX,
15+ TCA_PEDIT_KEYS_EX,
16+ TCA_PEDIT_KEY_EX,
1417 __TCA_PEDIT_MAX
1518 };
1619 #define TCA_PEDIT_MAX (__TCA_PEDIT_MAX - 1)
1720
21+enum {
22+ TCA_PEDIT_KEY_EX_HTYPE = 1,
23+ TCA_PEDIT_KEY_EX_CMD = 2,
24+ __TCA_PEDIT_KEY_EX_MAX
25+};
26+#define TCA_PEDIT_KEY_EX_MAX (__TCA_PEDIT_KEY_EX_MAX - 1)
27+
28+ /* TCA_PEDIT_KEY_EX_HDR_TYPE_NETWROK is a special case for legacy users. It
29+ * means no specific header type - offset is relative to the network layer
30+ */
31+enum pedit_header_type {
32+ TCA_PEDIT_KEY_EX_HDR_TYPE_NETWORK = 0,
33+ TCA_PEDIT_KEY_EX_HDR_TYPE_ETH = 1,
34+ TCA_PEDIT_KEY_EX_HDR_TYPE_IP4 = 2,
35+ TCA_PEDIT_KEY_EX_HDR_TYPE_IP6 = 3,
36+ TCA_PEDIT_KEY_EX_HDR_TYPE_TCP = 4,
37+ TCA_PEDIT_KEY_EX_HDR_TYPE_UDP = 5,
38+ __PEDIT_HDR_TYPE_MAX,
39+};
40+#define TCA_PEDIT_HDR_TYPE_MAX (__PEDIT_HDR_TYPE_MAX - 1)
41+
42+enum pedit_cmd {
43+ TCA_PEDIT_KEY_EX_CMD_SET = 0,
44+ TCA_PEDIT_KEY_EX_CMD_ADD = 1,
45+ __PEDIT_CMD_MAX,
46+};
47+#define TCA_PEDIT_CMD_MAX (__PEDIT_CMD_MAX - 1)
48+
1849 struct tc_pedit_key {
1950 __u32 mask; /* AND */
2051 __u32 val; /*XOR */
include/uapi/linux/tc_act/tc_sample.h+26−0
@@ -0,0 +1,26 @@
1+#ifndef __LINUX_TC_SAMPLE_H
2+#define __LINUX_TC_SAMPLE_H
3+
4+#include <linux/types.h>
5+#include <linux/pkt_cls.h>
6+#include <linux/if_ether.h>
7+
8+#define TCA_ACT_SAMPLE 26
9+
10+struct tc_sample {
11+ tc_gen;
12+};
13+
14+enum {
15+ TCA_SAMPLE_UNSPEC,
16+ TCA_SAMPLE_TM,
17+ TCA_SAMPLE_PARMS,
18+ TCA_SAMPLE_RATE,
19+ TCA_SAMPLE_TRUNC_SIZE,
20+ TCA_SAMPLE_PSAMPLE_GROUP,
21+ TCA_SAMPLE_PAD,
22+ __TCA_SAMPLE_MAX
23+};
24+#define TCA_SAMPLE_MAX (__TCA_SAMPLE_MAX - 1)
25+
26+#endif
include/uapi/linux/tcp.h+3−0
@@ -116,6 +116,7 @@ enum { · 115 unmodified lines
116116 #define TCP_SAVE_SYN 27 /* Record SYN headers for new connections */
117117 #define TCP_SAVED_SYN 28 /* Get SYN headers recorded for connection */
118118 #define TCP_REPAIR_WINDOW 29 /* Get/set window parameters */
119+#define TCP_FASTOPEN_CONNECT 30 /* Attempt FastOpen with connect */
119120
120121 struct tcp_repair_opt {
121122 __u32 opt_code;
@@ -226,6 +227,8 @@ enum { · 104 unmodified lines
226227 TCP_NLA_BUSY, /* Time (usec) busy sending data */
227228 TCP_NLA_RWND_LIMITED, /* Time (usec) limited by receive window */
228229 TCP_NLA_SNDBUF_LIMITED, /* Time (usec) limited by send buffer */
230+ TCP_NLA_DATA_SEGS_OUT, /* Data pkts sent including retransmission */
231+ TCP_NLA_TOTAL_RETRANS, /* Data pkts retransmitted */
229232 };
230233
231234 /* for TCP_MD5SIG socket option */
include/uapi/linux/tipc.h+4−2
@@ -1,7 +1,7 @@
11 /*
22 * include/uapi/linux/tipc.h: Header for TIPC socket interface
33 *
4− * Copyright (c) 2003-2006, Ericsson AB
4+ * Copyright (c) 2003-2006, 2015-2016 Ericsson AB
55 * Copyright (c) 2005, 2010-2011, Wind River Systems
66 * All rights reserved.
77 *
@@ -220,7 +220,7 @@ struct sockaddr_tipc { · 212 unmodified lines
220220 #define TIPC_DESTNAME 3 /* destination name */
221221
222222 /*
223− * TIPC-specific socket option values
223+ * TIPC-specific socket option names
224224 */
225225
226226 #define TIPC_IMPORTANCE 127 /* Default: TIPC_LOW_IMPORTANCE */
@@ -229,6 +229,8 @@ struct sockaddr_tipc { · 2 unmodified lines
229229 #define TIPC_CONN_TIMEOUT 130 /* Default: 8000 (ms) */
230230 #define TIPC_NODE_RECVQ_DEPTH 131 /* Default: none (read only) */
231231 #define TIPC_SOCK_RECVQ_DEPTH 132 /* Default: none (read only) */
232+#define TIPC_MCAST_BROADCAST 133 /* Default: TIPC selects. No arg */
233+#define TIPC_MCAST_REPLICAST 134 /* Default: TIPC selects. No arg */
232234
233235 /*
234236 * Maximum sizes of TIPC bearer-related names (including terminating NULL)
include/uapi/linux/un.h+2−0
@@ -10,4 +10,6 @@ struct sockaddr_un { · 9 unmodified lines
1010 char sun_path[UNIX_PATH_MAX]; /* pathname */
1111 };
1212
13+#define SIOCUNIXFILE (SIOCPROTOPRIVATE + 0) /* open a socket file with O_PATH */
14+
1315 #endif /* _LINUX_UN_H */
include/uapi/linux/userfaultfd.h+64−9
@@ -11,13 +11,20 @@ · 10 unmodified lines
1111
1212 #include <linux/types.h>
1313
14−#define UFFD_API ((__u64)0xAA)
1514 /*
16− * After implementing the respective features it will become:
17− * #define UFFD_API_FEATURES (UFFD_FEATURE_PAGEFAULT_FLAG_WP | \
18− * UFFD_FEATURE_EVENT_FORK)
15+ * If the UFFDIO_API is upgraded someday, the UFFDIO_UNREGISTER and
16+ * UFFDIO_WAKE ioctls should be defined as _IOW and not as _IOR. In
17+ * userfaultfd.h we assumed the kernel was reading (instead _IOC_READ
18+ * means the userland is reading).
1919 */
20−#define UFFD_API_FEATURES (0)
20+#define UFFD_API ((__u64)0xAA)
21+#define UFFD_API_FEATURES (UFFD_FEATURE_EVENT_EXIT | \
22+ UFFD_FEATURE_EVENT_FORK | \
23+ UFFD_FEATURE_EVENT_REMAP | \
24+ UFFD_FEATURE_EVENT_REMOVE | \
25+ UFFD_FEATURE_EVENT_UNMAP | \
26+ UFFD_FEATURE_MISSING_HUGETLBFS | \
27+ UFFD_FEATURE_MISSING_SHMEM)
2128 #define UFFD_API_IOCTLS \
2229 ((__u64)1 << _UFFDIO_REGISTER | \
2330 (__u64)1 << _UFFDIO_UNREGISTER | \
@@ -26,6 +33,9 @@ · 2 unmodified lines
2633 ((__u64)1 << _UFFDIO_WAKE | \
2734 (__u64)1 << _UFFDIO_COPY | \
2835 (__u64)1 << _UFFDIO_ZEROPAGE)
36+#define UFFD_API_RANGE_IOCTLS_BASIC \
37+ ((__u64)1 << _UFFDIO_WAKE | \
38+ (__u64)1 << _UFFDIO_COPY)
2939
3040 /*
3141 * Valid ioctl command number range with this API is from 0x00 to
@@ -71,6 +81,21 @@ struct uffd_msg { · 39 unmodified lines
7181 __u64 address;
7282 } pagefault;
7383
84+ struct {
85+ __u32 ufd;
86+ } fork;
87+
88+ struct {
89+ __u64 from;
90+ __u64 to;
91+ __u64 len;
92+ } remap;
93+
94+ struct {
95+ __u64 start;
96+ __u64 end;
97+ } remove;
98+
7499 struct {
75100 /* unused reserved fields */
76101 __u64 reserved1;
@@ -84,9 +109,11 @@ struct uffd_msg { · 7 unmodified lines
84109 * Start at 0x12 and not at 0 to be more strict against bugs.
85110 */
86111 #define UFFD_EVENT_PAGEFAULT 0x12
87−#if 0 /* not available yet */
88112 #define UFFD_EVENT_FORK 0x13
89−#endif
113+#define UFFD_EVENT_REMAP 0x14
114+#define UFFD_EVENT_REMOVE 0x15
115+#define UFFD_EVENT_UNMAP 0x16
116+#define UFFD_EVENT_EXIT 0x17
90117
91118 /* flags for UFFD_EVENT_PAGEFAULT */
92119 #define UFFD_PAGEFAULT_FLAG_WRITE (1<<0) /* If this was a write fault */
@@ -104,11 +131,39 @@ struct uffdio_api { · 11 unmodified lines
104131 * Note: UFFD_EVENT_PAGEFAULT and UFFD_PAGEFAULT_FLAG_WRITE
105132 * are to be considered implicitly always enabled in all kernels as
106133 * long as the uffdio_api.api requested matches UFFD_API.
134+ *
135+ * UFFD_FEATURE_MISSING_HUGETLBFS means an UFFDIO_REGISTER
136+ * with UFFDIO_REGISTER_MODE_MISSING mode will succeed on
137+ * hugetlbfs virtual memory ranges. Adding or not adding
138+ * UFFD_FEATURE_MISSING_HUGETLBFS to uffdio_api.features has
139+ * no real functional effect after UFFDIO_API returns, but
140+ * it's only useful for an initial feature set probe at
141+ * UFFDIO_API time. There are two ways to use it:
142+ *
143+ * 1) by adding UFFD_FEATURE_MISSING_HUGETLBFS to the
144+ * uffdio_api.features before calling UFFDIO_API, an error
145+ * will be returned by UFFDIO_API on a kernel without
146+ * hugetlbfs missing support
147+ *
148+ * 2) the UFFD_FEATURE_MISSING_HUGETLBFS can not be added in
149+ * uffdio_api.features and instead it will be set by the
150+ * kernel in the uffdio_api.features if the kernel supports
151+ * it, so userland can later check if the feature flag is
152+ * present in uffdio_api.features after UFFDIO_API
153+ * succeeded.
154+ *
155+ * UFFD_FEATURE_MISSING_SHMEM works the same as
156+ * UFFD_FEATURE_MISSING_HUGETLBFS, but it applies to shmem
157+ * (i.e. tmpfs and other shmem based APIs).
107158 */
108−#if 0 /* not available yet */
109159 #define UFFD_FEATURE_PAGEFAULT_FLAG_WP (1<<0)
110160 #define UFFD_FEATURE_EVENT_FORK (1<<1)
111−#endif
161+#define UFFD_FEATURE_EVENT_REMAP (1<<2)
162+#define UFFD_FEATURE_EVENT_REMOVE (1<<3)
163+#define UFFD_FEATURE_MISSING_HUGETLBFS (1<<4)
164+#define UFFD_FEATURE_MISSING_SHMEM (1<<5)
165+#define UFFD_FEATURE_EVENT_UNMAP (1<<6)
166+#define UFFD_FEATURE_EVENT_EXIT (1<<7)
112167 __u64 features;
113168
114169 __u64 ioctls;
include/uapi/linux/virtio_mmio.h+141−0
@@ -0,0 +1,141 @@
1+/*
2+ * Virtio platform device driver
3+ *
4+ * Copyright 2011, ARM Ltd.
5+ *
6+ * Based on Virtio PCI driver by Anthony Liguori, copyright IBM Corp. 2007
7+ *
8+ * This header is BSD licensed so anyone can use the definitions to implement
9+ * compatible drivers/servers.
10+ *
11+ * Redistribution and use in source and binary forms, with or without
12+ * modification, are permitted provided that the following conditions
13+ * are met:
14+ * 1. Redistributions of source code must retain the above copyright
15+ * notice, this list of conditions and the following disclaimer.
16+ * 2. Redistributions in binary form must reproduce the above copyright
17+ * notice, this list of conditions and the following disclaimer in the
18+ * documentation and/or other materials provided with the distribution.
19+ * 3. Neither the name of IBM nor the names of its contributors
20+ * may be used to endorse or promote products derived from this software
21+ * without specific prior written permission.
22+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
23+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25+ * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
26+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
27+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
28+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
29+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
30+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
31+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32+ * SUCH DAMAGE.
33+ */
34+
35+#ifndef _LINUX_VIRTIO_MMIO_H
36+#define _LINUX_VIRTIO_MMIO_H
37+
38+/*
39+ * Control registers
40+ */
41+
42+/* Magic value ("virt" string) - Read Only */
43+#define VIRTIO_MMIO_MAGIC_VALUE 0x000
44+
45+/* Virtio device version - Read Only */
46+#define VIRTIO_MMIO_VERSION 0x004
47+
48+/* Virtio device ID - Read Only */
49+#define VIRTIO_MMIO_DEVICE_ID 0x008
50+
51+/* Virtio vendor ID - Read Only */
52+#define VIRTIO_MMIO_VENDOR_ID 0x00c
53+
54+/* Bitmask of the features supported by the device (host)
55+ * (32 bits per set) - Read Only */
56+#define VIRTIO_MMIO_DEVICE_FEATURES 0x010
57+
58+/* Device (host) features set selector - Write Only */
59+#define VIRTIO_MMIO_DEVICE_FEATURES_SEL 0x014
60+
61+/* Bitmask of features activated by the driver (guest)
62+ * (32 bits per set) - Write Only */
63+#define VIRTIO_MMIO_DRIVER_FEATURES 0x020
64+
65+/* Activated features set selector - Write Only */
66+#define VIRTIO_MMIO_DRIVER_FEATURES_SEL 0x024
67+
68+
69+#ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */
70+
71+/* Guest's memory page size in bytes - Write Only */
72+#define VIRTIO_MMIO_GUEST_PAGE_SIZE 0x028
73+
74+#endif
75+
76+
77+/* Queue selector - Write Only */
78+#define VIRTIO_MMIO_QUEUE_SEL 0x030
79+
80+/* Maximum size of the currently selected queue - Read Only */
81+#define VIRTIO_MMIO_QUEUE_NUM_MAX 0x034
82+
83+/* Queue size for the currently selected queue - Write Only */
84+#define VIRTIO_MMIO_QUEUE_NUM 0x038
85+
86+
87+#ifndef VIRTIO_MMIO_NO_LEGACY /* LEGACY DEVICES ONLY! */
88+
89+/* Used Ring alignment for the currently selected queue - Write Only */
90+#define VIRTIO_MMIO_QUEUE_ALIGN 0x03c
91+
92+/* Guest's PFN for the currently selected queue - Read Write */
93+#define VIRTIO_MMIO_QUEUE_PFN 0x040
94+
95+#endif
96+
97+
98+/* Ready bit for the currently selected queue - Read Write */
99+#define VIRTIO_MMIO_QUEUE_READY 0x044
100+
101+/* Queue notifier - Write Only */
102+#define VIRTIO_MMIO_QUEUE_NOTIFY 0x050
103+
104+/* Interrupt status - Read Only */
105+#define VIRTIO_MMIO_INTERRUPT_STATUS 0x060
106+
107+/* Interrupt acknowledge - Write Only */
108+#define VIRTIO_MMIO_INTERRUPT_ACK 0x064
109+
110+/* Device status register - Read Write */
111+#define VIRTIO_MMIO_STATUS 0x070
112+
113+/* Selected queue's Descriptor Table address, 64 bits in two halves */
114+#define VIRTIO_MMIO_QUEUE_DESC_LOW 0x080
115+#define VIRTIO_MMIO_QUEUE_DESC_HIGH 0x084
116+
117+/* Selected queue's Available Ring address, 64 bits in two halves */
118+#define VIRTIO_MMIO_QUEUE_AVAIL_LOW 0x090
119+#define VIRTIO_MMIO_QUEUE_AVAIL_HIGH 0x094
120+
121+/* Selected queue's Used Ring address, 64 bits in two halves */
122+#define VIRTIO_MMIO_QUEUE_USED_LOW 0x0a0
123+#define VIRTIO_MMIO_QUEUE_USED_HIGH 0x0a4
124+
125+/* Configuration atomicity value */
126+#define VIRTIO_MMIO_CONFIG_GENERATION 0x0fc
127+
128+/* The config space is defined by each driver as
129+ * the per-driver configuration space - Read Write */
130+#define VIRTIO_MMIO_CONFIG 0x100
131+
132+
133+
134+/*
135+ * Interrupt flags (re: interrupt status & acknowledge registers)
136+ */
137+
138+#define VIRTIO_MMIO_INT_VRING (1 << 0)
139+#define VIRTIO_MMIO_INT_CONFIG (1 << 1)
140+
141+#endif
include/uapi/linux/virtio_pci.h+1−1
@@ -79,7 +79,7 @@ · 78 unmodified lines
7979 * configuration space */
8080 #define VIRTIO_PCI_CONFIG_OFF(msix_enabled) ((msix_enabled) ? 24 : 20)
8181 /* Deprecated: please use VIRTIO_PCI_CONFIG_OFF instead */
82−#define VIRTIO_PCI_CONFIG(dev) VIRTIO_PCI_CONFIG_OFF((dev)->msix_enabled)
82+#define VIRTIO_PCI_CONFIG(dev) VIRTIO_PCI_CONFIG_OFF((dev)->pci_dev->msix_enabled)
8383
8484 /* Virtio ABI version, this must match exactly */
8585 #define VIRTIO_PCI_ABI_VERSION 0

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t