aboutsummaryrefslogtreecommitdiffstats
path: root/include/uapi/linux
diff options
context:
space:
mode:
Diffstat (limited to 'include/uapi/linux')
-rw-r--r--include/uapi/linux/Kbuild96
-rw-r--r--include/uapi/linux/audit.h17
-rw-r--r--include/uapi/linux/bpf.h14
-rw-r--r--include/uapi/linux/btrfs.h1
-rw-r--r--include/uapi/linux/can/error.h1
-rw-r--r--include/uapi/linux/dlmconstants.h2
-rw-r--r--include/uapi/linux/dm-ioctl.h9
-rw-r--r--include/uapi/linux/elf-em.h1
-rw-r--r--include/uapi/linux/elf.h1
-rw-r--r--include/uapi/linux/ethtool.h28
-rw-r--r--include/uapi/linux/if_alg.h2
-rw-r--r--include/uapi/linux/if_bridge.h2
-rw-r--r--include/uapi/linux/if_link.h18
-rw-r--r--include/uapi/linux/if_tun.h17
-rw-r--r--include/uapi/linux/if_tunnel.h1
-rw-r--r--include/uapi/linux/ipv6.h1
-rw-r--r--include/uapi/linux/media-bus-format.h125
-rw-r--r--include/uapi/linux/msg.h28
-rw-r--r--include/uapi/linux/neighbour.h6
-rw-r--r--include/uapi/linux/net_tstamp.h3
-rw-r--r--include/uapi/linux/netfilter/ipset/ip_set.h8
-rw-r--r--include/uapi/linux/netfilter/nf_tables.h18
-rw-r--r--include/uapi/linux/netfilter/xt_set.h13
-rw-r--r--include/uapi/linux/nfc.h23
-rw-r--r--include/uapi/linux/nfsd/debug.h2
-rw-r--r--include/uapi/linux/nl80211.h147
-rw-r--r--include/uapi/linux/nvme.h46
-rw-r--r--include/uapi/linux/openvswitch.h53
-rw-r--r--include/uapi/linux/perf_event.h15
-rw-r--r--include/uapi/linux/prctl.h6
-rw-r--r--include/uapi/linux/rtnetlink.h1
-rw-r--r--include/uapi/linux/sched.h4
-rw-r--r--include/uapi/linux/sem.h18
-rw-r--r--include/uapi/linux/serial_core.h3
-rw-r--r--include/uapi/linux/serial_reg.h1
-rw-r--r--include/uapi/linux/snmp.h5
-rw-r--r--include/uapi/linux/sysctl.h1
-rw-r--r--include/uapi/linux/tc_act/Kbuild1
-rw-r--r--include/uapi/linux/tc_act/tc_vlan.h35
-rw-r--r--include/uapi/linux/tipc_netlink.h244
-rw-r--r--include/uapi/linux/tty_flags.h19
-rw-r--r--include/uapi/linux/v4l2-common.h2
-rw-r--r--include/uapi/linux/v4l2-mediabus.h219
-rw-r--r--include/uapi/linux/v4l2-subdev.h6
-rw-r--r--include/uapi/linux/videodev2.h101
-rw-r--r--include/uapi/linux/virtio_blk.h15
-rw-r--r--include/uapi/linux/virtio_config.h9
-rw-r--r--include/uapi/linux/virtio_console.h7
-rw-r--r--include/uapi/linux/virtio_net.h15
-rw-r--r--include/uapi/linux/virtio_ring.h45
-rw-r--r--include/uapi/linux/virtio_scsi.h164
-rw-r--r--include/uapi/linux/virtio_types.h46
-rw-r--r--include/uapi/linux/vt.h3
53 files changed, 1378 insertions, 290 deletions
diff --git a/include/uapi/linux/Kbuild b/include/uapi/linux/Kbuild
index b70237e8bc37..d8e1716707ba 100644
--- a/include/uapi/linux/Kbuild
+++ b/include/uapi/linux/Kbuild
@@ -37,27 +37,27 @@ header-y += aio_abi.h
37header-y += apm_bios.h 37header-y += apm_bios.h
38header-y += arcfb.h 38header-y += arcfb.h
39header-y += atalk.h 39header-y += atalk.h
40header-y += atm.h
41header-y += atm_eni.h
42header-y += atm_he.h
43header-y += atm_idt77105.h
44header-y += atm_nicstar.h
45header-y += atm_tcp.h
46header-y += atm_zatm.h
47header-y += atmapi.h 40header-y += atmapi.h
48header-y += atmarp.h 41header-y += atmarp.h
49header-y += atmbr2684.h 42header-y += atmbr2684.h
50header-y += atmclip.h 43header-y += atmclip.h
51header-y += atmdev.h 44header-y += atmdev.h
45header-y += atm_eni.h
46header-y += atm.h
47header-y += atm_he.h
48header-y += atm_idt77105.h
52header-y += atmioc.h 49header-y += atmioc.h
53header-y += atmlec.h 50header-y += atmlec.h
54header-y += atmmpc.h 51header-y += atmmpc.h
52header-y += atm_nicstar.h
55header-y += atmppp.h 53header-y += atmppp.h
56header-y += atmsap.h 54header-y += atmsap.h
57header-y += atmsvc.h 55header-y += atmsvc.h
56header-y += atm_tcp.h
57header-y += atm_zatm.h
58header-y += audit.h 58header-y += audit.h
59header-y += auto_fs.h
60header-y += auto_fs4.h 59header-y += auto_fs4.h
60header-y += auto_fs.h
61header-y += auxvec.h 61header-y += auxvec.h
62header-y += ax25.h 62header-y += ax25.h
63header-y += b1lli.h 63header-y += b1lli.h
@@ -67,8 +67,8 @@ header-y += bfs_fs.h
67header-y += binfmts.h 67header-y += binfmts.h
68header-y += blkpg.h 68header-y += blkpg.h
69header-y += blktrace_api.h 69header-y += blktrace_api.h
70header-y += bpf.h
71header-y += bpf_common.h 70header-y += bpf_common.h
71header-y += bpf.h
72header-y += bpqether.h 72header-y += bpqether.h
73header-y += bsg.h 73header-y += bsg.h
74header-y += btrfs.h 74header-y += btrfs.h
@@ -93,21 +93,21 @@ header-y += cyclades.h
93header-y += cycx_cfm.h 93header-y += cycx_cfm.h
94header-y += dcbnl.h 94header-y += dcbnl.h
95header-y += dccp.h 95header-y += dccp.h
96header-y += dlm.h 96header-y += dlmconstants.h
97header-y += dlm_device.h 97header-y += dlm_device.h
98header-y += dlm.h
98header-y += dlm_netlink.h 99header-y += dlm_netlink.h
99header-y += dlm_plock.h 100header-y += dlm_plock.h
100header-y += dlmconstants.h
101header-y += dm-ioctl.h 101header-y += dm-ioctl.h
102header-y += dm-log-userspace.h 102header-y += dm-log-userspace.h
103header-y += dn.h 103header-y += dn.h
104header-y += dqblk_xfs.h 104header-y += dqblk_xfs.h
105header-y += edd.h 105header-y += edd.h
106header-y += efs_fs_sb.h 106header-y += efs_fs_sb.h
107header-y += elfcore.h
107header-y += elf-em.h 108header-y += elf-em.h
108header-y += elf-fdpic.h 109header-y += elf-fdpic.h
109header-y += elf.h 110header-y += elf.h
110header-y += elfcore.h
111header-y += errno.h 111header-y += errno.h
112header-y += errqueue.h 112header-y += errqueue.h
113header-y += ethtool.h 113header-y += ethtool.h
@@ -125,22 +125,24 @@ header-y += filter.h
125header-y += firewire-cdev.h 125header-y += firewire-cdev.h
126header-y += firewire-constants.h 126header-y += firewire-constants.h
127header-y += flat.h 127header-y += flat.h
128header-y += fou.h
128header-y += fs.h 129header-y += fs.h
129header-y += fsl_hypervisor.h 130header-y += fsl_hypervisor.h
130header-y += fuse.h 131header-y += fuse.h
131header-y += futex.h 132header-y += futex.h
132header-y += gameport.h 133header-y += gameport.h
133header-y += gen_stats.h
134header-y += genetlink.h 134header-y += genetlink.h
135header-y += gen_stats.h
135header-y += gfs2_ondisk.h 136header-y += gfs2_ondisk.h
136header-y += gigaset_dev.h 137header-y += gigaset_dev.h
137header-y += hdlc.h
138header-y += hdlcdrv.h 138header-y += hdlcdrv.h
139header-y += hdlc.h
139header-y += hdreg.h 140header-y += hdreg.h
140header-y += hid.h
141header-y += hiddev.h 141header-y += hiddev.h
142header-y += hid.h
142header-y += hidraw.h 143header-y += hidraw.h
143header-y += hpet.h 144header-y += hpet.h
145header-y += hsr_netlink.h
144header-y += hyperv.h 146header-y += hyperv.h
145header-y += hysdn_if.h 147header-y += hysdn_if.h
146header-y += i2c-dev.h 148header-y += i2c-dev.h
@@ -149,7 +151,6 @@ header-y += i2o-dev.h
149header-y += i8k.h 151header-y += i8k.h
150header-y += icmp.h 152header-y += icmp.h
151header-y += icmpv6.h 153header-y += icmpv6.h
152header-y += if.h
153header-y += if_addr.h 154header-y += if_addr.h
154header-y += if_addrlabel.h 155header-y += if_addrlabel.h
155header-y += if_alg.h 156header-y += if_alg.h
@@ -163,6 +164,7 @@ header-y += if_ether.h
163header-y += if_fc.h 164header-y += if_fc.h
164header-y += if_fddi.h 165header-y += if_fddi.h
165header-y += if_frad.h 166header-y += if_frad.h
167header-y += if.h
166header-y += if_hippi.h 168header-y += if_hippi.h
167header-y += if_infiniband.h 169header-y += if_infiniband.h
168header-y += if_link.h 170header-y += if_link.h
@@ -180,40 +182,40 @@ header-y += if_tunnel.h
180header-y += if_vlan.h 182header-y += if_vlan.h
181header-y += if_x25.h 183header-y += if_x25.h
182header-y += igmp.h 184header-y += igmp.h
183header-y += in.h
184header-y += in6.h 185header-y += in6.h
185header-y += in_route.h
186header-y += inet_diag.h 186header-y += inet_diag.h
187header-y += in.h
187header-y += inotify.h 188header-y += inotify.h
188header-y += input.h 189header-y += input.h
190header-y += in_route.h
189header-y += ioctl.h 191header-y += ioctl.h
190header-y += ip.h
191header-y += ip6_tunnel.h 192header-y += ip6_tunnel.h
192header-y += ip_vs.h
193header-y += ipc.h 193header-y += ipc.h
194header-y += ip.h
194header-y += ipmi.h 195header-y += ipmi.h
195header-y += ipmi_msgdefs.h 196header-y += ipmi_msgdefs.h
196header-y += ipsec.h 197header-y += ipsec.h
197header-y += ipv6.h 198header-y += ipv6.h
198header-y += ipv6_route.h 199header-y += ipv6_route.h
200header-y += ip_vs.h
199header-y += ipx.h 201header-y += ipx.h
200header-y += irda.h 202header-y += irda.h
201header-y += irqnr.h 203header-y += irqnr.h
202header-y += isdn.h
203header-y += isdn_divertif.h 204header-y += isdn_divertif.h
204header-y += isdn_ppp.h 205header-y += isdn.h
205header-y += isdnif.h 206header-y += isdnif.h
207header-y += isdn_ppp.h
206header-y += iso_fs.h 208header-y += iso_fs.h
207header-y += ivtv.h
208header-y += ivtvfb.h 209header-y += ivtvfb.h
210header-y += ivtv.h
209header-y += ixjuser.h 211header-y += ixjuser.h
210header-y += jffs2.h 212header-y += jffs2.h
211header-y += joystick.h 213header-y += joystick.h
212header-y += kd.h
213header-y += kdev_t.h 214header-y += kdev_t.h
214header-y += kernel-page-flags.h 215header-y += kd.h
215header-y += kernel.h
216header-y += kernelcapi.h 216header-y += kernelcapi.h
217header-y += kernel.h
218header-y += kernel-page-flags.h
217header-y += kexec.h 219header-y += kexec.h
218header-y += keyboard.h 220header-y += keyboard.h
219header-y += keyctl.h 221header-y += keyctl.h
@@ -229,6 +231,7 @@ ifneq ($(wildcard $(srctree)/arch/$(SRCARCH)/include/uapi/asm/kvm_para.h \
229header-y += kvm_para.h 231header-y += kvm_para.h
230endif 232endif
231 233
234header-y += hw_breakpoint.h
232header-y += l2tp.h 235header-y += l2tp.h
233header-y += libc-compat.h 236header-y += libc-compat.h
234header-y += limits.h 237header-y += limits.h
@@ -241,6 +244,7 @@ header-y += map_to_7segment.h
241header-y += matroxfb.h 244header-y += matroxfb.h
242header-y += mdio.h 245header-y += mdio.h
243header-y += media.h 246header-y += media.h
247header-y += media-bus-format.h
244header-y += mei.h 248header-y += mei.h
245header-y += memfd.h 249header-y += memfd.h
246header-y += mempolicy.h 250header-y += mempolicy.h
@@ -251,44 +255,45 @@ header-y += mii.h
251header-y += minix_fs.h 255header-y += minix_fs.h
252header-y += mman.h 256header-y += mman.h
253header-y += mmtimer.h 257header-y += mmtimer.h
258header-y += mpls.h
254header-y += mqueue.h 259header-y += mqueue.h
255header-y += mroute.h
256header-y += mroute6.h 260header-y += mroute6.h
261header-y += mroute.h
257header-y += msdos_fs.h 262header-y += msdos_fs.h
258header-y += msg.h 263header-y += msg.h
259header-y += mtio.h 264header-y += mtio.h
260header-y += n_r3964.h
261header-y += nbd.h 265header-y += nbd.h
262header-y += ncp.h
263header-y += ncp_fs.h 266header-y += ncp_fs.h
267header-y += ncp.h
264header-y += ncp_mount.h 268header-y += ncp_mount.h
265header-y += ncp_no.h 269header-y += ncp_no.h
266header-y += neighbour.h 270header-y += neighbour.h
267header-y += net.h
268header-y += net_dropmon.h
269header-y += net_tstamp.h
270header-y += netconf.h 271header-y += netconf.h
271header-y += netdevice.h 272header-y += netdevice.h
272header-y += netlink_diag.h 273header-y += net_dropmon.h
273header-y += netfilter.h
274header-y += netfilter_arp.h 274header-y += netfilter_arp.h
275header-y += netfilter_bridge.h 275header-y += netfilter_bridge.h
276header-y += netfilter_decnet.h 276header-y += netfilter_decnet.h
277header-y += netfilter.h
277header-y += netfilter_ipv4.h 278header-y += netfilter_ipv4.h
278header-y += netfilter_ipv6.h 279header-y += netfilter_ipv6.h
280header-y += net.h
281header-y += netlink_diag.h
279header-y += netlink.h 282header-y += netlink.h
280header-y += netrom.h 283header-y += netrom.h
284header-y += net_tstamp.h
281header-y += nfc.h 285header-y += nfc.h
282header-y += nfs.h
283header-y += nfs2.h 286header-y += nfs2.h
284header-y += nfs3.h 287header-y += nfs3.h
285header-y += nfs4.h 288header-y += nfs4.h
286header-y += nfs4_mount.h 289header-y += nfs4_mount.h
290header-y += nfsacl.h
287header-y += nfs_fs.h 291header-y += nfs_fs.h
292header-y += nfs.h
288header-y += nfs_idmap.h 293header-y += nfs_idmap.h
289header-y += nfs_mount.h 294header-y += nfs_mount.h
290header-y += nfsacl.h
291header-y += nl80211.h 295header-y += nl80211.h
296header-y += n_r3964.h
292header-y += nubus.h 297header-y += nubus.h
293header-y += nvme.h 298header-y += nvme.h
294header-y += nvram.h 299header-y += nvram.h
@@ -308,16 +313,16 @@ header-y += pfkeyv2.h
308header-y += pg.h 313header-y += pg.h
309header-y += phantom.h 314header-y += phantom.h
310header-y += phonet.h 315header-y += phonet.h
316header-y += pktcdvd.h
311header-y += pkt_cls.h 317header-y += pkt_cls.h
312header-y += pkt_sched.h 318header-y += pkt_sched.h
313header-y += pktcdvd.h
314header-y += pmu.h 319header-y += pmu.h
315header-y += poll.h 320header-y += poll.h
316header-y += posix_types.h 321header-y += posix_types.h
317header-y += ppdev.h 322header-y += ppdev.h
318header-y += ppp-comp.h 323header-y += ppp-comp.h
319header-y += ppp-ioctl.h
320header-y += ppp_defs.h 324header-y += ppp_defs.h
325header-y += ppp-ioctl.h
321header-y += pps.h 326header-y += pps.h
322header-y += prctl.h 327header-y += prctl.h
323header-y += psci.h 328header-y += psci.h
@@ -349,13 +354,13 @@ header-y += seccomp.h
349header-y += securebits.h 354header-y += securebits.h
350header-y += selinux_netlink.h 355header-y += selinux_netlink.h
351header-y += sem.h 356header-y += sem.h
352header-y += serial.h
353header-y += serial_core.h 357header-y += serial_core.h
358header-y += serial.h
354header-y += serial_reg.h 359header-y += serial_reg.h
355header-y += serio.h 360header-y += serio.h
356header-y += shm.h 361header-y += shm.h
357header-y += signal.h
358header-y += signalfd.h 362header-y += signalfd.h
363header-y += signal.h
359header-y += smiapp.h 364header-y += smiapp.h
360header-y += snmp.h 365header-y += snmp.h
361header-y += sock_diag.h 366header-y += sock_diag.h
@@ -364,8 +369,8 @@ header-y += sockios.h
364header-y += som.h 369header-y += som.h
365header-y += sonet.h 370header-y += sonet.h
366header-y += sonypi.h 371header-y += sonypi.h
367header-y += sound.h
368header-y += soundcard.h 372header-y += soundcard.h
373header-y += sound.h
369header-y += stat.h 374header-y += stat.h
370header-y += stddef.h 375header-y += stddef.h
371header-y += string.h 376header-y += string.h
@@ -384,11 +389,12 @@ header-y += time.h
384header-y += times.h 389header-y += times.h
385header-y += timex.h 390header-y += timex.h
386header-y += tiocl.h 391header-y += tiocl.h
387header-y += tipc.h
388header-y += tipc_config.h 392header-y += tipc_config.h
393header-y += tipc_netlink.h
394header-y += tipc.h
389header-y += toshiba.h 395header-y += toshiba.h
390header-y += tty.h
391header-y += tty_flags.h 396header-y += tty_flags.h
397header-y += tty.h
392header-y += types.h 398header-y += types.h
393header-y += udf_fs_i.h 399header-y += udf_fs_i.h
394header-y += udp.h 400header-y += udp.h
@@ -424,6 +430,9 @@ header-y += virtio_net.h
424header-y += virtio_pci.h 430header-y += virtio_pci.h
425header-y += virtio_ring.h 431header-y += virtio_ring.h
426header-y += virtio_rng.h 432header-y += virtio_rng.h
433header-y += virtio_scsi.h
434header-y += virtio_types.h
435header-y += vm_sockets.h
427header-y += vt.h 436header-y += vt.h
428header-y += wait.h 437header-y += wait.h
429header-y += wanrouter.h 438header-y += wanrouter.h
@@ -433,6 +442,5 @@ header-y += wireless.h
433header-y += x25.h 442header-y += x25.h
434header-y += xattr.h 443header-y += xattr.h
435header-y += xfrm.h 444header-y += xfrm.h
436header-y += hw_breakpoint.h
437header-y += zorro.h 445header-y += zorro.h
438header-y += zorro_ids.h 446header-y += zorro_ids.h
diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h
index d4dbef14d4df..12e26683c706 100644
--- a/include/uapi/linux/audit.h
+++ b/include/uapi/linux/audit.h
@@ -322,9 +322,15 @@ enum {
322#define AUDIT_STATUS_BACKLOG_LIMIT 0x0010 322#define AUDIT_STATUS_BACKLOG_LIMIT 0x0010
323#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020 323#define AUDIT_STATUS_BACKLOG_WAIT_TIME 0x0020
324 324
325#define AUDIT_VERSION_BACKLOG_LIMIT 1 325#define AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT 0x00000001
326#define AUDIT_VERSION_BACKLOG_WAIT_TIME 2 326#define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
327#define AUDIT_VERSION_LATEST AUDIT_VERSION_BACKLOG_WAIT_TIME 327#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | \
328 AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME)
329
330/* deprecated: AUDIT_VERSION_* */
331#define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
332#define AUDIT_VERSION_BACKLOG_LIMIT AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT
333#define AUDIT_VERSION_BACKLOG_WAIT_TIME AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME
328 334
329 /* Failure-to-log actions */ 335 /* Failure-to-log actions */
330#define AUDIT_FAIL_SILENT 0 336#define AUDIT_FAIL_SILENT 0
@@ -404,7 +410,10 @@ struct audit_status {
404 __u32 backlog_limit; /* waiting messages limit */ 410 __u32 backlog_limit; /* waiting messages limit */
405 __u32 lost; /* messages lost */ 411 __u32 lost; /* messages lost */
406 __u32 backlog; /* messages waiting in queue */ 412 __u32 backlog; /* messages waiting in queue */
407 __u32 version; /* audit api version number */ 413 union {
414 __u32 version; /* deprecated: audit api version num */
415 __u32 feature_bitmap; /* bitmap of kernel audit features */
416 };
408 __u32 backlog_wait_time;/* message queue wait timeout */ 417 __u32 backlog_wait_time;/* message queue wait timeout */
409}; 418};
410 419
diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h
index d18316f9e9c4..45da7ec7d274 100644
--- a/include/uapi/linux/bpf.h
+++ b/include/uapi/linux/bpf.h
@@ -82,7 +82,7 @@ enum bpf_cmd {
82 82
83 /* create or update key/value pair in a given map 83 /* create or update key/value pair in a given map
84 * err = bpf(BPF_MAP_UPDATE_ELEM, union bpf_attr *attr, u32 size) 84 * err = bpf(BPF_MAP_UPDATE_ELEM, union bpf_attr *attr, u32 size)
85 * Using attr->map_fd, attr->key, attr->value 85 * Using attr->map_fd, attr->key, attr->value, attr->flags
86 * returns zero or negative error 86 * returns zero or negative error
87 */ 87 */
88 BPF_MAP_UPDATE_ELEM, 88 BPF_MAP_UPDATE_ELEM,
@@ -111,12 +111,20 @@ enum bpf_cmd {
111 111
112enum bpf_map_type { 112enum bpf_map_type {
113 BPF_MAP_TYPE_UNSPEC, 113 BPF_MAP_TYPE_UNSPEC,
114 BPF_MAP_TYPE_HASH,
115 BPF_MAP_TYPE_ARRAY,
114}; 116};
115 117
116enum bpf_prog_type { 118enum bpf_prog_type {
117 BPF_PROG_TYPE_UNSPEC, 119 BPF_PROG_TYPE_UNSPEC,
120 BPF_PROG_TYPE_SOCKET_FILTER,
118}; 121};
119 122
123/* flags for BPF_MAP_UPDATE_ELEM command */
124#define BPF_ANY 0 /* create new element or update existing */
125#define BPF_NOEXIST 1 /* create new element if it didn't exist */
126#define BPF_EXIST 2 /* update existing element */
127
120union bpf_attr { 128union bpf_attr {
121 struct { /* anonymous struct used by BPF_MAP_CREATE command */ 129 struct { /* anonymous struct used by BPF_MAP_CREATE command */
122 __u32 map_type; /* one of enum bpf_map_type */ 130 __u32 map_type; /* one of enum bpf_map_type */
@@ -132,6 +140,7 @@ union bpf_attr {
132 __aligned_u64 value; 140 __aligned_u64 value;
133 __aligned_u64 next_key; 141 __aligned_u64 next_key;
134 }; 142 };
143 __u64 flags;
135 }; 144 };
136 145
137 struct { /* anonymous struct used by BPF_PROG_LOAD command */ 146 struct { /* anonymous struct used by BPF_PROG_LOAD command */
@@ -150,6 +159,9 @@ union bpf_attr {
150 */ 159 */
151enum bpf_func_id { 160enum bpf_func_id {
152 BPF_FUNC_unspec, 161 BPF_FUNC_unspec,
162 BPF_FUNC_map_lookup_elem, /* void *map_lookup_elem(&map, &key) */
163 BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */
164 BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */
153 __BPF_FUNC_MAX_ID, 165 __BPF_FUNC_MAX_ID,
154}; 166};
155 167
diff --git a/include/uapi/linux/btrfs.h b/include/uapi/linux/btrfs.h
index 2f47824e7a36..611e1c5893b4 100644
--- a/include/uapi/linux/btrfs.h
+++ b/include/uapi/linux/btrfs.h
@@ -157,6 +157,7 @@ struct btrfs_ioctl_dev_replace_status_params {
157#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0 157#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NO_ERROR 0
158#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1 158#define BTRFS_IOCTL_DEV_REPLACE_RESULT_NOT_STARTED 1
159#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2 159#define BTRFS_IOCTL_DEV_REPLACE_RESULT_ALREADY_STARTED 2
160#define BTRFS_IOCTL_DEV_REPLACE_RESULT_SCRUB_INPROGRESS 3
160struct btrfs_ioctl_dev_replace_args { 161struct btrfs_ioctl_dev_replace_args {
161 __u64 cmd; /* in */ 162 __u64 cmd; /* in */
162 __u64 result; /* out */ 163 __u64 result; /* out */
diff --git a/include/uapi/linux/can/error.h b/include/uapi/linux/can/error.h
index c247446ab25a..1c508be9687f 100644
--- a/include/uapi/linux/can/error.h
+++ b/include/uapi/linux/can/error.h
@@ -71,6 +71,7 @@
71#define CAN_ERR_CRTL_TX_PASSIVE 0x20 /* reached error passive status TX */ 71#define CAN_ERR_CRTL_TX_PASSIVE 0x20 /* reached error passive status TX */
72 /* (at least one error counter exceeds */ 72 /* (at least one error counter exceeds */
73 /* the protocol-defined level of 127) */ 73 /* the protocol-defined level of 127) */
74#define CAN_ERR_CRTL_ACTIVE 0x40 /* recovered to error active state */
74 75
75/* error in CAN protocol (type) / data[2] */ 76/* error in CAN protocol (type) / data[2] */
76#define CAN_ERR_PROT_UNSPEC 0x00 /* unspecified */ 77#define CAN_ERR_PROT_UNSPEC 0x00 /* unspecified */
diff --git a/include/uapi/linux/dlmconstants.h b/include/uapi/linux/dlmconstants.h
index 47bf08dc7566..2857bdc5b27b 100644
--- a/include/uapi/linux/dlmconstants.h
+++ b/include/uapi/linux/dlmconstants.h
@@ -114,7 +114,7 @@
114 * 114 *
115 * DLM_LKF_ORPHAN 115 * DLM_LKF_ORPHAN
116 * 116 *
117 * not yet implemented 117 * Acquire an orphan lock.
118 * 118 *
119 * DLM_LKF_ALTPR 119 * DLM_LKF_ALTPR
120 * 120 *
diff --git a/include/uapi/linux/dm-ioctl.h b/include/uapi/linux/dm-ioctl.h
index 3315ab21f728..a570d7b5796c 100644
--- a/include/uapi/linux/dm-ioctl.h
+++ b/include/uapi/linux/dm-ioctl.h
@@ -267,9 +267,9 @@ enum {
267#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl) 267#define DM_DEV_SET_GEOMETRY _IOWR(DM_IOCTL, DM_DEV_SET_GEOMETRY_CMD, struct dm_ioctl)
268 268
269#define DM_VERSION_MAJOR 4 269#define DM_VERSION_MAJOR 4
270#define DM_VERSION_MINOR 28 270#define DM_VERSION_MINOR 29
271#define DM_VERSION_PATCHLEVEL 0 271#define DM_VERSION_PATCHLEVEL 0
272#define DM_VERSION_EXTRA "-ioctl (2014-09-17)" 272#define DM_VERSION_EXTRA "-ioctl (2014-10-28)"
273 273
274/* Status bits */ 274/* Status bits */
275#define DM_READONLY_FLAG (1 << 0) /* In/Out */ 275#define DM_READONLY_FLAG (1 << 0) /* In/Out */
@@ -352,4 +352,9 @@ enum {
352 */ 352 */
353#define DM_DEFERRED_REMOVE (1 << 17) /* In/Out */ 353#define DM_DEFERRED_REMOVE (1 << 17) /* In/Out */
354 354
355/*
356 * If set, the device is suspended internally.
357 */
358#define DM_INTERNAL_SUSPEND_FLAG (1 << 18) /* Out */
359
355#endif /* _LINUX_DM_IOCTL_H */ 360#endif /* _LINUX_DM_IOCTL_H */
diff --git a/include/uapi/linux/elf-em.h b/include/uapi/linux/elf-em.h
index aa90bc98b6e2..ae99f7743cf4 100644
--- a/include/uapi/linux/elf-em.h
+++ b/include/uapi/linux/elf-em.h
@@ -34,6 +34,7 @@
34#define EM_MN10300 89 /* Panasonic/MEI MN10300, AM33 */ 34#define EM_MN10300 89 /* Panasonic/MEI MN10300, AM33 */
35#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */ 35#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
36#define EM_BLACKFIN 106 /* ADI Blackfin Processor */ 36#define EM_BLACKFIN 106 /* ADI Blackfin Processor */
37#define EM_ALTERA_NIOS2 113 /* Altera Nios II soft-core processor */
37#define EM_TI_C6000 140 /* TI C6X DSPs */ 38#define EM_TI_C6000 140 /* TI C6X DSPs */
38#define EM_AARCH64 183 /* ARM 64 bit */ 39#define EM_AARCH64 183 /* ARM 64 bit */
39#define EM_FRV 0x5441 /* Fujitsu FR-V */ 40#define EM_FRV 0x5441 /* Fujitsu FR-V */
diff --git a/include/uapi/linux/elf.h b/include/uapi/linux/elf.h
index ea9bf2561b9e..71e1d0ed92f7 100644
--- a/include/uapi/linux/elf.h
+++ b/include/uapi/linux/elf.h
@@ -397,6 +397,7 @@ typedef struct elf64_shdr {
397#define NT_ARM_TLS 0x401 /* ARM TLS register */ 397#define NT_ARM_TLS 0x401 /* ARM TLS register */
398#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */ 398#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */
399#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */ 399#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
400#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
400#define NT_METAG_CBUF 0x500 /* Metag catch buffer registers */ 401#define NT_METAG_CBUF 0x500 /* Metag catch buffer registers */
401#define NT_METAG_RPIPE 0x501 /* Metag read pipeline state */ 402#define NT_METAG_RPIPE 0x501 /* Metag read pipeline state */
402#define NT_METAG_TLS 0x502 /* Metag TLS pointer */ 403#define NT_METAG_TLS 0x502 /* Metag TLS pointer */
diff --git a/include/uapi/linux/ethtool.h b/include/uapi/linux/ethtool.h
index 99b43056a6fe..5f66d9c2889d 100644
--- a/include/uapi/linux/ethtool.h
+++ b/include/uapi/linux/ethtool.h
@@ -534,6 +534,7 @@ struct ethtool_pauseparam {
534 * @ETH_SS_NTUPLE_FILTERS: Previously used with %ETHTOOL_GRXNTUPLE; 534 * @ETH_SS_NTUPLE_FILTERS: Previously used with %ETHTOOL_GRXNTUPLE;
535 * now deprecated 535 * now deprecated
536 * @ETH_SS_FEATURES: Device feature names 536 * @ETH_SS_FEATURES: Device feature names
537 * @ETH_SS_RSS_HASH_FUNCS: RSS hush function names
537 */ 538 */
538enum ethtool_stringset { 539enum ethtool_stringset {
539 ETH_SS_TEST = 0, 540 ETH_SS_TEST = 0,
@@ -541,6 +542,7 @@ enum ethtool_stringset {
541 ETH_SS_PRIV_FLAGS, 542 ETH_SS_PRIV_FLAGS,
542 ETH_SS_NTUPLE_FILTERS, 543 ETH_SS_NTUPLE_FILTERS,
543 ETH_SS_FEATURES, 544 ETH_SS_FEATURES,
545 ETH_SS_RSS_HASH_FUNCS,
544}; 546};
545 547
546/** 548/**
@@ -884,6 +886,8 @@ struct ethtool_rxfh_indir {
884 * @key_size: On entry, the array size of the user buffer for the hash key, 886 * @key_size: On entry, the array size of the user buffer for the hash key,
885 * which may be zero. On return from %ETHTOOL_GRSSH, the size of the 887 * which may be zero. On return from %ETHTOOL_GRSSH, the size of the
886 * hardware hash key. 888 * hardware hash key.
889 * @hfunc: Defines the current RSS hash function used by HW (or to be set to).
890 * Valid values are one of the %ETH_RSS_HASH_*.
887 * @rsvd: Reserved for future extensions. 891 * @rsvd: Reserved for future extensions.
888 * @rss_config: RX ring/queue index for each hash value i.e., indirection table 892 * @rss_config: RX ring/queue index for each hash value i.e., indirection table
889 * of @indir_size __u32 elements, followed by hash key of @key_size 893 * of @indir_size __u32 elements, followed by hash key of @key_size
@@ -893,14 +897,16 @@ struct ethtool_rxfh_indir {
893 * size should be returned. For %ETHTOOL_SRSSH, an @indir_size of 897 * size should be returned. For %ETHTOOL_SRSSH, an @indir_size of
894 * %ETH_RXFH_INDIR_NO_CHANGE means that indir table setting is not requested 898 * %ETH_RXFH_INDIR_NO_CHANGE means that indir table setting is not requested
895 * and a @indir_size of zero means the indir table should be reset to default 899 * and a @indir_size of zero means the indir table should be reset to default
896 * values. 900 * values. An hfunc of zero means that hash function setting is not requested.
897 */ 901 */
898struct ethtool_rxfh { 902struct ethtool_rxfh {
899 __u32 cmd; 903 __u32 cmd;
900 __u32 rss_context; 904 __u32 rss_context;
901 __u32 indir_size; 905 __u32 indir_size;
902 __u32 key_size; 906 __u32 key_size;
903 __u32 rsvd[2]; 907 __u8 hfunc;
908 __u8 rsvd8[3];
909 __u32 rsvd32;
904 __u32 rss_config[0]; 910 __u32 rss_config[0];
905}; 911};
906#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff 912#define ETH_RXFH_INDIR_NO_CHANGE 0xffffffff
@@ -1213,6 +1219,10 @@ enum ethtool_sfeatures_retval_bits {
1213#define SUPPORTED_40000baseCR4_Full (1 << 24) 1219#define SUPPORTED_40000baseCR4_Full (1 << 24)
1214#define SUPPORTED_40000baseSR4_Full (1 << 25) 1220#define SUPPORTED_40000baseSR4_Full (1 << 25)
1215#define SUPPORTED_40000baseLR4_Full (1 << 26) 1221#define SUPPORTED_40000baseLR4_Full (1 << 26)
1222#define SUPPORTED_56000baseKR4_Full (1 << 27)
1223#define SUPPORTED_56000baseCR4_Full (1 << 28)
1224#define SUPPORTED_56000baseSR4_Full (1 << 29)
1225#define SUPPORTED_56000baseLR4_Full (1 << 30)
1216 1226
1217#define ADVERTISED_10baseT_Half (1 << 0) 1227#define ADVERTISED_10baseT_Half (1 << 0)
1218#define ADVERTISED_10baseT_Full (1 << 1) 1228#define ADVERTISED_10baseT_Full (1 << 1)
@@ -1241,6 +1251,10 @@ enum ethtool_sfeatures_retval_bits {
1241#define ADVERTISED_40000baseCR4_Full (1 << 24) 1251#define ADVERTISED_40000baseCR4_Full (1 << 24)
1242#define ADVERTISED_40000baseSR4_Full (1 << 25) 1252#define ADVERTISED_40000baseSR4_Full (1 << 25)
1243#define ADVERTISED_40000baseLR4_Full (1 << 26) 1253#define ADVERTISED_40000baseLR4_Full (1 << 26)
1254#define ADVERTISED_56000baseKR4_Full (1 << 27)
1255#define ADVERTISED_56000baseCR4_Full (1 << 28)
1256#define ADVERTISED_56000baseSR4_Full (1 << 29)
1257#define ADVERTISED_56000baseLR4_Full (1 << 30)
1244 1258
1245/* The following are all involved in forcing a particular link 1259/* The following are all involved in forcing a particular link
1246 * mode for the device for setting things. When getting the 1260 * mode for the device for setting things. When getting the
@@ -1248,12 +1262,16 @@ enum ethtool_sfeatures_retval_bits {
1248 * it was forced up into this mode or autonegotiated. 1262 * it was forced up into this mode or autonegotiated.
1249 */ 1263 */
1250 1264
1251/* The forced speed, 10Mb, 100Mb, gigabit, 2.5Gb, 10GbE. */ 1265/* The forced speed, 10Mb, 100Mb, gigabit, [2.5|10|20|40|56]GbE. */
1252#define SPEED_10 10 1266#define SPEED_10 10
1253#define SPEED_100 100 1267#define SPEED_100 100
1254#define SPEED_1000 1000 1268#define SPEED_1000 1000
1255#define SPEED_2500 2500 1269#define SPEED_2500 2500
1256#define SPEED_10000 10000 1270#define SPEED_10000 10000
1271#define SPEED_20000 20000
1272#define SPEED_40000 40000
1273#define SPEED_56000 56000
1274
1257#define SPEED_UNKNOWN -1 1275#define SPEED_UNKNOWN -1
1258 1276
1259/* Duplex, half or full. */ 1277/* Duplex, half or full. */
@@ -1343,6 +1361,10 @@ enum ethtool_sfeatures_retval_bits {
1343#define ETH_MODULE_SFF_8079_LEN 256 1361#define ETH_MODULE_SFF_8079_LEN 256
1344#define ETH_MODULE_SFF_8472 0x2 1362#define ETH_MODULE_SFF_8472 0x2
1345#define ETH_MODULE_SFF_8472_LEN 512 1363#define ETH_MODULE_SFF_8472_LEN 512
1364#define ETH_MODULE_SFF_8636 0x3
1365#define ETH_MODULE_SFF_8636_LEN 256
1366#define ETH_MODULE_SFF_8436 0x4
1367#define ETH_MODULE_SFF_8436_LEN 256
1346 1368
1347/* Reset flags */ 1369/* Reset flags */
1348/* The reset() operation must clear the flags for the components which 1370/* The reset() operation must clear the flags for the components which
diff --git a/include/uapi/linux/if_alg.h b/include/uapi/linux/if_alg.h
index 0f9acce5b1ff..f2acd2fde1f3 100644
--- a/include/uapi/linux/if_alg.h
+++ b/include/uapi/linux/if_alg.h
@@ -32,6 +32,8 @@ struct af_alg_iv {
32#define ALG_SET_KEY 1 32#define ALG_SET_KEY 1
33#define ALG_SET_IV 2 33#define ALG_SET_IV 2
34#define ALG_SET_OP 3 34#define ALG_SET_OP 3
35#define ALG_SET_AEAD_ASSOCLEN 4
36#define ALG_SET_AEAD_AUTHSIZE 5
35 37
36/* Operations */ 38/* Operations */
37#define ALG_OP_DECRYPT 0 39#define ALG_OP_DECRYPT 0
diff --git a/include/uapi/linux/if_bridge.h b/include/uapi/linux/if_bridge.h
index 39f621a9fe82..b03ee8f62d3c 100644
--- a/include/uapi/linux/if_bridge.h
+++ b/include/uapi/linux/if_bridge.h
@@ -15,6 +15,7 @@
15 15
16#include <linux/types.h> 16#include <linux/types.h>
17#include <linux/if_ether.h> 17#include <linux/if_ether.h>
18#include <linux/in6.h>
18 19
19#define SYSFS_BRIDGE_ATTR "bridge" 20#define SYSFS_BRIDGE_ATTR "bridge"
20#define SYSFS_BRIDGE_FDB "brforward" 21#define SYSFS_BRIDGE_FDB "brforward"
@@ -104,6 +105,7 @@ struct __fdb_entry {
104 105
105#define BRIDGE_MODE_VEB 0 /* Default loopback mode */ 106#define BRIDGE_MODE_VEB 0 /* Default loopback mode */
106#define BRIDGE_MODE_VEPA 1 /* 802.1Qbg defined VEPA mode */ 107#define BRIDGE_MODE_VEPA 1 /* 802.1Qbg defined VEPA mode */
108#define BRIDGE_MODE_UNDEF 0xFFFF /* mode undefined */
107 109
108/* Bridge management nested attributes 110/* Bridge management nested attributes
109 * [IFLA_AF_SPEC] = { 111 * [IFLA_AF_SPEC] = {
diff --git a/include/uapi/linux/if_link.h b/include/uapi/linux/if_link.h
index 0bdb77e16875..f7d0d2d7173a 100644
--- a/include/uapi/linux/if_link.h
+++ b/include/uapi/linux/if_link.h
@@ -145,6 +145,7 @@ enum {
145 IFLA_CARRIER, 145 IFLA_CARRIER,
146 IFLA_PHYS_PORT_ID, 146 IFLA_PHYS_PORT_ID,
147 IFLA_CARRIER_CHANGES, 147 IFLA_CARRIER_CHANGES,
148 IFLA_PHYS_SWITCH_ID,
148 __IFLA_MAX 149 __IFLA_MAX
149}; 150};
150 151
@@ -243,6 +244,8 @@ enum {
243 IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave */ 244 IFLA_BRPORT_FAST_LEAVE, /* multicast fast leave */
244 IFLA_BRPORT_LEARNING, /* mac learning */ 245 IFLA_BRPORT_LEARNING, /* mac learning */
245 IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */ 246 IFLA_BRPORT_UNICAST_FLOOD, /* flood unicast traffic */
247 IFLA_BRPORT_PROXYARP, /* proxy ARP */
248 IFLA_BRPORT_LEARNING_SYNC, /* mac learning sync from device */
246 __IFLA_BRPORT_MAX 249 __IFLA_BRPORT_MAX
247}; 250};
248#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1) 251#define IFLA_BRPORT_MAX (__IFLA_BRPORT_MAX - 1)
@@ -329,6 +332,21 @@ enum macvlan_macaddr_mode {
329 332
330#define MACVLAN_FLAG_NOPROMISC 1 333#define MACVLAN_FLAG_NOPROMISC 1
331 334
335/* IPVLAN section */
336enum {
337 IFLA_IPVLAN_UNSPEC,
338 IFLA_IPVLAN_MODE,
339 __IFLA_IPVLAN_MAX
340};
341
342#define IFLA_IPVLAN_MAX (__IFLA_IPVLAN_MAX - 1)
343
344enum ipvlan_mode {
345 IPVLAN_MODE_L2 = 0,
346 IPVLAN_MODE_L3,
347 IPVLAN_MODE_MAX
348};
349
332/* VXLAN section */ 350/* VXLAN section */
333enum { 351enum {
334 IFLA_VXLAN_UNSPEC, 352 IFLA_VXLAN_UNSPEC,
diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h
index e9502dd1ee2c..18b2403982f9 100644
--- a/include/uapi/linux/if_tun.h
+++ b/include/uapi/linux/if_tun.h
@@ -22,21 +22,11 @@
22 22
23/* Read queue size */ 23/* Read queue size */
24#define TUN_READQ_SIZE 500 24#define TUN_READQ_SIZE 500
25 25/* TUN device type flags: deprecated. Use IFF_TUN/IFF_TAP instead. */
26/* TUN device flags */ 26#define TUN_TUN_DEV IFF_TUN
27#define TUN_TUN_DEV 0x0001 27#define TUN_TAP_DEV IFF_TAP
28#define TUN_TAP_DEV 0x0002
29#define TUN_TYPE_MASK 0x000f 28#define TUN_TYPE_MASK 0x000f
30 29
31#define TUN_FASYNC 0x0010
32#define TUN_NOCHECKSUM 0x0020
33#define TUN_NO_PI 0x0040
34/* This flag has no real effect */
35#define TUN_ONE_QUEUE 0x0080
36#define TUN_PERSIST 0x0100
37#define TUN_VNET_HDR 0x0200
38#define TUN_TAP_MQ 0x0400
39
40/* Ioctl defines */ 30/* Ioctl defines */
41#define TUNSETNOCSUM _IOW('T', 200, int) 31#define TUNSETNOCSUM _IOW('T', 200, int)
42#define TUNSETDEBUG _IOW('T', 201, int) 32#define TUNSETDEBUG _IOW('T', 201, int)
@@ -67,6 +57,7 @@
67#define IFF_ONE_QUEUE 0x2000 57#define IFF_ONE_QUEUE 0x2000
68#define IFF_VNET_HDR 0x4000 58#define IFF_VNET_HDR 0x4000
69#define IFF_TUN_EXCL 0x8000 59#define IFF_TUN_EXCL 0x8000
60#define IFF_VNET_LE 0x10000
70#define IFF_MULTI_QUEUE 0x0100 61#define IFF_MULTI_QUEUE 0x0100
71#define IFF_ATTACH_QUEUE 0x0200 62#define IFF_ATTACH_QUEUE 0x0200
72#define IFF_DETACH_QUEUE 0x0400 63#define IFF_DETACH_QUEUE 0x0400
diff --git a/include/uapi/linux/if_tunnel.h b/include/uapi/linux/if_tunnel.h
index 280d9e092283..bd3cc11a431f 100644
--- a/include/uapi/linux/if_tunnel.h
+++ b/include/uapi/linux/if_tunnel.h
@@ -69,6 +69,7 @@ enum tunnel_encap_types {
69 69
70#define TUNNEL_ENCAP_FLAG_CSUM (1<<0) 70#define TUNNEL_ENCAP_FLAG_CSUM (1<<0)
71#define TUNNEL_ENCAP_FLAG_CSUM6 (1<<1) 71#define TUNNEL_ENCAP_FLAG_CSUM6 (1<<1)
72#define TUNNEL_ENCAP_FLAG_REMCSUM (1<<2)
72 73
73/* SIT-mode i_flags */ 74/* SIT-mode i_flags */
74#define SIT_ISATAP 0x0001 75#define SIT_ISATAP 0x0001
diff --git a/include/uapi/linux/ipv6.h b/include/uapi/linux/ipv6.h
index efa2666f4b8a..e863d088b9a5 100644
--- a/include/uapi/linux/ipv6.h
+++ b/include/uapi/linux/ipv6.h
@@ -164,6 +164,7 @@ enum {
164 DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL, 164 DEVCONF_MLDV2_UNSOLICITED_REPORT_INTERVAL,
165 DEVCONF_SUPPRESS_FRAG_NDISC, 165 DEVCONF_SUPPRESS_FRAG_NDISC,
166 DEVCONF_ACCEPT_RA_FROM_LOCAL, 166 DEVCONF_ACCEPT_RA_FROM_LOCAL,
167 DEVCONF_USE_OPTIMISTIC,
167 DEVCONF_MAX 168 DEVCONF_MAX
168}; 169};
169 170
diff --git a/include/uapi/linux/media-bus-format.h b/include/uapi/linux/media-bus-format.h
new file mode 100644
index 000000000000..23b40908be30
--- /dev/null
+++ b/include/uapi/linux/media-bus-format.h
@@ -0,0 +1,125 @@
1/*
2 * Media Bus API header
3 *
4 * Copyright (C) 2009, Guennadi Liakhovetski <g.liakhovetski@gmx.de>
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef __LINUX_MEDIA_BUS_FORMAT_H
12#define __LINUX_MEDIA_BUS_FORMAT_H
13
14/*
15 * These bus formats uniquely identify data formats on the data bus. Format 0
16 * is reserved, MEDIA_BUS_FMT_FIXED shall be used by host-client pairs, where
17 * the data format is fixed. Additionally, "2X8" means that one pixel is
18 * transferred in two 8-bit samples, "BE" or "LE" specify in which order those
19 * samples are transferred over the bus: "LE" means that the least significant
20 * bits are transferred first, "BE" means that the most significant bits are
21 * transferred first, and "PADHI" and "PADLO" define which bits - low or high,
22 * in the incomplete high byte, are filled with padding bits.
23 *
24 * The bus formats are grouped by type, bus_width, bits per component, samples
25 * per pixel and order of subsamples. Numerical values are sorted using generic
26 * numerical sort order (8 thus comes before 10).
27 *
28 * As their value can't change when a new bus format is inserted in the
29 * enumeration, the bus formats are explicitly given a numerical value. The next
30 * free values for each category are listed below, update them when inserting
31 * new pixel codes.
32 */
33
34#define MEDIA_BUS_FMT_FIXED 0x0001
35
36/* RGB - next is 0x100e */
37#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_BE 0x1001
38#define MEDIA_BUS_FMT_RGB444_2X8_PADHI_LE 0x1002
39#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_BE 0x1003
40#define MEDIA_BUS_FMT_RGB555_2X8_PADHI_LE 0x1004
41#define MEDIA_BUS_FMT_BGR565_2X8_BE 0x1005
42#define MEDIA_BUS_FMT_BGR565_2X8_LE 0x1006
43#define MEDIA_BUS_FMT_RGB565_2X8_BE 0x1007
44#define MEDIA_BUS_FMT_RGB565_2X8_LE 0x1008
45#define MEDIA_BUS_FMT_RGB666_1X18 0x1009
46#define MEDIA_BUS_FMT_RGB888_1X24 0x100a
47#define MEDIA_BUS_FMT_RGB888_2X12_BE 0x100b
48#define MEDIA_BUS_FMT_RGB888_2X12_LE 0x100c
49#define MEDIA_BUS_FMT_ARGB8888_1X32 0x100d
50
51/* YUV (including grey) - next is 0x2024 */
52#define MEDIA_BUS_FMT_Y8_1X8 0x2001
53#define MEDIA_BUS_FMT_UV8_1X8 0x2015
54#define MEDIA_BUS_FMT_UYVY8_1_5X8 0x2002
55#define MEDIA_BUS_FMT_VYUY8_1_5X8 0x2003
56#define MEDIA_BUS_FMT_YUYV8_1_5X8 0x2004
57#define MEDIA_BUS_FMT_YVYU8_1_5X8 0x2005
58#define MEDIA_BUS_FMT_UYVY8_2X8 0x2006
59#define MEDIA_BUS_FMT_VYUY8_2X8 0x2007
60#define MEDIA_BUS_FMT_YUYV8_2X8 0x2008
61#define MEDIA_BUS_FMT_YVYU8_2X8 0x2009
62#define MEDIA_BUS_FMT_Y10_1X10 0x200a
63#define MEDIA_BUS_FMT_UYVY10_2X10 0x2018
64#define MEDIA_BUS_FMT_VYUY10_2X10 0x2019
65#define MEDIA_BUS_FMT_YUYV10_2X10 0x200b
66#define MEDIA_BUS_FMT_YVYU10_2X10 0x200c
67#define MEDIA_BUS_FMT_Y12_1X12 0x2013
68#define MEDIA_BUS_FMT_UYVY8_1X16 0x200f
69#define MEDIA_BUS_FMT_VYUY8_1X16 0x2010
70#define MEDIA_BUS_FMT_YUYV8_1X16 0x2011
71#define MEDIA_BUS_FMT_YVYU8_1X16 0x2012
72#define MEDIA_BUS_FMT_YDYUYDYV8_1X16 0x2014
73#define MEDIA_BUS_FMT_UYVY10_1X20 0x201a
74#define MEDIA_BUS_FMT_VYUY10_1X20 0x201b
75#define MEDIA_BUS_FMT_YUYV10_1X20 0x200d
76#define MEDIA_BUS_FMT_YVYU10_1X20 0x200e
77#define MEDIA_BUS_FMT_YUV10_1X30 0x2016
78#define MEDIA_BUS_FMT_AYUV8_1X32 0x2017
79#define MEDIA_BUS_FMT_UYVY12_2X12 0x201c
80#define MEDIA_BUS_FMT_VYUY12_2X12 0x201d
81#define MEDIA_BUS_FMT_YUYV12_2X12 0x201e
82#define MEDIA_BUS_FMT_YVYU12_2X12 0x201f
83#define MEDIA_BUS_FMT_UYVY12_1X24 0x2020
84#define MEDIA_BUS_FMT_VYUY12_1X24 0x2021
85#define MEDIA_BUS_FMT_YUYV12_1X24 0x2022
86#define MEDIA_BUS_FMT_YVYU12_1X24 0x2023
87
88/* Bayer - next is 0x3019 */
89#define MEDIA_BUS_FMT_SBGGR8_1X8 0x3001
90#define MEDIA_BUS_FMT_SGBRG8_1X8 0x3013
91#define MEDIA_BUS_FMT_SGRBG8_1X8 0x3002
92#define MEDIA_BUS_FMT_SRGGB8_1X8 0x3014
93#define MEDIA_BUS_FMT_SBGGR10_ALAW8_1X8 0x3015
94#define MEDIA_BUS_FMT_SGBRG10_ALAW8_1X8 0x3016
95#define MEDIA_BUS_FMT_SGRBG10_ALAW8_1X8 0x3017
96#define MEDIA_BUS_FMT_SRGGB10_ALAW8_1X8 0x3018
97#define MEDIA_BUS_FMT_SBGGR10_DPCM8_1X8 0x300b
98#define MEDIA_BUS_FMT_SGBRG10_DPCM8_1X8 0x300c
99#define MEDIA_BUS_FMT_SGRBG10_DPCM8_1X8 0x3009
100#define MEDIA_BUS_FMT_SRGGB10_DPCM8_1X8 0x300d
101#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_BE 0x3003
102#define MEDIA_BUS_FMT_SBGGR10_2X8_PADHI_LE 0x3004
103#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_BE 0x3005
104#define MEDIA_BUS_FMT_SBGGR10_2X8_PADLO_LE 0x3006
105#define MEDIA_BUS_FMT_SBGGR10_1X10 0x3007
106#define MEDIA_BUS_FMT_SGBRG10_1X10 0x300e
107#define MEDIA_BUS_FMT_SGRBG10_1X10 0x300a
108#define MEDIA_BUS_FMT_SRGGB10_1X10 0x300f
109#define MEDIA_BUS_FMT_SBGGR12_1X12 0x3008
110#define MEDIA_BUS_FMT_SGBRG12_1X12 0x3010
111#define MEDIA_BUS_FMT_SGRBG12_1X12 0x3011
112#define MEDIA_BUS_FMT_SRGGB12_1X12 0x3012
113
114/* JPEG compressed formats - next is 0x4002 */
115#define MEDIA_BUS_FMT_JPEG_1X8 0x4001
116
117/* Vendor specific formats - next is 0x5002 */
118
119/* S5C73M3 sensor specific interleaved UYVY and JPEG */
120#define MEDIA_BUS_FMT_S5C_UYVY_JPEG_1X8 0x5001
121
122/* HSV - next is 0x6002 */
123#define MEDIA_BUS_FMT_AHSV8888_1X32 0x6001
124
125#endif /* __LINUX_MEDIA_BUS_FORMAT_H */
diff --git a/include/uapi/linux/msg.h b/include/uapi/linux/msg.h
index a70375526578..f51c8001dbe5 100644
--- a/include/uapi/linux/msg.h
+++ b/include/uapi/linux/msg.h
@@ -51,16 +51,28 @@ struct msginfo {
51}; 51};
52 52
53/* 53/*
54 * Scaling factor to compute msgmni: 54 * MSGMNI, MSGMAX and MSGMNB are default values which can be
55 * the memory dedicated to msg queues (msgmni * msgmnb) should occupy 55 * modified by sysctl.
56 * at most 1/MSG_MEM_SCALE of the lowmem (see the formula in ipc/msg.c): 56 *
57 * up to 8MB : msgmni = 16 (MSGMNI) 57 * MSGMNI is the upper limit for the number of messages queues per
58 * 4 GB : msgmni = 8K 58 * namespace.
59 * more than 16 GB : msgmni = 32K (IPCMNI) 59 * It has been chosen to be as large possible without facilitating
60 * scenarios where userspace causes overflows when adjusting the limits via
61 * operations of the form retrieve current limit; add X; update limit".
62 *
63 * MSGMNB is the default size of a new message queue. Non-root tasks can
64 * decrease the size with msgctl(IPC_SET), root tasks
65 * (actually: CAP_SYS_RESOURCE) can both increase and decrease the queue
66 * size. The optimal value is application dependent.
67 * 16384 is used because it was always used (since 0.99.10)
68 *
69 * MAXMAX is the maximum size of an individual message, it's a global
70 * (per-namespace) limit that applies for all message queues.
71 * It's set to 1/2 of MSGMNB, to ensure that at least two messages fit into
72 * the queue. This is also an arbitrary choice (since 2.6.0).
60 */ 73 */
61#define MSG_MEM_SCALE 32
62 74
63#define MSGMNI 16 /* <= IPCMNI */ /* max # of msg queue identifiers */ 75#define MSGMNI 32000 /* <= IPCMNI */ /* max # of msg queue identifiers */
64#define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */ 76#define MSGMAX 8192 /* <= INT_MAX */ /* max size of message (bytes) */
65#define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */ 77#define MSGMNB 16384 /* <= INT_MAX */ /* default max size of a message queue */
66 78
diff --git a/include/uapi/linux/neighbour.h b/include/uapi/linux/neighbour.h
index 4a1d7e96dfe3..f3d77f9f1e0b 100644
--- a/include/uapi/linux/neighbour.h
+++ b/include/uapi/linux/neighbour.h
@@ -35,11 +35,11 @@ enum {
35 */ 35 */
36 36
37#define NTF_USE 0x01 37#define NTF_USE 0x01
38#define NTF_PROXY 0x08 /* == ATF_PUBL */
39#define NTF_ROUTER 0x80
40
41#define NTF_SELF 0x02 38#define NTF_SELF 0x02
42#define NTF_MASTER 0x04 39#define NTF_MASTER 0x04
40#define NTF_PROXY 0x08 /* == ATF_PUBL */
41#define NTF_EXT_LEARNED 0x10
42#define NTF_ROUTER 0x80
43 43
44/* 44/*
45 * Neighbor Cache Entry States. 45 * Neighbor Cache Entry States.
diff --git a/include/uapi/linux/net_tstamp.h b/include/uapi/linux/net_tstamp.h
index ff354021bb69..edbc888ceb51 100644
--- a/include/uapi/linux/net_tstamp.h
+++ b/include/uapi/linux/net_tstamp.h
@@ -23,8 +23,9 @@ enum {
23 SOF_TIMESTAMPING_OPT_ID = (1<<7), 23 SOF_TIMESTAMPING_OPT_ID = (1<<7),
24 SOF_TIMESTAMPING_TX_SCHED = (1<<8), 24 SOF_TIMESTAMPING_TX_SCHED = (1<<8),
25 SOF_TIMESTAMPING_TX_ACK = (1<<9), 25 SOF_TIMESTAMPING_TX_ACK = (1<<9),
26 SOF_TIMESTAMPING_OPT_CMSG = (1<<10),
26 27
27 SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_TX_ACK, 28 SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_CMSG,
28 SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) | 29 SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) |
29 SOF_TIMESTAMPING_LAST 30 SOF_TIMESTAMPING_LAST
30}; 31};
diff --git a/include/uapi/linux/netfilter/ipset/ip_set.h b/include/uapi/linux/netfilter/ipset/ip_set.h
index ca03119111a2..5ab4e60894cf 100644
--- a/include/uapi/linux/netfilter/ipset/ip_set.h
+++ b/include/uapi/linux/netfilter/ipset/ip_set.h
@@ -256,11 +256,17 @@ enum {
256 IPSET_COUNTER_GT, 256 IPSET_COUNTER_GT,
257}; 257};
258 258
259struct ip_set_counter_match { 259/* Backward compatibility for set match v3 */
260struct ip_set_counter_match0 {
260 __u8 op; 261 __u8 op;
261 __u64 value; 262 __u64 value;
262}; 263};
263 264
265struct ip_set_counter_match {
266 __aligned_u64 value;
267 __u8 op;
268};
269
264/* Interface to iptables/ip6tables */ 270/* Interface to iptables/ip6tables */
265 271
266#define SO_IP_SET 83 272#define SO_IP_SET 83
diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
index f31fe7b660a5..832bc46db78b 100644
--- a/include/uapi/linux/netfilter/nf_tables.h
+++ b/include/uapi/linux/netfilter/nf_tables.h
@@ -579,6 +579,7 @@ enum nft_exthdr_attributes {
579 * @NFT_META_CPU: cpu id through smp_processor_id() 579 * @NFT_META_CPU: cpu id through smp_processor_id()
580 * @NFT_META_IIFGROUP: packet input interface group 580 * @NFT_META_IIFGROUP: packet input interface group
581 * @NFT_META_OIFGROUP: packet output interface group 581 * @NFT_META_OIFGROUP: packet output interface group
582 * @NFT_META_CGROUP: socket control group (skb->sk->sk_classid)
582 */ 583 */
583enum nft_meta_keys { 584enum nft_meta_keys {
584 NFT_META_LEN, 585 NFT_META_LEN,
@@ -604,6 +605,7 @@ enum nft_meta_keys {
604 NFT_META_CPU, 605 NFT_META_CPU,
605 NFT_META_IIFGROUP, 606 NFT_META_IIFGROUP,
606 NFT_META_OIFGROUP, 607 NFT_META_OIFGROUP,
608 NFT_META_CGROUP,
607}; 609};
608 610
609/** 611/**
@@ -838,6 +840,22 @@ enum nft_masq_attributes {
838#define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1) 840#define NFTA_MASQ_MAX (__NFTA_MASQ_MAX - 1)
839 841
840/** 842/**
843 * enum nft_redir_attributes - nf_tables redirect expression netlink attributes
844 *
845 * @NFTA_REDIR_REG_PROTO_MIN: source register of proto range start (NLA_U32: nft_registers)
846 * @NFTA_REDIR_REG_PROTO_MAX: source register of proto range end (NLA_U32: nft_registers)
847 * @NFTA_REDIR_FLAGS: NAT flags (see NF_NAT_RANGE_* in linux/netfilter/nf_nat.h) (NLA_U32)
848 */
849enum nft_redir_attributes {
850 NFTA_REDIR_UNSPEC,
851 NFTA_REDIR_REG_PROTO_MIN,
852 NFTA_REDIR_REG_PROTO_MAX,
853 NFTA_REDIR_FLAGS,
854 __NFTA_REDIR_MAX
855};
856#define NFTA_REDIR_MAX (__NFTA_REDIR_MAX - 1)
857
858/**
841 * enum nft_gen_attributes - nf_tables ruleset generation attributes 859 * enum nft_gen_attributes - nf_tables ruleset generation attributes
842 * 860 *
843 * @NFTA_GEN_ID: Ruleset generation ID (NLA_U32) 861 * @NFTA_GEN_ID: Ruleset generation ID (NLA_U32)
diff --git a/include/uapi/linux/netfilter/xt_set.h b/include/uapi/linux/netfilter/xt_set.h
index d6a1df1f2947..d4e02348384c 100644
--- a/include/uapi/linux/netfilter/xt_set.h
+++ b/include/uapi/linux/netfilter/xt_set.h
@@ -66,8 +66,8 @@ struct xt_set_info_target_v2 {
66 66
67struct xt_set_info_match_v3 { 67struct xt_set_info_match_v3 {
68 struct xt_set_info match_set; 68 struct xt_set_info match_set;
69 struct ip_set_counter_match packets; 69 struct ip_set_counter_match0 packets;
70 struct ip_set_counter_match bytes; 70 struct ip_set_counter_match0 bytes;
71 __u32 flags; 71 __u32 flags;
72}; 72};
73 73
@@ -81,4 +81,13 @@ struct xt_set_info_target_v3 {
81 __u32 timeout; 81 __u32 timeout;
82}; 82};
83 83
84/* Revision 4 match */
85
86struct xt_set_info_match_v4 {
87 struct xt_set_info match_set;
88 struct ip_set_counter_match packets;
89 struct ip_set_counter_match bytes;
90 __u32 flags;
91};
92
84#endif /*_XT_SET_H*/ 93#endif /*_XT_SET_H*/
diff --git a/include/uapi/linux/nfc.h b/include/uapi/linux/nfc.h
index 9b19b4461928..8119255feae4 100644
--- a/include/uapi/linux/nfc.h
+++ b/include/uapi/linux/nfc.h
@@ -116,6 +116,7 @@ enum nfc_commands {
116 NFC_EVENT_SE_TRANSACTION, 116 NFC_EVENT_SE_TRANSACTION,
117 NFC_CMD_GET_SE, 117 NFC_CMD_GET_SE,
118 NFC_CMD_SE_IO, 118 NFC_CMD_SE_IO,
119 NFC_CMD_ACTIVATE_TARGET,
119/* private: internal use only */ 120/* private: internal use only */
120 __NFC_CMD_AFTER_LAST 121 __NFC_CMD_AFTER_LAST
121}; 122};
@@ -196,15 +197,19 @@ enum nfc_sdp_attr {
196}; 197};
197#define NFC_SDP_ATTR_MAX (__NFC_SDP_ATTR_AFTER_LAST - 1) 198#define NFC_SDP_ATTR_MAX (__NFC_SDP_ATTR_AFTER_LAST - 1)
198 199
199#define NFC_DEVICE_NAME_MAXSIZE 8 200#define NFC_DEVICE_NAME_MAXSIZE 8
200#define NFC_NFCID1_MAXSIZE 10 201#define NFC_NFCID1_MAXSIZE 10
201#define NFC_NFCID2_MAXSIZE 8 202#define NFC_NFCID2_MAXSIZE 8
202#define NFC_NFCID3_MAXSIZE 10 203#define NFC_NFCID3_MAXSIZE 10
203#define NFC_SENSB_RES_MAXSIZE 12 204#define NFC_SENSB_RES_MAXSIZE 12
204#define NFC_SENSF_RES_MAXSIZE 18 205#define NFC_SENSF_RES_MAXSIZE 18
205#define NFC_GB_MAXSIZE 48 206#define NFC_ATR_REQ_MAXSIZE 64
206#define NFC_FIRMWARE_NAME_MAXSIZE 32 207#define NFC_ATR_RES_MAXSIZE 64
207#define NFC_ISO15693_UID_MAXSIZE 8 208#define NFC_ATR_REQ_GB_MAXSIZE 48
209#define NFC_ATR_RES_GB_MAXSIZE 47
210#define NFC_GB_MAXSIZE 48
211#define NFC_FIRMWARE_NAME_MAXSIZE 32
212#define NFC_ISO15693_UID_MAXSIZE 8
208 213
209/* NFC protocols */ 214/* NFC protocols */
210#define NFC_PROTO_JEWEL 1 215#define NFC_PROTO_JEWEL 1
diff --git a/include/uapi/linux/nfsd/debug.h b/include/uapi/linux/nfsd/debug.h
index a6f453c740b8..1fdc95bb2375 100644
--- a/include/uapi/linux/nfsd/debug.h
+++ b/include/uapi/linux/nfsd/debug.h
@@ -15,7 +15,7 @@
15 * Enable debugging for nfsd. 15 * Enable debugging for nfsd.
16 * Requires RPC_DEBUG. 16 * Requires RPC_DEBUG.
17 */ 17 */
18#ifdef RPC_DEBUG 18#if IS_ENABLED(CONFIG_SUNRPC_DEBUG)
19# define NFSD_DEBUG 1 19# define NFSD_DEBUG 1
20#endif 20#endif
21 21
diff --git a/include/uapi/linux/nl80211.h b/include/uapi/linux/nl80211.h
index 4b28dc07bcb1..b37bd5a1cb82 100644
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -227,7 +227,11 @@
227 * the interface identified by %NL80211_ATTR_IFINDEX. 227 * the interface identified by %NL80211_ATTR_IFINDEX.
228 * @NL80211_CMD_DEL_STATION: Remove a station identified by %NL80211_ATTR_MAC 228 * @NL80211_CMD_DEL_STATION: Remove a station identified by %NL80211_ATTR_MAC
229 * or, if no MAC address given, all stations, on the interface identified 229 * or, if no MAC address given, all stations, on the interface identified
230 * by %NL80211_ATTR_IFINDEX. 230 * by %NL80211_ATTR_IFINDEX. %NL80211_ATTR_MGMT_SUBTYPE and
231 * %NL80211_ATTR_REASON_CODE can optionally be used to specify which type
232 * of disconnection indication should be sent to the station
233 * (Deauthentication or Disassociation frame and reason code for that
234 * frame).
231 * 235 *
232 * @NL80211_CMD_GET_MPATH: Get mesh path attributes for mesh path to 236 * @NL80211_CMD_GET_MPATH: Get mesh path attributes for mesh path to
233 * destination %NL80211_ATTR_MAC on the interface identified by 237 * destination %NL80211_ATTR_MAC on the interface identified by
@@ -639,7 +643,18 @@
639 * @NL80211_CMD_CH_SWITCH_NOTIFY: An AP or GO may decide to switch channels 643 * @NL80211_CMD_CH_SWITCH_NOTIFY: An AP or GO may decide to switch channels
640 * independently of the userspace SME, send this event indicating 644 * independently of the userspace SME, send this event indicating
641 * %NL80211_ATTR_IFINDEX is now on %NL80211_ATTR_WIPHY_FREQ and the 645 * %NL80211_ATTR_IFINDEX is now on %NL80211_ATTR_WIPHY_FREQ and the
642 * attributes determining channel width. 646 * attributes determining channel width. This indication may also be
647 * sent when a remotely-initiated switch (e.g., when a STA receives a CSA
648 * from the remote AP) is completed;
649 *
650 * @NL80211_CMD_CH_SWITCH_STARTED_NOTIFY: Notify that a channel switch
651 * has been started on an interface, regardless of the initiator
652 * (ie. whether it was requested from a remote device or
653 * initiated on our own). It indicates that
654 * %NL80211_ATTR_IFINDEX will be on %NL80211_ATTR_WIPHY_FREQ
655 * after %NL80211_ATTR_CH_SWITCH_COUNT TBTT's. The userspace may
656 * decide to react to this indication by requesting other
657 * interfaces to change channel as well.
643 * 658 *
644 * @NL80211_CMD_START_P2P_DEVICE: Start the given P2P Device, identified by 659 * @NL80211_CMD_START_P2P_DEVICE: Start the given P2P Device, identified by
645 * its %NL80211_ATTR_WDEV identifier. It must have been created with 660 * its %NL80211_ATTR_WDEV identifier. It must have been created with
@@ -738,6 +753,27 @@
738 * before removing a station entry entirely, or before disassociating 753 * before removing a station entry entirely, or before disassociating
739 * or similar, cleanup will happen in the driver/device in this case. 754 * or similar, cleanup will happen in the driver/device in this case.
740 * 755 *
756 * @NL80211_CMD_GET_MPP: Get mesh path attributes for mesh proxy path to
757 * destination %NL80211_ATTR_MAC on the interface identified by
758 * %NL80211_ATTR_IFINDEX.
759 *
760 * @NL80211_CMD_JOIN_OCB: Join the OCB network. The center frequency and
761 * bandwidth of a channel must be given.
762 * @NL80211_CMD_LEAVE_OCB: Leave the OCB network -- no special arguments, the
763 * network is determined by the network interface.
764 *
765 * @NL80211_CMD_TDLS_CHANNEL_SWITCH: Start channel-switching with a TDLS peer,
766 * identified by the %NL80211_ATTR_MAC parameter. A target channel is
767 * provided via %NL80211_ATTR_WIPHY_FREQ and other attributes determining
768 * channel width/type. The target operating class is given via
769 * %NL80211_ATTR_OPER_CLASS.
770 * The driver is responsible for continually initiating channel-switching
771 * operations and returning to the base channel for communication with the
772 * AP.
773 * @NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH: Stop channel-switching with a TDLS
774 * peer given by %NL80211_ATTR_MAC. Both peers must be on the base channel
775 * when this command completes.
776 *
741 * @NL80211_CMD_MAX: highest used command number 777 * @NL80211_CMD_MAX: highest used command number
742 * @__NL80211_CMD_AFTER_LAST: internal use 778 * @__NL80211_CMD_AFTER_LAST: internal use
743 */ 779 */
@@ -912,6 +948,16 @@ enum nl80211_commands {
912 NL80211_CMD_ADD_TX_TS, 948 NL80211_CMD_ADD_TX_TS,
913 NL80211_CMD_DEL_TX_TS, 949 NL80211_CMD_DEL_TX_TS,
914 950
951 NL80211_CMD_GET_MPP,
952
953 NL80211_CMD_JOIN_OCB,
954 NL80211_CMD_LEAVE_OCB,
955
956 NL80211_CMD_CH_SWITCH_STARTED_NOTIFY,
957
958 NL80211_CMD_TDLS_CHANNEL_SWITCH,
959 NL80211_CMD_TDLS_CANCEL_CHANNEL_SWITCH,
960
915 /* add new commands above here */ 961 /* add new commands above here */
916 962
917 /* used to define NL80211_CMD_MAX below */ 963 /* used to define NL80211_CMD_MAX below */
@@ -1606,9 +1652,9 @@ enum nl80211_commands {
1606 * @NL80211_ATTR_TDLS_PEER_CAPABILITY: flags for TDLS peer capabilities, u32. 1652 * @NL80211_ATTR_TDLS_PEER_CAPABILITY: flags for TDLS peer capabilities, u32.
1607 * As specified in the &enum nl80211_tdls_peer_capability. 1653 * As specified in the &enum nl80211_tdls_peer_capability.
1608 * 1654 *
1609 * @NL80211_ATTR_IFACE_SOCKET_OWNER: flag attribute, if set during interface 1655 * @NL80211_ATTR_SOCKET_OWNER: Flag attribute, if set during interface
1610 * creation then the new interface will be owned by the netlink socket 1656 * creation then the new interface will be owned by the netlink socket
1611 * that created it and will be destroyed when the socket is closed 1657 * that created it and will be destroyed when the socket is closed.
1612 * 1658 *
1613 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is 1659 * @NL80211_ATTR_TDLS_INITIATOR: flag attribute indicating the current end is
1614 * the TDLS link initiator. 1660 * the TDLS link initiator.
@@ -1638,6 +1684,11 @@ enum nl80211_commands {
1638 * @NL80211_ATTR_SMPS_MODE: SMPS mode to use (ap mode). see 1684 * @NL80211_ATTR_SMPS_MODE: SMPS mode to use (ap mode). see
1639 * &enum nl80211_smps_mode. 1685 * &enum nl80211_smps_mode.
1640 * 1686 *
1687 * @NL80211_ATTR_OPER_CLASS: operating class
1688 *
1689 * @NL80211_ATTR_MAC_MASK: MAC address mask
1690 *
1691 * @NUM_NL80211_ATTR: total number of nl80211_attrs available
1641 * @NL80211_ATTR_MAX: highest attribute number currently defined 1692 * @NL80211_ATTR_MAX: highest attribute number currently defined
1642 * @__NL80211_ATTR_AFTER_LAST: internal use 1693 * @__NL80211_ATTR_AFTER_LAST: internal use
1643 */ 1694 */
@@ -1973,7 +2024,7 @@ enum nl80211_attrs {
1973 2024
1974 NL80211_ATTR_TDLS_PEER_CAPABILITY, 2025 NL80211_ATTR_TDLS_PEER_CAPABILITY,
1975 2026
1976 NL80211_ATTR_IFACE_SOCKET_OWNER, 2027 NL80211_ATTR_SOCKET_OWNER,
1977 2028
1978 NL80211_ATTR_CSA_C_OFFSETS_TX, 2029 NL80211_ATTR_CSA_C_OFFSETS_TX,
1979 NL80211_ATTR_MAX_CSA_COUNTERS, 2030 NL80211_ATTR_MAX_CSA_COUNTERS,
@@ -1990,15 +2041,21 @@ enum nl80211_attrs {
1990 2041
1991 NL80211_ATTR_SMPS_MODE, 2042 NL80211_ATTR_SMPS_MODE,
1992 2043
2044 NL80211_ATTR_OPER_CLASS,
2045
2046 NL80211_ATTR_MAC_MASK,
2047
1993 /* add attributes here, update the policy in nl80211.c */ 2048 /* add attributes here, update the policy in nl80211.c */
1994 2049
1995 __NL80211_ATTR_AFTER_LAST, 2050 __NL80211_ATTR_AFTER_LAST,
2051 NUM_NL80211_ATTR = __NL80211_ATTR_AFTER_LAST,
1996 NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1 2052 NL80211_ATTR_MAX = __NL80211_ATTR_AFTER_LAST - 1
1997}; 2053};
1998 2054
1999/* source-level API compatibility */ 2055/* source-level API compatibility */
2000#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION 2056#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
2001#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG 2057#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
2058#define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER
2002 2059
2003/* 2060/*
2004 * Allow user space programs to use #ifdef on new attributes by defining them 2061 * Allow user space programs to use #ifdef on new attributes by defining them
@@ -2064,6 +2121,8 @@ enum nl80211_attrs {
2064 * and therefore can't be created in the normal ways, use the 2121 * and therefore can't be created in the normal ways, use the
2065 * %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE 2122 * %NL80211_CMD_START_P2P_DEVICE and %NL80211_CMD_STOP_P2P_DEVICE
2066 * commands to create and destroy one 2123 * commands to create and destroy one
2124 * @NL80211_IF_TYPE_OCB: Outside Context of a BSS
2125 * This mode corresponds to the MIB variable dot11OCBActivated=true
2067 * @NL80211_IFTYPE_MAX: highest interface type number currently defined 2126 * @NL80211_IFTYPE_MAX: highest interface type number currently defined
2068 * @NUM_NL80211_IFTYPES: number of defined interface types 2127 * @NUM_NL80211_IFTYPES: number of defined interface types
2069 * 2128 *
@@ -2083,6 +2142,7 @@ enum nl80211_iftype {
2083 NL80211_IFTYPE_P2P_CLIENT, 2142 NL80211_IFTYPE_P2P_CLIENT,
2084 NL80211_IFTYPE_P2P_GO, 2143 NL80211_IFTYPE_P2P_GO,
2085 NL80211_IFTYPE_P2P_DEVICE, 2144 NL80211_IFTYPE_P2P_DEVICE,
2145 NL80211_IFTYPE_OCB,
2086 2146
2087 /* keep last */ 2147 /* keep last */
2088 NUM_NL80211_IFTYPES, 2148 NUM_NL80211_IFTYPES,
@@ -2631,6 +2691,11 @@ enum nl80211_sched_scan_match_attr {
2631 * @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated 2691 * @NL80211_RRF_AUTO_BW: maximum available bandwidth should be calculated
2632 * base on contiguous rules and wider channels will be allowed to cross 2692 * base on contiguous rules and wider channels will be allowed to cross
2633 * multiple contiguous/overlapping frequency ranges. 2693 * multiple contiguous/overlapping frequency ranges.
2694 * @NL80211_RRF_GO_CONCURRENT: See &NL80211_FREQUENCY_ATTR_GO_CONCURRENT
2695 * @NL80211_RRF_NO_HT40MINUS: channels can't be used in HT40- operation
2696 * @NL80211_RRF_NO_HT40PLUS: channels can't be used in HT40+ operation
2697 * @NL80211_RRF_NO_80MHZ: 80MHz operation not allowed
2698 * @NL80211_RRF_NO_160MHZ: 160MHz operation not allowed
2634 */ 2699 */
2635enum nl80211_reg_rule_flags { 2700enum nl80211_reg_rule_flags {
2636 NL80211_RRF_NO_OFDM = 1<<0, 2701 NL80211_RRF_NO_OFDM = 1<<0,
@@ -2643,11 +2708,18 @@ enum nl80211_reg_rule_flags {
2643 NL80211_RRF_NO_IR = 1<<7, 2708 NL80211_RRF_NO_IR = 1<<7,
2644 __NL80211_RRF_NO_IBSS = 1<<8, 2709 __NL80211_RRF_NO_IBSS = 1<<8,
2645 NL80211_RRF_AUTO_BW = 1<<11, 2710 NL80211_RRF_AUTO_BW = 1<<11,
2711 NL80211_RRF_GO_CONCURRENT = 1<<12,
2712 NL80211_RRF_NO_HT40MINUS = 1<<13,
2713 NL80211_RRF_NO_HT40PLUS = 1<<14,
2714 NL80211_RRF_NO_80MHZ = 1<<15,
2715 NL80211_RRF_NO_160MHZ = 1<<16,
2646}; 2716};
2647 2717
2648#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR 2718#define NL80211_RRF_PASSIVE_SCAN NL80211_RRF_NO_IR
2649#define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR 2719#define NL80211_RRF_NO_IBSS NL80211_RRF_NO_IR
2650#define NL80211_RRF_NO_IR NL80211_RRF_NO_IR 2720#define NL80211_RRF_NO_IR NL80211_RRF_NO_IR
2721#define NL80211_RRF_NO_HT40 (NL80211_RRF_NO_HT40MINUS |\
2722 NL80211_RRF_NO_HT40PLUS)
2651 2723
2652/* For backport compatibility with older userspace */ 2724/* For backport compatibility with older userspace */
2653#define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS) 2725#define NL80211_RRF_NO_IR_ALL (NL80211_RRF_NO_IR | __NL80211_RRF_NO_IBSS)
@@ -3379,6 +3451,8 @@ enum nl80211_ps_state {
3379 * interval in which %NL80211_ATTR_CQM_TXE_PKTS and 3451 * interval in which %NL80211_ATTR_CQM_TXE_PKTS and
3380 * %NL80211_ATTR_CQM_TXE_RATE must be satisfied before generating an 3452 * %NL80211_ATTR_CQM_TXE_RATE must be satisfied before generating an
3381 * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting. 3453 * %NL80211_CMD_NOTIFY_CQM. Set to 0 to turn off TX error reporting.
3454 * @NL80211_ATTR_CQM_BEACON_LOSS_EVENT: flag attribute that's set in a beacon
3455 * loss event
3382 * @__NL80211_ATTR_CQM_AFTER_LAST: internal 3456 * @__NL80211_ATTR_CQM_AFTER_LAST: internal
3383 * @NL80211_ATTR_CQM_MAX: highest key attribute 3457 * @NL80211_ATTR_CQM_MAX: highest key attribute
3384 */ 3458 */
@@ -3391,6 +3465,7 @@ enum nl80211_attr_cqm {
3391 NL80211_ATTR_CQM_TXE_RATE, 3465 NL80211_ATTR_CQM_TXE_RATE,
3392 NL80211_ATTR_CQM_TXE_PKTS, 3466 NL80211_ATTR_CQM_TXE_PKTS,
3393 NL80211_ATTR_CQM_TXE_INTVL, 3467 NL80211_ATTR_CQM_TXE_INTVL,
3468 NL80211_ATTR_CQM_BEACON_LOSS_EVENT,
3394 3469
3395 /* keep last */ 3470 /* keep last */
3396 __NL80211_ATTR_CQM_AFTER_LAST, 3471 __NL80211_ATTR_CQM_AFTER_LAST,
@@ -3403,9 +3478,7 @@ enum nl80211_attr_cqm {
3403 * configured threshold 3478 * configured threshold
3404 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the 3479 * @NL80211_CQM_RSSI_THRESHOLD_EVENT_HIGH: The RSSI is higher than the
3405 * configured threshold 3480 * configured threshold
3406 * @NL80211_CQM_RSSI_BEACON_LOSS_EVENT: The device experienced beacon loss. 3481 * @NL80211_CQM_RSSI_BEACON_LOSS_EVENT: (reserved, never sent)
3407 * (Note that deauth/disassoc will still follow if the AP is not
3408 * available. This event might get used as roaming event, etc.)
3409 */ 3482 */
3410enum nl80211_cqm_rssi_threshold_event { 3483enum nl80211_cqm_rssi_threshold_event {
3411 NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW, 3484 NL80211_CQM_RSSI_THRESHOLD_EVENT_LOW,
@@ -3545,6 +3618,25 @@ struct nl80211_pattern_support {
3545 * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS: For wakeup reporting only, 3618 * @NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS: For wakeup reporting only,
3546 * the TCP connection ran out of tokens to use for data to send to the 3619 * the TCP connection ran out of tokens to use for data to send to the
3547 * service 3620 * service
3621 * @NL80211_WOWLAN_TRIG_NET_DETECT: wake up when a configured network
3622 * is detected. This is a nested attribute that contains the
3623 * same attributes used with @NL80211_CMD_START_SCHED_SCAN. It
3624 * specifies how the scan is performed (e.g. the interval and the
3625 * channels to scan) as well as the scan results that will
3626 * trigger a wake (i.e. the matchsets).
3627 * @NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS: nested attribute
3628 * containing an array with information about what triggered the
3629 * wake up. If no elements are present in the array, it means
3630 * that the information is not available. If more than one
3631 * element is present, it means that more than one match
3632 * occurred.
3633 * Each element in the array is a nested attribute that contains
3634 * one optional %NL80211_ATTR_SSID attribute and one optional
3635 * %NL80211_ATTR_SCAN_FREQUENCIES attribute. At least one of
3636 * these attributes must be present. If
3637 * %NL80211_ATTR_SCAN_FREQUENCIES contains more than one
3638 * frequency, it means that the match occurred in more than one
3639 * channel.
3548 * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers 3640 * @NUM_NL80211_WOWLAN_TRIG: number of wake on wireless triggers
3549 * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number 3641 * @MAX_NL80211_WOWLAN_TRIG: highest wowlan trigger attribute number
3550 * 3642 *
@@ -3570,6 +3662,8 @@ enum nl80211_wowlan_triggers {
3570 NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH, 3662 NL80211_WOWLAN_TRIG_WAKEUP_TCP_MATCH,
3571 NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST, 3663 NL80211_WOWLAN_TRIG_WAKEUP_TCP_CONNLOST,
3572 NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS, 3664 NL80211_WOWLAN_TRIG_WAKEUP_TCP_NOMORETOKENS,
3665 NL80211_WOWLAN_TRIG_NET_DETECT,
3666 NL80211_WOWLAN_TRIG_NET_DETECT_RESULTS,
3573 3667
3574 /* keep last */ 3668 /* keep last */
3575 NUM_NL80211_WOWLAN_TRIG, 3669 NUM_NL80211_WOWLAN_TRIG,
@@ -4042,6 +4136,27 @@ enum nl80211_ap_sme_features {
4042 * multiplexing powersave, ie. can turn off all but one chain 4136 * multiplexing powersave, ie. can turn off all but one chain
4043 * and then wake the rest up as required after, for example, 4137 * and then wake the rest up as required after, for example,
4044 * rts/cts handshake. 4138 * rts/cts handshake.
4139 * @NL80211_FEATURE_SUPPORTS_WMM_ADMISSION: the device supports setting up WMM
4140 * TSPEC sessions (TID aka TSID 0-7) with the %NL80211_CMD_ADD_TX_TS
4141 * command. Standard IEEE 802.11 TSPEC setup is not yet supported, it
4142 * needs to be able to handle Block-Ack agreements and other things.
4143 * @NL80211_FEATURE_MAC_ON_CREATE: Device supports configuring
4144 * the vif's MAC address upon creation.
4145 * See 'macaddr' field in the vif_params (cfg80211.h).
4146 * @NL80211_FEATURE_TDLS_CHANNEL_SWITCH: Driver supports channel switching when
4147 * operating as a TDLS peer.
4148 * @NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR: This device/driver supports using a
4149 * random MAC address during scan (if the device is unassociated); the
4150 * %NL80211_SCAN_FLAG_RANDOM_ADDR flag may be set for scans and the MAC
4151 * address mask/value will be used.
4152 * @NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR: This device/driver supports
4153 * using a random MAC address for every scan iteration during scheduled
4154 * scan (while not associated), the %NL80211_SCAN_FLAG_RANDOM_ADDR may
4155 * be set for scheduled scan and the MAC address mask/value will be used.
4156 * @NL80211_FEATURE_ND_RANDOM_MAC_ADDR: This device/driver supports using a
4157 * random MAC address for every scan iteration during "net detect", i.e.
4158 * scan in unassociated WoWLAN, the %NL80211_SCAN_FLAG_RANDOM_ADDR may
4159 * be set for scheduled scan and the MAC address mask/value will be used.
4045 */ 4160 */
4046enum nl80211_feature_flags { 4161enum nl80211_feature_flags {
4047 NL80211_FEATURE_SK_TX_STATUS = 1 << 0, 4162 NL80211_FEATURE_SK_TX_STATUS = 1 << 0,
@@ -4070,6 +4185,12 @@ enum nl80211_feature_flags {
4070 NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23, 4185 NL80211_FEATURE_ACKTO_ESTIMATION = 1 << 23,
4071 NL80211_FEATURE_STATIC_SMPS = 1 << 24, 4186 NL80211_FEATURE_STATIC_SMPS = 1 << 24,
4072 NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25, 4187 NL80211_FEATURE_DYNAMIC_SMPS = 1 << 25,
4188 NL80211_FEATURE_SUPPORTS_WMM_ADMISSION = 1 << 26,
4189 NL80211_FEATURE_MAC_ON_CREATE = 1 << 27,
4190 NL80211_FEATURE_TDLS_CHANNEL_SWITCH = 1 << 28,
4191 NL80211_FEATURE_SCAN_RANDOM_MAC_ADDR = 1 << 29,
4192 NL80211_FEATURE_SCHED_SCAN_RANDOM_MAC_ADDR = 1 << 30,
4193 NL80211_FEATURE_ND_RANDOM_MAC_ADDR = 1 << 31,
4073}; 4194};
4074 4195
4075/** 4196/**
@@ -4118,11 +4239,21 @@ enum nl80211_connect_failed_reason {
4118 * dangerous because will destroy stations performance as a lot of frames 4239 * dangerous because will destroy stations performance as a lot of frames
4119 * will be lost while scanning off-channel, therefore it must be used only 4240 * will be lost while scanning off-channel, therefore it must be used only
4120 * when really needed 4241 * when really needed
4242 * @NL80211_SCAN_FLAG_RANDOM_ADDR: use a random MAC address for this scan (or
4243 * for scheduled scan: a different one for every scan iteration). When the
4244 * flag is set, depending on device capabilities the @NL80211_ATTR_MAC and
4245 * @NL80211_ATTR_MAC_MASK attributes may also be given in which case only
4246 * the masked bits will be preserved from the MAC address and the remainder
4247 * randomised. If the attributes are not given full randomisation (46 bits,
4248 * locally administered 1, multicast 0) is assumed.
4249 * This flag must not be requested when the feature isn't supported, check
4250 * the nl80211 feature flags for the device.
4121 */ 4251 */
4122enum nl80211_scan_flags { 4252enum nl80211_scan_flags {
4123 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0, 4253 NL80211_SCAN_FLAG_LOW_PRIORITY = 1<<0,
4124 NL80211_SCAN_FLAG_FLUSH = 1<<1, 4254 NL80211_SCAN_FLAG_FLUSH = 1<<1,
4125 NL80211_SCAN_FLAG_AP = 1<<2, 4255 NL80211_SCAN_FLAG_AP = 1<<2,
4256 NL80211_SCAN_FLAG_RANDOM_ADDR = 1<<3,
4126}; 4257};
4127 4258
4128/** 4259/**
diff --git a/include/uapi/linux/nvme.h b/include/uapi/linux/nvme.h
index 29a7d8619d8d..26386cf3db44 100644
--- a/include/uapi/linux/nvme.h
+++ b/include/uapi/linux/nvme.h
@@ -181,6 +181,22 @@ enum {
181 NVME_LBART_ATTRIB_HIDE = 1 << 1, 181 NVME_LBART_ATTRIB_HIDE = 1 << 1,
182}; 182};
183 183
184struct nvme_reservation_status {
185 __le32 gen;
186 __u8 rtype;
187 __u8 regctl[2];
188 __u8 resv5[2];
189 __u8 ptpls;
190 __u8 resv10[13];
191 struct {
192 __le16 cntlid;
193 __u8 rcsts;
194 __u8 resv3[5];
195 __le64 hostid;
196 __le64 rkey;
197 } regctl_ds[];
198};
199
184/* I/O commands */ 200/* I/O commands */
185 201
186enum nvme_opcode { 202enum nvme_opcode {
@@ -189,7 +205,12 @@ enum nvme_opcode {
189 nvme_cmd_read = 0x02, 205 nvme_cmd_read = 0x02,
190 nvme_cmd_write_uncor = 0x04, 206 nvme_cmd_write_uncor = 0x04,
191 nvme_cmd_compare = 0x05, 207 nvme_cmd_compare = 0x05,
208 nvme_cmd_write_zeroes = 0x08,
192 nvme_cmd_dsm = 0x09, 209 nvme_cmd_dsm = 0x09,
210 nvme_cmd_resv_register = 0x0d,
211 nvme_cmd_resv_report = 0x0e,
212 nvme_cmd_resv_acquire = 0x11,
213 nvme_cmd_resv_release = 0x15,
193}; 214};
194 215
195struct nvme_common_command { 216struct nvme_common_command {
@@ -305,7 +326,11 @@ enum {
305 NVME_FEAT_IRQ_CONFIG = 0x09, 326 NVME_FEAT_IRQ_CONFIG = 0x09,
306 NVME_FEAT_WRITE_ATOMIC = 0x0a, 327 NVME_FEAT_WRITE_ATOMIC = 0x0a,
307 NVME_FEAT_ASYNC_EVENT = 0x0b, 328 NVME_FEAT_ASYNC_EVENT = 0x0b,
308 NVME_FEAT_SW_PROGRESS = 0x0c, 329 NVME_FEAT_AUTO_PST = 0x0c,
330 NVME_FEAT_SW_PROGRESS = 0x80,
331 NVME_FEAT_HOST_ID = 0x81,
332 NVME_FEAT_RESV_MASK = 0x82,
333 NVME_FEAT_RESV_PERSIST = 0x83,
309 NVME_LOG_ERROR = 0x01, 334 NVME_LOG_ERROR = 0x01,
310 NVME_LOG_SMART = 0x02, 335 NVME_LOG_SMART = 0x02,
311 NVME_LOG_FW_SLOT = 0x03, 336 NVME_LOG_FW_SLOT = 0x03,
@@ -440,9 +465,15 @@ enum {
440 NVME_SC_FUSED_MISSING = 0xa, 465 NVME_SC_FUSED_MISSING = 0xa,
441 NVME_SC_INVALID_NS = 0xb, 466 NVME_SC_INVALID_NS = 0xb,
442 NVME_SC_CMD_SEQ_ERROR = 0xc, 467 NVME_SC_CMD_SEQ_ERROR = 0xc,
468 NVME_SC_SGL_INVALID_LAST = 0xd,
469 NVME_SC_SGL_INVALID_COUNT = 0xe,
470 NVME_SC_SGL_INVALID_DATA = 0xf,
471 NVME_SC_SGL_INVALID_METADATA = 0x10,
472 NVME_SC_SGL_INVALID_TYPE = 0x11,
443 NVME_SC_LBA_RANGE = 0x80, 473 NVME_SC_LBA_RANGE = 0x80,
444 NVME_SC_CAP_EXCEEDED = 0x81, 474 NVME_SC_CAP_EXCEEDED = 0x81,
445 NVME_SC_NS_NOT_READY = 0x82, 475 NVME_SC_NS_NOT_READY = 0x82,
476 NVME_SC_RESERVATION_CONFLICT = 0x83,
446 NVME_SC_CQ_INVALID = 0x100, 477 NVME_SC_CQ_INVALID = 0x100,
447 NVME_SC_QID_INVALID = 0x101, 478 NVME_SC_QID_INVALID = 0x101,
448 NVME_SC_QUEUE_SIZE = 0x102, 479 NVME_SC_QUEUE_SIZE = 0x102,
@@ -454,7 +485,15 @@ enum {
454 NVME_SC_INVALID_VECTOR = 0x108, 485 NVME_SC_INVALID_VECTOR = 0x108,
455 NVME_SC_INVALID_LOG_PAGE = 0x109, 486 NVME_SC_INVALID_LOG_PAGE = 0x109,
456 NVME_SC_INVALID_FORMAT = 0x10a, 487 NVME_SC_INVALID_FORMAT = 0x10a,
488 NVME_SC_FIRMWARE_NEEDS_RESET = 0x10b,
489 NVME_SC_INVALID_QUEUE = 0x10c,
490 NVME_SC_FEATURE_NOT_SAVEABLE = 0x10d,
491 NVME_SC_FEATURE_NOT_CHANGEABLE = 0x10e,
492 NVME_SC_FEATURE_NOT_PER_NS = 0x10f,
493 NVME_SC_FW_NEEDS_RESET_SUBSYS = 0x110,
457 NVME_SC_BAD_ATTRIBUTES = 0x180, 494 NVME_SC_BAD_ATTRIBUTES = 0x180,
495 NVME_SC_INVALID_PI = 0x181,
496 NVME_SC_READ_ONLY = 0x182,
458 NVME_SC_WRITE_FAULT = 0x280, 497 NVME_SC_WRITE_FAULT = 0x280,
459 NVME_SC_READ_ERROR = 0x281, 498 NVME_SC_READ_ERROR = 0x281,
460 NVME_SC_GUARD_CHECK = 0x282, 499 NVME_SC_GUARD_CHECK = 0x282,
@@ -489,7 +528,7 @@ struct nvme_user_io {
489 __u16 appmask; 528 __u16 appmask;
490}; 529};
491 530
492struct nvme_admin_cmd { 531struct nvme_passthru_cmd {
493 __u8 opcode; 532 __u8 opcode;
494 __u8 flags; 533 __u8 flags;
495 __u16 rsvd1; 534 __u16 rsvd1;
@@ -510,8 +549,11 @@ struct nvme_admin_cmd {
510 __u32 result; 549 __u32 result;
511}; 550};
512 551
552#define nvme_admin_cmd nvme_passthru_cmd
553
513#define NVME_IOCTL_ID _IO('N', 0x40) 554#define NVME_IOCTL_ID _IO('N', 0x40)
514#define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd) 555#define NVME_IOCTL_ADMIN_CMD _IOWR('N', 0x41, struct nvme_admin_cmd)
515#define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io) 556#define NVME_IOCTL_SUBMIT_IO _IOW('N', 0x42, struct nvme_user_io)
557#define NVME_IOCTL_IO_CMD _IOWR('N', 0x43, struct nvme_passthru_cmd)
516 558
517#endif /* _UAPI_LINUX_NVME_H */ 559#endif /* _UAPI_LINUX_NVME_H */
diff --git a/include/uapi/linux/openvswitch.h b/include/uapi/linux/openvswitch.h
index 435eabc5ffaa..3a6dcaa359b7 100644
--- a/include/uapi/linux/openvswitch.h
+++ b/include/uapi/linux/openvswitch.h
@@ -157,6 +157,11 @@ enum ovs_packet_cmd {
157 * notification if the %OVS_ACTION_ATTR_USERSPACE action specified an 157 * notification if the %OVS_ACTION_ATTR_USERSPACE action specified an
158 * %OVS_USERSPACE_ATTR_USERDATA attribute, with the same length and content 158 * %OVS_USERSPACE_ATTR_USERDATA attribute, with the same length and content
159 * specified there. 159 * specified there.
160 * @OVS_PACKET_ATTR_EGRESS_TUN_KEY: Present for an %OVS_PACKET_CMD_ACTION
161 * notification if the %OVS_ACTION_ATTR_USERSPACE action specified an
162 * %OVS_USERSPACE_ATTR_EGRESS_TUN_PORT attribute, which is sent only if the
163 * output port is actually a tunnel port. Contains the output tunnel key
164 * extracted from the packet as nested %OVS_TUNNEL_KEY_ATTR_* attributes.
160 * 165 *
161 * These attributes follow the &struct ovs_header within the Generic Netlink 166 * These attributes follow the &struct ovs_header within the Generic Netlink
162 * payload for %OVS_PACKET_* commands. 167 * payload for %OVS_PACKET_* commands.
@@ -167,6 +172,8 @@ enum ovs_packet_attr {
167 OVS_PACKET_ATTR_KEY, /* Nested OVS_KEY_ATTR_* attributes. */ 172 OVS_PACKET_ATTR_KEY, /* Nested OVS_KEY_ATTR_* attributes. */
168 OVS_PACKET_ATTR_ACTIONS, /* Nested OVS_ACTION_ATTR_* attributes. */ 173 OVS_PACKET_ATTR_ACTIONS, /* Nested OVS_ACTION_ATTR_* attributes. */
169 OVS_PACKET_ATTR_USERDATA, /* OVS_ACTION_ATTR_USERSPACE arg. */ 174 OVS_PACKET_ATTR_USERDATA, /* OVS_ACTION_ATTR_USERSPACE arg. */
175 OVS_PACKET_ATTR_EGRESS_TUN_KEY, /* Nested OVS_TUNNEL_KEY_ATTR_*
176 attributes. */
170 __OVS_PACKET_ATTR_MAX 177 __OVS_PACKET_ATTR_MAX
171}; 178};
172 179
@@ -293,6 +300,9 @@ enum ovs_key_attr {
293 OVS_KEY_ATTR_DP_HASH, /* u32 hash value. Value 0 indicates the hash 300 OVS_KEY_ATTR_DP_HASH, /* u32 hash value. Value 0 indicates the hash
294 is not computed by the datapath. */ 301 is not computed by the datapath. */
295 OVS_KEY_ATTR_RECIRC_ID, /* u32 recirc id */ 302 OVS_KEY_ATTR_RECIRC_ID, /* u32 recirc id */
303 OVS_KEY_ATTR_MPLS, /* array of struct ovs_key_mpls.
304 * The implementation may restrict
305 * the accepted length of the array. */
296 306
297#ifdef __KERNEL__ 307#ifdef __KERNEL__
298 OVS_KEY_ATTR_TUNNEL_INFO, /* struct ovs_tunnel_info */ 308 OVS_KEY_ATTR_TUNNEL_INFO, /* struct ovs_tunnel_info */
@@ -312,6 +322,8 @@ enum ovs_tunnel_key_attr {
312 OVS_TUNNEL_KEY_ATTR_CSUM, /* No argument. CSUM packet. */ 322 OVS_TUNNEL_KEY_ATTR_CSUM, /* No argument. CSUM packet. */
313 OVS_TUNNEL_KEY_ATTR_OAM, /* No argument. OAM frame. */ 323 OVS_TUNNEL_KEY_ATTR_OAM, /* No argument. OAM frame. */
314 OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS, /* Array of Geneve options. */ 324 OVS_TUNNEL_KEY_ATTR_GENEVE_OPTS, /* Array of Geneve options. */
325 OVS_TUNNEL_KEY_ATTR_TP_SRC, /* be16 src Transport Port. */
326 OVS_TUNNEL_KEY_ATTR_TP_DST, /* be16 dst Transport Port. */
315 __OVS_TUNNEL_KEY_ATTR_MAX 327 __OVS_TUNNEL_KEY_ATTR_MAX
316}; 328};
317 329
@@ -340,6 +352,10 @@ struct ovs_key_ethernet {
340 __u8 eth_dst[ETH_ALEN]; 352 __u8 eth_dst[ETH_ALEN];
341}; 353};
342 354
355struct ovs_key_mpls {
356 __be32 mpls_lse;
357};
358
343struct ovs_key_ipv4 { 359struct ovs_key_ipv4 {
344 __be32 ipv4_src; 360 __be32 ipv4_src;
345 __be32 ipv4_dst; 361 __be32 ipv4_dst;
@@ -393,9 +409,9 @@ struct ovs_key_arp {
393}; 409};
394 410
395struct ovs_key_nd { 411struct ovs_key_nd {
396 __u32 nd_target[4]; 412 __be32 nd_target[4];
397 __u8 nd_sll[ETH_ALEN]; 413 __u8 nd_sll[ETH_ALEN];
398 __u8 nd_tll[ETH_ALEN]; 414 __u8 nd_tll[ETH_ALEN];
399}; 415};
400 416
401/** 417/**
@@ -441,6 +457,8 @@ enum ovs_flow_attr {
441 OVS_FLOW_ATTR_USED, /* u64 msecs last used in monotonic time. */ 457 OVS_FLOW_ATTR_USED, /* u64 msecs last used in monotonic time. */
442 OVS_FLOW_ATTR_CLEAR, /* Flag to clear stats, tcp_flags, used. */ 458 OVS_FLOW_ATTR_CLEAR, /* Flag to clear stats, tcp_flags, used. */
443 OVS_FLOW_ATTR_MASK, /* Sequence of OVS_KEY_ATTR_* attributes. */ 459 OVS_FLOW_ATTR_MASK, /* Sequence of OVS_KEY_ATTR_* attributes. */
460 OVS_FLOW_ATTR_PROBE, /* Flow operation is a feature probe, error
461 * logging should be suppressed. */
444 __OVS_FLOW_ATTR_MAX 462 __OVS_FLOW_ATTR_MAX
445}; 463};
446 464
@@ -473,17 +491,34 @@ enum ovs_sample_attr {
473 * message should be sent. Required. 491 * message should be sent. Required.
474 * @OVS_USERSPACE_ATTR_USERDATA: If present, its variable-length argument is 492 * @OVS_USERSPACE_ATTR_USERDATA: If present, its variable-length argument is
475 * copied to the %OVS_PACKET_CMD_ACTION message as %OVS_PACKET_ATTR_USERDATA. 493 * copied to the %OVS_PACKET_CMD_ACTION message as %OVS_PACKET_ATTR_USERDATA.
494 * @OVS_USERSPACE_ATTR_EGRESS_TUN_PORT: If present, u32 output port to get
495 * tunnel info.
476 */ 496 */
477enum ovs_userspace_attr { 497enum ovs_userspace_attr {
478 OVS_USERSPACE_ATTR_UNSPEC, 498 OVS_USERSPACE_ATTR_UNSPEC,
479 OVS_USERSPACE_ATTR_PID, /* u32 Netlink PID to receive upcalls. */ 499 OVS_USERSPACE_ATTR_PID, /* u32 Netlink PID to receive upcalls. */
480 OVS_USERSPACE_ATTR_USERDATA, /* Optional user-specified cookie. */ 500 OVS_USERSPACE_ATTR_USERDATA, /* Optional user-specified cookie. */
501 OVS_USERSPACE_ATTR_EGRESS_TUN_PORT, /* Optional, u32 output port
502 * to get tunnel info. */
481 __OVS_USERSPACE_ATTR_MAX 503 __OVS_USERSPACE_ATTR_MAX
482}; 504};
483 505
484#define OVS_USERSPACE_ATTR_MAX (__OVS_USERSPACE_ATTR_MAX - 1) 506#define OVS_USERSPACE_ATTR_MAX (__OVS_USERSPACE_ATTR_MAX - 1)
485 507
486/** 508/**
509 * struct ovs_action_push_mpls - %OVS_ACTION_ATTR_PUSH_MPLS action argument.
510 * @mpls_lse: MPLS label stack entry to push.
511 * @mpls_ethertype: Ethertype to set in the encapsulating ethernet frame.
512 *
513 * The only values @mpls_ethertype should ever be given are %ETH_P_MPLS_UC and
514 * %ETH_P_MPLS_MC, indicating MPLS unicast or multicast. Other are rejected.
515 */
516struct ovs_action_push_mpls {
517 __be32 mpls_lse;
518 __be16 mpls_ethertype; /* Either %ETH_P_MPLS_UC or %ETH_P_MPLS_MC */
519};
520
521/**
487 * struct ovs_action_push_vlan - %OVS_ACTION_ATTR_PUSH_VLAN action argument. 522 * struct ovs_action_push_vlan - %OVS_ACTION_ATTR_PUSH_VLAN action argument.
488 * @vlan_tpid: Tag protocol identifier (TPID) to push. 523 * @vlan_tpid: Tag protocol identifier (TPID) to push.
489 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set 524 * @vlan_tci: Tag control identifier (TCI) to push. The CFI bit must be set
@@ -534,6 +569,15 @@ struct ovs_action_hash {
534 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q header off the packet. 569 * @OVS_ACTION_ATTR_POP_VLAN: Pop the outermost 802.1Q header off the packet.
535 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in 570 * @OVS_ACTION_ATTR_SAMPLE: Probabilitically executes actions, as specified in
536 * the nested %OVS_SAMPLE_ATTR_* attributes. 571 * the nested %OVS_SAMPLE_ATTR_* attributes.
572 * @OVS_ACTION_ATTR_PUSH_MPLS: Push a new MPLS label stack entry onto the
573 * top of the packets MPLS label stack. Set the ethertype of the
574 * encapsulating frame to either %ETH_P_MPLS_UC or %ETH_P_MPLS_MC to
575 * indicate the new packet contents.
576 * @OVS_ACTION_ATTR_POP_MPLS: Pop an MPLS label stack entry off of the
577 * packet's MPLS label stack. Set the encapsulating frame's ethertype to
578 * indicate the new packet contents. This could potentially still be
579 * %ETH_P_MPLS if the resulting MPLS label stack is not empty. If there
580 * is no MPLS label stack, as determined by ethertype, no action is taken.
537 * 581 *
538 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all 582 * Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
539 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment 583 * fields within a header are modifiable, e.g. the IPv4 protocol and fragment
@@ -550,6 +594,9 @@ enum ovs_action_attr {
550 OVS_ACTION_ATTR_SAMPLE, /* Nested OVS_SAMPLE_ATTR_*. */ 594 OVS_ACTION_ATTR_SAMPLE, /* Nested OVS_SAMPLE_ATTR_*. */
551 OVS_ACTION_ATTR_RECIRC, /* u32 recirc_id. */ 595 OVS_ACTION_ATTR_RECIRC, /* u32 recirc_id. */
552 OVS_ACTION_ATTR_HASH, /* struct ovs_action_hash. */ 596 OVS_ACTION_ATTR_HASH, /* struct ovs_action_hash. */
597 OVS_ACTION_ATTR_PUSH_MPLS, /* struct ovs_action_push_mpls. */
598 OVS_ACTION_ATTR_POP_MPLS, /* __be16 ethertype. */
599
553 __OVS_ACTION_ATTR_MAX 600 __OVS_ACTION_ATTR_MAX
554}; 601};
555 602
diff --git a/include/uapi/linux/perf_event.h b/include/uapi/linux/perf_event.h
index 9d845404d875..9b79abbd1ab8 100644
--- a/include/uapi/linux/perf_event.h
+++ b/include/uapi/linux/perf_event.h
@@ -137,8 +137,9 @@ enum perf_event_sample_format {
137 PERF_SAMPLE_DATA_SRC = 1U << 15, 137 PERF_SAMPLE_DATA_SRC = 1U << 15,
138 PERF_SAMPLE_IDENTIFIER = 1U << 16, 138 PERF_SAMPLE_IDENTIFIER = 1U << 16,
139 PERF_SAMPLE_TRANSACTION = 1U << 17, 139 PERF_SAMPLE_TRANSACTION = 1U << 17,
140 PERF_SAMPLE_REGS_INTR = 1U << 18,
140 141
141 PERF_SAMPLE_MAX = 1U << 18, /* non-ABI */ 142 PERF_SAMPLE_MAX = 1U << 19, /* non-ABI */
142}; 143};
143 144
144/* 145/*
@@ -238,6 +239,7 @@ enum perf_event_read_format {
238#define PERF_ATTR_SIZE_VER2 80 /* add: branch_sample_type */ 239#define PERF_ATTR_SIZE_VER2 80 /* add: branch_sample_type */
239#define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */ 240#define PERF_ATTR_SIZE_VER3 96 /* add: sample_regs_user */
240 /* add: sample_stack_user */ 241 /* add: sample_stack_user */
242#define PERF_ATTR_SIZE_VER4 104 /* add: sample_regs_intr */
241 243
242/* 244/*
243 * Hardware event_id to monitor via a performance monitoring event: 245 * Hardware event_id to monitor via a performance monitoring event:
@@ -334,6 +336,15 @@ struct perf_event_attr {
334 336
335 /* Align to u64. */ 337 /* Align to u64. */
336 __u32 __reserved_2; 338 __u32 __reserved_2;
339 /*
340 * Defines set of regs to dump for each sample
341 * state captured on:
342 * - precise = 0: PMU interrupt
343 * - precise > 0: sampled instruction
344 *
345 * See asm/perf_regs.h for details.
346 */
347 __u64 sample_regs_intr;
337}; 348};
338 349
339#define perf_flags(attr) (*(&(attr)->read_format + 1)) 350#define perf_flags(attr) (*(&(attr)->read_format + 1))
@@ -686,6 +697,8 @@ enum perf_event_type {
686 * { u64 weight; } && PERF_SAMPLE_WEIGHT 697 * { u64 weight; } && PERF_SAMPLE_WEIGHT
687 * { u64 data_src; } && PERF_SAMPLE_DATA_SRC 698 * { u64 data_src; } && PERF_SAMPLE_DATA_SRC
688 * { u64 transaction; } && PERF_SAMPLE_TRANSACTION 699 * { u64 transaction; } && PERF_SAMPLE_TRANSACTION
700 * { u64 abi; # enum perf_sample_regs_abi
701 * u64 regs[weight(mask)]; } && PERF_SAMPLE_REGS_INTR
689 * }; 702 * };
690 */ 703 */
691 PERF_RECORD_SAMPLE = 9, 704 PERF_RECORD_SAMPLE = 9,
diff --git a/include/uapi/linux/prctl.h b/include/uapi/linux/prctl.h
index 513df75d0fc9..89f63503f903 100644
--- a/include/uapi/linux/prctl.h
+++ b/include/uapi/linux/prctl.h
@@ -179,4 +179,10 @@ struct prctl_mm_map {
179#define PR_SET_THP_DISABLE 41 179#define PR_SET_THP_DISABLE 41
180#define PR_GET_THP_DISABLE 42 180#define PR_GET_THP_DISABLE 42
181 181
182/*
183 * Tell the kernel to start/stop helping userspace manage bounds tables.
184 */
185#define PR_MPX_ENABLE_MANAGEMENT 43
186#define PR_MPX_DISABLE_MANAGEMENT 44
187
182#endif /* _LINUX_PRCTL_H */ 188#endif /* _LINUX_PRCTL_H */
diff --git a/include/uapi/linux/rtnetlink.h b/include/uapi/linux/rtnetlink.h
index eb0f1a554d7b..9c9b8b4480cd 100644
--- a/include/uapi/linux/rtnetlink.h
+++ b/include/uapi/linux/rtnetlink.h
@@ -235,6 +235,7 @@ enum {
235#define RTPROT_NTK 15 /* Netsukuku */ 235#define RTPROT_NTK 15 /* Netsukuku */
236#define RTPROT_DHCP 16 /* DHCP client */ 236#define RTPROT_DHCP 16 /* DHCP client */
237#define RTPROT_MROUTED 17 /* Multicast daemon */ 237#define RTPROT_MROUTED 17 /* Multicast daemon */
238#define RTPROT_BABEL 42 /* Babel daemon */
238 239
239/* rtm_scope 240/* rtm_scope
240 241
diff --git a/include/uapi/linux/sched.h b/include/uapi/linux/sched.h
index b932be9f5c5b..cc89ddefa926 100644
--- a/include/uapi/linux/sched.h
+++ b/include/uapi/linux/sched.h
@@ -23,8 +23,8 @@
23#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */ 23#define CLONE_CHILD_SETTID 0x01000000 /* set the TID in the child */
24/* 0x02000000 was previously the unused CLONE_STOPPED (Start in stopped state) 24/* 0x02000000 was previously the unused CLONE_STOPPED (Start in stopped state)
25 and is now available for re-use. */ 25 and is now available for re-use. */
26#define CLONE_NEWUTS 0x04000000 /* New utsname group? */ 26#define CLONE_NEWUTS 0x04000000 /* New utsname namespace */
27#define CLONE_NEWIPC 0x08000000 /* New ipcs */ 27#define CLONE_NEWIPC 0x08000000 /* New ipc namespace */
28#define CLONE_NEWUSER 0x10000000 /* New user namespace */ 28#define CLONE_NEWUSER 0x10000000 /* New user namespace */
29#define CLONE_NEWPID 0x20000000 /* New pid namespace */ 29#define CLONE_NEWPID 0x20000000 /* New pid namespace */
30#define CLONE_NEWNET 0x40000000 /* New network namespace */ 30#define CLONE_NEWNET 0x40000000 /* New network namespace */
diff --git a/include/uapi/linux/sem.h b/include/uapi/linux/sem.h
index 541fce03b50c..dd73b908b2f3 100644
--- a/include/uapi/linux/sem.h
+++ b/include/uapi/linux/sem.h
@@ -63,10 +63,22 @@ struct seminfo {
63 int semaem; 63 int semaem;
64}; 64};
65 65
66#define SEMMNI 128 /* <= IPCMNI max # of semaphore identifiers */ 66/*
67#define SEMMSL 250 /* <= 8 000 max num of semaphores per id */ 67 * SEMMNI, SEMMSL and SEMMNS are default values which can be
68 * modified by sysctl.
69 * The values has been chosen to be larger than necessary for any
70 * known configuration.
71 *
72 * SEMOPM should not be increased beyond 1000, otherwise there is the
73 * risk that semop()/semtimedop() fails due to kernel memory fragmentation when
74 * allocating the sop array.
75 */
76
77
78#define SEMMNI 32000 /* <= IPCMNI max # of semaphore identifiers */
79#define SEMMSL 32000 /* <= INT_MAX max num of semaphores per id */
68#define SEMMNS (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */ 80#define SEMMNS (SEMMNI*SEMMSL) /* <= INT_MAX max # of semaphores in system */
69#define SEMOPM 32 /* <= 1 000 max num of ops per semop call */ 81#define SEMOPM 500 /* <= 1 000 max num of ops per semop call */
70#define SEMVMX 32767 /* <= 32767 semaphore maximum value */ 82#define SEMVMX 32767 /* <= 32767 semaphore maximum value */
71#define SEMAEM SEMVMX /* adjust on exit max value */ 83#define SEMAEM SEMVMX /* adjust on exit max value */
72 84
diff --git a/include/uapi/linux/serial_core.h b/include/uapi/linux/serial_core.h
index 16ad8521af6a..c17218094f18 100644
--- a/include/uapi/linux/serial_core.h
+++ b/include/uapi/linux/serial_core.h
@@ -54,7 +54,8 @@
54#define PORT_ALTR_16550_F32 26 /* Altera 16550 UART with 32 FIFOs */ 54#define PORT_ALTR_16550_F32 26 /* Altera 16550 UART with 32 FIFOs */
55#define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */ 55#define PORT_ALTR_16550_F64 27 /* Altera 16550 UART with 64 FIFOs */
56#define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */ 56#define PORT_ALTR_16550_F128 28 /* Altera 16550 UART with 128 FIFOs */
57#define PORT_MAX_8250 28 /* max port ID */ 57#define PORT_RT2880 29 /* Ralink RT2880 internal UART */
58#define PORT_MAX_8250 29 /* max port ID */
58 59
59/* 60/*
60 * ARM specific type numbers. These are not currently guaranteed 61 * ARM specific type numbers. These are not currently guaranteed
diff --git a/include/uapi/linux/serial_reg.h b/include/uapi/linux/serial_reg.h
index df6c9ab6b0cd..53af3b790129 100644
--- a/include/uapi/linux/serial_reg.h
+++ b/include/uapi/linux/serial_reg.h
@@ -359,6 +359,7 @@
359#define UART_OMAP_SYSC 0x15 /* System configuration register */ 359#define UART_OMAP_SYSC 0x15 /* System configuration register */
360#define UART_OMAP_SYSS 0x16 /* System status register */ 360#define UART_OMAP_SYSS 0x16 /* System status register */
361#define UART_OMAP_WER 0x17 /* Wake-up enable register */ 361#define UART_OMAP_WER 0x17 /* Wake-up enable register */
362#define UART_OMAP_TX_LVL 0x1a /* TX FIFO level register */
362 363
363/* 364/*
364 * These are the definitions for the MDR1 register 365 * These are the definitions for the MDR1 register
diff --git a/include/uapi/linux/snmp.h b/include/uapi/linux/snmp.h
index df40137f33dd..b22224100011 100644
--- a/include/uapi/linux/snmp.h
+++ b/include/uapi/linux/snmp.h
@@ -156,6 +156,7 @@ enum
156 UDP_MIB_RCVBUFERRORS, /* RcvbufErrors */ 156 UDP_MIB_RCVBUFERRORS, /* RcvbufErrors */
157 UDP_MIB_SNDBUFERRORS, /* SndbufErrors */ 157 UDP_MIB_SNDBUFERRORS, /* SndbufErrors */
158 UDP_MIB_CSUMERRORS, /* InCsumErrors */ 158 UDP_MIB_CSUMERRORS, /* InCsumErrors */
159 UDP_MIB_IGNOREDMULTI, /* IgnoredMulti */
159 __UDP_MIB_MAX 160 __UDP_MIB_MAX
160}; 161};
161 162
@@ -265,6 +266,10 @@ enum
265 LINUX_MIB_TCPWANTZEROWINDOWADV, /* TCPWantZeroWindowAdv */ 266 LINUX_MIB_TCPWANTZEROWINDOWADV, /* TCPWantZeroWindowAdv */
266 LINUX_MIB_TCPSYNRETRANS, /* TCPSynRetrans */ 267 LINUX_MIB_TCPSYNRETRANS, /* TCPSynRetrans */
267 LINUX_MIB_TCPORIGDATASENT, /* TCPOrigDataSent */ 268 LINUX_MIB_TCPORIGDATASENT, /* TCPOrigDataSent */
269 LINUX_MIB_TCPHYSTARTTRAINDETECT, /* TCPHystartTrainDetect */
270 LINUX_MIB_TCPHYSTARTTRAINCWND, /* TCPHystartTrainCwnd */
271 LINUX_MIB_TCPHYSTARTDELAYDETECT, /* TCPHystartDelayDetect */
272 LINUX_MIB_TCPHYSTARTDELAYCWND, /* TCPHystartDelayCwnd */
268 __LINUX_MIB_MAX 273 __LINUX_MIB_MAX
269}; 274};
270 275
diff --git a/include/uapi/linux/sysctl.h b/include/uapi/linux/sysctl.h
index 43aaba1cc037..0956373b56db 100644
--- a/include/uapi/linux/sysctl.h
+++ b/include/uapi/linux/sysctl.h
@@ -153,6 +153,7 @@ enum
153 KERN_MAX_LOCK_DEPTH=74, /* int: rtmutex's maximum lock depth */ 153 KERN_MAX_LOCK_DEPTH=74, /* int: rtmutex's maximum lock depth */
154 KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */ 154 KERN_NMI_WATCHDOG=75, /* int: enable/disable nmi watchdog */
155 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */ 155 KERN_PANIC_ON_NMI=76, /* int: whether we will panic on an unrecovered */
156 KERN_PANIC_ON_WARN=77, /* int: call panic() in WARN() functions */
156}; 157};
157 158
158 159
diff --git a/include/uapi/linux/tc_act/Kbuild b/include/uapi/linux/tc_act/Kbuild
index 56f121605c99..b057da2b87a4 100644
--- a/include/uapi/linux/tc_act/Kbuild
+++ b/include/uapi/linux/tc_act/Kbuild
@@ -7,3 +7,4 @@ header-y += tc_mirred.h
7header-y += tc_nat.h 7header-y += tc_nat.h
8header-y += tc_pedit.h 8header-y += tc_pedit.h
9header-y += tc_skbedit.h 9header-y += tc_skbedit.h
10header-y += tc_vlan.h
diff --git a/include/uapi/linux/tc_act/tc_vlan.h b/include/uapi/linux/tc_act/tc_vlan.h
new file mode 100644
index 000000000000..f7b8d448b960
--- /dev/null
+++ b/include/uapi/linux/tc_act/tc_vlan.h
@@ -0,0 +1,35 @@
1/*
2 * Copyright (c) 2014 Jiri Pirko <jiri@resnulli.us>
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 as published by
6 * the Free Software Foundation; either version 2 of the License, or
7 * (at your option) any later version.
8 */
9
10#ifndef __LINUX_TC_VLAN_H
11#define __LINUX_TC_VLAN_H
12
13#include <linux/pkt_cls.h>
14
15#define TCA_ACT_VLAN 12
16
17#define TCA_VLAN_ACT_POP 1
18#define TCA_VLAN_ACT_PUSH 2
19
20struct tc_vlan {
21 tc_gen;
22 int v_action;
23};
24
25enum {
26 TCA_VLAN_UNSPEC,
27 TCA_VLAN_TM,
28 TCA_VLAN_PARMS,
29 TCA_VLAN_PUSH_VLAN_ID,
30 TCA_VLAN_PUSH_VLAN_PROTOCOL,
31 __TCA_VLAN_MAX,
32};
33#define TCA_VLAN_MAX (__TCA_VLAN_MAX - 1)
34
35#endif
diff --git a/include/uapi/linux/tipc_netlink.h b/include/uapi/linux/tipc_netlink.h
new file mode 100644
index 000000000000..8d723824ad69
--- /dev/null
+++ b/include/uapi/linux/tipc_netlink.h
@@ -0,0 +1,244 @@
1/*
2 * Copyright (c) 2014, Ericsson AB
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are met:
7 *
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. Neither the names of the copyright holders nor the names of its
14 * contributors may be used to endorse or promote products derived from
15 * this software without specific prior written permission.
16 *
17 * Alternatively, this software may be distributed under the terms of the
18 * GNU General Public License ("GPL") version 2 as published by the Free
19 * Software Foundation.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
25 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
31 * POSSIBILITY OF SUCH DAMAGE.
32 */
33
34#ifndef _LINUX_TIPC_NETLINK_H_
35#define _LINUX_TIPC_NETLINK_H_
36
37#define TIPC_GENL_V2_NAME "TIPCv2"
38#define TIPC_GENL_V2_VERSION 0x1
39
40/* Netlink commands */
41enum {
42 TIPC_NL_UNSPEC,
43 TIPC_NL_LEGACY,
44 TIPC_NL_BEARER_DISABLE,
45 TIPC_NL_BEARER_ENABLE,
46 TIPC_NL_BEARER_GET,
47 TIPC_NL_BEARER_SET,
48 TIPC_NL_SOCK_GET,
49 TIPC_NL_PUBL_GET,
50 TIPC_NL_LINK_GET,
51 TIPC_NL_LINK_SET,
52 TIPC_NL_LINK_RESET_STATS,
53 TIPC_NL_MEDIA_GET,
54 TIPC_NL_MEDIA_SET,
55 TIPC_NL_NODE_GET,
56 TIPC_NL_NET_GET,
57 TIPC_NL_NET_SET,
58 TIPC_NL_NAME_TABLE_GET,
59
60 __TIPC_NL_CMD_MAX,
61 TIPC_NL_CMD_MAX = __TIPC_NL_CMD_MAX - 1
62};
63
64/* Top level netlink attributes */
65enum {
66 TIPC_NLA_UNSPEC,
67 TIPC_NLA_BEARER, /* nest */
68 TIPC_NLA_SOCK, /* nest */
69 TIPC_NLA_PUBL, /* nest */
70 TIPC_NLA_LINK, /* nest */
71 TIPC_NLA_MEDIA, /* nest */
72 TIPC_NLA_NODE, /* nest */
73 TIPC_NLA_NET, /* nest */
74 TIPC_NLA_NAME_TABLE, /* nest */
75
76 __TIPC_NLA_MAX,
77 TIPC_NLA_MAX = __TIPC_NLA_MAX - 1
78};
79
80/* Bearer info */
81enum {
82 TIPC_NLA_BEARER_UNSPEC,
83 TIPC_NLA_BEARER_NAME, /* string */
84 TIPC_NLA_BEARER_PROP, /* nest */
85 TIPC_NLA_BEARER_DOMAIN, /* u32 */
86
87 __TIPC_NLA_BEARER_MAX,
88 TIPC_NLA_BEARER_MAX = __TIPC_NLA_BEARER_MAX - 1
89};
90
91/* Socket info */
92enum {
93 TIPC_NLA_SOCK_UNSPEC,
94 TIPC_NLA_SOCK_ADDR, /* u32 */
95 TIPC_NLA_SOCK_REF, /* u32 */
96 TIPC_NLA_SOCK_CON, /* nest */
97 TIPC_NLA_SOCK_HAS_PUBL, /* flag */
98
99 __TIPC_NLA_SOCK_MAX,
100 TIPC_NLA_SOCK_MAX = __TIPC_NLA_SOCK_MAX - 1
101};
102
103/* Link info */
104enum {
105 TIPC_NLA_LINK_UNSPEC,
106 TIPC_NLA_LINK_NAME, /* string */
107 TIPC_NLA_LINK_DEST, /* u32 */
108 TIPC_NLA_LINK_MTU, /* u32 */
109 TIPC_NLA_LINK_BROADCAST, /* flag */
110 TIPC_NLA_LINK_UP, /* flag */
111 TIPC_NLA_LINK_ACTIVE, /* flag */
112 TIPC_NLA_LINK_PROP, /* nest */
113 TIPC_NLA_LINK_STATS, /* nest */
114 TIPC_NLA_LINK_RX, /* u32 */
115 TIPC_NLA_LINK_TX, /* u32 */
116
117 __TIPC_NLA_LINK_MAX,
118 TIPC_NLA_LINK_MAX = __TIPC_NLA_LINK_MAX - 1
119};
120
121/* Media info */
122enum {
123 TIPC_NLA_MEDIA_UNSPEC,
124 TIPC_NLA_MEDIA_NAME, /* string */
125 TIPC_NLA_MEDIA_PROP, /* nest */
126
127 __TIPC_NLA_MEDIA_MAX,
128 TIPC_NLA_MEDIA_MAX = __TIPC_NLA_MEDIA_MAX - 1
129};
130
131/* Node info */
132enum {
133 TIPC_NLA_NODE_UNSPEC,
134 TIPC_NLA_NODE_ADDR, /* u32 */
135 TIPC_NLA_NODE_UP, /* flag */
136
137 __TIPC_NLA_NODE_MAX,
138 TIPC_NLA_NODE_MAX = __TIPC_NLA_NODE_MAX - 1
139};
140
141/* Net info */
142enum {
143 TIPC_NLA_NET_UNSPEC,
144 TIPC_NLA_NET_ID, /* u32 */
145 TIPC_NLA_NET_ADDR, /* u32 */
146
147 __TIPC_NLA_NET_MAX,
148 TIPC_NLA_NET_MAX = __TIPC_NLA_NET_MAX - 1
149};
150
151/* Name table info */
152enum {
153 TIPC_NLA_NAME_TABLE_UNSPEC,
154 TIPC_NLA_NAME_TABLE_PUBL, /* nest */
155
156 __TIPC_NLA_NAME_TABLE_MAX,
157 TIPC_NLA_NAME_TABLE_MAX = __TIPC_NLA_NAME_TABLE_MAX - 1
158};
159
160/* Publication info */
161enum {
162 TIPC_NLA_PUBL_UNSPEC,
163
164 TIPC_NLA_PUBL_TYPE, /* u32 */
165 TIPC_NLA_PUBL_LOWER, /* u32 */
166 TIPC_NLA_PUBL_UPPER, /* u32 */
167 TIPC_NLA_PUBL_SCOPE, /* u32 */
168 TIPC_NLA_PUBL_NODE, /* u32 */
169 TIPC_NLA_PUBL_REF, /* u32 */
170 TIPC_NLA_PUBL_KEY, /* u32 */
171
172 __TIPC_NLA_PUBL_MAX,
173 TIPC_NLA_PUBL_MAX = __TIPC_NLA_PUBL_MAX - 1
174};
175
176/* Nest, connection info */
177enum {
178 TIPC_NLA_CON_UNSPEC,
179
180 TIPC_NLA_CON_FLAG, /* flag */
181 TIPC_NLA_CON_NODE, /* u32 */
182 TIPC_NLA_CON_SOCK, /* u32 */
183 TIPC_NLA_CON_TYPE, /* u32 */
184 TIPC_NLA_CON_INST, /* u32 */
185
186 __TIPC_NLA_CON_MAX,
187 TIPC_NLA_CON_MAX = __TIPC_NLA_CON_MAX - 1
188};
189
190/* Nest, link propreties. Valid for link, media and bearer */
191enum {
192 TIPC_NLA_PROP_UNSPEC,
193
194 TIPC_NLA_PROP_PRIO, /* u32 */
195 TIPC_NLA_PROP_TOL, /* u32 */
196 TIPC_NLA_PROP_WIN, /* u32 */
197
198 __TIPC_NLA_PROP_MAX,
199 TIPC_NLA_PROP_MAX = __TIPC_NLA_PROP_MAX - 1
200};
201
202/* Nest, statistics info */
203enum {
204 TIPC_NLA_STATS_UNSPEC,
205
206 TIPC_NLA_STATS_RX_INFO, /* u32 */
207 TIPC_NLA_STATS_RX_FRAGMENTS, /* u32 */
208 TIPC_NLA_STATS_RX_FRAGMENTED, /* u32 */
209 TIPC_NLA_STATS_RX_BUNDLES, /* u32 */
210 TIPC_NLA_STATS_RX_BUNDLED, /* u32 */
211 TIPC_NLA_STATS_TX_INFO, /* u32 */
212 TIPC_NLA_STATS_TX_FRAGMENTS, /* u32 */
213 TIPC_NLA_STATS_TX_FRAGMENTED, /* u32 */
214 TIPC_NLA_STATS_TX_BUNDLES, /* u32 */
215 TIPC_NLA_STATS_TX_BUNDLED, /* u32 */
216 TIPC_NLA_STATS_MSG_PROF_TOT, /* u32 */
217 TIPC_NLA_STATS_MSG_LEN_CNT, /* u32 */
218 TIPC_NLA_STATS_MSG_LEN_TOT, /* u32 */
219 TIPC_NLA_STATS_MSG_LEN_P0, /* u32 */
220 TIPC_NLA_STATS_MSG_LEN_P1, /* u32 */
221 TIPC_NLA_STATS_MSG_LEN_P2, /* u32 */
222 TIPC_NLA_STATS_MSG_LEN_P3, /* u32 */
223 TIPC_NLA_STATS_MSG_LEN_P4, /* u32 */
224 TIPC_NLA_STATS_MSG_LEN_P5, /* u32 */
225 TIPC_NLA_STATS_MSG_LEN_P6, /* u32 */
226 TIPC_NLA_STATS_RX_STATES, /* u32 */
227 TIPC_NLA_STATS_RX_PROBES, /* u32 */
228 TIPC_NLA_STATS_RX_NACKS, /* u32 */
229 TIPC_NLA_STATS_RX_DEFERRED, /* u32 */
230 TIPC_NLA_STATS_TX_STATES, /* u32 */
231 TIPC_NLA_STATS_TX_PROBES, /* u32 */
232 TIPC_NLA_STATS_TX_NACKS, /* u32 */
233 TIPC_NLA_STATS_TX_ACKS, /* u32 */
234 TIPC_NLA_STATS_RETRANSMITTED, /* u32 */
235 TIPC_NLA_STATS_DUPLICATES, /* u32 */
236 TIPC_NLA_STATS_LINK_CONGS, /* u32 */
237 TIPC_NLA_STATS_MAX_QUEUE, /* u32 */
238 TIPC_NLA_STATS_AVG_QUEUE, /* u32 */
239
240 __TIPC_NLA_STATS_MAX,
241 TIPC_NLA_STATS_MAX = __TIPC_NLA_STATS_MAX - 1
242};
243
244#endif
diff --git a/include/uapi/linux/tty_flags.h b/include/uapi/linux/tty_flags.h
index eefcb483a2c0..fae4864737fa 100644
--- a/include/uapi/linux/tty_flags.h
+++ b/include/uapi/linux/tty_flags.h
@@ -6,27 +6,31 @@
6 * shared by the tty_port flags structures. 6 * shared by the tty_port flags structures.
7 * 7 *
8 * Define ASYNCB_* for convenient use with {test,set,clear}_bit. 8 * Define ASYNCB_* for convenient use with {test,set,clear}_bit.
9 *
10 * Bits [0..ASYNCB_LAST_USER] are userspace defined/visible/changeable
11 * [x] in the bit comments indicates the flag is defunct and no longer used.
9 */ 12 */
10#define ASYNCB_HUP_NOTIFY 0 /* Notify getty on hangups and closes 13#define ASYNCB_HUP_NOTIFY 0 /* Notify getty on hangups and closes
11 * on the callout port */ 14 * on the callout port */
12#define ASYNCB_FOURPORT 1 /* Set OU1, OUT2 per AST Fourport settings */ 15#define ASYNCB_FOURPORT 1 /* Set OU1, OUT2 per AST Fourport settings */
13#define ASYNCB_SAK 2 /* Secure Attention Key (Orange book) */ 16#define ASYNCB_SAK 2 /* Secure Attention Key (Orange book) */
14#define ASYNCB_SPLIT_TERMIOS 3 /* Separate termios for dialin/callout */ 17#define ASYNCB_SPLIT_TERMIOS 3 /* [x] Separate termios for dialin/callout */
15#define ASYNCB_SPD_HI 4 /* Use 56000 instead of 38400 bps */ 18#define ASYNCB_SPD_HI 4 /* Use 56000 instead of 38400 bps */
16#define ASYNCB_SPD_VHI 5 /* Use 115200 instead of 38400 bps */ 19#define ASYNCB_SPD_VHI 5 /* Use 115200 instead of 38400 bps */
17#define ASYNCB_SKIP_TEST 6 /* Skip UART test during autoconfiguration */ 20#define ASYNCB_SKIP_TEST 6 /* Skip UART test during autoconfiguration */
18#define ASYNCB_AUTO_IRQ 7 /* Do automatic IRQ during 21#define ASYNCB_AUTO_IRQ 7 /* Do automatic IRQ during
19 * autoconfiguration */ 22 * autoconfiguration */
20#define ASYNCB_SESSION_LOCKOUT 8 /* Lock out cua opens based on session */ 23#define ASYNCB_SESSION_LOCKOUT 8 /* [x] Lock out cua opens based on session */
21#define ASYNCB_PGRP_LOCKOUT 9 /* Lock out cua opens based on pgrp */ 24#define ASYNCB_PGRP_LOCKOUT 9 /* [x] Lock out cua opens based on pgrp */
22#define ASYNCB_CALLOUT_NOHUP 10 /* Don't do hangups for cua device */ 25#define ASYNCB_CALLOUT_NOHUP 10 /* [x] Don't do hangups for cua device */
23#define ASYNCB_HARDPPS_CD 11 /* Call hardpps when CD goes high */ 26#define ASYNCB_HARDPPS_CD 11 /* Call hardpps when CD goes high */
24#define ASYNCB_SPD_SHI 12 /* Use 230400 instead of 38400 bps */ 27#define ASYNCB_SPD_SHI 12 /* Use 230400 instead of 38400 bps */
25#define ASYNCB_LOW_LATENCY 13 /* Request low latency behaviour */ 28#define ASYNCB_LOW_LATENCY 13 /* Request low latency behaviour */
26#define ASYNCB_BUGGY_UART 14 /* This is a buggy UART, skip some safety 29#define ASYNCB_BUGGY_UART 14 /* This is a buggy UART, skip some safety
27 * checks. Note: can be dangerous! */ 30 * checks. Note: can be dangerous! */
28#define ASYNCB_AUTOPROBE 15 /* Port was autoprobed by PCI or PNP code */ 31#define ASYNCB_AUTOPROBE 15 /* [x] Port was autoprobed by PCI/PNP code */
29#define ASYNCB_LAST_USER 15 32#define ASYNCB_MAGIC_MULTIPLIER 16 /* Use special CLK or divisor */
33#define ASYNCB_LAST_USER 16
30 34
31/* Internal flags used only by kernel */ 35/* Internal flags used only by kernel */
32#define ASYNCB_INITIALIZED 31 /* Serial port was initialized */ 36#define ASYNCB_INITIALIZED 31 /* Serial port was initialized */
@@ -57,8 +61,11 @@
57#define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY) 61#define ASYNC_LOW_LATENCY (1U << ASYNCB_LOW_LATENCY)
58#define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART) 62#define ASYNC_BUGGY_UART (1U << ASYNCB_BUGGY_UART)
59#define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE) 63#define ASYNC_AUTOPROBE (1U << ASYNCB_AUTOPROBE)
64#define ASYNC_MAGIC_MULTIPLIER (1U << ASYNCB_MAGIC_MULTIPLIER)
60 65
61#define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1) 66#define ASYNC_FLAGS ((1U << (ASYNCB_LAST_USER + 1)) - 1)
67#define ASYNC_DEPRECATED (ASYNC_SESSION_LOCKOUT | ASYNC_PGRP_LOCKOUT | \
68 ASYNC_CALLOUT_NOHUP | ASYNC_AUTOPROBE)
62#define ASYNC_USR_MASK (ASYNC_SPD_MASK|ASYNC_CALLOUT_NOHUP| \ 69#define ASYNC_USR_MASK (ASYNC_SPD_MASK|ASYNC_CALLOUT_NOHUP| \
63 ASYNC_LOW_LATENCY) 70 ASYNC_LOW_LATENCY)
64#define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI) 71#define ASYNC_SPD_CUST (ASYNC_SPD_HI|ASYNC_SPD_VHI)
diff --git a/include/uapi/linux/v4l2-common.h b/include/uapi/linux/v4l2-common.h
index 2f6f8cafe773..15273987093e 100644
--- a/include/uapi/linux/v4l2-common.h
+++ b/include/uapi/linux/v4l2-common.h
@@ -43,6 +43,8 @@
43#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001 43#define V4L2_SEL_TGT_CROP_DEFAULT 0x0001
44/* Cropping bounds */ 44/* Cropping bounds */
45#define V4L2_SEL_TGT_CROP_BOUNDS 0x0002 45#define V4L2_SEL_TGT_CROP_BOUNDS 0x0002
46/* Native frame size */
47#define V4L2_SEL_TGT_NATIVE_SIZE 0x0003
46/* Current composing area */ 48/* Current composing area */
47#define V4L2_SEL_TGT_COMPOSE 0x0100 49#define V4L2_SEL_TGT_COMPOSE 0x0100
48/* Default composing area */ 50/* Default composing area */
diff --git a/include/uapi/linux/v4l2-mediabus.h b/include/uapi/linux/v4l2-mediabus.h
index 1445e858854f..5a86d8ede09c 100644
--- a/include/uapi/linux/v4l2-mediabus.h
+++ b/include/uapi/linux/v4l2-mediabus.h
@@ -11,122 +11,10 @@
11#ifndef __LINUX_V4L2_MEDIABUS_H 11#ifndef __LINUX_V4L2_MEDIABUS_H
12#define __LINUX_V4L2_MEDIABUS_H 12#define __LINUX_V4L2_MEDIABUS_H
13 13
14#include <linux/media-bus-format.h>
14#include <linux/types.h> 15#include <linux/types.h>
15#include <linux/videodev2.h> 16#include <linux/videodev2.h>
16 17
17/*
18 * These pixel codes uniquely identify data formats on the media bus. Mostly
19 * they correspond to similarly named V4L2_PIX_FMT_* formats, format 0 is
20 * reserved, V4L2_MBUS_FMT_FIXED shall be used by host-client pairs, where the
21 * data format is fixed. Additionally, "2X8" means that one pixel is transferred
22 * in two 8-bit samples, "BE" or "LE" specify in which order those samples are
23 * transferred over the bus: "LE" means that the least significant bits are
24 * transferred first, "BE" means that the most significant bits are transferred
25 * first, and "PADHI" and "PADLO" define which bits - low or high, in the
26 * incomplete high byte, are filled with padding bits.
27 *
28 * The pixel codes are grouped by type, bus_width, bits per component, samples
29 * per pixel and order of subsamples. Numerical values are sorted using generic
30 * numerical sort order (8 thus comes before 10).
31 *
32 * As their value can't change when a new pixel code is inserted in the
33 * enumeration, the pixel codes are explicitly given a numerical value. The next
34 * free values for each category are listed below, update them when inserting
35 * new pixel codes.
36 */
37enum v4l2_mbus_pixelcode {
38 V4L2_MBUS_FMT_FIXED = 0x0001,
39
40 /* RGB - next is 0x100e */
41 V4L2_MBUS_FMT_RGB444_2X8_PADHI_BE = 0x1001,
42 V4L2_MBUS_FMT_RGB444_2X8_PADHI_LE = 0x1002,
43 V4L2_MBUS_FMT_RGB555_2X8_PADHI_BE = 0x1003,
44 V4L2_MBUS_FMT_RGB555_2X8_PADHI_LE = 0x1004,
45 V4L2_MBUS_FMT_BGR565_2X8_BE = 0x1005,
46 V4L2_MBUS_FMT_BGR565_2X8_LE = 0x1006,
47 V4L2_MBUS_FMT_RGB565_2X8_BE = 0x1007,
48 V4L2_MBUS_FMT_RGB565_2X8_LE = 0x1008,
49 V4L2_MBUS_FMT_RGB666_1X18 = 0x1009,
50 V4L2_MBUS_FMT_RGB888_1X24 = 0x100a,
51 V4L2_MBUS_FMT_RGB888_2X12_BE = 0x100b,
52 V4L2_MBUS_FMT_RGB888_2X12_LE = 0x100c,
53 V4L2_MBUS_FMT_ARGB8888_1X32 = 0x100d,
54
55 /* YUV (including grey) - next is 0x2024 */
56 V4L2_MBUS_FMT_Y8_1X8 = 0x2001,
57 V4L2_MBUS_FMT_UV8_1X8 = 0x2015,
58 V4L2_MBUS_FMT_UYVY8_1_5X8 = 0x2002,
59 V4L2_MBUS_FMT_VYUY8_1_5X8 = 0x2003,
60 V4L2_MBUS_FMT_YUYV8_1_5X8 = 0x2004,
61 V4L2_MBUS_FMT_YVYU8_1_5X8 = 0x2005,
62 V4L2_MBUS_FMT_UYVY8_2X8 = 0x2006,
63 V4L2_MBUS_FMT_VYUY8_2X8 = 0x2007,
64 V4L2_MBUS_FMT_YUYV8_2X8 = 0x2008,
65 V4L2_MBUS_FMT_YVYU8_2X8 = 0x2009,
66 V4L2_MBUS_FMT_Y10_1X10 = 0x200a,
67 V4L2_MBUS_FMT_UYVY10_2X10 = 0x2018,
68 V4L2_MBUS_FMT_VYUY10_2X10 = 0x2019,
69 V4L2_MBUS_FMT_YUYV10_2X10 = 0x200b,
70 V4L2_MBUS_FMT_YVYU10_2X10 = 0x200c,
71 V4L2_MBUS_FMT_Y12_1X12 = 0x2013,
72 V4L2_MBUS_FMT_UYVY8_1X16 = 0x200f,
73 V4L2_MBUS_FMT_VYUY8_1X16 = 0x2010,
74 V4L2_MBUS_FMT_YUYV8_1X16 = 0x2011,
75 V4L2_MBUS_FMT_YVYU8_1X16 = 0x2012,
76 V4L2_MBUS_FMT_YDYUYDYV8_1X16 = 0x2014,
77 V4L2_MBUS_FMT_UYVY10_1X20 = 0x201a,
78 V4L2_MBUS_FMT_VYUY10_1X20 = 0x201b,
79 V4L2_MBUS_FMT_YUYV10_1X20 = 0x200d,
80 V4L2_MBUS_FMT_YVYU10_1X20 = 0x200e,
81 V4L2_MBUS_FMT_YUV10_1X30 = 0x2016,
82 V4L2_MBUS_FMT_AYUV8_1X32 = 0x2017,
83 V4L2_MBUS_FMT_UYVY12_2X12 = 0x201c,
84 V4L2_MBUS_FMT_VYUY12_2X12 = 0x201d,
85 V4L2_MBUS_FMT_YUYV12_2X12 = 0x201e,
86 V4L2_MBUS_FMT_YVYU12_2X12 = 0x201f,
87 V4L2_MBUS_FMT_UYVY12_1X24 = 0x2020,
88 V4L2_MBUS_FMT_VYUY12_1X24 = 0x2021,
89 V4L2_MBUS_FMT_YUYV12_1X24 = 0x2022,
90 V4L2_MBUS_FMT_YVYU12_1X24 = 0x2023,
91
92 /* Bayer - next is 0x3019 */
93 V4L2_MBUS_FMT_SBGGR8_1X8 = 0x3001,
94 V4L2_MBUS_FMT_SGBRG8_1X8 = 0x3013,
95 V4L2_MBUS_FMT_SGRBG8_1X8 = 0x3002,
96 V4L2_MBUS_FMT_SRGGB8_1X8 = 0x3014,
97 V4L2_MBUS_FMT_SBGGR10_ALAW8_1X8 = 0x3015,
98 V4L2_MBUS_FMT_SGBRG10_ALAW8_1X8 = 0x3016,
99 V4L2_MBUS_FMT_SGRBG10_ALAW8_1X8 = 0x3017,
100 V4L2_MBUS_FMT_SRGGB10_ALAW8_1X8 = 0x3018,
101 V4L2_MBUS_FMT_SBGGR10_DPCM8_1X8 = 0x300b,
102 V4L2_MBUS_FMT_SGBRG10_DPCM8_1X8 = 0x300c,
103 V4L2_MBUS_FMT_SGRBG10_DPCM8_1X8 = 0x3009,
104 V4L2_MBUS_FMT_SRGGB10_DPCM8_1X8 = 0x300d,
105 V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_BE = 0x3003,
106 V4L2_MBUS_FMT_SBGGR10_2X8_PADHI_LE = 0x3004,
107 V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_BE = 0x3005,
108 V4L2_MBUS_FMT_SBGGR10_2X8_PADLO_LE = 0x3006,
109 V4L2_MBUS_FMT_SBGGR10_1X10 = 0x3007,
110 V4L2_MBUS_FMT_SGBRG10_1X10 = 0x300e,
111 V4L2_MBUS_FMT_SGRBG10_1X10 = 0x300a,
112 V4L2_MBUS_FMT_SRGGB10_1X10 = 0x300f,
113 V4L2_MBUS_FMT_SBGGR12_1X12 = 0x3008,
114 V4L2_MBUS_FMT_SGBRG12_1X12 = 0x3010,
115 V4L2_MBUS_FMT_SGRBG12_1X12 = 0x3011,
116 V4L2_MBUS_FMT_SRGGB12_1X12 = 0x3012,
117
118 /* JPEG compressed formats - next is 0x4002 */
119 V4L2_MBUS_FMT_JPEG_1X8 = 0x4001,
120
121 /* Vendor specific formats - next is 0x5002 */
122
123 /* S5C73M3 sensor specific interleaved UYVY and JPEG */
124 V4L2_MBUS_FMT_S5C_UYVY_JPEG_1X8 = 0x5001,
125
126 /* HSV - next is 0x6002 */
127 V4L2_MBUS_FMT_AHSV8888_1X32 = 0x6001,
128};
129
130/** 18/**
131 * struct v4l2_mbus_framefmt - frame format on the media bus 19 * struct v4l2_mbus_framefmt - frame format on the media bus
132 * @width: frame width 20 * @width: frame width
@@ -134,6 +22,8 @@ enum v4l2_mbus_pixelcode {
134 * @code: data format code (from enum v4l2_mbus_pixelcode) 22 * @code: data format code (from enum v4l2_mbus_pixelcode)
135 * @field: used interlacing type (from enum v4l2_field) 23 * @field: used interlacing type (from enum v4l2_field)
136 * @colorspace: colorspace of the data (from enum v4l2_colorspace) 24 * @colorspace: colorspace of the data (from enum v4l2_colorspace)
25 * @ycbcr_enc: YCbCr encoding of the data (from enum v4l2_ycbcr_encoding)
26 * @quantization: quantization of the data (from enum v4l2_quantization)
137 */ 27 */
138struct v4l2_mbus_framefmt { 28struct v4l2_mbus_framefmt {
139 __u32 width; 29 __u32 width;
@@ -141,7 +31,108 @@ struct v4l2_mbus_framefmt {
141 __u32 code; 31 __u32 code;
142 __u32 field; 32 __u32 field;
143 __u32 colorspace; 33 __u32 colorspace;
144 __u32 reserved[7]; 34 __u32 ycbcr_enc;
35 __u32 quantization;
36 __u32 reserved[5];
37};
38
39#ifndef __KERNEL__
40/*
41 * enum v4l2_mbus_pixelcode and its definitions are now deprecated, and
42 * MEDIA_BUS_FMT_ definitions (defined in media-bus-format.h) should be
43 * used instead.
44 *
45 * New defines should only be added to media-bus-format.h. The
46 * v4l2_mbus_pixelcode enum is frozen.
47 */
48
49#define V4L2_MBUS_FROM_MEDIA_BUS_FMT(name) \
50 V4L2_MBUS_FMT_ ## name = MEDIA_BUS_FMT_ ## name
51
52enum v4l2_mbus_pixelcode {
53 V4L2_MBUS_FROM_MEDIA_BUS_FMT(FIXED),
54
55 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_BE),
56 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB444_2X8_PADHI_LE),
57 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_BE),
58 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB555_2X8_PADHI_LE),
59 V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_BE),
60 V4L2_MBUS_FROM_MEDIA_BUS_FMT(BGR565_2X8_LE),
61 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_BE),
62 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB565_2X8_LE),
63 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB666_1X18),
64 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_1X24),
65 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_BE),
66 V4L2_MBUS_FROM_MEDIA_BUS_FMT(RGB888_2X12_LE),
67 V4L2_MBUS_FROM_MEDIA_BUS_FMT(ARGB8888_1X32),
68
69 V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y8_1X8),
70 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UV8_1X8),
71 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1_5X8),
72 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1_5X8),
73 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1_5X8),
74 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1_5X8),
75 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_2X8),
76 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_2X8),
77 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_2X8),
78 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_2X8),
79 V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y10_1X10),
80 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_2X10),
81 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_2X10),
82 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_2X10),
83 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_2X10),
84 V4L2_MBUS_FROM_MEDIA_BUS_FMT(Y12_1X12),
85 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY8_1X16),
86 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY8_1X16),
87 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV8_1X16),
88 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU8_1X16),
89 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YDYUYDYV8_1X16),
90 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY10_1X20),
91 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY10_1X20),
92 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV10_1X20),
93 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU10_1X20),
94 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUV10_1X30),
95 V4L2_MBUS_FROM_MEDIA_BUS_FMT(AYUV8_1X32),
96 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_2X12),
97 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_2X12),
98 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_2X12),
99 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_2X12),
100 V4L2_MBUS_FROM_MEDIA_BUS_FMT(UYVY12_1X24),
101 V4L2_MBUS_FROM_MEDIA_BUS_FMT(VYUY12_1X24),
102 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YUYV12_1X24),
103 V4L2_MBUS_FROM_MEDIA_BUS_FMT(YVYU12_1X24),
104
105 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR8_1X8),
106 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG8_1X8),
107 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG8_1X8),
108 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB8_1X8),
109 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_ALAW8_1X8),
110 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_ALAW8_1X8),
111 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_ALAW8_1X8),
112 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_ALAW8_1X8),
113 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_DPCM8_1X8),
114 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_DPCM8_1X8),
115 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_DPCM8_1X8),
116 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_DPCM8_1X8),
117 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_BE),
118 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADHI_LE),
119 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_BE),
120 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_2X8_PADLO_LE),
121 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR10_1X10),
122 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG10_1X10),
123 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG10_1X10),
124 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB10_1X10),
125 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SBGGR12_1X12),
126 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGBRG12_1X12),
127 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SGRBG12_1X12),
128 V4L2_MBUS_FROM_MEDIA_BUS_FMT(SRGGB12_1X12),
129
130 V4L2_MBUS_FROM_MEDIA_BUS_FMT(JPEG_1X8),
131
132 V4L2_MBUS_FROM_MEDIA_BUS_FMT(S5C_UYVY_JPEG_1X8),
133
134 V4L2_MBUS_FROM_MEDIA_BUS_FMT(AHSV8888_1X32),
145}; 135};
136#endif /* __KERNEL__ */
146 137
147#endif 138#endif
diff --git a/include/uapi/linux/v4l2-subdev.h b/include/uapi/linux/v4l2-subdev.h
index a619cdd300ac..e0a7e3da498a 100644
--- a/include/uapi/linux/v4l2-subdev.h
+++ b/include/uapi/linux/v4l2-subdev.h
@@ -68,7 +68,7 @@ struct v4l2_subdev_crop {
68 * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration 68 * struct v4l2_subdev_mbus_code_enum - Media bus format enumeration
69 * @pad: pad number, as reported by the media API 69 * @pad: pad number, as reported by the media API
70 * @index: format index during enumeration 70 * @index: format index during enumeration
71 * @code: format code (from enum v4l2_mbus_pixelcode) 71 * @code: format code (MEDIA_BUS_FMT_ definitions)
72 */ 72 */
73struct v4l2_subdev_mbus_code_enum { 73struct v4l2_subdev_mbus_code_enum {
74 __u32 pad; 74 __u32 pad;
@@ -81,7 +81,7 @@ struct v4l2_subdev_mbus_code_enum {
81 * struct v4l2_subdev_frame_size_enum - Media bus format enumeration 81 * struct v4l2_subdev_frame_size_enum - Media bus format enumeration
82 * @pad: pad number, as reported by the media API 82 * @pad: pad number, as reported by the media API
83 * @index: format index during enumeration 83 * @index: format index during enumeration
84 * @code: format code (from enum v4l2_mbus_pixelcode) 84 * @code: format code (MEDIA_BUS_FMT_ definitions)
85 */ 85 */
86struct v4l2_subdev_frame_size_enum { 86struct v4l2_subdev_frame_size_enum {
87 __u32 index; 87 __u32 index;
@@ -109,7 +109,7 @@ struct v4l2_subdev_frame_interval {
109 * struct v4l2_subdev_frame_interval_enum - Frame interval enumeration 109 * struct v4l2_subdev_frame_interval_enum - Frame interval enumeration
110 * @pad: pad number, as reported by the media API 110 * @pad: pad number, as reported by the media API
111 * @index: frame interval index during enumeration 111 * @index: frame interval index during enumeration
112 * @code: format code (from enum v4l2_mbus_pixelcode) 112 * @code: format code (MEDIA_BUS_FMT_ definitions)
113 * @width: frame width in pixels 113 * @width: frame width in pixels
114 * @height: frame height in pixels 114 * @height: frame height in pixels
115 * @interval: frame interval in seconds 115 * @interval: frame interval in seconds
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 1c2f84fd4d99..d279c1b75cf7 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -178,30 +178,103 @@ enum v4l2_memory {
178 178
179/* see also http://vektor.theorem.ca/graphics/ycbcr/ */ 179/* see also http://vektor.theorem.ca/graphics/ycbcr/ */
180enum v4l2_colorspace { 180enum v4l2_colorspace {
181 /* ITU-R 601 -- broadcast NTSC/PAL */ 181 /* SMPTE 170M: used for broadcast NTSC/PAL SDTV */
182 V4L2_COLORSPACE_SMPTE170M = 1, 182 V4L2_COLORSPACE_SMPTE170M = 1,
183 183
184 /* 1125-Line (US) HDTV */ 184 /* Obsolete pre-1998 SMPTE 240M HDTV standard, superseded by Rec 709 */
185 V4L2_COLORSPACE_SMPTE240M = 2, 185 V4L2_COLORSPACE_SMPTE240M = 2,
186 186
187 /* HD and modern captures. */ 187 /* Rec.709: used for HDTV */
188 V4L2_COLORSPACE_REC709 = 3, 188 V4L2_COLORSPACE_REC709 = 3,
189 189
190 /* broken BT878 extents (601, luma range 16-253 instead of 16-235) */ 190 /*
191 * Deprecated, do not use. No driver will ever return this. This was
192 * based on a misunderstanding of the bt878 datasheet.
193 */
191 V4L2_COLORSPACE_BT878 = 4, 194 V4L2_COLORSPACE_BT878 = 4,
192 195
193 /* These should be useful. Assume 601 extents. */ 196 /*
197 * NTSC 1953 colorspace. This only makes sense when dealing with
198 * really, really old NTSC recordings. Superseded by SMPTE 170M.
199 */
194 V4L2_COLORSPACE_470_SYSTEM_M = 5, 200 V4L2_COLORSPACE_470_SYSTEM_M = 5,
201
202 /*
203 * EBU Tech 3213 PAL/SECAM colorspace. This only makes sense when
204 * dealing with really old PAL/SECAM recordings. Superseded by
205 * SMPTE 170M.
206 */
195 V4L2_COLORSPACE_470_SYSTEM_BG = 6, 207 V4L2_COLORSPACE_470_SYSTEM_BG = 6,
196 208
197 /* I know there will be cameras that send this. So, this is 209 /*
198 * unspecified chromaticities and full 0-255 on each of the 210 * Effectively shorthand for V4L2_COLORSPACE_SRGB, V4L2_YCBCR_ENC_601
199 * Y'CbCr components 211 * and V4L2_QUANTIZATION_FULL_RANGE. To be used for (Motion-)JPEG.
200 */ 212 */
201 V4L2_COLORSPACE_JPEG = 7, 213 V4L2_COLORSPACE_JPEG = 7,
202 214
203 /* For RGB colourspaces, this is probably a good start. */ 215 /* For RGB colorspaces such as produces by most webcams. */
204 V4L2_COLORSPACE_SRGB = 8, 216 V4L2_COLORSPACE_SRGB = 8,
217
218 /* AdobeRGB colorspace */
219 V4L2_COLORSPACE_ADOBERGB = 9,
220
221 /* BT.2020 colorspace, used for UHDTV. */
222 V4L2_COLORSPACE_BT2020 = 10,
223};
224
225enum v4l2_ycbcr_encoding {
226 /*
227 * Mapping of V4L2_YCBCR_ENC_DEFAULT to actual encodings for the
228 * various colorspaces:
229 *
230 * V4L2_COLORSPACE_SMPTE170M, V4L2_COLORSPACE_470_SYSTEM_M,
231 * V4L2_COLORSPACE_470_SYSTEM_BG, V4L2_COLORSPACE_ADOBERGB and
232 * V4L2_COLORSPACE_JPEG: V4L2_YCBCR_ENC_601
233 *
234 * V4L2_COLORSPACE_REC709: V4L2_YCBCR_ENC_709
235 *
236 * V4L2_COLORSPACE_SRGB: V4L2_YCBCR_ENC_SYCC
237 *
238 * V4L2_COLORSPACE_BT2020: V4L2_YCBCR_ENC_BT2020
239 *
240 * V4L2_COLORSPACE_SMPTE240M: V4L2_YCBCR_ENC_SMPTE240M
241 */
242 V4L2_YCBCR_ENC_DEFAULT = 0,
243
244 /* ITU-R 601 -- SDTV */
245 V4L2_YCBCR_ENC_601 = 1,
246
247 /* Rec. 709 -- HDTV */
248 V4L2_YCBCR_ENC_709 = 2,
249
250 /* ITU-R 601/EN 61966-2-4 Extended Gamut -- SDTV */
251 V4L2_YCBCR_ENC_XV601 = 3,
252
253 /* Rec. 709/EN 61966-2-4 Extended Gamut -- HDTV */
254 V4L2_YCBCR_ENC_XV709 = 4,
255
256 /* sYCC (Y'CbCr encoding of sRGB) */
257 V4L2_YCBCR_ENC_SYCC = 5,
258
259 /* BT.2020 Non-constant Luminance Y'CbCr */
260 V4L2_YCBCR_ENC_BT2020 = 6,
261
262 /* BT.2020 Constant Luminance Y'CbcCrc */
263 V4L2_YCBCR_ENC_BT2020_CONST_LUM = 7,
264
265 /* SMPTE 240M -- Obsolete HDTV */
266 V4L2_YCBCR_ENC_SMPTE240M = 8,
267};
268
269enum v4l2_quantization {
270 /*
271 * The default for R'G'B' quantization is always full range. For
272 * Y'CbCr the quantization is always limited range, except for
273 * SYCC, XV601, XV709 or JPEG: those are full range.
274 */
275 V4L2_QUANTIZATION_DEFAULT = 0,
276 V4L2_QUANTIZATION_FULL_RANGE = 1,
277 V4L2_QUANTIZATION_LIM_RANGE = 2,
205}; 278};
206 279
207enum v4l2_priority { 280enum v4l2_priority {
@@ -294,6 +367,8 @@ struct v4l2_pix_format {
294 __u32 colorspace; /* enum v4l2_colorspace */ 367 __u32 colorspace; /* enum v4l2_colorspace */
295 __u32 priv; /* private data, depends on pixelformat */ 368 __u32 priv; /* private data, depends on pixelformat */
296 __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */ 369 __u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */
370 __u32 ycbcr_enc; /* enum v4l2_ycbcr_encoding */
371 __u32 quantization; /* enum v4l2_quantization */
297}; 372};
298 373
299/* Pixel format FOURCC depth Description */ 374/* Pixel format FOURCC depth Description */
@@ -1249,6 +1324,7 @@ struct v4l2_input {
1249#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 1324#define V4L2_IN_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
1250#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */ 1325#define V4L2_IN_CAP_CUSTOM_TIMINGS V4L2_IN_CAP_DV_TIMINGS /* For compatibility */
1251#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */ 1326#define V4L2_IN_CAP_STD 0x00000004 /* Supports S_STD */
1327#define V4L2_IN_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */
1252 1328
1253/* 1329/*
1254 * V I D E O O U T P U T S 1330 * V I D E O O U T P U T S
@@ -1272,6 +1348,7 @@ struct v4l2_output {
1272#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */ 1348#define V4L2_OUT_CAP_DV_TIMINGS 0x00000002 /* Supports S_DV_TIMINGS */
1273#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */ 1349#define V4L2_OUT_CAP_CUSTOM_TIMINGS V4L2_OUT_CAP_DV_TIMINGS /* For compatibility */
1274#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */ 1350#define V4L2_OUT_CAP_STD 0x00000004 /* Supports S_STD */
1351#define V4L2_OUT_CAP_NATIVE_SIZE 0x00000008 /* Supports setting native size */
1275 1352
1276/* 1353/*
1277 * C O N T R O L S 1354 * C O N T R O L S
@@ -1777,6 +1854,8 @@ struct v4l2_plane_pix_format {
1777 * @plane_fmt: per-plane information 1854 * @plane_fmt: per-plane information
1778 * @num_planes: number of planes for this format 1855 * @num_planes: number of planes for this format
1779 * @flags: format flags (V4L2_PIX_FMT_FLAG_*) 1856 * @flags: format flags (V4L2_PIX_FMT_FLAG_*)
1857 * @ycbcr_enc: enum v4l2_ycbcr_encoding, Y'CbCr encoding
1858 * @quantization: enum v4l2_quantization, colorspace quantization
1780 */ 1859 */
1781struct v4l2_pix_format_mplane { 1860struct v4l2_pix_format_mplane {
1782 __u32 width; 1861 __u32 width;
@@ -1788,7 +1867,9 @@ struct v4l2_pix_format_mplane {
1788 struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES]; 1867 struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
1789 __u8 num_planes; 1868 __u8 num_planes;
1790 __u8 flags; 1869 __u8 flags;
1791 __u8 reserved[10]; 1870 __u8 ycbcr_enc;
1871 __u8 quantization;
1872 __u8 reserved[8];
1792} __attribute__ ((packed)); 1873} __attribute__ ((packed));
1793 1874
1794/** 1875/**
diff --git a/include/uapi/linux/virtio_blk.h b/include/uapi/linux/virtio_blk.h
index 9ad67b267584..247c8ba8544a 100644
--- a/include/uapi/linux/virtio_blk.h
+++ b/include/uapi/linux/virtio_blk.h
@@ -28,6 +28,7 @@
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/virtio_ids.h> 29#include <linux/virtio_ids.h>
30#include <linux/virtio_config.h> 30#include <linux/virtio_config.h>
31#include <linux/virtio_types.h>
31 32
32/* Feature bits */ 33/* Feature bits */
33#define VIRTIO_BLK_F_BARRIER 0 /* Does host support barriers? */ 34#define VIRTIO_BLK_F_BARRIER 0 /* Does host support barriers? */
@@ -114,18 +115,18 @@ struct virtio_blk_config {
114/* This is the first element of the read scatter-gather list. */ 115/* This is the first element of the read scatter-gather list. */
115struct virtio_blk_outhdr { 116struct virtio_blk_outhdr {
116 /* VIRTIO_BLK_T* */ 117 /* VIRTIO_BLK_T* */
117 __u32 type; 118 __virtio32 type;
118 /* io priority. */ 119 /* io priority. */
119 __u32 ioprio; 120 __virtio32 ioprio;
120 /* Sector (ie. 512 byte offset) */ 121 /* Sector (ie. 512 byte offset) */
121 __u64 sector; 122 __virtio64 sector;
122}; 123};
123 124
124struct virtio_scsi_inhdr { 125struct virtio_scsi_inhdr {
125 __u32 errors; 126 __virtio32 errors;
126 __u32 data_len; 127 __virtio32 data_len;
127 __u32 sense_len; 128 __virtio32 sense_len;
128 __u32 residual; 129 __virtio32 residual;
129}; 130};
130 131
131/* And this is the final byte of the write scatter-gather list. */ 132/* And this is the final byte of the write scatter-gather list. */
diff --git a/include/uapi/linux/virtio_config.h b/include/uapi/linux/virtio_config.h
index 3ce768c6910d..a6d0cdeaacd4 100644
--- a/include/uapi/linux/virtio_config.h
+++ b/include/uapi/linux/virtio_config.h
@@ -38,14 +38,16 @@
38#define VIRTIO_CONFIG_S_DRIVER 2 38#define VIRTIO_CONFIG_S_DRIVER 2
39/* Driver has used its parts of the config, and is happy */ 39/* Driver has used its parts of the config, and is happy */
40#define VIRTIO_CONFIG_S_DRIVER_OK 4 40#define VIRTIO_CONFIG_S_DRIVER_OK 4
41/* Driver has finished configuring features */
42#define VIRTIO_CONFIG_S_FEATURES_OK 8
41/* We've given up on this device. */ 43/* We've given up on this device. */
42#define VIRTIO_CONFIG_S_FAILED 0x80 44#define VIRTIO_CONFIG_S_FAILED 0x80
43 45
44/* Some virtio feature bits (currently bits 28 through 31) are reserved for the 46/* Some virtio feature bits (currently bits 28 through 32) are reserved for the
45 * transport being used (eg. virtio_ring), the rest are per-device feature 47 * transport being used (eg. virtio_ring), the rest are per-device feature
46 * bits. */ 48 * bits. */
47#define VIRTIO_TRANSPORT_F_START 28 49#define VIRTIO_TRANSPORT_F_START 28
48#define VIRTIO_TRANSPORT_F_END 32 50#define VIRTIO_TRANSPORT_F_END 33
49 51
50/* Do we get callbacks when the ring is completely used, even if we've 52/* Do we get callbacks when the ring is completely used, even if we've
51 * suppressed them? */ 53 * suppressed them? */
@@ -54,4 +56,7 @@
54/* Can the device handle any descriptor layout? */ 56/* Can the device handle any descriptor layout? */
55#define VIRTIO_F_ANY_LAYOUT 27 57#define VIRTIO_F_ANY_LAYOUT 27
56 58
59/* v1.0 compliant. */
60#define VIRTIO_F_VERSION_1 32
61
57#endif /* _UAPI_LINUX_VIRTIO_CONFIG_H */ 62#endif /* _UAPI_LINUX_VIRTIO_CONFIG_H */
diff --git a/include/uapi/linux/virtio_console.h b/include/uapi/linux/virtio_console.h
index ba260dd0b33a..b7fb108c9310 100644
--- a/include/uapi/linux/virtio_console.h
+++ b/include/uapi/linux/virtio_console.h
@@ -32,6 +32,7 @@
32#ifndef _UAPI_LINUX_VIRTIO_CONSOLE_H 32#ifndef _UAPI_LINUX_VIRTIO_CONSOLE_H
33#define _UAPI_LINUX_VIRTIO_CONSOLE_H 33#define _UAPI_LINUX_VIRTIO_CONSOLE_H
34#include <linux/types.h> 34#include <linux/types.h>
35#include <linux/virtio_types.h>
35#include <linux/virtio_ids.h> 36#include <linux/virtio_ids.h>
36#include <linux/virtio_config.h> 37#include <linux/virtio_config.h>
37 38
@@ -58,9 +59,9 @@ struct virtio_console_config {
58 * particular port. 59 * particular port.
59 */ 60 */
60struct virtio_console_control { 61struct virtio_console_control {
61 __u32 id; /* Port number */ 62 __virtio32 id; /* Port number */
62 __u16 event; /* The kind of control event (see below) */ 63 __virtio16 event; /* The kind of control event (see below) */
63 __u16 value; /* Extra information for the key */ 64 __virtio16 value; /* Extra information for the key */
64}; 65};
65 66
66/* Some events for control messages */ 67/* Some events for control messages */
diff --git a/include/uapi/linux/virtio_net.h b/include/uapi/linux/virtio_net.h
index 172a7f00780c..b5f1677b291c 100644
--- a/include/uapi/linux/virtio_net.h
+++ b/include/uapi/linux/virtio_net.h
@@ -28,6 +28,7 @@
28#include <linux/types.h> 28#include <linux/types.h>
29#include <linux/virtio_ids.h> 29#include <linux/virtio_ids.h>
30#include <linux/virtio_config.h> 30#include <linux/virtio_config.h>
31#include <linux/virtio_types.h>
31#include <linux/if_ether.h> 32#include <linux/if_ether.h>
32 33
33/* The feature bitmap for virtio net */ 34/* The feature bitmap for virtio net */
@@ -84,17 +85,17 @@ struct virtio_net_hdr {
84#define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP 85#define VIRTIO_NET_HDR_GSO_TCPV6 4 // GSO frame, IPv6 TCP
85#define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set 86#define VIRTIO_NET_HDR_GSO_ECN 0x80 // TCP has ECN set
86 __u8 gso_type; 87 __u8 gso_type;
87 __u16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */ 88 __virtio16 hdr_len; /* Ethernet + IP + tcp/udp hdrs */
88 __u16 gso_size; /* Bytes to append to hdr_len per frame */ 89 __virtio16 gso_size; /* Bytes to append to hdr_len per frame */
89 __u16 csum_start; /* Position to start checksumming from */ 90 __virtio16 csum_start; /* Position to start checksumming from */
90 __u16 csum_offset; /* Offset after that to place checksum */ 91 __virtio16 csum_offset; /* Offset after that to place checksum */
91}; 92};
92 93
93/* This is the version of the header to use when the MRG_RXBUF 94/* This is the version of the header to use when the MRG_RXBUF
94 * feature has been negotiated. */ 95 * feature has been negotiated. */
95struct virtio_net_hdr_mrg_rxbuf { 96struct virtio_net_hdr_mrg_rxbuf {
96 struct virtio_net_hdr hdr; 97 struct virtio_net_hdr hdr;
97 __u16 num_buffers; /* Number of merged rx buffers */ 98 __virtio16 num_buffers; /* Number of merged rx buffers */
98}; 99};
99 100
100/* 101/*
@@ -149,7 +150,7 @@ typedef __u8 virtio_net_ctrl_ack;
149 * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available. 150 * VIRTIO_NET_F_CTRL_MAC_ADDR feature is available.
150 */ 151 */
151struct virtio_net_ctrl_mac { 152struct virtio_net_ctrl_mac {
152 __u32 entries; 153 __virtio32 entries;
153 __u8 macs[][ETH_ALEN]; 154 __u8 macs[][ETH_ALEN];
154} __attribute__((packed)); 155} __attribute__((packed));
155 156
@@ -193,7 +194,7 @@ struct virtio_net_ctrl_mac {
193 * specified. 194 * specified.
194 */ 195 */
195struct virtio_net_ctrl_mq { 196struct virtio_net_ctrl_mq {
196 __u16 virtqueue_pairs; 197 __virtio16 virtqueue_pairs;
197}; 198};
198 199
199#define VIRTIO_NET_CTRL_MQ 4 200#define VIRTIO_NET_CTRL_MQ 4
diff --git a/include/uapi/linux/virtio_ring.h b/include/uapi/linux/virtio_ring.h
index a99f9b7caa67..61c818a7fe70 100644
--- a/include/uapi/linux/virtio_ring.h
+++ b/include/uapi/linux/virtio_ring.h
@@ -32,6 +32,7 @@
32 * 32 *
33 * Copyright Rusty Russell IBM Corporation 2007. */ 33 * Copyright Rusty Russell IBM Corporation 2007. */
34#include <linux/types.h> 34#include <linux/types.h>
35#include <linux/virtio_types.h>
35 36
36/* This marks a buffer as continuing via the next field. */ 37/* This marks a buffer as continuing via the next field. */
37#define VRING_DESC_F_NEXT 1 38#define VRING_DESC_F_NEXT 1
@@ -61,32 +62,32 @@
61/* Virtio ring descriptors: 16 bytes. These can chain together via "next". */ 62/* Virtio ring descriptors: 16 bytes. These can chain together via "next". */
62struct vring_desc { 63struct vring_desc {
63 /* Address (guest-physical). */ 64 /* Address (guest-physical). */
64 __u64 addr; 65 __virtio64 addr;
65 /* Length. */ 66 /* Length. */
66 __u32 len; 67 __virtio32 len;
67 /* The flags as indicated above. */ 68 /* The flags as indicated above. */
68 __u16 flags; 69 __virtio16 flags;
69 /* We chain unused descriptors via this, too */ 70 /* We chain unused descriptors via this, too */
70 __u16 next; 71 __virtio16 next;
71}; 72};
72 73
73struct vring_avail { 74struct vring_avail {
74 __u16 flags; 75 __virtio16 flags;
75 __u16 idx; 76 __virtio16 idx;
76 __u16 ring[]; 77 __virtio16 ring[];
77}; 78};
78 79
79/* u32 is used here for ids for padding reasons. */ 80/* u32 is used here for ids for padding reasons. */
80struct vring_used_elem { 81struct vring_used_elem {
81 /* Index of start of used descriptor chain. */ 82 /* Index of start of used descriptor chain. */
82 __u32 id; 83 __virtio32 id;
83 /* Total length of the descriptor chain which was used (written to) */ 84 /* Total length of the descriptor chain which was used (written to) */
84 __u32 len; 85 __virtio32 len;
85}; 86};
86 87
87struct vring_used { 88struct vring_used {
88 __u16 flags; 89 __virtio16 flags;
89 __u16 idx; 90 __virtio16 idx;
90 struct vring_used_elem ring[]; 91 struct vring_used_elem ring[];
91}; 92};
92 93
@@ -109,25 +110,25 @@ struct vring {
109 * struct vring_desc desc[num]; 110 * struct vring_desc desc[num];
110 * 111 *
111 * // A ring of available descriptor heads with free-running index. 112 * // A ring of available descriptor heads with free-running index.
112 * __u16 avail_flags; 113 * __virtio16 avail_flags;
113 * __u16 avail_idx; 114 * __virtio16 avail_idx;
114 * __u16 available[num]; 115 * __virtio16 available[num];
115 * __u16 used_event_idx; 116 * __virtio16 used_event_idx;
116 * 117 *
117 * // Padding to the next align boundary. 118 * // Padding to the next align boundary.
118 * char pad[]; 119 * char pad[];
119 * 120 *
120 * // A ring of used descriptor heads with free-running index. 121 * // A ring of used descriptor heads with free-running index.
121 * __u16 used_flags; 122 * __virtio16 used_flags;
122 * __u16 used_idx; 123 * __virtio16 used_idx;
123 * struct vring_used_elem used[num]; 124 * struct vring_used_elem used[num];
124 * __u16 avail_event_idx; 125 * __virtio16 avail_event_idx;
125 * }; 126 * };
126 */ 127 */
127/* We publish the used event index at the end of the available ring, and vice 128/* We publish the used event index at the end of the available ring, and vice
128 * versa. They are at the end for backwards compatibility. */ 129 * versa. They are at the end for backwards compatibility. */
129#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num]) 130#define vring_used_event(vr) ((vr)->avail->ring[(vr)->num])
130#define vring_avail_event(vr) (*(__u16 *)&(vr)->used->ring[(vr)->num]) 131#define vring_avail_event(vr) (*(__virtio16 *)&(vr)->used->ring[(vr)->num])
131 132
132static inline void vring_init(struct vring *vr, unsigned int num, void *p, 133static inline void vring_init(struct vring *vr, unsigned int num, void *p,
133 unsigned long align) 134 unsigned long align)
@@ -135,15 +136,15 @@ static inline void vring_init(struct vring *vr, unsigned int num, void *p,
135 vr->num = num; 136 vr->num = num;
136 vr->desc = p; 137 vr->desc = p;
137 vr->avail = p + num*sizeof(struct vring_desc); 138 vr->avail = p + num*sizeof(struct vring_desc);
138 vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__u16) 139 vr->used = (void *)(((unsigned long)&vr->avail->ring[num] + sizeof(__virtio16)
139 + align-1) & ~(align - 1)); 140 + align-1) & ~(align - 1));
140} 141}
141 142
142static inline unsigned vring_size(unsigned int num, unsigned long align) 143static inline unsigned vring_size(unsigned int num, unsigned long align)
143{ 144{
144 return ((sizeof(struct vring_desc) * num + sizeof(__u16) * (3 + num) 145 return ((sizeof(struct vring_desc) * num + sizeof(__virtio16) * (3 + num)
145 + align - 1) & ~(align - 1)) 146 + align - 1) & ~(align - 1))
146 + sizeof(__u16) * 3 + sizeof(struct vring_used_elem) * num; 147 + sizeof(__virtio16) * 3 + sizeof(struct vring_used_elem) * num;
147} 148}
148 149
149/* The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX */ 150/* The following is used with USED_EVENT_IDX and AVAIL_EVENT_IDX */
diff --git a/include/uapi/linux/virtio_scsi.h b/include/uapi/linux/virtio_scsi.h
new file mode 100644
index 000000000000..42b9370771b0
--- /dev/null
+++ b/include/uapi/linux/virtio_scsi.h
@@ -0,0 +1,164 @@
1/*
2 * This header is BSD licensed so anyone can use the definitions to implement
3 * compatible drivers/servers.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND
15 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
17 * ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE
18 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
19 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
20 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
21 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
22 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
23 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
24 * SUCH DAMAGE.
25 */
26
27#ifndef _LINUX_VIRTIO_SCSI_H
28#define _LINUX_VIRTIO_SCSI_H
29
30#include <linux/virtio_types.h>
31
32#define VIRTIO_SCSI_CDB_SIZE 32
33#define VIRTIO_SCSI_SENSE_SIZE 96
34
35/* SCSI command request, followed by data-out */
36struct virtio_scsi_cmd_req {
37 __u8 lun[8]; /* Logical Unit Number */
38 __virtio64 tag; /* Command identifier */
39 __u8 task_attr; /* Task attribute */
40 __u8 prio; /* SAM command priority field */
41 __u8 crn;
42 __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
43} __attribute__((packed));
44
45/* SCSI command request, followed by protection information */
46struct virtio_scsi_cmd_req_pi {
47 __u8 lun[8]; /* Logical Unit Number */
48 __virtio64 tag; /* Command identifier */
49 __u8 task_attr; /* Task attribute */
50 __u8 prio; /* SAM command priority field */
51 __u8 crn;
52 __virtio32 pi_bytesout; /* DataOUT PI Number of bytes */
53 __virtio32 pi_bytesin; /* DataIN PI Number of bytes */
54 __u8 cdb[VIRTIO_SCSI_CDB_SIZE];
55} __attribute__((packed));
56
57/* Response, followed by sense data and data-in */
58struct virtio_scsi_cmd_resp {
59 __virtio32 sense_len; /* Sense data length */
60 __virtio32 resid; /* Residual bytes in data buffer */
61 __virtio16 status_qualifier; /* Status qualifier */
62 __u8 status; /* Command completion status */
63 __u8 response; /* Response values */
64 __u8 sense[VIRTIO_SCSI_SENSE_SIZE];
65} __attribute__((packed));
66
67/* Task Management Request */
68struct virtio_scsi_ctrl_tmf_req {
69 __virtio32 type;
70 __virtio32 subtype;
71 __u8 lun[8];
72 __virtio64 tag;
73} __attribute__((packed));
74
75struct virtio_scsi_ctrl_tmf_resp {
76 __u8 response;
77} __attribute__((packed));
78
79/* Asynchronous notification query/subscription */
80struct virtio_scsi_ctrl_an_req {
81 __virtio32 type;
82 __u8 lun[8];
83 __virtio32 event_requested;
84} __attribute__((packed));
85
86struct virtio_scsi_ctrl_an_resp {
87 __virtio32 event_actual;
88 __u8 response;
89} __attribute__((packed));
90
91struct virtio_scsi_event {
92 __virtio32 event;
93 __u8 lun[8];
94 __virtio32 reason;
95} __attribute__((packed));
96
97struct virtio_scsi_config {
98 __u32 num_queues;
99 __u32 seg_max;
100 __u32 max_sectors;
101 __u32 cmd_per_lun;
102 __u32 event_info_size;
103 __u32 sense_size;
104 __u32 cdb_size;
105 __u16 max_channel;
106 __u16 max_target;
107 __u32 max_lun;
108} __attribute__((packed));
109
110/* Feature Bits */
111#define VIRTIO_SCSI_F_INOUT 0
112#define VIRTIO_SCSI_F_HOTPLUG 1
113#define VIRTIO_SCSI_F_CHANGE 2
114#define VIRTIO_SCSI_F_T10_PI 3
115
116/* Response codes */
117#define VIRTIO_SCSI_S_OK 0
118#define VIRTIO_SCSI_S_OVERRUN 1
119#define VIRTIO_SCSI_S_ABORTED 2
120#define VIRTIO_SCSI_S_BAD_TARGET 3
121#define VIRTIO_SCSI_S_RESET 4
122#define VIRTIO_SCSI_S_BUSY 5
123#define VIRTIO_SCSI_S_TRANSPORT_FAILURE 6
124#define VIRTIO_SCSI_S_TARGET_FAILURE 7
125#define VIRTIO_SCSI_S_NEXUS_FAILURE 8
126#define VIRTIO_SCSI_S_FAILURE 9
127#define VIRTIO_SCSI_S_FUNCTION_SUCCEEDED 10
128#define VIRTIO_SCSI_S_FUNCTION_REJECTED 11
129#define VIRTIO_SCSI_S_INCORRECT_LUN 12
130
131/* Controlq type codes. */
132#define VIRTIO_SCSI_T_TMF 0
133#define VIRTIO_SCSI_T_AN_QUERY 1
134#define VIRTIO_SCSI_T_AN_SUBSCRIBE 2
135
136/* Valid TMF subtypes. */
137#define VIRTIO_SCSI_T_TMF_ABORT_TASK 0
138#define VIRTIO_SCSI_T_TMF_ABORT_TASK_SET 1
139#define VIRTIO_SCSI_T_TMF_CLEAR_ACA 2
140#define VIRTIO_SCSI_T_TMF_CLEAR_TASK_SET 3
141#define VIRTIO_SCSI_T_TMF_I_T_NEXUS_RESET 4
142#define VIRTIO_SCSI_T_TMF_LOGICAL_UNIT_RESET 5
143#define VIRTIO_SCSI_T_TMF_QUERY_TASK 6
144#define VIRTIO_SCSI_T_TMF_QUERY_TASK_SET 7
145
146/* Events. */
147#define VIRTIO_SCSI_T_EVENTS_MISSED 0x80000000
148#define VIRTIO_SCSI_T_NO_EVENT 0
149#define VIRTIO_SCSI_T_TRANSPORT_RESET 1
150#define VIRTIO_SCSI_T_ASYNC_NOTIFY 2
151#define VIRTIO_SCSI_T_PARAM_CHANGE 3
152
153/* Reasons of transport reset event */
154#define VIRTIO_SCSI_EVT_RESET_HARD 0
155#define VIRTIO_SCSI_EVT_RESET_RESCAN 1
156#define VIRTIO_SCSI_EVT_RESET_REMOVED 2
157
158#define VIRTIO_SCSI_S_SIMPLE 0
159#define VIRTIO_SCSI_S_ORDERED 1
160#define VIRTIO_SCSI_S_HEAD 2
161#define VIRTIO_SCSI_S_ACA 3
162
163
164#endif /* _LINUX_VIRTIO_SCSI_H */
diff --git a/include/uapi/linux/virtio_types.h b/include/uapi/linux/virtio_types.h
new file mode 100644
index 000000000000..e845e8c4cbee
--- /dev/null
+++ b/include/uapi/linux/virtio_types.h
@@ -0,0 +1,46 @@
1#ifndef _UAPI_LINUX_VIRTIO_TYPES_H
2#define _UAPI_LINUX_VIRTIO_TYPES_H
3/* Type definitions for virtio implementations.
4 *
5 * This header is BSD licensed so anyone can use the definitions to implement
6 * compatible drivers/servers.
7 *
8 * Redistribution and use in source and binary forms, with or without
9 * modification, are permitted provided that the following conditions
10 * are met:
11 * 1. Redistributions of source code must retain the above copyright
12 * notice, this list of conditions and the following disclaimer.
13 * 2. Redistributions in binary form must reproduce the above copyright
14 * notice, this list of conditions and the following disclaimer in the
15 * documentation and/or other materials provided with the distribution.
16 * 3. Neither the name of IBM nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND
20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22 * ARE DISCLAIMED. IN NO EVENT SHALL IBM OR CONTRIBUTORS BE LIABLE
23 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29 * SUCH DAMAGE.
30 *
31 * Copyright (C) 2014 Red Hat, Inc.
32 * Author: Michael S. Tsirkin <mst@redhat.com>
33 */
34#include <linux/types.h>
35
36/*
37 * __virtio{16,32,64} have the following meaning:
38 * - __u{16,32,64} for virtio devices in legacy mode, accessed in native endian
39 * - __le{16,32,64} for standard-compliant virtio devices
40 */
41
42typedef __u16 __bitwise__ __virtio16;
43typedef __u32 __bitwise__ __virtio32;
44typedef __u64 __bitwise__ __virtio64;
45
46#endif /* _UAPI_LINUX_VIRTIO_TYPES_H */
diff --git a/include/uapi/linux/vt.h b/include/uapi/linux/vt.h
index 4b59a26799a3..978578bd1895 100644
--- a/include/uapi/linux/vt.h
+++ b/include/uapi/linux/vt.h
@@ -84,7 +84,4 @@ struct vt_setactivate {
84 84
85#define VT_SETACTIVATE 0x560F /* Activate and set the mode of a console */ 85#define VT_SETACTIVATE 0x560F /* Activate and set the mode of a console */
86 86
87
88#define vt_get_kmsg_redirect() vt_kmsg_redirect(-1)
89
90#endif /* _UAPI_LINUX_VT_H */ 87#endif /* _UAPI_LINUX_VT_H */