| /* |
| * Copyright (c) 2020-2021, The Linux Foundation. All rights reserved. |
| * |
| * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved. |
| * |
| * Permission to use, copy, modify, and/or distribute this software for any |
| * purpose with or without fee is hereby granted, provided that the above |
| * copyright notice and this permission notice appear in all copies. |
| * |
| * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
| * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
| * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
| * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
| * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
| * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
| * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
| */ |
| |
| #ifndef __NSS_DP_ARCH_H__ |
| #define __NSS_DP_ARCH_H__ |
| |
| #define NSS_DP_HAL_MAX_PORTS 2 |
| #define NSS_DP_HAL_START_IFNUM 0 |
| |
| /* |
| * Number of TX/RX queue supported |
| */ |
| #define NSS_DP_QUEUE_NUM 1 |
| |
| /* |
| * TX/RX NAPI budget |
| */ |
| #define NSS_DP_HAL_RX_NAPI_BUDGET 32 |
| #define NSS_DP_HAL_TX_NAPI_BUDGET 32 |
| |
| /* |
| * TCSR_GMAC_AXI_CACHE_OVERRIDE register size |
| */ |
| #define TCSR_GMAC_AXI_CACHE_OVERRIDE_REG_SIZE 4 |
| |
| /* |
| * TCSR_GMAC_AXI_CACHE_OVERRIDE Register offset |
| */ |
| #define TCSR_GMAC_AXI_CACHE_OVERRIDE_OFFSET 0x6224 |
| |
| /* |
| * Value for TCSR_GMAC_AXI_CACHE_OVERRIDE register |
| */ |
| #define TCSR_GMAC_AXI_CACHE_OVERRIDE_VALUE 0x05050505 |
| |
| /** |
| * nss_dp_hal_gmac_stats_rx |
| * Per-GMAC Rx statistics |
| */ |
| struct nss_dp_hal_gmac_stats_rx { |
| uint64_t rx_bytes; /**< Number of RX bytes */ |
| uint64_t rx_packets; /**< Number of RX packets */ |
| uint64_t rx_errors; /**< Number of RX errors */ |
| uint64_t rx_missed; /**< Number of RX packets missed by the DMA */ |
| uint64_t rx_descriptor_errors; /**< Number of RX descriptor errors */ |
| uint64_t rx_late_collision_errors; |
| /**< Number of RX late collision errors */ |
| uint64_t rx_dribble_bit_errors; /**< Number of RX dribble bit errors */ |
| uint64_t rx_length_errors; /**< Number of RX length errors */ |
| uint64_t rx_ip_header_errors; /**< Number of RX IP header errors read from rxdec */ |
| uint64_t rx_ip_payload_errors; /**< Number of RX IP payload errors */ |
| uint64_t rx_no_buffer_errors; /**< Number of RX no-buffer errors */ |
| uint64_t rx_transport_csum_bypassed; |
| /**< Number of RX packets where the transport checksum was bypassed */ |
| uint64_t rx_fifo_overflows; /**< Number of RX FIFO overflows signalled by the DMA */ |
| uint64_t rx_overflow_errors; /**< Number of Rx Overflow errors received from Rx descriptors */ |
| uint64_t rx_crc_errors; /**< Number of Rx CRC errors */ |
| uint64_t rx_skb_alloc_errors; /**< Number of Rx skb alocation errors */ |
| uint64_t rx_scatter_packets; /**< Number of received scattered frames successful */ |
| uint64_t rx_scatter_bytes; /**< Number of bytes received for scattered frames */ |
| uint64_t rx_scatter_errors; /**< Number of RX scatter errors */ |
| }; |
| |
| /** |
| * nss_dp_hal_gmac_stats_tx |
| * Per-GMAC Tx statistics |
| */ |
| struct nss_dp_hal_gmac_stats_tx { |
| uint64_t tx_bytes; /**< Number of TX bytes */ |
| uint64_t tx_packets; /**< Number of TX packets */ |
| uint64_t tx_collisions; /**< Number of TX collisions */ |
| uint64_t tx_errors; /**< Number of TX errors */ |
| uint64_t tx_jabber_timeout_errors; |
| /**< Number of TX jabber timeout errors */ |
| uint64_t tx_frame_flushed_errors; |
| /**< Number of TX frame flushed errors */ |
| uint64_t tx_loss_of_carrier_errors; |
| /**< Number of TX loss of carrier errors */ |
| uint64_t tx_no_carrier_errors; /**< Number of TX no carrier errors */ |
| uint64_t tx_late_collision_errors; |
| /**< Number of TX late collision errors */ |
| uint64_t tx_excessive_collision_errors; |
| /**< Number of TX excessive collision errors */ |
| uint64_t tx_excessive_deferral_errors; |
| /**< Number of TX excessive deferral errors */ |
| uint64_t tx_underflow_errors; /**< Number of TX underflow errors */ |
| uint64_t tx_ip_header_errors; /**< Number of TX IP header errors */ |
| uint64_t tx_ip_payload_errors; /**< Number of TX IP payload errors */ |
| uint64_t tx_dropped; /**< Number of TX dropped packets */ |
| uint64_t tx_ts_create_errors; /**< Number of tx timestamp creation errors */ |
| uint64_t tx_desc_not_avail; /**< TX descriptor unavailable */ |
| uint64_t tx_nr_frags_pkts; /**< Number of Tx scatter packets with nr_frags */ |
| uint64_t tx_fraglist_pkts; /**< Number of Tx scatter packets with frag_list */ |
| uint64_t tx_packets_requeued; /**< Number of Tx packets requeued */ |
| }; |
| |
| /** |
| * nss_dp_hal_gmac_stats |
| * The per-GMAC statistics structure. |
| */ |
| struct nss_dp_hal_gmac_stats { |
| struct nss_dp_hal_gmac_stats_rx rx_stats; |
| /**< GMAC Rx statistics */ |
| struct nss_dp_hal_gmac_stats_tx tx_stats; |
| /**< GMAC Tx statistics */ |
| uint64_t hw_errs[10]; /**< GMAC DMA error counters */ |
| }; |
| |
| extern struct nss_dp_data_plane_ops nss_dp_gmac_ops; |
| |
| #endif /* __NSS_DP_ARCH_H__ */ |