18c2ecf20Sopenharmony_ci/******************************************************************************
28c2ecf20Sopenharmony_ci * This software may be used and distributed according to the terms of
38c2ecf20Sopenharmony_ci * the GNU General Public License (GPL), incorporated herein by reference.
48c2ecf20Sopenharmony_ci * Drivers based on or derived from this code fall under the GPL and must
58c2ecf20Sopenharmony_ci * retain the authorship, copyright and license notice.  This file is not
68c2ecf20Sopenharmony_ci * a complete program and may only be used when the entire operating
78c2ecf20Sopenharmony_ci * system is licensed under the GPL.
88c2ecf20Sopenharmony_ci * See the file COPYING in this distribution for more information.
98c2ecf20Sopenharmony_ci *
108c2ecf20Sopenharmony_ci * vxge-traffic.h: Driver for Exar Corp's X3100 Series 10GbE PCIe I/O
118c2ecf20Sopenharmony_ci *                 Virtualized Server Adapter.
128c2ecf20Sopenharmony_ci * Copyright(c) 2002-2010 Exar Corp.
138c2ecf20Sopenharmony_ci ******************************************************************************/
148c2ecf20Sopenharmony_ci#ifndef VXGE_TRAFFIC_H
158c2ecf20Sopenharmony_ci#define VXGE_TRAFFIC_H
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci#include "vxge-reg.h"
188c2ecf20Sopenharmony_ci#include "vxge-version.h"
198c2ecf20Sopenharmony_ci
208c2ecf20Sopenharmony_ci#define VXGE_HW_DTR_MAX_T_CODE		16
218c2ecf20Sopenharmony_ci#define VXGE_HW_ALL_FOXES		0xFFFFFFFFFFFFFFFFULL
228c2ecf20Sopenharmony_ci#define VXGE_HW_INTR_MASK_ALL		0xFFFFFFFFFFFFFFFFULL
238c2ecf20Sopenharmony_ci#define	VXGE_HW_MAX_VIRTUAL_PATHS	17
248c2ecf20Sopenharmony_ci
258c2ecf20Sopenharmony_ci#define VXGE_HW_MAC_MAX_MAC_PORT_ID	2
268c2ecf20Sopenharmony_ci
278c2ecf20Sopenharmony_ci#define VXGE_HW_DEFAULT_32		0xffffffff
288c2ecf20Sopenharmony_ci/* frames sizes */
298c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_802_2_SIZE	3
308c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_SNAP_SIZE	5
318c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_VLAN_SIZE	4
328c2ecf20Sopenharmony_ci#define VXGE_HW_MAC_HEADER_MAX_SIZE \
338c2ecf20Sopenharmony_ci			(ETH_HLEN + \
348c2ecf20Sopenharmony_ci			VXGE_HW_HEADER_802_2_SIZE + \
358c2ecf20Sopenharmony_ci			VXGE_HW_HEADER_VLAN_SIZE + \
368c2ecf20Sopenharmony_ci			VXGE_HW_HEADER_SNAP_SIZE)
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci/* 32bit alignments */
398c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_ETHERNET_II_802_3_ALIGN		2
408c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_802_2_SNAP_ALIGN			2
418c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_802_2_ALIGN			3
428c2ecf20Sopenharmony_ci#define VXGE_HW_HEADER_SNAP_ALIGN			1
438c2ecf20Sopenharmony_ci
448c2ecf20Sopenharmony_ci#define VXGE_HW_L3_CKSUM_OK				0xFFFF
458c2ecf20Sopenharmony_ci#define VXGE_HW_L4_CKSUM_OK				0xFFFF
468c2ecf20Sopenharmony_ci
478c2ecf20Sopenharmony_ci/* Forward declarations */
488c2ecf20Sopenharmony_cistruct __vxge_hw_device;
498c2ecf20Sopenharmony_cistruct __vxge_hw_vpath_handle;
508c2ecf20Sopenharmony_cistruct vxge_hw_vp_config;
518c2ecf20Sopenharmony_cistruct __vxge_hw_virtualpath;
528c2ecf20Sopenharmony_cistruct __vxge_hw_channel;
538c2ecf20Sopenharmony_cistruct __vxge_hw_fifo;
548c2ecf20Sopenharmony_cistruct __vxge_hw_ring;
558c2ecf20Sopenharmony_cistruct vxge_hw_ring_attr;
568c2ecf20Sopenharmony_cistruct vxge_hw_mempool;
578c2ecf20Sopenharmony_ci
588c2ecf20Sopenharmony_ci#ifndef TRUE
598c2ecf20Sopenharmony_ci#define TRUE 1
608c2ecf20Sopenharmony_ci#endif
618c2ecf20Sopenharmony_ci
628c2ecf20Sopenharmony_ci#ifndef FALSE
638c2ecf20Sopenharmony_ci#define FALSE 0
648c2ecf20Sopenharmony_ci#endif
658c2ecf20Sopenharmony_ci
668c2ecf20Sopenharmony_ci/*VXGE_HW_STATUS_H*/
678c2ecf20Sopenharmony_ci
688c2ecf20Sopenharmony_ci#define VXGE_HW_EVENT_BASE			0
698c2ecf20Sopenharmony_ci#define VXGE_LL_EVENT_BASE			100
708c2ecf20Sopenharmony_ci
718c2ecf20Sopenharmony_ci/**
728c2ecf20Sopenharmony_ci * enum vxge_hw_event- Enumerates slow-path HW events.
738c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_UNKNOWN: Unknown (and invalid) event.
748c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_SERR: Serious vpath hardware error event.
758c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_ECCERR: vpath ECC error event.
768c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_VPATH_ERR: Error local to the respective vpath
778c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_FIFO_ERR: FIFO Doorbell fifo error.
788c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_SRPCIM_SERR: srpcim hardware error event.
798c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_MRPCIM_SERR: mrpcim hardware error event.
808c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_MRPCIM_ECCERR: mrpcim ecc error event.
818c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_RESET_START: Privileged entity is starting device reset
828c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_RESET_COMPLETE: Device reset has been completed
838c2ecf20Sopenharmony_ci * @VXGE_HW_EVENT_SLOT_FREEZE: Slot-freeze event. Driver tries to distinguish
848c2ecf20Sopenharmony_ci * slot-freeze from the rest critical events (e.g. ECC) when it is
858c2ecf20Sopenharmony_ci * impossible to PIO read "through" the bus, i.e. when getting all-foxes.
868c2ecf20Sopenharmony_ci *
878c2ecf20Sopenharmony_ci * enum vxge_hw_event enumerates slow-path HW eventis.
888c2ecf20Sopenharmony_ci *
898c2ecf20Sopenharmony_ci * See also: struct vxge_hw_uld_cbs{}, vxge_uld_link_up_f{},
908c2ecf20Sopenharmony_ci * vxge_uld_link_down_f{}.
918c2ecf20Sopenharmony_ci */
928c2ecf20Sopenharmony_cienum vxge_hw_event {
938c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_UNKNOWN		= 0,
948c2ecf20Sopenharmony_ci	/* HW events */
958c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_RESET_START	= VXGE_HW_EVENT_BASE + 1,
968c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_RESET_COMPLETE	= VXGE_HW_EVENT_BASE + 2,
978c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_LINK_DOWN		= VXGE_HW_EVENT_BASE + 3,
988c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_LINK_UP		= VXGE_HW_EVENT_BASE + 4,
998c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_ALARM_CLEARED	= VXGE_HW_EVENT_BASE + 5,
1008c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_ECCERR		= VXGE_HW_EVENT_BASE + 6,
1018c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_MRPCIM_ECCERR	= VXGE_HW_EVENT_BASE + 7,
1028c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_FIFO_ERR		= VXGE_HW_EVENT_BASE + 8,
1038c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_VPATH_ERR		= VXGE_HW_EVENT_BASE + 9,
1048c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_CRITICAL_ERR	= VXGE_HW_EVENT_BASE + 10,
1058c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_SERR		= VXGE_HW_EVENT_BASE + 11,
1068c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_SRPCIM_SERR	= VXGE_HW_EVENT_BASE + 12,
1078c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_MRPCIM_SERR	= VXGE_HW_EVENT_BASE + 13,
1088c2ecf20Sopenharmony_ci	VXGE_HW_EVENT_SLOT_FREEZE	= VXGE_HW_EVENT_BASE + 14,
1098c2ecf20Sopenharmony_ci};
1108c2ecf20Sopenharmony_ci
1118c2ecf20Sopenharmony_ci#define VXGE_HW_SET_LEVEL(a, b) (((a) > (b)) ? (a) : (b))
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci/*
1148c2ecf20Sopenharmony_ci * struct vxge_hw_mempool_dma - Represents DMA objects passed to the
1158c2ecf20Sopenharmony_ci	caller.
1168c2ecf20Sopenharmony_ci */
1178c2ecf20Sopenharmony_cistruct vxge_hw_mempool_dma {
1188c2ecf20Sopenharmony_ci	dma_addr_t			addr;
1198c2ecf20Sopenharmony_ci	struct pci_dev *handle;
1208c2ecf20Sopenharmony_ci	struct pci_dev *acc_handle;
1218c2ecf20Sopenharmony_ci};
1228c2ecf20Sopenharmony_ci
1238c2ecf20Sopenharmony_ci/*
1248c2ecf20Sopenharmony_ci * vxge_hw_mempool_item_f  - Mempool item alloc/free callback
1258c2ecf20Sopenharmony_ci * @mempoolh: Memory pool handle.
1268c2ecf20Sopenharmony_ci * @memblock: Address of memory block
1278c2ecf20Sopenharmony_ci * @memblock_index: Index of memory block
1288c2ecf20Sopenharmony_ci * @item: Item that gets allocated or freed.
1298c2ecf20Sopenharmony_ci * @index: Item's index in the memory pool.
1308c2ecf20Sopenharmony_ci * @is_last: True, if this item is the last one in the pool; false - otherwise.
1318c2ecf20Sopenharmony_ci * userdata: Per-pool user context.
1328c2ecf20Sopenharmony_ci *
1338c2ecf20Sopenharmony_ci * Memory pool allocation/deallocation callback.
1348c2ecf20Sopenharmony_ci */
1358c2ecf20Sopenharmony_ci
1368c2ecf20Sopenharmony_ci/*
1378c2ecf20Sopenharmony_ci * struct vxge_hw_mempool - Memory pool.
1388c2ecf20Sopenharmony_ci */
1398c2ecf20Sopenharmony_cistruct vxge_hw_mempool {
1408c2ecf20Sopenharmony_ci
1418c2ecf20Sopenharmony_ci	void (*item_func_alloc)(
1428c2ecf20Sopenharmony_ci	struct vxge_hw_mempool *mempoolh,
1438c2ecf20Sopenharmony_ci	u32			memblock_index,
1448c2ecf20Sopenharmony_ci	struct vxge_hw_mempool_dma	*dma_object,
1458c2ecf20Sopenharmony_ci	u32			index,
1468c2ecf20Sopenharmony_ci	u32			is_last);
1478c2ecf20Sopenharmony_ci
1488c2ecf20Sopenharmony_ci	void		*userdata;
1498c2ecf20Sopenharmony_ci	void		**memblocks_arr;
1508c2ecf20Sopenharmony_ci	void		**memblocks_priv_arr;
1518c2ecf20Sopenharmony_ci	struct vxge_hw_mempool_dma	*memblocks_dma_arr;
1528c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh;
1538c2ecf20Sopenharmony_ci	u32			memblock_size;
1548c2ecf20Sopenharmony_ci	u32			memblocks_max;
1558c2ecf20Sopenharmony_ci	u32			memblocks_allocated;
1568c2ecf20Sopenharmony_ci	u32			item_size;
1578c2ecf20Sopenharmony_ci	u32			items_max;
1588c2ecf20Sopenharmony_ci	u32			items_initial;
1598c2ecf20Sopenharmony_ci	u32			items_current;
1608c2ecf20Sopenharmony_ci	u32			items_per_memblock;
1618c2ecf20Sopenharmony_ci	void		**items_arr;
1628c2ecf20Sopenharmony_ci	u32			items_priv_size;
1638c2ecf20Sopenharmony_ci};
1648c2ecf20Sopenharmony_ci
1658c2ecf20Sopenharmony_ci#define	VXGE_HW_MAX_INTR_PER_VP				4
1668c2ecf20Sopenharmony_ci#define	VXGE_HW_VPATH_INTR_TX				0
1678c2ecf20Sopenharmony_ci#define	VXGE_HW_VPATH_INTR_RX				1
1688c2ecf20Sopenharmony_ci#define	VXGE_HW_VPATH_INTR_EINTA			2
1698c2ecf20Sopenharmony_ci#define	VXGE_HW_VPATH_INTR_BMAP				3
1708c2ecf20Sopenharmony_ci
1718c2ecf20Sopenharmony_ci#define VXGE_HW_BLOCK_SIZE				4096
1728c2ecf20Sopenharmony_ci
1738c2ecf20Sopenharmony_ci/**
1748c2ecf20Sopenharmony_ci * struct vxge_hw_tim_intr_config - Titan Tim interrupt configuration.
1758c2ecf20Sopenharmony_ci * @intr_enable: Set to 1, if interrupt is enabled.
1768c2ecf20Sopenharmony_ci * @btimer_val: Boundary Timer Initialization value in units of 272 ns.
1778c2ecf20Sopenharmony_ci * @timer_ac_en: Timer Automatic Cancel. 1 : Automatic Canceling Enable: when
1788c2ecf20Sopenharmony_ci *             asserted, other interrupt-generating entities will cancel the
1798c2ecf20Sopenharmony_ci *             scheduled timer interrupt.
1808c2ecf20Sopenharmony_ci * @timer_ci_en: Timer Continuous Interrupt. 1 : Continuous Interrupting Enable:
1818c2ecf20Sopenharmony_ci *             When asserted, an interrupt will be generated every time the
1828c2ecf20Sopenharmony_ci *             boundary timer expires, even if no traffic has been transmitted
1838c2ecf20Sopenharmony_ci *             on this interrupt.
1848c2ecf20Sopenharmony_ci * @timer_ri_en: Timer Consecutive (Re-) Interrupt 1 : Consecutive
1858c2ecf20Sopenharmony_ci *             (Re-) Interrupt Enable: When asserted, an interrupt will be
1868c2ecf20Sopenharmony_ci *             generated the next time the timer expires, even if no traffic has
1878c2ecf20Sopenharmony_ci *             been transmitted on this interrupt. (This will only happen once
1888c2ecf20Sopenharmony_ci *             each time that this value is written to the TIM.) This bit is
1898c2ecf20Sopenharmony_ci *             cleared by H/W at the end of the current-timer-interval when
1908c2ecf20Sopenharmony_ci *             the interrupt is triggered.
1918c2ecf20Sopenharmony_ci * @rtimer_val: Restriction Timer Initialization value in units of 272 ns.
1928c2ecf20Sopenharmony_ci * @util_sel: Utilization Selector. Selects which of the workload approximations
1938c2ecf20Sopenharmony_ci *             to use (e.g. legacy Tx utilization, Tx/Rx utilization, host
1948c2ecf20Sopenharmony_ci *             specified utilization etc.), selects one of
1958c2ecf20Sopenharmony_ci *             the 17 host configured values.
1968c2ecf20Sopenharmony_ci *             0-Virtual Path 0
1978c2ecf20Sopenharmony_ci *             1-Virtual Path 1
1988c2ecf20Sopenharmony_ci *             ...
1998c2ecf20Sopenharmony_ci *             16-Virtual Path 17
2008c2ecf20Sopenharmony_ci *             17-Legacy Tx network utilization, provided by TPA
2018c2ecf20Sopenharmony_ci *             18-Legacy Rx network utilization, provided by FAU
2028c2ecf20Sopenharmony_ci *             19-Average of legacy Rx and Tx utilization calculated from link
2038c2ecf20Sopenharmony_ci *                utilization values.
2048c2ecf20Sopenharmony_ci *             20-31-Invalid configurations
2058c2ecf20Sopenharmony_ci *             32-Host utilization for Virtual Path 0
2068c2ecf20Sopenharmony_ci *             33-Host utilization for Virtual Path 1
2078c2ecf20Sopenharmony_ci *             ...
2088c2ecf20Sopenharmony_ci *             48-Host utilization for Virtual Path 17
2098c2ecf20Sopenharmony_ci *             49-Legacy Tx network utilization, provided by TPA
2108c2ecf20Sopenharmony_ci *             50-Legacy Rx network utilization, provided by FAU
2118c2ecf20Sopenharmony_ci *             51-Average of legacy Rx and Tx utilization calculated from
2128c2ecf20Sopenharmony_ci *                link utilization values.
2138c2ecf20Sopenharmony_ci *             52-63-Invalid configurations
2148c2ecf20Sopenharmony_ci * @ltimer_val: Latency Timer Initialization Value in units of 272 ns.
2158c2ecf20Sopenharmony_ci * @txd_cnt_en: TxD Return Event Count Enable. This configuration bit when set
2168c2ecf20Sopenharmony_ci *             to 1 enables counting of TxD0 returns (signalled by PCC's),
2178c2ecf20Sopenharmony_ci *             towards utilization event count values.
2188c2ecf20Sopenharmony_ci * @urange_a: Defines the upper limit (in percent) for this utilization range
2198c2ecf20Sopenharmony_ci *             to be active. This range is considered active
2208c2ecf20Sopenharmony_ci *             if 0 = UTIL = URNG_A
2218c2ecf20Sopenharmony_ci *             and the UEC_A field (below) is non-zero.
2228c2ecf20Sopenharmony_ci * @uec_a: Utilization Event Count A. If this range is active, the adapter will
2238c2ecf20Sopenharmony_ci *             wait until UEC_A events have occurred on the interrupt before
2248c2ecf20Sopenharmony_ci *             generating an interrupt.
2258c2ecf20Sopenharmony_ci * @urange_b: Link utilization range B.
2268c2ecf20Sopenharmony_ci * @uec_b: Utilization Event Count B.
2278c2ecf20Sopenharmony_ci * @urange_c: Link utilization range C.
2288c2ecf20Sopenharmony_ci * @uec_c: Utilization Event Count C.
2298c2ecf20Sopenharmony_ci * @urange_d: Link utilization range D.
2308c2ecf20Sopenharmony_ci * @uec_d: Utilization Event Count D.
2318c2ecf20Sopenharmony_ci * Traffic Interrupt Controller Module interrupt configuration.
2328c2ecf20Sopenharmony_ci */
2338c2ecf20Sopenharmony_cistruct vxge_hw_tim_intr_config {
2348c2ecf20Sopenharmony_ci
2358c2ecf20Sopenharmony_ci	u32				intr_enable;
2368c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_INTR_ENABLE				1
2378c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_INTR_DISABLE				0
2388c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_INTR_DEFAULT				0
2398c2ecf20Sopenharmony_ci
2408c2ecf20Sopenharmony_ci	u32				btimer_val;
2418c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_BTIMER_VAL				0
2428c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_BTIMER_VAL				67108864
2438c2ecf20Sopenharmony_ci#define VXGE_HW_USE_FLASH_DEFAULT				(~0)
2448c2ecf20Sopenharmony_ci
2458c2ecf20Sopenharmony_ci	u32				timer_ac_en;
2468c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_AC_ENABLE				1
2478c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_AC_DISABLE				0
2488c2ecf20Sopenharmony_ci
2498c2ecf20Sopenharmony_ci	u32				timer_ci_en;
2508c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_CI_ENABLE				1
2518c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_CI_DISABLE				0
2528c2ecf20Sopenharmony_ci
2538c2ecf20Sopenharmony_ci	u32				timer_ri_en;
2548c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_RI_ENABLE				1
2558c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_TIMER_RI_DISABLE				0
2568c2ecf20Sopenharmony_ci
2578c2ecf20Sopenharmony_ci	u32				rtimer_val;
2588c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_RTIMER_VAL				0
2598c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_RTIMER_VAL				67108864
2608c2ecf20Sopenharmony_ci
2618c2ecf20Sopenharmony_ci	u32				util_sel;
2628c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_UTIL_SEL_LEGACY_TX_NET_UTIL		17
2638c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_UTIL_SEL_LEGACY_RX_NET_UTIL		18
2648c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_UTIL_SEL_LEGACY_TX_RX_AVE_NET_UTIL		19
2658c2ecf20Sopenharmony_ci#define VXGE_HW_TIM_UTIL_SEL_PER_VPATH				63
2668c2ecf20Sopenharmony_ci
2678c2ecf20Sopenharmony_ci	u32				ltimer_val;
2688c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_LTIMER_VAL				0
2698c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_LTIMER_VAL				67108864
2708c2ecf20Sopenharmony_ci
2718c2ecf20Sopenharmony_ci	/* Line utilization interrupts */
2728c2ecf20Sopenharmony_ci	u32				urange_a;
2738c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_URANGE_A				0
2748c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_URANGE_A				100
2758c2ecf20Sopenharmony_ci
2768c2ecf20Sopenharmony_ci	u32				uec_a;
2778c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_UEC_A					0
2788c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_UEC_A					65535
2798c2ecf20Sopenharmony_ci
2808c2ecf20Sopenharmony_ci	u32				urange_b;
2818c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_URANGE_B				0
2828c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_URANGE_B				100
2838c2ecf20Sopenharmony_ci
2848c2ecf20Sopenharmony_ci	u32				uec_b;
2858c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_UEC_B					0
2868c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_UEC_B					65535
2878c2ecf20Sopenharmony_ci
2888c2ecf20Sopenharmony_ci	u32				urange_c;
2898c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_URANGE_C				0
2908c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_URANGE_C				100
2918c2ecf20Sopenharmony_ci
2928c2ecf20Sopenharmony_ci	u32				uec_c;
2938c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_UEC_C					0
2948c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_UEC_C					65535
2958c2ecf20Sopenharmony_ci
2968c2ecf20Sopenharmony_ci	u32				uec_d;
2978c2ecf20Sopenharmony_ci#define VXGE_HW_MIN_TIM_UEC_D					0
2988c2ecf20Sopenharmony_ci#define VXGE_HW_MAX_TIM_UEC_D					65535
2998c2ecf20Sopenharmony_ci};
3008c2ecf20Sopenharmony_ci
3018c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_OP_READ					0
3028c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_OP_CLEAR_STAT				1
3038c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_OP_CLEAR_ALL_VPATH_STATS			2
3048c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_OP_CLEAR_ALL_STATS_OF_LOC			2
3058c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_OP_CLEAR_ALL_STATS			3
3068c2ecf20Sopenharmony_ci
3078c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_LOC_AGGR					17
3088c2ecf20Sopenharmony_ci#define VXGE_HW_STATS_AGGRn_OFFSET				0x00720
3098c2ecf20Sopenharmony_ci
3108c2ecf20Sopenharmony_ci#define VXGE_HW_STATS_VPATH_TX_OFFSET				0x0
3118c2ecf20Sopenharmony_ci#define VXGE_HW_STATS_VPATH_RX_OFFSET				0x00090
3128c2ecf20Sopenharmony_ci
3138c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_VPATH_PROG_EVENT_VNUM0_OFFSET	   (0x001d0 >> 3)
3148c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_GET_VPATH_PROG_EVENT_VNUM0(bits) \
3158c2ecf20Sopenharmony_ci						vxge_bVALn(bits, 0, 32)
3168c2ecf20Sopenharmony_ci
3178c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_GET_VPATH_PROG_EVENT_VNUM1(bits) \
3188c2ecf20Sopenharmony_ci						vxge_bVALn(bits, 32, 32)
3198c2ecf20Sopenharmony_ci
3208c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_VPATH_PROG_EVENT_VNUM2_OFFSET	   (0x001d8 >> 3)
3218c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_GET_VPATH_PROG_EVENT_VNUM2(bits) \
3228c2ecf20Sopenharmony_ci						vxge_bVALn(bits, 0, 32)
3238c2ecf20Sopenharmony_ci
3248c2ecf20Sopenharmony_ci#define	VXGE_HW_STATS_GET_VPATH_PROG_EVENT_VNUM3(bits) \
3258c2ecf20Sopenharmony_ci						vxge_bVALn(bits, 32, 32)
3268c2ecf20Sopenharmony_ci
3278c2ecf20Sopenharmony_ci/**
3288c2ecf20Sopenharmony_ci * struct vxge_hw_xmac_aggr_stats - Per-Aggregator XMAC Statistics
3298c2ecf20Sopenharmony_ci *
3308c2ecf20Sopenharmony_ci * @tx_frms: Count of data frames transmitted on this Aggregator on all
3318c2ecf20Sopenharmony_ci *             its Aggregation ports. Does not include LACPDUs or Marker PDUs.
3328c2ecf20Sopenharmony_ci *             However, does include frames discarded by the Distribution
3338c2ecf20Sopenharmony_ci *             function.
3348c2ecf20Sopenharmony_ci * @tx_data_octets: Count of data and padding octets of frames transmitted
3358c2ecf20Sopenharmony_ci *             on this Aggregator on all its Aggregation ports. Does not include
3368c2ecf20Sopenharmony_ci *             octets of LACPDUs or Marker PDUs. However, does include octets of
3378c2ecf20Sopenharmony_ci *             frames discarded by the Distribution function.
3388c2ecf20Sopenharmony_ci * @tx_mcast_frms: Count of data frames transmitted (to a group destination
3398c2ecf20Sopenharmony_ci *             address other than the broadcast address) on this Aggregator on
3408c2ecf20Sopenharmony_ci *             all its Aggregation ports. Does not include LACPDUs or Marker
3418c2ecf20Sopenharmony_ci *             PDUs. However, does include frames discarded by the Distribution
3428c2ecf20Sopenharmony_ci *             function.
3438c2ecf20Sopenharmony_ci * @tx_bcast_frms: Count of broadcast data frames transmitted on this Aggregator
3448c2ecf20Sopenharmony_ci *             on all its Aggregation ports. Does not include LACPDUs or Marker
3458c2ecf20Sopenharmony_ci *             PDUs. However, does include frames discarded by the Distribution
3468c2ecf20Sopenharmony_ci *             function.
3478c2ecf20Sopenharmony_ci * @tx_discarded_frms: Count of data frames to be transmitted on this Aggregator
3488c2ecf20Sopenharmony_ci *             that are discarded by the Distribution function. This occurs when
3498c2ecf20Sopenharmony_ci *             conversation are allocated to different ports and have to be
3508c2ecf20Sopenharmony_ci *             flushed on old ports
3518c2ecf20Sopenharmony_ci * @tx_errored_frms: Count of data frames transmitted on this Aggregator that
3528c2ecf20Sopenharmony_ci *             experience transmission errors on its Aggregation ports.
3538c2ecf20Sopenharmony_ci * @rx_frms: Count of data frames received on this Aggregator on all its
3548c2ecf20Sopenharmony_ci *             Aggregation ports. Does not include LACPDUs or Marker PDUs.
3558c2ecf20Sopenharmony_ci *             Also, does not include frames discarded by the Collection
3568c2ecf20Sopenharmony_ci *             function.
3578c2ecf20Sopenharmony_ci * @rx_data_octets: Count of data and padding octets of frames received on this
3588c2ecf20Sopenharmony_ci *             Aggregator on all its Aggregation ports. Does not include octets
3598c2ecf20Sopenharmony_ci *             of LACPDUs or Marker PDUs. Also, does not include
3608c2ecf20Sopenharmony_ci *             octets of frames
3618c2ecf20Sopenharmony_ci *             discarded by the Collection function.
3628c2ecf20Sopenharmony_ci * @rx_mcast_frms: Count of data frames received (from a group destination
3638c2ecf20Sopenharmony_ci *             address other than the broadcast address) on this Aggregator on
3648c2ecf20Sopenharmony_ci *             all its Aggregation ports. Does not include LACPDUs or Marker
3658c2ecf20Sopenharmony_ci *             PDUs. Also, does not include frames discarded by the Collection
3668c2ecf20Sopenharmony_ci *             function.
3678c2ecf20Sopenharmony_ci * @rx_bcast_frms: Count of broadcast data frames received on this Aggregator on
3688c2ecf20Sopenharmony_ci *             all its Aggregation ports. Does not include LACPDUs or Marker
3698c2ecf20Sopenharmony_ci *             PDUs. Also, does not include frames discarded by the Collection
3708c2ecf20Sopenharmony_ci *             function.
3718c2ecf20Sopenharmony_ci * @rx_discarded_frms: Count of data frames received on this Aggregator that are
3728c2ecf20Sopenharmony_ci *             discarded by the Collection function because the Collection
3738c2ecf20Sopenharmony_ci *             function was disabled on the port which the frames are received.
3748c2ecf20Sopenharmony_ci * @rx_errored_frms: Count of data frames received on this Aggregator that are
3758c2ecf20Sopenharmony_ci *             discarded by its Aggregation ports, or are discarded by the
3768c2ecf20Sopenharmony_ci *             Collection function of the Aggregator, or that are discarded by
3778c2ecf20Sopenharmony_ci *             the Aggregator due to detection of an illegal Slow Protocols PDU.
3788c2ecf20Sopenharmony_ci * @rx_unknown_slow_proto_frms: Count of data frames received on this Aggregator
3798c2ecf20Sopenharmony_ci *             that are discarded by its Aggregation ports due to detection of
3808c2ecf20Sopenharmony_ci *             an unknown Slow Protocols PDU.
3818c2ecf20Sopenharmony_ci *
3828c2ecf20Sopenharmony_ci * Per aggregator XMAC RX statistics.
3838c2ecf20Sopenharmony_ci */
3848c2ecf20Sopenharmony_cistruct vxge_hw_xmac_aggr_stats {
3858c2ecf20Sopenharmony_ci/*0x000*/		u64	tx_frms;
3868c2ecf20Sopenharmony_ci/*0x008*/		u64	tx_data_octets;
3878c2ecf20Sopenharmony_ci/*0x010*/		u64	tx_mcast_frms;
3888c2ecf20Sopenharmony_ci/*0x018*/		u64	tx_bcast_frms;
3898c2ecf20Sopenharmony_ci/*0x020*/		u64	tx_discarded_frms;
3908c2ecf20Sopenharmony_ci/*0x028*/		u64	tx_errored_frms;
3918c2ecf20Sopenharmony_ci/*0x030*/		u64	rx_frms;
3928c2ecf20Sopenharmony_ci/*0x038*/		u64	rx_data_octets;
3938c2ecf20Sopenharmony_ci/*0x040*/		u64	rx_mcast_frms;
3948c2ecf20Sopenharmony_ci/*0x048*/		u64	rx_bcast_frms;
3958c2ecf20Sopenharmony_ci/*0x050*/		u64	rx_discarded_frms;
3968c2ecf20Sopenharmony_ci/*0x058*/		u64	rx_errored_frms;
3978c2ecf20Sopenharmony_ci/*0x060*/		u64	rx_unknown_slow_proto_frms;
3988c2ecf20Sopenharmony_ci} __packed;
3998c2ecf20Sopenharmony_ci
4008c2ecf20Sopenharmony_ci/**
4018c2ecf20Sopenharmony_ci * struct vxge_hw_xmac_port_stats - XMAC Port Statistics
4028c2ecf20Sopenharmony_ci *
4038c2ecf20Sopenharmony_ci * @tx_ttl_frms: Count of successfully transmitted MAC frames
4048c2ecf20Sopenharmony_ci * @tx_ttl_octets: Count of total octets of transmitted frames, not including
4058c2ecf20Sopenharmony_ci *            framing characters (i.e. less framing bits). To determine the
4068c2ecf20Sopenharmony_ci *            total octets of transmitted frames, including framing characters,
4078c2ecf20Sopenharmony_ci *            multiply PORTn_TX_TTL_FRMS by 8 and add it to this stat (unless
4088c2ecf20Sopenharmony_ci *            otherwise configured, this stat only counts frames that have
4098c2ecf20Sopenharmony_ci *            8 bytes of preamble for each frame). This stat can be configured
4108c2ecf20Sopenharmony_ci *            (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything
4118c2ecf20Sopenharmony_ci *            including the preamble octets.
4128c2ecf20Sopenharmony_ci * @tx_data_octets: Count of data and padding octets of successfully transmitted
4138c2ecf20Sopenharmony_ci *            frames.
4148c2ecf20Sopenharmony_ci * @tx_mcast_frms: Count of successfully transmitted frames to a group address
4158c2ecf20Sopenharmony_ci *            other than the broadcast address.
4168c2ecf20Sopenharmony_ci * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
4178c2ecf20Sopenharmony_ci *            group address.
4188c2ecf20Sopenharmony_ci * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
4198c2ecf20Sopenharmony_ci *            Includes discarded frames that are not sent to the network.
4208c2ecf20Sopenharmony_ci * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
4218c2ecf20Sopenharmony_ci * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
4228c2ecf20Sopenharmony_ci * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
4238c2ecf20Sopenharmony_ci *            are passed to the network.
4248c2ecf20Sopenharmony_ci * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent
4258c2ecf20Sopenharmony_ci *            due to problems within ICMP.
4268c2ecf20Sopenharmony_ci * @tx_tcp: Count of transmitted TCP segments. Does not include segments
4278c2ecf20Sopenharmony_ci *            containing retransmitted octets.
4288c2ecf20Sopenharmony_ci * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
4298c2ecf20Sopenharmony_ci * @tx_udp: Count of transmitted UDP datagrams.
4308c2ecf20Sopenharmony_ci * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
4318c2ecf20Sopenharmony_ci *            generally occurs when a packet is corrupt somehow, including
4328c2ecf20Sopenharmony_ci *            packets that have IP version mismatches, invalid Layer 2 control
4338c2ecf20Sopenharmony_ci *            fields, etc. L3/L4 checksums are not offloaded, but the packet
4348c2ecf20Sopenharmony_ci *            is still be transmitted.
4358c2ecf20Sopenharmony_ci * @tx_unknown_protocol: Increments when the TPA encounters an unknown
4368c2ecf20Sopenharmony_ci *            protocol, such as a new IPv6 extension header, or an unsupported
4378c2ecf20Sopenharmony_ci *            Routing Type. The packet still has a checksum calculated but it
4388c2ecf20Sopenharmony_ci *            may be incorrect.
4398c2ecf20Sopenharmony_ci * @tx_pause_ctrl_frms: Count of MAC PAUSE control frames that are transmitted.
4408c2ecf20Sopenharmony_ci *            Since, the only control frames supported by this device are
4418c2ecf20Sopenharmony_ci *            PAUSE frames, this register is a count of all transmitted MAC
4428c2ecf20Sopenharmony_ci *            control frames.
4438c2ecf20Sopenharmony_ci * @tx_marker_pdu_frms: Count of Marker PDUs transmitted
4448c2ecf20Sopenharmony_ci * on this Aggregation port.
4458c2ecf20Sopenharmony_ci * @tx_lacpdu_frms: Count of LACPDUs transmitted on this Aggregation port.
4468c2ecf20Sopenharmony_ci * @tx_drop_ip: Count of transmitted IP datagrams that could not be passed to
4478c2ecf20Sopenharmony_ci *            the network. Increments because of:
4488c2ecf20Sopenharmony_ci *            1) An internal processing error
4498c2ecf20Sopenharmony_ci *            (such as an uncorrectable ECC error). 2) A frame parsing error
4508c2ecf20Sopenharmony_ci *            during IP checksum calculation.
4518c2ecf20Sopenharmony_ci * @tx_marker_resp_pdu_frms: Count of Marker Response PDUs transmitted on this
4528c2ecf20Sopenharmony_ci *            Aggregation port.
4538c2ecf20Sopenharmony_ci * @tx_xgmii_char2_match: Maintains a count of the number of transmitted XGMII
4548c2ecf20Sopenharmony_ci *            characters that match a pattern that is programmable through
4558c2ecf20Sopenharmony_ci *            register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
4568c2ecf20Sopenharmony_ci *            is set to /T/ (i.e. the terminate character), thus the statistic
4578c2ecf20Sopenharmony_ci *            tracks the number of transmitted Terminate characters.
4588c2ecf20Sopenharmony_ci * @tx_xgmii_char1_match: Maintains a count of the number of transmitted XGMII
4598c2ecf20Sopenharmony_ci *            characters that match a pattern that is programmable through
4608c2ecf20Sopenharmony_ci *            register XMAC_STATS_TX_XGMII_CHAR_PORTn. By default, the pattern
4618c2ecf20Sopenharmony_ci *            is set to /S/ (i.e. the start character),
4628c2ecf20Sopenharmony_ci *            thus the statistic tracks
4638c2ecf20Sopenharmony_ci *            the number of transmitted Start characters.
4648c2ecf20Sopenharmony_ci * @tx_xgmii_column2_match: Maintains a count of the number of transmitted XGMII
4658c2ecf20Sopenharmony_ci *            columns that match a pattern that is programmable through register
4668c2ecf20Sopenharmony_ci *            XMAC_STATS_TX_XGMII_COLUMN2_PORTn. By default, the pattern is set
4678c2ecf20Sopenharmony_ci *            to 4 x /E/ (i.e. a column containing all error characters), thus
4688c2ecf20Sopenharmony_ci *            the statistic tracks the number of Error columns transmitted at
4698c2ecf20Sopenharmony_ci *            any time. If XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is
4708c2ecf20Sopenharmony_ci *            set to 1, then this stat increments when COLUMN2 is found within
4718c2ecf20Sopenharmony_ci *            'n' clocks after COLUMN1. Here, 'n' is defined by
4728c2ecf20Sopenharmony_ci *            XMAC_STATS_TX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set
4738c2ecf20Sopenharmony_ci *            to 0, then it means to search anywhere for COLUMN2).
4748c2ecf20Sopenharmony_ci * @tx_xgmii_column1_match: Maintains a count of the number of transmitted XGMII
4758c2ecf20Sopenharmony_ci *            columns that match a pattern that is programmable through register
4768c2ecf20Sopenharmony_ci *            XMAC_STATS_TX_XGMII_COLUMN1_PORTn. By default, the pattern is set
4778c2ecf20Sopenharmony_ci *            to 4 x /I/ (i.e. a column containing all idle characters),
4788c2ecf20Sopenharmony_ci *            thus the statistic tracks the number of transmitted Idle columns.
4798c2ecf20Sopenharmony_ci * @tx_any_err_frms: Count of transmitted frames containing any error that
4808c2ecf20Sopenharmony_ci *            prevents them from being passed to the network. Increments if
4818c2ecf20Sopenharmony_ci *            there is an ECC while reading the frame out of the transmit
4828c2ecf20Sopenharmony_ci *            buffer. Also increments if the transmit protocol assist (TPA)
4838c2ecf20Sopenharmony_ci *            block determines that the frame should not be sent.
4848c2ecf20Sopenharmony_ci * @tx_drop_frms: Count of frames that could not be sent for no other reason
4858c2ecf20Sopenharmony_ci *            than internal MAC processing. Increments once whenever the
4868c2ecf20Sopenharmony_ci *            transmit buffer is flushed (due to an ECC error on a memory
4878c2ecf20Sopenharmony_ci *            descriptor).
4888c2ecf20Sopenharmony_ci * @rx_ttl_frms: Count of total received MAC frames, including frames received
4898c2ecf20Sopenharmony_ci *            with frame-too-long, FCS, or length errors. This stat can be
4908c2ecf20Sopenharmony_ci *            configured (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count
4918c2ecf20Sopenharmony_ci *            everything, even "frames" as small one byte of preamble.
4928c2ecf20Sopenharmony_ci * @rx_vld_frms: Count of successfully received MAC frames. Does not include
4938c2ecf20Sopenharmony_ci *            frames received with frame-too-long, FCS, or length errors.
4948c2ecf20Sopenharmony_ci * @rx_offload_frms: Count of offloaded received frames that are passed to
4958c2ecf20Sopenharmony_ci *            the host.
4968c2ecf20Sopenharmony_ci * @rx_ttl_octets: Count of total octets of received frames, not including
4978c2ecf20Sopenharmony_ci *            framing characters (i.e. less framing bits). To determine the
4988c2ecf20Sopenharmony_ci *            total octets of received frames, including framing characters,
4998c2ecf20Sopenharmony_ci *            multiply PORTn_RX_TTL_FRMS by 8 and add it to this stat (unless
5008c2ecf20Sopenharmony_ci *            otherwise configured, this stat only counts frames that have 8
5018c2ecf20Sopenharmony_ci *            bytes of preamble for each frame). This stat can be configured
5028c2ecf20Sopenharmony_ci *            (see XMAC_STATS_GLOBAL_CFG.TTL_FRMS_HANDLING) to count everything,
5038c2ecf20Sopenharmony_ci *            even the preamble octets of "frames" as small one byte of preamble
5048c2ecf20Sopenharmony_ci * @rx_data_octets: Count of data and padding octets of successfully received
5058c2ecf20Sopenharmony_ci *            frames. Does not include frames received with frame-too-long,
5068c2ecf20Sopenharmony_ci *            FCS, or length errors.
5078c2ecf20Sopenharmony_ci * @rx_offload_octets: Count of total octets, not including framing
5088c2ecf20Sopenharmony_ci *            characters, of offloaded received frames that are passed
5098c2ecf20Sopenharmony_ci *            to the host.
5108c2ecf20Sopenharmony_ci * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
5118c2ecf20Sopenharmony_ci *	      nonbroadcast group address. Does not include frames received
5128c2ecf20Sopenharmony_ci *            with frame-too-long, FCS, or length errors.
5138c2ecf20Sopenharmony_ci * @rx_vld_bcast_frms: Count of successfully received MAC frames containing
5148c2ecf20Sopenharmony_ci *            the broadcast group address. Does not include frames received
5158c2ecf20Sopenharmony_ci *            with frame-too-long, FCS, or length errors.
5168c2ecf20Sopenharmony_ci * @rx_accepted_ucast_frms: Count of successfully received frames containing
5178c2ecf20Sopenharmony_ci *            a unicast address. Only includes frames that are passed to
5188c2ecf20Sopenharmony_ci *            the system.
5198c2ecf20Sopenharmony_ci * @rx_accepted_nucast_frms: Count of successfully received frames containing
5208c2ecf20Sopenharmony_ci *            a non-unicast (broadcast or multicast) address. Only includes
5218c2ecf20Sopenharmony_ci *            frames that are passed to the system. Could include, for instance,
5228c2ecf20Sopenharmony_ci *            non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
5238c2ecf20Sopenharmony_ci *            register is set to pass FCS-errored frames to the host.
5248c2ecf20Sopenharmony_ci * @rx_tagged_frms: Count of received frames containing a VLAN tag.
5258c2ecf20Sopenharmony_ci * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
5268c2ecf20Sopenharmony_ci *            + 18 bytes (+ 22 bytes if VLAN-tagged).
5278c2ecf20Sopenharmony_ci * @rx_usized_frms: Count of received frames of length (including FCS, but not
5288c2ecf20Sopenharmony_ci *            framing bits) less than 64 octets, that are otherwise well-formed.
5298c2ecf20Sopenharmony_ci *            In other words, counts runts.
5308c2ecf20Sopenharmony_ci * @rx_osized_frms: Count of received frames of length (including FCS, but not
5318c2ecf20Sopenharmony_ci *            framing bits) more than 1518 octets, that are otherwise
5328c2ecf20Sopenharmony_ci *            well-formed. Note: If register XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING
5338c2ecf20Sopenharmony_ci *            is set to 1, then "more than 1518 octets" becomes "more than 1518
5348c2ecf20Sopenharmony_ci *            (1522 if VLAN-tagged) octets".
5358c2ecf20Sopenharmony_ci * @rx_frag_frms: Count of received frames of length (including FCS, but not
5368c2ecf20Sopenharmony_ci *            framing bits) less than 64 octets that had bad FCS. In other
5378c2ecf20Sopenharmony_ci *            words, counts fragments.
5388c2ecf20Sopenharmony_ci * @rx_jabber_frms: Count of received frames of length (including FCS, but not
5398c2ecf20Sopenharmony_ci *            framing bits) more than 1518 octets that had bad FCS. In other
5408c2ecf20Sopenharmony_ci *            words, counts jabbers. Note: If register
5418c2ecf20Sopenharmony_ci *            XMAC_STATS_GLOBAL_CFG.VLAN_HANDLING is set to 1, then "more than
5428c2ecf20Sopenharmony_ci *            1518 octets" becomes "more than 1518 (1522 if VLAN-tagged)
5438c2ecf20Sopenharmony_ci *            octets".
5448c2ecf20Sopenharmony_ci * @rx_ttl_64_frms: Count of total received MAC frames with length (including
5458c2ecf20Sopenharmony_ci *            FCS, but not framing bits) of exactly 64 octets. Includes frames
5468c2ecf20Sopenharmony_ci *            received with frame-too-long, FCS, or length errors.
5478c2ecf20Sopenharmony_ci * @rx_ttl_65_127_frms: Count of total received MAC frames with length
5488c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 65 and 127
5498c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5508c2ecf20Sopenharmony_ci *            FCS, or length errors.
5518c2ecf20Sopenharmony_ci * @rx_ttl_128_255_frms: Count of total received MAC frames with length
5528c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 128 and 255
5538c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5548c2ecf20Sopenharmony_ci *            FCS, or length errors.
5558c2ecf20Sopenharmony_ci * @rx_ttl_256_511_frms: Count of total received MAC frames with length
5568c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 256 and 511
5578c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5588c2ecf20Sopenharmony_ci *            FCS, or length errors.
5598c2ecf20Sopenharmony_ci * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
5608c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 512 and 1023
5618c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5628c2ecf20Sopenharmony_ci *            FCS, or length errors.
5638c2ecf20Sopenharmony_ci * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
5648c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 1024 and 1518
5658c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5668c2ecf20Sopenharmony_ci *            FCS, or length errors.
5678c2ecf20Sopenharmony_ci * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
5688c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 1519 and 4095
5698c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5708c2ecf20Sopenharmony_ci *            FCS, or length errors.
5718c2ecf20Sopenharmony_ci * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
5728c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 4096 and 8191
5738c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
5748c2ecf20Sopenharmony_ci *            FCS, or length errors.
5758c2ecf20Sopenharmony_ci * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
5768c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 8192 and
5778c2ecf20Sopenharmony_ci *            RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
5788c2ecf20Sopenharmony_ci *            with frame-too-long, FCS, or length errors.
5798c2ecf20Sopenharmony_ci * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
5808c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) exceeding
5818c2ecf20Sopenharmony_ci *            RX_MAX_PYLD_LEN+18 (+22 bytes if VLAN-tagged) octets inclusive.
5828c2ecf20Sopenharmony_ci *            Includes frames received with frame-too-long,
5838c2ecf20Sopenharmony_ci *            FCS, or length errors.
5848c2ecf20Sopenharmony_ci * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
5858c2ecf20Sopenharmony_ci * @rx_accepted_ip: Count of received IP datagrams that
5868c2ecf20Sopenharmony_ci * 		are passed to the system.
5878c2ecf20Sopenharmony_ci * @rx_ip_octets: Count of number of octets in received IP datagrams. Includes
5888c2ecf20Sopenharmony_ci *            errored IP datagrams.
5898c2ecf20Sopenharmony_ci * @rx_err_ip: 	Count of received IP datagrams containing errors. For example,
5908c2ecf20Sopenharmony_ci *            bad IP checksum.
5918c2ecf20Sopenharmony_ci * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
5928c2ecf20Sopenharmony_ci * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
5938c2ecf20Sopenharmony_ci *            Note: This stat contains a count of all received TCP segments,
5948c2ecf20Sopenharmony_ci *            regardless of whether or not they pertain to an established
5958c2ecf20Sopenharmony_ci *            connection.
5968c2ecf20Sopenharmony_ci * @rx_udp: Count of received UDP datagrams.
5978c2ecf20Sopenharmony_ci * @rx_err_tcp: Count of received TCP segments containing errors. For example,
5988c2ecf20Sopenharmony_ci *            bad TCP checksum.
5998c2ecf20Sopenharmony_ci * @rx_pause_count: Count of number of pause quanta that the MAC has been in
6008c2ecf20Sopenharmony_ci *            the paused state. Recall, one pause quantum equates to 512
6018c2ecf20Sopenharmony_ci *            bit times.
6028c2ecf20Sopenharmony_ci * @rx_pause_ctrl_frms: Count of received MAC PAUSE control frames.
6038c2ecf20Sopenharmony_ci * @rx_unsup_ctrl_frms: Count of received MAC control frames that do not
6048c2ecf20Sopenharmony_ci *            contain the PAUSE opcode. The sum of RX_PAUSE_CTRL_FRMS and
6058c2ecf20Sopenharmony_ci *            this register is a count of all received MAC control frames.
6068c2ecf20Sopenharmony_ci *            Note: This stat may be configured to count all layer 2 errors
6078c2ecf20Sopenharmony_ci *            (i.e. length errors and FCS errors).
6088c2ecf20Sopenharmony_ci * @rx_fcs_err_frms: Count of received MAC frames that do not pass FCS. Does
6098c2ecf20Sopenharmony_ci *            not include frames received with frame-too-long or
6108c2ecf20Sopenharmony_ci *            frame-too-short error.
6118c2ecf20Sopenharmony_ci * @rx_in_rng_len_err_frms: Count of received frames with a length/type field
6128c2ecf20Sopenharmony_ci *            value between 46 (42 for VLAN-tagged frames) and 1500 (also 1500
6138c2ecf20Sopenharmony_ci *            for VLAN-tagged frames), inclusive, that does not match the
6148c2ecf20Sopenharmony_ci *            number of data octets (including pad) received. Also contains
6158c2ecf20Sopenharmony_ci *            a count of received frames with a length/type field less than
6168c2ecf20Sopenharmony_ci *            46 (42 for VLAN-tagged frames) and the number of data octets
6178c2ecf20Sopenharmony_ci *            (including pad) received is greater than 46 (42 for VLAN-tagged
6188c2ecf20Sopenharmony_ci *            frames).
6198c2ecf20Sopenharmony_ci * @rx_out_rng_len_err_frms:  Count of received frames with length/type field
6208c2ecf20Sopenharmony_ci *            between 1501 and 1535 decimal, inclusive.
6218c2ecf20Sopenharmony_ci * @rx_drop_frms: Count of received frames that could not be passed to the host.
6228c2ecf20Sopenharmony_ci *            See PORTn_RX_L2_MGMT_DISCARD, PORTn_RX_RPA_DISCARD,
6238c2ecf20Sopenharmony_ci *            PORTn_RX_TRASH_DISCARD, PORTn_RX_RTS_DISCARD, PORTn_RX_RED_DISCARD
6248c2ecf20Sopenharmony_ci *            for a list of reasons. Because the RMAC drops one frame at a time,
6258c2ecf20Sopenharmony_ci *            this stat also indicates the number of drop events.
6268c2ecf20Sopenharmony_ci * @rx_discarded_frms: Count of received frames containing
6278c2ecf20Sopenharmony_ci * 		any error that prevents
6288c2ecf20Sopenharmony_ci *            them from being passed to the system. See PORTn_RX_FCS_DISCARD,
6298c2ecf20Sopenharmony_ci *            PORTn_RX_LEN_DISCARD, and PORTn_RX_SWITCH_DISCARD for a list of
6308c2ecf20Sopenharmony_ci *            reasons.
6318c2ecf20Sopenharmony_ci * @rx_drop_ip: Count of received IP datagrams that could not be passed to the
6328c2ecf20Sopenharmony_ci *            host. See PORTn_RX_DROP_FRMS for a list of reasons.
6338c2ecf20Sopenharmony_ci * @rx_drop_udp: Count of received UDP datagrams that are not delivered to the
6348c2ecf20Sopenharmony_ci *            host. See PORTn_RX_DROP_FRMS for a list of reasons.
6358c2ecf20Sopenharmony_ci * @rx_marker_pdu_frms: Count of valid Marker PDUs received on this Aggregation
6368c2ecf20Sopenharmony_ci *            port.
6378c2ecf20Sopenharmony_ci * @rx_lacpdu_frms: Count of valid LACPDUs received on this Aggregation port.
6388c2ecf20Sopenharmony_ci * @rx_unknown_pdu_frms: Count of received frames (on this Aggregation port)
6398c2ecf20Sopenharmony_ci *            that carry the Slow Protocols EtherType, but contain an unknown
6408c2ecf20Sopenharmony_ci *            PDU. Or frames that contain the Slow Protocols group MAC address,
6418c2ecf20Sopenharmony_ci *            but do not carry the Slow Protocols EtherType.
6428c2ecf20Sopenharmony_ci * @rx_marker_resp_pdu_frms: Count of valid Marker Response PDUs received on
6438c2ecf20Sopenharmony_ci *            this Aggregation port.
6448c2ecf20Sopenharmony_ci * @rx_fcs_discard: Count of received frames that are discarded because the
6458c2ecf20Sopenharmony_ci *            FCS check failed.
6468c2ecf20Sopenharmony_ci * @rx_illegal_pdu_frms: Count of received frames (on this Aggregation port)
6478c2ecf20Sopenharmony_ci *            that carry the Slow Protocols EtherType, but contain a badly
6488c2ecf20Sopenharmony_ci *            formed PDU. Or frames that carry the Slow Protocols EtherType,
6498c2ecf20Sopenharmony_ci *            but contain an illegal value of Protocol Subtype.
6508c2ecf20Sopenharmony_ci * @rx_switch_discard: Count of received frames that are discarded by the
6518c2ecf20Sopenharmony_ci *            internal switch because they did not have an entry in the
6528c2ecf20Sopenharmony_ci *            Filtering Database. This includes frames that had an invalid
6538c2ecf20Sopenharmony_ci *            destination MAC address or VLAN ID. It also includes frames are
6548c2ecf20Sopenharmony_ci *            discarded because they did not satisfy the length requirements
6558c2ecf20Sopenharmony_ci *            of the target VPATH.
6568c2ecf20Sopenharmony_ci * @rx_len_discard: Count of received frames that are discarded because of an
6578c2ecf20Sopenharmony_ci *            invalid frame length (includes fragments, oversized frames and
6588c2ecf20Sopenharmony_ci *            mismatch between frame length and length/type field). This stat
6598c2ecf20Sopenharmony_ci *            can be configured
6608c2ecf20Sopenharmony_ci *            (see XMAC_STATS_GLOBAL_CFG.LEN_DISCARD_HANDLING).
6618c2ecf20Sopenharmony_ci * @rx_rpa_discard: Count of received frames that were discarded because the
6628c2ecf20Sopenharmony_ci *            receive protocol assist (RPA) discovered and error in the frame
6638c2ecf20Sopenharmony_ci *            or was unable to parse the frame.
6648c2ecf20Sopenharmony_ci * @rx_l2_mgmt_discard: Count of Layer 2 management frames (eg. pause frames,
6658c2ecf20Sopenharmony_ci *            Link Aggregation Control Protocol (LACP) frames, etc.) that are
6668c2ecf20Sopenharmony_ci *            discarded.
6678c2ecf20Sopenharmony_ci * @rx_rts_discard: Count of received frames that are discarded by the receive
6688c2ecf20Sopenharmony_ci *            traffic steering (RTS) logic. Includes those frame discarded
6698c2ecf20Sopenharmony_ci *            because the SSC response contradicted the switch table, because
6708c2ecf20Sopenharmony_ci *            the SSC timed out, or because the target queue could not fit the
6718c2ecf20Sopenharmony_ci *            frame.
6728c2ecf20Sopenharmony_ci * @rx_trash_discard: Count of received frames that are discarded because
6738c2ecf20Sopenharmony_ci *            receive traffic steering (RTS) steered the frame to the trash
6748c2ecf20Sopenharmony_ci *            queue.
6758c2ecf20Sopenharmony_ci * @rx_buff_full_discard: Count of received frames that are discarded because
6768c2ecf20Sopenharmony_ci *            internal buffers are full. Includes frames discarded because the
6778c2ecf20Sopenharmony_ci *            RTS logic is waiting for an SSC lookup that has no timeout bound.
6788c2ecf20Sopenharmony_ci *            Also, includes frames that are dropped because the MAC2FAU buffer
6798c2ecf20Sopenharmony_ci *            is nearly full -- this can happen if the external receive buffer
6808c2ecf20Sopenharmony_ci *            is full and the receive path is backing up.
6818c2ecf20Sopenharmony_ci * @rx_red_discard: Count of received frames that are discarded because of RED
6828c2ecf20Sopenharmony_ci *            (Random Early Discard).
6838c2ecf20Sopenharmony_ci * @rx_xgmii_ctrl_err_cnt: Maintains a count of unexpected or misplaced control
6848c2ecf20Sopenharmony_ci *            characters occurring between times of normal data transmission
6858c2ecf20Sopenharmony_ci *            (i.e. not included in RX_XGMII_DATA_ERR_CNT). This counter is
6868c2ecf20Sopenharmony_ci *            incremented when either -
6878c2ecf20Sopenharmony_ci *            1) The Reconciliation Sublayer (RS) is expecting one control
6888c2ecf20Sopenharmony_ci *               character and gets another (i.e. is expecting a Start
6898c2ecf20Sopenharmony_ci *               character, but gets another control character).
6908c2ecf20Sopenharmony_ci *            2) Start control character is not in lane 0
6918c2ecf20Sopenharmony_ci *            Only increments the count by one for each XGMII column.
6928c2ecf20Sopenharmony_ci * @rx_xgmii_data_err_cnt: Maintains a count of unexpected control characters
6938c2ecf20Sopenharmony_ci *            during normal data transmission. If the Reconciliation Sublayer
6948c2ecf20Sopenharmony_ci *            (RS) receives a control character, other than a terminate control
6958c2ecf20Sopenharmony_ci *            character, during receipt of data octets then this register is
6968c2ecf20Sopenharmony_ci *            incremented. Also increments if the start frame delimiter is not
6978c2ecf20Sopenharmony_ci *            found in the correct location. Only increments the count by one
6988c2ecf20Sopenharmony_ci *            for each XGMII column.
6998c2ecf20Sopenharmony_ci * @rx_xgmii_char1_match: Maintains a count of the number of XGMII characters
7008c2ecf20Sopenharmony_ci *            that match a pattern that is programmable through register
7018c2ecf20Sopenharmony_ci *            XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
7028c2ecf20Sopenharmony_ci *            to /E/ (i.e. the error character), thus the statistic tracks the
7038c2ecf20Sopenharmony_ci *            number of Error characters received at any time.
7048c2ecf20Sopenharmony_ci * @rx_xgmii_err_sym: Count of the number of symbol errors in the received
7058c2ecf20Sopenharmony_ci *            XGMII data (i.e. PHY indicates "Receive Error" on the XGMII).
7068c2ecf20Sopenharmony_ci *            Only includes symbol errors that are observed between the XGMII
7078c2ecf20Sopenharmony_ci *            Start Frame Delimiter and End Frame Delimiter, inclusive. And
7088c2ecf20Sopenharmony_ci *            only increments the count by one for each frame.
7098c2ecf20Sopenharmony_ci * @rx_xgmii_column1_match: Maintains a count of the number of XGMII columns
7108c2ecf20Sopenharmony_ci *            that match a pattern that is programmable through register
7118c2ecf20Sopenharmony_ci *            XMAC_STATS_RX_XGMII_COLUMN1_PORTn. By default, the pattern is set
7128c2ecf20Sopenharmony_ci *            to 4 x /E/ (i.e. a column containing all error characters), thus
7138c2ecf20Sopenharmony_ci *            the statistic tracks the number of Error columns received at any
7148c2ecf20Sopenharmony_ci *            time.
7158c2ecf20Sopenharmony_ci * @rx_xgmii_char2_match: Maintains a count of the number of XGMII characters
7168c2ecf20Sopenharmony_ci *            that match a pattern that is programmable through register
7178c2ecf20Sopenharmony_ci *            XMAC_STATS_RX_XGMII_CHAR_PORTn. By default, the pattern is set
7188c2ecf20Sopenharmony_ci *            to /E/ (i.e. the error character), thus the statistic tracks the
7198c2ecf20Sopenharmony_ci *            number of Error characters received at any time.
7208c2ecf20Sopenharmony_ci * @rx_local_fault: Maintains a count of the number of times that link
7218c2ecf20Sopenharmony_ci *            transitioned from "up" to "down" due to a local fault.
7228c2ecf20Sopenharmony_ci * @rx_xgmii_column2_match: Maintains a count of the number of XGMII columns
7238c2ecf20Sopenharmony_ci *            that match a pattern that is programmable through register
7248c2ecf20Sopenharmony_ci *            XMAC_STATS_RX_XGMII_COLUMN2_PORTn. By default, the pattern is set
7258c2ecf20Sopenharmony_ci *            to 4 x /E/ (i.e. a column containing all error characters), thus
7268c2ecf20Sopenharmony_ci *            the statistic tracks the number of Error columns received at any
7278c2ecf20Sopenharmony_ci *            time. If XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NEAR_COL1 is set
7288c2ecf20Sopenharmony_ci *            to 1, then this stat increments when COLUMN2 is found within 'n'
7298c2ecf20Sopenharmony_ci *            clocks after COLUMN1. Here, 'n' is defined by
7308c2ecf20Sopenharmony_ci *            XMAC_STATS_RX_XGMII_BEHAV_COLUMN2_PORTn.NUM_COL (if 'n' is set to
7318c2ecf20Sopenharmony_ci *            0, then it means to search anywhere for COLUMN2).
7328c2ecf20Sopenharmony_ci * @rx_jettison: Count of received frames that are jettisoned because internal
7338c2ecf20Sopenharmony_ci *            buffers are full.
7348c2ecf20Sopenharmony_ci * @rx_remote_fault: Maintains a count of the number of times that link
7358c2ecf20Sopenharmony_ci *            transitioned from "up" to "down" due to a remote fault.
7368c2ecf20Sopenharmony_ci *
7378c2ecf20Sopenharmony_ci * XMAC Port Statistics.
7388c2ecf20Sopenharmony_ci */
7398c2ecf20Sopenharmony_cistruct vxge_hw_xmac_port_stats {
7408c2ecf20Sopenharmony_ci/*0x000*/		u64	tx_ttl_frms;
7418c2ecf20Sopenharmony_ci/*0x008*/		u64	tx_ttl_octets;
7428c2ecf20Sopenharmony_ci/*0x010*/		u64	tx_data_octets;
7438c2ecf20Sopenharmony_ci/*0x018*/		u64	tx_mcast_frms;
7448c2ecf20Sopenharmony_ci/*0x020*/		u64	tx_bcast_frms;
7458c2ecf20Sopenharmony_ci/*0x028*/		u64	tx_ucast_frms;
7468c2ecf20Sopenharmony_ci/*0x030*/		u64	tx_tagged_frms;
7478c2ecf20Sopenharmony_ci/*0x038*/		u64	tx_vld_ip;
7488c2ecf20Sopenharmony_ci/*0x040*/		u64	tx_vld_ip_octets;
7498c2ecf20Sopenharmony_ci/*0x048*/		u64	tx_icmp;
7508c2ecf20Sopenharmony_ci/*0x050*/		u64	tx_tcp;
7518c2ecf20Sopenharmony_ci/*0x058*/		u64	tx_rst_tcp;
7528c2ecf20Sopenharmony_ci/*0x060*/		u64	tx_udp;
7538c2ecf20Sopenharmony_ci/*0x068*/		u32	tx_parse_error;
7548c2ecf20Sopenharmony_ci/*0x06c*/		u32	tx_unknown_protocol;
7558c2ecf20Sopenharmony_ci/*0x070*/		u64	tx_pause_ctrl_frms;
7568c2ecf20Sopenharmony_ci/*0x078*/		u32	tx_marker_pdu_frms;
7578c2ecf20Sopenharmony_ci/*0x07c*/		u32	tx_lacpdu_frms;
7588c2ecf20Sopenharmony_ci/*0x080*/		u32	tx_drop_ip;
7598c2ecf20Sopenharmony_ci/*0x084*/		u32	tx_marker_resp_pdu_frms;
7608c2ecf20Sopenharmony_ci/*0x088*/		u32	tx_xgmii_char2_match;
7618c2ecf20Sopenharmony_ci/*0x08c*/		u32	tx_xgmii_char1_match;
7628c2ecf20Sopenharmony_ci/*0x090*/		u32	tx_xgmii_column2_match;
7638c2ecf20Sopenharmony_ci/*0x094*/		u32	tx_xgmii_column1_match;
7648c2ecf20Sopenharmony_ci/*0x098*/		u32	unused1;
7658c2ecf20Sopenharmony_ci/*0x09c*/		u16	tx_any_err_frms;
7668c2ecf20Sopenharmony_ci/*0x09e*/		u16	tx_drop_frms;
7678c2ecf20Sopenharmony_ci/*0x0a0*/		u64	rx_ttl_frms;
7688c2ecf20Sopenharmony_ci/*0x0a8*/		u64	rx_vld_frms;
7698c2ecf20Sopenharmony_ci/*0x0b0*/		u64	rx_offload_frms;
7708c2ecf20Sopenharmony_ci/*0x0b8*/		u64	rx_ttl_octets;
7718c2ecf20Sopenharmony_ci/*0x0c0*/		u64	rx_data_octets;
7728c2ecf20Sopenharmony_ci/*0x0c8*/		u64	rx_offload_octets;
7738c2ecf20Sopenharmony_ci/*0x0d0*/		u64	rx_vld_mcast_frms;
7748c2ecf20Sopenharmony_ci/*0x0d8*/		u64	rx_vld_bcast_frms;
7758c2ecf20Sopenharmony_ci/*0x0e0*/		u64	rx_accepted_ucast_frms;
7768c2ecf20Sopenharmony_ci/*0x0e8*/		u64	rx_accepted_nucast_frms;
7778c2ecf20Sopenharmony_ci/*0x0f0*/		u64	rx_tagged_frms;
7788c2ecf20Sopenharmony_ci/*0x0f8*/		u64	rx_long_frms;
7798c2ecf20Sopenharmony_ci/*0x100*/		u64	rx_usized_frms;
7808c2ecf20Sopenharmony_ci/*0x108*/		u64	rx_osized_frms;
7818c2ecf20Sopenharmony_ci/*0x110*/		u64	rx_frag_frms;
7828c2ecf20Sopenharmony_ci/*0x118*/		u64	rx_jabber_frms;
7838c2ecf20Sopenharmony_ci/*0x120*/		u64	rx_ttl_64_frms;
7848c2ecf20Sopenharmony_ci/*0x128*/		u64	rx_ttl_65_127_frms;
7858c2ecf20Sopenharmony_ci/*0x130*/		u64	rx_ttl_128_255_frms;
7868c2ecf20Sopenharmony_ci/*0x138*/		u64	rx_ttl_256_511_frms;
7878c2ecf20Sopenharmony_ci/*0x140*/		u64	rx_ttl_512_1023_frms;
7888c2ecf20Sopenharmony_ci/*0x148*/		u64	rx_ttl_1024_1518_frms;
7898c2ecf20Sopenharmony_ci/*0x150*/		u64	rx_ttl_1519_4095_frms;
7908c2ecf20Sopenharmony_ci/*0x158*/		u64	rx_ttl_4096_8191_frms;
7918c2ecf20Sopenharmony_ci/*0x160*/		u64	rx_ttl_8192_max_frms;
7928c2ecf20Sopenharmony_ci/*0x168*/		u64	rx_ttl_gt_max_frms;
7938c2ecf20Sopenharmony_ci/*0x170*/		u64	rx_ip;
7948c2ecf20Sopenharmony_ci/*0x178*/		u64	rx_accepted_ip;
7958c2ecf20Sopenharmony_ci/*0x180*/		u64	rx_ip_octets;
7968c2ecf20Sopenharmony_ci/*0x188*/		u64	rx_err_ip;
7978c2ecf20Sopenharmony_ci/*0x190*/		u64	rx_icmp;
7988c2ecf20Sopenharmony_ci/*0x198*/		u64	rx_tcp;
7998c2ecf20Sopenharmony_ci/*0x1a0*/		u64	rx_udp;
8008c2ecf20Sopenharmony_ci/*0x1a8*/		u64	rx_err_tcp;
8018c2ecf20Sopenharmony_ci/*0x1b0*/		u64	rx_pause_count;
8028c2ecf20Sopenharmony_ci/*0x1b8*/		u64	rx_pause_ctrl_frms;
8038c2ecf20Sopenharmony_ci/*0x1c0*/		u64	rx_unsup_ctrl_frms;
8048c2ecf20Sopenharmony_ci/*0x1c8*/		u64	rx_fcs_err_frms;
8058c2ecf20Sopenharmony_ci/*0x1d0*/		u64	rx_in_rng_len_err_frms;
8068c2ecf20Sopenharmony_ci/*0x1d8*/		u64	rx_out_rng_len_err_frms;
8078c2ecf20Sopenharmony_ci/*0x1e0*/		u64	rx_drop_frms;
8088c2ecf20Sopenharmony_ci/*0x1e8*/		u64	rx_discarded_frms;
8098c2ecf20Sopenharmony_ci/*0x1f0*/		u64	rx_drop_ip;
8108c2ecf20Sopenharmony_ci/*0x1f8*/		u64	rx_drop_udp;
8118c2ecf20Sopenharmony_ci/*0x200*/		u32	rx_marker_pdu_frms;
8128c2ecf20Sopenharmony_ci/*0x204*/		u32	rx_lacpdu_frms;
8138c2ecf20Sopenharmony_ci/*0x208*/		u32	rx_unknown_pdu_frms;
8148c2ecf20Sopenharmony_ci/*0x20c*/		u32	rx_marker_resp_pdu_frms;
8158c2ecf20Sopenharmony_ci/*0x210*/		u32	rx_fcs_discard;
8168c2ecf20Sopenharmony_ci/*0x214*/		u32	rx_illegal_pdu_frms;
8178c2ecf20Sopenharmony_ci/*0x218*/		u32	rx_switch_discard;
8188c2ecf20Sopenharmony_ci/*0x21c*/		u32	rx_len_discard;
8198c2ecf20Sopenharmony_ci/*0x220*/		u32	rx_rpa_discard;
8208c2ecf20Sopenharmony_ci/*0x224*/		u32	rx_l2_mgmt_discard;
8218c2ecf20Sopenharmony_ci/*0x228*/		u32	rx_rts_discard;
8228c2ecf20Sopenharmony_ci/*0x22c*/		u32	rx_trash_discard;
8238c2ecf20Sopenharmony_ci/*0x230*/		u32	rx_buff_full_discard;
8248c2ecf20Sopenharmony_ci/*0x234*/		u32	rx_red_discard;
8258c2ecf20Sopenharmony_ci/*0x238*/		u32	rx_xgmii_ctrl_err_cnt;
8268c2ecf20Sopenharmony_ci/*0x23c*/		u32	rx_xgmii_data_err_cnt;
8278c2ecf20Sopenharmony_ci/*0x240*/		u32	rx_xgmii_char1_match;
8288c2ecf20Sopenharmony_ci/*0x244*/		u32	rx_xgmii_err_sym;
8298c2ecf20Sopenharmony_ci/*0x248*/		u32	rx_xgmii_column1_match;
8308c2ecf20Sopenharmony_ci/*0x24c*/		u32	rx_xgmii_char2_match;
8318c2ecf20Sopenharmony_ci/*0x250*/		u32	rx_local_fault;
8328c2ecf20Sopenharmony_ci/*0x254*/		u32	rx_xgmii_column2_match;
8338c2ecf20Sopenharmony_ci/*0x258*/		u32	rx_jettison;
8348c2ecf20Sopenharmony_ci/*0x25c*/		u32	rx_remote_fault;
8358c2ecf20Sopenharmony_ci} __packed;
8368c2ecf20Sopenharmony_ci
8378c2ecf20Sopenharmony_ci/**
8388c2ecf20Sopenharmony_ci * struct vxge_hw_xmac_vpath_tx_stats - XMAC Vpath Tx Statistics
8398c2ecf20Sopenharmony_ci *
8408c2ecf20Sopenharmony_ci * @tx_ttl_eth_frms: Count of successfully transmitted MAC frames.
8418c2ecf20Sopenharmony_ci * @tx_ttl_eth_octets: Count of total octets of transmitted frames,
8428c2ecf20Sopenharmony_ci *             not including framing characters (i.e. less framing bits).
8438c2ecf20Sopenharmony_ci *             To determine the total octets of transmitted frames, including
8448c2ecf20Sopenharmony_ci *             framing characters, multiply TX_TTL_ETH_FRMS by 8 and add it to
8458c2ecf20Sopenharmony_ci *             this stat (the device always prepends 8 bytes of preamble for
8468c2ecf20Sopenharmony_ci *             each frame)
8478c2ecf20Sopenharmony_ci * @tx_data_octets: Count of data and padding octets of successfully transmitted
8488c2ecf20Sopenharmony_ci *             frames.
8498c2ecf20Sopenharmony_ci * @tx_mcast_frms: Count of successfully transmitted frames to a group address
8508c2ecf20Sopenharmony_ci *             other than the broadcast address.
8518c2ecf20Sopenharmony_ci * @tx_bcast_frms: Count of successfully transmitted frames to the broadcast
8528c2ecf20Sopenharmony_ci *             group address.
8538c2ecf20Sopenharmony_ci * @tx_ucast_frms: Count of transmitted frames containing a unicast address.
8548c2ecf20Sopenharmony_ci *             Includes discarded frames that are not sent to the network.
8558c2ecf20Sopenharmony_ci * @tx_tagged_frms: Count of transmitted frames containing a VLAN tag.
8568c2ecf20Sopenharmony_ci * @tx_vld_ip: Count of transmitted IP datagrams that are passed to the network.
8578c2ecf20Sopenharmony_ci * @tx_vld_ip_octets: Count of total octets of transmitted IP datagrams that
8588c2ecf20Sopenharmony_ci *            are passed to the network.
8598c2ecf20Sopenharmony_ci * @tx_icmp: Count of transmitted ICMP messages. Includes messages not sent due
8608c2ecf20Sopenharmony_ci *            to problems within ICMP.
8618c2ecf20Sopenharmony_ci * @tx_tcp: Count of transmitted TCP segments. Does not include segments
8628c2ecf20Sopenharmony_ci *            containing retransmitted octets.
8638c2ecf20Sopenharmony_ci * @tx_rst_tcp: Count of transmitted TCP segments containing the RST flag.
8648c2ecf20Sopenharmony_ci * @tx_udp: Count of transmitted UDP datagrams.
8658c2ecf20Sopenharmony_ci * @tx_unknown_protocol: Increments when the TPA encounters an unknown protocol,
8668c2ecf20Sopenharmony_ci *            such as a new IPv6 extension header, or an unsupported Routing
8678c2ecf20Sopenharmony_ci *            Type. The packet still has a checksum calculated but it may be
8688c2ecf20Sopenharmony_ci *            incorrect.
8698c2ecf20Sopenharmony_ci * @tx_lost_ip: Count of transmitted IP datagrams that could not be passed
8708c2ecf20Sopenharmony_ci *            to the network. Increments because of: 1) An internal processing
8718c2ecf20Sopenharmony_ci *            error (such as an uncorrectable ECC error). 2) A frame parsing
8728c2ecf20Sopenharmony_ci *            error during IP checksum calculation.
8738c2ecf20Sopenharmony_ci * @tx_parse_error: Increments when the TPA is unable to parse a packet. This
8748c2ecf20Sopenharmony_ci *            generally occurs when a packet is corrupt somehow, including
8758c2ecf20Sopenharmony_ci *            packets that have IP version mismatches, invalid Layer 2 control
8768c2ecf20Sopenharmony_ci *            fields, etc. L3/L4 checksums are not offloaded, but the packet
8778c2ecf20Sopenharmony_ci *            is still be transmitted.
8788c2ecf20Sopenharmony_ci * @tx_tcp_offload: For frames belonging to offloaded sessions only, a count
8798c2ecf20Sopenharmony_ci *            of transmitted TCP segments. Does not include segments containing
8808c2ecf20Sopenharmony_ci *            retransmitted octets.
8818c2ecf20Sopenharmony_ci * @tx_retx_tcp_offload: For frames belonging to offloaded sessions only, the
8828c2ecf20Sopenharmony_ci *            total number of segments retransmitted. Retransmitted segments
8838c2ecf20Sopenharmony_ci *            that are sourced by the host are counted by the host.
8848c2ecf20Sopenharmony_ci * @tx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
8858c2ecf20Sopenharmony_ci *            of transmitted IP datagrams that could not be passed to the
8868c2ecf20Sopenharmony_ci *            network.
8878c2ecf20Sopenharmony_ci *
8888c2ecf20Sopenharmony_ci * XMAC Vpath TX Statistics.
8898c2ecf20Sopenharmony_ci */
8908c2ecf20Sopenharmony_cistruct vxge_hw_xmac_vpath_tx_stats {
8918c2ecf20Sopenharmony_ci	u64	tx_ttl_eth_frms;
8928c2ecf20Sopenharmony_ci	u64	tx_ttl_eth_octets;
8938c2ecf20Sopenharmony_ci	u64	tx_data_octets;
8948c2ecf20Sopenharmony_ci	u64	tx_mcast_frms;
8958c2ecf20Sopenharmony_ci	u64	tx_bcast_frms;
8968c2ecf20Sopenharmony_ci	u64	tx_ucast_frms;
8978c2ecf20Sopenharmony_ci	u64	tx_tagged_frms;
8988c2ecf20Sopenharmony_ci	u64	tx_vld_ip;
8998c2ecf20Sopenharmony_ci	u64	tx_vld_ip_octets;
9008c2ecf20Sopenharmony_ci	u64	tx_icmp;
9018c2ecf20Sopenharmony_ci	u64	tx_tcp;
9028c2ecf20Sopenharmony_ci	u64	tx_rst_tcp;
9038c2ecf20Sopenharmony_ci	u64	tx_udp;
9048c2ecf20Sopenharmony_ci	u32	tx_unknown_protocol;
9058c2ecf20Sopenharmony_ci	u32	tx_lost_ip;
9068c2ecf20Sopenharmony_ci	u32	unused1;
9078c2ecf20Sopenharmony_ci	u32	tx_parse_error;
9088c2ecf20Sopenharmony_ci	u64	tx_tcp_offload;
9098c2ecf20Sopenharmony_ci	u64	tx_retx_tcp_offload;
9108c2ecf20Sopenharmony_ci	u64	tx_lost_ip_offload;
9118c2ecf20Sopenharmony_ci} __packed;
9128c2ecf20Sopenharmony_ci
9138c2ecf20Sopenharmony_ci/**
9148c2ecf20Sopenharmony_ci * struct vxge_hw_xmac_vpath_rx_stats - XMAC Vpath RX Statistics
9158c2ecf20Sopenharmony_ci *
9168c2ecf20Sopenharmony_ci * @rx_ttl_eth_frms: Count of successfully received MAC frames.
9178c2ecf20Sopenharmony_ci * @rx_vld_frms: Count of successfully received MAC frames. Does not include
9188c2ecf20Sopenharmony_ci *            frames received with frame-too-long, FCS, or length errors.
9198c2ecf20Sopenharmony_ci * @rx_offload_frms: Count of offloaded received frames that are passed to
9208c2ecf20Sopenharmony_ci *            the host.
9218c2ecf20Sopenharmony_ci * @rx_ttl_eth_octets: Count of total octets of received frames, not including
9228c2ecf20Sopenharmony_ci *            framing characters (i.e. less framing bits). Only counts octets
9238c2ecf20Sopenharmony_ci *            of frames that are at least 14 bytes (18 bytes for VLAN-tagged)
9248c2ecf20Sopenharmony_ci *            before FCS. To determine the total octets of received frames,
9258c2ecf20Sopenharmony_ci *            including framing characters, multiply RX_TTL_ETH_FRMS by 8 and
9268c2ecf20Sopenharmony_ci *            add it to this stat (the stat RX_TTL_ETH_FRMS only counts frames
9278c2ecf20Sopenharmony_ci *            that have the required 8 bytes of preamble).
9288c2ecf20Sopenharmony_ci * @rx_data_octets: Count of data and padding octets of successfully received
9298c2ecf20Sopenharmony_ci *            frames. Does not include frames received with frame-too-long,
9308c2ecf20Sopenharmony_ci *            FCS, or length errors.
9318c2ecf20Sopenharmony_ci * @rx_offload_octets: Count of total octets, not including framing characters,
9328c2ecf20Sopenharmony_ci *            of offloaded received frames that are passed to the host.
9338c2ecf20Sopenharmony_ci * @rx_vld_mcast_frms: Count of successfully received MAC frames containing a
9348c2ecf20Sopenharmony_ci *            nonbroadcast group address. Does not include frames received with
9358c2ecf20Sopenharmony_ci *            frame-too-long, FCS, or length errors.
9368c2ecf20Sopenharmony_ci * @rx_vld_bcast_frms: Count of successfully received MAC frames containing the
9378c2ecf20Sopenharmony_ci *            broadcast group address. Does not include frames received with
9388c2ecf20Sopenharmony_ci *            frame-too-long, FCS, or length errors.
9398c2ecf20Sopenharmony_ci * @rx_accepted_ucast_frms: Count of successfully received frames containing
9408c2ecf20Sopenharmony_ci *            a unicast address. Only includes frames that are passed to the
9418c2ecf20Sopenharmony_ci *            system.
9428c2ecf20Sopenharmony_ci * @rx_accepted_nucast_frms: Count of successfully received frames containing
9438c2ecf20Sopenharmony_ci *            a non-unicast (broadcast or multicast) address. Only includes
9448c2ecf20Sopenharmony_ci *            frames that are passed to the system. Could include, for instance,
9458c2ecf20Sopenharmony_ci *            non-unicast frames that contain FCS errors if the MAC_ERROR_CFG
9468c2ecf20Sopenharmony_ci *            register is set to pass FCS-errored frames to the host.
9478c2ecf20Sopenharmony_ci * @rx_tagged_frms: Count of received frames containing a VLAN tag.
9488c2ecf20Sopenharmony_ci * @rx_long_frms: Count of received frames that are longer than RX_MAX_PYLD_LEN
9498c2ecf20Sopenharmony_ci *            + 18 bytes (+ 22 bytes if VLAN-tagged).
9508c2ecf20Sopenharmony_ci * @rx_usized_frms: Count of received frames of length (including FCS, but not
9518c2ecf20Sopenharmony_ci *            framing bits) less than 64 octets, that are otherwise well-formed.
9528c2ecf20Sopenharmony_ci *            In other words, counts runts.
9538c2ecf20Sopenharmony_ci * @rx_osized_frms: Count of received frames of length (including FCS, but not
9548c2ecf20Sopenharmony_ci *            framing bits) more than 1518 octets, that are otherwise
9558c2ecf20Sopenharmony_ci *            well-formed.
9568c2ecf20Sopenharmony_ci * @rx_frag_frms: Count of received frames of length (including FCS, but not
9578c2ecf20Sopenharmony_ci *            framing bits) less than 64 octets that had bad FCS.
9588c2ecf20Sopenharmony_ci *            In other words, counts fragments.
9598c2ecf20Sopenharmony_ci * @rx_jabber_frms: Count of received frames of length (including FCS, but not
9608c2ecf20Sopenharmony_ci *            framing bits) more than 1518 octets that had bad FCS. In other
9618c2ecf20Sopenharmony_ci *            words, counts jabbers.
9628c2ecf20Sopenharmony_ci * @rx_ttl_64_frms: Count of total received MAC frames with length (including
9638c2ecf20Sopenharmony_ci *            FCS, but not framing bits) of exactly 64 octets. Includes frames
9648c2ecf20Sopenharmony_ci *            received with frame-too-long, FCS, or length errors.
9658c2ecf20Sopenharmony_ci * @rx_ttl_65_127_frms: Count of total received MAC frames
9668c2ecf20Sopenharmony_ci * 		with length (including
9678c2ecf20Sopenharmony_ci *            FCS, but not framing bits) of between 65 and 127 octets inclusive.
9688c2ecf20Sopenharmony_ci *            Includes frames received with frame-too-long, FCS,
9698c2ecf20Sopenharmony_ci *            or length errors.
9708c2ecf20Sopenharmony_ci * @rx_ttl_128_255_frms: Count of total received MAC frames with length
9718c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits)
9728c2ecf20Sopenharmony_ci *            of between 128 and 255 octets
9738c2ecf20Sopenharmony_ci *            inclusive. Includes frames received with frame-too-long, FCS,
9748c2ecf20Sopenharmony_ci *            or length errors.
9758c2ecf20Sopenharmony_ci * @rx_ttl_256_511_frms: Count of total received MAC frames with length
9768c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits)
9778c2ecf20Sopenharmony_ci *            of between 256 and 511 octets
9788c2ecf20Sopenharmony_ci *            inclusive. Includes frames received with frame-too-long, FCS, or
9798c2ecf20Sopenharmony_ci *            length errors.
9808c2ecf20Sopenharmony_ci * @rx_ttl_512_1023_frms: Count of total received MAC frames with length
9818c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 512 and 1023
9828c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
9838c2ecf20Sopenharmony_ci *            FCS, or length errors.
9848c2ecf20Sopenharmony_ci * @rx_ttl_1024_1518_frms: Count of total received MAC frames with length
9858c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 1024 and 1518
9868c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
9878c2ecf20Sopenharmony_ci *            FCS, or length errors.
9888c2ecf20Sopenharmony_ci * @rx_ttl_1519_4095_frms: Count of total received MAC frames with length
9898c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 1519 and 4095
9908c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
9918c2ecf20Sopenharmony_ci *            FCS, or length errors.
9928c2ecf20Sopenharmony_ci * @rx_ttl_4096_8191_frms: Count of total received MAC frames with length
9938c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 4096 and 8191
9948c2ecf20Sopenharmony_ci *            octets inclusive. Includes frames received with frame-too-long,
9958c2ecf20Sopenharmony_ci *            FCS, or length errors.
9968c2ecf20Sopenharmony_ci * @rx_ttl_8192_max_frms: Count of total received MAC frames with length
9978c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) of between 8192 and
9988c2ecf20Sopenharmony_ci *            RX_MAX_PYLD_LEN+18 octets inclusive. Includes frames received
9998c2ecf20Sopenharmony_ci *            with frame-too-long, FCS, or length errors.
10008c2ecf20Sopenharmony_ci * @rx_ttl_gt_max_frms: Count of total received MAC frames with length
10018c2ecf20Sopenharmony_ci *            (including FCS, but not framing bits) exceeding RX_MAX_PYLD_LEN+18
10028c2ecf20Sopenharmony_ci *            (+22 bytes if VLAN-tagged) octets inclusive. Includes frames
10038c2ecf20Sopenharmony_ci *            received with frame-too-long, FCS, or length errors.
10048c2ecf20Sopenharmony_ci * @rx_ip: Count of received IP datagrams. Includes errored IP datagrams.
10058c2ecf20Sopenharmony_ci * @rx_accepted_ip: Count of received IP datagrams that
10068c2ecf20Sopenharmony_ci * 		are passed to the system.
10078c2ecf20Sopenharmony_ci * @rx_ip_octets: Count of number of octets in received IP datagrams.
10088c2ecf20Sopenharmony_ci *            Includes errored IP datagrams.
10098c2ecf20Sopenharmony_ci * @rx_err_ip: Count of received IP datagrams containing errors. For example,
10108c2ecf20Sopenharmony_ci *            bad IP checksum.
10118c2ecf20Sopenharmony_ci * @rx_icmp: Count of received ICMP messages. Includes errored ICMP messages.
10128c2ecf20Sopenharmony_ci * @rx_tcp: Count of received TCP segments. Includes errored TCP segments.
10138c2ecf20Sopenharmony_ci *             Note: This stat contains a count of all received TCP segments,
10148c2ecf20Sopenharmony_ci *             regardless of whether or not they pertain to an established
10158c2ecf20Sopenharmony_ci *             connection.
10168c2ecf20Sopenharmony_ci * @rx_udp: Count of received UDP datagrams.
10178c2ecf20Sopenharmony_ci * @rx_err_tcp: Count of received TCP segments containing errors. For example,
10188c2ecf20Sopenharmony_ci *             bad TCP checksum.
10198c2ecf20Sopenharmony_ci * @rx_lost_frms: Count of received frames that could not be passed to the host.
10208c2ecf20Sopenharmony_ci *             See RX_QUEUE_FULL_DISCARD and RX_RED_DISCARD
10218c2ecf20Sopenharmony_ci *             for a list of reasons.
10228c2ecf20Sopenharmony_ci * @rx_lost_ip: Count of received IP datagrams that could not be passed to
10238c2ecf20Sopenharmony_ci *             the host. See RX_LOST_FRMS for a list of reasons.
10248c2ecf20Sopenharmony_ci * @rx_lost_ip_offload: For frames belonging to offloaded sessions only, a count
10258c2ecf20Sopenharmony_ci *             of received IP datagrams that could not be passed to the host.
10268c2ecf20Sopenharmony_ci *             See RX_LOST_FRMS for a list of reasons.
10278c2ecf20Sopenharmony_ci * @rx_various_discard: Count of received frames that are discarded because
10288c2ecf20Sopenharmony_ci *             the target receive queue is full.
10298c2ecf20Sopenharmony_ci * @rx_sleep_discard: Count of received frames that are discarded because the
10308c2ecf20Sopenharmony_ci *            target VPATH is asleep (a Wake-on-LAN magic packet can be used
10318c2ecf20Sopenharmony_ci *            to awaken the VPATH).
10328c2ecf20Sopenharmony_ci * @rx_red_discard: Count of received frames that are discarded because of RED
10338c2ecf20Sopenharmony_ci *            (Random Early Discard).
10348c2ecf20Sopenharmony_ci * @rx_queue_full_discard: Count of received frames that are discarded because
10358c2ecf20Sopenharmony_ci *             the target receive queue is full.
10368c2ecf20Sopenharmony_ci * @rx_mpa_ok_frms: Count of received frames that pass the MPA checks.
10378c2ecf20Sopenharmony_ci *
10388c2ecf20Sopenharmony_ci * XMAC Vpath RX Statistics.
10398c2ecf20Sopenharmony_ci */
10408c2ecf20Sopenharmony_cistruct vxge_hw_xmac_vpath_rx_stats {
10418c2ecf20Sopenharmony_ci	u64	rx_ttl_eth_frms;
10428c2ecf20Sopenharmony_ci	u64	rx_vld_frms;
10438c2ecf20Sopenharmony_ci	u64	rx_offload_frms;
10448c2ecf20Sopenharmony_ci	u64	rx_ttl_eth_octets;
10458c2ecf20Sopenharmony_ci	u64	rx_data_octets;
10468c2ecf20Sopenharmony_ci	u64	rx_offload_octets;
10478c2ecf20Sopenharmony_ci	u64	rx_vld_mcast_frms;
10488c2ecf20Sopenharmony_ci	u64	rx_vld_bcast_frms;
10498c2ecf20Sopenharmony_ci	u64	rx_accepted_ucast_frms;
10508c2ecf20Sopenharmony_ci	u64	rx_accepted_nucast_frms;
10518c2ecf20Sopenharmony_ci	u64	rx_tagged_frms;
10528c2ecf20Sopenharmony_ci	u64	rx_long_frms;
10538c2ecf20Sopenharmony_ci	u64	rx_usized_frms;
10548c2ecf20Sopenharmony_ci	u64	rx_osized_frms;
10558c2ecf20Sopenharmony_ci	u64	rx_frag_frms;
10568c2ecf20Sopenharmony_ci	u64	rx_jabber_frms;
10578c2ecf20Sopenharmony_ci	u64	rx_ttl_64_frms;
10588c2ecf20Sopenharmony_ci	u64	rx_ttl_65_127_frms;
10598c2ecf20Sopenharmony_ci	u64	rx_ttl_128_255_frms;
10608c2ecf20Sopenharmony_ci	u64	rx_ttl_256_511_frms;
10618c2ecf20Sopenharmony_ci	u64	rx_ttl_512_1023_frms;
10628c2ecf20Sopenharmony_ci	u64	rx_ttl_1024_1518_frms;
10638c2ecf20Sopenharmony_ci	u64	rx_ttl_1519_4095_frms;
10648c2ecf20Sopenharmony_ci	u64	rx_ttl_4096_8191_frms;
10658c2ecf20Sopenharmony_ci	u64	rx_ttl_8192_max_frms;
10668c2ecf20Sopenharmony_ci	u64	rx_ttl_gt_max_frms;
10678c2ecf20Sopenharmony_ci	u64	rx_ip;
10688c2ecf20Sopenharmony_ci	u64	rx_accepted_ip;
10698c2ecf20Sopenharmony_ci	u64	rx_ip_octets;
10708c2ecf20Sopenharmony_ci	u64	rx_err_ip;
10718c2ecf20Sopenharmony_ci	u64	rx_icmp;
10728c2ecf20Sopenharmony_ci	u64	rx_tcp;
10738c2ecf20Sopenharmony_ci	u64	rx_udp;
10748c2ecf20Sopenharmony_ci	u64	rx_err_tcp;
10758c2ecf20Sopenharmony_ci	u64	rx_lost_frms;
10768c2ecf20Sopenharmony_ci	u64	rx_lost_ip;
10778c2ecf20Sopenharmony_ci	u64	rx_lost_ip_offload;
10788c2ecf20Sopenharmony_ci	u16	rx_various_discard;
10798c2ecf20Sopenharmony_ci	u16	rx_sleep_discard;
10808c2ecf20Sopenharmony_ci	u16	rx_red_discard;
10818c2ecf20Sopenharmony_ci	u16	rx_queue_full_discard;
10828c2ecf20Sopenharmony_ci	u64	rx_mpa_ok_frms;
10838c2ecf20Sopenharmony_ci} __packed;
10848c2ecf20Sopenharmony_ci
10858c2ecf20Sopenharmony_ci/**
10868c2ecf20Sopenharmony_ci * struct vxge_hw_xmac_stats - XMAC Statistics
10878c2ecf20Sopenharmony_ci *
10888c2ecf20Sopenharmony_ci * @aggr_stats: Statistics on aggregate port(port 0, port 1)
10898c2ecf20Sopenharmony_ci * @port_stats: Staticstics on ports(wire 0, wire 1, lag)
10908c2ecf20Sopenharmony_ci * @vpath_tx_stats: Per vpath XMAC TX stats
10918c2ecf20Sopenharmony_ci * @vpath_rx_stats: Per vpath XMAC RX stats
10928c2ecf20Sopenharmony_ci *
10938c2ecf20Sopenharmony_ci * XMAC Statistics.
10948c2ecf20Sopenharmony_ci */
10958c2ecf20Sopenharmony_cistruct vxge_hw_xmac_stats {
10968c2ecf20Sopenharmony_ci	struct vxge_hw_xmac_aggr_stats
10978c2ecf20Sopenharmony_ci				aggr_stats[VXGE_HW_MAC_MAX_MAC_PORT_ID];
10988c2ecf20Sopenharmony_ci	struct vxge_hw_xmac_port_stats
10998c2ecf20Sopenharmony_ci				port_stats[VXGE_HW_MAC_MAX_MAC_PORT_ID+1];
11008c2ecf20Sopenharmony_ci	struct vxge_hw_xmac_vpath_tx_stats
11018c2ecf20Sopenharmony_ci				vpath_tx_stats[VXGE_HW_MAX_VIRTUAL_PATHS];
11028c2ecf20Sopenharmony_ci	struct vxge_hw_xmac_vpath_rx_stats
11038c2ecf20Sopenharmony_ci				vpath_rx_stats[VXGE_HW_MAX_VIRTUAL_PATHS];
11048c2ecf20Sopenharmony_ci};
11058c2ecf20Sopenharmony_ci
11068c2ecf20Sopenharmony_ci/**
11078c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_hw_info - Titan vpath hardware statistics.
11088c2ecf20Sopenharmony_ci * @ini_num_mwr_sent: The number of PCI memory writes initiated by the PIC block
11098c2ecf20Sopenharmony_ci *             for the given VPATH
11108c2ecf20Sopenharmony_ci * @ini_num_mrd_sent: The number of PCI memory reads initiated by the PIC block
11118c2ecf20Sopenharmony_ci * @ini_num_cpl_rcvd: The number of PCI read completions received by the
11128c2ecf20Sopenharmony_ci *             PIC block
11138c2ecf20Sopenharmony_ci * @ini_num_mwr_byte_sent: The number of PCI memory write bytes sent by the PIC
11148c2ecf20Sopenharmony_ci *             block to the host
11158c2ecf20Sopenharmony_ci * @ini_num_cpl_byte_rcvd: The number of PCI read completion bytes received by
11168c2ecf20Sopenharmony_ci *             the PIC block
11178c2ecf20Sopenharmony_ci * @wrcrdtarb_xoff: TBD
11188c2ecf20Sopenharmony_ci * @rdcrdtarb_xoff: TBD
11198c2ecf20Sopenharmony_ci * @vpath_genstats_count0: TBD
11208c2ecf20Sopenharmony_ci * @vpath_genstats_count1: TBD
11218c2ecf20Sopenharmony_ci * @vpath_genstats_count2: TBD
11228c2ecf20Sopenharmony_ci * @vpath_genstats_count3: TBD
11238c2ecf20Sopenharmony_ci * @vpath_genstats_count4: TBD
11248c2ecf20Sopenharmony_ci * @vpath_gennstats_count5: TBD
11258c2ecf20Sopenharmony_ci * @tx_stats: Transmit stats
11268c2ecf20Sopenharmony_ci * @rx_stats: Receive stats
11278c2ecf20Sopenharmony_ci * @prog_event_vnum1: Programmable statistic. Increments when internal logic
11288c2ecf20Sopenharmony_ci *             detects a certain event. See register
11298c2ecf20Sopenharmony_ci *             XMAC_STATS_CFG.EVENT_VNUM1_CFG for more information.
11308c2ecf20Sopenharmony_ci * @prog_event_vnum0: Programmable statistic. Increments when internal logic
11318c2ecf20Sopenharmony_ci *             detects a certain event. See register
11328c2ecf20Sopenharmony_ci *             XMAC_STATS_CFG.EVENT_VNUM0_CFG for more information.
11338c2ecf20Sopenharmony_ci * @prog_event_vnum3: Programmable statistic. Increments when internal logic
11348c2ecf20Sopenharmony_ci *             detects a certain event. See register
11358c2ecf20Sopenharmony_ci *             XMAC_STATS_CFG.EVENT_VNUM3_CFG for more information.
11368c2ecf20Sopenharmony_ci * @prog_event_vnum2: Programmable statistic. Increments when internal logic
11378c2ecf20Sopenharmony_ci *             detects a certain event. See register
11388c2ecf20Sopenharmony_ci *             XMAC_STATS_CFG.EVENT_VNUM2_CFG for more information.
11398c2ecf20Sopenharmony_ci * @rx_multi_cast_frame_discard: TBD
11408c2ecf20Sopenharmony_ci * @rx_frm_transferred: TBD
11418c2ecf20Sopenharmony_ci * @rxd_returned: TBD
11428c2ecf20Sopenharmony_ci * @rx_mpa_len_fail_frms: Count of received frames
11438c2ecf20Sopenharmony_ci * 		that fail the MPA length check
11448c2ecf20Sopenharmony_ci * @rx_mpa_mrk_fail_frms: Count of received frames
11458c2ecf20Sopenharmony_ci * 		that fail the MPA marker check
11468c2ecf20Sopenharmony_ci * @rx_mpa_crc_fail_frms: Count of received frames that fail the MPA CRC check
11478c2ecf20Sopenharmony_ci * @rx_permitted_frms: Count of frames that pass through the FAU and on to the
11488c2ecf20Sopenharmony_ci *             frame buffer (and subsequently to the host).
11498c2ecf20Sopenharmony_ci * @rx_vp_reset_discarded_frms: Count of receive frames that are discarded
11508c2ecf20Sopenharmony_ci *             because the VPATH is in reset
11518c2ecf20Sopenharmony_ci * @rx_wol_frms: Count of received "magic packet" frames. Stat increments
11528c2ecf20Sopenharmony_ci *             whenever the received frame matches the VPATH's Wake-on-LAN
11538c2ecf20Sopenharmony_ci *             signature(s) CRC.
11548c2ecf20Sopenharmony_ci * @tx_vp_reset_discarded_frms: Count of transmit frames that are discarded
11558c2ecf20Sopenharmony_ci *             because the VPATH is in reset. Includes frames that are discarded
11568c2ecf20Sopenharmony_ci *             because the current VPIN does not match that VPIN of the frame
11578c2ecf20Sopenharmony_ci *
11588c2ecf20Sopenharmony_ci * Titan vpath hardware statistics.
11598c2ecf20Sopenharmony_ci */
11608c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_hw_info {
11618c2ecf20Sopenharmony_ci/*0x000*/	u32 ini_num_mwr_sent;
11628c2ecf20Sopenharmony_ci/*0x004*/	u32 unused1;
11638c2ecf20Sopenharmony_ci/*0x008*/	u32 ini_num_mrd_sent;
11648c2ecf20Sopenharmony_ci/*0x00c*/	u32 unused2;
11658c2ecf20Sopenharmony_ci/*0x010*/	u32 ini_num_cpl_rcvd;
11668c2ecf20Sopenharmony_ci/*0x014*/	u32 unused3;
11678c2ecf20Sopenharmony_ci/*0x018*/	u64 ini_num_mwr_byte_sent;
11688c2ecf20Sopenharmony_ci/*0x020*/	u64 ini_num_cpl_byte_rcvd;
11698c2ecf20Sopenharmony_ci/*0x028*/	u32 wrcrdtarb_xoff;
11708c2ecf20Sopenharmony_ci/*0x02c*/	u32 unused4;
11718c2ecf20Sopenharmony_ci/*0x030*/	u32 rdcrdtarb_xoff;
11728c2ecf20Sopenharmony_ci/*0x034*/	u32 unused5;
11738c2ecf20Sopenharmony_ci/*0x038*/	u32 vpath_genstats_count0;
11748c2ecf20Sopenharmony_ci/*0x03c*/	u32 vpath_genstats_count1;
11758c2ecf20Sopenharmony_ci/*0x040*/	u32 vpath_genstats_count2;
11768c2ecf20Sopenharmony_ci/*0x044*/	u32 vpath_genstats_count3;
11778c2ecf20Sopenharmony_ci/*0x048*/	u32 vpath_genstats_count4;
11788c2ecf20Sopenharmony_ci/*0x04c*/	u32 unused6;
11798c2ecf20Sopenharmony_ci/*0x050*/	u32 vpath_genstats_count5;
11808c2ecf20Sopenharmony_ci/*0x054*/	u32 unused7;
11818c2ecf20Sopenharmony_ci/*0x058*/	struct vxge_hw_xmac_vpath_tx_stats tx_stats;
11828c2ecf20Sopenharmony_ci/*0x0e8*/	struct vxge_hw_xmac_vpath_rx_stats rx_stats;
11838c2ecf20Sopenharmony_ci/*0x220*/	u64 unused9;
11848c2ecf20Sopenharmony_ci/*0x228*/	u32 prog_event_vnum1;
11858c2ecf20Sopenharmony_ci/*0x22c*/	u32 prog_event_vnum0;
11868c2ecf20Sopenharmony_ci/*0x230*/	u32 prog_event_vnum3;
11878c2ecf20Sopenharmony_ci/*0x234*/	u32 prog_event_vnum2;
11888c2ecf20Sopenharmony_ci/*0x238*/	u16 rx_multi_cast_frame_discard;
11898c2ecf20Sopenharmony_ci/*0x23a*/	u8 unused10[6];
11908c2ecf20Sopenharmony_ci/*0x240*/	u32 rx_frm_transferred;
11918c2ecf20Sopenharmony_ci/*0x244*/	u32 unused11;
11928c2ecf20Sopenharmony_ci/*0x248*/	u16 rxd_returned;
11938c2ecf20Sopenharmony_ci/*0x24a*/	u8 unused12[6];
11948c2ecf20Sopenharmony_ci/*0x252*/	u16 rx_mpa_len_fail_frms;
11958c2ecf20Sopenharmony_ci/*0x254*/	u16 rx_mpa_mrk_fail_frms;
11968c2ecf20Sopenharmony_ci/*0x256*/	u16 rx_mpa_crc_fail_frms;
11978c2ecf20Sopenharmony_ci/*0x258*/	u16 rx_permitted_frms;
11988c2ecf20Sopenharmony_ci/*0x25c*/	u64 rx_vp_reset_discarded_frms;
11998c2ecf20Sopenharmony_ci/*0x25e*/	u64 rx_wol_frms;
12008c2ecf20Sopenharmony_ci/*0x260*/	u64 tx_vp_reset_discarded_frms;
12018c2ecf20Sopenharmony_ci} __packed;
12028c2ecf20Sopenharmony_ci
12038c2ecf20Sopenharmony_ci
12048c2ecf20Sopenharmony_ci/**
12058c2ecf20Sopenharmony_ci * struct vxge_hw_device_stats_mrpcim_info - Titan mrpcim hardware statistics.
12068c2ecf20Sopenharmony_ci * @pic.ini_rd_drop  	 0x0000  	 4  	 Number of DMA reads initiated
12078c2ecf20Sopenharmony_ci *  by the adapter that were discarded because the VPATH is out of service
12088c2ecf20Sopenharmony_ci * @pic.ini_wr_drop 	0x0004 	4 	Number of DMA writes initiated by the
12098c2ecf20Sopenharmony_ci *  adapter that were discared because the VPATH is out of service
12108c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane0] 	0x0008 	4 	Number of times
12118c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12128c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane1] 	0x0010 	4 	Number of times
12138c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12148c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane2] 	0x0018 	4 	Number of times
12158c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12168c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane3] 	0x0020 	4 	Number of times
12178c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12188c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane4] 	0x0028 	4 	Number of times
12198c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12208c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane5] 	0x0030 	4 	Number of times
12218c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12228c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane6] 	0x0038 	4 	Number of times
12238c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12248c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane7] 	0x0040 	4 	Number of times
12258c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12268c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane8] 	0x0048 	4 	Number of times
12278c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12288c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane9] 	0x0050 	4 	Number of times
12298c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12308c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane10] 	0x0058 	4 	Number of times
12318c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12328c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane11] 	0x0060 	4 	Number of times
12338c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12348c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane12] 	0x0068 	4 	Number of times
12358c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12368c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane13] 	0x0070 	4 	Number of times
12378c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12388c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane14] 	0x0078 	4 	Number of times
12398c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12408c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane15] 	0x0080 	4 	Number of times
12418c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12428c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_ph_crdt_depleted[vplane16] 	0x0088 	4 	Number of times
12438c2ecf20Sopenharmony_ci *  the posted header credits for upstream PCI writes were depleted
12448c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane0] 	0x0090 	4 	Number of times
12458c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12468c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane1] 	0x0098 	4 	Number of times
12478c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12488c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane2] 	0x00a0 	4 	Number of times
12498c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12508c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane3] 	0x00a8 	4 	Number of times
12518c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12528c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane4] 	0x00b0 	4 	Number of times
12538c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12548c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane5] 	0x00b8 	4 	Number of times
12558c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12568c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane6] 	0x00c0 	4 	Number of times
12578c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12588c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane7] 	0x00c8 	4 	Number of times
12598c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12608c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane8] 	0x00d0 	4 	Number of times
12618c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12628c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane9] 	0x00d8 	4 	Number of times
12638c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12648c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane10] 	0x00e0 	4 	Number of times
12658c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12668c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane11] 	0x00e8 	4 	Number of times
12678c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12688c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane12] 	0x00f0 	4 	Number of times
12698c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12708c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane13] 	0x00f8 	4 	Number of times
12718c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12728c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane14] 	0x0100 	4 	Number of times
12738c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12748c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane15] 	0x0108 	4 	Number of times
12758c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12768c2ecf20Sopenharmony_ci * @pic.wrcrdtarb_pd_crdt_depleted[vplane16] 	0x0110 	4 	Number of times
12778c2ecf20Sopenharmony_ci *  the posted data credits for upstream PCI writes were depleted
12788c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane0] 	0x0118 	4 	Number of times
12798c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12808c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane1] 	0x0120 	4 	Number of times
12818c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12828c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane2] 	0x0128 	4 	Number of times
12838c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12848c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane3] 	0x0130 	4 	Number of times
12858c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12868c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane4] 	0x0138 	4 	Number of times
12878c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12888c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane5] 	0x0140 	4 	Number of times
12898c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12908c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane6] 	0x0148 	4 	Number of times
12918c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12928c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane7] 	0x0150 	4 	Number of times
12938c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12948c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane8] 	0x0158 	4 	Number of times
12958c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12968c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane9] 	0x0160 	4 	Number of times
12978c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
12988c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane10] 	0x0168 	4 	Number of times
12998c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13008c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane11] 	0x0170 	4 	Number of times
13018c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13028c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane12] 	0x0178 	4 	Number of times
13038c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13048c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane13] 	0x0180 	4 	Number of times
13058c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13068c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane14] 	0x0188 	4 	Number of times
13078c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13088c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane15] 	0x0190 	4 	Number of times
13098c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13108c2ecf20Sopenharmony_ci * @pic.rdcrdtarb_nph_crdt_depleted[vplane16] 	0x0198 	4 	Number of times
13118c2ecf20Sopenharmony_ci *  the non-posted header credits for upstream PCI reads were depleted
13128c2ecf20Sopenharmony_ci * @pic.ini_rd_vpin_drop 	0x01a0 	4 	Number of DMA reads initiated by
13138c2ecf20Sopenharmony_ci *  the adapter that were discarded because the VPATH instance number does
13148c2ecf20Sopenharmony_ci *  not match
13158c2ecf20Sopenharmony_ci * @pic.ini_wr_vpin_drop 	0x01a4 	4 	Number of DMA writes initiated
13168c2ecf20Sopenharmony_ci *  by the adapter that were discarded because the VPATH instance number
13178c2ecf20Sopenharmony_ci *  does not match
13188c2ecf20Sopenharmony_ci * @pic.genstats_count0 	0x01a8 	4 	Configurable statistic #1. Refer
13198c2ecf20Sopenharmony_ci *  to the GENSTATS0_CFG for information on configuring this statistic
13208c2ecf20Sopenharmony_ci * @pic.genstats_count1 	0x01ac 	4 	Configurable statistic #2. Refer
13218c2ecf20Sopenharmony_ci *  to the GENSTATS1_CFG for information on configuring this statistic
13228c2ecf20Sopenharmony_ci * @pic.genstats_count2 	0x01b0 	4 	Configurable statistic #3. Refer
13238c2ecf20Sopenharmony_ci *  to the GENSTATS2_CFG for information on configuring this statistic
13248c2ecf20Sopenharmony_ci * @pic.genstats_count3 	0x01b4 	4 	Configurable statistic #4. Refer
13258c2ecf20Sopenharmony_ci *  to the GENSTATS3_CFG for information on configuring this statistic
13268c2ecf20Sopenharmony_ci * @pic.genstats_count4 	0x01b8 	4 	Configurable statistic #5. Refer
13278c2ecf20Sopenharmony_ci *  to the GENSTATS4_CFG for information on configuring this statistic
13288c2ecf20Sopenharmony_ci * @pic.genstats_count5 	0x01c0 	4 	Configurable statistic #6. Refer
13298c2ecf20Sopenharmony_ci *  to the GENSTATS5_CFG for information on configuring this statistic
13308c2ecf20Sopenharmony_ci * @pci.rstdrop_cpl 	0x01c8 	4
13318c2ecf20Sopenharmony_ci * @pci.rstdrop_msg 	0x01cc 	4
13328c2ecf20Sopenharmony_ci * @pci.rstdrop_client1 	0x01d0 	4
13338c2ecf20Sopenharmony_ci * @pci.rstdrop_client0 	0x01d4 	4
13348c2ecf20Sopenharmony_ci * @pci.rstdrop_client2 	0x01d8 	4
13358c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane0] 	0x01e2 	2 	Number of times completion
13368c2ecf20Sopenharmony_ci *  header credits were depleted
13378c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane0] 	0x01e4 	2 	Number of times non posted
13388c2ecf20Sopenharmony_ci *  header credits were depleted
13398c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane0] 	0x01e6 	2 	Number of times the posted
13408c2ecf20Sopenharmony_ci *  header credits were depleted
13418c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane1] 	0x01ea 	2
13428c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane1] 	0x01ec 	2
13438c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane1] 	0x01ee 	2
13448c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane2] 	0x01f2 	2
13458c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane2] 	0x01f4 	2
13468c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane2] 	0x01f6 	2
13478c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane3] 	0x01fa 	2
13488c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane3] 	0x01fc 	2
13498c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane3] 	0x01fe 	2
13508c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane4] 	0x0202 	2
13518c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane4] 	0x0204 	2
13528c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane4] 	0x0206 	2
13538c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane5] 	0x020a 	2
13548c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane5] 	0x020c 	2
13558c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane5] 	0x020e 	2
13568c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane6] 	0x0212 	2
13578c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane6] 	0x0214 	2
13588c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane6] 	0x0216 	2
13598c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane7] 	0x021a 	2
13608c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane7] 	0x021c 	2
13618c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane7] 	0x021e 	2
13628c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane8] 	0x0222 	2
13638c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane8] 	0x0224 	2
13648c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane8] 	0x0226 	2
13658c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane9] 	0x022a 	2
13668c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane9] 	0x022c 	2
13678c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane9] 	0x022e 	2
13688c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane10] 	0x0232 	2
13698c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane10] 	0x0234 	2
13708c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane10] 	0x0236 	2
13718c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane11] 	0x023a 	2
13728c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane11] 	0x023c 	2
13738c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane11] 	0x023e 	2
13748c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane12] 	0x0242 	2
13758c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane12] 	0x0244 	2
13768c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane12] 	0x0246 	2
13778c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane13] 	0x024a 	2
13788c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane13] 	0x024c 	2
13798c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane13] 	0x024e 	2
13808c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane14] 	0x0252 	2
13818c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane14] 	0x0254 	2
13828c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane14] 	0x0256 	2
13838c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane15] 	0x025a 	2
13848c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane15] 	0x025c 	2
13858c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane15] 	0x025e 	2
13868c2ecf20Sopenharmony_ci * @pci.depl_cplh[vplane16] 	0x0262 	2
13878c2ecf20Sopenharmony_ci * @pci.depl_nph[vplane16] 	0x0264 	2
13888c2ecf20Sopenharmony_ci * @pci.depl_ph[vplane16] 	0x0266 	2
13898c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane0] 	0x026a 	2 	Number of times completion data
13908c2ecf20Sopenharmony_ci *  credits were depleted
13918c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane0] 	0x026c 	2 	Number of times non posted data
13928c2ecf20Sopenharmony_ci *  credits were depleted
13938c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane0] 	0x026e 	2 	Number of times the posted data
13948c2ecf20Sopenharmony_ci *  credits were depleted
13958c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane1] 	0x0272 	2
13968c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane1] 	0x0274 	2
13978c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane1] 	0x0276 	2
13988c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane2] 	0x027a 	2
13998c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane2] 	0x027c 	2
14008c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane2] 	0x027e 	2
14018c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane3] 	0x0282 	2
14028c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane3] 	0x0284 	2
14038c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane3] 	0x0286 	2
14048c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane4] 	0x028a 	2
14058c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane4] 	0x028c 	2
14068c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane4] 	0x028e 	2
14078c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane5] 	0x0292 	2
14088c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane5] 	0x0294 	2
14098c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane5] 	0x0296 	2
14108c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane6] 	0x029a 	2
14118c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane6] 	0x029c 	2
14128c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane6] 	0x029e 	2
14138c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane7] 	0x02a2 	2
14148c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane7] 	0x02a4 	2
14158c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane7] 	0x02a6 	2
14168c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane8] 	0x02aa 	2
14178c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane8] 	0x02ac 	2
14188c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane8] 	0x02ae 	2
14198c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane9] 	0x02b2 	2
14208c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane9] 	0x02b4 	2
14218c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane9] 	0x02b6 	2
14228c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane10] 	0x02ba 	2
14238c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane10] 	0x02bc 	2
14248c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane10] 	0x02be 	2
14258c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane11] 	0x02c2 	2
14268c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane11] 	0x02c4 	2
14278c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane11] 	0x02c6 	2
14288c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane12] 	0x02ca 	2
14298c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane12] 	0x02cc 	2
14308c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane12] 	0x02ce 	2
14318c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane13] 	0x02d2 	2
14328c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane13] 	0x02d4 	2
14338c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane13] 	0x02d6 	2
14348c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane14] 	0x02da 	2
14358c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane14] 	0x02dc 	2
14368c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane14] 	0x02de 	2
14378c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane15] 	0x02e2 	2
14388c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane15] 	0x02e4 	2
14398c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane15] 	0x02e6 	2
14408c2ecf20Sopenharmony_ci * @pci.depl_cpld[vplane16] 	0x02ea 	2
14418c2ecf20Sopenharmony_ci * @pci.depl_npd[vplane16] 	0x02ec 	2
14428c2ecf20Sopenharmony_ci * @pci.depl_pd[vplane16] 	0x02ee 	2
14438c2ecf20Sopenharmony_ci * @xgmac_port[3];
14448c2ecf20Sopenharmony_ci * @xgmac_aggr[2];
14458c2ecf20Sopenharmony_ci * @xgmac.global_prog_event_gnum0 	0x0ae0 	8 	Programmable statistic.
14468c2ecf20Sopenharmony_ci *  Increments when internal logic detects a certain event. See register
14478c2ecf20Sopenharmony_ci *  XMAC_STATS_GLOBAL_CFG.EVENT_GNUM0_CFG for more information.
14488c2ecf20Sopenharmony_ci * @xgmac.global_prog_event_gnum1 	0x0ae8 	8 	Programmable statistic.
14498c2ecf20Sopenharmony_ci *  Increments when internal logic detects a certain event. See register
14508c2ecf20Sopenharmony_ci *  XMAC_STATS_GLOBAL_CFG.EVENT_GNUM1_CFG for more information.
14518c2ecf20Sopenharmony_ci * @xgmac.orp_lro_events 	0x0af8 	8
14528c2ecf20Sopenharmony_ci * @xgmac.orp_bs_events 	0x0b00 	8
14538c2ecf20Sopenharmony_ci * @xgmac.orp_iwarp_events 	0x0b08 	8
14548c2ecf20Sopenharmony_ci * @xgmac.tx_permitted_frms 	0x0b14 	4
14558c2ecf20Sopenharmony_ci * @xgmac.port2_tx_any_frms 	0x0b1d 	1
14568c2ecf20Sopenharmony_ci * @xgmac.port1_tx_any_frms 	0x0b1e 	1
14578c2ecf20Sopenharmony_ci * @xgmac.port0_tx_any_frms 	0x0b1f 	1
14588c2ecf20Sopenharmony_ci * @xgmac.port2_rx_any_frms 	0x0b25 	1
14598c2ecf20Sopenharmony_ci * @xgmac.port1_rx_any_frms 	0x0b26 	1
14608c2ecf20Sopenharmony_ci * @xgmac.port0_rx_any_frms 	0x0b27 	1
14618c2ecf20Sopenharmony_ci *
14628c2ecf20Sopenharmony_ci * Titan mrpcim hardware statistics.
14638c2ecf20Sopenharmony_ci */
14648c2ecf20Sopenharmony_cistruct vxge_hw_device_stats_mrpcim_info {
14658c2ecf20Sopenharmony_ci/*0x0000*/	u32	pic_ini_rd_drop;
14668c2ecf20Sopenharmony_ci/*0x0004*/	u32	pic_ini_wr_drop;
14678c2ecf20Sopenharmony_ci/*0x0008*/	struct {
14688c2ecf20Sopenharmony_ci	/*0x0000*/	u32	pic_wrcrdtarb_ph_crdt_depleted;
14698c2ecf20Sopenharmony_ci	/*0x0004*/	u32	unused1;
14708c2ecf20Sopenharmony_ci		} pic_wrcrdtarb_ph_crdt_depleted_vplane[17];
14718c2ecf20Sopenharmony_ci/*0x0090*/	struct {
14728c2ecf20Sopenharmony_ci	/*0x0000*/	u32	pic_wrcrdtarb_pd_crdt_depleted;
14738c2ecf20Sopenharmony_ci	/*0x0004*/	u32	unused2;
14748c2ecf20Sopenharmony_ci		} pic_wrcrdtarb_pd_crdt_depleted_vplane[17];
14758c2ecf20Sopenharmony_ci/*0x0118*/	struct {
14768c2ecf20Sopenharmony_ci	/*0x0000*/	u32	pic_rdcrdtarb_nph_crdt_depleted;
14778c2ecf20Sopenharmony_ci	/*0x0004*/	u32	unused3;
14788c2ecf20Sopenharmony_ci		} pic_rdcrdtarb_nph_crdt_depleted_vplane[17];
14798c2ecf20Sopenharmony_ci/*0x01a0*/	u32	pic_ini_rd_vpin_drop;
14808c2ecf20Sopenharmony_ci/*0x01a4*/	u32	pic_ini_wr_vpin_drop;
14818c2ecf20Sopenharmony_ci/*0x01a8*/	u32	pic_genstats_count0;
14828c2ecf20Sopenharmony_ci/*0x01ac*/	u32	pic_genstats_count1;
14838c2ecf20Sopenharmony_ci/*0x01b0*/	u32	pic_genstats_count2;
14848c2ecf20Sopenharmony_ci/*0x01b4*/	u32	pic_genstats_count3;
14858c2ecf20Sopenharmony_ci/*0x01b8*/	u32	pic_genstats_count4;
14868c2ecf20Sopenharmony_ci/*0x01bc*/	u32	unused4;
14878c2ecf20Sopenharmony_ci/*0x01c0*/	u32	pic_genstats_count5;
14888c2ecf20Sopenharmony_ci/*0x01c4*/	u32	unused5;
14898c2ecf20Sopenharmony_ci/*0x01c8*/	u32	pci_rstdrop_cpl;
14908c2ecf20Sopenharmony_ci/*0x01cc*/	u32	pci_rstdrop_msg;
14918c2ecf20Sopenharmony_ci/*0x01d0*/	u32	pci_rstdrop_client1;
14928c2ecf20Sopenharmony_ci/*0x01d4*/	u32	pci_rstdrop_client0;
14938c2ecf20Sopenharmony_ci/*0x01d8*/	u32	pci_rstdrop_client2;
14948c2ecf20Sopenharmony_ci/*0x01dc*/	u32	unused6;
14958c2ecf20Sopenharmony_ci/*0x01e0*/	struct {
14968c2ecf20Sopenharmony_ci	/*0x0000*/	u16	unused7;
14978c2ecf20Sopenharmony_ci	/*0x0002*/	u16	pci_depl_cplh;
14988c2ecf20Sopenharmony_ci	/*0x0004*/	u16	pci_depl_nph;
14998c2ecf20Sopenharmony_ci	/*0x0006*/	u16	pci_depl_ph;
15008c2ecf20Sopenharmony_ci		} pci_depl_h_vplane[17];
15018c2ecf20Sopenharmony_ci/*0x0268*/	struct {
15028c2ecf20Sopenharmony_ci	/*0x0000*/	u16	unused8;
15038c2ecf20Sopenharmony_ci	/*0x0002*/	u16	pci_depl_cpld;
15048c2ecf20Sopenharmony_ci	/*0x0004*/	u16	pci_depl_npd;
15058c2ecf20Sopenharmony_ci	/*0x0006*/	u16	pci_depl_pd;
15068c2ecf20Sopenharmony_ci		} pci_depl_d_vplane[17];
15078c2ecf20Sopenharmony_ci/*0x02f0*/	struct vxge_hw_xmac_port_stats xgmac_port[3];
15088c2ecf20Sopenharmony_ci/*0x0a10*/	struct vxge_hw_xmac_aggr_stats xgmac_aggr[2];
15098c2ecf20Sopenharmony_ci/*0x0ae0*/	u64	xgmac_global_prog_event_gnum0;
15108c2ecf20Sopenharmony_ci/*0x0ae8*/	u64	xgmac_global_prog_event_gnum1;
15118c2ecf20Sopenharmony_ci/*0x0af0*/	u64	unused7;
15128c2ecf20Sopenharmony_ci/*0x0af8*/	u64	unused8;
15138c2ecf20Sopenharmony_ci/*0x0b00*/	u64	unused9;
15148c2ecf20Sopenharmony_ci/*0x0b08*/	u64	unused10;
15158c2ecf20Sopenharmony_ci/*0x0b10*/	u32	unused11;
15168c2ecf20Sopenharmony_ci/*0x0b14*/	u32	xgmac_tx_permitted_frms;
15178c2ecf20Sopenharmony_ci/*0x0b18*/	u32	unused12;
15188c2ecf20Sopenharmony_ci/*0x0b1c*/	u8	unused13;
15198c2ecf20Sopenharmony_ci/*0x0b1d*/	u8	xgmac_port2_tx_any_frms;
15208c2ecf20Sopenharmony_ci/*0x0b1e*/	u8	xgmac_port1_tx_any_frms;
15218c2ecf20Sopenharmony_ci/*0x0b1f*/	u8	xgmac_port0_tx_any_frms;
15228c2ecf20Sopenharmony_ci/*0x0b20*/	u32	unused14;
15238c2ecf20Sopenharmony_ci/*0x0b24*/	u8	unused15;
15248c2ecf20Sopenharmony_ci/*0x0b25*/	u8	xgmac_port2_rx_any_frms;
15258c2ecf20Sopenharmony_ci/*0x0b26*/	u8	xgmac_port1_rx_any_frms;
15268c2ecf20Sopenharmony_ci/*0x0b27*/	u8	xgmac_port0_rx_any_frms;
15278c2ecf20Sopenharmony_ci} __packed;
15288c2ecf20Sopenharmony_ci
15298c2ecf20Sopenharmony_ci/**
15308c2ecf20Sopenharmony_ci * struct vxge_hw_device_stats_hw_info - Titan hardware statistics.
15318c2ecf20Sopenharmony_ci * @vpath_info: VPath statistics
15328c2ecf20Sopenharmony_ci * @vpath_info_sav: Vpath statistics saved
15338c2ecf20Sopenharmony_ci *
15348c2ecf20Sopenharmony_ci * Titan hardware statistics.
15358c2ecf20Sopenharmony_ci */
15368c2ecf20Sopenharmony_cistruct vxge_hw_device_stats_hw_info {
15378c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_hw_info
15388c2ecf20Sopenharmony_ci		*vpath_info[VXGE_HW_MAX_VIRTUAL_PATHS];
15398c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_hw_info
15408c2ecf20Sopenharmony_ci		vpath_info_sav[VXGE_HW_MAX_VIRTUAL_PATHS];
15418c2ecf20Sopenharmony_ci};
15428c2ecf20Sopenharmony_ci
15438c2ecf20Sopenharmony_ci/**
15448c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_common_info - HW common
15458c2ecf20Sopenharmony_ci * statistics for queues.
15468c2ecf20Sopenharmony_ci * @full_cnt: Number of times the queue was full
15478c2ecf20Sopenharmony_ci * @usage_cnt: usage count.
15488c2ecf20Sopenharmony_ci * @usage_max: Maximum usage
15498c2ecf20Sopenharmony_ci * @reserve_free_swaps_cnt: Reserve/free swap counter. Internal usage.
15508c2ecf20Sopenharmony_ci * @total_compl_cnt: Total descriptor completion count.
15518c2ecf20Sopenharmony_ci *
15528c2ecf20Sopenharmony_ci * Hw queue counters
15538c2ecf20Sopenharmony_ci * See also: struct vxge_hw_vpath_stats_sw_fifo_info{},
15548c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_ring_info{},
15558c2ecf20Sopenharmony_ci */
15568c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_sw_common_info {
15578c2ecf20Sopenharmony_ci	u32	full_cnt;
15588c2ecf20Sopenharmony_ci	u32	usage_cnt;
15598c2ecf20Sopenharmony_ci	u32	usage_max;
15608c2ecf20Sopenharmony_ci	u32	reserve_free_swaps_cnt;
15618c2ecf20Sopenharmony_ci	u32 total_compl_cnt;
15628c2ecf20Sopenharmony_ci};
15638c2ecf20Sopenharmony_ci
15648c2ecf20Sopenharmony_ci/**
15658c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_fifo_info - HW fifo statistics
15668c2ecf20Sopenharmony_ci * @common_stats: Common counters for all queues
15678c2ecf20Sopenharmony_ci * @total_posts: Total number of postings on the queue.
15688c2ecf20Sopenharmony_ci * @total_buffers: Total number of buffers posted.
15698c2ecf20Sopenharmony_ci * @txd_t_code_err_cnt: Array of transmit transfer codes. The position
15708c2ecf20Sopenharmony_ci * (index) in this array reflects the transfer code type, for instance
15718c2ecf20Sopenharmony_ci * 0xA - "loss of link".
15728c2ecf20Sopenharmony_ci * Value txd_t_code_err_cnt[i] reflects the
15738c2ecf20Sopenharmony_ci * number of times the corresponding transfer code was encountered.
15748c2ecf20Sopenharmony_ci *
15758c2ecf20Sopenharmony_ci * HW fifo counters
15768c2ecf20Sopenharmony_ci * See also: struct vxge_hw_vpath_stats_sw_common_info{},
15778c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_ring_info{},
15788c2ecf20Sopenharmony_ci */
15798c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_sw_fifo_info {
15808c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_common_info common_stats;
15818c2ecf20Sopenharmony_ci	u32 total_posts;
15828c2ecf20Sopenharmony_ci	u32 total_buffers;
15838c2ecf20Sopenharmony_ci	u32 txd_t_code_err_cnt[VXGE_HW_DTR_MAX_T_CODE];
15848c2ecf20Sopenharmony_ci};
15858c2ecf20Sopenharmony_ci
15868c2ecf20Sopenharmony_ci/**
15878c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_ring_info - HW ring statistics
15888c2ecf20Sopenharmony_ci * @common_stats: Common counters for all queues
15898c2ecf20Sopenharmony_ci * @rxd_t_code_err_cnt: Array of receive transfer codes. The position
15908c2ecf20Sopenharmony_ci *             (index) in this array reflects the transfer code type,
15918c2ecf20Sopenharmony_ci *             for instance
15928c2ecf20Sopenharmony_ci *             0x7 - for "invalid receive buffer size", or 0x8 - for ECC.
15938c2ecf20Sopenharmony_ci *             Value rxd_t_code_err_cnt[i] reflects the
15948c2ecf20Sopenharmony_ci *             number of times the corresponding transfer code was encountered.
15958c2ecf20Sopenharmony_ci *
15968c2ecf20Sopenharmony_ci * HW ring counters
15978c2ecf20Sopenharmony_ci * See also: struct vxge_hw_vpath_stats_sw_common_info{},
15988c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_fifo_info{},
15998c2ecf20Sopenharmony_ci */
16008c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_sw_ring_info {
16018c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_common_info common_stats;
16028c2ecf20Sopenharmony_ci	u32 rxd_t_code_err_cnt[VXGE_HW_DTR_MAX_T_CODE];
16038c2ecf20Sopenharmony_ci
16048c2ecf20Sopenharmony_ci};
16058c2ecf20Sopenharmony_ci
16068c2ecf20Sopenharmony_ci/**
16078c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_err - HW vpath error statistics
16088c2ecf20Sopenharmony_ci * @unknown_alarms:
16098c2ecf20Sopenharmony_ci * @network_sustained_fault:
16108c2ecf20Sopenharmony_ci * @network_sustained_ok:
16118c2ecf20Sopenharmony_ci * @kdfcctl_fifo0_overwrite:
16128c2ecf20Sopenharmony_ci * @kdfcctl_fifo0_poison:
16138c2ecf20Sopenharmony_ci * @kdfcctl_fifo0_dma_error:
16148c2ecf20Sopenharmony_ci * @dblgen_fifo0_overflow:
16158c2ecf20Sopenharmony_ci * @statsb_pif_chain_error:
16168c2ecf20Sopenharmony_ci * @statsb_drop_timeout:
16178c2ecf20Sopenharmony_ci * @target_illegal_access:
16188c2ecf20Sopenharmony_ci * @ini_serr_det:
16198c2ecf20Sopenharmony_ci * @prc_ring_bumps:
16208c2ecf20Sopenharmony_ci * @prc_rxdcm_sc_err:
16218c2ecf20Sopenharmony_ci * @prc_rxdcm_sc_abort:
16228c2ecf20Sopenharmony_ci * @prc_quanta_size_err:
16238c2ecf20Sopenharmony_ci *
16248c2ecf20Sopenharmony_ci * HW vpath error statistics
16258c2ecf20Sopenharmony_ci */
16268c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_sw_err {
16278c2ecf20Sopenharmony_ci	u32	unknown_alarms;
16288c2ecf20Sopenharmony_ci	u32	network_sustained_fault;
16298c2ecf20Sopenharmony_ci	u32	network_sustained_ok;
16308c2ecf20Sopenharmony_ci	u32	kdfcctl_fifo0_overwrite;
16318c2ecf20Sopenharmony_ci	u32	kdfcctl_fifo0_poison;
16328c2ecf20Sopenharmony_ci	u32	kdfcctl_fifo0_dma_error;
16338c2ecf20Sopenharmony_ci	u32	dblgen_fifo0_overflow;
16348c2ecf20Sopenharmony_ci	u32	statsb_pif_chain_error;
16358c2ecf20Sopenharmony_ci	u32	statsb_drop_timeout;
16368c2ecf20Sopenharmony_ci	u32	target_illegal_access;
16378c2ecf20Sopenharmony_ci	u32	ini_serr_det;
16388c2ecf20Sopenharmony_ci	u32	prc_ring_bumps;
16398c2ecf20Sopenharmony_ci	u32	prc_rxdcm_sc_err;
16408c2ecf20Sopenharmony_ci	u32	prc_rxdcm_sc_abort;
16418c2ecf20Sopenharmony_ci	u32	prc_quanta_size_err;
16428c2ecf20Sopenharmony_ci};
16438c2ecf20Sopenharmony_ci
16448c2ecf20Sopenharmony_ci/**
16458c2ecf20Sopenharmony_ci * struct vxge_hw_vpath_stats_sw_info - HW vpath sw statistics
16468c2ecf20Sopenharmony_ci * @soft_reset_cnt: Number of times soft reset is done on this vpath.
16478c2ecf20Sopenharmony_ci * @error_stats: error counters for the vpath
16488c2ecf20Sopenharmony_ci * @ring_stats: counters for ring belonging to the vpath
16498c2ecf20Sopenharmony_ci * @fifo_stats: counters for fifo belonging to the vpath
16508c2ecf20Sopenharmony_ci *
16518c2ecf20Sopenharmony_ci * HW vpath sw statistics
16528c2ecf20Sopenharmony_ci * See also: struct vxge_hw_device_info{} }.
16538c2ecf20Sopenharmony_ci */
16548c2ecf20Sopenharmony_cistruct vxge_hw_vpath_stats_sw_info {
16558c2ecf20Sopenharmony_ci	u32    soft_reset_cnt;
16568c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_err	error_stats;
16578c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_ring_info	ring_stats;
16588c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_fifo_info	fifo_stats;
16598c2ecf20Sopenharmony_ci};
16608c2ecf20Sopenharmony_ci
16618c2ecf20Sopenharmony_ci/**
16628c2ecf20Sopenharmony_ci * struct vxge_hw_device_stats_sw_info - HW own per-device statistics.
16638c2ecf20Sopenharmony_ci *
16648c2ecf20Sopenharmony_ci * @not_traffic_intr_cnt: Number of times the host was interrupted
16658c2ecf20Sopenharmony_ci *                        without new completions.
16668c2ecf20Sopenharmony_ci *                        "Non-traffic interrupt counter".
16678c2ecf20Sopenharmony_ci * @traffic_intr_cnt: Number of traffic interrupts for the device.
16688c2ecf20Sopenharmony_ci * @total_intr_cnt: Total number of traffic interrupts for the device.
16698c2ecf20Sopenharmony_ci *                  @total_intr_cnt == @traffic_intr_cnt +
16708c2ecf20Sopenharmony_ci *                              @not_traffic_intr_cnt
16718c2ecf20Sopenharmony_ci * @soft_reset_cnt: Number of times soft reset is done on this device.
16728c2ecf20Sopenharmony_ci * @vpath_info: please see struct vxge_hw_vpath_stats_sw_info{}
16738c2ecf20Sopenharmony_ci * HW per-device statistics.
16748c2ecf20Sopenharmony_ci */
16758c2ecf20Sopenharmony_cistruct vxge_hw_device_stats_sw_info {
16768c2ecf20Sopenharmony_ci	u32	not_traffic_intr_cnt;
16778c2ecf20Sopenharmony_ci	u32	traffic_intr_cnt;
16788c2ecf20Sopenharmony_ci	u32	total_intr_cnt;
16798c2ecf20Sopenharmony_ci	u32	soft_reset_cnt;
16808c2ecf20Sopenharmony_ci	struct vxge_hw_vpath_stats_sw_info
16818c2ecf20Sopenharmony_ci		vpath_info[VXGE_HW_MAX_VIRTUAL_PATHS];
16828c2ecf20Sopenharmony_ci};
16838c2ecf20Sopenharmony_ci
16848c2ecf20Sopenharmony_ci/**
16858c2ecf20Sopenharmony_ci * struct vxge_hw_device_stats_sw_err - HW device error statistics.
16868c2ecf20Sopenharmony_ci * @vpath_alarms: Number of vpath alarms
16878c2ecf20Sopenharmony_ci *
16888c2ecf20Sopenharmony_ci * HW Device error stats
16898c2ecf20Sopenharmony_ci */
16908c2ecf20Sopenharmony_cistruct vxge_hw_device_stats_sw_err {
16918c2ecf20Sopenharmony_ci	u32     vpath_alarms;
16928c2ecf20Sopenharmony_ci};
16938c2ecf20Sopenharmony_ci
16948c2ecf20Sopenharmony_ci/**
16958c2ecf20Sopenharmony_ci * struct vxge_hw_device_stats - Contains HW per-device statistics,
16968c2ecf20Sopenharmony_ci * including hw.
16978c2ecf20Sopenharmony_ci * @devh: HW device handle.
16988c2ecf20Sopenharmony_ci * @dma_addr: DMA address of the %hw_info. Given to device to fill-in the stats.
16998c2ecf20Sopenharmony_ci * @hw_info_dmah: DMA handle used to map hw statistics onto the device memory
17008c2ecf20Sopenharmony_ci *                space.
17018c2ecf20Sopenharmony_ci * @hw_info_dma_acch: One more DMA handle used subsequently to free the
17028c2ecf20Sopenharmony_ci *                    DMA object. Note that this and the previous handle have
17038c2ecf20Sopenharmony_ci *                    physical meaning for Solaris; on Windows and Linux the
17048c2ecf20Sopenharmony_ci *                    corresponding value will be simply pointer to PCI device.
17058c2ecf20Sopenharmony_ci *
17068c2ecf20Sopenharmony_ci * @hw_dev_info_stats: Titan statistics maintained by the hardware.
17078c2ecf20Sopenharmony_ci * @sw_dev_info_stats: HW's "soft" device informational statistics, e.g. number
17088c2ecf20Sopenharmony_ci *                     of completions per interrupt.
17098c2ecf20Sopenharmony_ci * @sw_dev_err_stats: HW's "soft" device error statistics.
17108c2ecf20Sopenharmony_ci *
17118c2ecf20Sopenharmony_ci * Structure-container of HW per-device statistics. Note that per-channel
17128c2ecf20Sopenharmony_ci * statistics are kept in separate structures under HW's fifo and ring
17138c2ecf20Sopenharmony_ci * channels.
17148c2ecf20Sopenharmony_ci */
17158c2ecf20Sopenharmony_cistruct vxge_hw_device_stats {
17168c2ecf20Sopenharmony_ci	/* handles */
17178c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh;
17188c2ecf20Sopenharmony_ci
17198c2ecf20Sopenharmony_ci	/* HW device hardware statistics */
17208c2ecf20Sopenharmony_ci	struct vxge_hw_device_stats_hw_info	hw_dev_info_stats;
17218c2ecf20Sopenharmony_ci
17228c2ecf20Sopenharmony_ci	/* HW device "soft" stats */
17238c2ecf20Sopenharmony_ci	struct vxge_hw_device_stats_sw_err   sw_dev_err_stats;
17248c2ecf20Sopenharmony_ci	struct vxge_hw_device_stats_sw_info  sw_dev_info_stats;
17258c2ecf20Sopenharmony_ci
17268c2ecf20Sopenharmony_ci};
17278c2ecf20Sopenharmony_ci
17288c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_device_hw_stats_enable(
17298c2ecf20Sopenharmony_ci			struct __vxge_hw_device *devh);
17308c2ecf20Sopenharmony_ci
17318c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_device_stats_get(
17328c2ecf20Sopenharmony_ci			struct __vxge_hw_device *devh,
17338c2ecf20Sopenharmony_ci			struct vxge_hw_device_stats_hw_info *hw_stats);
17348c2ecf20Sopenharmony_ci
17358c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_driver_stats_get(
17368c2ecf20Sopenharmony_ci			struct __vxge_hw_device *devh,
17378c2ecf20Sopenharmony_ci			struct vxge_hw_device_stats_sw_info *sw_stats);
17388c2ecf20Sopenharmony_ci
17398c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_mrpcim_stats_enable(struct __vxge_hw_device *devh);
17408c2ecf20Sopenharmony_ci
17418c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_mrpcim_stats_disable(struct __vxge_hw_device *devh);
17428c2ecf20Sopenharmony_ci
17438c2ecf20Sopenharmony_cienum vxge_hw_status
17448c2ecf20Sopenharmony_civxge_hw_mrpcim_stats_access(
17458c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh,
17468c2ecf20Sopenharmony_ci	u32 operation,
17478c2ecf20Sopenharmony_ci	u32 location,
17488c2ecf20Sopenharmony_ci	u32 offset,
17498c2ecf20Sopenharmony_ci	u64 *stat);
17508c2ecf20Sopenharmony_ci
17518c2ecf20Sopenharmony_cienum vxge_hw_status
17528c2ecf20Sopenharmony_civxge_hw_device_xmac_stats_get(struct __vxge_hw_device *devh,
17538c2ecf20Sopenharmony_ci			      struct vxge_hw_xmac_stats *xmac_stats);
17548c2ecf20Sopenharmony_ci
17558c2ecf20Sopenharmony_ci/**
17568c2ecf20Sopenharmony_ci * enum enum vxge_hw_mgmt_reg_type - Register types.
17578c2ecf20Sopenharmony_ci *
17588c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_legacy: Legacy registers
17598c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_toc: TOC Registers
17608c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_common: Common Registers
17618c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_mrpcim: mrpcim registers
17628c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_srpcim: srpcim registers
17638c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_vpmgmt: vpath management registers
17648c2ecf20Sopenharmony_ci * @vxge_hw_mgmt_reg_type_vpath: vpath registers
17658c2ecf20Sopenharmony_ci *
17668c2ecf20Sopenharmony_ci * Register type enumaration
17678c2ecf20Sopenharmony_ci */
17688c2ecf20Sopenharmony_cienum vxge_hw_mgmt_reg_type {
17698c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_legacy = 0,
17708c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_toc = 1,
17718c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_common = 2,
17728c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_mrpcim = 3,
17738c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_srpcim = 4,
17748c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_vpmgmt = 5,
17758c2ecf20Sopenharmony_ci	vxge_hw_mgmt_reg_type_vpath = 6
17768c2ecf20Sopenharmony_ci};
17778c2ecf20Sopenharmony_ci
17788c2ecf20Sopenharmony_cienum vxge_hw_status
17798c2ecf20Sopenharmony_civxge_hw_mgmt_reg_read(struct __vxge_hw_device *devh,
17808c2ecf20Sopenharmony_ci		      enum vxge_hw_mgmt_reg_type type,
17818c2ecf20Sopenharmony_ci		      u32 index,
17828c2ecf20Sopenharmony_ci		      u32 offset,
17838c2ecf20Sopenharmony_ci		      u64 *value);
17848c2ecf20Sopenharmony_ci
17858c2ecf20Sopenharmony_cienum vxge_hw_status
17868c2ecf20Sopenharmony_civxge_hw_mgmt_reg_write(struct __vxge_hw_device *devh,
17878c2ecf20Sopenharmony_ci		      enum vxge_hw_mgmt_reg_type type,
17888c2ecf20Sopenharmony_ci		      u32 index,
17898c2ecf20Sopenharmony_ci		      u32 offset,
17908c2ecf20Sopenharmony_ci		      u64 value);
17918c2ecf20Sopenharmony_ci
17928c2ecf20Sopenharmony_ci/**
17938c2ecf20Sopenharmony_ci * enum enum vxge_hw_rxd_state - Descriptor (RXD) state.
17948c2ecf20Sopenharmony_ci * @VXGE_HW_RXD_STATE_NONE: Invalid state.
17958c2ecf20Sopenharmony_ci * @VXGE_HW_RXD_STATE_AVAIL: Descriptor is available for reservation.
17968c2ecf20Sopenharmony_ci * @VXGE_HW_RXD_STATE_POSTED: Descriptor is posted for processing by the
17978c2ecf20Sopenharmony_ci * device.
17988c2ecf20Sopenharmony_ci * @VXGE_HW_RXD_STATE_FREED: Descriptor is free and can be reused for
17998c2ecf20Sopenharmony_ci * filling-in and posting later.
18008c2ecf20Sopenharmony_ci *
18018c2ecf20Sopenharmony_ci * Titan/HW descriptor states.
18028c2ecf20Sopenharmony_ci *
18038c2ecf20Sopenharmony_ci */
18048c2ecf20Sopenharmony_cienum vxge_hw_rxd_state {
18058c2ecf20Sopenharmony_ci	VXGE_HW_RXD_STATE_NONE		= 0,
18068c2ecf20Sopenharmony_ci	VXGE_HW_RXD_STATE_AVAIL		= 1,
18078c2ecf20Sopenharmony_ci	VXGE_HW_RXD_STATE_POSTED	= 2,
18088c2ecf20Sopenharmony_ci	VXGE_HW_RXD_STATE_FREED		= 3
18098c2ecf20Sopenharmony_ci};
18108c2ecf20Sopenharmony_ci
18118c2ecf20Sopenharmony_ci/**
18128c2ecf20Sopenharmony_ci * struct vxge_hw_ring_rxd_info - Extended information associated with a
18138c2ecf20Sopenharmony_ci * completed ring descriptor.
18148c2ecf20Sopenharmony_ci * @syn_flag: SYN flag
18158c2ecf20Sopenharmony_ci * @is_icmp: Is ICMP
18168c2ecf20Sopenharmony_ci * @fast_path_eligible: Fast Path Eligible flag
18178c2ecf20Sopenharmony_ci * @l3_cksum: in L3 checksum is valid
18188c2ecf20Sopenharmony_ci * @l3_cksum: Result of IP checksum check (by Titan hardware).
18198c2ecf20Sopenharmony_ci *            This field containing VXGE_HW_L3_CKSUM_OK would mean that
18208c2ecf20Sopenharmony_ci *            the checksum is correct, otherwise - the datagram is
18218c2ecf20Sopenharmony_ci *            corrupted.
18228c2ecf20Sopenharmony_ci * @l4_cksum: in L4 checksum is valid
18238c2ecf20Sopenharmony_ci * @l4_cksum: Result of TCP/UDP checksum check (by Titan hardware).
18248c2ecf20Sopenharmony_ci *            This field containing VXGE_HW_L4_CKSUM_OK would mean that
18258c2ecf20Sopenharmony_ci *            the checksum is correct. Otherwise - the packet is
18268c2ecf20Sopenharmony_ci *            corrupted.
18278c2ecf20Sopenharmony_ci * @frame: Zero or more of enum vxge_hw_frame_type flags.
18288c2ecf20Sopenharmony_ci * 		See enum vxge_hw_frame_type{}.
18298c2ecf20Sopenharmony_ci * @proto: zero or more of enum vxge_hw_frame_proto flags.  Reporting bits for
18308c2ecf20Sopenharmony_ci *            various higher-layer protocols, including (but note restricted to)
18318c2ecf20Sopenharmony_ci *            TCP and UDP. See enum vxge_hw_frame_proto{}.
18328c2ecf20Sopenharmony_ci * @is_vlan: If vlan tag is valid
18338c2ecf20Sopenharmony_ci * @vlan: VLAN tag extracted from the received frame.
18348c2ecf20Sopenharmony_ci * @rth_bucket: RTH bucket
18358c2ecf20Sopenharmony_ci * @rth_it_hit: Set, If RTH hash value calculated by the Titan hardware
18368c2ecf20Sopenharmony_ci *             has a matching entry in the Indirection table.
18378c2ecf20Sopenharmony_ci * @rth_spdm_hit: Set, If RTH hash value calculated by the Titan hardware
18388c2ecf20Sopenharmony_ci *             has a matching entry in the Socket Pair Direct Match table.
18398c2ecf20Sopenharmony_ci * @rth_hash_type: RTH hash code of the function used to calculate the hash.
18408c2ecf20Sopenharmony_ci * @rth_value: Receive Traffic Hashing(RTH) hash value. Produced by Titan
18418c2ecf20Sopenharmony_ci *             hardware if RTH is enabled.
18428c2ecf20Sopenharmony_ci */
18438c2ecf20Sopenharmony_cistruct vxge_hw_ring_rxd_info {
18448c2ecf20Sopenharmony_ci	u32	syn_flag;
18458c2ecf20Sopenharmony_ci	u32	is_icmp;
18468c2ecf20Sopenharmony_ci	u32	fast_path_eligible;
18478c2ecf20Sopenharmony_ci	u32	l3_cksum_valid;
18488c2ecf20Sopenharmony_ci	u32	l3_cksum;
18498c2ecf20Sopenharmony_ci	u32	l4_cksum_valid;
18508c2ecf20Sopenharmony_ci	u32	l4_cksum;
18518c2ecf20Sopenharmony_ci	u32	frame;
18528c2ecf20Sopenharmony_ci	u32	proto;
18538c2ecf20Sopenharmony_ci	u32	is_vlan;
18548c2ecf20Sopenharmony_ci	u32	vlan;
18558c2ecf20Sopenharmony_ci	u32	rth_bucket;
18568c2ecf20Sopenharmony_ci	u32	rth_it_hit;
18578c2ecf20Sopenharmony_ci	u32	rth_spdm_hit;
18588c2ecf20Sopenharmony_ci	u32	rth_hash_type;
18598c2ecf20Sopenharmony_ci	u32	rth_value;
18608c2ecf20Sopenharmony_ci};
18618c2ecf20Sopenharmony_ci/**
18628c2ecf20Sopenharmony_ci * enum vxge_hw_ring_tcode - Transfer codes returned by adapter
18638c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_OK: Transfer ok.
18648c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_L3_CKSUM_MISMATCH: Layer 3 checksum presentation
18658c2ecf20Sopenharmony_ci *		configuration mismatch.
18668c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_L4_CKSUM_MISMATCH: Layer 4 checksum presentation
18678c2ecf20Sopenharmony_ci *		configuration mismatch.
18688c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_L3_L4_CKSUM_MISMATCH: Layer 3 and Layer 4 checksum
18698c2ecf20Sopenharmony_ci *		presentation configuration mismatch.
18708c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_L3_PKT_ERR: Layer 3 error unparseable packet,
18718c2ecf20Sopenharmony_ci *		such as unknown IPv6 header.
18728c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_L2_FRM_ERR: Layer 2 error frame integrity
18738c2ecf20Sopenharmony_ci *		error, such as FCS or ECC).
18748c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_BUF_SIZE_ERR: Buffer size error the RxD buffer(
18758c2ecf20Sopenharmony_ci *		s) were not appropriately sized and data loss occurred.
18768c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_INT_ECC_ERR: Internal ECC error RxD corrupted.
18778c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_BENIGN_OVFLOW: Benign overflow the contents of
18788c2ecf20Sopenharmony_ci *		Segment1 exceeded the capacity of Buffer1 and the remainder
18798c2ecf20Sopenharmony_ci *		was placed in Buffer2. Segment2 now starts in Buffer3.
18808c2ecf20Sopenharmony_ci *		No data loss or errors occurred.
18818c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_ZERO_LEN_BUFF: Buffer size 0 one of the RxDs
18828c2ecf20Sopenharmony_ci *		assigned buffers has a size of 0 bytes.
18838c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_FRM_DROP: Frame dropped either due to
18848c2ecf20Sopenharmony_ci *		VPath Reset or because of a VPIN mismatch.
18858c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_UNUSED: Unused
18868c2ecf20Sopenharmony_ci * @VXGE_HW_RING_T_CODE_MULTI_ERR: Multiple errors more than one
18878c2ecf20Sopenharmony_ci *		transfer code condition occurred.
18888c2ecf20Sopenharmony_ci *
18898c2ecf20Sopenharmony_ci * Transfer codes returned by adapter.
18908c2ecf20Sopenharmony_ci */
18918c2ecf20Sopenharmony_cienum vxge_hw_ring_tcode {
18928c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_OK				= 0x0,
18938c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_L3_CKSUM_MISMATCH		= 0x1,
18948c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_L4_CKSUM_MISMATCH		= 0x2,
18958c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_L3_L4_CKSUM_MISMATCH	= 0x3,
18968c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_L3_PKT_ERR			= 0x5,
18978c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_L2_FRM_ERR			= 0x6,
18988c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_BUF_SIZE_ERR		= 0x7,
18998c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_INT_ECC_ERR			= 0x8,
19008c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_BENIGN_OVFLOW		= 0x9,
19018c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_ZERO_LEN_BUFF		= 0xA,
19028c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_FRM_DROP			= 0xC,
19038c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_UNUSED			= 0xE,
19048c2ecf20Sopenharmony_ci	VXGE_HW_RING_T_CODE_MULTI_ERR			= 0xF
19058c2ecf20Sopenharmony_ci};
19068c2ecf20Sopenharmony_ci
19078c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_ring_rxd_reserve(
19088c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19098c2ecf20Sopenharmony_ci	void **rxdh);
19108c2ecf20Sopenharmony_ci
19118c2ecf20Sopenharmony_civoid
19128c2ecf20Sopenharmony_civxge_hw_ring_rxd_pre_post(
19138c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19148c2ecf20Sopenharmony_ci	void *rxdh);
19158c2ecf20Sopenharmony_ci
19168c2ecf20Sopenharmony_civoid
19178c2ecf20Sopenharmony_civxge_hw_ring_rxd_post_post(
19188c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19198c2ecf20Sopenharmony_ci	void *rxdh);
19208c2ecf20Sopenharmony_ci
19218c2ecf20Sopenharmony_civoid
19228c2ecf20Sopenharmony_civxge_hw_ring_rxd_post_post_wmb(
19238c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19248c2ecf20Sopenharmony_ci	void *rxdh);
19258c2ecf20Sopenharmony_ci
19268c2ecf20Sopenharmony_civoid vxge_hw_ring_rxd_post(
19278c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19288c2ecf20Sopenharmony_ci	void *rxdh);
19298c2ecf20Sopenharmony_ci
19308c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_ring_rxd_next_completed(
19318c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19328c2ecf20Sopenharmony_ci	void **rxdh,
19338c2ecf20Sopenharmony_ci	u8 *t_code);
19348c2ecf20Sopenharmony_ci
19358c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_ring_handle_tcode(
19368c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19378c2ecf20Sopenharmony_ci	void *rxdh,
19388c2ecf20Sopenharmony_ci	u8 t_code);
19398c2ecf20Sopenharmony_ci
19408c2ecf20Sopenharmony_civoid vxge_hw_ring_rxd_free(
19418c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ring_handle,
19428c2ecf20Sopenharmony_ci	void *rxdh);
19438c2ecf20Sopenharmony_ci
19448c2ecf20Sopenharmony_ci/**
19458c2ecf20Sopenharmony_ci * enum enum vxge_hw_frame_proto - Higher-layer ethernet protocols.
19468c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_VLAN_TAGGED: VLAN.
19478c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_IPV4: IPv4.
19488c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_IPV6: IPv6.
19498c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_IP_FRAG: IP fragmented.
19508c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_TCP: TCP.
19518c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_UDP: UDP.
19528c2ecf20Sopenharmony_ci * @VXGE_HW_FRAME_PROTO_TCP_OR_UDP: TCP or UDP.
19538c2ecf20Sopenharmony_ci *
19548c2ecf20Sopenharmony_ci * Higher layer ethernet protocols and options.
19558c2ecf20Sopenharmony_ci */
19568c2ecf20Sopenharmony_cienum vxge_hw_frame_proto {
19578c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_VLAN_TAGGED = 0x80,
19588c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_IPV4		= 0x10,
19598c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_IPV6		= 0x08,
19608c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_IP_FRAG		= 0x04,
19618c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_TCP			= 0x02,
19628c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_UDP			= 0x01,
19638c2ecf20Sopenharmony_ci	VXGE_HW_FRAME_PROTO_TCP_OR_UDP	= (VXGE_HW_FRAME_PROTO_TCP | \
19648c2ecf20Sopenharmony_ci						   VXGE_HW_FRAME_PROTO_UDP)
19658c2ecf20Sopenharmony_ci};
19668c2ecf20Sopenharmony_ci
19678c2ecf20Sopenharmony_ci/**
19688c2ecf20Sopenharmony_ci * enum enum vxge_hw_fifo_gather_code - Gather codes used in fifo TxD
19698c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_GATHER_CODE_FIRST: First TxDL
19708c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_GATHER_CODE_MIDDLE: Middle TxDL
19718c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_GATHER_CODE_LAST: Last TxDL
19728c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_GATHER_CODE_FIRST_LAST: First and Last TxDL.
19738c2ecf20Sopenharmony_ci *
19748c2ecf20Sopenharmony_ci * These gather codes are used to indicate the position of a TxD in a TxD list
19758c2ecf20Sopenharmony_ci */
19768c2ecf20Sopenharmony_cienum vxge_hw_fifo_gather_code {
19778c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_GATHER_CODE_FIRST		= 0x2,
19788c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_GATHER_CODE_MIDDLE		= 0x0,
19798c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_GATHER_CODE_LAST		= 0x1,
19808c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_GATHER_CODE_FIRST_LAST	= 0x3
19818c2ecf20Sopenharmony_ci};
19828c2ecf20Sopenharmony_ci
19838c2ecf20Sopenharmony_ci/**
19848c2ecf20Sopenharmony_ci * enum enum vxge_hw_fifo_tcode - tcodes used in fifo
19858c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_OK: Transfer OK
19868c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_PCI_READ_CORRUPT: PCI read transaction (either TxD or
19878c2ecf20Sopenharmony_ci *             frame data) returned with corrupt data.
19888c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_PCI_READ_FAIL:PCI read transaction was returned
19898c2ecf20Sopenharmony_ci *             with no data.
19908c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_INVALID_MSS: The host attempted to send either a
19918c2ecf20Sopenharmony_ci *             frame or LSO MSS that was too long (>9800B).
19928c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_LSO_ERROR: Error detected during TCP/UDP Large Send
19938c2ecf20Sopenharmony_ci	*	       Offload operation, due to improper header template,
19948c2ecf20Sopenharmony_ci	*	       unsupported protocol, etc.
19958c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_UNUSED: Unused
19968c2ecf20Sopenharmony_ci * @VXGE_HW_FIFO_T_CODE_MULTI_ERROR: Set to 1 by the adapter if multiple
19978c2ecf20Sopenharmony_ci *             data buffer transfer errors are encountered (see below).
19988c2ecf20Sopenharmony_ci *             Otherwise it is set to 0.
19998c2ecf20Sopenharmony_ci *
20008c2ecf20Sopenharmony_ci * These tcodes are returned in various API for TxD status
20018c2ecf20Sopenharmony_ci */
20028c2ecf20Sopenharmony_cienum vxge_hw_fifo_tcode {
20038c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_OK			= 0x0,
20048c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_PCI_READ_CORRUPT	= 0x1,
20058c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_PCI_READ_FAIL	= 0x2,
20068c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_INVALID_MSS		= 0x3,
20078c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_LSO_ERROR		= 0x4,
20088c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_UNUSED		= 0x7,
20098c2ecf20Sopenharmony_ci	VXGE_HW_FIFO_T_CODE_MULTI_ERROR		= 0x8
20108c2ecf20Sopenharmony_ci};
20118c2ecf20Sopenharmony_ci
20128c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_fifo_txdl_reserve(
20138c2ecf20Sopenharmony_ci	struct __vxge_hw_fifo *fifoh,
20148c2ecf20Sopenharmony_ci	void **txdlh,
20158c2ecf20Sopenharmony_ci	void **txdl_priv);
20168c2ecf20Sopenharmony_ci
20178c2ecf20Sopenharmony_civoid vxge_hw_fifo_txdl_buffer_set(
20188c2ecf20Sopenharmony_ci			struct __vxge_hw_fifo *fifo_handle,
20198c2ecf20Sopenharmony_ci			void *txdlh,
20208c2ecf20Sopenharmony_ci			u32 frag_idx,
20218c2ecf20Sopenharmony_ci			dma_addr_t dma_pointer,
20228c2ecf20Sopenharmony_ci			u32 size);
20238c2ecf20Sopenharmony_ci
20248c2ecf20Sopenharmony_civoid vxge_hw_fifo_txdl_post(
20258c2ecf20Sopenharmony_ci			struct __vxge_hw_fifo *fifo_handle,
20268c2ecf20Sopenharmony_ci			void *txdlh);
20278c2ecf20Sopenharmony_ci
20288c2ecf20Sopenharmony_ciu32 vxge_hw_fifo_free_txdl_count_get(
20298c2ecf20Sopenharmony_ci			struct __vxge_hw_fifo *fifo_handle);
20308c2ecf20Sopenharmony_ci
20318c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_fifo_txdl_next_completed(
20328c2ecf20Sopenharmony_ci	struct __vxge_hw_fifo *fifoh,
20338c2ecf20Sopenharmony_ci	void **txdlh,
20348c2ecf20Sopenharmony_ci	enum vxge_hw_fifo_tcode *t_code);
20358c2ecf20Sopenharmony_ci
20368c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_fifo_handle_tcode(
20378c2ecf20Sopenharmony_ci	struct __vxge_hw_fifo *fifoh,
20388c2ecf20Sopenharmony_ci	void *txdlh,
20398c2ecf20Sopenharmony_ci	enum vxge_hw_fifo_tcode t_code);
20408c2ecf20Sopenharmony_ci
20418c2ecf20Sopenharmony_civoid vxge_hw_fifo_txdl_free(
20428c2ecf20Sopenharmony_ci	struct __vxge_hw_fifo *fifoh,
20438c2ecf20Sopenharmony_ci	void *txdlh);
20448c2ecf20Sopenharmony_ci
20458c2ecf20Sopenharmony_ci/*
20468c2ecf20Sopenharmony_ci * Device
20478c2ecf20Sopenharmony_ci */
20488c2ecf20Sopenharmony_ci
20498c2ecf20Sopenharmony_ci#define VXGE_HW_RING_NEXT_BLOCK_POINTER_OFFSET	(VXGE_HW_BLOCK_SIZE-8)
20508c2ecf20Sopenharmony_ci#define VXGE_HW_RING_MEMBLOCK_IDX_OFFSET		(VXGE_HW_BLOCK_SIZE-16)
20518c2ecf20Sopenharmony_ci
20528c2ecf20Sopenharmony_ci/*
20538c2ecf20Sopenharmony_ci * struct __vxge_hw_ring_rxd_priv - Receive descriptor HW-private data.
20548c2ecf20Sopenharmony_ci * @dma_addr: DMA (mapped) address of _this_ descriptor.
20558c2ecf20Sopenharmony_ci * @dma_handle: DMA handle used to map the descriptor onto device.
20568c2ecf20Sopenharmony_ci * @dma_offset: Descriptor's offset in the memory block. HW allocates
20578c2ecf20Sopenharmony_ci *              descriptors in memory blocks of %VXGE_HW_BLOCK_SIZE
20588c2ecf20Sopenharmony_ci *              bytes. Each memblock is contiguous DMA-able memory. Each
20598c2ecf20Sopenharmony_ci *              memblock contains 1 or more 4KB RxD blocks visible to the
20608c2ecf20Sopenharmony_ci *              Titan hardware.
20618c2ecf20Sopenharmony_ci * @dma_object: DMA address and handle of the memory block that contains
20628c2ecf20Sopenharmony_ci *              the descriptor. This member is used only in the "checked"
20638c2ecf20Sopenharmony_ci *              version of the HW (to enforce certain assertions);
20648c2ecf20Sopenharmony_ci *              otherwise it gets compiled out.
20658c2ecf20Sopenharmony_ci * @allocated: True if the descriptor is reserved, 0 otherwise. Internal usage.
20668c2ecf20Sopenharmony_ci *
20678c2ecf20Sopenharmony_ci * Per-receive decsriptor HW-private data. HW uses the space to keep DMA
20688c2ecf20Sopenharmony_ci * information associated with the descriptor. Note that driver can ask HW
20698c2ecf20Sopenharmony_ci * to allocate additional per-descriptor space for its own (driver-specific)
20708c2ecf20Sopenharmony_ci * purposes.
20718c2ecf20Sopenharmony_ci */
20728c2ecf20Sopenharmony_cistruct __vxge_hw_ring_rxd_priv {
20738c2ecf20Sopenharmony_ci	dma_addr_t	dma_addr;
20748c2ecf20Sopenharmony_ci	struct pci_dev *dma_handle;
20758c2ecf20Sopenharmony_ci	ptrdiff_t	dma_offset;
20768c2ecf20Sopenharmony_ci#ifdef VXGE_DEBUG_ASSERT
20778c2ecf20Sopenharmony_ci	struct vxge_hw_mempool_dma	*dma_object;
20788c2ecf20Sopenharmony_ci#endif
20798c2ecf20Sopenharmony_ci};
20808c2ecf20Sopenharmony_ci
20818c2ecf20Sopenharmony_cistruct vxge_hw_mempool_cbs {
20828c2ecf20Sopenharmony_ci	void (*item_func_alloc)(
20838c2ecf20Sopenharmony_ci			struct vxge_hw_mempool *mempoolh,
20848c2ecf20Sopenharmony_ci			u32			memblock_index,
20858c2ecf20Sopenharmony_ci			struct vxge_hw_mempool_dma	*dma_object,
20868c2ecf20Sopenharmony_ci			u32			index,
20878c2ecf20Sopenharmony_ci			u32			is_last);
20888c2ecf20Sopenharmony_ci};
20898c2ecf20Sopenharmony_ci
20908c2ecf20Sopenharmony_ci#define VXGE_HW_VIRTUAL_PATH_HANDLE(vpath)				\
20918c2ecf20Sopenharmony_ci		((struct __vxge_hw_vpath_handle *)(vpath)->vpath_handles.next)
20928c2ecf20Sopenharmony_ci
20938c2ecf20Sopenharmony_cienum vxge_hw_status
20948c2ecf20Sopenharmony_ci__vxge_hw_vpath_rts_table_get(
20958c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
20968c2ecf20Sopenharmony_ci	u32			action,
20978c2ecf20Sopenharmony_ci	u32			rts_table,
20988c2ecf20Sopenharmony_ci	u32			offset,
20998c2ecf20Sopenharmony_ci	u64			*data1,
21008c2ecf20Sopenharmony_ci	u64			*data2);
21018c2ecf20Sopenharmony_ci
21028c2ecf20Sopenharmony_cienum vxge_hw_status
21038c2ecf20Sopenharmony_ci__vxge_hw_vpath_rts_table_set(
21048c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21058c2ecf20Sopenharmony_ci	u32			action,
21068c2ecf20Sopenharmony_ci	u32			rts_table,
21078c2ecf20Sopenharmony_ci	u32			offset,
21088c2ecf20Sopenharmony_ci	u64			data1,
21098c2ecf20Sopenharmony_ci	u64			data2);
21108c2ecf20Sopenharmony_ci
21118c2ecf20Sopenharmony_cienum vxge_hw_status
21128c2ecf20Sopenharmony_ci__vxge_hw_vpath_enable(
21138c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh,
21148c2ecf20Sopenharmony_ci	u32			vp_id);
21158c2ecf20Sopenharmony_ci
21168c2ecf20Sopenharmony_civoid vxge_hw_device_intr_enable(
21178c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh);
21188c2ecf20Sopenharmony_ci
21198c2ecf20Sopenharmony_ciu32 vxge_hw_device_set_intr_type(struct __vxge_hw_device *devh, u32 intr_mode);
21208c2ecf20Sopenharmony_ci
21218c2ecf20Sopenharmony_civoid vxge_hw_device_intr_disable(
21228c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh);
21238c2ecf20Sopenharmony_ci
21248c2ecf20Sopenharmony_civoid vxge_hw_device_mask_all(
21258c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh);
21268c2ecf20Sopenharmony_ci
21278c2ecf20Sopenharmony_civoid vxge_hw_device_unmask_all(
21288c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh);
21298c2ecf20Sopenharmony_ci
21308c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_device_begin_irq(
21318c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh,
21328c2ecf20Sopenharmony_ci	u32 skip_alarms,
21338c2ecf20Sopenharmony_ci	u64 *reason);
21348c2ecf20Sopenharmony_ci
21358c2ecf20Sopenharmony_civoid vxge_hw_device_clear_tx_rx(
21368c2ecf20Sopenharmony_ci	struct __vxge_hw_device *devh);
21378c2ecf20Sopenharmony_ci
21388c2ecf20Sopenharmony_ci/*
21398c2ecf20Sopenharmony_ci *  Virtual Paths
21408c2ecf20Sopenharmony_ci */
21418c2ecf20Sopenharmony_ci
21428c2ecf20Sopenharmony_civoid vxge_hw_vpath_dynamic_rti_rtimer_set(struct __vxge_hw_ring *ring);
21438c2ecf20Sopenharmony_ci
21448c2ecf20Sopenharmony_civoid vxge_hw_vpath_dynamic_tti_rtimer_set(struct __vxge_hw_fifo *fifo);
21458c2ecf20Sopenharmony_ci
21468c2ecf20Sopenharmony_ciu32 vxge_hw_vpath_id(
21478c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
21488c2ecf20Sopenharmony_ci
21498c2ecf20Sopenharmony_cienum vxge_hw_vpath_mac_addr_add_mode {
21508c2ecf20Sopenharmony_ci	VXGE_HW_VPATH_MAC_ADDR_ADD_DUPLICATE = 0,
21518c2ecf20Sopenharmony_ci	VXGE_HW_VPATH_MAC_ADDR_DISCARD_DUPLICATE = 1,
21528c2ecf20Sopenharmony_ci	VXGE_HW_VPATH_MAC_ADDR_REPLACE_DUPLICATE = 2
21538c2ecf20Sopenharmony_ci};
21548c2ecf20Sopenharmony_ci
21558c2ecf20Sopenharmony_cienum vxge_hw_status
21568c2ecf20Sopenharmony_civxge_hw_vpath_mac_addr_add(
21578c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21588c2ecf20Sopenharmony_ci	u8 *macaddr,
21598c2ecf20Sopenharmony_ci	u8 *macaddr_mask,
21608c2ecf20Sopenharmony_ci	enum vxge_hw_vpath_mac_addr_add_mode duplicate_mode);
21618c2ecf20Sopenharmony_ci
21628c2ecf20Sopenharmony_cienum vxge_hw_status
21638c2ecf20Sopenharmony_civxge_hw_vpath_mac_addr_get(
21648c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21658c2ecf20Sopenharmony_ci	u8 *macaddr,
21668c2ecf20Sopenharmony_ci	u8 *macaddr_mask);
21678c2ecf20Sopenharmony_ci
21688c2ecf20Sopenharmony_cienum vxge_hw_status
21698c2ecf20Sopenharmony_civxge_hw_vpath_mac_addr_get_next(
21708c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21718c2ecf20Sopenharmony_ci	u8 *macaddr,
21728c2ecf20Sopenharmony_ci	u8 *macaddr_mask);
21738c2ecf20Sopenharmony_ci
21748c2ecf20Sopenharmony_cienum vxge_hw_status
21758c2ecf20Sopenharmony_civxge_hw_vpath_mac_addr_delete(
21768c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21778c2ecf20Sopenharmony_ci	u8 *macaddr,
21788c2ecf20Sopenharmony_ci	u8 *macaddr_mask);
21798c2ecf20Sopenharmony_ci
21808c2ecf20Sopenharmony_cienum vxge_hw_status
21818c2ecf20Sopenharmony_civxge_hw_vpath_vid_add(
21828c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21838c2ecf20Sopenharmony_ci	u64			vid);
21848c2ecf20Sopenharmony_ci
21858c2ecf20Sopenharmony_cienum vxge_hw_status
21868c2ecf20Sopenharmony_civxge_hw_vpath_vid_delete(
21878c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21888c2ecf20Sopenharmony_ci	u64			vid);
21898c2ecf20Sopenharmony_ci
21908c2ecf20Sopenharmony_cienum vxge_hw_status
21918c2ecf20Sopenharmony_civxge_hw_vpath_etype_add(
21928c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21938c2ecf20Sopenharmony_ci	u64			etype);
21948c2ecf20Sopenharmony_ci
21958c2ecf20Sopenharmony_cienum vxge_hw_status
21968c2ecf20Sopenharmony_civxge_hw_vpath_etype_get(
21978c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
21988c2ecf20Sopenharmony_ci	u64			*etype);
21998c2ecf20Sopenharmony_ci
22008c2ecf20Sopenharmony_cienum vxge_hw_status
22018c2ecf20Sopenharmony_civxge_hw_vpath_etype_get_next(
22028c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
22038c2ecf20Sopenharmony_ci	u64			*etype);
22048c2ecf20Sopenharmony_ci
22058c2ecf20Sopenharmony_cienum vxge_hw_status
22068c2ecf20Sopenharmony_civxge_hw_vpath_etype_delete(
22078c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
22088c2ecf20Sopenharmony_ci	u64			etype);
22098c2ecf20Sopenharmony_ci
22108c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_promisc_enable(
22118c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22128c2ecf20Sopenharmony_ci
22138c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_promisc_disable(
22148c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22158c2ecf20Sopenharmony_ci
22168c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_bcast_enable(
22178c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22188c2ecf20Sopenharmony_ci
22198c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_mcast_enable(
22208c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22218c2ecf20Sopenharmony_ci
22228c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_mcast_disable(
22238c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22248c2ecf20Sopenharmony_ci
22258c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_poll_rx(
22268c2ecf20Sopenharmony_ci	struct __vxge_hw_ring *ringh);
22278c2ecf20Sopenharmony_ci
22288c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_poll_tx(
22298c2ecf20Sopenharmony_ci	struct __vxge_hw_fifo *fifoh,
22308c2ecf20Sopenharmony_ci	struct sk_buff ***skb_ptr, int nr_skb, int *more);
22318c2ecf20Sopenharmony_ci
22328c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_alarm_process(
22338c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle,
22348c2ecf20Sopenharmony_ci	u32 skip_alarms);
22358c2ecf20Sopenharmony_ci
22368c2ecf20Sopenharmony_civoid
22378c2ecf20Sopenharmony_civxge_hw_vpath_msix_set(struct __vxge_hw_vpath_handle *vpath_handle,
22388c2ecf20Sopenharmony_ci		       int *tim_msix_id, int alarm_msix_id);
22398c2ecf20Sopenharmony_ci
22408c2ecf20Sopenharmony_civoid
22418c2ecf20Sopenharmony_civxge_hw_vpath_msix_mask(struct __vxge_hw_vpath_handle *vpath_handle,
22428c2ecf20Sopenharmony_ci			int msix_id);
22438c2ecf20Sopenharmony_ci
22448c2ecf20Sopenharmony_civoid vxge_hw_vpath_msix_clear(struct __vxge_hw_vpath_handle *vp, int msix_id);
22458c2ecf20Sopenharmony_ci
22468c2ecf20Sopenharmony_civoid vxge_hw_device_flush_io(struct __vxge_hw_device *devh);
22478c2ecf20Sopenharmony_ci
22488c2ecf20Sopenharmony_civoid
22498c2ecf20Sopenharmony_civxge_hw_vpath_msix_unmask(struct __vxge_hw_vpath_handle *vpath_handle,
22508c2ecf20Sopenharmony_ci			  int msix_id);
22518c2ecf20Sopenharmony_ci
22528c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_intr_enable(
22538c2ecf20Sopenharmony_ci				struct __vxge_hw_vpath_handle *vpath_handle);
22548c2ecf20Sopenharmony_ci
22558c2ecf20Sopenharmony_cienum vxge_hw_status vxge_hw_vpath_intr_disable(
22568c2ecf20Sopenharmony_ci				struct __vxge_hw_vpath_handle *vpath_handle);
22578c2ecf20Sopenharmony_ci
22588c2ecf20Sopenharmony_civoid vxge_hw_vpath_inta_mask_tx_rx(
22598c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22608c2ecf20Sopenharmony_ci
22618c2ecf20Sopenharmony_civoid vxge_hw_vpath_inta_unmask_tx_rx(
22628c2ecf20Sopenharmony_ci	struct __vxge_hw_vpath_handle *vpath_handle);
22638c2ecf20Sopenharmony_ci
22648c2ecf20Sopenharmony_civoid
22658c2ecf20Sopenharmony_civxge_hw_channel_msix_mask(struct __vxge_hw_channel *channelh, int msix_id);
22668c2ecf20Sopenharmony_ci
22678c2ecf20Sopenharmony_civoid
22688c2ecf20Sopenharmony_civxge_hw_channel_msix_unmask(struct __vxge_hw_channel *channelh, int msix_id);
22698c2ecf20Sopenharmony_ci
22708c2ecf20Sopenharmony_civoid
22718c2ecf20Sopenharmony_civxge_hw_channel_msix_clear(struct __vxge_hw_channel *channelh, int msix_id);
22728c2ecf20Sopenharmony_ci
22738c2ecf20Sopenharmony_civoid
22748c2ecf20Sopenharmony_civxge_hw_channel_dtr_try_complete(struct __vxge_hw_channel *channel,
22758c2ecf20Sopenharmony_ci				 void **dtrh);
22768c2ecf20Sopenharmony_ci
22778c2ecf20Sopenharmony_civoid
22788c2ecf20Sopenharmony_civxge_hw_channel_dtr_complete(struct __vxge_hw_channel *channel);
22798c2ecf20Sopenharmony_ci
22808c2ecf20Sopenharmony_civoid
22818c2ecf20Sopenharmony_civxge_hw_channel_dtr_free(struct __vxge_hw_channel *channel, void *dtrh);
22828c2ecf20Sopenharmony_ci
22838c2ecf20Sopenharmony_ciint
22848c2ecf20Sopenharmony_civxge_hw_channel_dtr_count(struct __vxge_hw_channel *channel);
22858c2ecf20Sopenharmony_ci
22868c2ecf20Sopenharmony_civoid vxge_hw_vpath_tti_ci_set(struct __vxge_hw_fifo *fifo);
22878c2ecf20Sopenharmony_ci
22888c2ecf20Sopenharmony_civoid vxge_hw_vpath_dynamic_rti_ci_set(struct __vxge_hw_ring *ring);
22898c2ecf20Sopenharmony_ci
22908c2ecf20Sopenharmony_ci#endif
2291