1208 lines
33 KiB
C
1208 lines
33 KiB
C
/* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
|
|
/* Copyright 2017-2019 NXP */
|
|
|
|
#ifndef __UAPI_GENL_TSN_H
|
|
#define __UAPI_GENL_TSN_H
|
|
|
|
#define TSN_GENL_NAME "TSN_GEN_CTRL"
|
|
#define TSN_GENL_VERSION 0x1
|
|
|
|
#define MAX_USER_SIZE 0
|
|
#define MAX_ATTR_SIZE 3072
|
|
#define MAX_TOTAL_MSG_SIZE (MAX_USER_SIZE + MAX_ATTR_SIZE)
|
|
#define MAX_ENTRY_SIZE 2048
|
|
#define MAX_ENTRY_NUMBER 128
|
|
#define MAX_IFNAME_COUNT 64
|
|
|
|
#define TSN_MULTICAST_GROUP_QBV "qbv"
|
|
#define TSN_MULTICAST_GROUP_QCI "qci"
|
|
|
|
/* multicast groups */
|
|
enum tsn_multicast_groups {
|
|
TSN_MCGRP_QBV,
|
|
TSN_MCGRP_QCI,
|
|
TSN_MCGRP_MAX
|
|
};
|
|
|
|
enum tsn_capability {
|
|
TSN_CAP_QBV = 0x1,
|
|
TSN_CAP_QCI = 0x2,
|
|
TSN_CAP_QBU = 0x4,
|
|
TSN_CAP_CBS = 0x8, /* Credit-based Shapter Qav */
|
|
TSN_CAP_CB = 0x10, /* 8021CB redundancy and replication */
|
|
TSN_CAP_TBS = 0x20, /* Time Based schedule */
|
|
TSN_CAP_CTH = 0x40, /* cut through */
|
|
};
|
|
|
|
/*
|
|
* Commands sent from userspace
|
|
* Not versioned. New commands should only be inserted at the enum's end
|
|
* prior to __TSN_CMD_MAX
|
|
*/
|
|
|
|
enum {
|
|
TSN_CMD_UNSPEC = 0, /* Reserved */
|
|
TSN_CMD_QBV_SET,
|
|
TSN_CMD_QBV_GET,
|
|
TSN_CMD_QBV_GET_STATUS,
|
|
TSN_CMD_CB_STREAMID_SET,
|
|
TSN_CMD_CB_STREAMID_GET,
|
|
TSN_CMD_CB_STREAMID_GET_COUNTS,
|
|
TSN_CMD_QCI_CAP_GET, /* Qci capability get length capability get */
|
|
TSN_CMD_QCI_SFI_SET,
|
|
TSN_CMD_QCI_SFI_GET,
|
|
TSN_CMD_QCI_SFI_GET_COUNTS,
|
|
TSN_CMD_QCI_SGI_SET,
|
|
TSN_CMD_QCI_SGI_GET,
|
|
TSN_CMD_QCI_SGI_GET_STATUS,
|
|
TSN_CMD_QCI_FMI_SET,
|
|
TSN_CMD_QCI_FMI_GET,
|
|
TSN_CMD_CBS_SET,
|
|
TSN_CMD_CBS_GET,
|
|
TSN_CMD_QBU_SET,
|
|
TSN_CMD_QBU_GET_STATUS,
|
|
TSN_CMD_QAV_SET_CBS,
|
|
TSN_CMD_QAV_GET_CBS,
|
|
TSN_CMD_TSD_SET,
|
|
TSN_CMD_TSD_GET,
|
|
TSN_CMD_CT_SET,
|
|
TSN_CMD_CBGEN_SET,
|
|
TSN_CMD_CBREC_SET,
|
|
TSN_CMD_CBSTAT_GET,
|
|
TSN_CMD_PCPMAP_SET_UNUSE,
|
|
TSN_CMD_DSCP_SET,
|
|
TSN_CMD_ECHO, /* user->kernel request/get-response */
|
|
TSN_CMD_REPLY, /* kernel->user event */
|
|
TSN_CMD_CAP_GET,
|
|
__TSN_CMD_MAX,
|
|
};
|
|
#define TSN_CMD_MAX (__TSN_CMD_MAX - 1)
|
|
|
|
|
|
enum {
|
|
TSN_CMD_ATTR_UNSPEC = 0,
|
|
TSN_CMD_ATTR_MESG, /* demo message */
|
|
TSN_CMD_ATTR_DATA, /* demo data */
|
|
TSN_ATTR_IFNAME,
|
|
TSN_ATTR_PORT_NUMBER,
|
|
TSN_ATTR_QBV,
|
|
TSN_ATTR_STREAM_IDENTIFY, /* stream identify */
|
|
TSN_ATTR_QCI_SP, /* psfp port capbility parameters */
|
|
TSN_ATTR_QCI_SFI, /* psfp stream filter instance */
|
|
TSN_ATTR_QCI_SGI, /* psfp stream gate instance */
|
|
TSN_ATTR_QCI_FMI, /* psfp flow meter instance */
|
|
TSN_ATTR_CBS, /* credit-based shaper */
|
|
TSN_ATTR_TSD, /* Time Specific Departure */
|
|
TSN_ATTR_QBU, /* preemption */
|
|
TSN_ATTR_CT, /* cut through */
|
|
TSN_ATTR_CBGEN, /* 802.1CB sequence generate */
|
|
TSN_ATTR_CBREC, /* 802.1CB sequence recover */
|
|
TSN_ATTR_CBSTAT, /* 802.1CB status */
|
|
TSN_ATTR_PCPMAP_UNUSE,
|
|
TSN_ATTR_DSCP,
|
|
TSN_ATTR_CAP, /* TSN capbility */
|
|
__TSN_CMD_ATTR_MAX,
|
|
};
|
|
#define TSN_CMD_ATTR_MAX (__TSN_CMD_ATTR_MAX - 1)
|
|
|
|
enum {
|
|
TSN_CAP_ATTR_UNSPEC,
|
|
TSN_CAP_ATTR_QBV,
|
|
TSN_CAP_ATTR_QCI,
|
|
TSN_CAP_ATTR_QBU,
|
|
TSN_CAP_ATTR_CBS,
|
|
TSN_CAP_ATTR_CB,
|
|
TSN_CAP_ATTR_TBS,
|
|
TSN_CAP_ATTR_CTH,
|
|
__TSN_CAP_ATTR_MAX,
|
|
TSN_CAP_ATTR_MAX = __TSN_CAP_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QBU_ATTR_UNSPEC,
|
|
TSN_QBU_ATTR_ADMIN_STATE,
|
|
TSN_QBU_ATTR_HOLD_ADVANCE,
|
|
TSN_QBU_ATTR_RELEASE_ADVANCE,
|
|
TSN_QBU_ATTR_ACTIVE,
|
|
TSN_QBU_ATTR_HOLD_REQUEST,
|
|
__TSN_QBU_ATTR_MAX,
|
|
TSN_QBU_ATTR_MAX = __TSN_QBU_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_CBS_ATTR_UNSPEC,
|
|
TSN_CBS_ATTR_TC_INDEX,
|
|
TSN_CBS_ATTR_BW,
|
|
__TSN_CBS_ATTR_MAX,
|
|
TSN_CBS_ATTR_MAX = __TSN_CBS_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_TSD_ATTR_UNSPEC,
|
|
TSN_TSD_ATTR_DISABLE,
|
|
TSN_TSD_ATTR_ENABLE,
|
|
TSN_TSD_ATTR_PERIOD,
|
|
TSN_TSD_ATTR_MAX_FRM_NUM,
|
|
TSN_TSD_ATTR_CYCLE_NUM,
|
|
TSN_TSD_ATTR_LOSS_STEPS,
|
|
TSN_TSD_ATTR_SYN_IMME,
|
|
__TSN_TSD_ATTR_MAX,
|
|
TSN_TSD_ATTR_MAX = __TSN_TSD_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_STREAMID_ATTR_UNSPEC,
|
|
TSN_STREAMID_ATTR_INDEX,
|
|
TSN_STREAMID_ATTR_ENABLE,
|
|
TSN_STREAMID_ATTR_DISABLE,
|
|
TSN_STREAMID_ATTR_STREAM_HANDLE,
|
|
TSN_STREAMID_ATTR_IFOP,
|
|
TSN_STREAMID_ATTR_OFOP,
|
|
TSN_STREAMID_ATTR_IFIP,
|
|
TSN_STREAMID_ATTR_OFIP,
|
|
TSN_STREAMID_ATTR_TYPE,
|
|
TSN_STREAMID_ATTR_NDMAC,
|
|
TSN_STREAMID_ATTR_NTAGGED,
|
|
TSN_STREAMID_ATTR_NVID,
|
|
TSN_STREAMID_ATTR_SMAC,
|
|
TSN_STREAMID_ATTR_STAGGED,
|
|
TSN_STREAMID_ATTR_SVID,
|
|
TSN_STREAMID_ATTR_COUNTERS_PSI,
|
|
TSN_STREAMID_ATTR_COUNTERS_PSO,
|
|
TSN_STREAMID_ATTR_COUNTERS_PSPPI,
|
|
TSN_STREAMID_ATTR_COUNTERS_PSPPO,
|
|
__TSN_STREAMID_ATTR_MAX,
|
|
TSN_STREAMID_ATTR_MAX = __TSN_STREAMID_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QCI_STREAM_ATTR_UNSPEC = 0,
|
|
TSN_QCI_STREAM_ATTR_MAX_SFI,
|
|
TSN_QCI_STREAM_ATTR_MAX_SGI,
|
|
TSN_QCI_STREAM_ATTR_MAX_FMI,
|
|
TSN_QCI_STREAM_ATTR_SLM,
|
|
__TSN_QCI_STREAM_ATTR_MAX,
|
|
TSN_QCI_STREAM_ATTR_MAX = __TSN_QCI_STREAM_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QCI_SFI_ATTR_UNSPEC = 0,
|
|
TSN_QCI_SFI_ATTR_INDEX,
|
|
TSN_QCI_SFI_ATTR_ENABLE,
|
|
TSN_QCI_SFI_ATTR_DISABLE,
|
|
TSN_QCI_SFI_ATTR_STREAM_HANDLE,
|
|
TSN_QCI_SFI_ATTR_PRIO_SPEC,
|
|
TSN_QCI_SFI_ATTR_GATE_ID,
|
|
TSN_QCI_SFI_ATTR_FILTER_TYPE,
|
|
TSN_QCI_SFI_ATTR_FLOW_ID,
|
|
TSN_QCI_SFI_ATTR_MAXSDU,
|
|
TSN_QCI_SFI_ATTR_COUNTERS,
|
|
TSN_QCI_SFI_ATTR_OVERSIZE_ENABLE,
|
|
TSN_QCI_SFI_ATTR_OVERSIZE,
|
|
__TSN_QCI_SFI_ATTR_MAX,
|
|
TSN_QCI_SFI_ATTR_MAX = __TSN_QCI_SFI_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QCI_SFI_ATTR_COUNTERS_UNSPEC = 0,
|
|
TSN_QCI_SFI_ATTR_MATCH,
|
|
TSN_QCI_SFI_ATTR_PASS,
|
|
TSN_QCI_SFI_ATTR_DROP,
|
|
TSN_QCI_SFI_ATTR_SDU_DROP,
|
|
TSN_QCI_SFI_ATTR_SDU_PASS,
|
|
TSN_QCI_SFI_ATTR_RED,
|
|
__TSN_QCI_SFI_ATTR_COUNT_MAX,
|
|
TSN_QCI_SFI_ATTR_COUNT_MAX = __TSN_QCI_SFI_ATTR_COUNT_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QCI_SGI_ATTR_UNSPEC = 0,
|
|
TSN_QCI_SGI_ATTR_INDEX,
|
|
TSN_QCI_SGI_ATTR_ENABLE,
|
|
TSN_QCI_SGI_ATTR_DISABLE,
|
|
TSN_QCI_SGI_ATTR_CONFCHANGE,
|
|
TSN_QCI_SGI_ATTR_IRXEN, /* Invalid rx enable*/
|
|
TSN_QCI_SGI_ATTR_IRX,
|
|
TSN_QCI_SGI_ATTR_OEXEN, /* Octet exceed enable */
|
|
TSN_QCI_SGI_ATTR_OEX,
|
|
TSN_QCI_SGI_ATTR_ADMINENTRY,
|
|
TSN_QCI_SGI_ATTR_OPERENTRY,
|
|
TSN_QCI_SGI_ATTR_CCTIME, /* config change time */
|
|
TSN_QCI_SGI_ATTR_TICKG,
|
|
TSN_QCI_SGI_ATTR_CUTIME,
|
|
TSN_QCI_SGI_ATTR_CPENDING,
|
|
TSN_QCI_SGI_ATTR_CCERROR,
|
|
__TSN_QCI_SGI_ATTR_MAX,
|
|
TSN_QCI_SGI_ATTR_MAX = __TSN_QCI_SGI_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_SGI_ATTR_CTRL_UNSPEC = 0,
|
|
TSN_SGI_ATTR_CTRL_INITSTATE,
|
|
TSN_SGI_ATTR_CTRL_LEN,
|
|
TSN_SGI_ATTR_CTRL_CYTIME,
|
|
TSN_SGI_ATTR_CTRL_CYTIMEEX,
|
|
TSN_SGI_ATTR_CTRL_BTIME,
|
|
TSN_SGI_ATTR_CTRL_INITIPV,
|
|
TSN_SGI_ATTR_CTRL_GCLENTRY,
|
|
__TSN_SGI_ATTR_CTRL_MAX,
|
|
TSN_SGI_ATTR_CTRL_MAX = __TSN_SGI_ATTR_CTRL_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_SGI_ATTR_GCL_UNSPEC = 0,
|
|
TSN_SGI_ATTR_GCL_GATESTATE,
|
|
TSN_SGI_ATTR_GCL_IPV,
|
|
TSN_SGI_ATTR_GCL_INTERVAL,
|
|
TSN_SGI_ATTR_GCL_OCTMAX,
|
|
__TSN_SGI_ATTR_GCL_MAX,
|
|
TSN_SGI_ATTR_GCL_MAX = __TSN_SGI_ATTR_GCL_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QCI_FMI_ATTR_UNSPEC = 0,
|
|
TSN_QCI_FMI_ATTR_INDEX,
|
|
TSN_QCI_FMI_ATTR_ENABLE,
|
|
TSN_QCI_FMI_ATTR_DISABLE,
|
|
TSN_QCI_FMI_ATTR_CIR,
|
|
TSN_QCI_FMI_ATTR_CBS,
|
|
TSN_QCI_FMI_ATTR_EIR,
|
|
TSN_QCI_FMI_ATTR_EBS,
|
|
TSN_QCI_FMI_ATTR_CF,
|
|
TSN_QCI_FMI_ATTR_CM,
|
|
TSN_QCI_FMI_ATTR_DROPYL,
|
|
TSN_QCI_FMI_ATTR_MAREDEN,
|
|
TSN_QCI_FMI_ATTR_MARED,
|
|
TSN_QCI_FMI_ATTR_COUNTERS,
|
|
__TSN_QCI_FMI_ATTR_MAX,
|
|
TSN_QCI_FMI_ATTR_MAX = __TSN_QCI_FMI_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QBV_ATTR_UNSPEC,
|
|
TSN_QBV_ATTR_ENABLE,
|
|
TSN_QBV_ATTR_DISABLE,
|
|
TSN_QBV_ATTR_CONFIGCHANGE,
|
|
TSN_QBV_ATTR_CONFIGCHANGETIME,
|
|
TSN_QBV_ATTR_MAXSDU,
|
|
TSN_QBV_ATTR_GRANULARITY,
|
|
TSN_QBV_ATTR_CURRENTTIME,
|
|
TSN_QBV_ATTR_CONFIGPENDING,
|
|
TSN_QBV_ATTR_CONFIGCHANGEERROR,
|
|
TSN_QBV_ATTR_ADMINENTRY,
|
|
TSN_QBV_ATTR_OPERENTRY,
|
|
TSN_QBV_ATTR_LISTMAX,
|
|
__TSN_QBV_ATTR_MAX,
|
|
TSN_QBV_ATTR_MAX = __TSN_QBV_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QBV_ATTR_CTRL_UNSPEC,
|
|
TSN_QBV_ATTR_CTRL_LISTCOUNT,
|
|
TSN_QBV_ATTR_CTRL_GATESTATE,
|
|
TSN_QBV_ATTR_CTRL_CYCLETIME,
|
|
TSN_QBV_ATTR_CTRL_CYCLETIMEEXT,
|
|
TSN_QBV_ATTR_CTRL_BASETIME,
|
|
TSN_QBV_ATTR_CTRL_LISTENTRY,
|
|
__TSN_QBV_ATTR_CTRL_MAX,
|
|
TSN_QBV_ATTR_CTRL_MAX = __TSN_QBV_ATTR_CTRL_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_QBV_ATTR_ENTRY_UNSPEC,
|
|
TSN_QBV_ATTR_ENTRY_ID,
|
|
TSN_QBV_ATTR_ENTRY_GC,
|
|
TSN_QBV_ATTR_ENTRY_TM,
|
|
__TSN_QBV_ATTR_ENTRY_MAX,
|
|
TSN_QBV_ATTR_ENTRY_MAX = __TSN_QBV_ATTR_ENTRY_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_CT_ATTR_UNSPEC,
|
|
TSN_CT_ATTR_QUEUE_STATE,
|
|
__TSN_CT_ATTR_MAX,
|
|
TSN_CT_ATTR_MAX = __TSN_CT_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_CBGEN_ATTR_UNSPEC,
|
|
TSN_CBGEN_ATTR_INDEX,
|
|
TSN_CBGEN_ATTR_PORT_MASK,
|
|
TSN_CBGEN_ATTR_SPLIT_MASK,
|
|
TSN_CBGEN_ATTR_SEQ_LEN,
|
|
TSN_CBGEN_ATTR_SEQ_NUM,
|
|
__TSN_CBGEN_ATTR_MAX,
|
|
TSN_CBGEN_ATTR_MAX = __TSN_CBGEN_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_CBREC_ATTR_UNSPEC,
|
|
TSN_CBREC_ATTR_INDEX,
|
|
TSN_CBREC_ATTR_SEQ_LEN,
|
|
TSN_CBREC_ATTR_HIS_LEN,
|
|
TSN_CBREC_ATTR_TAG_POP_EN,
|
|
__TSN_CBREC_ATTR_MAX,
|
|
TSN_CBREC_ATTR_MAX = __TSN_CBREC_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_CBSTAT_ATTR_UNSPEC,
|
|
TSN_CBSTAT_ATTR_INDEX,
|
|
TSN_CBSTAT_ATTR_GEN_REC,
|
|
TSN_CBSTAT_ATTR_ERR,
|
|
TSN_CBSTAT_ATTR_SEQ_NUM,
|
|
TSN_CBSTAT_ATTR_SEQ_LEN,
|
|
TSN_CBSTAT_ATTR_SPLIT_MASK,
|
|
TSN_CBSTAT_ATTR_PORT_MASK,
|
|
TSN_CBSTAT_ATTR_HIS_LEN,
|
|
TSN_CBSTAT_ATTR_SEQ_HIS,
|
|
__TSN_CBSTAT_ATTR_MAX,
|
|
TSN_CBSTAT_ATTR_MAX = __TSN_CBSTAT_ATTR_MAX - 1,
|
|
};
|
|
|
|
enum {
|
|
TSN_DSCP_ATTR_UNSPEC,
|
|
TSN_DSCP_ATTR_DISABLE,
|
|
TSN_DSCP_ATTR_INDEX,
|
|
TSN_DSCP_ATTR_COS,
|
|
TSN_DSCP_ATTR_DPL,
|
|
__TSN_DSCP_ATTR_MAX,
|
|
TSN_DSCP_ATTR_MAX = __TSN_DSCP_ATTR_MAX - 1,
|
|
};
|
|
|
|
#define ptptime_t __u64
|
|
|
|
#define MAX_QUEUE_CNT 8
|
|
|
|
struct tsn_preempt_status {
|
|
/* The value of admin_state shows a 8-bits vector value for showing
|
|
* the framePreemptionAdminStatus parameter and PreemptionPriority
|
|
* for the traffic class. Bit-7 is the highest priority traffic class
|
|
* and the bit-0 is the lowest priority traffic class.
|
|
* The bit is express (0) and is preemptible (1).
|
|
*/
|
|
__u8 admin_state;
|
|
/* The value of the holdAdvance parameter for the port in nanoseconds.
|
|
* There is no default value; the holdAdvance is a property of the
|
|
* underlying MAC." This parameter corresponds to the holdAdvance
|
|
* parameter in 802.1Qbu.
|
|
*/
|
|
__u32 hold_advance;
|
|
|
|
/* The value of the releaseAdvance parameter for the port in
|
|
* nanoseconds. There is no default value; the releaseAdvance is a
|
|
* property of the underlying MAC." This parameter corresponds to the
|
|
* releaseAdvance parameter in 802.1Qbu.
|
|
*/
|
|
__u32 release_advance;
|
|
|
|
/* The value is active (TRUE) when preemption is operationally active
|
|
* for the port, and idle (FALSE) otherwise. This parameter corresponds
|
|
* to the preemptionActive parameter in 802.1Qbu.
|
|
*/
|
|
__u8 preemption_active;
|
|
|
|
/* The value is hold (1) when the sequence of gate operations for
|
|
* the port has executed a Set-And-Hold-MAC operation, and release
|
|
* (2) when the sequence of gate operations has executed a
|
|
* Set-And-Release-MAC operation. The value of this object is release
|
|
* (FALSE) on system initialization. This parameter corresponds to the
|
|
* holdRequest parameter in 802.1Qbu.
|
|
*/
|
|
__u8 hold_request;
|
|
};
|
|
|
|
enum tsn_tx_mode {
|
|
TX_MODE_STRICT,
|
|
TX_MODE_CBS,
|
|
TX_MODE_ETS,
|
|
TX_MODE_VENDOR_DEFINE = 255,
|
|
};
|
|
|
|
#define QUEUE_TX_MASK ((1 << TX_MODE_STRICT) | (1 << TX_MODE_CBS) \
|
|
| (1 << TX_MODE_ETS) | (1 << TX_MODE_VENDOR_DEFINE))
|
|
|
|
struct cbs_status {
|
|
__u8 delta_bw; /* percentage, 0~100 */
|
|
__u32 idleslope;
|
|
__s32 sendslope;
|
|
__u32 maxframesize;
|
|
__u32 hicredit;
|
|
__s32 locredit;
|
|
__u32 maxninference;
|
|
};
|
|
|
|
struct tx_queue {
|
|
/* tx_queue_capbility shows the queue's capability mask.
|
|
* refer the enum tsn_tx_mode
|
|
*/
|
|
__u8 capability;
|
|
|
|
/* tx_queue_mode is current queue working mode */
|
|
__u8 mode;
|
|
|
|
/* prio is showing the queue priority */
|
|
__u8 prio;
|
|
|
|
/* mstat shows the status data of cbs or priority */
|
|
union {
|
|
struct cbs_status cbs;
|
|
};
|
|
};
|
|
|
|
struct port_status {
|
|
/* txqueue_cnt shows how many queues in this port */
|
|
__u8 queue_cnt;
|
|
|
|
/* max_rate(Mbit/s) is the port transmit rate current port is setting */
|
|
__u32 max_rate;
|
|
|
|
/* tsn_capability mask the tsn capability */
|
|
__u32 tsn_capability;
|
|
};
|
|
|
|
enum tsn_cb_streamid_type {
|
|
STREAMID_RESERVED = 0,
|
|
/* Null Stream identification */
|
|
STREAMID_NULL,
|
|
/* Source MAC and VLAN Stream identification */
|
|
STREAMID_SMAC_VLAN,
|
|
/* Active Destination MAC and VLAN stream identification */
|
|
STREAMID_DMAC_VLAN,
|
|
/* IP stream identification */
|
|
STREAMID_IP,
|
|
};
|
|
|
|
/* When instantiating an instance of the Null Stream identification function
|
|
* 8021CB(6.4) for a particular input Stream, the managed objects in the
|
|
* following subsections serve as the tsnStreamIdParameters managed object
|
|
* 8021CB claus(9.1.1.7).
|
|
*/
|
|
struct tsn_cb_null_streamid {
|
|
/* tsnCpeNullDownDestMac. Specifies the destination_address that
|
|
* identifies a packet in an Enhanced Internal Sublayer Service (EISS)
|
|
* indication primitive, to the Null Stream identification function.
|
|
*/
|
|
__u64 dmac;
|
|
|
|
/* tsnCpeNullDownTagged. It can take the following values:
|
|
* 1 tagged: A frame must have a VLAN tag to be recognized as belonging
|
|
* to the Stream.
|
|
* 2 priority: A frame must be untagged, or have a VLAN tag with a VLAN
|
|
* ID = 0 to be recognized as belonging to the Stream.
|
|
* 3 all: A frame is recognized as belonging to the Stream whether
|
|
* tagged or not.
|
|
*/
|
|
__u8 tagged;
|
|
|
|
/* tsnCpeNullDownVlan. Specifies the vlan_identifier parameter that
|
|
* identifies a packet in an EISS indication primitive to the Null
|
|
* Stream identification function. A value of 0 indicates that the vlan
|
|
* _identifier parameter is ignored on EISS indication primitives.
|
|
*/
|
|
__u16 vid;
|
|
};
|
|
|
|
struct tsn_cb_source_streamid {
|
|
__u64 smac;
|
|
__u8 tagged;
|
|
__u16 vid;
|
|
};
|
|
|
|
struct tsn_cb_dest_streamid {
|
|
__u64 down_dmac;
|
|
__u8 down_tagged;
|
|
__u16 down_vid;
|
|
__u8 down_prio;
|
|
__u64 up_dmac;
|
|
__u8 up_tagged;
|
|
__u16 up_vid;
|
|
__u8 up_prio;
|
|
};
|
|
|
|
struct tsn_cb_ip_streamid {
|
|
__u64 dmac;
|
|
__u8 tagged;
|
|
__u16 vid;
|
|
__u64 siph;
|
|
__u64 sipl;
|
|
__u64 diph;
|
|
__u64 dipl;
|
|
__u8 dscp;
|
|
__u8 npt;
|
|
__u16 sport;
|
|
__u16 dport;
|
|
};
|
|
|
|
/* 802.1CB stream identify table clause 9.1 */
|
|
struct tsn_cb_streamid {
|
|
/* The objects in a given entry of the Stream identity table are used
|
|
* to control packets whose stream_handle subparameter is equal to the
|
|
* entry tsnStreamIdHandle object.
|
|
*/
|
|
__s32 handle;
|
|
|
|
/* The list of ports on which an in-facing Stream identification
|
|
* function in the output (towards the system forwarding function)
|
|
* direction Only Active Destination MAC and VLAN Stream identification
|
|
* (or nothing) can be configured.
|
|
*/
|
|
__u32 ifac_oport;
|
|
|
|
/* The list of ports on which an out-facing Stream identification
|
|
* function in the output (towards the physical interface) direction.
|
|
* Only Active Destination MAC and VLAN Stream identification
|
|
* (or nothing) can be configured.
|
|
*/
|
|
__u32 ofac_oport;
|
|
|
|
/* The list of ports on which an in-facing Stream identification
|
|
* function in the input (coming from the system forwarding function)
|
|
* direction
|
|
*/
|
|
__u32 ifac_iport;
|
|
|
|
/* The list of ports on which an out-facing Stream identification
|
|
* function in the input (coming from the physical interface) direction
|
|
* .
|
|
*/
|
|
__u32 ofac_iport;
|
|
|
|
/* An enumerated value indicating the method used to identify packets
|
|
* belonging to the Stream.
|
|
* The Organizationally Unique Identifier (OUI) or Company Identifier
|
|
* (CID) to identify the organization defining the enumerated type
|
|
* should be: 00-80-C2
|
|
* 1: null stream identification
|
|
* 2: source mac and vlan stream identification
|
|
* 3: activ destination mac and vlan stream identification
|
|
* 4: ip stream identifaciton
|
|
*/
|
|
__u8 type;
|
|
|
|
/* tsnStreamIdParameters The number of controlling parameters for a
|
|
* Stream identification method, their types and values, are specific
|
|
* to the tsnStreamIdIdentificationType
|
|
*/
|
|
union {
|
|
struct tsn_cb_null_streamid nid;
|
|
struct tsn_cb_source_streamid sid;
|
|
struct tsn_cb_dest_streamid did;
|
|
struct tsn_cb_ip_streamid iid;
|
|
} para;
|
|
};
|
|
|
|
/* Following counters are instantiated for each port on which the Stream
|
|
* identification function (6.2) is configured. The counters are indexed by
|
|
* port number, facing (in-facing or out-facing), and stream_handle value
|
|
* (tsnStreamIdHandle, 9.1.1.1).
|
|
*/
|
|
struct tsn_cb_streamid_counters {
|
|
struct {
|
|
__u64 input;
|
|
__u64 output;
|
|
} per_stream;
|
|
|
|
struct {
|
|
__u64 input;
|
|
__u64 output;
|
|
} per_streamport[32];
|
|
};
|
|
|
|
/* 802.1Qci Stream Parameter Table, read from port */
|
|
struct tsn_qci_psfp_stream_param {
|
|
/* MaxStreamFilterInstances.
|
|
* The maximum number of Stream Filter instances supported by this
|
|
* Bridge component.
|
|
*/
|
|
__s32 max_sf_instance;
|
|
|
|
/* MaxStreamGateInstances
|
|
* The maximum number of Stream Gate instances supported by this Bridge
|
|
* component.
|
|
*/
|
|
__s32 max_sg_instance;
|
|
|
|
/* MaxFlowMeterInstances
|
|
* The maximum number of Flow Meter instances supported by this Bridge
|
|
* component.
|
|
*/
|
|
__s32 max_fm_instance;
|
|
|
|
/* SupportedListMax
|
|
* The maximum value supported by this Bridge component of the
|
|
* AdminControlListLength and OperControlListLength parameters.
|
|
*/
|
|
__s32 supported_list_max;
|
|
};
|
|
|
|
/* 802.1Qci Stream Filter Instance Table, counters part only. */
|
|
struct tsn_qci_psfp_sfi_counters {
|
|
/* The MatchingFramesCount counter counts received frames that match
|
|
* this stream filter.
|
|
*/
|
|
__u64 matching_frames_count;
|
|
|
|
/* The PassingFramesCount counter counts received frames that pass the
|
|
* gate associated with this stream filter.
|
|
*/
|
|
__u64 passing_frames_count;
|
|
|
|
/* The NotPassingFramesCount counter counts received frames that do not
|
|
* pass the gate associated with this stream filter.
|
|
*/
|
|
__u64 not_passing_frames_count;
|
|
|
|
/* The PassingSDUCount counter counts received frames that pass the SDU
|
|
* size filter specification associated with this stream filter.
|
|
*/
|
|
__u64 passing_sdu_count;
|
|
|
|
/* The NotPassingSDUCount counter counts received frames that do not
|
|
* pass the SDU size filter specification associated with this stream
|
|
* filter.
|
|
*/
|
|
__u64 not_passing_sdu_count;
|
|
|
|
/* The REDFramesCount counter counts received random early detection
|
|
* (RED) frames associated with this stream filter.
|
|
*/
|
|
__u64 red_frames_count;
|
|
};
|
|
|
|
/* 802.1Qci Stream Filter Instance Table, configuration part only. */
|
|
struct tsn_qci_psfp_sfi_conf {
|
|
|
|
/* The StreamHandleSpec parameter contains a stream identifier
|
|
* specification value. A value of -1 denotes the wild card value; zero
|
|
* or positive values denote stream identifier values.
|
|
*/
|
|
__s32 stream_handle_spec;
|
|
|
|
/* The PrioritySpec parameter contains a priority specification value.
|
|
* A value of -1 denotes the wild card value; zero or positive values
|
|
* denote priority values.
|
|
*/
|
|
__s8 priority_spec;
|
|
|
|
/* The StreamGateInstanceID parameter contains the index of an entry in
|
|
* the Stream Gate Table.
|
|
*/
|
|
__u32 stream_gate_instance_id;
|
|
|
|
/* The filter specifications. The actions specified in a filter
|
|
* specification can result in a frame passing or failing the specified
|
|
* filter. Frames that fail a filter are discarded.
|
|
*/
|
|
struct {
|
|
/* The MaximumSDUSize parameter specifies the maximum allowed
|
|
* frame size for the stream. Any frame exceeding this value
|
|
* will be dropped. A value of 0 denote that the MaximumSDUSize
|
|
* filter is disabled for this stream.
|
|
*/
|
|
__u16 maximum_sdu_size;
|
|
|
|
/* The FlowMeterInstanceID parameter contains the index of an
|
|
* entry in the Flow Meter Table. A value of -1 denotes that
|
|
* no flow meter is assigned; zero or positive values denote
|
|
* flow meter IDs.
|
|
*/
|
|
__s32 flow_meter_instance_id;
|
|
} stream_filter;
|
|
|
|
/* The StreamBlockedDueToOversizeFrameEnable object contains a Boolean
|
|
* value that indicates whether the StreamBlockedDueToOversizeFrame
|
|
* function is enabled (TRUE) or disabled (FALSE).
|
|
*/
|
|
__u8 block_oversize_enable;
|
|
|
|
/* The StreamBlockedDueToOversizeFrame object contains a Boolean value
|
|
* that indicates whether, if the StreamBlockedDueToOversizeFrame
|
|
* function is enabled, all frames are to be discarded (TRUE) or not
|
|
* (FALSE).
|
|
*/
|
|
__u8 block_oversize;
|
|
};
|
|
|
|
/* 802.1Qci Stream Gate Control List Entry. */
|
|
struct tsn_qci_psfp_gcl {
|
|
/* The GateState parameter specifies a desired state, open (true) or
|
|
* closed (false), for the stream gate.
|
|
*/
|
|
__u8 gate_state;
|
|
|
|
/* An IPV is encoded as a signed integer. A negative denotes the null
|
|
* value; zero or positive values denote internal priority values.
|
|
*/
|
|
__s8 ipv;
|
|
|
|
/* A TimeInterval is encoded in 4 octets as a 32-bit unsigned integer,
|
|
* representing a number of nanoseconds.
|
|
*/
|
|
__u32 time_interval;
|
|
|
|
/* The maximum number of octets that are permitted to pass the gate
|
|
* during the specified TimeInterval. If zero, there is no maximum.
|
|
*/
|
|
__u32 octet_max;
|
|
|
|
};
|
|
|
|
/* 802.1Qci Stream Gate Admin/Operation common list control parameters */
|
|
struct tsn_qci_sg_control {
|
|
/* The administrative/operation value of the GateStates parameter
|
|
* for the stream gate. A value of false indicates closed;
|
|
* a value of true indicates open.
|
|
*/
|
|
__u8 gate_states;
|
|
|
|
/* The administrative/operation value of the ListMax parameter for the
|
|
* gate. The integer value indicates the number of entries (TLVs) in
|
|
* the AdminControlList/OperControlList.
|
|
*/
|
|
__u8 control_list_length;
|
|
|
|
/* The administrative/operation value of the CycleTime parameter for
|
|
* the gate. The value is an unsigned integer number of nanoseconds.
|
|
*/
|
|
__u32 cycle_time;
|
|
|
|
/* The administrative/operation value of the CycleTimeExtension
|
|
* parameter for the gate. The value is an unsigned integer number
|
|
* of nanoseconds.
|
|
*/
|
|
__u32 cycle_time_extension;
|
|
|
|
/* The administrative/operation value of the BaseTime parameter for the
|
|
* gate. The value is a representation of a PTPtime value, consisting
|
|
* of a 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds.
|
|
*/
|
|
ptptime_t base_time;
|
|
|
|
/* The administrative/operation value of the IPV parameter for the gate.
|
|
* A value of -1 denotes the null value; zero or positive values denote
|
|
* internal priority values.
|
|
*/
|
|
__s8 init_ipv;
|
|
|
|
/* control_list contend the gate control list of
|
|
* administrative/operation
|
|
*/
|
|
struct tsn_qci_psfp_gcl *gcl;
|
|
};
|
|
|
|
/* 802.1Qci Stream Gate Instance Table, configuration part only. */
|
|
struct tsn_qci_psfp_sgi_conf {
|
|
/* The GateEnabled parameter determines whether the stream gate is
|
|
* active (true) or inactive (false).
|
|
*/
|
|
__u8 gate_enabled;
|
|
|
|
/* The ConfigChange parameter signals the start of a configuration
|
|
* change when it is set to TRUE. This should only be done when the
|
|
* various administrative parameters are all set to appropriate values.
|
|
*/
|
|
__u8 config_change;
|
|
|
|
/* admin control parameters with admin control list */
|
|
struct tsn_qci_sg_control admin;
|
|
|
|
/* The GateClosedDueToInvalidRxEnable object contains a Boolean value
|
|
* that indicates whether the GateClosedDueToInvalidRx function is
|
|
* enabled (TRUE) or disabled (FALSE).
|
|
*/
|
|
__u8 block_invalid_rx_enable;
|
|
|
|
/* The GateClosedDueToInvalidRx object contains a Boolean value that
|
|
* indicates whether, if the GateClosedDueToInvalidRx function is
|
|
* enabled, all frames are to be discarded (TRUE) or not (FALSE).
|
|
*/
|
|
__u8 block_invalid_rx;
|
|
|
|
/* The GateClosedDueToOctetsExceededEnable object contains a Boolean
|
|
* value that indicates whether the GateClosedDueToOctetsExceeded
|
|
* function is enabled (TRUE) or disabled (FALSE).
|
|
*/
|
|
__u8 block_octets_exceeded_enable;
|
|
|
|
/* The GateClosedDueToOctetsExceeded object contains a Boolean value
|
|
* that indicates whether, if the GateClosedDueToOctetsExceeded
|
|
* function is enabled, all frames are to be discarded (TRUE) or not
|
|
* (FALSE).
|
|
*/
|
|
__u8 block_octets_exceeded;
|
|
};
|
|
|
|
/* 802.1Qci Stream Gate Instance Table, status part only. */
|
|
struct tsn_psfp_sgi_status {
|
|
|
|
/* admin control parameters with admin control list */
|
|
struct tsn_qci_sg_control oper;
|
|
|
|
/* The PTPtime at which the next config change is scheduled to occur.
|
|
* The value is a representation of a PTPtime value, consisting of a
|
|
* 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds.
|
|
*/
|
|
ptptime_t config_change_time;
|
|
|
|
/* The granularity of the cycle time clock, represented as an unsigned
|
|
* number of tenths of nanoseconds.
|
|
*/
|
|
__u32 tick_granularity;
|
|
|
|
/* The current time, in PTPtime, as maintained by the local system.
|
|
* The value is a representation of a PTPtime value, consisting of a
|
|
* 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds.
|
|
*/
|
|
ptptime_t current_time;
|
|
|
|
/* The value of the ConfigPending state machine variable. The value is
|
|
* TRUE if a configuration change is in progress but has not yet
|
|
* completed.
|
|
*/
|
|
__u8 config_pending;
|
|
|
|
/* A counter of the number of times that a re-configuration of the
|
|
* traffic schedule has been requested with the old schedule still
|
|
* running and the requested base time was in the past.
|
|
*/
|
|
__u64 config_change_error;
|
|
|
|
};
|
|
|
|
/* 802.1Qci Flow Meter Instance Table. */
|
|
struct tsn_qci_psfp_fmi {
|
|
/* The FlowMeterCIR parameter contains an integer value that represents
|
|
* the CIR value for the flow meter, in kbit/s.
|
|
*/
|
|
__u32 cir;
|
|
|
|
/* The FlowMeterCBS parameter contains an integer value that represents
|
|
* the CBS value for the flow meter, in octets.
|
|
*/
|
|
__u32 cbs;
|
|
|
|
/* The FlowMeterEIR parameter contains an integer value that represents
|
|
* the EIR value for the flow meter, in kbit/s.
|
|
*/
|
|
__u32 eir;
|
|
|
|
/* The FlowMeterEBS parameter contains an integer value that represents
|
|
* the EBS value for the flow meter, in octets.
|
|
*/
|
|
__u32 ebs;
|
|
|
|
/* The FlowMeterCF parameter contains a Boolean value that represents
|
|
* the CF value for the flow meter, as a Boolean value indicating no
|
|
* coupling (FALSE) or coupling (TRUE).
|
|
*/
|
|
__u8 cf;
|
|
|
|
/* The FlowMeterCM parameter contains a Boolean value that represents
|
|
* the CM value for the flow meter, as a Boolean value indicating
|
|
* colorBlind (FALSE) or colorAware (TRUE).
|
|
*/
|
|
__u8 cm;
|
|
|
|
/* The FlowMeterDropOnYellow parameter contains a Boolean value that
|
|
* indicates whether yellow frames are dropped (TRUE) or have
|
|
* drop_eligible set to TRUE (FALSE).
|
|
*/
|
|
__u8 drop_on_yellow;
|
|
|
|
/* The FlowMeterMarkAllFramesRedEnable parameter contains a Boolean
|
|
* value that indicates whether the MarkAllFramesRed function
|
|
* is enabled (TRUE) or disabled (FALSE).
|
|
*/
|
|
__u8 mark_red_enable;
|
|
|
|
/* The FlowMeterMarkAllFramesRed parameter contains a Boolean value
|
|
* that indicates whether, if the MarkAllFramesRed function is enabled,
|
|
* all frames are to be discarded (TRUE) or not (FALSE).
|
|
*/
|
|
__u8 mark_red;
|
|
};
|
|
|
|
struct tsn_qci_psfp_fmi_counters {
|
|
__u64 bytecount;
|
|
__u64 drop;
|
|
__u64 dr0_green;
|
|
__u64 dr1_green;
|
|
__u64 dr2_yellow;
|
|
__u64 remark_yellow;
|
|
__u64 dr3_red;
|
|
__u64 remark_red;
|
|
};
|
|
|
|
/* 802.1cb */
|
|
struct tsn_seq_gen_conf {
|
|
|
|
/* The InputPortMask parameter contains a port mask.
|
|
* If the packet is from input port belonging to this
|
|
* port mask then it's on known stream and sequence
|
|
* generation parameters can be applied.
|
|
*/
|
|
__u8 iport_mask;
|
|
|
|
/* The SplitMask parameter contains a output port mask
|
|
* used to add redundant paths.
|
|
*/
|
|
__u8 split_mask;
|
|
|
|
/* The SequenceSpaceLenLog parameter is a value to specifies
|
|
* number of bits to be used for sequence number.
|
|
*/
|
|
__u8 seq_len;
|
|
|
|
/* The SequenceNumber parameter is a value to used for
|
|
* outgoing packet's sequence number generation.
|
|
*/
|
|
__u32 seq_num;
|
|
};
|
|
|
|
struct tsn_seq_rec_conf {
|
|
|
|
/* The SequenceSpaceLenLog parameter is a value to specifies
|
|
* number of bits to be used for sequence number.
|
|
*/
|
|
__u8 seq_len;
|
|
|
|
/* The HistorySpaceLenLog parameter is a value to specifies
|
|
* number of bits to be used for history register.
|
|
*/
|
|
__u8 his_len;
|
|
|
|
/* The RTagPopEnable parameter contains a __u8 to enable removal
|
|
* of redundancy tag from the packet.
|
|
*/
|
|
__u8 rtag_pop_en;
|
|
};
|
|
|
|
struct tsn_cb_status {
|
|
|
|
/* The GenRecover parameter contains a value specifies type
|
|
* of stream sequence parameters:
|
|
* 0: Stream sequence parameters are for generation.
|
|
* 1: Stream sequence parameters are for recovery.
|
|
*/
|
|
__u8 gen_rec;
|
|
|
|
/* The ErrStatus parameter indicates stream's error status
|
|
* 1: This switch is expected to sequence the stream,
|
|
* but the incoming packet has sequence number.
|
|
* 2: This switch is expected to recover the stream,
|
|
* but the incoming packet is NONSEQ.
|
|
*/
|
|
__u8 err;
|
|
|
|
/* The SequenceNumber parameter is a value to used for
|
|
* outgoing packet's sequence number generation.
|
|
*/
|
|
__u32 seq_num;
|
|
|
|
/* The SequenceSpaceLenLog parameter is a value to specifies
|
|
* number of bits to be used for sequence number.
|
|
*/
|
|
__u8 seq_len;
|
|
|
|
/* The SplitMask parameter contains a output port mask
|
|
* used to add redundant paths.
|
|
*/
|
|
__u8 split_mask;
|
|
|
|
/* The InputPortMask parameter contains a port mask.
|
|
* If the packet is from input port belonging to this
|
|
* port mask then it's on known stream and sequence
|
|
* generation parameters can be applied.
|
|
*/
|
|
__u8 iport_mask;
|
|
|
|
/* The HistorySpaceLenLog parameter is a value to specifies
|
|
* number of bits to be used for history register.
|
|
*/
|
|
__u8 his_len;
|
|
|
|
/* The SequenceHistory parameter Maintains history of sequence
|
|
* numbers of received packets.
|
|
*/
|
|
__u32 seq_his;
|
|
};
|
|
|
|
/* An entry for gate control list */
|
|
struct tsn_qbv_entry {
|
|
/* Octet represent the gate states for the corresponding traffic
|
|
* classes.
|
|
* The MS bit corresponds to traffic class 7.
|
|
* The LS bit to traffic class 0.
|
|
* A bit value of 0 indicates closed;
|
|
* A bit value of 1 indicates open.
|
|
*/
|
|
__u8 gate_state;
|
|
|
|
/* A TimeInterval is encoded in 4 octets as a 32-bit unsigned integer,
|
|
* representing a number of nanoseconds.
|
|
*/
|
|
__u32 time_interval;
|
|
};
|
|
|
|
/* The administrative/operation time and gate list */
|
|
struct tsn_qbv_basic {
|
|
/* The administrative/operation value of the GateStates parameter for
|
|
* the Port.
|
|
* The bits of the octet represent the gate states for the
|
|
* corresponding traffic classes; the MS bit corresponds to traffic
|
|
* class 7, the LS bit to traffic class 0. A bit value of 0 indicates
|
|
* closed; a bit value of 1 indicates open.
|
|
* The value of this object MUST be retained
|
|
* across reinitializations of the management system.
|
|
*/
|
|
__u8 gate_states;
|
|
|
|
/* The administrative/operation value of the ListMax parameter for the
|
|
* port. The integer value indicates the number of entries (TLVs) in
|
|
* the AdminControlList. The value of this object MUST be retained
|
|
* across reinitializations of the management system.
|
|
*/
|
|
__u32 control_list_length;
|
|
|
|
/* The administrative/operation value of the AdminCycleTime
|
|
* parameter for the Port. The numerator and denominator together
|
|
* represent the cycle time as a rational number of seconds. The value
|
|
* of this object MUST be retained across reinitializations of the
|
|
* management system.
|
|
*/
|
|
__u32 cycle_time;
|
|
|
|
/* The administrative/operation value of the CycleTimeExtension
|
|
* parameter for the Port. The value is an unsigned integer number of
|
|
* nanoseconds.
|
|
* The value of this object MUST be retained across reinitializations
|
|
* of the management system.
|
|
*/
|
|
|
|
__u32 cycle_time_extension;
|
|
|
|
/* The administrative/operation value of the BaseTime parameter for the
|
|
* Port. The value is a representation of a PTPtime value, consisting
|
|
* of a 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds.
|
|
* The value of this object MUST be retained across reinitializations of
|
|
* the management system.
|
|
*/
|
|
ptptime_t base_time;
|
|
|
|
/* admin_control_list represent the AdminControlList/OperControlList.
|
|
* The administrative version of the gate control list for the Port.
|
|
*/
|
|
struct tsn_qbv_entry *control_list;
|
|
};
|
|
|
|
struct tsn_qbv_conf {
|
|
/* The GateEnabled parameter determines whether traffic scheduling is
|
|
* active (true) or inactive (false). The value of this object MUST be
|
|
* retained across reinitializations of the management system.
|
|
*/
|
|
__u8 gate_enabled;
|
|
|
|
/* The maxsdu parameter denoting the maximum SDU size supported by the
|
|
* queue.
|
|
*/
|
|
__u32 maxsdu;
|
|
|
|
/* The ConfigChange parameter signals the start of a configuration
|
|
* change when it is set to TRUE. This should only be done when the
|
|
* various administrative parameters are all set to appropriate values.
|
|
*/
|
|
__u8 config_change;
|
|
|
|
/* The admin parameter signals the admin relate cycletime, basictime,
|
|
* gatelist paraters.
|
|
*/
|
|
struct tsn_qbv_basic admin;
|
|
};
|
|
|
|
/* 802.1Qbv (Time Aware Shaper) port status */
|
|
struct tsn_qbv_status {
|
|
/* The PTPtime at which the next config change is scheduled to occur.
|
|
* The value is a representation of a PTPtime value, consisting of a
|
|
* 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds. The value of this object MUST be retained across
|
|
* reinitializations of the management system.
|
|
*/
|
|
ptptime_t config_change_time;
|
|
|
|
/* The granularity of the cycle time clock, represented as an unsigned
|
|
* number of tenths of nanoseconds. The value of this object MUST be
|
|
* retained across reinitializations of the management system.
|
|
*/
|
|
__u32 tick_granularity;
|
|
|
|
/* The current time, in PTPtime, as maintained by the local system.
|
|
* The value is a representation of a PTPtime value, consisting of a
|
|
* 48-bit integer number of seconds and a 32-bit integer number of
|
|
* nanoseconds.
|
|
*/
|
|
ptptime_t current_time;
|
|
|
|
/* The value of the ConfigPending state machine variable. The value is
|
|
* TRUE if a configuration change is in progress but has not yet
|
|
* completed.
|
|
*/
|
|
__u8 config_pending;
|
|
|
|
/* A counter of the number of times that a re-configuration of the
|
|
* traffic schedule has been requested with the old schedule still
|
|
* running and the requested base time was in the past.
|
|
*/
|
|
__u64 config_change_error;
|
|
|
|
/* The maximum value supported by this Port of the
|
|
* AdminControlListLength and OperControlListLength parameters.
|
|
*/
|
|
__u32 supported_list_max;
|
|
|
|
/* Operation settings parameters and Oper gate list */
|
|
struct tsn_qbv_basic oper;
|
|
};
|
|
|
|
/* Time Specific Departure parameters */
|
|
struct tsn_tsd {
|
|
__u8 enable;
|
|
|
|
/* The cycle time, in units of microsecond(us)*/
|
|
__u32 period;
|
|
|
|
/* The maximum number of frames which could be transmitted on one cycle
|
|
* The exceeding frames will be transmitted on next cycle.
|
|
*/
|
|
__u32 maxFrameNum;
|
|
|
|
/* Specify the time of the first cycle begins.
|
|
* 1: begin when the queue get the first frame to transmit.
|
|
* 2: begin immediately at the end of setting function.
|
|
*/
|
|
__u32 syn_flag;
|
|
};
|
|
|
|
struct tsn_tsd_status {
|
|
__u8 enable;
|
|
__u32 period;
|
|
__u32 maxFrameNum;
|
|
__u32 flag;
|
|
__u32 cycleNum;
|
|
__u32 loss_steps;
|
|
};
|
|
|
|
struct tsn_qos_switch_dscp_conf {
|
|
__u8 trust;
|
|
__u8 cos;
|
|
__u8 dpl;
|
|
__u8 remark;
|
|
__u8 dscp; /* New ingress translated DSCP value */
|
|
};
|
|
|
|
#endif /* _UAPI_GENL_TSN_H */
|