net/hns3: fix Tx interrupt when enabling Rx interrupt
[dpdk.git] / drivers / net / ena / ena_ethdev.h
index 713cdea..af5eeea 100644 (file)
@@ -1,35 +1,7 @@
-/*-
-* BSD LICENSE
-*
-* Copyright (c) 2015-2016 Amazon.com, Inc. or its affiliates.
-* 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 copyright holder 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) 2015-2019 Amazon.com, Inc. or its affiliates.
+ * All rights reserved.
+ */
 
 #ifndef _ENA_ETHDEV_H_
 #define _ENA_ETHDEV_H_
@@ -79,6 +51,28 @@ struct ena_calc_queue_size_ctx {
        u16 max_rx_sgl_size;
 };
 
+struct ena_stats_tx {
+       u64 cnt;
+       u64 bytes;
+       u64 prepare_ctx_err;
+       u64 linearize;
+       u64 linearize_failed;
+       u64 tx_poll;
+       u64 doorbells;
+       u64 bad_req_id;
+       u64 available_desc;
+};
+
+struct ena_stats_rx {
+       u64 cnt;
+       u64 bytes;
+       u64 refill_partial;
+       u64 bad_csum;
+       u64 mbuf_alloc_fail;
+       u64 bad_desc_num;
+       u64 bad_req_id;
+};
+
 struct ena_ring {
        u16 next_to_use;
        u16 next_to_clean;
@@ -116,6 +110,13 @@ struct ena_ring {
        struct ena_adapter *adapter;
        uint64_t offloads;
        u16 sgl_size;
+
+       union {
+               struct ena_stats_rx rx_stats;
+               struct ena_stats_tx tx_stats;
+       };
+
+       unsigned int numa_socket_id;
 } __rte_cache_aligned;
 
 enum ena_adapter_state {
@@ -131,43 +132,19 @@ struct ena_driver_stats {
        rte_atomic64_t ierrors;
        rte_atomic64_t oerrors;
        rte_atomic64_t rx_nombuf;
+       rte_atomic64_t rx_drops;
 };
 
 struct ena_stats_dev {
-       u64 tx_timeout;
-       u64 io_suspend;
-       u64 io_resume;
        u64 wd_expired;
-       u64 interface_up;
-       u64 interface_down;
-       u64 admin_q_pause;
-};
-
-struct ena_stats_tx {
-       u64 cnt;
-       u64 bytes;
-       u64 queue_stop;
-       u64 prepare_ctx_err;
-       u64 queue_wakeup;
-       u64 dma_mapping_err;
-       u64 linearize;
-       u64 linearize_failed;
-       u64 tx_poll;
-       u64 doorbells;
-       u64 missing_tx_comp;
-       u64 bad_req_id;
+       u64 dev_start;
+       u64 dev_stop;
 };
 
-struct ena_stats_rx {
-       u64 cnt;
-       u64 bytes;
-       u64 refil_partial;
-       u64 bad_csum;
-       u64 page_alloc_fail;
-       u64 skb_alloc_fail;
-       u64 dma_mapping_err;
-       u64 bad_desc_num;
-       u64 small_copy_len_pkt;
+struct ena_offloads {
+       bool tso4_supported;
+       bool tx_csum_supported;
+       bool rx_csum_supported;
 };
 
 /* board specific private data structure */
@@ -191,11 +168,11 @@ struct ena_adapter {
 
        u16 num_queues;
        u16 max_mtu;
-       u8 tso4_supported;
+       struct ena_offloads offloads;
 
        int id_number;
        char name[ENA_NAME_MAX_LEN];
-       u8 mac_addr[ETHER_ADDR_LEN];
+       u8 mac_addr[RTE_ETHER_ADDR_LEN];
 
        void *regs;
        void *dev_mem_base;
@@ -216,6 +193,8 @@ struct ena_adapter {
        uint64_t timestamp_wd;
        uint64_t keep_alive_timeout;
 
+       struct ena_stats_dev dev_stats;
+
        bool trigger_reset;
 
        bool wd_state;