summaryrefslogtreecommitdiffstats
path: root/kernel/include/linux/irqchip/arm-gic.h
blob: bae69e5d693c3e60cea1a209fc06d2d33fdfb960 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
/*
 *  include/linux/irqchip/arm-gic.h
 *
 *  Copyright (C) 2002 ARM Limited, All Rights Reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */
#ifndef __LINUX_IRQCHIP_ARM_GIC_H
#define __LINUX_IRQCHIP_ARM_GIC_H

#define GIC_CPU_CTRL			0x00
#define GIC_CPU_PRIMASK			0x04
#define GIC_CPU_BINPOINT		0x08
#define GIC_CPU_INTACK			0x0c
#define GIC_CPU_EOI			0x10
#define GIC_CPU_RUNNINGPRI		0x14
#define GIC_CPU_HIGHPRI			0x18
#define GIC_CPU_ALIAS_BINPOINT		0x1c
#define GIC_CPU_ACTIVEPRIO		0xd0
#define GIC_CPU_IDENT			0xfc
#define GIC_CPU_DEACTIVATE		0x1000

#define GICC_ENABLE			0x1
#define GICC_INT_PRI_THRESHOLD		0xf0

#define GIC_CPU_CTRL_EOImodeNS		(1 << 9)

#define GICC_IAR_INT_ID_MASK		0x3ff
#define GICC_INT_SPURIOUS		1023
#define GICC_DIS_BYPASS_MASK		0x1e0

#define GIC_DIST_CTRL			0x000
#define GIC_DIST_CTR			0x004
#define GIC_DIST_IGROUP			0x080
#define GIC_DIST_ENABLE_SET		0x100
#define GIC_DIST_ENABLE_CLEAR		0x180
#define GIC_DIST_PENDING_SET		0x200
#define GIC_DIST_PENDING_CLEAR		0x280
#define GIC_DIST_ACTIVE_SET		0x300
#define GIC_DIST_ACTIVE_CLEAR		0x380
#define GIC_DIST_PRI			0x400
#define GIC_DIST_TARGET			0x800
#define GIC_DIST_CONFIG			0xc00
#define GIC_DIST_SOFTINT		0xf00
#define GIC_DIST_SGI_PENDING_CLEAR	0xf10
#define GIC_DIST_SGI_PENDING_SET	0xf20

#define GICD_ENABLE			0x1
#define GICD_DISABLE			0x0
#define GICD_INT_ACTLOW_LVLTRIG		0x0
#define GICD_INT_EN_CLR_X32		0xffffffff
#define GICD_INT_EN_SET_SGI		0x0000ffff
#define GICD_INT_EN_CLR_PPI		0xffff0000
#define GICD_INT_DEF_PRI		0xa0
#define GICD_INT_DEF_PRI_X4		((GICD_INT_DEF_PRI << 24) |\
					(GICD_INT_DEF_PRI << 16) |\
					(GICD_INT_DEF_PRI << 8) |\
					GICD_INT_DEF_PRI)

#define GICH_HCR			0x0
#define GICH_VTR			0x4
#define GICH_VMCR			0x8
#define GICH_MISR			0x10
#define GICH_EISR0 			0x20
#define GICH_EISR1 			0x24
#define GICH_ELRSR0 			0x30
#define GICH_ELRSR1 			0x34
#define GICH_APR			0xf0
#define GICH_LR0			0x100

#define GICH_HCR_EN			(1 << 0)
#define GICH_HCR_UIE			(1 << 1)

#define GICH_LR_VIRTUALID		(0x3ff << 0)
#define GICH_LR_PHYSID_CPUID_SHIFT	(10)
#define GICH_LR_PHYSID_CPUID		(0x3ff << GICH_LR_PHYSID_CPUID_SHIFT)
#define GICH_LR_STATE			(3 << 28)
#define GICH_LR_PENDING_BIT		(1 << 28)
#define GICH_LR_ACTIVE_BIT		(1 << 29)
#define GICH_LR_EOI			(1 << 19)
#define GICH_LR_HW			(1 << 31)

#define GICH_VMCR_CTRL_SHIFT		0
#define GICH_VMCR_CTRL_MASK		(0x21f << GICH_VMCR_CTRL_SHIFT)
#define GICH_VMCR_PRIMASK_SHIFT		27
#define GICH_VMCR_PRIMASK_MASK		(0x1f << GICH_VMCR_PRIMASK_SHIFT)
#define GICH_VMCR_BINPOINT_SHIFT	21
#define GICH_VMCR_BINPOINT_MASK		(0x7 << GICH_VMCR_BINPOINT_SHIFT)
#define GICH_VMCR_ALIAS_BINPOINT_SHIFT	18
#define GICH_VMCR_ALIAS_BINPOINT_MASK	(0x7 << GICH_VMCR_ALIAS_BINPOINT_SHIFT)

#define GICH_MISR_EOI			(1 << 0)
#define GICH_MISR_U			(1 << 1)

#ifndef __ASSEMBLY__

#include <linux/irqdomain.h>

struct device_node;

void gic_cascade_irq(unsigned int gic_nr, unsigned int irq);
int gic_cpu_if_down(unsigned int gic_nr);

void gic_init(unsigned int nr, int start,
	      void __iomem *dist , void __iomem *cpu);

int gicv2m_of_init(struct device_node *node, struct irq_domain *parent);

void gic_send_sgi(unsigned int cpu_id, unsigned int irq);
int gic_get_cpu_id(unsigned int cpu);
void gic_migrate_target(unsigned int new_cpu_id);
unsigned long gic_get_sgir_physaddr(void);

#endif /* __ASSEMBLY */
#endif
ighlight .ge { font-style: italic } /* Generic.Emph */ .highlight .gr { color: #aa0000 } /* Generic.Error */ .highlight .gh { color: #333333 } /* Generic.Heading */ .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ .highlight .go { color: #888888 } /* Generic.Output */ .highlight .gp { color: #555555 } /* Generic.Prompt */ .highlight .gs { font-weight: bold } /* Generic.Strong */ .highlight .gu { color: #666666 } /* Generic.Subheading */ .highlight .gt { color: #aa0000 } /* Generic.Traceback */ .highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */ .highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
# Copyright 2015-2017 Intel Corporation.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This file describes a list of testcases.  Each testcase is described as a
# dictionary in a list of dictionaries.
#
# The dictionary keys, their meanings and available values are:
#
# "Name": "phy2phy_burst",         # A human-readable string identifying the
#                                  # test.
# "Deployment": "p2p",             # One of the supported deployment scenarios.
# "Description": "Lorem ipsum..."  # Optional. A human-readable string
#                                  # describing the test.
# "Frame Modification": "vlan"     # One of the supported frame modifications:
#                                  # vlan, mpls, mac, dscp, ttl, ip_addr,
#                                  # ip_port.
# "Load": dictionary               # Optional. Configures background load
#                                  # during testcase execution.
#                                  # The tool used to generate load is
#                                  # defined  by LOADGEN configuration.
#                                  # Default setting of Dummy can be found in
#                                  # 07_loadgen.conf.
#   Description of "Load" dictionary keys, their meanings and available values:
#
#   "load": 0-100                  # percentage of cores which should be
#                                  # utilized by load generator
#                                  # e.g. load = 70%, detected cpu cores = 14 =>
#                                  # round(14*0.7)=10, i.e. 10 instances of load
#                                  # generator will be executed
#   "reserved": 0- (Default 0)     # Optional. Defines number of cores reserved
#                                  # for vsperf
#                                  # e.g. load = 80%, detected cpu cores = 14,
#                                  # reserved = 4 => round((14-4)*0.8)=8,
#                                  # i.e. 8 load gen. instances will be executed
#   "pattern" : "c"                # stress/stress-ng specific; Number of 'c',
#                                  # 'm' and 'i' defines ratio between cpu, mem
#                                  # and io workers respectively
#                                  # e.g. "ccccmmi" => ratio among workers types
#                                  # will be 3:2:1, so in case that 12 stress
#                                  # instances should be executed, then 6 cpu,
#                                  # 4 memory and 2 io workers will be executed
#   "load_memory": 0-100           # Optional. Defines percentage of the system
#                                  # memory, which should be utilized by memory
#                                  # workers (if they are part of "pattern").
#                                  # if not specified then default stress(-ng)
#                                  # value will be used
#   "options": ""                  # Optional. Additional command line options
#                                  # to be passed to the load generator.
# "vSwitch" : "OvsVanilla"         # Defines vSwitch to be used for test execution.
#                                  # It will override any VSWITCH option stated
#                                  # in configuration files or value specified
#                                  # on command line through --vswitch parameter.
# "VNF" : "QemuVirtioNet"          # Defines VNF to be used for test execution.
#                                  # It will override any VNF option stated
#                                  # in configuration files or value specified
#                                  # on command line through --vnf parameter.
# "Trafficgen" : "Dummy"           # Defines traffic generator to be used for test
#                                  # execution. It will override any VNF option
#                                  # stated in configuration files or value
#                                  # specified on command line through --trafficgen
#                                  # parameter.
# "Parameters" : {'TRAFFICGEN_PKT_SIZES' : (512,)},
#                                  # Dictionary with testcase specific configuration
#                                  # environment. Specified parameters will be modified
#                                  # before the test execution and their original values will
#                                  # be restored after TC finishes. This dictionary will
#                                  # override any values defined by TEST_PARAMS option
#                                  # stated in configuration files or values specified
#                                  # on command line through --test-params parameter.
#
# "TestSteps": []                  # Definition of detailed test steps.
#                                  # In case that this list is defined, then
#                                  # vsperf will execute defined test steps
#                                  # one by one. It can be used to configure
#                                  # vswitch, insert flows and transmit traffic.
#                                  # It is possible to refer to result of any
#                                  # previous step through #STEP[i][j] macro.
#                                  # Where i is a number of step (starts from 0)
#                                  # and j is index of result returned by step i.
# "Test Modifier": [FrameMod|Other],
# "Dependency": [Test_Case_Name |None],

#
# VPP specific macros used in TC defintions
#
VPP_P2P =   [
                ['vswitch', 'add_switch', 'int_br0'],           # STEP 0
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 1
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 2
                ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[1][0]', True],
                ['trafficgen', 'send_traffic', {}],
                ['vswitch', 'dump_connections', 'int_br0'],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[2][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[1][0]', True],
                ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
                ['vswitch', 'del_switch', 'int_br0'],
            ]
VPP_PVP =   [
                ['vswitch', 'add_switch', 'int_br0'],           # STEP 0
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 1
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 2
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 3
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 4
                ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[4][0]', '#STEP[2][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[4][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
                ['vnf', 'start'],
                ['trafficgen', 'send_traffic', {}],
                ['vnf', 'stop'],
                ['vswitch', 'dump_connections', 'int_br0'],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[4][0]', '#STEP[2][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[4][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
                ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
                ['vswitch', 'del_switch', 'int_br0'],
            ]
VPP_PVVP =   [
                ['vswitch', 'add_switch', 'int_br0'],           # STEP 0
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 1
                ['vswitch', 'add_phy_port', 'int_br0'],         # STEP 2
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 3
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 4
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 5
                ['vswitch', 'add_vport', 'int_br0'],            # STEP 6
                ['vswitch', 'add_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[4][0]', '#STEP[5][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[6][0]', '#STEP[2][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[2][0]', '#STEP[6][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[5][0]', '#STEP[4][0]', True],
                ['vswitch', 'add_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
                ['vnf1', 'start'],
                ['vnf2', 'start'],
                ['trafficgen', 'send_traffic', {}],
                ['vnf2', 'stop'],
                ['vnf1', 'stop'],
                ['vswitch', 'dump_connections', 'int_br0'],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[1][0]', '#STEP[3][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[4][0]', '#STEP[5][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[6][0]', '#STEP[2][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[2][0]', '#STEP[6][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[5][0]', '#STEP[4][0]', True],
                ['vswitch', 'del_connection', 'int_br0', '#STEP[3][0]', '#STEP[1][0]', True],
                ['vswitch', 'del_port', 'int_br0', '#STEP[1][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[2][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[3][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[4][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[5][0]'],
                ['vswitch', 'del_port', 'int_br0', '#STEP[6][0]'],
                ['vswitch', 'del_switch', 'int_br0'],
            ]

#
# Generic performance TC definitions
#
PERFORMANCE_TESTS = [
    {
        "Name": "phy2phy_tput",
        "Deployment": "p2p",
        "Description": "LTD.Throughput.RFC2544.PacketLossRatio",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
    {
        "Name": "phy2phy_forwarding",
        "Deployment": "p2p",
        "Description": "LTD.Forwarding.RFC2889.MaxForwardingRate",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2889_forwarding",
            },
        },
    },
    {
        "Name": "phy2phy_learning",
        "Deployment": "p2p",
        "Description": "LTD.AddrLearning.RFC2889.AddrLearningRate",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2889_learning",
            },
        },
    },
    {
        "Name": "phy2phy_caching",
        "Deployment": "p2p",
        "Description": "LTD.AddrCaching.RFC2889.AddrCachingCapacity",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2889_caching",
            },
        },
    },
    {
        "Name": "back2back",
        "Deployment": "p2p",
        "Description": "LTD.Throughput.RFC2544.BackToBackFrames",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
    },
    {
        "Name": "phy2phy_tput_mod_vlan",
        "Deployment": "p2p",
        "Frame Modification": "vlan",
        "Description": "LTD.Throughput.RFC2544.PacketLossRatioFrameModification",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
        {
        "Name": "phy2phy_tput_mod_vlan_cont",
        "Deployment": "p2p",
        "Frame Modification": "vlan",
        "Description": "Phy2Phy VLAN Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
    },
    {
        "Name": "phy2phy_cont",
        "Deployment": "p2p",
        "Description": "Phy2Phy Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
    },
    {
        "Name": "phy2phy_burst",
        "Deployment": "p2p",
        "Description": "Phy2Phy single burst of 1000 frames at 100% frame rate",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "burst",
                "frame_rate" : 100,
                "burst_size" : 1000,
            },
        },
    },
    {
        "Name": "pvp_cont",
        "Deployment": "pvp",
        "Description": "PVP Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
    },
    {
        "Name": "pvvp_cont",
        "Deployment": "pvvp",
        "Description": "PVVP Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
    },
    {
        "Name": "pvpv_cont",
        "Deployment": "pvpv",
        "Description": "Two VMs in parallel with Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
    },
    {
        "Name": "phy2phy_scalability",
        "Deployment": "p2p",
        "Description": "LTD.Scalability.Flows.RFC2544.0PacketLoss",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
                "multistream" : 8000,
            },
        },
    },
    {
        "Name": "phy2phy_scalability_cont",
        "Deployment": "p2p",
        "Description": "Phy2Phy Scalability Continuous Stream",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
                "multistream" : 8000,
            },
        },
    },
    {
        "Name": "pvp_tput",
        "Deployment": "pvp",
        "Description": "LTD.Throughput.RFC2544.PacketLossRatio",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
    {
        "Name": "pvp_back2back",
        "Deployment": "pvp",
        "Description": "LTD.Throughput.RFC2544.BackToBackFrames",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
    },
    {
        "Name": "pvvp_tput",
        "Collector": "cpu",
        "Deployment": "pvvp",
        "Description": "LTD.Throughput.RFC2544.PacketLossRatio",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
    {
        "Name": "pvvp_back2back",
        "Collector": "cpu",
        "Deployment": "pvvp",
        "Description": "LTD.Throughput.RFC2544.BackToBackFrames",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
    },
    {
        "Name": "phy2phy_cpu_load",
        "Deployment": "p2p",
        "Description": "LTD.CPU.RFC2544.0PacketLoss",
        "Load" : {
            "load" : 100,
            "reserved" : 4,
            "pattern" : "c",
        },
        "Parameters" : {
            "LOADGEN" : "StressNg",
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
    {
        "Name": "phy2phy_mem_load",
        "Deployment": "p2p",
        "Description": "LTD.Memory.RFC2544.0PacketLoss",
        "Load" : {
            "load" : 50,
            "pattern" : "m",
            "load_memory" : 80,
        },
        "Parameters" : {
            "LOADGEN" : "StressNg",
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
    },
    {
        "Name": "phy2phy_tput_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
        "TestSteps": VPP_P2P,
    },
    {
        "Name": "phy2phy_cont_vpp",
        "Deployment": "clean",
        "Description": "VPP: Phy2Phy Continuous Stream",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
                "frame_rate" : 100,
            },
        },
        "TestSteps": VPP_P2P,
    },
    {
        "Name": "phy2phy_back2back_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
        "TestSteps": VPP_P2P,
    },
    {
        "Name": "pvp_tput_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
        "TestSteps": VPP_PVP,
    },
    {
        "Name": "pvp_cont_vpp",
        "Deployment": "clean",
        "Description": "VPP: PVP Continuous Stream",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
            },
        },
        "TestSteps": VPP_PVP,
    },
    {
        "Name": "pvp_back2back_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
        "TestSteps": VPP_PVP,
    },
    {
        "Name": "pvvp_tput_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.PacketLossRatio",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_throughput",
            },
        },
        "TestSteps": VPP_PVVP,
    },
    {
        "Name": "pvvp_cont_vpp",
        "Deployment": "clean",
        "Description": "VPP: PVP Continuous Stream",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_continuous",
            },
        },
        "TestSteps": VPP_PVVP,
    },
    {
        "Name": "pvvp_back2back_vpp",
        "Deployment": "clean",
        "Description": "VPP: LTD.Throughput.RFC2544.BackToBackFrames",
        "vSwitch" : "VppDpdkVhost",
        "Parameters" : {
            "TRAFFIC" : {
                "traffic_type" : "rfc2544_back2back",
            },
        },
        "TestSteps": VPP_PVVP,
    },
]