On 16 October 2015 at 15:25, Maxim Uvarov <[email protected]> wrote:

> Signed-off-by: Maxim Uvarov <[email protected]>
> ---
>  include/odp/api/packet_io_stats.h              | 166
> +++++++++++++++++++++++++
>  platform/linux-generic/include/odp/packet_io.h |   1 +
>  2 files changed, 167 insertions(+)
>  create mode 100644 include/odp/api/packet_io_stats.h
>
> diff --git a/include/odp/api/packet_io_stats.h
> b/include/odp/api/packet_io_stats.h
> new file mode 100644
> index 0000000..94af18c
> --- /dev/null
> +++ b/include/odp/api/packet_io_stats.h
> @@ -0,0 +1,166 @@
> +/* Copyright (c) 2015, Linaro Limited
> + * All rights reserved.
> + *
> + * SPDX-License-Identifier:     BSD-3-Clause
> + */
> +
> +/**
> + * @file
> + *
> + * ODP Packet IO
> + */
> +
> +#ifndef ODP_API_PACKET_IO_STATS_H_
> +#define ODP_API_PACKET_IO_STATS_H_
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +/** @defgroup odp_packet_io ODP PACKET IO
> + *  @{
> + */
> +
> +/**
> + * Packet IO statistics
> + *
> + * Packet IO statictics counters follow RFCs for Management Information
> Base
> + * (MIB)for use with network management protocols in the Internet
> community:
> + * https://tools.ietf.org/html/rfc3635
> + * https://tools.ietf.org/html/rfc2863
> + * https://tools.ietf.org/html/rfc2819
> + */
> +typedef struct odp_pktio_stats_t {
> +       /**
> +        * The number of octets in valid MAC frames received on this
> interface,
> +        * including the MAC header and FCS. See ifHCInOctets counter
> +        * description in RFC 3635 for details.
> +        */
> +       uint64_t in_octets;
> +       /**
> +        * The number of packets, delivered by this sub-layer to a higher
> +        * (sub-)layer, which were not addressed to a multicast or
> broadcast
> +        * address at this sub-layer. See InUcastPkts in RFC 2863.
> +        */
> +       uint64_t in_ucast_pkts;
> +       /**
> +        * The number of inbound packets which were chosen to be discarded
> +        * even though no errors had been detected to preven their being
> +        * deliverable to a higher-layer protocol.  One possible reason for
> +        * discarding such a packet could be to free up buffer space.
> +        * See InDiscards in RFC 2863.
> +        */
> +       uint64_t in_discards;
> +       /**
> +        * The sum for this interface of AlignmentErrors, FCSErrors,
> FrameTooLongs,
> +        * InternalMacReceiveErrors. See InErrors in RFC 3635.
> +        */
> +       uint64_t in_errors;
> +       /**
> +        * For packet-oriented interfaces, the number of packets received
> via
> +        * the interface which were discarded because of an unknown or
> +        * unsupported protocol.  For character-oriented or fixed-length
> +        * interfaces that support protocol multiplexing the number of
> +        * transmission units received via the interface which were
> discarded
> +        * because of an unknown or unsupported protocol.  For any
> interface
> +        * that does not support protocol multiplexing, this counter will
> always
> +        * be 0. See InUnknownProtos in RFC 2863.
> +        */
> +       uint64_t in_unknown_protos;
> +       /**
> +        * The number of octets transmitted in valid MAC frames on this
> +        * interface, including the MAC header and FCS.  This does include
> +        * the number of octets in valid MAC Control frames transmitted on
> +        * this interface. See OutOctets in RFC 3635.
> +        */
> +       uint64_t out_octets;
> +       /**
> +        * The total number of packets that higher-level protocols
> requested
> +        * be transmitted, and which were not addressed to a multicast or
> +        * broadcast address at this sub-layer, including those that were
> +        * discarded or not sent. does not include MAC Control frames.
> +        * See OutUcastPkts in RFC 2863, 3635.
> +        */
> +       uint64_t out_ucast_pkts;
> +       /**
> +        * The number of outbound packets which were chosen to be discarded
> +        * even though no errors had been detected to prevent their being
> +        * transmitted.  One possible reason for discarding such a packet
> could
> +        * be to free up buffer space.  See  OutDiscards in  RFC 2863.
> +        */
> +       uint64_t out_discards;
> +       /**
> +        * The sum for this interface of SQETestErrors, LateCollisions,
> +        * ExcessiveCollisions, InternalMacTransmitErrors and
> +        * CarrierSenseErrors. See OutErrors in RFC 3635.
> +        */
> +       uint64_t out_errors;
> +} odp_pktio_stats_t;
> +
> +/** Bit in odp_pktio_stats_mask_t defines if in_octets counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_IN_OCTETS      (1 << 0)
> +/** Bit in odp_pktio_stats_mask_t defines if in_ucast_pkts counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_IN_UCAST_PKTS  (1 << 1)
> +/** Bit in odp_pktio_stats_mask_t defines if in_discards counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_IN_DISCARDS    (1 << 2)
> +/** Bit in odp_pktio_stats_mask_t defines if in_errors counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_IN_ERRORS      (1 << 3)
> +/** Bit in odp_pktio_stats_mask_t defines if in_unknown_protos counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_IN_UPROTOS     (1 << 4)
> +/** Bit in odp_pktio_stats_mask_t defines if out_octets counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_OUT_OCTETS     (1 << 5)
> +/** Bit in odp_pktio_stats_mask_t defines if out_ucast_pkts counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_OUT_UCAST_PKTS (1 << 6)
> +/** Bit in odp_pktio_stats_mask_t defines if out_discards counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_OUT_DISCARDS   (1 << 7)
> +/** Bit in odp_pktio_stats_mask_t defines if out_errors counter
> + * of odp_pktio_stats_t struct is supported */
> +#define ODP_PKTIO_STATS_OUT_ERRORS     (1 << 8)
>
These definitions should be explicitly defined to mirror the order in which
the corresponding fields occur in the stats struct. They do mirror the
order now but it is not defined that it must be so. The reason is that we
might add fields to the stats struct and want to preserve some binary
compatibility (think e.g. separately maintained drivers that provide these
counters to the caller).

+
> +/**
> + * Mask type of supported counters by platform, defined as:
> + * ODP_PKTIO_STATS_xxxx
> + */
> +typedef uint32_t odp_pktio_stats_mask_t;
> +
> +/**
> + * Get statistics for pktio handle
> + *
> + * @param      pktio    Packet IO handle
> + * @param[out] *stats   Output buffer for counters
> + * @param[out] *mask    Output buffer for counters supported mask
> + * @retval  0 on success
> + * @retval <0 on failure
> + */
> +int odp_pktio_stats(odp_pktio_t pktio,
> +                   odp_pktio_stats_t *stats,
>
Mask should be a field in the stats structure, not a separate parameter.



> +                   odp_pktio_stats_mask_t *mask);
> +
> +/**
> + * Reset statistics for pktio handle
> + *
> + * @param      pktio    Packet IO handle
> + * @param      mask     Counters mask to reset
> + * @retval  0 on success
> + * @retval <0 on failure
> + *
> + */
> +int odp_pktio_stats_reset(odp_pktio_t pktio, odp_pktio_stats_mask_t mask);
> +
> +/**
> + * @}
> + */
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif
> diff --git a/platform/linux-generic/include/odp/packet_io.h
> b/platform/linux-generic/include/odp/packet_io.h
> index 1d690f5..18f8e78 100644
> --- a/platform/linux-generic/include/odp/packet_io.h
> +++ b/platform/linux-generic/include/odp/packet_io.h
> @@ -33,6 +33,7 @@ extern "C" {
>   */
>
>  #include <odp/api/packet_io.h>
> +#include <odp/api/packet_io_stats.h>
>
>  #ifdef __cplusplus
>  }
> --
> 1.9.1
>
> _______________________________________________
> lng-odp mailing list
> [email protected]
> https://lists.linaro.org/mailman/listinfo/lng-odp
>
_______________________________________________
lng-odp mailing list
[email protected]
https://lists.linaro.org/mailman/listinfo/lng-odp

Reply via email to