power: clean common header
[dpdk.git] / drivers / event / sw / sw_evdev.h
index 7c157c7..5796e31 100644 (file)
@@ -1,40 +1,12 @@
-/*-
- *   BSD LICENSE
- *
- *   Copyright(c) 2016-2017 Intel Corporation. All rights reserved.
- *
- *   Redistribution and use in source and binary forms, with or without
- *   modification, are permitted provided that the following conditions
- *   are met:
- *
- *     * Redistributions of source code must retain the above copyright
- *       notice, this list of conditions and the following disclaimer.
- *     * Redistributions in binary form must reproduce the above copyright
- *       notice, this list of conditions and the following disclaimer in
- *       the documentation and/or other materials provided with the
- *       distribution.
- *     * Neither the name of Intel Corporation nor the names of its
- *       contributors may be used to endorse or promote products derived
- *       from this software without specific prior written permission.
- *
- *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
- *   A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
- *   OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- *   SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
- *   LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- *   DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- *   THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- *   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2016-2017 Intel Corporation
  */
 
 #ifndef _SW_EVDEV_H_
 #define _SW_EVDEV_H_
 
 #include <rte_eventdev.h>
-#include <rte_eventdev_pmd.h>
+#include <rte_eventdev_pmd_vdev.h>
 #include <rte_atomic.h>
 
 #define SW_DEFAULT_CREDIT_QUANTA 32
 
 #define EVENTDEV_NAME_SW_PMD event_sw
 #define SW_PMD_NAME RTE_STR(event_sw)
+#define SW_PMD_NAME_MAX 64
 
 #define SW_SCHED_TYPE_DIRECT (RTE_SCHED_TYPE_PARALLEL + 1)
 
+#define SW_NUM_POLL_BUCKETS (MAX_SW_CONS_Q_DEPTH >> SW_DEQ_STAT_BUCKET_SHIFT)
+
 enum {
        QE_FLAG_VALID_SHIFT = 0,
        QE_FLAG_COMPLETE_SHIFT,
@@ -147,6 +122,7 @@ struct sw_qid {
        uint32_t cq_num_mapped_cqs;
        uint32_t cq_next_tx; /* cq to write next (non-atomic) packet */
        uint32_t cq_map[SW_PORTS_MAX];
+       uint64_t to_port[SW_PORTS_MAX];
 
        /* Track flow ids for atomic load balancing */
        struct sw_fid_t fids[SW_QID_NUM_FIDS];
@@ -187,9 +163,9 @@ struct sw_port {
        int16_t num_ordered_qids;
 
        /** Ring and buffer for pulling events from workers for scheduling */
-       struct qe_ring *rx_worker_ring __rte_cache_aligned;
+       struct rte_event_ring *rx_worker_ring __rte_cache_aligned;
        /** Ring and buffer for pushing packets to workers after scheduling */
-       struct qe_ring *cq_worker_ring;
+       struct rte_event_ring *cq_worker_ring;
 
        /* hole */
 
@@ -203,7 +179,7 @@ struct sw_port {
        uint64_t avg_pkt_ticks;      /* tracks average over NUM_SAMPLES burst */
        uint64_t total_polls;        /* how many polls were counted in stats */
        uint64_t zero_polls;         /* tracks polls returning nothing */
-       uint32_t poll_buckets[MAX_SW_CONS_Q_DEPTH >> SW_DEQ_STAT_BUCKET_SHIFT];
+       uint32_t poll_buckets[SW_NUM_POLL_BUCKETS];
                /* bucket values in 4s for shorter reporting */
 
        /* History list structs, containing info on pkts egressed to worker */
@@ -230,6 +206,11 @@ struct sw_evdev {
 
        uint32_t port_count;
        uint32_t qid_count;
+       uint32_t xstats_count;
+       struct sw_xstats_entry *xstats;
+       uint32_t xstats_count_mode_dev;
+       uint32_t xstats_count_mode_port;
+       uint32_t xstats_count_mode_queue;
 
        /* Contains all ports - load balanced and directed */
        struct sw_port ports[SW_PORTS_MAX] __rte_cache_aligned;
@@ -261,6 +242,16 @@ struct sw_evdev {
 
        uint8_t started;
        uint32_t credit_update_quanta;
+
+       /* store num stats and offset of the stats for each port */
+       uint16_t xstats_count_per_port[SW_PORTS_MAX];
+       uint16_t xstats_offset_for_port[SW_PORTS_MAX];
+       /* store num stats and offset of the stats for each queue */
+       uint16_t xstats_count_per_qid[RTE_EVENT_MAX_QUEUES_PER_DEV];
+       uint16_t xstats_offset_for_qid[RTE_EVENT_MAX_QUEUES_PER_DEV];
+
+       uint32_t service_id;
+       char service_name[SW_PMD_NAME_MAX];
 };
 
 static inline struct sw_evdev *
@@ -283,5 +274,22 @@ uint16_t sw_event_dequeue(void *port, struct rte_event *ev, uint64_t wait);
 uint16_t sw_event_dequeue_burst(void *port, struct rte_event *ev, uint16_t num,
                        uint64_t wait);
 void sw_event_schedule(struct rte_eventdev *dev);
+int sw_xstats_init(struct sw_evdev *dev);
+int sw_xstats_uninit(struct sw_evdev *dev);
+int sw_xstats_get_names(const struct rte_eventdev *dev,
+       enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
+       struct rte_event_dev_xstats_name *xstats_names,
+       unsigned int *ids, unsigned int size);
+int sw_xstats_get(const struct rte_eventdev *dev,
+               enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
+               const unsigned int ids[], uint64_t values[], unsigned int n);
+uint64_t sw_xstats_get_by_name(const struct rte_eventdev *dev,
+               const char *name, unsigned int *id);
+int sw_xstats_reset(struct rte_eventdev *dev,
+               enum rte_event_dev_xstats_mode mode,
+               int16_t queue_port_id,
+               const uint32_t ids[],
+               uint32_t nb_ids);
+
 
 #endif /* _SW_EVDEV_H_ */