Merge tag 'v4.10-rc2' into drm-intel-next-queued
Backmerge Linux 4.10-rc2 to resync with our -fixes cherry-picks. I've done the backmerge directly because Dave is on vacation. Signed-off-by: Daniel Vetter <daniel.vetter@intel.com>
This commit is contained in:
@@ -92,4 +92,6 @@
|
||||
|
||||
#define SO_CNX_ADVICE 53
|
||||
|
||||
#define SCM_TIMESTAMPING_OPT_STATS 54
|
||||
|
||||
#endif /* __ASM_GENERIC_SOCKET_H */
|
||||
|
@@ -522,6 +522,12 @@ struct drm_amdgpu_cs_chunk_data {
|
||||
#define AMDGPU_INFO_MEMORY 0x19
|
||||
/* Query vce clock table */
|
||||
#define AMDGPU_INFO_VCE_CLOCK_TABLE 0x1A
|
||||
/* Query vbios related information */
|
||||
#define AMDGPU_INFO_VBIOS 0x1B
|
||||
/* Subquery id: Query vbios size */
|
||||
#define AMDGPU_INFO_VBIOS_SIZE 0x1
|
||||
/* Subquery id: Query vbios image */
|
||||
#define AMDGPU_INFO_VBIOS_IMAGE 0x2
|
||||
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0
|
||||
#define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff
|
||||
@@ -580,6 +586,11 @@ struct drm_amdgpu_info {
|
||||
} read_mmr_reg;
|
||||
|
||||
struct drm_amdgpu_query_fw query_fw;
|
||||
|
||||
struct {
|
||||
__u32 type;
|
||||
__u32 offset;
|
||||
} vbios_info;
|
||||
};
|
||||
};
|
||||
|
||||
|
@@ -236,14 +236,16 @@ struct drm_mode_get_encoder {
|
||||
|
||||
/* This is for connectors with multiple signal types. */
|
||||
/* Try to match DRM_MODE_CONNECTOR_X as closely as possible. */
|
||||
#define DRM_MODE_SUBCONNECTOR_Automatic 0
|
||||
#define DRM_MODE_SUBCONNECTOR_Unknown 0
|
||||
#define DRM_MODE_SUBCONNECTOR_DVID 3
|
||||
#define DRM_MODE_SUBCONNECTOR_DVIA 4
|
||||
#define DRM_MODE_SUBCONNECTOR_Composite 5
|
||||
#define DRM_MODE_SUBCONNECTOR_SVIDEO 6
|
||||
#define DRM_MODE_SUBCONNECTOR_Component 8
|
||||
#define DRM_MODE_SUBCONNECTOR_SCART 9
|
||||
enum drm_mode_subconnector {
|
||||
DRM_MODE_SUBCONNECTOR_Automatic = 0,
|
||||
DRM_MODE_SUBCONNECTOR_Unknown = 0,
|
||||
DRM_MODE_SUBCONNECTOR_DVID = 3,
|
||||
DRM_MODE_SUBCONNECTOR_DVIA = 4,
|
||||
DRM_MODE_SUBCONNECTOR_Composite = 5,
|
||||
DRM_MODE_SUBCONNECTOR_SVIDEO = 6,
|
||||
DRM_MODE_SUBCONNECTOR_Component = 8,
|
||||
DRM_MODE_SUBCONNECTOR_SCART = 9,
|
||||
};
|
||||
|
||||
#define DRM_MODE_CONNECTOR_Unknown 0
|
||||
#define DRM_MODE_CONNECTOR_VGA 1
|
||||
|
@@ -70,6 +70,7 @@ header-y += bfs_fs.h
|
||||
header-y += binfmts.h
|
||||
header-y += blkpg.h
|
||||
header-y += blktrace_api.h
|
||||
header-y += blkzoned.h
|
||||
header-y += bpf_common.h
|
||||
header-y += bpf_perf_event.h
|
||||
header-y += bpf.h
|
||||
@@ -83,6 +84,8 @@ header-y += capi.h
|
||||
header-y += cciss_defs.h
|
||||
header-y += cciss_ioctl.h
|
||||
header-y += cdrom.h
|
||||
header-y += cec.h
|
||||
header-y += cec-funcs.h
|
||||
header-y += cgroupstats.h
|
||||
header-y += chio.h
|
||||
header-y += cm4000_cs.h
|
||||
@@ -426,6 +429,7 @@ header-y += udp.h
|
||||
header-y += uhid.h
|
||||
header-y += uinput.h
|
||||
header-y += uio.h
|
||||
header-y += uleds.h
|
||||
header-y += ultrasound.h
|
||||
header-y += un.h
|
||||
header-y += unistd.h
|
||||
@@ -460,6 +464,7 @@ header-y += virtio_rng.h
|
||||
header-y += virtio_scsi.h
|
||||
header-y += virtio_types.h
|
||||
header-y += virtio_vsock.h
|
||||
header-y += virtio_crypto.h
|
||||
header-y += vm_sockets.h
|
||||
header-y += vt.h
|
||||
header-y += vtpm_proxy.h
|
||||
|
@@ -254,6 +254,7 @@
|
||||
#define AUDIT_OBJ_LEV_LOW 22
|
||||
#define AUDIT_OBJ_LEV_HIGH 23
|
||||
#define AUDIT_LOGINUID_SET 24
|
||||
#define AUDIT_SESSIONID 25 /* Session ID */
|
||||
|
||||
/* These are ONLY useful when checking
|
||||
* at syscall exit time (AUDIT_AT_EXIT). */
|
||||
@@ -330,10 +331,12 @@ enum {
|
||||
#define AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME 0x00000002
|
||||
#define AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH 0x00000004
|
||||
#define AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND 0x00000008
|
||||
#define AUDIT_FEATURE_BITMAP_SESSIONID_FILTER 0x00000010
|
||||
#define AUDIT_FEATURE_BITMAP_ALL (AUDIT_FEATURE_BITMAP_BACKLOG_LIMIT | \
|
||||
AUDIT_FEATURE_BITMAP_BACKLOG_WAIT_TIME | \
|
||||
AUDIT_FEATURE_BITMAP_EXECUTABLE_PATH | \
|
||||
AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND)
|
||||
AUDIT_FEATURE_BITMAP_EXCLUDE_EXTEND | \
|
||||
AUDIT_FEATURE_BITMAP_SESSIONID_FILTER)
|
||||
|
||||
/* deprecated: AUDIT_VERSION_* */
|
||||
#define AUDIT_VERSION_LATEST AUDIT_FEATURE_BITMAP_ALL
|
||||
|
143
include/uapi/linux/blkzoned.h
Normal file
143
include/uapi/linux/blkzoned.h
Normal file
@@ -0,0 +1,143 @@
|
||||
/*
|
||||
* Zoned block devices handling.
|
||||
*
|
||||
* Copyright (C) 2015 Seagate Technology PLC
|
||||
*
|
||||
* Written by: Shaun Tancheff <shaun.tancheff@seagate.com>
|
||||
*
|
||||
* Modified by: Damien Le Moal <damien.lemoal@hgst.com>
|
||||
* Copyright (C) 2016 Western Digital
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public
|
||||
* License version 2. This program is licensed "as is" without any
|
||||
* warranty of any kind, whether express or implied.
|
||||
*/
|
||||
#ifndef _UAPI_BLKZONED_H
|
||||
#define _UAPI_BLKZONED_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/**
|
||||
* enum blk_zone_type - Types of zones allowed in a zoned device.
|
||||
*
|
||||
* @BLK_ZONE_TYPE_CONVENTIONAL: The zone has no write pointer and can be writen
|
||||
* randomly. Zone reset has no effect on the zone.
|
||||
* @BLK_ZONE_TYPE_SEQWRITE_REQ: The zone must be written sequentially
|
||||
* @BLK_ZONE_TYPE_SEQWRITE_PREF: The zone can be written non-sequentially
|
||||
*
|
||||
* Any other value not defined is reserved and must be considered as invalid.
|
||||
*/
|
||||
enum blk_zone_type {
|
||||
BLK_ZONE_TYPE_CONVENTIONAL = 0x1,
|
||||
BLK_ZONE_TYPE_SEQWRITE_REQ = 0x2,
|
||||
BLK_ZONE_TYPE_SEQWRITE_PREF = 0x3,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum blk_zone_cond - Condition [state] of a zone in a zoned device.
|
||||
*
|
||||
* @BLK_ZONE_COND_NOT_WP: The zone has no write pointer, it is conventional.
|
||||
* @BLK_ZONE_COND_EMPTY: The zone is empty.
|
||||
* @BLK_ZONE_COND_IMP_OPEN: The zone is open, but not explicitly opened.
|
||||
* @BLK_ZONE_COND_EXP_OPEN: The zones was explicitly opened by an
|
||||
* OPEN ZONE command.
|
||||
* @BLK_ZONE_COND_CLOSED: The zone was [explicitly] closed after writing.
|
||||
* @BLK_ZONE_COND_FULL: The zone is marked as full, possibly by a zone
|
||||
* FINISH ZONE command.
|
||||
* @BLK_ZONE_COND_READONLY: The zone is read-only.
|
||||
* @BLK_ZONE_COND_OFFLINE: The zone is offline (sectors cannot be read/written).
|
||||
*
|
||||
* The Zone Condition state machine in the ZBC/ZAC standards maps the above
|
||||
* deinitions as:
|
||||
* - ZC1: Empty | BLK_ZONE_EMPTY
|
||||
* - ZC2: Implicit Open | BLK_ZONE_COND_IMP_OPEN
|
||||
* - ZC3: Explicit Open | BLK_ZONE_COND_EXP_OPEN
|
||||
* - ZC4: Closed | BLK_ZONE_CLOSED
|
||||
* - ZC5: Full | BLK_ZONE_FULL
|
||||
* - ZC6: Read Only | BLK_ZONE_READONLY
|
||||
* - ZC7: Offline | BLK_ZONE_OFFLINE
|
||||
*
|
||||
* Conditions 0x5 to 0xC are reserved by the current ZBC/ZAC spec and should
|
||||
* be considered invalid.
|
||||
*/
|
||||
enum blk_zone_cond {
|
||||
BLK_ZONE_COND_NOT_WP = 0x0,
|
||||
BLK_ZONE_COND_EMPTY = 0x1,
|
||||
BLK_ZONE_COND_IMP_OPEN = 0x2,
|
||||
BLK_ZONE_COND_EXP_OPEN = 0x3,
|
||||
BLK_ZONE_COND_CLOSED = 0x4,
|
||||
BLK_ZONE_COND_READONLY = 0xD,
|
||||
BLK_ZONE_COND_FULL = 0xE,
|
||||
BLK_ZONE_COND_OFFLINE = 0xF,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct blk_zone - Zone descriptor for BLKREPORTZONE ioctl.
|
||||
*
|
||||
* @start: Zone start in 512 B sector units
|
||||
* @len: Zone length in 512 B sector units
|
||||
* @wp: Zone write pointer location in 512 B sector units
|
||||
* @type: see enum blk_zone_type for possible values
|
||||
* @cond: see enum blk_zone_cond for possible values
|
||||
* @non_seq: Flag indicating that the zone is using non-sequential resources
|
||||
* (for host-aware zoned block devices only).
|
||||
* @reset: Flag indicating that a zone reset is recommended.
|
||||
* @reserved: Padding to 64 B to match the ZBC/ZAC defined zone descriptor size.
|
||||
*
|
||||
* start, len and wp use the regular 512 B sector unit, regardless of the
|
||||
* device logical block size. The overall structure size is 64 B to match the
|
||||
* ZBC/ZAC defined zone descriptor and allow support for future additional
|
||||
* zone information.
|
||||
*/
|
||||
struct blk_zone {
|
||||
__u64 start; /* Zone start sector */
|
||||
__u64 len; /* Zone length in number of sectors */
|
||||
__u64 wp; /* Zone write pointer position */
|
||||
__u8 type; /* Zone type */
|
||||
__u8 cond; /* Zone condition */
|
||||
__u8 non_seq; /* Non-sequential write resources active */
|
||||
__u8 reset; /* Reset write pointer recommended */
|
||||
__u8 reserved[36];
|
||||
};
|
||||
|
||||
/**
|
||||
* struct blk_zone_report - BLKREPORTZONE ioctl request/reply
|
||||
*
|
||||
* @sector: starting sector of report
|
||||
* @nr_zones: IN maximum / OUT actual
|
||||
* @reserved: padding to 16 byte alignment
|
||||
* @zones: Space to hold @nr_zones @zones entries on reply.
|
||||
*
|
||||
* The array of at most @nr_zones must follow this structure in memory.
|
||||
*/
|
||||
struct blk_zone_report {
|
||||
__u64 sector;
|
||||
__u32 nr_zones;
|
||||
__u8 reserved[4];
|
||||
struct blk_zone zones[0];
|
||||
} __packed;
|
||||
|
||||
/**
|
||||
* struct blk_zone_range - BLKRESETZONE ioctl request
|
||||
* @sector: starting sector of the first zone to issue reset write pointer
|
||||
* @nr_sectors: Total number of sectors of 1 or more zones to reset
|
||||
*/
|
||||
struct blk_zone_range {
|
||||
__u64 sector;
|
||||
__u64 nr_sectors;
|
||||
};
|
||||
|
||||
/**
|
||||
* Zoned block device ioctl's:
|
||||
*
|
||||
* @BLKREPORTZONE: Get zone information. Takes a zone report as argument.
|
||||
* The zone report will start from the zone containing the
|
||||
* sector specified in the report request structure.
|
||||
* @BLKRESETZONE: Reset the write pointer of the zones in the specified
|
||||
* sector range. The sector range must be zone aligned.
|
||||
*/
|
||||
#define BLKREPORTZONE _IOWR(0x12, 130, struct blk_zone_report)
|
||||
#define BLKRESETZONE _IOW(0x12, 131, struct blk_zone_range)
|
||||
|
||||
#endif /* _UAPI_BLKZONED_H */
|
@@ -73,6 +73,8 @@ enum bpf_cmd {
|
||||
BPF_PROG_LOAD,
|
||||
BPF_OBJ_PIN,
|
||||
BPF_OBJ_GET,
|
||||
BPF_PROG_ATTACH,
|
||||
BPF_PROG_DETACH,
|
||||
};
|
||||
|
||||
enum bpf_map_type {
|
||||
@@ -85,6 +87,8 @@ enum bpf_map_type {
|
||||
BPF_MAP_TYPE_PERCPU_ARRAY,
|
||||
BPF_MAP_TYPE_STACK_TRACE,
|
||||
BPF_MAP_TYPE_CGROUP_ARRAY,
|
||||
BPF_MAP_TYPE_LRU_HASH,
|
||||
BPF_MAP_TYPE_LRU_PERCPU_HASH,
|
||||
};
|
||||
|
||||
enum bpf_prog_type {
|
||||
@@ -96,8 +100,22 @@ enum bpf_prog_type {
|
||||
BPF_PROG_TYPE_TRACEPOINT,
|
||||
BPF_PROG_TYPE_XDP,
|
||||
BPF_PROG_TYPE_PERF_EVENT,
|
||||
BPF_PROG_TYPE_CGROUP_SKB,
|
||||
BPF_PROG_TYPE_CGROUP_SOCK,
|
||||
BPF_PROG_TYPE_LWT_IN,
|
||||
BPF_PROG_TYPE_LWT_OUT,
|
||||
BPF_PROG_TYPE_LWT_XMIT,
|
||||
};
|
||||
|
||||
enum bpf_attach_type {
|
||||
BPF_CGROUP_INET_INGRESS,
|
||||
BPF_CGROUP_INET_EGRESS,
|
||||
BPF_CGROUP_INET_SOCK_CREATE,
|
||||
__MAX_BPF_ATTACH_TYPE
|
||||
};
|
||||
|
||||
#define MAX_BPF_ATTACH_TYPE __MAX_BPF_ATTACH_TYPE
|
||||
|
||||
#define BPF_PSEUDO_MAP_FD 1
|
||||
|
||||
/* flags for BPF_MAP_UPDATE_ELEM command */
|
||||
@@ -106,6 +124,13 @@ enum bpf_prog_type {
|
||||
#define BPF_EXIST 2 /* update existing element */
|
||||
|
||||
#define BPF_F_NO_PREALLOC (1U << 0)
|
||||
/* Instead of having one common LRU list in the
|
||||
* BPF_MAP_TYPE_LRU_[PERCPU_]HASH map, use a percpu LRU list
|
||||
* which can scale and perform better.
|
||||
* Note, the LRU nodes (including free nodes) cannot be moved
|
||||
* across different LRU lists.
|
||||
*/
|
||||
#define BPF_F_NO_COMMON_LRU (1U << 1)
|
||||
|
||||
union bpf_attr {
|
||||
struct { /* anonymous struct used by BPF_MAP_CREATE command */
|
||||
@@ -141,293 +166,327 @@ union bpf_attr {
|
||||
__aligned_u64 pathname;
|
||||
__u32 bpf_fd;
|
||||
};
|
||||
|
||||
struct { /* anonymous struct used by BPF_PROG_ATTACH/DETACH commands */
|
||||
__u32 target_fd; /* container object to attach to */
|
||||
__u32 attach_bpf_fd; /* eBPF program to attach */
|
||||
__u32 attach_type;
|
||||
};
|
||||
} __attribute__((aligned(8)));
|
||||
|
||||
/* BPF helper function descriptions:
|
||||
*
|
||||
* void *bpf_map_lookup_elem(&map, &key)
|
||||
* Return: Map value or NULL
|
||||
*
|
||||
* int bpf_map_update_elem(&map, &key, &value, flags)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_map_delete_elem(&map, &key)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_probe_read(void *dst, int size, void *src)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* u64 bpf_ktime_get_ns(void)
|
||||
* Return: current ktime
|
||||
*
|
||||
* int bpf_trace_printk(const char *fmt, int fmt_size, ...)
|
||||
* Return: length of buffer written or negative error
|
||||
*
|
||||
* u32 bpf_prandom_u32(void)
|
||||
* Return: random value
|
||||
*
|
||||
* u32 bpf_raw_smp_processor_id(void)
|
||||
* Return: SMP processor ID
|
||||
*
|
||||
* int bpf_skb_store_bytes(skb, offset, from, len, flags)
|
||||
* store bytes into packet
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet from skb->mac_header
|
||||
* @from: pointer where to copy bytes from
|
||||
* @len: number of bytes to store into packet
|
||||
* @flags: bit 0 - if true, recompute skb->csum
|
||||
* other bits - reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_l3_csum_replace(skb, offset, from, to, flags)
|
||||
* recompute IP checksum
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet where IP checksum is located
|
||||
* @from: old value of header field
|
||||
* @to: new value of header field
|
||||
* @flags: bits 0-3 - size of header field
|
||||
* other bits - reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_l4_csum_replace(skb, offset, from, to, flags)
|
||||
* recompute TCP/UDP checksum
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet where TCP/UDP checksum is located
|
||||
* @from: old value of header field
|
||||
* @to: new value of header field
|
||||
* @flags: bits 0-3 - size of header field
|
||||
* bit 4 - is pseudo header
|
||||
* other bits - reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_tail_call(ctx, prog_array_map, index)
|
||||
* jump into another BPF program
|
||||
* @ctx: context pointer passed to next program
|
||||
* @prog_array_map: pointer to map which type is BPF_MAP_TYPE_PROG_ARRAY
|
||||
* @index: index inside array that selects specific program to run
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_clone_redirect(skb, ifindex, flags)
|
||||
* redirect to another netdev
|
||||
* @skb: pointer to skb
|
||||
* @ifindex: ifindex of the net device
|
||||
* @flags: bit 0 - if set, redirect to ingress instead of egress
|
||||
* other bits - reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* u64 bpf_get_current_pid_tgid(void)
|
||||
* Return: current->tgid << 32 | current->pid
|
||||
*
|
||||
* u64 bpf_get_current_uid_gid(void)
|
||||
* Return: current_gid << 32 | current_uid
|
||||
*
|
||||
* int bpf_get_current_comm(char *buf, int size_of_buf)
|
||||
* stores current->comm into buf
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* u32 bpf_get_cgroup_classid(skb)
|
||||
* retrieve a proc's classid
|
||||
* @skb: pointer to skb
|
||||
* Return: classid if != 0
|
||||
*
|
||||
* int bpf_skb_vlan_push(skb, vlan_proto, vlan_tci)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_vlan_pop(skb)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_get_tunnel_key(skb, key, size, flags)
|
||||
* int bpf_skb_set_tunnel_key(skb, key, size, flags)
|
||||
* retrieve or populate tunnel metadata
|
||||
* @skb: pointer to skb
|
||||
* @key: pointer to 'struct bpf_tunnel_key'
|
||||
* @size: size of 'struct bpf_tunnel_key'
|
||||
* @flags: room for future extensions
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* u64 bpf_perf_event_read(&map, index)
|
||||
* Return: Number events read or error code
|
||||
*
|
||||
* int bpf_redirect(ifindex, flags)
|
||||
* redirect to another netdev
|
||||
* @ifindex: ifindex of the net device
|
||||
* @flags: bit 0 - if set, redirect to ingress instead of egress
|
||||
* other bits - reserved
|
||||
* Return: TC_ACT_REDIRECT
|
||||
*
|
||||
* u32 bpf_get_route_realm(skb)
|
||||
* retrieve a dst's tclassid
|
||||
* @skb: pointer to skb
|
||||
* Return: realm if != 0
|
||||
*
|
||||
* int bpf_perf_event_output(ctx, map, index, data, size)
|
||||
* output perf raw sample
|
||||
* @ctx: struct pt_regs*
|
||||
* @map: pointer to perf_event_array map
|
||||
* @index: index of event in the map
|
||||
* @data: data on stack to be output as raw data
|
||||
* @size: size of data
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_get_stackid(ctx, map, flags)
|
||||
* walk user or kernel stack and return id
|
||||
* @ctx: struct pt_regs*
|
||||
* @map: pointer to stack_trace map
|
||||
* @flags: bits 0-7 - numer of stack frames to skip
|
||||
* bit 8 - collect user stack instead of kernel
|
||||
* bit 9 - compare stacks by hash only
|
||||
* bit 10 - if two different stacks hash into the same stackid
|
||||
* discard old
|
||||
* other bits - reserved
|
||||
* Return: >= 0 stackid on success or negative error
|
||||
*
|
||||
* s64 bpf_csum_diff(from, from_size, to, to_size, seed)
|
||||
* calculate csum diff
|
||||
* @from: raw from buffer
|
||||
* @from_size: length of from buffer
|
||||
* @to: raw to buffer
|
||||
* @to_size: length of to buffer
|
||||
* @seed: optional seed
|
||||
* Return: csum result or negative error code
|
||||
*
|
||||
* int bpf_skb_get_tunnel_opt(skb, opt, size)
|
||||
* retrieve tunnel options metadata
|
||||
* @skb: pointer to skb
|
||||
* @opt: pointer to raw tunnel option data
|
||||
* @size: size of @opt
|
||||
* Return: option size
|
||||
*
|
||||
* int bpf_skb_set_tunnel_opt(skb, opt, size)
|
||||
* populate tunnel options metadata
|
||||
* @skb: pointer to skb
|
||||
* @opt: pointer to raw tunnel option data
|
||||
* @size: size of @opt
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_change_proto(skb, proto, flags)
|
||||
* Change protocol of the skb. Currently supported is v4 -> v6,
|
||||
* v6 -> v4 transitions. The helper will also resize the skb. eBPF
|
||||
* program is expected to fill the new headers via skb_store_bytes
|
||||
* and lX_csum_replace.
|
||||
* @skb: pointer to skb
|
||||
* @proto: new skb->protocol type
|
||||
* @flags: reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_change_type(skb, type)
|
||||
* Change packet type of skb.
|
||||
* @skb: pointer to skb
|
||||
* @type: new skb->pkt_type type
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_under_cgroup(skb, map, index)
|
||||
* Check cgroup2 membership of skb
|
||||
* @skb: pointer to skb
|
||||
* @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
|
||||
* @index: index of the cgroup in the bpf_map
|
||||
* Return:
|
||||
* == 0 skb failed the cgroup2 descendant test
|
||||
* == 1 skb succeeded the cgroup2 descendant test
|
||||
* < 0 error
|
||||
*
|
||||
* u32 bpf_get_hash_recalc(skb)
|
||||
* Retrieve and possibly recalculate skb->hash.
|
||||
* @skb: pointer to skb
|
||||
* Return: hash
|
||||
*
|
||||
* u64 bpf_get_current_task(void)
|
||||
* Returns current task_struct
|
||||
* Return: current
|
||||
*
|
||||
* int bpf_probe_write_user(void *dst, void *src, int len)
|
||||
* safely attempt to write to a location
|
||||
* @dst: destination address in userspace
|
||||
* @src: source address on stack
|
||||
* @len: number of bytes to copy
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_current_task_under_cgroup(map, index)
|
||||
* Check cgroup2 membership of current task
|
||||
* @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
|
||||
* @index: index of the cgroup in the bpf_map
|
||||
* Return:
|
||||
* == 0 current failed the cgroup2 descendant test
|
||||
* == 1 current succeeded the cgroup2 descendant test
|
||||
* < 0 error
|
||||
*
|
||||
* int bpf_skb_change_tail(skb, len, flags)
|
||||
* The helper will resize the skb to the given new size, to be used f.e.
|
||||
* with control messages.
|
||||
* @skb: pointer to skb
|
||||
* @len: new skb length
|
||||
* @flags: reserved
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_skb_pull_data(skb, len)
|
||||
* The helper will pull in non-linear data in case the skb is non-linear
|
||||
* and not all of len are part of the linear section. Only needed for
|
||||
* read/write with direct packet access.
|
||||
* @skb: pointer to skb
|
||||
* @len: len to make read/writeable
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* s64 bpf_csum_update(skb, csum)
|
||||
* Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
|
||||
* @skb: pointer to skb
|
||||
* @csum: csum to add
|
||||
* Return: csum on success or negative error
|
||||
*
|
||||
* void bpf_set_hash_invalid(skb)
|
||||
* Invalidate current skb->hash.
|
||||
* @skb: pointer to skb
|
||||
*
|
||||
* int bpf_get_numa_node_id()
|
||||
* Return: Id of current NUMA node.
|
||||
*
|
||||
* int bpf_skb_change_head()
|
||||
* Grows headroom of skb and adjusts MAC header offset accordingly.
|
||||
* Will extends/reallocae as required automatically.
|
||||
* May change skb data pointer and will thus invalidate any check
|
||||
* performed for direct packet access.
|
||||
* @skb: pointer to skb
|
||||
* @len: length of header to be pushed in front
|
||||
* @flags: Flags (unused for now)
|
||||
* Return: 0 on success or negative error
|
||||
*
|
||||
* int bpf_xdp_adjust_head(xdp_md, delta)
|
||||
* Adjust the xdp_md.data by delta
|
||||
* @xdp_md: pointer to xdp_md
|
||||
* @delta: An positive/negative integer to be added to xdp_md.data
|
||||
* Return: 0 on success or negative on error
|
||||
*/
|
||||
#define __BPF_FUNC_MAPPER(FN) \
|
||||
FN(unspec), \
|
||||
FN(map_lookup_elem), \
|
||||
FN(map_update_elem), \
|
||||
FN(map_delete_elem), \
|
||||
FN(probe_read), \
|
||||
FN(ktime_get_ns), \
|
||||
FN(trace_printk), \
|
||||
FN(get_prandom_u32), \
|
||||
FN(get_smp_processor_id), \
|
||||
FN(skb_store_bytes), \
|
||||
FN(l3_csum_replace), \
|
||||
FN(l4_csum_replace), \
|
||||
FN(tail_call), \
|
||||
FN(clone_redirect), \
|
||||
FN(get_current_pid_tgid), \
|
||||
FN(get_current_uid_gid), \
|
||||
FN(get_current_comm), \
|
||||
FN(get_cgroup_classid), \
|
||||
FN(skb_vlan_push), \
|
||||
FN(skb_vlan_pop), \
|
||||
FN(skb_get_tunnel_key), \
|
||||
FN(skb_set_tunnel_key), \
|
||||
FN(perf_event_read), \
|
||||
FN(redirect), \
|
||||
FN(get_route_realm), \
|
||||
FN(perf_event_output), \
|
||||
FN(skb_load_bytes), \
|
||||
FN(get_stackid), \
|
||||
FN(csum_diff), \
|
||||
FN(skb_get_tunnel_opt), \
|
||||
FN(skb_set_tunnel_opt), \
|
||||
FN(skb_change_proto), \
|
||||
FN(skb_change_type), \
|
||||
FN(skb_under_cgroup), \
|
||||
FN(get_hash_recalc), \
|
||||
FN(get_current_task), \
|
||||
FN(probe_write_user), \
|
||||
FN(current_task_under_cgroup), \
|
||||
FN(skb_change_tail), \
|
||||
FN(skb_pull_data), \
|
||||
FN(csum_update), \
|
||||
FN(set_hash_invalid), \
|
||||
FN(get_numa_node_id), \
|
||||
FN(skb_change_head), \
|
||||
FN(xdp_adjust_head),
|
||||
|
||||
/* integer value in 'imm' field of BPF_CALL instruction selects which helper
|
||||
* function eBPF program intends to call
|
||||
*/
|
||||
#define __BPF_ENUM_FN(x) BPF_FUNC_ ## x
|
||||
enum bpf_func_id {
|
||||
BPF_FUNC_unspec,
|
||||
BPF_FUNC_map_lookup_elem, /* void *map_lookup_elem(&map, &key) */
|
||||
BPF_FUNC_map_update_elem, /* int map_update_elem(&map, &key, &value, flags) */
|
||||
BPF_FUNC_map_delete_elem, /* int map_delete_elem(&map, &key) */
|
||||
BPF_FUNC_probe_read, /* int bpf_probe_read(void *dst, int size, void *src) */
|
||||
BPF_FUNC_ktime_get_ns, /* u64 bpf_ktime_get_ns(void) */
|
||||
BPF_FUNC_trace_printk, /* int bpf_trace_printk(const char *fmt, int fmt_size, ...) */
|
||||
BPF_FUNC_get_prandom_u32, /* u32 prandom_u32(void) */
|
||||
BPF_FUNC_get_smp_processor_id, /* u32 raw_smp_processor_id(void) */
|
||||
|
||||
/**
|
||||
* skb_store_bytes(skb, offset, from, len, flags) - store bytes into packet
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet from skb->mac_header
|
||||
* @from: pointer where to copy bytes from
|
||||
* @len: number of bytes to store into packet
|
||||
* @flags: bit 0 - if true, recompute skb->csum
|
||||
* other bits - reserved
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_skb_store_bytes,
|
||||
|
||||
/**
|
||||
* l3_csum_replace(skb, offset, from, to, flags) - recompute IP checksum
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet where IP checksum is located
|
||||
* @from: old value of header field
|
||||
* @to: new value of header field
|
||||
* @flags: bits 0-3 - size of header field
|
||||
* other bits - reserved
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_l3_csum_replace,
|
||||
|
||||
/**
|
||||
* l4_csum_replace(skb, offset, from, to, flags) - recompute TCP/UDP checksum
|
||||
* @skb: pointer to skb
|
||||
* @offset: offset within packet where TCP/UDP checksum is located
|
||||
* @from: old value of header field
|
||||
* @to: new value of header field
|
||||
* @flags: bits 0-3 - size of header field
|
||||
* bit 4 - is pseudo header
|
||||
* other bits - reserved
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_l4_csum_replace,
|
||||
|
||||
/**
|
||||
* bpf_tail_call(ctx, prog_array_map, index) - jump into another BPF program
|
||||
* @ctx: context pointer passed to next program
|
||||
* @prog_array_map: pointer to map which type is BPF_MAP_TYPE_PROG_ARRAY
|
||||
* @index: index inside array that selects specific program to run
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_tail_call,
|
||||
|
||||
/**
|
||||
* bpf_clone_redirect(skb, ifindex, flags) - redirect to another netdev
|
||||
* @skb: pointer to skb
|
||||
* @ifindex: ifindex of the net device
|
||||
* @flags: bit 0 - if set, redirect to ingress instead of egress
|
||||
* other bits - reserved
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_clone_redirect,
|
||||
|
||||
/**
|
||||
* u64 bpf_get_current_pid_tgid(void)
|
||||
* Return: current->tgid << 32 | current->pid
|
||||
*/
|
||||
BPF_FUNC_get_current_pid_tgid,
|
||||
|
||||
/**
|
||||
* u64 bpf_get_current_uid_gid(void)
|
||||
* Return: current_gid << 32 | current_uid
|
||||
*/
|
||||
BPF_FUNC_get_current_uid_gid,
|
||||
|
||||
/**
|
||||
* bpf_get_current_comm(char *buf, int size_of_buf)
|
||||
* stores current->comm into buf
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_get_current_comm,
|
||||
|
||||
/**
|
||||
* bpf_get_cgroup_classid(skb) - retrieve a proc's classid
|
||||
* @skb: pointer to skb
|
||||
* Return: classid if != 0
|
||||
*/
|
||||
BPF_FUNC_get_cgroup_classid,
|
||||
BPF_FUNC_skb_vlan_push, /* bpf_skb_vlan_push(skb, vlan_proto, vlan_tci) */
|
||||
BPF_FUNC_skb_vlan_pop, /* bpf_skb_vlan_pop(skb) */
|
||||
|
||||
/**
|
||||
* bpf_skb_[gs]et_tunnel_key(skb, key, size, flags)
|
||||
* retrieve or populate tunnel metadata
|
||||
* @skb: pointer to skb
|
||||
* @key: pointer to 'struct bpf_tunnel_key'
|
||||
* @size: size of 'struct bpf_tunnel_key'
|
||||
* @flags: room for future extensions
|
||||
* Retrun: 0 on success
|
||||
*/
|
||||
BPF_FUNC_skb_get_tunnel_key,
|
||||
BPF_FUNC_skb_set_tunnel_key,
|
||||
BPF_FUNC_perf_event_read, /* u64 bpf_perf_event_read(&map, index) */
|
||||
/**
|
||||
* bpf_redirect(ifindex, flags) - redirect to another netdev
|
||||
* @ifindex: ifindex of the net device
|
||||
* @flags: bit 0 - if set, redirect to ingress instead of egress
|
||||
* other bits - reserved
|
||||
* Return: TC_ACT_REDIRECT
|
||||
*/
|
||||
BPF_FUNC_redirect,
|
||||
|
||||
/**
|
||||
* bpf_get_route_realm(skb) - retrieve a dst's tclassid
|
||||
* @skb: pointer to skb
|
||||
* Return: realm if != 0
|
||||
*/
|
||||
BPF_FUNC_get_route_realm,
|
||||
|
||||
/**
|
||||
* bpf_perf_event_output(ctx, map, index, data, size) - output perf raw sample
|
||||
* @ctx: struct pt_regs*
|
||||
* @map: pointer to perf_event_array map
|
||||
* @index: index of event in the map
|
||||
* @data: data on stack to be output as raw data
|
||||
* @size: size of data
|
||||
* Return: 0 on success
|
||||
*/
|
||||
BPF_FUNC_perf_event_output,
|
||||
BPF_FUNC_skb_load_bytes,
|
||||
|
||||
/**
|
||||
* bpf_get_stackid(ctx, map, flags) - walk user or kernel stack and return id
|
||||
* @ctx: struct pt_regs*
|
||||
* @map: pointer to stack_trace map
|
||||
* @flags: bits 0-7 - numer of stack frames to skip
|
||||
* bit 8 - collect user stack instead of kernel
|
||||
* bit 9 - compare stacks by hash only
|
||||
* bit 10 - if two different stacks hash into the same stackid
|
||||
* discard old
|
||||
* other bits - reserved
|
||||
* Return: >= 0 stackid on success or negative error
|
||||
*/
|
||||
BPF_FUNC_get_stackid,
|
||||
|
||||
/**
|
||||
* bpf_csum_diff(from, from_size, to, to_size, seed) - calculate csum diff
|
||||
* @from: raw from buffer
|
||||
* @from_size: length of from buffer
|
||||
* @to: raw to buffer
|
||||
* @to_size: length of to buffer
|
||||
* @seed: optional seed
|
||||
* Return: csum result
|
||||
*/
|
||||
BPF_FUNC_csum_diff,
|
||||
|
||||
/**
|
||||
* bpf_skb_[gs]et_tunnel_opt(skb, opt, size)
|
||||
* retrieve or populate tunnel options metadata
|
||||
* @skb: pointer to skb
|
||||
* @opt: pointer to raw tunnel option data
|
||||
* @size: size of @opt
|
||||
* Return: 0 on success for set, option size for get
|
||||
*/
|
||||
BPF_FUNC_skb_get_tunnel_opt,
|
||||
BPF_FUNC_skb_set_tunnel_opt,
|
||||
|
||||
/**
|
||||
* bpf_skb_change_proto(skb, proto, flags)
|
||||
* Change protocol of the skb. Currently supported is
|
||||
* v4 -> v6, v6 -> v4 transitions. The helper will also
|
||||
* resize the skb. eBPF program is expected to fill the
|
||||
* new headers via skb_store_bytes and lX_csum_replace.
|
||||
* @skb: pointer to skb
|
||||
* @proto: new skb->protocol type
|
||||
* @flags: reserved
|
||||
* Return: 0 on success or negative error
|
||||
*/
|
||||
BPF_FUNC_skb_change_proto,
|
||||
|
||||
/**
|
||||
* bpf_skb_change_type(skb, type)
|
||||
* Change packet type of skb.
|
||||
* @skb: pointer to skb
|
||||
* @type: new skb->pkt_type type
|
||||
* Return: 0 on success or negative error
|
||||
*/
|
||||
BPF_FUNC_skb_change_type,
|
||||
|
||||
/**
|
||||
* bpf_skb_under_cgroup(skb, map, index) - Check cgroup2 membership of skb
|
||||
* @skb: pointer to skb
|
||||
* @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
|
||||
* @index: index of the cgroup in the bpf_map
|
||||
* Return:
|
||||
* == 0 skb failed the cgroup2 descendant test
|
||||
* == 1 skb succeeded the cgroup2 descendant test
|
||||
* < 0 error
|
||||
*/
|
||||
BPF_FUNC_skb_under_cgroup,
|
||||
|
||||
/**
|
||||
* bpf_get_hash_recalc(skb)
|
||||
* Retrieve and possibly recalculate skb->hash.
|
||||
* @skb: pointer to skb
|
||||
* Return: hash
|
||||
*/
|
||||
BPF_FUNC_get_hash_recalc,
|
||||
|
||||
/**
|
||||
* u64 bpf_get_current_task(void)
|
||||
* Returns current task_struct
|
||||
* Return: current
|
||||
*/
|
||||
BPF_FUNC_get_current_task,
|
||||
|
||||
/**
|
||||
* bpf_probe_write_user(void *dst, void *src, int len)
|
||||
* safely attempt to write to a location
|
||||
* @dst: destination address in userspace
|
||||
* @src: source address on stack
|
||||
* @len: number of bytes to copy
|
||||
* Return: 0 on success or negative error
|
||||
*/
|
||||
BPF_FUNC_probe_write_user,
|
||||
|
||||
/**
|
||||
* bpf_current_task_under_cgroup(map, index) - Check cgroup2 membership of current task
|
||||
* @map: pointer to bpf_map in BPF_MAP_TYPE_CGROUP_ARRAY type
|
||||
* @index: index of the cgroup in the bpf_map
|
||||
* Return:
|
||||
* == 0 current failed the cgroup2 descendant test
|
||||
* == 1 current succeeded the cgroup2 descendant test
|
||||
* < 0 error
|
||||
*/
|
||||
BPF_FUNC_current_task_under_cgroup,
|
||||
|
||||
/**
|
||||
* bpf_skb_change_tail(skb, len, flags)
|
||||
* The helper will resize the skb to the given new size,
|
||||
* to be used f.e. with control messages.
|
||||
* @skb: pointer to skb
|
||||
* @len: new skb length
|
||||
* @flags: reserved
|
||||
* Return: 0 on success or negative error
|
||||
*/
|
||||
BPF_FUNC_skb_change_tail,
|
||||
|
||||
/**
|
||||
* bpf_skb_pull_data(skb, len)
|
||||
* The helper will pull in non-linear data in case the
|
||||
* skb is non-linear and not all of len are part of the
|
||||
* linear section. Only needed for read/write with direct
|
||||
* packet access.
|
||||
* @skb: pointer to skb
|
||||
* @len: len to make read/writeable
|
||||
* Return: 0 on success or negative error
|
||||
*/
|
||||
BPF_FUNC_skb_pull_data,
|
||||
|
||||
/**
|
||||
* bpf_csum_update(skb, csum)
|
||||
* Adds csum into skb->csum in case of CHECKSUM_COMPLETE.
|
||||
* @skb: pointer to skb
|
||||
* @csum: csum to add
|
||||
* Return: csum on success or negative error
|
||||
*/
|
||||
BPF_FUNC_csum_update,
|
||||
|
||||
/**
|
||||
* bpf_set_hash_invalid(skb)
|
||||
* Invalidate current skb>hash.
|
||||
* @skb: pointer to skb
|
||||
*/
|
||||
BPF_FUNC_set_hash_invalid,
|
||||
|
||||
__BPF_FUNC_MAPPER(__BPF_ENUM_FN)
|
||||
__BPF_FUNC_MAX_ID,
|
||||
};
|
||||
#undef __BPF_ENUM_FN
|
||||
|
||||
/* All flags used by eBPF helper functions, placed here. */
|
||||
|
||||
@@ -501,6 +560,31 @@ struct bpf_tunnel_key {
|
||||
__u32 tunnel_label;
|
||||
};
|
||||
|
||||
/* Generic BPF return codes which all BPF program types may support.
|
||||
* The values are binary compatible with their TC_ACT_* counter-part to
|
||||
* provide backwards compatibility with existing SCHED_CLS and SCHED_ACT
|
||||
* programs.
|
||||
*
|
||||
* XDP is handled seprately, see XDP_*.
|
||||
*/
|
||||
enum bpf_ret_code {
|
||||
BPF_OK = 0,
|
||||
/* 1 reserved */
|
||||
BPF_DROP = 2,
|
||||
/* 3-6 reserved */
|
||||
BPF_REDIRECT = 7,
|
||||
/* >127 are reserved for prog type specific return codes */
|
||||
};
|
||||
|
||||
struct bpf_sock {
|
||||
__u32 bound_dev_if;
|
||||
__u32 family;
|
||||
__u32 type;
|
||||
__u32 protocol;
|
||||
};
|
||||
|
||||
#define XDP_PACKET_HEADROOM 256
|
||||
|
||||
/* User return codes for XDP prog type.
|
||||
* A valid XDP program must return one of these defined values. All other
|
||||
* return codes are reserved for future use. Unknown return codes will result
|
||||
|
@@ -196,5 +196,6 @@ struct can_filter {
|
||||
};
|
||||
|
||||
#define CAN_INV_FILTER 0x20000000U /* to be set in can_filter.can_id */
|
||||
#define CAN_RAW_FILTER_MAX 512 /* maximum number of can_filter set via setsockopt() */
|
||||
|
||||
#endif /* !_UAPI_CAN_H */
|
||||
|
1965
include/uapi/linux/cec-funcs.h
Normal file
1965
include/uapi/linux/cec-funcs.h
Normal file
File diff suppressed because it is too large
Load Diff
1066
include/uapi/linux/cec.h
Normal file
1066
include/uapi/linux/cec.h
Normal file
File diff suppressed because it is too large
Load Diff
@@ -46,6 +46,7 @@ enum crypto_attr_type_t {
|
||||
CRYPTOCFGA_REPORT_CIPHER, /* struct crypto_report_cipher */
|
||||
CRYPTOCFGA_REPORT_AKCIPHER, /* struct crypto_report_akcipher */
|
||||
CRYPTOCFGA_REPORT_KPP, /* struct crypto_report_kpp */
|
||||
CRYPTOCFGA_REPORT_ACOMP, /* struct crypto_report_acomp */
|
||||
__CRYPTOCFGA_MAX
|
||||
|
||||
#define CRYPTOCFGA_MAX (__CRYPTOCFGA_MAX - 1)
|
||||
@@ -112,5 +113,9 @@ struct crypto_report_kpp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
struct crypto_report_acomp {
|
||||
char type[CRYPTO_MAX_NAME];
|
||||
};
|
||||
|
||||
#define CRYPTO_REPORT_MAXSIZE (sizeof(struct crypto_user_alg) + \
|
||||
sizeof(struct crypto_report_blkcipher))
|
||||
|
@@ -102,6 +102,13 @@ enum devlink_eswitch_mode {
|
||||
DEVLINK_ESWITCH_MODE_SWITCHDEV,
|
||||
};
|
||||
|
||||
enum devlink_eswitch_inline_mode {
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NONE,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_LINK,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_NETWORK,
|
||||
DEVLINK_ESWITCH_INLINE_MODE_TRANSPORT,
|
||||
};
|
||||
|
||||
enum devlink_attr {
|
||||
/* don't change the order or add anything between, this is ABI! */
|
||||
DEVLINK_ATTR_UNSPEC,
|
||||
@@ -133,6 +140,7 @@ enum devlink_attr {
|
||||
DEVLINK_ATTR_SB_OCC_CUR, /* u32 */
|
||||
DEVLINK_ATTR_SB_OCC_MAX, /* u32 */
|
||||
DEVLINK_ATTR_ESWITCH_MODE, /* u16 */
|
||||
DEVLINK_ATTR_ESWITCH_INLINE_MODE, /* u8 */
|
||||
|
||||
/* add new attributes above here, update the policy in devlink.c */
|
||||
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#ifndef __DM_LOG_USERSPACE_H__
|
||||
#define __DM_LOG_USERSPACE_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <linux/dm-ioctl.h> /* For DM_UUID_LEN */
|
||||
|
||||
/*
|
||||
@@ -147,12 +148,12 @@
|
||||
|
||||
/*
|
||||
* DM_ULOG_GET_REGION_SIZE corresponds to (found in dm-dirty-log.h):
|
||||
* uint32_t (*get_region_size)(struct dm_dirty_log *log);
|
||||
* __u32 (*get_region_size)(struct dm_dirty_log *log);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* None.
|
||||
* Payload-to-kernel:
|
||||
* uint64_t - contains the region size
|
||||
* __u64 - contains the region size
|
||||
*
|
||||
* The region size is something that was determined at constructor time.
|
||||
* It is returned in the payload area and 'data_size' is set to
|
||||
@@ -168,11 +169,11 @@
|
||||
* int (*is_clean)(struct dm_dirty_log *log, region_t region);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* uint64_t - the region to get clean status on
|
||||
* __u64 - the region to get clean status on
|
||||
* Payload-to-kernel:
|
||||
* int64_t - 1 if clean, 0 otherwise
|
||||
* __s64 - 1 if clean, 0 otherwise
|
||||
*
|
||||
* Payload is sizeof(uint64_t) and contains the region for which the clean
|
||||
* Payload is sizeof(__u64) and contains the region for which the clean
|
||||
* status is being made.
|
||||
*
|
||||
* When the request has been processed, user-space must return the
|
||||
@@ -187,9 +188,9 @@
|
||||
* int can_block);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* uint64_t - the region to get sync status on
|
||||
* __u64 - the region to get sync status on
|
||||
* Payload-to-kernel:
|
||||
* int64_t - 1 if in-sync, 0 otherwise
|
||||
* __s64 - 1 if in-sync, 0 otherwise
|
||||
*
|
||||
* Exactly the same as 'is_clean' above, except this time asking "has the
|
||||
* region been recovered?" vs. "is the region not being modified?"
|
||||
@@ -203,7 +204,7 @@
|
||||
* Payload-to-userspace:
|
||||
* If the 'integrated_flush' directive is present in the constructor
|
||||
* table, the payload is as same as DM_ULOG_MARK_REGION:
|
||||
* uint64_t [] - region(s) to mark
|
||||
* __u64 [] - region(s) to mark
|
||||
* else
|
||||
* None
|
||||
* Payload-to-kernel:
|
||||
@@ -225,13 +226,13 @@
|
||||
* void (*mark_region)(struct dm_dirty_log *log, region_t region);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* uint64_t [] - region(s) to mark
|
||||
* __u64 [] - region(s) to mark
|
||||
* Payload-to-kernel:
|
||||
* None.
|
||||
*
|
||||
* Incoming payload contains the one or more regions to mark dirty.
|
||||
* The number of regions contained in the payload can be determined from
|
||||
* 'data_size/sizeof(uint64_t)'.
|
||||
* 'data_size/sizeof(__u64)'.
|
||||
*
|
||||
* When the request has been processed, user-space must return the
|
||||
* dm_ulog_request to the kernel - setting the 'error' field and clearing
|
||||
@@ -244,13 +245,13 @@
|
||||
* void (*clear_region)(struct dm_dirty_log *log, region_t region);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* uint64_t [] - region(s) to clear
|
||||
* __u64 [] - region(s) to clear
|
||||
* Payload-to-kernel:
|
||||
* None.
|
||||
*
|
||||
* Incoming payload contains the one or more regions to mark clean.
|
||||
* The number of regions contained in the payload can be determined from
|
||||
* 'data_size/sizeof(uint64_t)'.
|
||||
* 'data_size/sizeof(__u64)'.
|
||||
*
|
||||
* When the request has been processed, user-space must return the
|
||||
* dm_ulog_request to the kernel - setting the 'error' field and clearing
|
||||
@@ -266,8 +267,8 @@
|
||||
* None.
|
||||
* Payload-to-kernel:
|
||||
* {
|
||||
* int64_t i; -- 1 if recovery necessary, 0 otherwise
|
||||
* uint64_t r; -- The region to recover if i=1
|
||||
* __s64 i; -- 1 if recovery necessary, 0 otherwise
|
||||
* __u64 r; -- The region to recover if i=1
|
||||
* }
|
||||
* 'data_size' should be set appropriately.
|
||||
*
|
||||
@@ -283,8 +284,8 @@
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* {
|
||||
* uint64_t - region to set sync state on
|
||||
* int64_t - 0 if not-in-sync, 1 if in-sync
|
||||
* __u64 - region to set sync state on
|
||||
* __s64 - 0 if not-in-sync, 1 if in-sync
|
||||
* }
|
||||
* Payload-to-kernel:
|
||||
* None.
|
||||
@@ -302,7 +303,7 @@
|
||||
* Payload-to-userspace:
|
||||
* None.
|
||||
* Payload-to-kernel:
|
||||
* uint64_t - the number of in-sync regions
|
||||
* __u64 - the number of in-sync regions
|
||||
*
|
||||
* No incoming payload. Kernel-bound payload contains the number of
|
||||
* regions that are in-sync (in a size_t).
|
||||
@@ -350,11 +351,11 @@
|
||||
* int (*is_remote_recovering)(struct dm_dirty_log *log, region_t region);
|
||||
*
|
||||
* Payload-to-userspace:
|
||||
* uint64_t - region to determine recovery status on
|
||||
* __u64 - region to determine recovery status on
|
||||
* Payload-to-kernel:
|
||||
* {
|
||||
* int64_t is_recovering; -- 0 if no, 1 if yes
|
||||
* uint64_t in_sync_hint; -- lowest region still needing resync
|
||||
* __s64 is_recovering; -- 0 if no, 1 if yes
|
||||
* __u64 in_sync_hint; -- lowest region still needing resync
|
||||
* }
|
||||
*
|
||||
* When the request has been processed, user-space must return the
|
||||
@@ -413,16 +414,16 @@ struct dm_ulog_request {
|
||||
* differentiate between logs that are being swapped and have the
|
||||
* same 'uuid'. (Think "live" and "inactive" device-mapper tables.)
|
||||
*/
|
||||
uint64_t luid;
|
||||
__u64 luid;
|
||||
char uuid[DM_UUID_LEN];
|
||||
char padding[3]; /* Padding because DM_UUID_LEN = 129 */
|
||||
|
||||
uint32_t version; /* See DM_ULOG_REQUEST_VERSION */
|
||||
int32_t error; /* Used to report back processing errors */
|
||||
__u32 version; /* See DM_ULOG_REQUEST_VERSION */
|
||||
__s32 error; /* Used to report back processing errors */
|
||||
|
||||
uint32_t seq; /* Sequence number for request */
|
||||
uint32_t request_type; /* DM_ULOG_* defined above */
|
||||
uint32_t data_size; /* How much data (not including this struct) */
|
||||
__u32 seq; /* Sequence number for request */
|
||||
__u32 request_type; /* DM_ULOG_* defined above */
|
||||
__u32 data_size; /* How much data (not including this struct) */
|
||||
|
||||
char data[0];
|
||||
};
|
||||
|
@@ -248,6 +248,19 @@ struct ethtool_tunable {
|
||||
void *data[0];
|
||||
};
|
||||
|
||||
#define DOWNSHIFT_DEV_DEFAULT_COUNT 0xff
|
||||
#define DOWNSHIFT_DEV_DISABLE 0
|
||||
|
||||
enum phy_tunable_id {
|
||||
ETHTOOL_PHY_ID_UNSPEC,
|
||||
ETHTOOL_PHY_DOWNSHIFT,
|
||||
/*
|
||||
* Add your fresh new phy tunable attribute above and remember to update
|
||||
* phy_tunable_strings[] in net/core/ethtool.c
|
||||
*/
|
||||
__ETHTOOL_PHY_TUNABLE_COUNT,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct ethtool_regs - hardware register dump
|
||||
* @cmd: Command number = %ETHTOOL_GREGS
|
||||
@@ -548,6 +561,7 @@ struct ethtool_pauseparam {
|
||||
* @ETH_SS_FEATURES: Device feature names
|
||||
* @ETH_SS_RSS_HASH_FUNCS: RSS hush function names
|
||||
* @ETH_SS_PHY_STATS: Statistic names, for use with %ETHTOOL_GPHYSTATS
|
||||
* @ETH_SS_PHY_TUNABLES: PHY tunable names
|
||||
*/
|
||||
enum ethtool_stringset {
|
||||
ETH_SS_TEST = 0,
|
||||
@@ -558,6 +572,7 @@ enum ethtool_stringset {
|
||||
ETH_SS_RSS_HASH_FUNCS,
|
||||
ETH_SS_TUNABLES,
|
||||
ETH_SS_PHY_STATS,
|
||||
ETH_SS_PHY_TUNABLES,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -1313,7 +1328,8 @@ struct ethtool_per_queue_op {
|
||||
|
||||
#define ETHTOOL_GLINKSETTINGS 0x0000004c /* Get ethtool_link_settings */
|
||||
#define ETHTOOL_SLINKSETTINGS 0x0000004d /* Set ethtool_link_settings */
|
||||
|
||||
#define ETHTOOL_PHY_GTUNABLE 0x0000004e /* Get PHY tunable configuration */
|
||||
#define ETHTOOL_PHY_STUNABLE 0x0000004f /* Set PHY tunable configuration */
|
||||
|
||||
/* compatibility with older code */
|
||||
#define SPARC_ETH_GSET ETHTOOL_GSET
|
||||
|
@@ -29,6 +29,11 @@ struct fib_rule_hdr {
|
||||
__u32 flags;
|
||||
};
|
||||
|
||||
struct fib_rule_uid_range {
|
||||
__u32 start;
|
||||
__u32 end;
|
||||
};
|
||||
|
||||
enum {
|
||||
FRA_UNSPEC,
|
||||
FRA_DST, /* destination address */
|
||||
@@ -51,6 +56,7 @@ enum {
|
||||
FRA_OIFNAME,
|
||||
FRA_PAD,
|
||||
FRA_L3MDEV, /* iif or oif is l3mdev goto its table */
|
||||
FRA_UID_RANGE, /* UID range */
|
||||
__FRA_MAX
|
||||
};
|
||||
|
||||
|
@@ -225,6 +225,10 @@ struct fsxattr {
|
||||
#define BLKSECDISCARD _IO(0x12,125)
|
||||
#define BLKROTATIONAL _IO(0x12,126)
|
||||
#define BLKZEROOUT _IO(0x12,127)
|
||||
/*
|
||||
* A jump here: 130-131 are reserved for zoned block devices
|
||||
* (see uapi/linux/blkzoned.h)
|
||||
*/
|
||||
|
||||
#define BMAP_IOCTL 1 /* obsolete - kept for compatibility */
|
||||
#define FIBMAP _IO(0x00,1) /* bmap access */
|
||||
@@ -254,6 +258,20 @@ struct fsxattr {
|
||||
/* Policy provided via an ioctl on the topmost directory */
|
||||
#define FS_KEY_DESCRIPTOR_SIZE 8
|
||||
|
||||
#define FS_POLICY_FLAGS_PAD_4 0x00
|
||||
#define FS_POLICY_FLAGS_PAD_8 0x01
|
||||
#define FS_POLICY_FLAGS_PAD_16 0x02
|
||||
#define FS_POLICY_FLAGS_PAD_32 0x03
|
||||
#define FS_POLICY_FLAGS_PAD_MASK 0x03
|
||||
#define FS_POLICY_FLAGS_VALID 0x03
|
||||
|
||||
/* Encryption algorithms */
|
||||
#define FS_ENCRYPTION_MODE_INVALID 0
|
||||
#define FS_ENCRYPTION_MODE_AES_256_XTS 1
|
||||
#define FS_ENCRYPTION_MODE_AES_256_GCM 2
|
||||
#define FS_ENCRYPTION_MODE_AES_256_CBC 3
|
||||
#define FS_ENCRYPTION_MODE_AES_256_CTS 4
|
||||
|
||||
struct fscrypt_policy {
|
||||
__u8 version;
|
||||
__u8 contents_encryption_mode;
|
||||
|
@@ -26,10 +26,11 @@ struct genlmsghdr {
|
||||
/*
|
||||
* List of reserved static generic netlink identifiers:
|
||||
*/
|
||||
#define GENL_ID_GENERATE 0
|
||||
#define GENL_ID_CTRL NLMSG_MIN_TYPE
|
||||
#define GENL_ID_VFS_DQUOT (NLMSG_MIN_TYPE + 1)
|
||||
#define GENL_ID_PMCRAID (NLMSG_MIN_TYPE + 2)
|
||||
/* must be last reserved + 1 */
|
||||
#define GENL_START_ALLOC (NLMSG_MIN_TYPE + 3)
|
||||
|
||||
/**************************************************************************
|
||||
* Controller
|
||||
|
@@ -4,7 +4,11 @@
|
||||
enum {
|
||||
HW_BREAKPOINT_LEN_1 = 1,
|
||||
HW_BREAKPOINT_LEN_2 = 2,
|
||||
HW_BREAKPOINT_LEN_3 = 3,
|
||||
HW_BREAKPOINT_LEN_4 = 4,
|
||||
HW_BREAKPOINT_LEN_5 = 5,
|
||||
HW_BREAKPOINT_LEN_6 = 6,
|
||||
HW_BREAKPOINT_LEN_7 = 7,
|
||||
HW_BREAKPOINT_LEN_8 = 8,
|
||||
};
|
||||
|
||||
|
@@ -31,7 +31,7 @@
|
||||
#include <linux/hdlc/ioctl.h>
|
||||
|
||||
/* For glibc compatibility. An empty enum does not compile. */
|
||||
#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 && \
|
||||
#if __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || \
|
||||
__UAPI_DEF_IF_NET_DEVICE_FLAGS != 0
|
||||
/**
|
||||
* enum net_device_flags - &struct net_device flags
|
||||
@@ -99,7 +99,7 @@ enum net_device_flags {
|
||||
IFF_ECHO = 1<<18, /* volatile */
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO */
|
||||
};
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 && __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
|
||||
#endif /* __UAPI_DEF_IF_NET_DEVICE_FLAGS_LOWER_UP_DORMANT_ECHO != 0 || __UAPI_DEF_IF_NET_DEVICE_FLAGS != 0 */
|
||||
|
||||
/* for compatibility with glibc net/if.h */
|
||||
#if __UAPI_DEF_IF_NET_DEVICE_FLAGS
|
||||
|
@@ -35,6 +35,9 @@
|
||||
#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
|
||||
#define ETH_FCS_LEN 4 /* Octets in the FCS */
|
||||
|
||||
#define ETH_MIN_MTU 68 /* Min IPv4 MTU per RFC791 */
|
||||
#define ETH_MAX_MTU 0xFFFFU /* 65535, same as IP_MAX_MTU */
|
||||
|
||||
/*
|
||||
* These are the defined Ethernet Protocol ID's.
|
||||
*/
|
||||
|
@@ -275,6 +275,8 @@ enum {
|
||||
IFLA_BR_PAD,
|
||||
IFLA_BR_VLAN_STATS_ENABLED,
|
||||
IFLA_BR_MCAST_STATS_ENABLED,
|
||||
IFLA_BR_MCAST_IGMP_VERSION,
|
||||
IFLA_BR_MCAST_MLD_VERSION,
|
||||
__IFLA_BR_MAX,
|
||||
};
|
||||
|
||||
@@ -874,10 +876,14 @@ enum {
|
||||
|
||||
/* XDP section */
|
||||
|
||||
#define XDP_FLAGS_UPDATE_IF_NOEXIST (1U << 0)
|
||||
#define XDP_FLAGS_MASK (XDP_FLAGS_UPDATE_IF_NOEXIST)
|
||||
|
||||
enum {
|
||||
IFLA_XDP_UNSPEC,
|
||||
IFLA_XDP_FD,
|
||||
IFLA_XDP_ATTACHED,
|
||||
IFLA_XDP_FLAGS,
|
||||
__IFLA_XDP_MAX,
|
||||
};
|
||||
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/in.h>
|
||||
#include <linux/in6.h>
|
||||
#include <linux/l2tp.h>
|
||||
|
||||
/* Structure used to connect() the socket to a particular tunnel UDP
|
||||
* socket over IPv4.
|
||||
@@ -90,14 +91,12 @@ enum {
|
||||
PPPOL2TP_SO_REORDERTO = 5,
|
||||
};
|
||||
|
||||
/* Debug message categories for the DEBUG socket option */
|
||||
/* Debug message categories for the DEBUG socket option (deprecated) */
|
||||
enum {
|
||||
PPPOL2TP_MSG_DEBUG = (1 << 0), /* verbose debug (if
|
||||
* compiled in) */
|
||||
PPPOL2TP_MSG_CONTROL = (1 << 1), /* userspace - kernel
|
||||
* interface */
|
||||
PPPOL2TP_MSG_SEQ = (1 << 2), /* sequence numbers */
|
||||
PPPOL2TP_MSG_DATA = (1 << 3), /* data packets */
|
||||
PPPOL2TP_MSG_DEBUG = L2TP_MSG_DEBUG,
|
||||
PPPOL2TP_MSG_CONTROL = L2TP_MSG_CONTROL,
|
||||
PPPOL2TP_MSG_SEQ = L2TP_MSG_SEQ,
|
||||
PPPOL2TP_MSG_DATA = L2TP_MSG_DATA,
|
||||
};
|
||||
|
||||
|
||||
|
@@ -40,6 +40,8 @@ enum iio_chan_type {
|
||||
IIO_PH,
|
||||
IIO_UVINDEX,
|
||||
IIO_ELECTRICALCONDUCTIVITY,
|
||||
IIO_COUNT,
|
||||
IIO_INDEX,
|
||||
};
|
||||
|
||||
enum iio_modifier {
|
||||
|
@@ -117,6 +117,7 @@ struct in_addr {
|
||||
#define IP_NODEFRAG 22
|
||||
#define IP_CHECKSUM 23
|
||||
#define IP_BIND_ADDRESS_NO_PORT 24
|
||||
#define IP_RECVFRAGSIZE 25
|
||||
|
||||
/* IP_MTU_DISCOVER values */
|
||||
#define IP_PMTUDISC_DONT 0 /* Never send DF frames */
|
||||
|
@@ -283,6 +283,7 @@ struct in6_flowlabel_req {
|
||||
#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
|
||||
#define IPV6_TRANSPARENT 75
|
||||
#define IPV6_UNICAST_IF 76
|
||||
#define IPV6_RECVFRAGSIZE 77
|
||||
|
||||
/*
|
||||
* Multicast Routing:
|
||||
|
@@ -43,6 +43,23 @@ struct inet_diag_req_v2 {
|
||||
struct inet_diag_sockid id;
|
||||
};
|
||||
|
||||
/*
|
||||
* SOCK_RAW sockets require the underlied protocol to be
|
||||
* additionally specified so we can use @pad member for
|
||||
* this, but we can't rename it because userspace programs
|
||||
* still may depend on this name. Instead lets use another
|
||||
* structure definition as an alias for struct
|
||||
* @inet_diag_req_v2.
|
||||
*/
|
||||
struct inet_diag_req_raw {
|
||||
__u8 sdiag_family;
|
||||
__u8 sdiag_protocol;
|
||||
__u8 idiag_ext;
|
||||
__u8 sdiag_raw_protocol;
|
||||
__u32 idiag_states;
|
||||
struct inet_diag_sockid id;
|
||||
};
|
||||
|
||||
enum {
|
||||
INET_DIAG_REQ_NONE,
|
||||
INET_DIAG_REQ_BYTECODE,
|
||||
|
@@ -39,6 +39,7 @@ struct in6_ifreq {
|
||||
#define IPV6_SRCRT_STRICT 0x01 /* Deprecated; will be removed */
|
||||
#define IPV6_SRCRT_TYPE_0 0 /* Deprecated; will be removed */
|
||||
#define IPV6_SRCRT_TYPE_2 2 /* IPv6 type 2 Routing Header */
|
||||
#define IPV6_SRCRT_TYPE_4 4 /* Segment Routing with IPv6 */
|
||||
|
||||
/*
|
||||
* routing header
|
||||
@@ -178,6 +179,9 @@ enum {
|
||||
DEVCONF_DROP_UNSOLICITED_NA,
|
||||
DEVCONF_KEEP_ADDR_ON_DOWN,
|
||||
DEVCONF_RTR_SOLICIT_MAX_INTERVAL,
|
||||
DEVCONF_SEG6_ENABLED,
|
||||
DEVCONF_SEG6_REQUIRE_HMAC,
|
||||
DEVCONF_ENHANCED_DAD,
|
||||
DEVCONF_MAX
|
||||
};
|
||||
|
||||
|
@@ -651,6 +651,9 @@ struct kvm_enable_cap {
|
||||
};
|
||||
|
||||
/* for KVM_PPC_GET_PVINFO */
|
||||
|
||||
#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
|
||||
|
||||
struct kvm_ppc_pvinfo {
|
||||
/* out */
|
||||
__u32 flags;
|
||||
@@ -682,8 +685,6 @@ struct kvm_ppc_smmu_info {
|
||||
struct kvm_ppc_one_seg_page_size sps[KVM_PPC_PAGE_SIZES_MAX_SZ];
|
||||
};
|
||||
|
||||
#define KVM_PPC_PVINFO_FLAGS_EV_IDLE (1<<0)
|
||||
|
||||
#define KVMIO 0xAE
|
||||
|
||||
/* machine type bits, to be used as argument to KVM_CREATE_VM */
|
||||
|
@@ -108,7 +108,7 @@ enum {
|
||||
L2TP_ATTR_VLAN_ID, /* u16 */
|
||||
L2TP_ATTR_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_PEER_COOKIE, /* 0, 4 or 8 bytes */
|
||||
L2TP_ATTR_DEBUG, /* u32 */
|
||||
L2TP_ATTR_DEBUG, /* u32, enum l2tp_debug_flags */
|
||||
L2TP_ATTR_RECV_SEQ, /* u8 */
|
||||
L2TP_ATTR_SEND_SEQ, /* u8 */
|
||||
L2TP_ATTR_LNS_MODE, /* u8 */
|
||||
@@ -124,8 +124,8 @@ enum {
|
||||
L2TP_ATTR_STATS, /* nested */
|
||||
L2TP_ATTR_IP6_SADDR, /* struct in6_addr */
|
||||
L2TP_ATTR_IP6_DADDR, /* struct in6_addr */
|
||||
L2TP_ATTR_UDP_ZERO_CSUM6_TX, /* u8 */
|
||||
L2TP_ATTR_UDP_ZERO_CSUM6_RX, /* u8 */
|
||||
L2TP_ATTR_UDP_ZERO_CSUM6_TX, /* flag */
|
||||
L2TP_ATTR_UDP_ZERO_CSUM6_RX, /* flag */
|
||||
L2TP_ATTR_PAD,
|
||||
__L2TP_ATTR_MAX,
|
||||
};
|
||||
@@ -175,6 +175,21 @@ enum l2tp_seqmode {
|
||||
L2TP_SEQ_ALL = 2,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum l2tp_debug_flags - debug message categories for L2TP tunnels/sessions
|
||||
*
|
||||
* @L2TP_MSG_DEBUG: verbose debug (if compiled in)
|
||||
* @L2TP_MSG_CONTROL: userspace - kernel interface
|
||||
* @L2TP_MSG_SEQ: sequence numbers
|
||||
* @L2TP_MSG_DATA: data packets
|
||||
*/
|
||||
enum l2tp_debug_flags {
|
||||
L2TP_MSG_DEBUG = (1 << 0),
|
||||
L2TP_MSG_CONTROL = (1 << 1),
|
||||
L2TP_MSG_SEQ = (1 << 2),
|
||||
L2TP_MSG_DATA = (1 << 3),
|
||||
};
|
||||
|
||||
/*
|
||||
* NETLINK_GENERIC related info
|
||||
*/
|
||||
|
@@ -9,6 +9,8 @@ enum lwtunnel_encap_types {
|
||||
LWTUNNEL_ENCAP_IP,
|
||||
LWTUNNEL_ENCAP_ILA,
|
||||
LWTUNNEL_ENCAP_IP6,
|
||||
LWTUNNEL_ENCAP_SEG6,
|
||||
LWTUNNEL_ENCAP_BPF,
|
||||
__LWTUNNEL_ENCAP_MAX,
|
||||
};
|
||||
|
||||
@@ -42,4 +44,26 @@ enum lwtunnel_ip6_t {
|
||||
|
||||
#define LWTUNNEL_IP6_MAX (__LWTUNNEL_IP6_MAX - 1)
|
||||
|
||||
enum {
|
||||
LWT_BPF_PROG_UNSPEC,
|
||||
LWT_BPF_PROG_FD,
|
||||
LWT_BPF_PROG_NAME,
|
||||
__LWT_BPF_PROG_MAX,
|
||||
};
|
||||
|
||||
#define LWT_BPF_PROG_MAX (__LWT_BPF_PROG_MAX - 1)
|
||||
|
||||
enum {
|
||||
LWT_BPF_UNSPEC,
|
||||
LWT_BPF_IN,
|
||||
LWT_BPF_OUT,
|
||||
LWT_BPF_XMIT,
|
||||
LWT_BPF_XMIT_HEADROOM,
|
||||
__LWT_BPF_MAX,
|
||||
};
|
||||
|
||||
#define LWT_BPF_MAX (__LWT_BPF_MAX - 1)
|
||||
|
||||
#define LWT_BPF_MAX_HEADROOM 256
|
||||
|
||||
#endif /* _UAPI_LWTUNNEL_H_ */
|
||||
|
@@ -57,6 +57,7 @@
|
||||
#define CGROUP_SUPER_MAGIC 0x27e0eb
|
||||
#define CGROUP2_SUPER_MAGIC 0x63677270
|
||||
|
||||
#define RDTGROUP_SUPER_MAGIC 0x7655821
|
||||
|
||||
#define STACK_END_MAGIC 0x57AC6E9D
|
||||
|
||||
|
@@ -3,7 +3,7 @@
|
||||
|
||||
/*
|
||||
* This file has definitions for major device numbers.
|
||||
* For the device number assignments, see Documentation/devices.txt.
|
||||
* For the device number assignments, see Documentation/admin-guide/devices.rst.
|
||||
*/
|
||||
|
||||
#define UNNAMED_MAJOR 0
|
||||
|
@@ -69,6 +69,6 @@ struct mmc_ioc_multi_cmd {
|
||||
* is enforced per ioctl call. For larger data transfers, use the normal
|
||||
* block device operations.
|
||||
*/
|
||||
#define MMC_IOC_MAX_BYTES (512L * 256)
|
||||
#define MMC_IOC_MAX_BYTES (512L * 1024)
|
||||
#define MMC_IOC_MAX_CMDS 255
|
||||
#endif /* LINUX_MMC_IOCTL_H */
|
||||
|
@@ -38,11 +38,12 @@ enum {
|
||||
};
|
||||
|
||||
/* values for flags field */
|
||||
#define NBD_FLAG_HAS_FLAGS (1 << 0) /* nbd-server supports flags */
|
||||
#define NBD_FLAG_READ_ONLY (1 << 1) /* device is read-only */
|
||||
#define NBD_FLAG_SEND_FLUSH (1 << 2) /* can flush writeback cache */
|
||||
#define NBD_FLAG_HAS_FLAGS (1 << 0) /* nbd-server supports flags */
|
||||
#define NBD_FLAG_READ_ONLY (1 << 1) /* device is read-only */
|
||||
#define NBD_FLAG_SEND_FLUSH (1 << 2) /* can flush writeback cache */
|
||||
/* there is a gap here to match userspace */
|
||||
#define NBD_FLAG_SEND_TRIM (1 << 5) /* send trim/discard */
|
||||
#define NBD_FLAG_SEND_TRIM (1 << 5) /* send trim/discard */
|
||||
#define NBD_FLAG_CAN_MULTI_CONN (1 << 8) /* Server supports multiple connections per export. */
|
||||
|
||||
/* userspace doesn't need the nbd_device structure */
|
||||
|
||||
|
@@ -25,8 +25,9 @@ enum {
|
||||
SOF_TIMESTAMPING_TX_ACK = (1<<9),
|
||||
SOF_TIMESTAMPING_OPT_CMSG = (1<<10),
|
||||
SOF_TIMESTAMPING_OPT_TSONLY = (1<<11),
|
||||
SOF_TIMESTAMPING_OPT_STATS = (1<<12),
|
||||
|
||||
SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_TSONLY,
|
||||
SOF_TIMESTAMPING_LAST = SOF_TIMESTAMPING_OPT_STATS,
|
||||
SOF_TIMESTAMPING_MASK = (SOF_TIMESTAMPING_LAST - 1) |
|
||||
SOF_TIMESTAMPING_LAST
|
||||
};
|
||||
|
@@ -13,7 +13,7 @@
|
||||
#define NF_STOLEN 2
|
||||
#define NF_QUEUE 3
|
||||
#define NF_REPEAT 4
|
||||
#define NF_STOP 5
|
||||
#define NF_STOP 5 /* Deprecated, for userspace nf_queue compatibility. */
|
||||
#define NF_MAX_VERDICT NF_STOP
|
||||
|
||||
/* we overload the higher bits for encoding auxiliary data such as the queue
|
||||
|
@@ -5,6 +5,7 @@ header-y += nf_conntrack_ftp.h
|
||||
header-y += nf_conntrack_sctp.h
|
||||
header-y += nf_conntrack_tcp.h
|
||||
header-y += nf_conntrack_tuple_common.h
|
||||
header-y += nf_log.h
|
||||
header-y += nf_tables.h
|
||||
header-y += nf_tables_compat.h
|
||||
header-y += nf_nat.h
|
||||
|
@@ -2,7 +2,10 @@
|
||||
#define _NF_CONNTRACK_TUPLE_COMMON_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#ifndef __KERNEL__
|
||||
#include <linux/netfilter.h>
|
||||
#endif
|
||||
#include <linux/netfilter/nf_conntrack_common.h> /* IP_CT_IS_REPLY */
|
||||
|
||||
enum ip_conntrack_dir {
|
||||
IP_CT_DIR_ORIGINAL,
|
||||
|
@@ -4,6 +4,7 @@
|
||||
#define NFT_TABLE_MAXNAMELEN 32
|
||||
#define NFT_CHAIN_MAXNAMELEN 32
|
||||
#define NFT_SET_MAXNAMELEN 32
|
||||
#define NFT_OBJ_MAXNAMELEN 32
|
||||
#define NFT_USERDATA_MAXLEN 256
|
||||
|
||||
/**
|
||||
@@ -85,6 +86,10 @@ enum nft_verdicts {
|
||||
* @NFT_MSG_NEWGEN: announce a new generation, only for events (enum nft_gen_attributes)
|
||||
* @NFT_MSG_GETGEN: get the rule-set generation (enum nft_gen_attributes)
|
||||
* @NFT_MSG_TRACE: trace event (enum nft_trace_attributes)
|
||||
* @NFT_MSG_NEWOBJ: create a stateful object (enum nft_obj_attributes)
|
||||
* @NFT_MSG_GETOBJ: get a stateful object (enum nft_obj_attributes)
|
||||
* @NFT_MSG_DELOBJ: delete a stateful object (enum nft_obj_attributes)
|
||||
* @NFT_MSG_GETOBJ_RESET: get and reset a stateful object (enum nft_obj_attributes)
|
||||
*/
|
||||
enum nf_tables_msg_types {
|
||||
NFT_MSG_NEWTABLE,
|
||||
@@ -105,6 +110,10 @@ enum nf_tables_msg_types {
|
||||
NFT_MSG_NEWGEN,
|
||||
NFT_MSG_GETGEN,
|
||||
NFT_MSG_TRACE,
|
||||
NFT_MSG_NEWOBJ,
|
||||
NFT_MSG_GETOBJ,
|
||||
NFT_MSG_DELOBJ,
|
||||
NFT_MSG_GETOBJ_RESET,
|
||||
NFT_MSG_MAX,
|
||||
};
|
||||
|
||||
@@ -246,6 +255,7 @@ enum nft_rule_compat_attributes {
|
||||
* @NFT_SET_MAP: set is used as a dictionary
|
||||
* @NFT_SET_TIMEOUT: set uses timeouts
|
||||
* @NFT_SET_EVAL: set contains expressions for evaluation
|
||||
* @NFT_SET_OBJECT: set contains stateful objects
|
||||
*/
|
||||
enum nft_set_flags {
|
||||
NFT_SET_ANONYMOUS = 0x1,
|
||||
@@ -254,6 +264,7 @@ enum nft_set_flags {
|
||||
NFT_SET_MAP = 0x8,
|
||||
NFT_SET_TIMEOUT = 0x10,
|
||||
NFT_SET_EVAL = 0x20,
|
||||
NFT_SET_OBJECT = 0x40,
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -295,6 +306,7 @@ enum nft_set_desc_attributes {
|
||||
* @NFTA_SET_TIMEOUT: default timeout value (NLA_U64)
|
||||
* @NFTA_SET_GC_INTERVAL: garbage collection interval (NLA_U32)
|
||||
* @NFTA_SET_USERDATA: user data (NLA_BINARY)
|
||||
* @NFTA_SET_OBJ_TYPE: stateful object type (NLA_U32: NFT_OBJECT_*)
|
||||
*/
|
||||
enum nft_set_attributes {
|
||||
NFTA_SET_UNSPEC,
|
||||
@@ -312,6 +324,7 @@ enum nft_set_attributes {
|
||||
NFTA_SET_GC_INTERVAL,
|
||||
NFTA_SET_USERDATA,
|
||||
NFTA_SET_PAD,
|
||||
NFTA_SET_OBJ_TYPE,
|
||||
__NFTA_SET_MAX
|
||||
};
|
||||
#define NFTA_SET_MAX (__NFTA_SET_MAX - 1)
|
||||
@@ -335,6 +348,7 @@ enum nft_set_elem_flags {
|
||||
* @NFTA_SET_ELEM_EXPIRATION: expiration time (NLA_U64)
|
||||
* @NFTA_SET_ELEM_USERDATA: user data (NLA_BINARY)
|
||||
* @NFTA_SET_ELEM_EXPR: expression (NLA_NESTED: nft_expr_attributes)
|
||||
* @NFTA_SET_ELEM_OBJREF: stateful object reference (NLA_STRING)
|
||||
*/
|
||||
enum nft_set_elem_attributes {
|
||||
NFTA_SET_ELEM_UNSPEC,
|
||||
@@ -346,6 +360,7 @@ enum nft_set_elem_attributes {
|
||||
NFTA_SET_ELEM_USERDATA,
|
||||
NFTA_SET_ELEM_EXPR,
|
||||
NFTA_SET_ELEM_PAD,
|
||||
NFTA_SET_ELEM_OBJREF,
|
||||
__NFTA_SET_ELEM_MAX
|
||||
};
|
||||
#define NFTA_SET_ELEM_MAX (__NFTA_SET_ELEM_MAX - 1)
|
||||
@@ -659,6 +674,10 @@ enum nft_payload_csum_types {
|
||||
NFT_PAYLOAD_CSUM_INET,
|
||||
};
|
||||
|
||||
enum nft_payload_csum_flags {
|
||||
NFT_PAYLOAD_L4CSUM_PSEUDOHDR = (1 << 0),
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_payload_attributes - nf_tables payload expression netlink attributes
|
||||
*
|
||||
@@ -669,6 +688,7 @@ enum nft_payload_csum_types {
|
||||
* @NFTA_PAYLOAD_SREG: source register to load data from (NLA_U32: nft_registers)
|
||||
* @NFTA_PAYLOAD_CSUM_TYPE: checksum type (NLA_U32)
|
||||
* @NFTA_PAYLOAD_CSUM_OFFSET: checksum offset relative to base (NLA_U32)
|
||||
* @NFTA_PAYLOAD_CSUM_FLAGS: checksum flags (NLA_U32)
|
||||
*/
|
||||
enum nft_payload_attributes {
|
||||
NFTA_PAYLOAD_UNSPEC,
|
||||
@@ -679,6 +699,7 @@ enum nft_payload_attributes {
|
||||
NFTA_PAYLOAD_SREG,
|
||||
NFTA_PAYLOAD_CSUM_TYPE,
|
||||
NFTA_PAYLOAD_CSUM_OFFSET,
|
||||
NFTA_PAYLOAD_CSUM_FLAGS,
|
||||
__NFTA_PAYLOAD_MAX
|
||||
};
|
||||
#define NFTA_PAYLOAD_MAX (__NFTA_PAYLOAD_MAX - 1)
|
||||
@@ -758,6 +779,19 @@ enum nft_meta_keys {
|
||||
NFT_META_PRANDOM,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_rt_keys - nf_tables routing expression keys
|
||||
*
|
||||
* @NFT_RT_CLASSID: realm value of packet's route (skb->dst->tclassid)
|
||||
* @NFT_RT_NEXTHOP4: routing nexthop for IPv4
|
||||
* @NFT_RT_NEXTHOP6: routing nexthop for IPv6
|
||||
*/
|
||||
enum nft_rt_keys {
|
||||
NFT_RT_CLASSID,
|
||||
NFT_RT_NEXTHOP4,
|
||||
NFT_RT_NEXTHOP6,
|
||||
};
|
||||
|
||||
/**
|
||||
* enum nft_hash_attributes - nf_tables hash expression netlink attributes
|
||||
*
|
||||
@@ -796,6 +830,20 @@ enum nft_meta_attributes {
|
||||
};
|
||||
#define NFTA_META_MAX (__NFTA_META_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_rt_attributes - nf_tables routing expression netlink attributes
|
||||
*
|
||||
* @NFTA_RT_DREG: destination register (NLA_U32)
|
||||
* @NFTA_RT_KEY: routing data item to load (NLA_U32: nft_rt_keys)
|
||||
*/
|
||||
enum nft_rt_attributes {
|
||||
NFTA_RT_UNSPEC,
|
||||
NFTA_RT_DREG,
|
||||
NFTA_RT_KEY,
|
||||
__NFTA_RT_MAX
|
||||
};
|
||||
#define NFTA_RT_MAX (__NFTA_RT_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_ct_keys - nf_tables ct expression keys
|
||||
*
|
||||
@@ -941,6 +989,7 @@ enum nft_queue_attributes {
|
||||
|
||||
enum nft_quota_flags {
|
||||
NFT_QUOTA_F_INV = (1 << 0),
|
||||
NFT_QUOTA_F_DEPLETED = (1 << 1),
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -948,12 +997,14 @@ enum nft_quota_flags {
|
||||
*
|
||||
* @NFTA_QUOTA_BYTES: quota in bytes (NLA_U16)
|
||||
* @NFTA_QUOTA_FLAGS: flags (NLA_U32)
|
||||
* @NFTA_QUOTA_CONSUMED: quota already consumed in bytes (NLA_U64)
|
||||
*/
|
||||
enum nft_quota_attributes {
|
||||
NFTA_QUOTA_UNSPEC,
|
||||
NFTA_QUOTA_BYTES,
|
||||
NFTA_QUOTA_FLAGS,
|
||||
NFTA_QUOTA_PAD,
|
||||
NFTA_QUOTA_CONSUMED,
|
||||
__NFTA_QUOTA_MAX
|
||||
};
|
||||
#define NFTA_QUOTA_MAX (__NFTA_QUOTA_MAX - 1)
|
||||
@@ -1097,6 +1148,26 @@ enum nft_fwd_attributes {
|
||||
};
|
||||
#define NFTA_FWD_MAX (__NFTA_FWD_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_objref_attributes - nf_tables stateful object expression netlink attributes
|
||||
*
|
||||
* @NFTA_OBJREF_IMM_TYPE: object type for immediate reference (NLA_U32: nft_register)
|
||||
* @NFTA_OBJREF_IMM_NAME: object name for immediate reference (NLA_STRING)
|
||||
* @NFTA_OBJREF_SET_SREG: source register of the data to look for (NLA_U32: nft_registers)
|
||||
* @NFTA_OBJREF_SET_NAME: name of the set where to look for (NLA_STRING)
|
||||
* @NFTA_OBJREF_SET_ID: id of the set where to look for in this transaction (NLA_U32)
|
||||
*/
|
||||
enum nft_objref_attributes {
|
||||
NFTA_OBJREF_UNSPEC,
|
||||
NFTA_OBJREF_IMM_TYPE,
|
||||
NFTA_OBJREF_IMM_NAME,
|
||||
NFTA_OBJREF_SET_SREG,
|
||||
NFTA_OBJREF_SET_NAME,
|
||||
NFTA_OBJREF_SET_ID,
|
||||
__NFTA_OBJREF_MAX
|
||||
};
|
||||
#define NFTA_OBJREF_MAX (__NFTA_OBJREF_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_gen_attributes - nf_tables ruleset generation attributes
|
||||
*
|
||||
@@ -1109,6 +1180,68 @@ enum nft_gen_attributes {
|
||||
};
|
||||
#define NFTA_GEN_MAX (__NFTA_GEN_MAX - 1)
|
||||
|
||||
/*
|
||||
* enum nft_fib_attributes - nf_tables fib expression netlink attributes
|
||||
*
|
||||
* @NFTA_FIB_DREG: destination register (NLA_U32)
|
||||
* @NFTA_FIB_RESULT: desired result (NLA_U32)
|
||||
* @NFTA_FIB_FLAGS: flowi fields to initialize when querying the FIB (NLA_U32)
|
||||
*
|
||||
* The FIB expression performs a route lookup according
|
||||
* to the packet data.
|
||||
*/
|
||||
enum nft_fib_attributes {
|
||||
NFTA_FIB_UNSPEC,
|
||||
NFTA_FIB_DREG,
|
||||
NFTA_FIB_RESULT,
|
||||
NFTA_FIB_FLAGS,
|
||||
__NFTA_FIB_MAX
|
||||
};
|
||||
#define NFTA_FIB_MAX (__NFTA_FIB_MAX - 1)
|
||||
|
||||
enum nft_fib_result {
|
||||
NFT_FIB_RESULT_UNSPEC,
|
||||
NFT_FIB_RESULT_OIF,
|
||||
NFT_FIB_RESULT_OIFNAME,
|
||||
NFT_FIB_RESULT_ADDRTYPE,
|
||||
__NFT_FIB_RESULT_MAX
|
||||
};
|
||||
#define NFT_FIB_RESULT_MAX (__NFT_FIB_RESULT_MAX - 1)
|
||||
|
||||
enum nft_fib_flags {
|
||||
NFTA_FIB_F_SADDR = 1 << 0, /* look up src */
|
||||
NFTA_FIB_F_DADDR = 1 << 1, /* look up dst */
|
||||
NFTA_FIB_F_MARK = 1 << 2, /* use skb->mark */
|
||||
NFTA_FIB_F_IIF = 1 << 3, /* restrict to iif */
|
||||
NFTA_FIB_F_OIF = 1 << 4, /* restrict to oif */
|
||||
};
|
||||
|
||||
#define NFT_OBJECT_UNSPEC 0
|
||||
#define NFT_OBJECT_COUNTER 1
|
||||
#define NFT_OBJECT_QUOTA 2
|
||||
#define __NFT_OBJECT_MAX 3
|
||||
#define NFT_OBJECT_MAX (__NFT_OBJECT_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_object_attributes - nf_tables stateful object netlink attributes
|
||||
*
|
||||
* @NFTA_OBJ_TABLE: name of the table containing the expression (NLA_STRING)
|
||||
* @NFTA_OBJ_NAME: name of this expression type (NLA_STRING)
|
||||
* @NFTA_OBJ_TYPE: stateful object type (NLA_U32)
|
||||
* @NFTA_OBJ_DATA: stateful object data (NLA_NESTED)
|
||||
* @NFTA_OBJ_USE: number of references to this expression (NLA_U32)
|
||||
*/
|
||||
enum nft_object_attributes {
|
||||
NFTA_OBJ_UNSPEC,
|
||||
NFTA_OBJ_TABLE,
|
||||
NFTA_OBJ_NAME,
|
||||
NFTA_OBJ_TYPE,
|
||||
NFTA_OBJ_DATA,
|
||||
NFTA_OBJ_USE,
|
||||
__NFTA_OBJ_MAX
|
||||
};
|
||||
#define NFTA_OBJ_MAX (__NFTA_OBJ_MAX - 1)
|
||||
|
||||
/**
|
||||
* enum nft_trace_attributes - nf_tables trace netlink attributes
|
||||
*
|
||||
|
@@ -2,9 +2,11 @@
|
||||
#define _XT_BPF_H
|
||||
|
||||
#include <linux/filter.h>
|
||||
#include <linux/limits.h>
|
||||
#include <linux/types.h>
|
||||
|
||||
#define XT_BPF_MAX_NUM_INSTR 64
|
||||
#define XT_BPF_PATH_MAX (XT_BPF_MAX_NUM_INSTR * sizeof(struct sock_filter))
|
||||
|
||||
struct bpf_prog;
|
||||
|
||||
@@ -16,4 +18,23 @@ struct xt_bpf_info {
|
||||
struct bpf_prog *filter __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
enum xt_bpf_modes {
|
||||
XT_BPF_MODE_BYTECODE,
|
||||
XT_BPF_MODE_FD_PINNED,
|
||||
XT_BPF_MODE_FD_ELF,
|
||||
};
|
||||
|
||||
struct xt_bpf_info_v1 {
|
||||
__u16 mode;
|
||||
__u16 bpf_program_num_elem;
|
||||
__s32 fd;
|
||||
union {
|
||||
struct sock_filter bpf_program[XT_BPF_MAX_NUM_INSTR];
|
||||
char path[XT_BPF_PATH_MAX];
|
||||
};
|
||||
|
||||
/* only used in the kernel */
|
||||
struct bpf_prog *filter __attribute__((aligned(8)));
|
||||
};
|
||||
|
||||
#endif /*_XT_BPF_H */
|
||||
|
@@ -323,7 +323,7 @@
|
||||
* @NL80211_CMD_GET_SCAN: get scan results
|
||||
* @NL80211_CMD_TRIGGER_SCAN: trigger a new scan with the given parameters
|
||||
* %NL80211_ATTR_TX_NO_CCK_RATE is used to decide whether to send the
|
||||
* probe requests at CCK rate or not. %NL80211_ATTR_MAC can be used to
|
||||
* probe requests at CCK rate or not. %NL80211_ATTR_BSSID can be used to
|
||||
* specify a BSSID to scan for; if not included, the wildcard BSSID will
|
||||
* be used.
|
||||
* @NL80211_CMD_NEW_SCAN_RESULTS: scan notification (as a reply to
|
||||
@@ -600,6 +600,20 @@
|
||||
*
|
||||
* @NL80211_CMD_SET_WDS_PEER: Set the MAC address of the peer on a WDS interface.
|
||||
*
|
||||
* @NL80211_CMD_SET_MULTICAST_TO_UNICAST: Configure if this AP should perform
|
||||
* multicast to unicast conversion. When enabled, all multicast packets
|
||||
* with ethertype ARP, IPv4 or IPv6 (possibly within an 802.1Q header)
|
||||
* will be sent out to each station once with the destination (multicast)
|
||||
* MAC address replaced by the station's MAC address. Note that this may
|
||||
* break certain expectations of the receiver, e.g. the ability to drop
|
||||
* unicast IP packets encapsulated in multicast L2 frames, or the ability
|
||||
* to not send destination unreachable messages in such cases.
|
||||
* This can only be toggled per BSS. Configure this on an interface of
|
||||
* type %NL80211_IFTYPE_AP. It applies to all its VLAN interfaces
|
||||
* (%NL80211_IFTYPE_AP_VLAN), except for those in 4addr (WDS) mode.
|
||||
* If %NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED is not present with this
|
||||
* command, the feature is disabled.
|
||||
*
|
||||
* @NL80211_CMD_JOIN_MESH: Join a mesh. The mesh ID must be given, and initial
|
||||
* mesh config parameters may be given.
|
||||
* @NL80211_CMD_LEAVE_MESH: Leave the mesh network -- no special arguments, the
|
||||
@@ -874,6 +888,12 @@
|
||||
* This will contain a %NL80211_ATTR_NAN_MATCH nested attribute and
|
||||
* %NL80211_ATTR_COOKIE.
|
||||
*
|
||||
* @NL80211_CMD_UPDATE_CONNECT_PARAMS: Update one or more connect parameters
|
||||
* for subsequent roaming cases if the driver or firmware uses internal
|
||||
* BSS selection. This command can be issued only while connected and it
|
||||
* does not result in a change for the current association. Currently,
|
||||
* only the %NL80211_ATTR_IE data is used and updated with this command.
|
||||
*
|
||||
* @NL80211_CMD_MAX: highest used command number
|
||||
* @__NL80211_CMD_AFTER_LAST: internal use
|
||||
*/
|
||||
@@ -1069,6 +1089,10 @@ enum nl80211_commands {
|
||||
NL80211_CMD_CHANGE_NAN_CONFIG,
|
||||
NL80211_CMD_NAN_MATCH,
|
||||
|
||||
NL80211_CMD_SET_MULTICAST_TO_UNICAST,
|
||||
|
||||
NL80211_CMD_UPDATE_CONNECT_PARAMS,
|
||||
|
||||
/* add new commands above here */
|
||||
|
||||
/* used to define NL80211_CMD_MAX below */
|
||||
@@ -1638,8 +1662,16 @@ enum nl80211_commands {
|
||||
* the connection request from a station. nl80211_connect_failed_reason
|
||||
* enum has different reasons of connection failure.
|
||||
*
|
||||
* @NL80211_ATTR_SAE_DATA: SAE elements in Authentication frames. This starts
|
||||
* with the Authentication transaction sequence number field.
|
||||
* @NL80211_ATTR_AUTH_DATA: Fields and elements in Authentication frames.
|
||||
* This contains the authentication frame body (non-IE and IE data),
|
||||
* excluding the Authentication algorithm number, i.e., starting at the
|
||||
* Authentication transaction sequence number field. It is used with
|
||||
* authentication algorithms that need special fields to be added into
|
||||
* the frames (SAE and FILS). Currently, only the SAE cases use the
|
||||
* initial two fields (Authentication transaction sequence number and
|
||||
* Status code). However, those fields are included in the attribute data
|
||||
* for all authentication algorithms to keep the attribute definition
|
||||
* consistent.
|
||||
*
|
||||
* @NL80211_ATTR_VHT_CAPABILITY: VHT Capability information element (from
|
||||
* association request when used with NL80211_CMD_NEW_STATION)
|
||||
@@ -1936,6 +1968,17 @@ enum nl80211_commands {
|
||||
* attribute.
|
||||
* @NL80211_ATTR_NAN_MATCH: used to report a match. This is a nested attribute.
|
||||
* See &enum nl80211_nan_match_attributes.
|
||||
* @NL80211_ATTR_FILS_KEK: KEK for FILS (Re)Association Request/Response frame
|
||||
* protection.
|
||||
* @NL80211_ATTR_FILS_NONCES: Nonces (part of AAD) for FILS (Re)Association
|
||||
* Request/Response frame protection. This attribute contains the 16 octet
|
||||
* STA Nonce followed by 16 octets of AP Nonce.
|
||||
*
|
||||
* @NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED: Indicates whether or not multicast
|
||||
* packets should be send out as unicast to all stations (flag attribute).
|
||||
*
|
||||
* @NL80211_ATTR_BSSID: The BSSID of the AP. Note that %NL80211_ATTR_MAC is also
|
||||
* used in various commands/events for specifying the BSSID.
|
||||
*
|
||||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
@@ -2195,7 +2238,7 @@ enum nl80211_attrs {
|
||||
|
||||
NL80211_ATTR_CONN_FAILED_REASON,
|
||||
|
||||
NL80211_ATTR_SAE_DATA,
|
||||
NL80211_ATTR_AUTH_DATA,
|
||||
|
||||
NL80211_ATTR_VHT_CAPABILITY,
|
||||
|
||||
@@ -2336,6 +2379,13 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_NAN_FUNC,
|
||||
NL80211_ATTR_NAN_MATCH,
|
||||
|
||||
NL80211_ATTR_FILS_KEK,
|
||||
NL80211_ATTR_FILS_NONCES,
|
||||
|
||||
NL80211_ATTR_MULTICAST_TO_UNICAST_ENABLED,
|
||||
|
||||
NL80211_ATTR_BSSID,
|
||||
|
||||
/* add attributes here, update the policy in nl80211.c */
|
||||
|
||||
__NL80211_ATTR_AFTER_LAST,
|
||||
@@ -2347,6 +2397,7 @@ enum nl80211_attrs {
|
||||
#define NL80211_ATTR_SCAN_GENERATION NL80211_ATTR_GENERATION
|
||||
#define NL80211_ATTR_MESH_PARAMS NL80211_ATTR_MESH_CONFIG
|
||||
#define NL80211_ATTR_IFACE_SOCKET_OWNER NL80211_ATTR_SOCKET_OWNER
|
||||
#define NL80211_ATTR_SAE_DATA NL80211_ATTR_AUTH_DATA
|
||||
|
||||
/*
|
||||
* Allow user space programs to use #ifdef on new attributes by defining them
|
||||
@@ -3660,6 +3711,9 @@ enum nl80211_bss_status {
|
||||
* @NL80211_AUTHTYPE_FT: Fast BSS Transition (IEEE 802.11r)
|
||||
* @NL80211_AUTHTYPE_NETWORK_EAP: Network EAP (some Cisco APs and mainly LEAP)
|
||||
* @NL80211_AUTHTYPE_SAE: Simultaneous authentication of equals
|
||||
* @NL80211_AUTHTYPE_FILS_SK: Fast Initial Link Setup shared key
|
||||
* @NL80211_AUTHTYPE_FILS_SK_PFS: Fast Initial Link Setup shared key with PFS
|
||||
* @NL80211_AUTHTYPE_FILS_PK: Fast Initial Link Setup public key
|
||||
* @__NL80211_AUTHTYPE_NUM: internal
|
||||
* @NL80211_AUTHTYPE_MAX: maximum valid auth algorithm
|
||||
* @NL80211_AUTHTYPE_AUTOMATIC: determine automatically (if necessary by
|
||||
@@ -3672,6 +3726,9 @@ enum nl80211_auth_type {
|
||||
NL80211_AUTHTYPE_FT,
|
||||
NL80211_AUTHTYPE_NETWORK_EAP,
|
||||
NL80211_AUTHTYPE_SAE,
|
||||
NL80211_AUTHTYPE_FILS_SK,
|
||||
NL80211_AUTHTYPE_FILS_SK_PFS,
|
||||
NL80211_AUTHTYPE_FILS_PK,
|
||||
|
||||
/* keep last */
|
||||
__NL80211_AUTHTYPE_NUM,
|
||||
@@ -4280,6 +4337,9 @@ enum nl80211_iface_limit_attrs {
|
||||
* of supported channel widths for radar detection.
|
||||
* @NL80211_IFACE_COMB_RADAR_DETECT_REGIONS: u32 attribute containing the bitmap
|
||||
* of supported regulatory regions for radar detection.
|
||||
* @NL80211_IFACE_COMB_BI_MIN_GCD: u32 attribute specifying the minimum GCD of
|
||||
* different beacon intervals supported by all the interface combinations
|
||||
* in this group (if not present, all beacon intervals be identical).
|
||||
* @NUM_NL80211_IFACE_COMB: number of attributes
|
||||
* @MAX_NL80211_IFACE_COMB: highest attribute number
|
||||
*
|
||||
@@ -4287,8 +4347,8 @@ enum nl80211_iface_limit_attrs {
|
||||
* limits = [ #{STA} <= 1, #{AP} <= 1 ], matching BI, channels = 1, max = 2
|
||||
* => allows an AP and a STA that must match BIs
|
||||
*
|
||||
* numbers = [ #{AP, P2P-GO} <= 8 ], channels = 1, max = 8
|
||||
* => allows 8 of AP/GO
|
||||
* numbers = [ #{AP, P2P-GO} <= 8 ], BI min gcd, channels = 1, max = 8,
|
||||
* => allows 8 of AP/GO that can have BI gcd >= min gcd
|
||||
*
|
||||
* numbers = [ #{STA} <= 2 ], channels = 2, max = 2
|
||||
* => allows two STAs on different channels
|
||||
@@ -4314,6 +4374,7 @@ enum nl80211_if_combination_attrs {
|
||||
NL80211_IFACE_COMB_NUM_CHANNELS,
|
||||
NL80211_IFACE_COMB_RADAR_DETECT_WIDTHS,
|
||||
NL80211_IFACE_COMB_RADAR_DETECT_REGIONS,
|
||||
NL80211_IFACE_COMB_BI_MIN_GCD,
|
||||
|
||||
/* keep last */
|
||||
NUM_NL80211_IFACE_COMB,
|
||||
@@ -4634,6 +4695,8 @@ enum nl80211_feature_flags {
|
||||
* configuration (AP/mesh) with HT rates.
|
||||
* @NL80211_EXT_FEATURE_BEACON_RATE_VHT: Driver supports beacon rate
|
||||
* configuration (AP/mesh) with VHT rates.
|
||||
* @NL80211_EXT_FEATURE_FILS_STA: This driver supports Fast Initial Link Setup
|
||||
* with user space SME (NL80211_CMD_AUTHENTICATE) in station mode.
|
||||
*
|
||||
* @NUM_NL80211_EXT_FEATURES: number of extended features.
|
||||
* @MAX_NL80211_EXT_FEATURES: highest extended feature index.
|
||||
@@ -4648,6 +4711,7 @@ enum nl80211_ext_feature_index {
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_LEGACY,
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_HT,
|
||||
NL80211_EXT_FEATURE_BEACON_RATE_VHT,
|
||||
NL80211_EXT_FEATURE_FILS_STA,
|
||||
|
||||
/* add new features before the definition below */
|
||||
NUM_NL80211_EXT_FEATURES,
|
||||
|
@@ -705,6 +705,15 @@ enum ovs_nat_attr {
|
||||
|
||||
#define OVS_NAT_ATTR_MAX (__OVS_NAT_ATTR_MAX - 1)
|
||||
|
||||
/*
|
||||
* struct ovs_action_push_eth - %OVS_ACTION_ATTR_PUSH_ETH action argument.
|
||||
* @addresses: Source and destination MAC addresses.
|
||||
* @eth_type: Ethernet type
|
||||
*/
|
||||
struct ovs_action_push_eth {
|
||||
struct ovs_key_ethernet addresses;
|
||||
};
|
||||
|
||||
/**
|
||||
* enum ovs_action_attr - Action types.
|
||||
*
|
||||
@@ -738,6 +747,10 @@ enum ovs_nat_attr {
|
||||
* is no MPLS label stack, as determined by ethertype, no action is taken.
|
||||
* @OVS_ACTION_ATTR_CT: Track the connection. Populate the conntrack-related
|
||||
* entries in the flow key.
|
||||
* @OVS_ACTION_ATTR_PUSH_ETH: Push a new outermost Ethernet header onto the
|
||||
* packet.
|
||||
* @OVS_ACTION_ATTR_POP_ETH: Pop the outermost Ethernet header off the
|
||||
* packet.
|
||||
*
|
||||
* Only a single header can be set with a single %OVS_ACTION_ATTR_SET. Not all
|
||||
* fields within a header are modifiable, e.g. the IPv4 protocol and fragment
|
||||
@@ -765,6 +778,8 @@ enum ovs_action_attr {
|
||||
* bits. */
|
||||
OVS_ACTION_ATTR_CT, /* Nested OVS_CT_ATTR_* . */
|
||||
OVS_ACTION_ATTR_TRUNC, /* u32 struct ovs_action_trunc. */
|
||||
OVS_ACTION_ATTR_PUSH_ETH, /* struct ovs_action_push_eth. */
|
||||
OVS_ACTION_ATTR_POP_ETH, /* No argument. */
|
||||
|
||||
__OVS_ACTION_ATTR_MAX, /* Nothing past this will be accepted
|
||||
* from userspace. */
|
||||
|
@@ -22,6 +22,14 @@
|
||||
#ifndef LINUX_PCI_REGS_H
|
||||
#define LINUX_PCI_REGS_H
|
||||
|
||||
/*
|
||||
* Conventional PCI and PCI-X Mode 1 devices have 256 bytes of
|
||||
* configuration space. PCI-X Mode 2 and PCIe devices have 4096 bytes of
|
||||
* configuration space.
|
||||
*/
|
||||
#define PCI_CFG_SPACE_SIZE 256
|
||||
#define PCI_CFG_SPACE_EXP_SIZE 4096
|
||||
|
||||
/*
|
||||
* Under PCI, each device has 256 bytes of configuration address space,
|
||||
* of which the first 64 bytes are standardized as follows:
|
||||
|
@@ -397,6 +397,7 @@ enum {
|
||||
TCA_BPF_NAME,
|
||||
TCA_BPF_FLAGS,
|
||||
TCA_BPF_FLAGS_GEN,
|
||||
TCA_BPF_DIGEST,
|
||||
__TCA_BPF_MAX,
|
||||
};
|
||||
|
||||
@@ -447,11 +448,38 @@ enum {
|
||||
TCA_FLOWER_KEY_TCP_DST_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_SRC_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_UDP_DST_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_SRC_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST_MASK, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_SCTP_SRC, /* be16 */
|
||||
TCA_FLOWER_KEY_SCTP_DST, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_SRC_PORT_MASK, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT, /* be16 */
|
||||
TCA_FLOWER_KEY_ENC_UDP_DST_PORT_MASK, /* be16 */
|
||||
|
||||
TCA_FLOWER_KEY_FLAGS, /* be32 */
|
||||
TCA_FLOWER_KEY_FLAGS_MASK, /* be32 */
|
||||
|
||||
TCA_FLOWER_KEY_ICMPV4_CODE, /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_CODE_MASK,/* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_TYPE, /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV4_TYPE_MASK,/* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_CODE, /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_CODE_MASK,/* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_TYPE, /* u8 */
|
||||
TCA_FLOWER_KEY_ICMPV6_TYPE_MASK,/* u8 */
|
||||
|
||||
__TCA_FLOWER_MAX,
|
||||
};
|
||||
|
||||
#define TCA_FLOWER_MAX (__TCA_FLOWER_MAX - 1)
|
||||
|
||||
enum {
|
||||
TCA_FLOWER_KEY_FLAGS_IS_FRAGMENT = (1 << 0),
|
||||
};
|
||||
|
||||
/* Match-all classifier */
|
||||
|
||||
enum {
|
||||
|
@@ -84,6 +84,10 @@
|
||||
#define MD_DISK_CANDIDATE 5 /* disk is added as spare (local) until confirmed
|
||||
* For clustered enviroments only.
|
||||
*/
|
||||
#define MD_DISK_FAILFAST 10 /* Send REQ_FAILFAST if there are multiple
|
||||
* devices available - and don't try to
|
||||
* correct read errors.
|
||||
*/
|
||||
|
||||
#define MD_DISK_WRITEMOSTLY 9 /* disk is "write-mostly" is RAID1 config.
|
||||
* read requests will only be sent here in
|
||||
@@ -265,8 +269,9 @@ struct mdp_superblock_1 {
|
||||
__le32 dev_number; /* permanent identifier of this device - not role in raid */
|
||||
__le32 cnt_corrected_read; /* number of read errors that were corrected by re-writing */
|
||||
__u8 device_uuid[16]; /* user-space setable, ignored by kernel */
|
||||
__u8 devflags; /* per-device flags. Only one defined...*/
|
||||
__u8 devflags; /* per-device flags. Only two defined...*/
|
||||
#define WriteMostly1 1 /* mask for writemostly flag in above */
|
||||
#define FailFast1 2 /* Should avoid retries and fixups and just fail */
|
||||
/* Bad block log. If there are any bad blocks the feature flag is set.
|
||||
* If offset and size are non-zero, that space is reserved and available
|
||||
*/
|
||||
|
@@ -318,6 +318,7 @@ enum rtattr_type_t {
|
||||
RTA_ENCAP,
|
||||
RTA_EXPIRES,
|
||||
RTA_PAD,
|
||||
RTA_UID,
|
||||
__RTA_MAX
|
||||
};
|
||||
|
||||
|
54
include/uapi/linux/seg6.h
Normal file
54
include/uapi/linux/seg6.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* SR-IPv6 implementation
|
||||
*
|
||||
* Author:
|
||||
* David Lebrun <david.lebrun@uclouvain.be>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_SEG6_H
|
||||
#define _UAPI_LINUX_SEG6_H
|
||||
|
||||
/*
|
||||
* SRH
|
||||
*/
|
||||
struct ipv6_sr_hdr {
|
||||
__u8 nexthdr;
|
||||
__u8 hdrlen;
|
||||
__u8 type;
|
||||
__u8 segments_left;
|
||||
__u8 first_segment;
|
||||
__u8 flag_1;
|
||||
__u8 flag_2;
|
||||
__u8 reserved;
|
||||
|
||||
struct in6_addr segments[0];
|
||||
};
|
||||
|
||||
#define SR6_FLAG1_CLEANUP (1 << 7)
|
||||
#define SR6_FLAG1_PROTECTED (1 << 6)
|
||||
#define SR6_FLAG1_OAM (1 << 5)
|
||||
#define SR6_FLAG1_ALERT (1 << 4)
|
||||
#define SR6_FLAG1_HMAC (1 << 3)
|
||||
|
||||
#define SR6_TLV_INGRESS 1
|
||||
#define SR6_TLV_EGRESS 2
|
||||
#define SR6_TLV_OPAQUE 3
|
||||
#define SR6_TLV_PADDING 4
|
||||
#define SR6_TLV_HMAC 5
|
||||
|
||||
#define sr_has_cleanup(srh) ((srh)->flag_1 & SR6_FLAG1_CLEANUP)
|
||||
#define sr_has_hmac(srh) ((srh)->flag_1 & SR6_FLAG1_HMAC)
|
||||
|
||||
struct sr6_tlv {
|
||||
__u8 type;
|
||||
__u8 len;
|
||||
__u8 data[0];
|
||||
};
|
||||
|
||||
#endif
|
32
include/uapi/linux/seg6_genl.h
Normal file
32
include/uapi/linux/seg6_genl.h
Normal file
@@ -0,0 +1,32 @@
|
||||
#ifndef _UAPI_LINUX_SEG6_GENL_H
|
||||
#define _UAPI_LINUX_SEG6_GENL_H
|
||||
|
||||
#define SEG6_GENL_NAME "SEG6"
|
||||
#define SEG6_GENL_VERSION 0x1
|
||||
|
||||
enum {
|
||||
SEG6_ATTR_UNSPEC,
|
||||
SEG6_ATTR_DST,
|
||||
SEG6_ATTR_DSTLEN,
|
||||
SEG6_ATTR_HMACKEYID,
|
||||
SEG6_ATTR_SECRET,
|
||||
SEG6_ATTR_SECRETLEN,
|
||||
SEG6_ATTR_ALGID,
|
||||
SEG6_ATTR_HMACINFO,
|
||||
__SEG6_ATTR_MAX,
|
||||
};
|
||||
|
||||
#define SEG6_ATTR_MAX (__SEG6_ATTR_MAX - 1)
|
||||
|
||||
enum {
|
||||
SEG6_CMD_UNSPEC,
|
||||
SEG6_CMD_SETHMAC,
|
||||
SEG6_CMD_DUMPHMAC,
|
||||
SEG6_CMD_SET_TUNSRC,
|
||||
SEG6_CMD_GET_TUNSRC,
|
||||
__SEG6_CMD_MAX,
|
||||
};
|
||||
|
||||
#define SEG6_CMD_MAX (__SEG6_CMD_MAX - 1)
|
||||
|
||||
#endif
|
21
include/uapi/linux/seg6_hmac.h
Normal file
21
include/uapi/linux/seg6_hmac.h
Normal file
@@ -0,0 +1,21 @@
|
||||
#ifndef _UAPI_LINUX_SEG6_HMAC_H
|
||||
#define _UAPI_LINUX_SEG6_HMAC_H
|
||||
|
||||
#include <linux/seg6.h>
|
||||
|
||||
#define SEG6_HMAC_SECRET_LEN 64
|
||||
#define SEG6_HMAC_FIELD_LEN 32
|
||||
|
||||
struct sr6_tlv_hmac {
|
||||
struct sr6_tlv tlvhdr;
|
||||
__u16 reserved;
|
||||
__be32 hmackeyid;
|
||||
__u8 hmac[SEG6_HMAC_FIELD_LEN];
|
||||
};
|
||||
|
||||
enum {
|
||||
SEG6_HMAC_ALGO_SHA1 = 1,
|
||||
SEG6_HMAC_ALGO_SHA256 = 2,
|
||||
};
|
||||
|
||||
#endif
|
44
include/uapi/linux/seg6_iptunnel.h
Normal file
44
include/uapi/linux/seg6_iptunnel.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* SR-IPv6 implementation
|
||||
*
|
||||
* Author:
|
||||
* David Lebrun <david.lebrun@uclouvain.be>
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
* as published by the Free Software Foundation; either version
|
||||
* 2 of the License, or (at your option) any later version.
|
||||
*/
|
||||
|
||||
#ifndef _UAPI_LINUX_SEG6_IPTUNNEL_H
|
||||
#define _UAPI_LINUX_SEG6_IPTUNNEL_H
|
||||
|
||||
enum {
|
||||
SEG6_IPTUNNEL_UNSPEC,
|
||||
SEG6_IPTUNNEL_SRH,
|
||||
__SEG6_IPTUNNEL_MAX,
|
||||
};
|
||||
#define SEG6_IPTUNNEL_MAX (__SEG6_IPTUNNEL_MAX - 1)
|
||||
|
||||
struct seg6_iptunnel_encap {
|
||||
int mode;
|
||||
struct ipv6_sr_hdr srh[0];
|
||||
};
|
||||
|
||||
#define SEG6_IPTUN_ENCAP_SIZE(x) ((sizeof(*x)) + (((x)->srh->hdrlen + 1) << 3))
|
||||
|
||||
enum {
|
||||
SEG6_IPTUN_MODE_INLINE,
|
||||
SEG6_IPTUN_MODE_ENCAP,
|
||||
};
|
||||
|
||||
static inline size_t seg6_lwt_headroom(struct seg6_iptunnel_encap *tuninfo)
|
||||
{
|
||||
int encap = (tuninfo->mode == SEG6_IPTUN_MODE_ENCAP);
|
||||
|
||||
return ((tuninfo->srh->hdrlen + 1) << 3) +
|
||||
(encap * sizeof(struct ipv6hdr));
|
||||
}
|
||||
|
||||
#endif
|
@@ -24,6 +24,8 @@
|
||||
#define SIOCINQ FIONREAD
|
||||
#define SIOCOUTQ TIOCOUTQ /* output queue size (not sent + not acked) */
|
||||
|
||||
#define SOCK_IOC_TYPE 0x89
|
||||
|
||||
/* Routing table calls. */
|
||||
#define SIOCADDRT 0x890B /* add routing table entry */
|
||||
#define SIOCDELRT 0x890C /* delete routing table entry */
|
||||
@@ -84,6 +86,7 @@
|
||||
#define SIOCWANDEV 0x894A /* get/set netdev parameters */
|
||||
|
||||
#define SIOCOUTQNSD 0x894B /* output queue size (not sent only) */
|
||||
#define SIOCGSKNS 0x894C /* get socket network namespace */
|
||||
|
||||
/* ARP cache control calls. */
|
||||
/* 0x8950 - 0x8952 * obsolete calls, don't re-use */
|
||||
|
@@ -12,3 +12,4 @@ header-y += tc_bpf.h
|
||||
header-y += tc_connmark.h
|
||||
header-y += tc_ife.h
|
||||
header-y += tc_tunnel_key.h
|
||||
header-y += tc_skbmod.h
|
||||
|
@@ -27,6 +27,7 @@ enum {
|
||||
TCA_ACT_BPF_FD,
|
||||
TCA_ACT_BPF_NAME,
|
||||
TCA_ACT_BPF_PAD,
|
||||
TCA_ACT_BPF_DIGEST,
|
||||
__TCA_ACT_BPF_MAX,
|
||||
};
|
||||
#define TCA_ACT_BPF_MAX (__TCA_ACT_BPF_MAX - 1)
|
||||
|
@@ -28,6 +28,7 @@
|
||||
#define SKBEDIT_F_QUEUE_MAPPING 0x2
|
||||
#define SKBEDIT_F_MARK 0x4
|
||||
#define SKBEDIT_F_PTYPE 0x8
|
||||
#define SKBEDIT_F_MASK 0x10
|
||||
|
||||
struct tc_skbedit {
|
||||
tc_gen;
|
||||
@@ -42,6 +43,7 @@ enum {
|
||||
TCA_SKBEDIT_MARK,
|
||||
TCA_SKBEDIT_PAD,
|
||||
TCA_SKBEDIT_PTYPE,
|
||||
TCA_SKBEDIT_MASK,
|
||||
__TCA_SKBEDIT_MAX
|
||||
};
|
||||
#define TCA_SKBEDIT_MAX (__TCA_SKBEDIT_MAX - 1)
|
||||
|
@@ -33,6 +33,7 @@ enum {
|
||||
TCA_TUNNEL_KEY_ENC_IPV6_DST, /* struct in6_addr */
|
||||
TCA_TUNNEL_KEY_ENC_KEY_ID, /* be64 */
|
||||
TCA_TUNNEL_KEY_PAD,
|
||||
TCA_TUNNEL_KEY_ENC_DST_PORT, /* be16 */
|
||||
__TCA_TUNNEL_KEY_MAX,
|
||||
};
|
||||
|
||||
|
@@ -214,6 +214,18 @@ struct tcp_info {
|
||||
__u32 tcpi_data_segs_out; /* RFC4898 tcpEStatsDataSegsOut */
|
||||
|
||||
__u64 tcpi_delivery_rate;
|
||||
|
||||
__u64 tcpi_busy_time; /* Time (usec) busy sending data */
|
||||
__u64 tcpi_rwnd_limited; /* Time (usec) limited by receive window */
|
||||
__u64 tcpi_sndbuf_limited; /* Time (usec) limited by send buffer */
|
||||
};
|
||||
|
||||
/* netlink attributes types for SCM_TIMESTAMPING_OPT_STATS */
|
||||
enum {
|
||||
TCP_NLA_PAD,
|
||||
TCP_NLA_BUSY, /* Time (usec) busy sending data */
|
||||
TCP_NLA_RWND_LIMITED, /* Time (usec) limited by receive window */
|
||||
TCP_NLA_SNDBUF_LIMITED, /* Time (usec) limited by send buffer */
|
||||
};
|
||||
|
||||
/* for TCP_MD5SIG socket option */
|
||||
|
@@ -23,11 +23,7 @@
|
||||
#else
|
||||
#define __bitwise__
|
||||
#endif
|
||||
#ifdef __CHECK_ENDIAN__
|
||||
#define __bitwise __bitwise__
|
||||
#else
|
||||
#define __bitwise
|
||||
#endif
|
||||
|
||||
typedef __u16 __bitwise __le16;
|
||||
typedef __u16 __bitwise __be16;
|
||||
|
24
include/uapi/linux/uleds.h
Normal file
24
include/uapi/linux/uleds.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/*
|
||||
* Userspace driver support for the LED subsystem
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*/
|
||||
#ifndef _UAPI__ULEDS_H_
|
||||
#define _UAPI__ULEDS_H_
|
||||
|
||||
#define LED_MAX_NAME_SIZE 64
|
||||
|
||||
struct uleds_user_dev {
|
||||
char name[LED_MAX_NAME_SIZE];
|
||||
int max_brightness;
|
||||
};
|
||||
|
||||
#endif /* _UAPI__ULEDS_H_ */
|
@@ -423,6 +423,12 @@ struct usb_endpoint_descriptor {
|
||||
#define USB_ENDPOINT_XFER_INT 3
|
||||
#define USB_ENDPOINT_MAX_ADJUSTABLE 0x80
|
||||
|
||||
#define USB_ENDPOINT_MAXP_MASK 0x07ff
|
||||
#define USB_EP_MAXP_MULT_SHIFT 11
|
||||
#define USB_EP_MAXP_MULT_MASK (3 << USB_EP_MAXP_MULT_SHIFT)
|
||||
#define USB_EP_MAXP_MULT(m) \
|
||||
(((m) & USB_EP_MAXP_MULT_MASK) >> USB_EP_MAXP_MULT_SHIFT)
|
||||
|
||||
/* The USB 3.0 spec redefines bits 5:4 of bmAttributes as interrupt ep type. */
|
||||
#define USB_ENDPOINT_INTRTYPE 0x30
|
||||
#define USB_ENDPOINT_INTR_PERIODIC (0 << 4)
|
||||
@@ -623,11 +629,25 @@ static inline int usb_endpoint_is_isoc_out(
|
||||
* usb_endpoint_maxp - get endpoint's max packet size
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Returns @epd's max packet
|
||||
* Returns @epd's max packet bits [10:0]
|
||||
*/
|
||||
static inline int usb_endpoint_maxp(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
return __le16_to_cpu(epd->wMaxPacketSize);
|
||||
return __le16_to_cpu(epd->wMaxPacketSize) & USB_ENDPOINT_MAXP_MASK;
|
||||
}
|
||||
|
||||
/**
|
||||
* usb_endpoint_maxp_mult - get endpoint's transactional opportunities
|
||||
* @epd: endpoint to be checked
|
||||
*
|
||||
* Return @epd's wMaxPacketSize[12:11] + 1
|
||||
*/
|
||||
static inline int
|
||||
usb_endpoint_maxp_mult(const struct usb_endpoint_descriptor *epd)
|
||||
{
|
||||
int maxp = __le16_to_cpu(epd->wMaxPacketSize);
|
||||
|
||||
return USB_EP_MAXP_MULT(maxp) + 1;
|
||||
}
|
||||
|
||||
static inline int usb_endpoint_interrupt_type(
|
||||
|
@@ -892,6 +892,7 @@ enum v4l2_jpeg_chroma_subsampling {
|
||||
#define V4L2_CID_LINK_FREQ (V4L2_CID_IMAGE_PROC_CLASS_BASE + 1)
|
||||
#define V4L2_CID_PIXEL_RATE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 2)
|
||||
#define V4L2_CID_TEST_PATTERN (V4L2_CID_IMAGE_PROC_CLASS_BASE + 3)
|
||||
#define V4L2_CID_DEINTERLACING_MODE (V4L2_CID_IMAGE_PROC_CLASS_BASE + 4)
|
||||
|
||||
|
||||
/* DV-class control IDs defined by V4L2 */
|
||||
|
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* V4L2 DV timings header.
|
||||
*
|
||||
* Copyright (C) 2012 Hans Verkuil <hans.verkuil@cisco.com>
|
||||
* Copyright (C) 2012-2016 Hans Verkuil <hans.verkuil@cisco.com>
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License
|
||||
@@ -11,11 +11,6 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
|
||||
* 02110-1301 USA
|
||||
*/
|
||||
|
||||
#ifndef _V4L2_DV_TIMINGS_H
|
||||
@@ -33,13 +28,14 @@
|
||||
.bt = { _width , ## args }
|
||||
#endif
|
||||
|
||||
/* CEA-861-E timings (i.e. standard HDTV timings) */
|
||||
/* CEA-861-F timings (i.e. standard HDTV timings) */
|
||||
|
||||
#define V4L2_DV_BT_CEA_640X480P59_94 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(640, 480, 0, 0, \
|
||||
25175000, 16, 96, 48, 10, 2, 33, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, 0) \
|
||||
V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 1) \
|
||||
}
|
||||
|
||||
/* Note: these are the nominal timings, for HDMI links this format is typically
|
||||
@@ -49,14 +45,18 @@
|
||||
V4L2_INIT_BT_TIMINGS(720, 480, 1, 0, \
|
||||
13500000, 19, 62, 57, 4, 3, 15, 4, 3, 16, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, \
|
||||
{ 4, 3 }, 6) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_720X480P59_94 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 480, 0, 0, \
|
||||
27000000, 16, 62, 60, 9, 6, 30, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 2) \
|
||||
}
|
||||
|
||||
/* Note: these are the nominal timings, for HDMI links this format is typically
|
||||
@@ -66,14 +66,18 @@
|
||||
V4L2_INIT_BT_TIMINGS(720, 576, 1, 0, \
|
||||
13500000, 12, 63, 69, 2, 3, 19, 2, 3, 20, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_PICTURE_ASPECT | V4L2_DV_FL_HAS_CEA861_VIC, \
|
||||
{ 4, 3 }, 21) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_720X576P50 { \
|
||||
.type = V4L2_DV_BT_656_1120, \
|
||||
V4L2_INIT_BT_TIMINGS(720, 576, 0, 0, \
|
||||
27000000, 12, 64, 68, 5, 5, 39, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_PICTURE_ASPECT | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 4, 3 }, 17) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1280X720P24 { \
|
||||
@@ -82,7 +86,7 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
59400000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 60) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1280X720P25 { \
|
||||
@@ -90,7 +94,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(1280, 720, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 2420, 40, 220, 5, 5, 20, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 61) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1280X720P30 { \
|
||||
@@ -99,7 +104,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 1760, 40, 220, 5, 5, 20, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 62) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1280X720P50 { \
|
||||
@@ -107,7 +113,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(1280, 720, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 440, 40, 220, 5, 5, 20, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 19) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1280X720P60 { \
|
||||
@@ -116,7 +123,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 110, 40, 220, 5, 5, 20, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 4) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080P24 { \
|
||||
@@ -125,7 +133,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 638, 44, 148, 4, 5, 36, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 32) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080P25 { \
|
||||
@@ -133,7 +142,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(1920, 1080, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 528, 44, 148, 4, 5, 36, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 33) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080P30 { \
|
||||
@@ -142,7 +152,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 88, 44, 148, 4, 5, 36, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 34) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080I50 { \
|
||||
@@ -151,7 +162,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
74250000, 528, 44, 148, 2, 5, 15, 2, 5, 16, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 20) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080P50 { \
|
||||
@@ -159,7 +171,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(1920, 1080, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
148500000, 528, 44, 148, 4, 5, 36, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 31) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080I60 { \
|
||||
@@ -169,7 +182,8 @@
|
||||
74250000, 88, 44, 148, 2, 5, 15, 2, 5, 16, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_HALF_LINE | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 5) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_1920X1080P60 { \
|
||||
@@ -178,7 +192,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
148500000, 88, 44, 148, 4, 5, 36, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_DMT | V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 16) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P24 { \
|
||||
@@ -187,7 +202,9 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 1276, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, \
|
||||
{ 0, 0 }, 93, 3) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P25 { \
|
||||
@@ -195,7 +212,9 @@
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC | \
|
||||
V4L2_DV_FL_HAS_HDMI_VIC, { 0, 0 }, 94, 2) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P30 { \
|
||||
@@ -204,7 +223,9 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, \
|
||||
{ 0, 0 }, 95, 1) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P50 { \
|
||||
@@ -212,7 +233,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(3840, 2160, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
594000000, 1056, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 96) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_3840X2160P60 { \
|
||||
@@ -221,7 +243,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
594000000, 176, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 97) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P24 { \
|
||||
@@ -230,7 +253,9 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 1020, 88, 296, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC | V4L2_DV_FL_HAS_HDMI_VIC, \
|
||||
{ 0, 0 }, 98, 4) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P25 { \
|
||||
@@ -238,7 +263,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 99) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P30 { \
|
||||
@@ -247,7 +273,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
297000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 100) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P50 { \
|
||||
@@ -255,7 +282,8 @@
|
||||
V4L2_INIT_BT_TIMINGS(4096, 2160, 0, \
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
594000000, 968, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_IS_CE_VIDEO | V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 101) \
|
||||
}
|
||||
|
||||
#define V4L2_DV_BT_CEA_4096X2160P60 { \
|
||||
@@ -264,7 +292,8 @@
|
||||
V4L2_DV_HSYNC_POS_POL | V4L2_DV_VSYNC_POS_POL, \
|
||||
594000000, 88, 88, 128, 8, 10, 72, 0, 0, 0, \
|
||||
V4L2_DV_BT_STD_CEA861, \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO) \
|
||||
V4L2_DV_FL_CAN_REDUCE_FPS | V4L2_DV_FL_IS_CE_VIDEO | \
|
||||
V4L2_DV_FL_HAS_CEA861_VIC, { 0, 0 }, 102) \
|
||||
}
|
||||
|
||||
|
||||
|
@@ -203,6 +203,16 @@ struct vfio_device_info {
|
||||
};
|
||||
#define VFIO_DEVICE_GET_INFO _IO(VFIO_TYPE, VFIO_BASE + 7)
|
||||
|
||||
/*
|
||||
* Vendor driver using Mediated device framework should provide device_api
|
||||
* attribute in supported type attribute groups. Device API string should be one
|
||||
* of the following corresponding to device flags in vfio_device_info structure.
|
||||
*/
|
||||
|
||||
#define VFIO_DEVICE_API_PCI_STRING "vfio-pci"
|
||||
#define VFIO_DEVICE_API_PLATFORM_STRING "vfio-platform"
|
||||
#define VFIO_DEVICE_API_AMBA_STRING "vfio-amba"
|
||||
|
||||
/**
|
||||
* VFIO_DEVICE_GET_REGION_INFO - _IOWR(VFIO_TYPE, VFIO_BASE + 8,
|
||||
* struct vfio_region_info)
|
||||
|
@@ -172,8 +172,6 @@ struct vhost_memory {
|
||||
#define VHOST_F_LOG_ALL 26
|
||||
/* vhost-net should add virtio_net_hdr for RX, and strip for TX packets. */
|
||||
#define VHOST_NET_F_VIRTIO_NET_HDR 27
|
||||
/* Vhost have device IOTLB */
|
||||
#define VHOST_F_DEVICE_IOTLB 63
|
||||
|
||||
/* VHOST_SCSI specific definitions */
|
||||
|
||||
|
@@ -334,6 +334,19 @@ enum v4l2_ycbcr_encoding {
|
||||
V4L2_YCBCR_ENC_SMPTE240M = 8,
|
||||
};
|
||||
|
||||
/*
|
||||
* enum v4l2_hsv_encoding values should not collide with the ones from
|
||||
* enum v4l2_ycbcr_encoding.
|
||||
*/
|
||||
enum v4l2_hsv_encoding {
|
||||
|
||||
/* Hue mapped to 0 - 179 */
|
||||
V4L2_HSV_ENC_180 = 128,
|
||||
|
||||
/* Hue mapped to 0-255 */
|
||||
V4L2_HSV_ENC_256 = 129,
|
||||
};
|
||||
|
||||
/*
|
||||
* Determine how YCBCR_ENC_DEFAULT should map to a proper Y'CbCr encoding.
|
||||
* This depends on the colorspace.
|
||||
@@ -362,9 +375,10 @@ enum v4l2_quantization {
|
||||
* This depends on whether the image is RGB or not, the colorspace and the
|
||||
* Y'CbCr encoding.
|
||||
*/
|
||||
#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb, colsp, ycbcr_enc) \
|
||||
(((is_rgb) && (colsp) == V4L2_COLORSPACE_BT2020) ? V4L2_QUANTIZATION_LIM_RANGE : \
|
||||
(((is_rgb) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \
|
||||
#define V4L2_MAP_QUANTIZATION_DEFAULT(is_rgb_or_hsv, colsp, ycbcr_enc) \
|
||||
(((is_rgb_or_hsv) && (colsp) == V4L2_COLORSPACE_BT2020) ? \
|
||||
V4L2_QUANTIZATION_LIM_RANGE : \
|
||||
(((is_rgb_or_hsv) || (ycbcr_enc) == V4L2_YCBCR_ENC_XV601 || \
|
||||
(ycbcr_enc) == V4L2_YCBCR_ENC_XV709 || (colsp) == V4L2_COLORSPACE_JPEG) || \
|
||||
(colsp) == V4L2_COLORSPACE_ADOBERGB || (colsp) == V4L2_COLORSPACE_SRGB ? \
|
||||
V4L2_QUANTIZATION_FULL_RANGE : V4L2_QUANTIZATION_LIM_RANGE))
|
||||
@@ -462,7 +476,12 @@ struct v4l2_pix_format {
|
||||
__u32 colorspace; /* enum v4l2_colorspace */
|
||||
__u32 priv; /* private data, depends on pixelformat */
|
||||
__u32 flags; /* format flags (V4L2_PIX_FMT_FLAG_*) */
|
||||
__u32 ycbcr_enc; /* enum v4l2_ycbcr_encoding */
|
||||
union {
|
||||
/* enum v4l2_ycbcr_encoding */
|
||||
__u32 ycbcr_enc;
|
||||
/* enum v4l2_hsv_encoding */
|
||||
__u32 hsv_enc;
|
||||
};
|
||||
__u32 quantization; /* enum v4l2_quantization */
|
||||
__u32 xfer_func; /* enum v4l2_xfer_func */
|
||||
};
|
||||
@@ -586,6 +605,13 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_SGRBG12 v4l2_fourcc('B', 'A', '1', '2') /* 12 GRGR.. BGBG.. */
|
||||
#define V4L2_PIX_FMT_SRGGB12 v4l2_fourcc('R', 'G', '1', '2') /* 12 RGRG.. GBGB.. */
|
||||
#define V4L2_PIX_FMT_SBGGR16 v4l2_fourcc('B', 'Y', 'R', '2') /* 16 BGBG.. GRGR.. */
|
||||
#define V4L2_PIX_FMT_SGBRG16 v4l2_fourcc('G', 'B', '1', '6') /* 16 GBGB.. RGRG.. */
|
||||
#define V4L2_PIX_FMT_SGRBG16 v4l2_fourcc('G', 'R', '1', '6') /* 16 GRGR.. BGBG.. */
|
||||
#define V4L2_PIX_FMT_SRGGB16 v4l2_fourcc('R', 'G', '1', '6') /* 16 RGRG.. GBGB.. */
|
||||
|
||||
/* HSV formats */
|
||||
#define V4L2_PIX_FMT_HSV24 v4l2_fourcc('H', 'S', 'V', '3')
|
||||
#define V4L2_PIX_FMT_HSV32 v4l2_fourcc('H', 'S', 'V', '4')
|
||||
|
||||
/* compressed formats */
|
||||
#define V4L2_PIX_FMT_MJPEG v4l2_fourcc('M', 'J', 'P', 'G') /* Motion-JPEG */
|
||||
@@ -603,6 +629,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_VC1_ANNEX_G v4l2_fourcc('V', 'C', '1', 'G') /* SMPTE 421M Annex G compliant stream */
|
||||
#define V4L2_PIX_FMT_VC1_ANNEX_L v4l2_fourcc('V', 'C', '1', 'L') /* SMPTE 421M Annex L compliant stream */
|
||||
#define V4L2_PIX_FMT_VP8 v4l2_fourcc('V', 'P', '8', '0') /* VP8 */
|
||||
#define V4L2_PIX_FMT_VP9 v4l2_fourcc('V', 'P', '9', '0') /* VP9 */
|
||||
|
||||
/* Vendor-specific formats */
|
||||
#define V4L2_PIX_FMT_CPIA1 v4l2_fourcc('C', 'P', 'I', 'A') /* cpia1 YUV */
|
||||
@@ -634,6 +661,7 @@ struct v4l2_pix_format {
|
||||
#define V4L2_PIX_FMT_Y8I v4l2_fourcc('Y', '8', 'I', ' ') /* Greyscale 8-bit L/R interleaved */
|
||||
#define V4L2_PIX_FMT_Y12I v4l2_fourcc('Y', '1', '2', 'I') /* Greyscale 12-bit L/R interleaved */
|
||||
#define V4L2_PIX_FMT_Z16 v4l2_fourcc('Z', '1', '6', ' ') /* Depth data 16-bit */
|
||||
#define V4L2_PIX_FMT_MT21C v4l2_fourcc('M', 'T', '2', '1') /* Mediatek compressed block mode */
|
||||
|
||||
/* SDR formats - used only for Software Defined Radio devices */
|
||||
#define V4L2_SDR_FMT_CU8 v4l2_fourcc('C', 'U', '0', '8') /* IQ u8 */
|
||||
@@ -1229,6 +1257,9 @@ struct v4l2_standard {
|
||||
* (aka field 2) of interlaced field formats
|
||||
* @standards: Standards the timing belongs to
|
||||
* @flags: Flags
|
||||
* @picture_aspect: The picture aspect ratio (hor/vert).
|
||||
* @cea861_vic: VIC code as per the CEA-861 standard.
|
||||
* @hdmi_vic: VIC code as per the HDMI standard.
|
||||
* @reserved: Reserved fields, must be zeroed.
|
||||
*
|
||||
* A note regarding vertical interlaced timings: height refers to the total
|
||||
@@ -1258,7 +1289,10 @@ struct v4l2_bt_timings {
|
||||
__u32 il_vbackporch;
|
||||
__u32 standards;
|
||||
__u32 flags;
|
||||
__u32 reserved[14];
|
||||
struct v4l2_fract picture_aspect;
|
||||
__u8 cea861_vic;
|
||||
__u8 hdmi_vic;
|
||||
__u8 reserved[46];
|
||||
} __attribute__ ((packed));
|
||||
|
||||
/* Interlaced or progressive format */
|
||||
@@ -1278,39 +1312,66 @@ struct v4l2_bt_timings {
|
||||
|
||||
/* Flags */
|
||||
|
||||
/* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary
|
||||
GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
|
||||
intervals are reduced, allowing a higher resolution over the same
|
||||
bandwidth. This is a read-only flag. */
|
||||
/*
|
||||
* CVT/GTF specific: timing uses reduced blanking (CVT) or the 'Secondary
|
||||
* GTF' curve (GTF). In both cases the horizontal and/or vertical blanking
|
||||
* intervals are reduced, allowing a higher resolution over the same
|
||||
* bandwidth. This is a read-only flag.
|
||||
*/
|
||||
#define V4L2_DV_FL_REDUCED_BLANKING (1 << 0)
|
||||
/* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple
|
||||
of six. These formats can be optionally played at 1 / 1.001 speed.
|
||||
This is a read-only flag. */
|
||||
/*
|
||||
* CEA-861 specific: set for CEA-861 formats with a framerate of a multiple
|
||||
* of six. These formats can be optionally played at 1 / 1.001 speed.
|
||||
* This is a read-only flag.
|
||||
*/
|
||||
#define V4L2_DV_FL_CAN_REDUCE_FPS (1 << 1)
|
||||
/* CEA-861 specific: only valid for video transmitters, the flag is cleared
|
||||
by receivers.
|
||||
If the framerate of the format is a multiple of six, then the pixelclock
|
||||
used to set up the transmitter is divided by 1.001 to make it compatible
|
||||
with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
|
||||
29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate
|
||||
such frequencies, then the flag will also be cleared. */
|
||||
/*
|
||||
* CEA-861 specific: only valid for video transmitters, the flag is cleared
|
||||
* by receivers.
|
||||
* If the framerate of the format is a multiple of six, then the pixelclock
|
||||
* used to set up the transmitter is divided by 1.001 to make it compatible
|
||||
* with 60 Hz based standards such as NTSC and PAL-M that use a framerate of
|
||||
* 29.97 Hz. Otherwise this flag is cleared. If the transmitter can't generate
|
||||
* such frequencies, then the flag will also be cleared.
|
||||
*/
|
||||
#define V4L2_DV_FL_REDUCED_FPS (1 << 2)
|
||||
/* Specific to interlaced formats: if set, then field 1 is really one half-line
|
||||
longer and field 2 is really one half-line shorter, so each field has
|
||||
exactly the same number of half-lines. Whether half-lines can be detected
|
||||
or used depends on the hardware. */
|
||||
/*
|
||||
* Specific to interlaced formats: if set, then field 1 is really one half-line
|
||||
* longer and field 2 is really one half-line shorter, so each field has
|
||||
* exactly the same number of half-lines. Whether half-lines can be detected
|
||||
* or used depends on the hardware.
|
||||
*/
|
||||
#define V4L2_DV_FL_HALF_LINE (1 << 3)
|
||||
/* If set, then this is a Consumer Electronics (CE) video format. Such formats
|
||||
/*
|
||||
* If set, then this is a Consumer Electronics (CE) video format. Such formats
|
||||
* differ from other formats (commonly called IT formats) in that if RGB
|
||||
* encoding is used then by default the RGB values use limited range (i.e.
|
||||
* use the range 16-235) as opposed to 0-255. All formats defined in CEA-861
|
||||
* except for the 640x480 format are CE formats. */
|
||||
* except for the 640x480 format are CE formats.
|
||||
*/
|
||||
#define V4L2_DV_FL_IS_CE_VIDEO (1 << 4)
|
||||
/* Some formats like SMPTE-125M have an interlaced signal with a odd
|
||||
* total height. For these formats, if this flag is set, the first
|
||||
* field has the extra line. If not, it is the second field.
|
||||
*/
|
||||
#define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
|
||||
#define V4L2_DV_FL_FIRST_FIELD_EXTRA_LINE (1 << 5)
|
||||
/*
|
||||
* If set, then the picture_aspect field is valid. Otherwise assume that the
|
||||
* pixels are square, so the picture aspect ratio is the same as the width to
|
||||
* height ratio.
|
||||
*/
|
||||
#define V4L2_DV_FL_HAS_PICTURE_ASPECT (1 << 6)
|
||||
/*
|
||||
* If set, then the cea861_vic field is valid and contains the Video
|
||||
* Identification Code as per the CEA-861 standard.
|
||||
*/
|
||||
#define V4L2_DV_FL_HAS_CEA861_VIC (1 << 7)
|
||||
/*
|
||||
* If set, then the hdmi_vic field is valid and contains the Video
|
||||
* Identification Code as per the HDMI standard (HDMI Vendor Specific
|
||||
* InfoFrame).
|
||||
*/
|
||||
#define V4L2_DV_FL_HAS_HDMI_VIC (1 << 8)
|
||||
|
||||
/* A few useful defines to calculate the total blanking and frame sizes */
|
||||
#define V4L2_DV_BT_BLANKING_WIDTH(bt) \
|
||||
@@ -2006,7 +2067,10 @@ struct v4l2_pix_format_mplane {
|
||||
struct v4l2_plane_pix_format plane_fmt[VIDEO_MAX_PLANES];
|
||||
__u8 num_planes;
|
||||
__u8 flags;
|
||||
__u8 ycbcr_enc;
|
||||
union {
|
||||
__u8 ycbcr_enc;
|
||||
__u8 hsv_enc;
|
||||
};
|
||||
__u8 quantization;
|
||||
__u8 xfer_func;
|
||||
__u8 reserved[7];
|
||||
|
450
include/uapi/linux/virtio_crypto.h
Normal file
450
include/uapi/linux/virtio_crypto.h
Normal file
@@ -0,0 +1,450 @@
|
||||
#ifndef _VIRTIO_CRYPTO_H
|
||||
#define _VIRTIO_CRYPTO_H
|
||||
/* This header is BSD licensed so anyone can use the definitions to implement
|
||||
* compatible drivers/servers.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions and the following disclaimer.
|
||||
* 2. Redistributions in binary form must reproduce the above copyright
|
||||
* notice, this list of conditions and the following disclaimer in the
|
||||
* documentation and/or other materials provided with the distribution.
|
||||
* 3. Neither the name of IBM nor the names of its contributors
|
||||
* may be used to endorse or promote products derived from this software
|
||||
* without specific prior written permission.
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL IBM OR
|
||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
|
||||
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
|
||||
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*/
|
||||
#include <linux/types.h>
|
||||
#include <linux/virtio_types.h>
|
||||
#include <linux/virtio_ids.h>
|
||||
#include <linux/virtio_config.h>
|
||||
|
||||
|
||||
#define VIRTIO_CRYPTO_SERVICE_CIPHER 0
|
||||
#define VIRTIO_CRYPTO_SERVICE_HASH 1
|
||||
#define VIRTIO_CRYPTO_SERVICE_MAC 2
|
||||
#define VIRTIO_CRYPTO_SERVICE_AEAD 3
|
||||
|
||||
#define VIRTIO_CRYPTO_OPCODE(service, op) (((service) << 8) | (op))
|
||||
|
||||
struct virtio_crypto_ctrl_header {
|
||||
#define VIRTIO_CRYPTO_CIPHER_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x02)
|
||||
#define VIRTIO_CRYPTO_CIPHER_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x03)
|
||||
#define VIRTIO_CRYPTO_HASH_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x02)
|
||||
#define VIRTIO_CRYPTO_HASH_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x03)
|
||||
#define VIRTIO_CRYPTO_MAC_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x02)
|
||||
#define VIRTIO_CRYPTO_MAC_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x03)
|
||||
#define VIRTIO_CRYPTO_AEAD_CREATE_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x02)
|
||||
#define VIRTIO_CRYPTO_AEAD_DESTROY_SESSION \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x03)
|
||||
__le32 opcode;
|
||||
__le32 algo;
|
||||
__le32 flag;
|
||||
/* data virtqueue id */
|
||||
__le32 queue_id;
|
||||
};
|
||||
|
||||
struct virtio_crypto_cipher_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_CIPHER 0
|
||||
#define VIRTIO_CRYPTO_CIPHER_ARC4 1
|
||||
#define VIRTIO_CRYPTO_CIPHER_AES_ECB 2
|
||||
#define VIRTIO_CRYPTO_CIPHER_AES_CBC 3
|
||||
#define VIRTIO_CRYPTO_CIPHER_AES_CTR 4
|
||||
#define VIRTIO_CRYPTO_CIPHER_DES_ECB 5
|
||||
#define VIRTIO_CRYPTO_CIPHER_DES_CBC 6
|
||||
#define VIRTIO_CRYPTO_CIPHER_3DES_ECB 7
|
||||
#define VIRTIO_CRYPTO_CIPHER_3DES_CBC 8
|
||||
#define VIRTIO_CRYPTO_CIPHER_3DES_CTR 9
|
||||
#define VIRTIO_CRYPTO_CIPHER_KASUMI_F8 10
|
||||
#define VIRTIO_CRYPTO_CIPHER_SNOW3G_UEA2 11
|
||||
#define VIRTIO_CRYPTO_CIPHER_AES_F8 12
|
||||
#define VIRTIO_CRYPTO_CIPHER_AES_XTS 13
|
||||
#define VIRTIO_CRYPTO_CIPHER_ZUC_EEA3 14
|
||||
__le32 algo;
|
||||
/* length of key */
|
||||
__le32 keylen;
|
||||
|
||||
#define VIRTIO_CRYPTO_OP_ENCRYPT 1
|
||||
#define VIRTIO_CRYPTO_OP_DECRYPT 2
|
||||
/* encrypt or decrypt */
|
||||
__le32 op;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_session_input {
|
||||
/* Device-writable part */
|
||||
__le64 session_id;
|
||||
__le32 status;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_cipher_session_req {
|
||||
struct virtio_crypto_cipher_session_para para;
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_hash_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_HASH 0
|
||||
#define VIRTIO_CRYPTO_HASH_MD5 1
|
||||
#define VIRTIO_CRYPTO_HASH_SHA1 2
|
||||
#define VIRTIO_CRYPTO_HASH_SHA_224 3
|
||||
#define VIRTIO_CRYPTO_HASH_SHA_256 4
|
||||
#define VIRTIO_CRYPTO_HASH_SHA_384 5
|
||||
#define VIRTIO_CRYPTO_HASH_SHA_512 6
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_224 7
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_256 8
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_384 9
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_512 10
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_SHAKE128 11
|
||||
#define VIRTIO_CRYPTO_HASH_SHA3_SHAKE256 12
|
||||
__le32 algo;
|
||||
/* hash result length */
|
||||
__le32 hash_result_len;
|
||||
__u8 padding[8];
|
||||
};
|
||||
|
||||
struct virtio_crypto_hash_create_session_req {
|
||||
struct virtio_crypto_hash_session_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
struct virtio_crypto_mac_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_MAC 0
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_MD5 1
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_SHA1 2
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_SHA_224 3
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_SHA_256 4
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_SHA_384 5
|
||||
#define VIRTIO_CRYPTO_MAC_HMAC_SHA_512 6
|
||||
#define VIRTIO_CRYPTO_MAC_CMAC_3DES 25
|
||||
#define VIRTIO_CRYPTO_MAC_CMAC_AES 26
|
||||
#define VIRTIO_CRYPTO_MAC_KASUMI_F9 27
|
||||
#define VIRTIO_CRYPTO_MAC_SNOW3G_UIA2 28
|
||||
#define VIRTIO_CRYPTO_MAC_GMAC_AES 41
|
||||
#define VIRTIO_CRYPTO_MAC_GMAC_TWOFISH 42
|
||||
#define VIRTIO_CRYPTO_MAC_CBCMAC_AES 49
|
||||
#define VIRTIO_CRYPTO_MAC_CBCMAC_KASUMI_F9 50
|
||||
#define VIRTIO_CRYPTO_MAC_XCBC_AES 53
|
||||
__le32 algo;
|
||||
/* hash result length */
|
||||
__le32 hash_result_len;
|
||||
/* length of authenticated key */
|
||||
__le32 auth_key_len;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_mac_create_session_req {
|
||||
struct virtio_crypto_mac_session_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
struct virtio_crypto_aead_session_para {
|
||||
#define VIRTIO_CRYPTO_NO_AEAD 0
|
||||
#define VIRTIO_CRYPTO_AEAD_GCM 1
|
||||
#define VIRTIO_CRYPTO_AEAD_CCM 2
|
||||
#define VIRTIO_CRYPTO_AEAD_CHACHA20_POLY1305 3
|
||||
__le32 algo;
|
||||
/* length of key */
|
||||
__le32 key_len;
|
||||
/* hash result length */
|
||||
__le32 hash_result_len;
|
||||
/* length of the additional authenticated data (AAD) in bytes */
|
||||
__le32 aad_len;
|
||||
/* encrypt or decrypt, See above VIRTIO_CRYPTO_OP_* */
|
||||
__le32 op;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_aead_create_session_req {
|
||||
struct virtio_crypto_aead_session_para para;
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_session_para {
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_HASH_THEN_CIPHER 1
|
||||
#define VIRTIO_CRYPTO_SYM_ALG_CHAIN_ORDER_CIPHER_THEN_HASH 2
|
||||
__le32 alg_chain_order;
|
||||
/* Plain hash */
|
||||
#define VIRTIO_CRYPTO_SYM_HASH_MODE_PLAIN 1
|
||||
/* Authenticated hash (mac) */
|
||||
#define VIRTIO_CRYPTO_SYM_HASH_MODE_AUTH 2
|
||||
/* Nested hash */
|
||||
#define VIRTIO_CRYPTO_SYM_HASH_MODE_NESTED 3
|
||||
__le32 hash_mode;
|
||||
struct virtio_crypto_cipher_session_para cipher_param;
|
||||
union {
|
||||
struct virtio_crypto_hash_session_para hash_param;
|
||||
struct virtio_crypto_mac_session_para mac_param;
|
||||
__u8 padding[16];
|
||||
} u;
|
||||
/* length of the additional authenticated data (AAD) in bytes */
|
||||
__le32 aad_len;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_session_req {
|
||||
struct virtio_crypto_alg_chain_session_para para;
|
||||
};
|
||||
|
||||
struct virtio_crypto_sym_create_session_req {
|
||||
union {
|
||||
struct virtio_crypto_cipher_session_req cipher;
|
||||
struct virtio_crypto_alg_chain_session_req chain;
|
||||
__u8 padding[48];
|
||||
} u;
|
||||
|
||||
/* Device-readable part */
|
||||
|
||||
/* No operation */
|
||||
#define VIRTIO_CRYPTO_SYM_OP_NONE 0
|
||||
/* Cipher only operation on the data */
|
||||
#define VIRTIO_CRYPTO_SYM_OP_CIPHER 1
|
||||
/*
|
||||
* Chain any cipher with any hash or mac operation. The order
|
||||
* depends on the value of alg_chain_order param
|
||||
*/
|
||||
#define VIRTIO_CRYPTO_SYM_OP_ALGORITHM_CHAINING 2
|
||||
__le32 op_type;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_destroy_session_req {
|
||||
/* Device-readable part */
|
||||
__le64 session_id;
|
||||
__u8 padding[48];
|
||||
};
|
||||
|
||||
/* The request of the control virtqueue's packet */
|
||||
struct virtio_crypto_op_ctrl_req {
|
||||
struct virtio_crypto_ctrl_header header;
|
||||
|
||||
union {
|
||||
struct virtio_crypto_sym_create_session_req
|
||||
sym_create_session;
|
||||
struct virtio_crypto_hash_create_session_req
|
||||
hash_create_session;
|
||||
struct virtio_crypto_mac_create_session_req
|
||||
mac_create_session;
|
||||
struct virtio_crypto_aead_create_session_req
|
||||
aead_create_session;
|
||||
struct virtio_crypto_destroy_session_req
|
||||
destroy_session;
|
||||
__u8 padding[56];
|
||||
} u;
|
||||
};
|
||||
|
||||
struct virtio_crypto_op_header {
|
||||
#define VIRTIO_CRYPTO_CIPHER_ENCRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x00)
|
||||
#define VIRTIO_CRYPTO_CIPHER_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_CIPHER, 0x01)
|
||||
#define VIRTIO_CRYPTO_HASH \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_HASH, 0x00)
|
||||
#define VIRTIO_CRYPTO_MAC \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_MAC, 0x00)
|
||||
#define VIRTIO_CRYPTO_AEAD_ENCRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x00)
|
||||
#define VIRTIO_CRYPTO_AEAD_DECRYPT \
|
||||
VIRTIO_CRYPTO_OPCODE(VIRTIO_CRYPTO_SERVICE_AEAD, 0x01)
|
||||
__le32 opcode;
|
||||
/* algo should be service-specific algorithms */
|
||||
__le32 algo;
|
||||
/* session_id should be service-specific algorithms */
|
||||
__le64 session_id;
|
||||
/* control flag to control the request */
|
||||
__le32 flag;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_cipher_para {
|
||||
/*
|
||||
* Byte Length of valid IV/Counter
|
||||
*
|
||||
* For block ciphers in CBC or F8 mode, or for Kasumi in F8 mode, or for
|
||||
* SNOW3G in UEA2 mode, this is the length of the IV (which
|
||||
* must be the same as the block length of the cipher).
|
||||
* For block ciphers in CTR mode, this is the length of the counter
|
||||
* (which must be the same as the block length of the cipher).
|
||||
* For AES-XTS, this is the 128bit tweak, i, from IEEE Std 1619-2007.
|
||||
*
|
||||
* The IV/Counter will be updated after every partial cryptographic
|
||||
* operation.
|
||||
*/
|
||||
__le32 iv_len;
|
||||
/* length of source data */
|
||||
__le32 src_data_len;
|
||||
/* length of dst data */
|
||||
__le32 dst_data_len;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_hash_para {
|
||||
/* length of source data */
|
||||
__le32 src_data_len;
|
||||
/* hash result length */
|
||||
__le32 hash_result_len;
|
||||
};
|
||||
|
||||
struct virtio_crypto_mac_para {
|
||||
struct virtio_crypto_hash_para hash;
|
||||
};
|
||||
|
||||
struct virtio_crypto_aead_para {
|
||||
/*
|
||||
* Byte Length of valid IV data pointed to by the below iv_addr
|
||||
* parameter.
|
||||
*
|
||||
* For GCM mode, this is either 12 (for 96-bit IVs) or 16, in which
|
||||
* case iv_addr points to J0.
|
||||
* For CCM mode, this is the length of the nonce, which can be in the
|
||||
* range 7 to 13 inclusive.
|
||||
*/
|
||||
__le32 iv_len;
|
||||
/* length of additional auth data */
|
||||
__le32 aad_len;
|
||||
/* length of source data */
|
||||
__le32 src_data_len;
|
||||
/* length of dst data */
|
||||
__le32 dst_data_len;
|
||||
};
|
||||
|
||||
struct virtio_crypto_cipher_data_req {
|
||||
/* Device-readable part */
|
||||
struct virtio_crypto_cipher_para para;
|
||||
__u8 padding[24];
|
||||
};
|
||||
|
||||
struct virtio_crypto_hash_data_req {
|
||||
/* Device-readable part */
|
||||
struct virtio_crypto_hash_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
struct virtio_crypto_mac_data_req {
|
||||
/* Device-readable part */
|
||||
struct virtio_crypto_mac_para para;
|
||||
__u8 padding[40];
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_data_para {
|
||||
__le32 iv_len;
|
||||
/* Length of source data */
|
||||
__le32 src_data_len;
|
||||
/* Length of destination data */
|
||||
__le32 dst_data_len;
|
||||
/* Starting point for cipher processing in source data */
|
||||
__le32 cipher_start_src_offset;
|
||||
/* Length of the source data that the cipher will be computed on */
|
||||
__le32 len_to_cipher;
|
||||
/* Starting point for hash processing in source data */
|
||||
__le32 hash_start_src_offset;
|
||||
/* Length of the source data that the hash will be computed on */
|
||||
__le32 len_to_hash;
|
||||
/* Length of the additional auth data */
|
||||
__le32 aad_len;
|
||||
/* Length of the hash result */
|
||||
__le32 hash_result_len;
|
||||
__le32 reserved;
|
||||
};
|
||||
|
||||
struct virtio_crypto_alg_chain_data_req {
|
||||
/* Device-readable part */
|
||||
struct virtio_crypto_alg_chain_data_para para;
|
||||
};
|
||||
|
||||
struct virtio_crypto_sym_data_req {
|
||||
union {
|
||||
struct virtio_crypto_cipher_data_req cipher;
|
||||
struct virtio_crypto_alg_chain_data_req chain;
|
||||
__u8 padding[40];
|
||||
} u;
|
||||
|
||||
/* See above VIRTIO_CRYPTO_SYM_OP_* */
|
||||
__le32 op_type;
|
||||
__le32 padding;
|
||||
};
|
||||
|
||||
struct virtio_crypto_aead_data_req {
|
||||
/* Device-readable part */
|
||||
struct virtio_crypto_aead_para para;
|
||||
__u8 padding[32];
|
||||
};
|
||||
|
||||
/* The request of the data virtqueue's packet */
|
||||
struct virtio_crypto_op_data_req {
|
||||
struct virtio_crypto_op_header header;
|
||||
|
||||
union {
|
||||
struct virtio_crypto_sym_data_req sym_req;
|
||||
struct virtio_crypto_hash_data_req hash_req;
|
||||
struct virtio_crypto_mac_data_req mac_req;
|
||||
struct virtio_crypto_aead_data_req aead_req;
|
||||
__u8 padding[48];
|
||||
} u;
|
||||
};
|
||||
|
||||
#define VIRTIO_CRYPTO_OK 0
|
||||
#define VIRTIO_CRYPTO_ERR 1
|
||||
#define VIRTIO_CRYPTO_BADMSG 2
|
||||
#define VIRTIO_CRYPTO_NOTSUPP 3
|
||||
#define VIRTIO_CRYPTO_INVSESS 4 /* Invalid session id */
|
||||
|
||||
/* The accelerator hardware is ready */
|
||||
#define VIRTIO_CRYPTO_S_HW_READY (1 << 0)
|
||||
|
||||
struct virtio_crypto_config {
|
||||
/* See VIRTIO_CRYPTO_OP_* above */
|
||||
__u32 status;
|
||||
|
||||
/*
|
||||
* Maximum number of data queue
|
||||
*/
|
||||
__u32 max_dataqueues;
|
||||
|
||||
/*
|
||||
* Specifies the services mask which the device support,
|
||||
* see VIRTIO_CRYPTO_SERVICE_* above
|
||||
*/
|
||||
__u32 crypto_services;
|
||||
|
||||
/* Detailed algorithms mask */
|
||||
__u32 cipher_algo_l;
|
||||
__u32 cipher_algo_h;
|
||||
__u32 hash_algo;
|
||||
__u32 mac_algo_l;
|
||||
__u32 mac_algo_h;
|
||||
__u32 aead_algo;
|
||||
/* Maximum length of cipher key */
|
||||
__u32 max_cipher_key_len;
|
||||
/* Maximum length of authenticated key */
|
||||
__u32 max_auth_key_len;
|
||||
__u32 reserve;
|
||||
/* Maximum size of each crypto request's content */
|
||||
__u64 max_size;
|
||||
};
|
||||
|
||||
struct virtio_crypto_inhdr {
|
||||
/* See VIRTIO_CRYPTO_* above */
|
||||
__u8 status;
|
||||
};
|
||||
#endif
|
@@ -42,5 +42,6 @@
|
||||
#define VIRTIO_ID_GPU 16 /* virtio GPU */
|
||||
#define VIRTIO_ID_INPUT 18 /* virtio input */
|
||||
#define VIRTIO_ID_VSOCK 19 /* virtio vsock transport */
|
||||
#define VIRTIO_ID_CRYPTO 20 /* virtio crypto */
|
||||
|
||||
#endif /* _LINUX_VIRTIO_IDS_H */
|
||||
|
@@ -39,8 +39,8 @@
|
||||
* - __le{16,32,64} for standard-compliant virtio devices
|
||||
*/
|
||||
|
||||
typedef __u16 __bitwise__ __virtio16;
|
||||
typedef __u32 __bitwise__ __virtio32;
|
||||
typedef __u64 __bitwise__ __virtio64;
|
||||
typedef __u16 __bitwise __virtio16;
|
||||
typedef __u32 __bitwise __virtio32;
|
||||
typedef __u64 __bitwise __virtio64;
|
||||
|
||||
#endif /* _UAPI_LINUX_VIRTIO_TYPES_H */
|
||||
|
@@ -1,6 +1,7 @@
|
||||
/*
|
||||
* Definitions for the VTPM proxy driver
|
||||
* Copyright (c) 2015, 2016, IBM Corporation
|
||||
* Copyright (C) 2016 Intel Corporation
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
@@ -18,8 +19,23 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/ioctl.h>
|
||||
|
||||
/* ioctls */
|
||||
/**
|
||||
* enum vtpm_proxy_flags - flags for the proxy TPM
|
||||
* @VTPM_PROXY_FLAG_TPM2: the proxy TPM uses TPM 2.0 protocol
|
||||
*/
|
||||
enum vtpm_proxy_flags {
|
||||
VTPM_PROXY_FLAG_TPM2 = 1,
|
||||
};
|
||||
|
||||
/**
|
||||
* struct vtpm_proxy_new_dev - parameter structure for the
|
||||
* %VTPM_PROXY_IOC_NEW_DEV ioctl
|
||||
* @flags: flags for the proxy TPM
|
||||
* @tpm_num: index of the TPM device
|
||||
* @fd: the file descriptor used by the proxy TPM
|
||||
* @major: the major number of the TPM device
|
||||
* @minor: the minor number of the TPM device
|
||||
*/
|
||||
struct vtpm_proxy_new_dev {
|
||||
__u32 flags; /* input */
|
||||
__u32 tpm_num; /* output */
|
||||
@@ -28,9 +44,6 @@ struct vtpm_proxy_new_dev {
|
||||
__u32 minor; /* output */
|
||||
};
|
||||
|
||||
/* above flags */
|
||||
#define VTPM_PROXY_FLAG_TPM2 1 /* emulator is TPM 2 */
|
||||
|
||||
#define VTPM_PROXY_IOC_NEW_DEV _IOWR(0xa1, 0x00, struct vtpm_proxy_new_dev)
|
||||
#define VTPM_PROXY_IOC_NEW_DEV _IOWR(0xa1, 0x00, struct vtpm_proxy_new_dev)
|
||||
|
||||
#endif /* _UAPI_LINUX_VTPM_PROXY_H */
|
||||
|
@@ -14,3 +14,5 @@ header-y += mlx5-abi.h
|
||||
header-y += mthca-abi.h
|
||||
header-y += nes-abi.h
|
||||
header-y += ocrdma-abi.h
|
||||
header-y += hns-abi.h
|
||||
header-y += vmw_pvrdma-abi.h
|
||||
|
@@ -75,7 +75,7 @@
|
||||
* may not be implemented; the user code must deal with this if it
|
||||
* cares, or it must abort after initialization reports the difference.
|
||||
*/
|
||||
#define HFI1_USER_SWMINOR 2
|
||||
#define HFI1_USER_SWMINOR 3
|
||||
|
||||
/*
|
||||
* We will encode the major/minor inside a single 32bit version number.
|
||||
|
54
include/uapi/rdma/hns-abi.h
Normal file
54
include/uapi/rdma/hns-abi.h
Normal file
@@ -0,0 +1,54 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Hisilicon Limited.
|
||||
*
|
||||
* This software is available to you under a choice of one of two
|
||||
* licenses. You may choose to be licensed under the terms of the GNU
|
||||
* General Public License (GPL) Version 2, available from the file
|
||||
* COPYING in the main directory of this source tree, or the
|
||||
* OpenIB.org BSD license below:
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
||||
* BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef HNS_ABI_USER_H
|
||||
#define HNS_ABI_USER_H
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
struct hns_roce_ib_create_cq {
|
||||
__u64 buf_addr;
|
||||
};
|
||||
|
||||
struct hns_roce_ib_create_qp {
|
||||
__u64 buf_addr;
|
||||
__u64 db_addr;
|
||||
__u8 log_sq_bb_count;
|
||||
__u8 log_sq_stride;
|
||||
__u8 sq_no_prefetch;
|
||||
__u8 reserved[5];
|
||||
};
|
||||
|
||||
struct hns_roce_ib_alloc_ucontext_resp {
|
||||
__u32 qp_tab_size;
|
||||
};
|
||||
#endif /* HNS_ABI_USER_H */
|
@@ -37,6 +37,7 @@
|
||||
#define IB_USER_VERBS_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <rdma/ib_verbs.h>
|
||||
|
||||
/*
|
||||
* Increment this value if any changes that break userspace ABI
|
||||
@@ -93,6 +94,7 @@ enum {
|
||||
IB_USER_VERBS_EX_CMD_QUERY_DEVICE = IB_USER_VERBS_CMD_QUERY_DEVICE,
|
||||
IB_USER_VERBS_EX_CMD_CREATE_CQ = IB_USER_VERBS_CMD_CREATE_CQ,
|
||||
IB_USER_VERBS_EX_CMD_CREATE_QP = IB_USER_VERBS_CMD_CREATE_QP,
|
||||
IB_USER_VERBS_EX_CMD_MODIFY_QP = IB_USER_VERBS_CMD_MODIFY_QP,
|
||||
IB_USER_VERBS_EX_CMD_CREATE_FLOW = IB_USER_VERBS_CMD_THRESHOLD,
|
||||
IB_USER_VERBS_EX_CMD_DESTROY_FLOW,
|
||||
IB_USER_VERBS_EX_CMD_CREATE_WQ,
|
||||
@@ -545,6 +547,14 @@ enum {
|
||||
IB_UVERBS_CREATE_QP_SUP_COMP_MASK = IB_UVERBS_CREATE_QP_MASK_IND_TABLE,
|
||||
};
|
||||
|
||||
enum {
|
||||
IB_USER_LEGACY_LAST_QP_ATTR_MASK = IB_QP_DEST_QPN
|
||||
};
|
||||
|
||||
enum {
|
||||
IB_USER_LAST_QP_ATTR_MASK = IB_QP_RATE_LIMIT
|
||||
};
|
||||
|
||||
struct ib_uverbs_ex_create_qp {
|
||||
__u64 user_handle;
|
||||
__u32 pd_handle;
|
||||
@@ -684,9 +694,20 @@ struct ib_uverbs_modify_qp {
|
||||
__u64 driver_data[0];
|
||||
};
|
||||
|
||||
struct ib_uverbs_ex_modify_qp {
|
||||
struct ib_uverbs_modify_qp base;
|
||||
__u32 rate_limit;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct ib_uverbs_modify_qp_resp {
|
||||
};
|
||||
|
||||
struct ib_uverbs_ex_modify_qp_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 response_length;
|
||||
};
|
||||
|
||||
struct ib_uverbs_destroy_qp {
|
||||
__u64 response;
|
||||
__u32 qp_handle;
|
||||
@@ -908,6 +929,23 @@ struct ib_uverbs_flow_spec_ipv6 {
|
||||
struct ib_uverbs_flow_ipv6_filter mask;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_tunnel_filter {
|
||||
__be32 tunnel_id;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_spec_tunnel {
|
||||
union {
|
||||
struct ib_uverbs_flow_spec_hdr hdr;
|
||||
struct {
|
||||
__u32 type;
|
||||
__u16 size;
|
||||
__u16 reserved;
|
||||
};
|
||||
};
|
||||
struct ib_uverbs_flow_tunnel_filter val;
|
||||
struct ib_uverbs_flow_tunnel_filter mask;
|
||||
};
|
||||
|
||||
struct ib_uverbs_flow_attr {
|
||||
__u32 type;
|
||||
__u16 size;
|
||||
|
@@ -82,6 +82,7 @@ enum mlx5_ib_alloc_ucontext_resp_mask {
|
||||
|
||||
enum mlx5_user_cmds_supp_uhw {
|
||||
MLX5_USER_CMDS_SUPP_UHW_QUERY_DEVICE = 1 << 0,
|
||||
MLX5_USER_CMDS_SUPP_UHW_CREATE_AH = 1 << 1,
|
||||
};
|
||||
|
||||
struct mlx5_ib_alloc_ucontext_resp {
|
||||
@@ -124,18 +125,47 @@ struct mlx5_ib_rss_caps {
|
||||
__u8 reserved[7];
|
||||
};
|
||||
|
||||
enum mlx5_ib_cqe_comp_res_format {
|
||||
MLX5_IB_CQE_RES_FORMAT_HASH = 1 << 0,
|
||||
MLX5_IB_CQE_RES_FORMAT_CSUM = 1 << 1,
|
||||
MLX5_IB_CQE_RES_RESERVED = 1 << 2,
|
||||
};
|
||||
|
||||
struct mlx5_ib_cqe_comp_caps {
|
||||
__u32 max_num;
|
||||
__u32 supported_format; /* enum mlx5_ib_cqe_comp_res_format */
|
||||
};
|
||||
|
||||
struct mlx5_packet_pacing_caps {
|
||||
__u32 qp_rate_limit_min;
|
||||
__u32 qp_rate_limit_max; /* In kpbs */
|
||||
|
||||
/* Corresponding bit will be set if qp type from
|
||||
* 'enum ib_qp_type' is supported, e.g.
|
||||
* supported_qpts |= 1 << IB_QPT_RAW_PACKET
|
||||
*/
|
||||
__u32 supported_qpts;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct mlx5_ib_query_device_resp {
|
||||
__u32 comp_mask;
|
||||
__u32 response_length;
|
||||
struct mlx5_ib_tso_caps tso_caps;
|
||||
struct mlx5_ib_rss_caps rss_caps;
|
||||
struct mlx5_ib_cqe_comp_caps cqe_comp_caps;
|
||||
struct mlx5_packet_pacing_caps packet_pacing_caps;
|
||||
__u32 mlx5_ib_support_multi_pkt_send_wqes;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_cq {
|
||||
__u64 buf_addr;
|
||||
__u64 db_addr;
|
||||
__u32 cqe_size;
|
||||
__u32 reserved; /* explicit padding (optional on i386) */
|
||||
__u8 cqe_comp_en;
|
||||
__u8 cqe_comp_res_format;
|
||||
__u16 reserved; /* explicit padding (optional on i386) */
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_cq_resp {
|
||||
@@ -232,6 +262,12 @@ struct mlx5_ib_create_wq {
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_ah_resp {
|
||||
__u32 response_length;
|
||||
__u8 dmac[ETH_ALEN];
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
struct mlx5_ib_create_wq_resp {
|
||||
__u32 response_length;
|
||||
__u32 reserved;
|
||||
|
@@ -110,7 +110,7 @@ struct rdma_ucm_bind {
|
||||
__u32 id;
|
||||
__u16 addr_size;
|
||||
__u16 reserved;
|
||||
struct sockaddr_storage addr;
|
||||
struct __kernel_sockaddr_storage addr;
|
||||
};
|
||||
|
||||
struct rdma_ucm_resolve_ip {
|
||||
@@ -126,8 +126,8 @@ struct rdma_ucm_resolve_addr {
|
||||
__u16 src_size;
|
||||
__u16 dst_size;
|
||||
__u32 reserved;
|
||||
struct sockaddr_storage src_addr;
|
||||
struct sockaddr_storage dst_addr;
|
||||
struct __kernel_sockaddr_storage src_addr;
|
||||
struct __kernel_sockaddr_storage dst_addr;
|
||||
};
|
||||
|
||||
struct rdma_ucm_resolve_route {
|
||||
@@ -164,8 +164,8 @@ struct rdma_ucm_query_addr_resp {
|
||||
__u16 pkey;
|
||||
__u16 src_size;
|
||||
__u16 dst_size;
|
||||
struct sockaddr_storage src_addr;
|
||||
struct sockaddr_storage dst_addr;
|
||||
struct __kernel_sockaddr_storage src_addr;
|
||||
struct __kernel_sockaddr_storage dst_addr;
|
||||
};
|
||||
|
||||
struct rdma_ucm_query_path_resp {
|
||||
@@ -257,7 +257,7 @@ struct rdma_ucm_join_mcast {
|
||||
__u32 id;
|
||||
__u16 addr_size;
|
||||
__u16 join_flags;
|
||||
struct sockaddr_storage addr;
|
||||
struct __kernel_sockaddr_storage addr;
|
||||
};
|
||||
|
||||
struct rdma_ucm_get_event {
|
||||
|
289
include/uapi/rdma/vmw_pvrdma-abi.h
Normal file
289
include/uapi/rdma/vmw_pvrdma-abi.h
Normal file
@@ -0,0 +1,289 @@
|
||||
/*
|
||||
* Copyright (c) 2012-2016 VMware, Inc. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of EITHER the GNU General Public License
|
||||
* version 2 as published by the Free Software Foundation or the BSD
|
||||
* 2-Clause License. This program is distributed in the hope that it
|
||||
* will be useful, but WITHOUT ANY WARRANTY; WITHOUT EVEN THE IMPLIED
|
||||
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
|
||||
* See the GNU General Public License version 2 for more details at
|
||||
* http://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program available in the file COPYING in the main
|
||||
* directory of this source tree.
|
||||
*
|
||||
* The BSD 2-Clause License
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or
|
||||
* without modification, are permitted provided that the following
|
||||
* conditions are met:
|
||||
*
|
||||
* - Redistributions of source code must retain the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* - Redistributions in binary form must reproduce the above
|
||||
* copyright notice, this list of conditions and the following
|
||||
* disclaimer in the documentation and/or other materials
|
||||
* provided with the distribution.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
|
||||
* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
|
||||
* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
||||
* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
|
||||
* OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#ifndef __VMW_PVRDMA_ABI_H__
|
||||
#define __VMW_PVRDMA_ABI_H__
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#define PVRDMA_UVERBS_ABI_VERSION 3 /* ABI Version. */
|
||||
#define PVRDMA_UAR_HANDLE_MASK 0x00FFFFFF /* Bottom 24 bits. */
|
||||
#define PVRDMA_UAR_QP_OFFSET 0 /* QP doorbell. */
|
||||
#define PVRDMA_UAR_QP_SEND BIT(30) /* Send bit. */
|
||||
#define PVRDMA_UAR_QP_RECV BIT(31) /* Recv bit. */
|
||||
#define PVRDMA_UAR_CQ_OFFSET 4 /* CQ doorbell. */
|
||||
#define PVRDMA_UAR_CQ_ARM_SOL BIT(29) /* Arm solicited bit. */
|
||||
#define PVRDMA_UAR_CQ_ARM BIT(30) /* Arm bit. */
|
||||
#define PVRDMA_UAR_CQ_POLL BIT(31) /* Poll bit. */
|
||||
|
||||
enum pvrdma_wr_opcode {
|
||||
PVRDMA_WR_RDMA_WRITE,
|
||||
PVRDMA_WR_RDMA_WRITE_WITH_IMM,
|
||||
PVRDMA_WR_SEND,
|
||||
PVRDMA_WR_SEND_WITH_IMM,
|
||||
PVRDMA_WR_RDMA_READ,
|
||||
PVRDMA_WR_ATOMIC_CMP_AND_SWP,
|
||||
PVRDMA_WR_ATOMIC_FETCH_AND_ADD,
|
||||
PVRDMA_WR_LSO,
|
||||
PVRDMA_WR_SEND_WITH_INV,
|
||||
PVRDMA_WR_RDMA_READ_WITH_INV,
|
||||
PVRDMA_WR_LOCAL_INV,
|
||||
PVRDMA_WR_FAST_REG_MR,
|
||||
PVRDMA_WR_MASKED_ATOMIC_CMP_AND_SWP,
|
||||
PVRDMA_WR_MASKED_ATOMIC_FETCH_AND_ADD,
|
||||
PVRDMA_WR_BIND_MW,
|
||||
PVRDMA_WR_REG_SIG_MR,
|
||||
};
|
||||
|
||||
enum pvrdma_wc_status {
|
||||
PVRDMA_WC_SUCCESS,
|
||||
PVRDMA_WC_LOC_LEN_ERR,
|
||||
PVRDMA_WC_LOC_QP_OP_ERR,
|
||||
PVRDMA_WC_LOC_EEC_OP_ERR,
|
||||
PVRDMA_WC_LOC_PROT_ERR,
|
||||
PVRDMA_WC_WR_FLUSH_ERR,
|
||||
PVRDMA_WC_MW_BIND_ERR,
|
||||
PVRDMA_WC_BAD_RESP_ERR,
|
||||
PVRDMA_WC_LOC_ACCESS_ERR,
|
||||
PVRDMA_WC_REM_INV_REQ_ERR,
|
||||
PVRDMA_WC_REM_ACCESS_ERR,
|
||||
PVRDMA_WC_REM_OP_ERR,
|
||||
PVRDMA_WC_RETRY_EXC_ERR,
|
||||
PVRDMA_WC_RNR_RETRY_EXC_ERR,
|
||||
PVRDMA_WC_LOC_RDD_VIOL_ERR,
|
||||
PVRDMA_WC_REM_INV_RD_REQ_ERR,
|
||||
PVRDMA_WC_REM_ABORT_ERR,
|
||||
PVRDMA_WC_INV_EECN_ERR,
|
||||
PVRDMA_WC_INV_EEC_STATE_ERR,
|
||||
PVRDMA_WC_FATAL_ERR,
|
||||
PVRDMA_WC_RESP_TIMEOUT_ERR,
|
||||
PVRDMA_WC_GENERAL_ERR,
|
||||
};
|
||||
|
||||
enum pvrdma_wc_opcode {
|
||||
PVRDMA_WC_SEND,
|
||||
PVRDMA_WC_RDMA_WRITE,
|
||||
PVRDMA_WC_RDMA_READ,
|
||||
PVRDMA_WC_COMP_SWAP,
|
||||
PVRDMA_WC_FETCH_ADD,
|
||||
PVRDMA_WC_BIND_MW,
|
||||
PVRDMA_WC_LSO,
|
||||
PVRDMA_WC_LOCAL_INV,
|
||||
PVRDMA_WC_FAST_REG_MR,
|
||||
PVRDMA_WC_MASKED_COMP_SWAP,
|
||||
PVRDMA_WC_MASKED_FETCH_ADD,
|
||||
PVRDMA_WC_RECV = 1 << 7,
|
||||
PVRDMA_WC_RECV_RDMA_WITH_IMM,
|
||||
};
|
||||
|
||||
enum pvrdma_wc_flags {
|
||||
PVRDMA_WC_GRH = 1 << 0,
|
||||
PVRDMA_WC_WITH_IMM = 1 << 1,
|
||||
PVRDMA_WC_WITH_INVALIDATE = 1 << 2,
|
||||
PVRDMA_WC_IP_CSUM_OK = 1 << 3,
|
||||
PVRDMA_WC_WITH_SMAC = 1 << 4,
|
||||
PVRDMA_WC_WITH_VLAN = 1 << 5,
|
||||
PVRDMA_WC_FLAGS_MAX = PVRDMA_WC_WITH_VLAN,
|
||||
};
|
||||
|
||||
struct pvrdma_alloc_ucontext_resp {
|
||||
__u32 qp_tab_size;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_alloc_pd_resp {
|
||||
__u32 pdn;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_create_cq {
|
||||
__u64 buf_addr;
|
||||
__u32 buf_size;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_create_cq_resp {
|
||||
__u32 cqn;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_resize_cq {
|
||||
__u64 buf_addr;
|
||||
__u32 buf_size;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_create_srq {
|
||||
__u64 buf_addr;
|
||||
};
|
||||
|
||||
struct pvrdma_create_srq_resp {
|
||||
__u32 srqn;
|
||||
__u32 reserved;
|
||||
};
|
||||
|
||||
struct pvrdma_create_qp {
|
||||
__u64 rbuf_addr;
|
||||
__u64 sbuf_addr;
|
||||
__u32 rbuf_size;
|
||||
__u32 sbuf_size;
|
||||
__u64 qp_addr;
|
||||
};
|
||||
|
||||
/* PVRDMA masked atomic compare and swap */
|
||||
struct pvrdma_ex_cmp_swap {
|
||||
__u64 swap_val;
|
||||
__u64 compare_val;
|
||||
__u64 swap_mask;
|
||||
__u64 compare_mask;
|
||||
};
|
||||
|
||||
/* PVRDMA masked atomic fetch and add */
|
||||
struct pvrdma_ex_fetch_add {
|
||||
__u64 add_val;
|
||||
__u64 field_boundary;
|
||||
};
|
||||
|
||||
/* PVRDMA address vector. */
|
||||
struct pvrdma_av {
|
||||
__u32 port_pd;
|
||||
__u32 sl_tclass_flowlabel;
|
||||
__u8 dgid[16];
|
||||
__u8 src_path_bits;
|
||||
__u8 gid_index;
|
||||
__u8 stat_rate;
|
||||
__u8 hop_limit;
|
||||
__u8 dmac[6];
|
||||
__u8 reserved[6];
|
||||
};
|
||||
|
||||
/* PVRDMA scatter/gather entry */
|
||||
struct pvrdma_sge {
|
||||
__u64 addr;
|
||||
__u32 length;
|
||||
__u32 lkey;
|
||||
};
|
||||
|
||||
/* PVRDMA receive queue work request */
|
||||
struct pvrdma_rq_wqe_hdr {
|
||||
__u64 wr_id; /* wr id */
|
||||
__u32 num_sge; /* size of s/g array */
|
||||
__u32 total_len; /* reserved */
|
||||
};
|
||||
/* Use pvrdma_sge (ib_sge) for receive queue s/g array elements. */
|
||||
|
||||
/* PVRDMA send queue work request */
|
||||
struct pvrdma_sq_wqe_hdr {
|
||||
__u64 wr_id; /* wr id */
|
||||
__u32 num_sge; /* size of s/g array */
|
||||
__u32 total_len; /* reserved */
|
||||
__u32 opcode; /* operation type */
|
||||
__u32 send_flags; /* wr flags */
|
||||
union {
|
||||
__u32 imm_data;
|
||||
__u32 invalidate_rkey;
|
||||
} ex;
|
||||
__u32 reserved;
|
||||
union {
|
||||
struct {
|
||||
__u64 remote_addr;
|
||||
__u32 rkey;
|
||||
__u8 reserved[4];
|
||||
} rdma;
|
||||
struct {
|
||||
__u64 remote_addr;
|
||||
__u64 compare_add;
|
||||
__u64 swap;
|
||||
__u32 rkey;
|
||||
__u32 reserved;
|
||||
} atomic;
|
||||
struct {
|
||||
__u64 remote_addr;
|
||||
__u32 log_arg_sz;
|
||||
__u32 rkey;
|
||||
union {
|
||||
struct pvrdma_ex_cmp_swap cmp_swap;
|
||||
struct pvrdma_ex_fetch_add fetch_add;
|
||||
} wr_data;
|
||||
} masked_atomics;
|
||||
struct {
|
||||
__u64 iova_start;
|
||||
__u64 pl_pdir_dma;
|
||||
__u32 page_shift;
|
||||
__u32 page_list_len;
|
||||
__u32 length;
|
||||
__u32 access_flags;
|
||||
__u32 rkey;
|
||||
} fast_reg;
|
||||
struct {
|
||||
__u32 remote_qpn;
|
||||
__u32 remote_qkey;
|
||||
struct pvrdma_av av;
|
||||
} ud;
|
||||
} wr;
|
||||
};
|
||||
/* Use pvrdma_sge (ib_sge) for send queue s/g array elements. */
|
||||
|
||||
/* Completion queue element. */
|
||||
struct pvrdma_cqe {
|
||||
__u64 wr_id;
|
||||
__u64 qp;
|
||||
__u32 opcode;
|
||||
__u32 status;
|
||||
__u32 byte_len;
|
||||
__u32 imm_data;
|
||||
__u32 src_qp;
|
||||
__u32 wc_flags;
|
||||
__u32 vendor_err;
|
||||
__u16 pkey_index;
|
||||
__u16 slid;
|
||||
__u8 sl;
|
||||
__u8 dlid_path_bits;
|
||||
__u8 port_num;
|
||||
__u8 smac[6];
|
||||
__u8 reserved2[7]; /* Pad to next power of 2 (64). */
|
||||
};
|
||||
|
||||
#endif /* __VMW_PVRDMA_ABI_H__ */
|
@@ -190,6 +190,7 @@ enum fc_fh_type {
|
||||
FC_TYPE_FCP = 0x08, /* SCSI FCP */
|
||||
FC_TYPE_CT = 0x20, /* Fibre Channel Services (FC-CT) */
|
||||
FC_TYPE_ILS = 0x22, /* internal link service */
|
||||
FC_TYPE_NVME = 0x28, /* FC-NVME */
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -203,6 +204,7 @@ enum fc_fh_type {
|
||||
[FC_TYPE_FCP] = "FCP", \
|
||||
[FC_TYPE_CT] = "CT", \
|
||||
[FC_TYPE_ILS] = "ILS", \
|
||||
[FC_TYPE_NVME] = "NVME", \
|
||||
}
|
||||
|
||||
/*
|
||||
|
@@ -33,6 +33,11 @@
|
||||
*/
|
||||
#define SND_SOC_TPLG_STREAM_CONFIG_MAX 8
|
||||
|
||||
/*
|
||||
* Maximum number of physical link's hardware configs
|
||||
*/
|
||||
#define SND_SOC_TPLG_HW_CONFIG_MAX 8
|
||||
|
||||
/* individual kcontrol info types - can be mixed with other types */
|
||||
#define SND_SOC_TPLG_CTL_VOLSW 1
|
||||
#define SND_SOC_TPLG_CTL_VOLSW_SX 2
|
||||
@@ -77,7 +82,8 @@
|
||||
#define SND_SOC_TPLG_NUM_TEXTS 16
|
||||
|
||||
/* ABI version */
|
||||
#define SND_SOC_TPLG_ABI_VERSION 0x5
|
||||
#define SND_SOC_TPLG_ABI_VERSION 0x5 /* current version */
|
||||
#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4 /* oldest version supported */
|
||||
|
||||
/* Max size of TLV data */
|
||||
#define SND_SOC_TPLG_TLV_SIZE 32
|
||||
@@ -99,8 +105,8 @@
|
||||
#define SND_SOC_TPLG_TYPE_CODEC_LINK 9
|
||||
#define SND_SOC_TPLG_TYPE_BACKEND_LINK 10
|
||||
#define SND_SOC_TPLG_TYPE_PDATA 11
|
||||
#define SND_SOC_TPLG_TYPE_BE_DAI 12
|
||||
#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_BE_DAI
|
||||
#define SND_SOC_TPLG_TYPE_DAI 12
|
||||
#define SND_SOC_TPLG_TYPE_MAX SND_SOC_TPLG_TYPE_DAI
|
||||
|
||||
/* vendor block IDs - please add new vendor types to end */
|
||||
#define SND_SOC_TPLG_TYPE_VENDOR_FW 1000
|
||||
@@ -119,11 +125,32 @@
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_WORD 4
|
||||
#define SND_SOC_TPLG_TUPLE_TYPE_SHORT 5
|
||||
|
||||
/* BE DAI flags */
|
||||
/* DAI flags */
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_RATES (1 << 0)
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
|
||||
#define SND_SOC_TPLG_DAI_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
|
||||
|
||||
/* DAI physical PCM data formats.
|
||||
* Add new formats to the end of the list.
|
||||
*/
|
||||
#define SND_SOC_DAI_FORMAT_I2S 1 /* I2S mode */
|
||||
#define SND_SOC_DAI_FORMAT_RIGHT_J 2 /* Right Justified mode */
|
||||
#define SND_SOC_DAI_FORMAT_LEFT_J 3 /* Left Justified mode */
|
||||
#define SND_SOC_DAI_FORMAT_DSP_A 4 /* L data MSB after FRM LRC */
|
||||
#define SND_SOC_DAI_FORMAT_DSP_B 5 /* L data MSB during FRM LRC */
|
||||
#define SND_SOC_DAI_FORMAT_AC97 6 /* AC97 */
|
||||
#define SND_SOC_DAI_FORMAT_PDM 7 /* Pulse density modulation */
|
||||
|
||||
/* left and right justified also known as MSB and LSB respectively */
|
||||
#define SND_SOC_DAI_FORMAT_MSB SND_SOC_DAI_FORMAT_LEFT_J
|
||||
#define SND_SOC_DAI_FORMAT_LSB SND_SOC_DAI_FORMAT_RIGHT_J
|
||||
|
||||
/* DAI link flags */
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_RATES (1 << 0)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_CHANNELS (1 << 1)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_SYMMETRIC_SAMPLEBITS (1 << 2)
|
||||
#define SND_SOC_TPLG_LNK_FLGBIT_VOICE_WAKEUP (1 << 3)
|
||||
|
||||
/*
|
||||
* Block Header.
|
||||
* This header precedes all object and object arrays below.
|
||||
@@ -267,6 +294,35 @@ struct snd_soc_tplg_stream {
|
||||
__le32 channels; /* channels */
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/*
|
||||
* Describes a physical link's runtime supported hardware config,
|
||||
* i.e. hardware audio formats.
|
||||
*/
|
||||
struct snd_soc_tplg_hw_config {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* unique ID - - used to match */
|
||||
__le32 fmt; /* SND_SOC_DAI_FORMAT_ format value */
|
||||
__u8 clock_gated; /* 1 if clock can be gated to save power */
|
||||
__u8 invert_bclk; /* 1 for inverted BCLK, 0 for normal */
|
||||
__u8 invert_fsync; /* 1 for inverted frame clock, 0 for normal */
|
||||
__u8 bclk_master; /* 1 for master of BCLK, 0 for slave */
|
||||
__u8 fsync_master; /* 1 for master of FSYNC, 0 for slave */
|
||||
__u8 mclk_direction; /* 0 for input, 1 for output */
|
||||
__le16 reserved; /* for 32bit alignment */
|
||||
__le32 mclk_rate; /* MCLK or SYSCLK freqency in Hz */
|
||||
__le32 bclk_rate; /* BCLK freqency in Hz */
|
||||
__le32 fsync_rate; /* frame clock in Hz */
|
||||
__le32 tdm_slots; /* number of TDM slots in use */
|
||||
__le32 tdm_slot_width; /* width in bits for each slot */
|
||||
__le32 tx_slots; /* bit mask for active Tx slots */
|
||||
__le32 rx_slots; /* bit mask for active Rx slots */
|
||||
__le32 tx_channels; /* number of Tx channels */
|
||||
__le32 tx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
||||
__le32 rx_channels; /* number of Rx channels */
|
||||
__le32 rx_chanmap[SND_SOC_TPLG_MAX_CHAN]; /* array of slot number */
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Manifest. List totals for each payload type. Not used in parsing, but will
|
||||
* be passed to the component driver before any other objects in order for any
|
||||
@@ -286,7 +342,7 @@ struct snd_soc_tplg_manifest {
|
||||
__le32 graph_elems; /* number of graph elements */
|
||||
__le32 pcm_elems; /* number of PCM elements */
|
||||
__le32 dai_link_elems; /* number of DAI link elements */
|
||||
__le32 be_dai_elems; /* number of BE DAI elements */
|
||||
__le32 dai_elems; /* number of physical DAI elements */
|
||||
__le32 reserved[20]; /* reserved for new ABI element types */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
@@ -434,13 +490,16 @@ struct snd_soc_tplg_pcm {
|
||||
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* for DAI link */
|
||||
__le32 num_streams; /* number of streams */
|
||||
struct snd_soc_tplg_stream_caps caps[2]; /* playback and capture for DAI */
|
||||
__le32 flag_mask; /* bitmask of flags to configure */
|
||||
__le32 flags; /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
|
||||
/*
|
||||
* Describes the BE or CC link runtime supported configs or params
|
||||
* Describes the physical link runtime supported configs or params
|
||||
*
|
||||
* File block representation for BE/CC link config :-
|
||||
* File block representation for physical link config :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
@@ -450,21 +509,30 @@ struct snd_soc_tplg_pcm {
|
||||
struct snd_soc_tplg_link_config {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
__le32 id; /* unique ID - used to match */
|
||||
char name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
|
||||
char stream_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* stream name - used to match */
|
||||
struct snd_soc_tplg_stream stream[SND_SOC_TPLG_STREAM_CONFIG_MAX]; /* supported configs playback and captrure */
|
||||
__le32 num_streams; /* number of streams */
|
||||
struct snd_soc_tplg_hw_config hw_config[SND_SOC_TPLG_HW_CONFIG_MAX]; /* hw configs */
|
||||
__le32 num_hw_configs; /* number of hw configs */
|
||||
__le32 default_hw_config_id; /* default hw config ID for init */
|
||||
__le32 flag_mask; /* bitmask of flags to configure */
|
||||
__le32 flags; /* SND_SOC_TPLG_LNK_FLGBIT_* flag value */
|
||||
struct snd_soc_tplg_private priv;
|
||||
} __attribute__((packed));
|
||||
|
||||
/*
|
||||
* Describes SW/FW specific features of BE DAI.
|
||||
* Describes SW/FW specific features of physical DAI.
|
||||
* It can be used to configure backend DAIs for DPCM.
|
||||
*
|
||||
* File block representation for BE DAI :-
|
||||
* File block representation for physical DAI :-
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_hdr | 1 |
|
||||
* +-----------------------------------+-----+
|
||||
* | struct snd_soc_tplg_be_dai | N |
|
||||
* | struct snd_soc_tplg_dai | N |
|
||||
* +-----------------------------------+-----+
|
||||
*/
|
||||
struct snd_soc_tplg_be_dai {
|
||||
struct snd_soc_tplg_dai {
|
||||
__le32 size; /* in bytes of this structure */
|
||||
char dai_name[SNDRV_CTL_ELEM_ID_NAME_MAXLEN]; /* name - used to match */
|
||||
__le32 dai_id; /* unique ID - used to match */
|
||||
|
@@ -157,6 +157,10 @@
|
||||
*
|
||||
* %SKL_TKN_STR_LIB_NAME: Specifies the library name
|
||||
*
|
||||
* %SKL_TKN_U32_PMODE: Specifies the power mode for pipe
|
||||
*
|
||||
* %SKL_TKL_U32_D0I3_CAPS: Specifies the D0i3 capability for module
|
||||
*
|
||||
* module_id and loadable flags dont have tokens as these values will be
|
||||
* read from the DSP FW manifest
|
||||
*/
|
||||
@@ -208,7 +212,9 @@ enum SKL_TKNS {
|
||||
SKL_TKN_U32_PROC_DOMAIN,
|
||||
SKL_TKN_U32_LIB_COUNT,
|
||||
SKL_TKN_STR_LIB_NAME,
|
||||
SKL_TKN_MAX = SKL_TKN_STR_LIB_NAME,
|
||||
SKL_TKN_U32_PMODE,
|
||||
SKL_TKL_U32_D0I3_CAPS,
|
||||
SKL_TKN_MAX = SKL_TKL_U32_D0I3_CAPS,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user