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/y-1564.yang b/drivers/microsemi/ea1000yang/src/main/yang/y-1564.yang
new file mode 100644
index 0000000..9f40ba8
--- /dev/null
+++ b/drivers/microsemi/ea1000yang/src/main/yang/y-1564.yang
@@ -0,0 +1,667 @@
+module y-1564 {
+
+ /*** NAMESPACE / PREFIX DEFINITION ***/
+
+ namespace "http://www.microsemi.com/y1564";
+ prefix "y1564";
+
+ 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 Rec. ITU-T Y.1564
+ (03/2011) Ethernet service activation test methodology
+
+ Copyright 2015 Microsemi Inc.
+ All rights reserved.";
+
+ revision "2015-10-29" {
+ description
+ "Initial version - Sean Condon, Microsemi
+ This version does not cover frame reordering (Section 7.2.5)";
+ reference "Initial implementation";
+ }
+
+ /*
+ * Typedefs
+ */
+
+ /*
+ * Groupings
+ */
+ grouping service-attributes-group {
+ description
+ "Attributes for service definition";
+ leaf service-id {
+ type uint8 {
+ range 1..8;
+ }
+ mandatory true;
+ description "The unique ID of the Service";
+ }
+ }
+ grouping result-attributes-group {
+ description "Common attributes in result";
+
+ leaf status {
+ type sa:test-status;
+ mandatory true;
+ description "Status of the test - Values are disabled,
+ running, pending, stopped, completed or failed";
+ }
+
+ }
+
+
+ grouping pass-fail-group {
+ leaf passed {
+ type boolean;
+ description
+ "Flag that indicates whether the test component
+ sucessfully met the test criteria.";
+ }
+
+ leaf fail-reason {
+ type enumeration {
+ enum notFailed {
+ value 0;
+ description "Test did not fail";
+ }
+ enum zeroTxCount {
+ value 1;
+ description "The test resulted in no transmitted packets";
+ }
+ enum zeroRxCount {
+ value 2;
+ description "No packets were received";
+ }
+ enum exceedFdvThreshold {
+ value 3;
+ description "The measured maximum Frame Delay Variation value exceeded the allowable threshold";
+ }
+ enum exceedFtdThreshold {
+ value 4;
+ description "The measured maximum Frame Transfer Delay value exceeded the allowable threshold";
+ }
+ enum exceedLossThreshold {
+ value 5;
+ description "The measured Frame Loss value exceeded the allowable threshold";
+ }
+ enum exceedAvailThreshold {
+ value 6;
+ description "The measured maximum Availability value exceeded the allowable threshold";
+ }
+ enum irAvgTooHigh {
+ value 7;
+ description "The measured Information Rate is above the maximum allowable rate";
+ }
+ enum irAvgTooLow {
+ value 8;
+ description "The measured Information Rate is below the maximum allowable rate";
+ }
+ enum targetUnknown {
+ value 9;
+ description "The MAC address of the target MEP was not known";
+ }
+ }
+ }
+ }
+
+ grouping y1564-test-result-group {
+ description "Common attributes in test result";
+ leaf tf {
+ type uint64;
+ description
+ "Count of the frames transmitted during the test period.";
+ }
+
+ leaf rf {
+ type uint64;
+ description
+ "Count of the frames received during the test period.";
+ }
+
+ leaf fl {
+ type uint64;
+ description
+ "Count of the frames lost during the test period.";
+ }
+
+ leaf flr {
+ type uint32;
+ units "m%";
+ description "The Frame Loss Ratio achieved. Units are 0.001%";
+ }
+
+ leaf elapsed {
+ type uint16;
+ units "s";
+ description
+ "The number of number of seconds the test has been running";
+ }
+
+ leaf fs {
+ type uint16;
+ units byte;
+ description "The Frame Size for which these results apply";
+ }
+
+ leaf ulr-min {
+ type uint32;
+ units "bit/s";
+ description "The minimum Utilised Line Rate achieved";
+ }
+
+ leaf ulr-max {
+ type uint32;
+ units "bit/s";
+ description "The maximum Utilised Line Rate achieved";
+ }
+
+ leaf ulr-avg {
+ type uint32;
+ units "bit/s";
+ description "The average Utilised Line Rate achieved";
+ }
+
+ leaf ulr-meas {
+ type uint32;
+ units "bit/s";
+ description
+ "The instantaneous Utilised Line Rate measured
+ at the time of this result set";
+ }
+
+ leaf ftd-min {
+ type uint32;
+ units "μs";
+ description "The minimum Frame Transfer Delay achieved";
+ }
+
+ leaf ftd-max {
+ type uint32;
+ units "μs";
+ description "The maximum Frame Transfer Delay achieved";
+ }
+
+ leaf ftd-avg {
+ type uint32;
+ units "μs";
+ description "The average Frame Transfer Delay achieved";
+ }
+
+ leaf ftd-meas {
+ type uint32;
+ units "μs";
+ description
+ "The instantaneous Frame Transfer Delay
+ measured at the time of this result set";
+ }
+
+ leaf fdv-min {
+ type uint32;
+ units "μs";
+ description "The minimum Frame Delay Variation achieved";
+ }
+
+ leaf fdv-max {
+ type uint32;
+ units "μs";
+ description "The maximum Frame Delay Variation achieved";
+ }
+
+ leaf fdv-avg {
+ type uint32;
+ units "μs";
+ description "The average Frame Delay Variation achieved";
+ }
+
+ leaf fdv-meas {
+ type uint32;
+ units "μs";
+ description
+ "The instantaneous Frame Delay Variation measured
+ at the time of this result set";
+ }
+ }
+
+
+
+ /*
+ * Features
+ */
+ feature emix {
+ description
+ "This feature indicates that the device supports
+ EMIX style of repeating frame rates patterns";
+ reference
+ "Rec. ITU-T Y.1564 (03/2011) Section 8.1.1";
+ }
+
+ /*
+ * Configuration
+ */
+ container y1564-test {
+ description "The overall configuration of the Y.1564
+ tests are done through the 'service' entities";
+
+ leaf config-step-duration {
+ type uint16 {
+ range 1..60;
+ }
+ units second;
+ default 60;
+ description "The duration of each step when
+ performing Configuration tests";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.3";
+ }
+
+ choice performance-duration-choice {
+ description
+ "Duration can be chosen from enumerated values or
+ specified as a duration in minutes";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.2.1";
+
+ case fixed-durations-renamed {
+ leaf performance-duration-fixed {
+ type enumeration {
+ enum Test15m {
+ value 15;
+ description "15 minute test duration";
+ }
+ enum Test2h {
+ value 120;
+ description "2 hour test duration";
+ }
+ enum Test24h {
+ value 1440;
+ description "24 hour test duration";
+ }
+ enum Unbounded {
+ description "Unbounded test duration";
+ }
+ }
+ default Test15m;
+ description "Fixed durations set";
+ }
+ }
+
+
+ case test-duration-minutes {
+ leaf performance-duration {
+ type uint16 {
+ range 1..max;
+ }
+ units min;
+ description
+ "The duration of Performance tests specified in minutes";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.2.1";
+ }
+ }
+ }
+
+ leaf performance-frame-size {
+ type sa:frame-size-type;
+ units octet;
+ default 512;
+ description
+ "The frame size used for the performance test.
+ Frame sizes for configuration are configured at a
+ the service level. This is a constant value per service (
+ frame size repeating emix values are not supported)";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.1";
+ }
+
+ list service-config {
+ key service-id;
+ description "The services can be configured on this device";
+
+ uses service-attributes-group;
+
+ leaf enabled {
+ type boolean;
+ default true;
+ description "Toggles whether the service is enabled in tests";
+ }
+
+
+ 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 config-frame-size {
+ type sa:frame-size-type;
+ units octet;
+ default 512;
+ description
+ "The frame size used for the service configuration test.
+ Frame sizes for performance test is configured at a
+ higher level. This is a constant value per service (
+ frame size repeating emix values are not supported)";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.1";
+ }
+
+ leaf cir {
+ type uint16 {
+ range min..1000;
+ }
+ units "Mb/s";
+ default 1;
+ description "Committed Information Rate. If 0 then will return zeros";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1";
+ }
+
+ leaf eir {
+ type uint16 {
+ range min..1000;
+ }
+ units "Mb/s";
+ description "Excess Information Rate. If 0 then this test is disabled";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1";
+ }
+
+ leaf colour-aware {
+ type boolean;
+ default true;
+ description "Indicates if the service is colour aware or not";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 6.2.1";
+ }
+
+ leaf m-factor {
+ type uint16;
+ units "kb/s";
+ description "The M factor is added to allow for the effect of
+ the traffic policer's CBS and EBS settings, and test time.
+ Experience will determine the values for M.
+ Additional guidance on M is for further study.";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.2 C.2";
+ }
+
+ container enable-step-test {
+ presence "Enables step test";
+ description "If this item is present then a step load test of
+ CIR will be performed.
+ Otherwise simple validation of CIR will be performed.";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.2";
+
+ leaf step-load-size-override {
+ type uint16 {
+ range 1..1000;
+ }
+ units "Mb/s";
+ description "A manually specified Step Load size in Mb/s.
+ A maximum of 4 steps will be taken. If not specified
+ the default behaviour means the CIR rate divided by
+ 4 rounded up to nearest Mb/s. When CIR rate is below 4Mb/s
+ then a corresponding nuumber of steps will be used";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1";
+ }
+ }
+
+ container enable-policing-test {
+ presence "Enables Policing test";
+ description "If this item is present then a Policing
+ test will be performed.
+ Otherwise no Policing will be performed.";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.2";
+ }
+
+ container service-acceptance-criteria {
+ description "Attributes that tune the Service Acceptance
+ Criteria per service.";
+
+ leaf accepted-flr {
+ type uint32 {
+ range min..100000;
+ }
+ units "m%";
+ description "A measured Frame Loss Ratio greater than
+ or equal to this value will result in test fail.
+ Units are 0.001%. Default is 0";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.3";
+ }
+
+ leaf accepted-ftd {
+ type uint32;
+ units "μs";
+ mandatory true;
+ description "A measured Frame Transfer Delay greater than
+ or equal to this value will result in test fail.";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.3";
+ }
+
+ leaf accepted-fdv {
+ type uint32;
+ units "μs";
+ mandatory true;
+ description "A measured Frame Delay Variation greater than
+ or equal to this value will result in test fail.";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.3";
+ }
+
+ leaf accepted-availability {
+ type uint32 {
+ range min..100000;
+ }
+ units "m%";
+ default 100000;
+ description "A measured Availability for a performance
+ test must meet or exceed this value. Values are in
+ milli-percent. Default is 100%";
+ }
+ }
+ }
+ }
+
+ container y1564-results {
+ config false;
+ description "Top level container for results from the tests";
+ container configuration {
+ description
+ "The results of the Y.1564 Configuration tests on each
+ service which was enabled when the test was run";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.1.3";
+
+ list service {
+ key service-id;
+ description "The results for the services configured on this device";
+
+ uses service-attributes-group;
+
+ uses sa:results-header-group;
+
+ container cir-results {
+ description "Results for Committed Information Rate
+ part of the test";
+
+ leaf steps {
+ type uint8;
+ description "Indicates the number if steps taken so far.";
+ }
+
+ list step {
+ key step-id;
+
+ description "A list of results for each of the steps for
+ the CIR test";
+
+ leaf step-id {
+ type uint8;
+ mandatory true;
+ description "The index of the step";
+ }
+
+ uses result-attributes-group;
+ uses pass-fail-group;
+
+ container green-frames {
+ uses y1564-test-result-group;
+ description "The details of frames marked green during
+ the step of the CIR test";
+ }
+ }
+
+ }
+
+ container eir-results {
+ description "Results for Excess Information Rate
+ part of the test";
+ uses result-attributes-group;
+ uses pass-fail-group;
+
+ container green-frames {
+ uses y1564-test-result-group;
+ description
+ "The details of frames marked green of the EIR test";
+ }
+
+ container yellow-frames {
+ uses y1564-test-result-group;
+ description
+ "The details of frames marked yellow of the EIR test";
+ }
+ }
+
+ container policer-results {
+ presence "Can be omitted if policer test is
+ not enabled on this service";
+ description "Container for the policer results";
+ uses result-attributes-group;
+ uses pass-fail-group;
+
+ container green-frames {
+ uses y1564-test-result-group;
+ description
+ "The details of frames marked green of the Policer test";
+ }
+
+ container yellow-frames {
+ uses y1564-test-result-group;
+ description
+ "The details of frames marked yellow of the Policer test";
+ }
+ }
+
+ }
+ }
+
+ container performance {
+ description
+ "The results of the Y.1564 Performance tests on each
+ service was 'enabled'";
+ reference "Rec. ITU-T Y.1564 (03/2011) Section 8.2.2";
+
+ uses sa:results-header-group;
+
+ list service {
+ key service-id;
+ description "The services can be configured on this device";
+
+ uses service-attributes-group;
+
+ uses pass-fail-group;
+
+ uses y1564-test-result-group;
+
+ leaf avail-sec {
+ type uint32;
+ units "s";
+ description
+ "The count of seconds during the test period for which
+ service was Available";
+ }
+ }
+ }
+ }
+
+ /*
+ * RPCs
+ */
+ rpc run-y1564-test {
+ description
+ "Run the configured Y.1564 test on each service
+ that has been marked 'enabled'";
+
+ input {
+ leaf tests-enabled {
+ type bits {
+ bit configuration {
+ description "Runs the configuration tests";
+ }
+ bit performance {
+ description "Runs the performance tests";
+ }
+ }
+ default "configuration performance";
+ description
+ "Bit mask to define which parts of the test are run.
+ Specify as a set of space separated string values";
+ }
+ }
+ }
+
+ rpc stop-y1564-test {
+ description
+ "Stop the running Y.1564 test on all services";
+ }
+
+ /*
+ * Notifications
+ */
+ notification y1564-test-updated {
+ description
+ "A y1564-test-updated notification is sent
+ when the state of a test changes.";
+
+ uses sa:notification-group;
+
+ leaf service-id {
+ type uint16;
+ mandatory true;
+ description "The ID of the Service that is being tested";
+ }
+ }
+}