netconfcentral logo

ieee802-ethernet-pon@2017-10-18



  module ieee802-ethernet-pon {

    yang-version 1.1;

    namespace
      "urn:ieee:std:802.3:yang:ieee802-ethernet-pon";

    prefix eth-pon;

    import ietf-yang-types {
      prefix yang;
    }
    import ietf-interfaces {
      prefix if;
    }
    import ieee802-ethernet-interface {
      prefix eth-if;
    }

    organization
      "IEEE 802.3 Ethernet Working Group
     Web URL: http://www.ieee802.org/3/";

    contact
      "Web URL: http://www.ieee802.org/3/cf/";

    description
      "This module contains a collection of YANG definitions for
     managing the Multi Point Control Protocol for Ethernet PON (EPON),
     as defined in IEEE Std 802.3, Clause 64/77

     This YANG module augments the 'ethernet' module.";

    reference
      "IEEE Std 802.3-2015, Clause 64/77, unless dated explicitly
      IEEE Std 802.3.1-2013, Clause 9, unless dated explicitly";


    revision "2017-10-18" {
      description
        "Restructed to be NMDA compliant.";
      reference
        "IEEE P802.3.2 (IEEE 802.3cf) YANG Data Model Definitions Task
        Force";

    }


    typedef mpcp-supported {
      type boolean;
      description
        "This object indicates that the given Ethernet interface
       supports MPCP, i.e., it is an Ethernet PON (EPON) interface.";
    }

    typedef mpcp-llid {
      type uint32 {
        range "0 .. 32767";
      }
      description
        "A unique identifier for a MAC within an EPON network.
       Logical Link Identifiers (LLIDs) are dynamically assigned by
       the OLT during the registration process. For a complete
       description of how the LLID is used in an EPON device see
       IEEE Std 802.3 subclause 65.1.3.3 for 1G-EPON or
       76.2.6.1.3 for 10G-EPON.
       The third and fourth octets following the SLD contain the mode
       and logical_link_id values. OLTs and ONUs act upon these values
       in a different manner.

       If the device is an OLT, then the following comparison is made:
       a) The received mode bit is ignored.
       b) If the received logical_link_id value matches
       0x7FFF or 0x7FFE and an enabled MAC exists with a
       logical_link_id variable with the same value,
       then the comparison is considered a match to that MAC.
       c) If the received logical_link_id has a value other than
       0x7FFF or 0x7FFE and an enabled MAC exists with a mode variable
       with a value of 0 and a logical_link_id variable matching
       the received logical_link_id value, then the comparison
       is considered a match to that MAC.

       If the device is an ONU then the following comparison is made:
       d) If the received mode bit is equal to 0 and the received
       logical_link_id value matches the logical_link_id variable,
       then the comparison is considered a match.
       e) If the received mode bit is equal to 1 and the received
       logical_link_id value does not match the logical_link_id
       variable, or the received logical_link_id matches 0x7FFE,
       then the comparison is considered a match.
       f) If the received logical_link_id value matches one of the
       assigned multicast LLIDs, then the comparison
       is considered a match.

       If no match is found, then the packet shall be discarded
       within the RS. If a match is found, then the packet
       is intended to be transferred.

       If the packet is transferred, then both octets of the LLID
       field shall be replaced with normal preamble octets.

       If the packet is transferred, the one octet preceding the LLID
       is passed without modification. A number of LLIDs have been
       reserved (see IEEE Std 802.3, Figure 76-4) for various purposes
       including downstream broadcast, discovery messages, and upstream
       registration request messages. An additional block of LLIDs has
       been set aside for future use and definition. A registered ONU
       shall not transmit frames with one of these reserved LLIDs.";
      reference
        "IEEE Std 802.3, 76.2.6.1.3.2 (1G-EPON and 10G-EPON)";

    }

    typedef mpcp-maximum-queue-count-per-report {
      type uint8 {
        range "0..7";
      }
      default "0";
      description
        "Defines the maximum number of queues (0-7) in the REPORT
       MPCPDU as defined in IEEE Std 802.3, Clause 64 and Clause 77.";
    }

    typedef mpcp-llid-count {
      type uint32 {
        range "0 .. 32767";
      }
      description
        "Indicates the number of registered LLIDs. The initialization value is
       0. This is applicable for an OLT with the same value for all virtual
       interfaces and for an ONU.";
      reference
        "IEEE Std 802.3, 76.2.6.1.3.2 (1G-EPON and 10G-EPON)";

    }

    typedef mpcp-admin-state {
      type enumeration {
        enum "enabled" {
          value 0;
          description
            "When selecting the value of 'enabled', the MultiPoint
           Control Protocol sublayer on the OLT / ONU is enabled.";
        }
        enum "disabled" {
          value 1;
          description
            "When selecting the value of 'disabled', the MultiPoint
           Control Protocol sublayer on the OLT / ONU is disabled.";
        }
      }
      description
        "Enumeration of valid administrative states for a MultiPoint MAC
       Control sublayer on the OLT or ONU";
      reference
        "IEEE Std 802.3, 30.3.5.2.1";

    }

    typedef mpcp-mode {
      type enumeration {
        enum "olt" {
          value 0;
          description "mpcp mode: olt";
        }
        enum "onu" {
          value 1;
          description "mpcp mode: onu";
        }
      }
      description
        "Enumeration of valid mpcp modes for Ethernet interfaces";
      reference
        "IEEE Std 802.3, 30.3.5.1.3";

    }

    typedef mpcp-logical-link-state {
      type enumeration {
        enum "unregistered" {
          value 0;
          description
            "MPCP registration state: logical link is NOT registered";
        }
        enum "registering" {
          value 1;
          description
            "MPCP registration state: logical link is currently in the
           process of registering";
        }
        enum "registered" {
          value 2;
          description
            "MPCP registration state: logical link is currently
           registered";
        }
      }
      description
        "Enumeration of valid MPCP registration states for Ethernet
       interfaces";
      reference
        "IEEE Std 802.3, 30.3.5.1.6";

    }

    typedef mpcp-logical-link-admin-state {
      type enumeration {
        enum "reset" {
          value 0;
          description
            "When read, the value of 'reset' indicates that the given
           logical link on the OLT / ONU has been reset.
           When set, the value of 'reset' requests the OLT / ONU to
           reset the given logical link.";
        }
        enum "operate" {
          value 1;
          description
            "When read, the value of 'operate' indicates that the
           given logical link on the OLT / ONU has moved into
           operating mode.
           When set, the value of 'operate' requests the OLT / ONU to
           move the given logical link into operating mode.";
        }
        enum "disabled" {
          value 2;
          description
            "When read, the value of 'disabled' indicates that the
           given logical link on the OLT / ONU has been disabled.
           When set, the value of 'disabled' requests the OLT / ONU
           to disable the given logical link. ";
        }
        enum "enabled" {
          value 3;
          description
            "When read, the value of 'enabled' indicates that the
           given logical link on the OLT / ONU has been enabled.
           When set, the value of 'enabled' requests the OLT / ONU to
           enable the given logical link. ";
        }
        enum "unknown" {
          value 4;
          description
            "When read, the value of 'unknown' indicates that the
           status of the given logical link on the OLT / ONU is
           currently not known.
           An attempt to set the value of 'unknown' is illegal.";
        }
        enum "registered" {
          value 5;
          description
            "When read, the value of 'registered' indicates that the
           given logical link on the OLT / ONU has been registered.
           When set, the value of 'registered' requests the OLT / ONU
           to register the given logical link. ";
        }
        enum "deregistered" {
          value 6;
          description
            "When read, the value of 'deregistered' indicates that the
           given logical link on the OLT / ONU has been deregistered.
           When set, the value of 'deregistered' requests the
           OLT / ONU to deregister the given logical link. ";
        }
        enum "reregistered" {
          value 7;
          description
            "When read, the value of 'reregistered' indicates that the
           given logical link on the OLT / ONU has been reregistered.
           When set, the value of 'reregistered' requests the
           OLT / ONU to reregister the given logical link. ";
        }
      }
      description
        "Enumeration of valid administrative states for a logical link
       on the OLT or ONU";
    }

    typedef ompe-mode {
      type enumeration {
        enum "unknown" {
          value 0;
          description
            "omp-emulation mode: unknown = system is initializing";
        }
        enum "olt" {
          value 1;
          description
            "omp-emulation mode: olt";
        }
        enum "onu" {
          value 2;
          description
            "omp-emulation mode: onu";
        }
      }
      description
        "Enumeration of valid OMP-Emulation modes for Ethernet
       interfaces";
      reference
        "IEEE Std 802.3, 30.3.7.1.2";

    }

    typedef fec-capability {
      type enumeration {
        enum "unknown" {
          value 0;
          description
            "FEC capability: unknown = system is initializing";
        }
        enum "supported" {
          value 1;
          description
            "FEC capability: supported";
        }
        enum "not supported" {
          value 2;
          description
            "FEC capability: not supported";
        }
      }
      description
        "Enumeration of valid FEC capability values for Ethernet
       interfaces with enabled MPCP";
      reference
        "IEEE Std 802.3, 30.5.1.1.15";

    }

    typedef fec-mode {
      type enumeration {
        enum "unknown" {
          value 0;
          description
            "FEC mode: unknown = system is initializing";
        }
        enum "disabled" {
          value 1;
          description
            "FEC mode: disabled = FEC is disabled for the given
           logical link (both Tx and Rx directions)";
        }
        enum "enabled-Tx-Rx" {
          value 2;
          description
            "FEC mode: enabled-Tx-Rx = FEC is enabled for the given
           logical link in both Tx and Rx directions";
        }
        enum "enabled-Tx-only" {
          value 3;
          description
            "FEC mode: enabled-Tx-only = FEC is enabled for
        the given logical link but only in Tx direction";
        }
        enum "enabled-Rx-only" {
          value 4;
          description
            "FEC mode: enabled-Rx-only = FEC is enabled for
        the given logical link but only in Rx direction";
        }
      }
      description
        "Enumeration of valid FEC modes for Ethernet interfaces";
      reference
        "IEEE Std 802.3, 30.5.1.1.16";

    }

    typedef trx-admin-state {
      type enumeration {
        enum "enabled" {
          value 0;
          description
            "When read as 'enabled', the transmitter is enabled and
           operating under the control of the logical control protocol.
           When set to 'enabled', the transmitter is enabled to
           operate under the control of the logical control protocol. ";
        }
        enum "disabled" {
          value 1;
          description
            "When read as 'disabled', the transmitter is disabled.
           When set to 'disabled', the transmitter is disabled. ";
        }
      }
      description
        "Enumeration of valid administrative states for an optical
       transceiver";
      reference
        "IEEE Std 802.3.1, dot3ExtPkgOptIfTransmitEnable";

    }

    feature trx-power-level-reporting-supported {
      description
        "This object indicates the support for optical transceiver power
    level monitoring and reporting capability. When 'true', the given
    interface supports the optical power level monitoring and reporting
    function. Otherwise, the value is 'false'.";
      reference
        "";

    }

    feature fec-supported {
      description
        "This object indicates the support of operation of the optional FEC
       sublayer of the 1000BASE-PX PHY specified in IEEE Std 802.3, 65.2. The
       value of 'unknown' is reported in the initialization, for non FEC
       support state or type not yet known. The value of 'not supported' is
       reported when the sublayer is not supported. The value of 'supported'
       is reported when the sublayer is supported. This object is applicable
       for an OLT, with the same value for all logical links, and for an ONU.
       All objects in the fec/statistics container have a zero value
       when the interface is not supporting FEC.";
      reference
        "IEEE Std 802.3, 30.5.1.1.15";

    }

    augment /if:interfaces/if:interface/eth-if:ethernet {
      description
        "Augments the definition of Ethernet interface (/if:interfaces/
       if:interface/eth-if:ethernet) module with nodes
       specific to Ethernet PON (EPON)";
      leaf fec-mode {
        if-feature fec-supported;
        type fec-mode;
        description
          "This object reflects the current administrative state of the
         FEC function for the given logical link on an ONU or OLT.

         When reading the value of 'disabled', the FEC function on the
         given logical link is disabled.

         When reading the value of 'enabled-Tx-Rx', the FEC function on
         the given logical link is enabled in both Tx and Rx directions.

         When reading the value of 'enabled-Tx-only', the FEC function
         on the given  logical link is enabled in Tx direction only.

         When reading the value of 'enabled-Rx-only', the FEC function
         on the given  logical link is enabled in Rx direction only.

         When reading the value of 'unknown', the state of the FEC
         function on the given logical link is unknown or the FEC
         function is currently initializing.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "IEEE Std 802.3, 30.5.1.1.16";

      }

      leaf mpcp-admin-state {
        type mpcp-admin-state;
        description
          "This object reflects the current administrative state of the
         MultiPoint MAC Control sublayer, as defined in IEEE Std 802.3,
         Clause 64 and Clause 77, for the OLT / ONU.

         When reading the value of 'enabled', the MultiPoint Control
         Protocol on the OLT / ONU is enabled.

         When reading the value of 'disabled', the MultiPoint Control
         Protocol on the OLT / ONU is disabled.

         This object is applicable for an OLT and an ONU. It has the same
         value for all logical links.";
        reference
          "IEEE Std 802.3, 30.3.5.1.2";

      }

      leaf mpcp-logical-link-admin-state {
        type mpcp-logical-link-admin-state;
        description
          "This object reflects the current administrative state of a
         logical link on an ONU or OLT.

         When reading the value of 'reset', the given logical link is
         undergoing a reset.

         When reading the value of 'unknown', the current status of the
         given logical link is unknown and the link might be undergoing
         initialization.

         When reading the value of 'operate', the given logical link is
         operating  normally.

         When reading the value of 'disabled', the given logical link
         was disabled (powered down).

         When reading the value of 'enabled', the given logical link
         was enabled (powered up).

         When reading the value of 'registered', the given logical link
         was requested to perform registration.

         When reading the value of 'deregistered', the given logical
         link was requested to perform deregistration.

         When reading the value of 'reregistered', the given logical
         link was requested to perform reregistration.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "TBD";

      }

      leaf trx-transmit-admin-state {
        when
          "../../eth-if:ethernet/eth-pon:mpcp-admin-state = 'enabled'";
        if-feature trx-power-level-reporting-supported;
        type trx-admin-state;
        description
          "This object reflects the current status of the transmitter in
         the optical transceiver.

         When read as 'enabled', the optical transmitter is enabled and
         operating under the control of the logical control protocol.

         When read as 'disabled', the optical transmitter is disabled.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.

         The value of this object is only reliable when
         /if:interfaces-state/if:interface/eth-if:ethernet/
         mpcp-admin-state' is equal to 'enabled'.";
        reference
          "IEEE Std 802.3.1, dot3ExtPkgOptIfTransmitEnable";

      }

      container capabilities {
        config false;
        description
          "Contain all Ethernet interface specific capabilties.";
        leaf mpcp-supported {
          type mpcp-supported;
          default "true";
          description
            "This object indicates that the given Ethernet interface
           supports MPCP, i.e., it is an Ethernet PON (EPON) interface.";
        }
      }  // container capabilities

      container statistics-mpcp {
        config false;
        description
          "This container defines a set of MPCP-related statistics
         counters of an Ethernet interface implementing MPCP, as
         defined in IEEE Std 802.3, Clause 64 and Clause 77. ";
        leaf mpcp-mac-ctrl-pkts-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of MPCP frames passed to the MAC sublayer for
           transmission.

           This counter is incremented when a MA_CONTROL.request
           service primitive is generated within the MAC control
           sublayer with an opcode indicating an MPCP frame.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities of this counter can occur at
           re-initialization of the management system, and at other
           times as indicated by the value of the
           ifCounterDiscontinuityTime object. ";
          reference
            "IEEE Std 802.3, 30.3.5.1.7";

        }

        leaf mpcp-mac-ctrl-pkts-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of MPCP frames passed by the MAC sublayer to the
           MAC Control sublayer.

           This counter is incremented when a frame is received at the
           interface which is an MPCP frame or has a Length/Type Ethernet
           header field value equal to the reserved Type for
           802.3_MAC_Control as specified in IEEE Std 802.3, 31.4.1.3.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.5.1.8";

        }

        leaf mpcp-discovery-window-count {
          type yang:counter64;
          units "discovery windows";
          config false;
          description
            "A count of discovery windows generated by the OLT.

           The counter is incremented by one for each generated
           discovery window.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU, the value should be zero.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223). ";
          reference
            "IEEE Std 802.3, 30.3.5.1.22";

        }

        leaf mpcp-discovery-timeout-count {
          type yang:counter64;
          units "discovery timeouts";
          config false;
          description
            "A count of the number of times a discovery timeout occurs.

           This counter is incremented by one for each discovery
           processing state-machine reset resulting from timeout
           waiting for message arrival.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223). ";
          reference
            "IEEE Std 802.3, 30.3.5.1.23";

        }

        leaf mpcp-register-req-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER_REQ MPCP frame
           transmission occurs.

           This counter is incremented by one for each REGISTER_REQ MPCP
           frame transmitted as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU,
           the value should be zero.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.5.1.12";

        }

        leaf mpcp-register-req-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER_REQ MPCP frame
           reception occurs.

           This counter is incremented by one for each REGISTER_REQ MPCP
           frame received as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. At the ONU, the
           value should be zero for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.5.1.17";

        }

        leaf mpcp-register-ack-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER_ACK MPCP frame
           transmission occurs.

           This counter is incremented by one for each REGISTER_ACK MPCP
           frame transmitted as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. The value should
           be zero for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.5.1.10";

        }

        leaf mpcp-register-ack-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER_ACK MPCP frame
           reception occurs.

           This counter is incremented by one for each REGISTER_ACK MPCP
           frame received as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU, the value should be zero.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.15";

        }

        leaf mpcp-report-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REPORT MPCP frame
           transmission occurs.

           This counter is incremented by one for each REPORT MPCP frame
           transmitted as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. The value should
           be zero for each logical link.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.13";

        }

        leaf mpcp-report-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REPORT MPCP frame
           reception occurs.

           This counter is incremented by one for each REPORT MPCP frame
           received as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU, the value should be zero.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.5.1.18";

        }

        leaf mpcp-gate-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a GATE MPCP frame
           transmission occurs.

           This counter is incremented by one for each GATE MPCP frame
           transmitted as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU, the value should be zero.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.9";

        }

        leaf mpcp-gate-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a GATE MPCP frame reception
           occurs.

           This counter is incremented by one for each GATE MPCP frame
           received as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. The value should
           be zero for each logical link.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.14";

        }

        leaf mpcp-register-out {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER MPCP frame
           transmission occurs.

           This counter is incremented by one for each REGISTER MPCP frame
           transmitted as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link. At the ONU,
           the value should be zero.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.11";

        }

        leaf mpcp-register-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of the number of times a REGISTER MPCP frame
           reception occurs.

           This counter is incremented by one for each REGISTER MPCP frame
           received as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. The value should
           be zero for each logical link.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object .";
          reference
            "IEEE Std 802.3, 30.3.5.1.16";

        }
      }  // container statistics-mpcp

      container statistics-ompe {
        description
          "This container defines a set of OMP-Emulation-related
         statistics counters of an Ethernet interface implementing MPCP
         , as defined in IEEE Std 802.3, Clause 65 and Clause 76.";
        reference
          "IEEE Std 802.3.1, dot3OmpEmulationStatEntry";

        leaf ompe-pkts-in-errored-sld {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that do not contain a valid SLD
           field as defined in IEEE Std 802.3, 65.1.3.3.1 or
           76.2.6.1.3.1, as appropriate.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.7.1.3";

        }

        leaf ompe-pkts-in-errored-crc8 {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1 as
           appropriate, but do not pass the CRC-8 check as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3 as appropriate.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities of this counter can occur at
           re-initialization of the management system and at other
           times, as indicated by the value of the
           ifCounterDiscontinuityTime object.";
          reference
            "IEEE Std 802.3, 30.3.7.1.4";

        }

        leaf ompe-pkts-in-with-bad-llid {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field, as
           defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, and pass the CRC-8 check as defined in IEEE Std
           802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate, but are
           discarded due to the LLID check.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.7.1.5";

        }

        leaf ompe-pkts-in-with-good-llid {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1 as
           appropriate, but do not pass the CRC-8 check as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3 as appropriate.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.7.1.4";

        }

        leaf ompe-pkts-in {
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, and pass the CRC-8 check as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.3.7.1.6 (ONU) and 30.3.7.1.7 (OLT)";

        }

        leaf ompe-pkts-in-not-match-onu-llid-broadcast {
          when "../../ompe-mode = 'onu'";
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, pass the CRC-8 check, as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate,
           and contain the broadcast bit in the LLID and not the ONU's
           LLID (frame accepted) as defined in IEEE Std 802.3,
           Clause 65 and Clause 76, as appropriate.

           This object is applicable for an ONU only.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3OmpEmulationBroadcastBitNotOnuLlid";

        }

        leaf ompe-pkts-in-match-onu-llid-not-broadcast {
          when "../../ompe-mode = 'onu'";
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, pass the CRC-8 check, as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate,
           and contain the ONU's LLID (frame accepted) as defined in
           IEEE Std 802.3, Clause 65 and Clause 76, as appropriate.

           This object is applicable for an ONU only.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3OmpEmulationOnuLLIDNotBroadcast";

        }

        leaf ompe-pkts-in-match-onu-llid-broadcast {
          when "../../ompe-mode = 'onu'";
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, pass the CRC-8 check, as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate,
           and contain the broadcast bit in the LLID and the ONU's LLID
           (frame accepted) as defined in IEEE Std 802.3, Clause 65 and
           Clause 76, as appropriate.

           This object is applicable for an ONU only.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3OmpEmulationBroadcastBitPlusOnuLlid";

        }

        leaf ompe-pkts-in-not-match-onu-llid-not-broadcast {
          when "../../ompe-mode = 'onu'";
          type yang:counter64;
          units "frames";
          config false;
          description
            "A count of frames received that contain a valid SLD field,
           as defined in IEEE Std 802.3, 65.1.3.3.1 or 76.2.6.1.3.1, as
           appropriate, pass the CRC-8 check, as defined in
           IEEE Std 802.3, 65.1.3.3.3 or 76.2.6.1.3.3, as appropriate,
           do not contain the broadcast bit in the LLID and do not contain
           the ONU's LLID (frame is NOT accepted) as defined in
           IEEE Std 802.3, Clause 65 and Clause 76, as appropriate.

           This object is applicable for an ONU only.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3OmpEmulationNotBroadcastBitNotOnuLlid";

        }
      }  // container statistics-ompe

      container threholds-trx {
        if-feature trx-power-level-reporting-supported;
        description
          "This container defines a set of optical transceiver
         threholds of an Ethernet interface implementing MPCP
         as defined in IEEE Std 802.3, Clause 60 and Clause 75. ";
        reference
          "IEEE Std 802.3.1, dot3ExtPkgOptIfEntry";

        leaf trx-power-in-low-threshold {
          if-feature trx-power-level-reporting-supported;
          type int32;
          units "0.1 dBm";
          description
            "This object reflects the current setting of low alarm
           threshold for the input power into the optical receiver.
           If the value reported in 'trx-power-in' object drops below
           the value set in 'trx-power-in-low-threshold', a
           trx-power-in-low-threshold-crossing' event is generated.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfLowerInputPowerThreshold";

        }

        leaf trx-power-in-high-threshold {
          if-feature trx-power-level-reporting-supported;
          type int32;
          units "0.1 dBm";
          description
            "This object reflects the current setting of high alarm
           threshold for the input power into the optical receiver. If
           the value reported in 'trx-power-in' object exceeds the
           value set in 'trx-power-in-high-threshold', a
           trx-power-in-high-threshold-crossing' event is generated.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfUpperInputPowerThreshold";

        }

        leaf trx-power-out-low-threshold {
          if-feature trx-power-level-reporting-supported;
          type int32;
          units "0.1 dBm";
          description
            "This object reflects the current setting of low alarm
           threshold for the output power out of the optical
           transmitter. If the value reported in 'trx-power-out' object
           drops below the value set in 'trx-power-out-low-threshold',
           a 'trx-power-out-low-threshold-crossing' event is generated.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfLowerOutputPowerThreshold";

        }

        leaf trx-power-out-high-threshold {
          if-feature trx-power-level-reporting-supported;
          type int32;
          units "0.1 dBm";
          description
            "This object reflects the current setting of high alarm
           threshold for the output power out of the optical
           transmitter. If the value reported in 'trx-power-out' object
           exceeds the value set in 'trx-power-out-high-threshold', a
           trx-power-out-high-threshold-crossing' event is generated.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfUpperOutputPowerThreshold";

        }
      }  // container threholds-trx

      container statistics-trx {
        if-feature trx-power-level-reporting-supported;
        description
          "This container defines a set of optical transceiver
         statistics counters of an Ethernet interface implementing MPCP
         as defined in IEEE Std 802.3, Clause 60 and Clause 75. ";
        reference
          "IEEE Std 802.3.1, dot3ExtPkgOptIfEntry";

        leaf trx-power-in-signal-detect {
          type boolean;
          config false;
          description
            "This object indicates whether a valid optical signal was
           detected (when read as 'true') or not (when read as 'false')
           at the input to the optical transceiver.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfSignalDetect";

        }

        leaf trx-power-in {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the value of the input power, as
           measured at the optical transceiver, expressed in units of
           0.1 dBm.

           At the ONU, the measurement is performed in a continuous
           manner.

           At the OLT, the measurement is performed in a burst-mode
           manner, for each incoming data burst.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfInputPower";

        }

        leaf trx-power-in-low-15-minutes-bin {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the lowest value of the input power
           during the period of the last 15 minutes, as measured at the
           optical transceiver, and expressed in units of 0.1 dBm.

           At the ONU, the measurement is performed in a continuous
           manner and stored in a rolling 15-minutes' long observation
           bin.

           At the OLT, the measurement is performed in a burst-mode
           manner, for each incoming data burst, and stored in a
           rolling 15-minutes' long observation bin.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfLowInputPower";

        }

        leaf trx-power-in-high-15-minutes-bin {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the highest value of the input power
           during the period of the last 15 minutes, as measured at the
           optical transceiver, and expressed in units of 0.1 dBm.

           At the ONU, the measurement is performed in a continuous
           manner and stored in a rolling 15-minutes' long observation
           bin.

           At the OLT, the measurement is performed in a burst-mode
           manner, for each incoming data burst, and stored in a
           rolling 15-minutes' long observation bin.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfHighInputPower";

        }

        leaf trx-power-out-signal-detect {
          type boolean;
          config false;
          description
            "This object indicates whether a valid optical signal was
           detected (when read as 'true') or not (when read as 'false')
           at the output from the optical transceiver.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfTransmitAlarm";

        }

        leaf trx-power-out {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the value of the output power, as
           measured at the optical transceiver, expressed in units of
           0.1 dBm.

           At the ONU, the measurement is performed in a burst-mode manner
           for each outgoing data burst.

           At the OLT, the measurement is performed in a continuous manner.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfOutputPower";

        }

        leaf trx-power-out-low-15-minutes-bin {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the lowest value of the output power
           during the period of the last 15 minutes, as measured at the
           optical transceiver, and expressed in units of 0.1 dBm.

           At the ONU, the measurement is performed in a burst-mode
           manner and stored in a rolling 15-minutes' long observation
           bin.

           At the OLT, the measurement is performed in a continuous
           manner, for each incoming data burst, and stored in a
           rolling 15-minutes' long observation bin.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfLowOutputPower";

        }

        leaf trx-power-out-high-15-minutes-bin {
          type int32;
          units "0.1 dBm";
          config false;
          description
            "This object reflects the highest value of the output power
           during the period of the last 15 minutes, as measured at the
           optical transceiver, and expressed in units of 0.1 dBm.

           At the ONU, the measurement is performed in a burst-mode
           manner and stored in a rolling 15-minutes' long observation
           bin.

           At the OLT, the measurement is performed in a continuous
           manner, for each incoming data burst, and stored in a
           rolling 15-minutes' long observation bin.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgOptIfHighOutputPower";

        }
      }  // container statistics-trx

      container statistics-pon-fec {
        when
          "(../fec-capability = 'supported') and
         (../fec-mode = 'enabled-Tx-Rx')";
        if-feature fec-supported;
        config false;
        description
          "This container defines a set of FEC-related statistics
         counters of an Ethernet interface implementing MPCP, as
         defined in IEEE Std 802.3, Clause 65 and Clause 76. ";
        reference
          "IEEE Std 802.3.1, dot3OmpEmulationStatEntry";

        leaf fec-code-group-violations {
          type yang:counter64;
          units "code-group";
          config false;
          description
            "For 1G-EPON, it is a count of the number of times an
           invalid codeword is received, other than the /V/
           code-group. The /V/ denotes a special 8b10b codeword of
           the IEEE Std 802.3 Clause 36 1000 Mb/s PCS layer, reused
           in 1G-EPON.

           For 10G-EPON, it is a count of the number of times an
           invalid codeword is received.

           This object is applicable for an OLT and an ONU. At the
           OLT, it has a distinct value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.5.1.1.14";

        }

        leaf fec-buffer-head-coding-violations {
          type yang:counter64;
          units "code-group";
          config false;
          description
            "For 1000BASE-PX PHY, this object represents the count of
           the number of invalid code-group received directly from the
           link.

           For 10GBASE-PR or 10/1GBASE-PRX PHYs, this object is always
           set to zero.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3EponFecBufferHeadCodingViolation ";

        }

        leaf fec-code-word-corrected-errors {
          type yang:counter64;
          units "code-group";
          config false;
          description
            "For 1000BASE-PX, 10GBASE-PR or 10/1GBASE-PRX PHYs, it is a
           count of corrected FEC blocks.

           This counter increments by one for each received FEC block
           that contained detected errors and was corrected by the FEC
           function in the PHY.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.5.1.1.17";

        }

        leaf fec-code-word-uncorrected-errors {
          type yang:counter64;
          units "code-group";
          config false;
          description
            "For 1000BASE-PX, 10GBASE-PR or 10/1GBASE-PRX PHYs, it is a
           count of uncorrectable FEC blocks.

           This counter increments by one for each received FEC block
           that contained detected errors and was not corrected by the
           FEC function in the PHY.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3, 30.5.1.1.18";

        }
      }  // container statistics-pon-fec

      list mpcp-queues {
        key "mpcp-queue-index";
        description
          "An instance of this object for each value of
         mpcp-queue-index' is created when a new logical link is
         registered and deleted when the logical link is deregistered.

         All instances of this object in the ONU associated with the
         given logical link are then mapped in to a REPORT MPCPDU, when
         generated.

         +-----------------------------------+
         |          Destination Address      |
         +-----------------------------------+
         |          Source Address           |
         +-----------------------------------+
         |          Length/Type              |
         +-----------------------------------+
         |          OpCode                   |
         +-----------------------------------+
         |          TimeStamp                |
         +-----------------------------------+
         |          Number of Queue Sets     |
         +-----------------------------------+   -|
         |          Report bitmap            |    |
         +-----------------------------------+    |
         |          Queue 0 report           |    |
         +-----------------------------------+    | repeated
         |          Queue 1 report           |    | for every
         +-----------------------------------+    | Queue Set
         |          Queue 2 report           |    |
         +-----------------------------------+    |
         |          Queue 3 report           |    |
         +-----------------------------------+    |
         |          Queue 4 report           |    |
         +-----------------------------------+    |
         |          Queue 5 report           |    |
         +-----------------------------------+    |
         |          Queue 6 report           |    |
         +-----------------------------------+    |
         |          Queue 7 report           |    |
         +-----------------------------------+   -|
         |          Pad/reserved             |
         +-----------------------------------+
         |          FCS                      |
         +-----------------------------------+

         The 'Queue N report' field reports the current occupancy of
         each upstream transmission queue associated with the given
         logical link.

         The 'Number of Queue Sets' field defines the number of
         reported 'Queue N report' sets.

         For each Queue Set, the 'Report bitmap' field defines which
         upstream transmission queues are present in the REPORT MPCPDU.
         Although the REPORT MPCPDU can report current occupation for
         up to 8 upstream transmission queues in a single REPORT MPCPDU
         , the actual number is flexible. The 'mpcp-queue-group'
         grouping has a variable size that is limited by value of
         mpcp-maximum-queue-count-per-report' object, allowing ONUs
         report the occupancy of fewer upstream transmission queues, as
         needed.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link and every queue.
         At the ONU, it has a distinct value for every queue.";
        reference
          "IEEE Std 802.3.1, dot3ExtPkgQueueEntry";

        leaf mpcp-queue-index {
          type uint8 {
            range "0 .. 7";
          }
          description
            "An object represents the index of an upstream transmission
           queue storing subscriber packets. The size (occupancy) of
           the upstream transmission queue identified by this object is
           then reported within REPORT MPCPDU, defined in
           IEEE Std 802.3, Clause 64 and Clause 77.

           This object indicates the identity (index) of a queue in the ONU.
           It can have a value between 0 and 7, limited by the value stored
           in the 'mpcp-maximum-queue-count-per-report' object.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link and each queue.
           At the ONU, it has a distinct value for each queue. ";
          reference
            "IEEE Std 802.3.1, dot3QueueIndex";

        }

        leaf mpcp-queue-threshold-count {
          type uint8 {
            range "0 .. 7";
          }
          description
            "This object reflects the number of reporting thresholds for
           the specific upstream transmission queue, reflected in the
           REPORT MPCPDU, as defined in IEEE Std 802.3,
           Clause 64 and Clause 77.

           Each 'Queue set' provides information for the specific
           upstream transmission queue occupancy of frames below the
           matching reporting threshold.

           A read of this object reflects the number of reporting
           thresholds for the specific upstream transmission queue.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link and each queue.
           At the ONU, it has a distinct value for each queue.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgObjectReportNumThreshold";

        }

        leaf mpcp-queue-threshold-count-max {
          type uint8 {
            range "0 .. 7";
          }
          description
            "This object reflects the maximum number of reporting
           thresholds for the specific upstream transmission queue,
           reflected in the REPORT MPCPDU, as defined in
           IEEE Std 802.3, Clause 64 and Clause 77.

           A read of this object reflects the maximum number of
           reporting thresholds for the specific upstream transmission
           queue.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link and each queue.
           At the ONU, it has a distinct value for each queue.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgObjectReportMaximumNumThreshold";

        }

        list mpcp-queue-thresholds {
          when
            "../mpcp-queue-threshold-count > 0";
          key "mpcp-queue-set-index";
          max-elements 7;
          description
            "An instance of this object for each value of
           mpcp-queue-index' is created when a new logical link is
           registered and deleted when the logical link is
           deregistered.

           All instances of this object in the ONU associated with the
           given logical link are then mapped in to a REPORT MPCPDU,
           when generated.

           +-----------------------------------+
           |          Destination Address      |
           +-----------------------------------+
           |          Source Address           |
           +-----------------------------------+
           |          Length/Type              |
           +-----------------------------------+
           |          OpCode                   |
           +-----------------------------------+
           |          TimeStamp                |
           +-----------------------------------+
           |          Number of Queue Sets     |
           +-----------------------------------+   -|
           |          Report bitmap            |    |
           +-----------------------------------+    |
           |          Queue 0 report           |    |
           +-----------------------------------+    | repeated for
           |          Queue 1 report           |    | every
           +-----------------------------------+    | Queue Set
           |          Queue 2 report           |    |
           +-----------------------------------+    |
           |          Queue 3 report           |    |
           +-----------------------------------+    |
           |          Queue 4 report           |    |
           +-----------------------------------+    |
           |          Queue 5 report           |    |
           +-----------------------------------+    |
           |          Queue 6 report           |    |
           +-----------------------------------+    |
           |          Queue 7 report           |    |
           +-----------------------------------+   -|
           |          Pad/reserved             |
           +-----------------------------------+
           |          FCS                      |
           +-----------------------------------+

           The 'Queue N report' field reports the current occupancy of
           each upstream transmission queue associated with the given
           logical link.

           The 'Number of Queue Sets' field defines the number of
           reported 'Queue N report' sets.

           For each Queue Set, the 'Report bitmap' field defines which
           upstream transmission queues are present in the
           REPORT MPCPDU. Although the REPORT MPCPDU can report current
           occupation for up to 8 upstream transmission queues in a
           single REPORT MPCPDU, the actual number is flexible.

           The 'mpcp-queue-group' grouping has a variable size that is
           limited by value of 'mpcp-maximum-queue-count-per-report'
           object, allowing ONUs to report the occupancy of fewer upstream
           transmission queues, as needed.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link and every queue.
           At the ONU, it has a distinct value for every queue.";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgQueueSetsEntry";

          leaf mpcp-queue-set-index {
            type uint8 {
              range "0 .. 7";
            }
            description
              "This object represents the index of the Queue Set for the
             mpcp-queue-set-group' grouping. The size (occupancy) of
             the upstream transmission queues belonging to the given
             Queue Set is then reported within REPORT MPCPDU, defined
             in IEEE Std 802.3, Clause 64 and Clause 77.

             This object can have a value between 0 and 7, limited by
             the value stored in the 'mpcp-queue-threshold-count-max'
             object. ";
            reference
              "IEEE Std 802.3.1, dot3QueueSetIndex";

          }

          leaf mpcp-queue-set-threshold {
            type uint32;
            units "TQ";
            default "0";
            description
              "This object defines the value of a reporting threshold
             for each Queue Set stored in REPORT MPCPDU defined in
             IEEE Std 802.3, Clause 64 and Clause 77.

             The number of Queue Sets for each upstream transmission
             queue is defined in the 'mpcp-queue-threshold-count'
             object.

             Within REPORT MPCPDU, each Queue Set provides information
             on the current upstream transmission queue occupancy for
             frames below the matching threshold.

             The value stored in this object is expressed in the units
             of Time quanta (TQ), where 1 TQ = 16 ns.

             A read of this object provides the current threshold value
             for the specific upstream transmission queue.

             This object is applicable for an OLT and an ONU. At the
             OLT, it has a distinct value for each logical link, each
             queue, and each Queue Set.

             At the ONU, it has a distinct value for each queue and
             each Queue Set. ";
            reference
              "IEEE Std 802.3.1, dot3ExtPkgObjectReportThreshold";

          }
        }  // list mpcp-queue-thresholds

        leaf mpcp-queue-pkts-in {
          type yang:counter64;
          config false;
          description
            "This object reflects the number of frame reception events
           into the corresponding upstream transmission queue. This
           object is incremented by one for each frame received, when
           it is input into the associated queue.

           The queue index matches the queue number in REPORT MPCPDU,
           as defined in IEEE Std 802.3, Clause 64 and Clause 77.

           This object is applicable for an OLT and an ONU. It has a distinct
           value for each logical link and each queue.
           At the ONU, it has a distinct value for each queue.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgStatRxFramesQueue";

        }

        leaf mpcp-queue-pkts-out {
          when "../../mpcp-mode = 'onu'";
          type yang:counter64;
          config false;
          description
            "This object reflects the number of frame transmission
           events from the corresponding upstream transmission queue.
           This object is incremented by one for each frame transmitted
           , when it is output from the associated queue.

           The queue index matches the queue number in REPORT MPCPDU,
           as defined in IEEE Std 802.3, Clause 64 and Clause 77.

           This object is applicable for an ONU only. At the ONU, it
           has a distinct value for each queue.

           Discontinuities in the value of this counter can occur at
           re-initialization of the management system, and at other times as
           indicated by the value of the 'discontinuity-time' leaf defined in
           the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgStatTxFramesQueue";

        }

        leaf mpcp-queue-pkts-drop {
          when "../../mpcp-mode = 'onu'";
          type yang:counter64;
          config false;
          description
            "
        This object reflects the number of frame drop events from
        the corresponding upstream transmission queue. This object
        is incremented by one for each frame dropped in the
        associated queue.

        The queue index matches the queue number in REPORT MPCPDU,
        as defined in IEEE Std 802.3, Clause 64 and Clause 77.

        This object is applicable for an ONU only. At the ONU, it
        has a distinct value for each queue.

        Discontinuities in the value of this counter can occur at
        re-initialization of the management system, and at other times as
        indicated by the value of the 'discontinuity-time' leaf defined in
        the ietf-interfaces YANG module (RFC 7223).";
          reference
            "IEEE Std 802.3.1, dot3ExtPkgStatDroppedFramesQueue";

        }
      }  // list mpcp-queues

      leaf fec-capability {
        if-feature fec-supported;
        type fec-capability;
        config false;
        description
          "This object is used to identify whether the given interface
      is cable of suppporting FEC or not.";
      }

      leaf mpcp-mode {
        type mpcp-mode;
        config false;
        description
          "This object is used to identify the operational state of the
         MultiPoint MAC Control sublayer as defined in
         IEEE Std 802.3, Clause 64 and Clause 77.

         Reading 'olt' for an OLT (controller) mode and 'onu' for an ONU
         (client) mode.

         This object is used to identify the operational mode for the
         MPCP objects.

         This object is applicable for an OLT, with the same value for
         all logical links, and for an ONU. ";
        reference
          "IEEE Std 802.3, 30.3.5.1.3";

      }

      leaf mpcp-sync-time {
        type uint32;
        units "TQ (16ns)";
        config false;
        description
          "This object reports the 'sync lock time' of the OLT
         receiver in units of Time Quanta (TQ; 1 TQ = 16 ns; see
         IEEE Std 802.3, Clause 64 and Clause 77).

         The value returned shall be equal to [sync lock time ns]/16,
         rounded up to the nearest TQ. If this value exceeds
         4,294,967,295 TQ, the value 4,294,967,295 TQ shall be returned.

         This object is applicable for an OLT, with distinct values for
         all logical links, and for an ONU. ";
        reference
          "IEEE Std 802.3, 64.3.3.2";

      }

      leaf mpcp-logical-link-id {
        type mpcp-supported;
        config false;
        description
          "This object is used to identify the operational state of the
         MultiPoint MAC Control sublayer as defined in
         IEEE Std 802.3, Clause 64 and Clause 77.

         Reading 'olt' for an OLT (controller) mode and 'onu' for an ONU
         (client) mode.

         This object is used to identify the operational mode for the
         MPCP objects.

         This object is applicable for an OLT, with the same value for
         all logical links, and for an ONU. ";
        reference
          "IEEE Std 802.3, 30.3.5.1.3";

      }

      leaf mpcp-remote-mac-address {
        type yang:mac-address;
        config false;
        description
          "This object identifies the source_address parameter of the
         last MPCPDUs passed to the MAC Control. This value is updated
         on reception of a valid frame with:

         1) a destination Field equal to the reserved multicast address
         for MAC Control as specified in IEEE Std 802.3, Annex 31A;

         2) the lengthOrType field value equal to the reserved Type for
         MAC Control as specified in IEEE Std 802.3, Annex 31A;

         3) an MPCP Control opcode value equal to the subtype reserved for
         MPCP as specified in IEEE Std 802.3, Annex 31A.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.

         The value reflects the MAC address of the remote entity and
         therefore the OLT holds a value for each LLID, which is
         the MAC address of the ONU.

         The ONU has a single value that is the OLT MAC address. ";
        reference
          "IEEE Std 802.3, 30.3.5.1.5";

      }

      leaf mpcp-logical-link-state {
        type mpcp-logical-link-state;
        config false;
        description
          "This object identifies the registration state of the
         MultiPoint MAC Control sublayer as defined in
         IEEE Std 802.3, Clause 64 and Clause 77.

         When this object has the enumeration 'unregistered', the
         interface is unregistered and may be used for registering
         a link partner.

         When this object has the enumeration 'registering',
         the interface is in the process of registering a link-partner.

         When this object has the enumeration 'registered', the
         interface has an established link-partner.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "IEEE Std 802.3, 30.3.5.1.6";

      }

      leaf mpcp-elapsed-time-out {
        type uint32;
        units "TQ (16ns)";
        config false;
        description
          "This object reports the interval from the last MPCP frame
         transmission in increments of Time Quanta (TQ; 1 TQ = 16 ns;
         see IEEE Std 802.3, Clause 64 and Clause 77).

         The value returned shall be equal to [interval from last MPCP
         frame transmission on this Ethernet interface, expressed
         in ns]/16. If this value exceeds 4,294,967,295 TQ, the value
         4,294,967,295 TQ shall be returned.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "IEEE Std 802.3, 30.3.5.1.19";

      }

      leaf mpcp-elapsed-time-in {
        type uint32;
        units "TQ (16ns)";
        config false;
        description
          "This object reports the interval from the last MPCP frame
         reception in increments of Time Quanta (TQ; 1 TQ = 16 ns; see
         IEEE Std 802.3, Clause 64 and Clause 77).

         The value returned shall be equal to [interval from last MPCP
         frame reception on this Ethernet interface, expressed in
         ns]/16. If this value exceeds 4,294,967,295 TQ, the value
         4,294,967,295 TQ shall be returned.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "IEEE Std 802.3, 30.3.5.1.20";

      }

      leaf mpcp-round-trip-time {
        type uint16;
        units "TQ (16ns)";
        config false;
        description
          "This object reports the MPCP round trip time in increments
         of Time Quanta (TQ; 1 TQ = 16 ns; see IEEE Std 802.3,
         Clause 64 and Clause 77).

         The value returned shall be equal to [round trip time in ns]/16.
         If this value exceeds 65,535 TQ, the value 65,535 TQ shall be
         returned.

         This object is applicable for an OLT. It has a distinct value for
         each logical link. ";
        reference
          "IEEE Std 802.3, 30.3.5.1.21";

      }

      leaf mpcp-maximum-grant-count {
        type uint8;
        config false;
        description
          "This object reports the maximum number of grants that an
         ONU can store for handling. The maximum number of grants that
         an ONU can store for handling has a range of 0 to 255.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link. At the OLT, the value should be zero.";
        reference
          "IEEE Std 802.3, 30.3.5.1.24";

      }

      leaf mpcp-logical-link-count {
        type mpcp-llid-count;
        units "LLID";
        config false;
        description
          "This object reflects the number of logical links registered
         on the OLT / ONU. The LLID field, as defined in the
         IEEE Std 802.3, Clause 65 and Clause 76, is a 2-byte register
         (15-bit field and a broadcast bit) limiting the number of
         logical links to 32,768.

         This object is initialized to the value of 0 when the
         OLT / ONU is powered up.

         This object is applicable for an OLT and an ONU. It has the same
         value for all logical links.";
        reference
          "TBD";

      }

      leaf mpcp-maximum-queue-count-per-report {
        type mpcp-maximum-queue-count-per-report;
        config false;
        description
          "This object reflects the maximum number of queues (0-7) that can be
         accepted by the OLT in a single REPORT MPCPDU, as defined in
         IEEE Std 802.3, Clause 64 and Clause 77.

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "TBD";

      }

      leaf ompe-mode {
        type ompe-mode;
        config false;
        description
          "This object indicates the mode of operation of the
         Reconciliation Sublayer for Point-to-Point Emulation (see
         IEEE Std 802.3, 65.1 or 76.2 as appropriate).

         The value of 'unknown' is assigned in initialization; true
         state or type is not yet known.

         The value of 'olt' is assigned when the sublayer is operating
         in OLT mode.

         The value of 'onu' is assigned when the sublayer is operating
         in ONU mode.

         This object is applicable for an OLT and an ONU. It has the same
         value for each logical link. ";
        reference
          "IEEE Std 802.3, 30.3.7.1.2";

      }

      leaf trx-data-reliable {
        if-feature trx-power-level-reporting-supported;
        type boolean;
        config false;
        description
          "This object indicates whether data contained in individual
         counters in 'statistics-trx' container are reliable (when read
         as 'true') or not (when read as 'false').

         This object is applicable for an OLT and an ONU. It has a distinct
         value for each logical link.";
        reference
          "IEEE Std 802.3.1, dot3ExtPkgOptIfSuspectedFlag";

      }
    }
  }  // module ieee802-ethernet-pon