Initial import of Microsemi Driver
Change-Id: I431d5f2c18e0b66a84c36273c3d9f0b84f223841
Added in BUCK files for building driver
Change-Id: I70681327f5b89f67e904c45d5974ab393652d51f
Corrected some syntax errors
Change-Id: I11150cc499c212005f80619e3900e747f1c23d96
Updated pom file to clean build
Change-Id: I6613ddc9e6802aa882e716cf04df210249870835
Added in utility functions for EA1000 Init
Change-Id: I51ffe0cf0daf9ffcea0e2479ee9982fcd1755440
Added YMS code to Microsemi Driver
Change-Id: I6f2a14e454c6909bf9e9f6025321c74c98c13c72
Updated driver to work with YMS and YCH
Change-Id: If7dbe3cd5bd1b6f902d09d6b2dc3895605d70f70
Implemented IetfSystemManager as a service and call on YMS as a service
Change-Id: If1c5e8482b1f53f578a3b0b770accd50024111cf
Moved YMS calls over in to Yang Service implementation
Change-Id: I044aad06f1ef7452bc48e88987787a683666cd72
improved unit test for IetfSystemManager
Change-Id: I48fbf831e7e5ca0e1ef3de8288e56da1b5ebb7a4
Major changes to IetfSystemManager to work in live system
Change-Id: I6e3aa118ba422151f314b9a666860d90905c9929
Added in retry mechanism for DeviceDescription to wait for YCH
Change-Id: If8e0f2c2f315ffd6db15627a11382a00217dd262
Added in implementation of MseaSaFiltering and unit tests
Change-Id: I34bf888e0e732bd4664d1fb8ef5abb679b1506fe
Updated driver with unit tests for MseaSaFiltering
Change-Id: I7ea2407a546622ff55d1ab21610c45697546d632
Modified removeFlowRules of Ea1000FlowRuleProgrammable
Change-Id: Ibb4a555f61887a8e6e42af588bb42f7b70f58efb
Added in manager for MseaUniEvc service with unit tests
Change-Id: Idc5853f46051548973f52a0659f7f88982ff960c
Implemented getFlowEntries() for EVCs from EA1000
Change-Id: Ie85dadfa7760f0b30a9bdf6ccd09cca9f097fff9
Added in translation of FlowRules in to EVC on EA1000
Change-Id: Icfb65171c3300c96b3ca4e18cbd327f0ed2190be
Added in handling of FlowRule deletion including complex ceVlanMaps
Change-Id: I7fd0bb0ef04d1b40e4b7d6a6db7f7ee662329780
Updated Service entries for new onos-yang-tools
Change-Id: I44e655202f3a45073e1e16f83737caed6e01afa8
Revert "Updated Service entries for new onos-yang-tools"
This reverts commit 642b550ef1de12ed59bad2eaa3a2da414d2e5e59.
Improved timeout mechanism for YANG model loading
Change-Id: If744ecd206372e822edf2b736c83226321a12256
Minor edits of EVC creation
Change-Id: Ib0a4763deaf6dce37625ba77f5095b39cd98272d
Added in CustomEvc and supporting classes
Change-Id: Iad60eb1bcd48d2aec55b894b2d419b51852c3b2f
Created CeVlanUtils to resolve loading problem
Change-Id: I0d63931ad2c5ad2725861ebc7dccc4d5fe7b9298
Modified startup check
Change-Id: I6e6bcfa7e615044cb08fe7ee2f8a6c8b89aabb21
Modified handlin of flow rules
Change-Id: I965a79c23298866122aeb94c6d9d584aafee3bd5
Fixed problem with ceVlanMap
Change-Id: If1458c35d0b95b5b25b6636f098292f9e91c06c6
Minor Pom edits
Change-Id: I5cefb18674aa04b1f50bd7e2306260c1c3ad3814
Commented out extension references in YANG files to avoid onos-yang-tools problems
Change-Id: I32fdb34c4f476f495fe28e75d0f410aaf14e2ec1
Corrected error in removing 0 in CeVlanMapUtils
Change-Id: I8cd1fd02788b81c2613364d5639ef6e090057f80
Changes in YMS to accomodate EA1000 driver
Change-Id: I6ae2b9bd2be49eae8d4ad2f929dfe3214c514550
diff --git a/drivers/microsemi/ea1000yang/src/main/yang/rfc-2544.yang b/drivers/microsemi/ea1000yang/src/main/yang/rfc-2544.yang
new file mode 100644
index 0000000..fb1a7c0
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/rfc-2544.yang
@@ -0,0 +1,509 @@
+module rfc-2544 {
+
+ /*** NAMESPACE / PREFIX DEFINITION ***/
+
+ namespace "http://www.microsemi.com/rfc2544";
+ prefix "rfc2544";
+
+ import svc-activation-types {
+ prefix sa;
+ }
+
+ import msea-types {
+ prefix msea;
+ revision-date 2016-02-29;
+ }
+
+ /*** META INFORMATION ***/
+
+ organization
+ "Microsemi Inc., FTD Division";
+
+ contact
+ "Web URL: http://www.microsemi.com/
+ E-mail: info@microsemi.com
+ Postal: Microsemi Corporation Corporate Headquarters
+ One Enterprise Aliso Viejo,
+ CA 92656
+ U.S.A.
+ Phone: +1 949 380 6100
+ Fax: +1 949 215-4996";
+
+ description
+ "This YANG module defines the interface for RFC 2544 Benchmarking Methodology for Network Interconnect Devices
+
+ Copyright 2015 Microsemi Inc.
+ All rights reserved.";
+
+ revision "2015-10-20" {
+ description
+ "Initial version - Sean Condon, Microsemi";
+ }
+
+ /*
+ * Typedefs
+ */
+
+
+ /*
+ * Groupings
+ */
+ grouping frame-size-group {
+
+ description "Frame sizes to use in the test";
+
+ leaf-list frame-size {
+ type sa:frame-size-type;
+ max-elements 8;
+ units "byte";
+ ordered-by user;
+ description "A range of frame sizes to use. 512 bytes will be used if nothing is specified";
+ }
+
+ reference "RFC 2544 Section 9
+ All of the described tests SHOULD be performed at a number of frame
+ sizes. Specifically, the sizes SHOULD include the maximum and minimum
+ legitimate sizes for the protocol under test on the media under test
+ and enough sizes in between to be able to get a full characterization
+ of the DUT performance. Except where noted, at least five frame
+ sizes SHOULD be tested for each test condition.";
+ }
+
+ grouping throughput-group {
+ description
+ "Configuration parameters for throughput test.";
+
+ leaf step-size {
+ type uint8 {
+ range 1..10|20|25|30|40|50|100;
+ }
+ must "current() <= ((../max-rate) - (../min-rate))" {
+ error-app-tag "msea-2544-must-1";
+ error-message "step-size must be less than or equal to the difference between min- and max-rate";
+ }
+ units "Mb/s";
+ default 10;
+ description "The throughput rate step size from 1Mb/s to 1,000Mb/s (1 Gbps)";
+ }
+
+ leaf min-rate {
+ type uint16 {
+ range 1..999;
+ }
+ must "current() < ../max-rate" {
+ error-app-tag "msea-2544-must-2";
+ error-message "min-rate must not equal or exceed max-rate";
+ }
+ units "Mb/s";
+ default 10;
+ description "The minimum throughput rate from 1Mb/s to 1,000Mb/s (1Gbps)
+ The test starts at the max-rate and reduces by step-size on each
+ iteration until it drops below min-rate. For example with
+ max-rate=10, step-size=2 and min-rate=1, tests will be
+ performed at 10,8,6,4 and 2 Mb/s";
+ }
+
+ leaf max-rate {
+ type uint16 {
+ range 2..1000;
+ }
+ units "Mb/s";
+ default 1000;
+ description "The maximum throughput rate from 1Mb/s to 1,000Mb/s (1Gbps)";
+ }
+
+ leaf trial-duration {
+ type uint32 {
+ range 1..max;
+ }
+ default 60;
+ units "s";
+ description "Trial duration";
+ reference "RFC 2544 Section 24
+ The duration of the test portion of each trial SHOULD be
+ at least 60 seconds.";
+ }
+ }
+
+ grouping afl-group {
+ description
+ "Extra configuration parameters for throughput and latency test.";
+
+ leaf accepted-frame-loss {
+ type uint32 {
+ range min..100000;
+ }
+ units "m%";
+ default 0;
+ description "The acceptable Frame Loss ratio in units of 0.001%";
+ }
+ }
+
+ grouping result-common-group {
+ description
+ "Common attributes of by-frame-size result set.";
+
+ leaf test-status {
+ type sa:test-status;
+ mandatory true;
+ description "The current status of the subset of tests";
+ }
+
+ leaf frame-size {
+ type sa:frame-size-type;
+ units "bytes";
+ description "The frame size used";
+ }
+
+ leaf elapsed-time {
+ type uint16;
+ units "s";
+ description "The number of seconds the test has been running";
+ }
+ }
+
+ /*
+ * Features
+ */
+ feature throughput {
+ description
+ "This feature indicates that the device supports throughput tests";
+ reference
+ "RFC 2544: Section 26.1";
+ }
+
+ feature latency {
+ description
+ "This feature indicates that the device supports Latency tests";
+ reference
+ "RFC 2544: Section 26.2";
+ }
+
+ feature frame-loss-rate {
+ description
+ "This feature indicates that the device supports Frame Loss Rate tests";
+ reference
+ "RFC 2544: Section 26.3";
+ }
+
+ feature back-to-back {
+ description
+ "This feature indicates that the device supports Back-to-Back (burst mode) tests";
+ reference
+ "RFC 2544: Section 26.4";
+ }
+
+ container rfc2544-test {
+ description
+ "A configured set of parameters for an RFC 2544 test";
+
+ container mep-config {
+ presence "Presence indicates that a MEP has been configured";
+
+ uses msea:mep-config-attribs-noref;
+
+ leaf remote-mep-id {
+ type msea:mep-id-type;
+ must "current()/../maintenance-association-end-point != current()" {
+ error-message "Remote MEP Id must not be the same as Local MEP Id";
+ error-app-tag "msea-svc-must-01";
+ }
+
+ //mandatory true; //Should not be mandatory in a top level container
+ description "The Id of the remote MEP";
+ }
+
+ container overwrite-pcp {
+ presence "Enables PCP Overwrite";
+ description "If present allows attributes to be
+ specified for the PCP overwrite";
+
+ uses sa:overwrite-pcp-attribs;
+
+ leaf overwrite-drop-eligible {
+ type boolean;
+ default false;
+ description
+ "The Drop Eligible flag in the MEP's TAG is replaced
+ with this value if overwrite-pcp is present.";
+ }
+ }
+ }
+
+ leaf binary-search-step-duration {
+ type uint16 {
+ range 1..10;
+ }
+ default 2;
+ units "s";
+ description
+ "The time in seconds for each step in the Throughput binary search. Range 1 to 10, default 2.";
+ reference "RFC 2544 Section 24";
+ }
+
+
+ container throughput {
+ if-feature throughput;
+ description "Configuration parameters for the Throughput part of the test";
+
+ uses throughput-group;
+ uses frame-size-group;
+ uses afl-group;
+ }
+
+ container latency {
+ if-feature latency;
+ description "Configuration parameters for the Latency part of the test";
+
+ uses throughput-group {
+ refine trial-duration {
+ default 120;
+ }
+ }
+ uses frame-size-group;
+ uses afl-group;
+ }
+
+ container frame-loss {
+ if-feature frame-loss-rate;
+ description "Configuration parameters for the Frame Loss part of the test";
+
+ uses throughput-group;
+ uses frame-size-group;
+ }
+
+ container back-to-back {
+ if-feature back-to-back;
+ description "Configuration parameters for the Back-to-Back part of the test";
+
+ leaf trial-duration {
+ type uint32 {
+ range 1..10000;
+ }
+ units "ms";
+ default 2000;
+ description "The duration of the Back-to-Back test in milliseconds";
+ }
+
+ leaf iterations {
+ type uint16 {
+ range 1..max;
+ }
+ default 50;
+ description "The number of times to run the test";
+ }
+
+ uses frame-size-group;
+ }
+ }
+
+ container rfc2544-result {
+ config false;
+
+ description "A collection of the results from the RFC 2544 tests";
+
+ container throughput {
+ if-feature throughput;
+
+ description "Results for the Throughput test";
+
+ uses sa:results-header-group;
+
+ list result-item {
+ key frame-size;
+
+ description "The list of results by frame size";
+
+ reference "RFC 2544: Section 26.1";
+
+ uses result-common-group;
+
+ leaf frame-rate {
+ type uint32;
+ units "Mb/s";
+ description "The throughput rate achieved for this packet size";
+ }
+ }
+ }
+
+ container latency {
+ if-feature latency;
+
+ description "Results for the Latency test";
+
+ uses sa:results-header-group;
+
+ list result-item {
+ key frame-size;
+
+ uses result-common-group;
+
+ leaf frame-rate {
+ type uint32;
+ units "Mb/s";
+ description "The throughput rate achieved for this frame size";
+ }
+
+ leaf frame-delay-min {
+ type uint32;
+ units "μs";
+ description "The Minimum Frame Delay measured at the throughput rate";
+ }
+
+ leaf frame-delay-max {
+ type uint32;
+ units "μs";
+ description "The Maximum Frame Delay measured at the throughput rate";
+ }
+
+ leaf frame-delay-avg {
+ type uint32;
+ units "μs";
+ description "The Average Frame Delay measured at the throughput rate";
+ }
+
+ leaf frame-delay-var-min {
+ type uint32;
+ units "μs";
+ description "The Minimum Frame Delay Variation measured at the throughput rate";
+ }
+
+ leaf frame-delay-var-max {
+ type uint32;
+ units "μs";
+ description "The Maximum Frame Delay Variation measured at the throughput rate";
+ }
+
+ leaf frame-delay-var-avg {
+ type uint32;
+ units "μs";
+ description "The Average Frame Delay Variation measured at the throughput rate";
+ }
+ }
+ }
+
+ container frame-loss {
+ if-feature frame-loss-rate;
+
+ description "Results for the Frame Loss test";
+ reference "RFC-2544 Section 26.3";
+
+ uses sa:results-header-group;
+
+ list result-item {
+ key frame-size;
+
+ description "The frame-loss result set for this frame-size";
+
+ uses result-common-group;
+
+ leaf frame-steps {
+ type uint8;
+ description "The number of steps recorded during Frame Loss test. Maximum is 8";
+ }
+
+ list frame-rate {
+ key rate;
+ description "A list of the losses at each rate step. This shows up to the 8 most recent steps";
+
+ leaf rate {
+ type uint32;
+ units "Mb/s";
+ description "The test rate used for this step";
+ }
+
+ leaf frame-loss {
+ type uint32;
+ units "m%";
+ description "The percentage frames lost for this rate step (in 0.001% units)";
+ }
+ }
+ }
+ }
+
+ container back-to-back {
+ if-feature back-to-back;
+
+ description "Results for the Back-to-Back (burst mode) test";
+
+ uses sa:results-header-group;
+
+ list result-item {
+ key frame-size;
+
+ leaf test-status {
+ type sa:test-status;
+ mandatory true;
+ description "The current status of the subset of tests";
+ }
+
+ leaf frame-size {
+ type sa:frame-size-type;
+ units "bytes";
+ description "The frame size used";
+ }
+
+ leaf burst-duration {
+ type uint16;
+ units "ms";
+ description "The duration of the burst in milliseconds";
+ }
+
+ leaf average-burst-frame-count {
+ type uint32;
+ description "An average of the count of received frames for the test for this frame size";
+ }
+ }
+
+ }
+
+ }
+
+
+
+ rpc run-rfc2544-test {
+
+ description
+ "Run the configured RFC 2544 test";
+
+ input {
+ leaf tests-enabled {
+ type bits {
+ bit throughput;
+ bit latency;
+ bit frameLoss;
+ bit backToBack;
+ }
+ default "throughput latency frameLoss backToBack";
+ description "Choose the test components to run - by default all are selected";
+ }
+
+
+ leaf send-subtest-event {
+ type boolean;
+ default true;
+ description "If true then send events for all of the state changes of tests at the 'frame size' level.
+ If false events are sent only for state changes in the top level tests e.g. throughput";
+ }
+ }
+ }
+
+ rpc stop-rfc2544-test {
+ description
+ "Stop the running RFC 2544 test";
+ }
+
+ notification rfc2544-test-updated {
+ description
+ "A rfc2544-test-updated notification is sent when the state of a test changes.";
+
+ uses sa:notification-group;
+
+ leaf frame-size {
+ type sa:frame-size-type;
+ units "bytes";
+ description "The frame size that is being tested. If not present then
+ the notification pertains to the overall test type";
+ }
+ }
+}
\ No newline at end of file