a23fd118e437af0a7877dd313db8fdaa3537c675yl/*
a23fd118e437af0a7877dd313db8fdaa3537c675yl * CDDL HEADER START
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * The contents of this file are subject to the terms of the
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Common Development and Distribution License (the "License").
a23fd118e437af0a7877dd313db8fdaa3537c675yl * You may not use this file except in compliance with the License.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a23fd118e437af0a7877dd313db8fdaa3537c675yl * or http://www.opensolaris.org/os/licensing.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See the License for the specific language governing permissions
a23fd118e437af0a7877dd313db8fdaa3537c675yl * and limitations under the License.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * When distributing Covered Code, include this CDDL HEADER in each
a23fd118e437af0a7877dd313db8fdaa3537c675yl * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * If applicable, add the following below this CDDL HEADER, with the
a23fd118e437af0a7877dd313db8fdaa3537c675yl * fields enclosed by brackets "[]" replaced with your own identifying
a23fd118e437af0a7877dd313db8fdaa3537c675yl * information: Portions Copyright [yyyy] [name of copyright owner]
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * CDDL HEADER END
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
8347601bcb0a439f6e50fc36b4039a73d08700e1yl * Copyright (c) 2002-2006 Neterion, Inc.
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#include "xgehal-mgmt.h"
a23fd118e437af0a7877dd313db8fdaa3537c675yl#include "xgehal-driver.h"
a23fd118e437af0a7877dd313db8fdaa3537c675yl#include "xgehal-device.h"
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#ifdef XGE_OS_HAS_SNPRINTF
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __hal_aux_snprintf(retbuf, bufsize, fmt, key, value, retsize) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (bufsize <= 0) return XGE_HAL_ERR_OUT_OF_SPACE; \
a23fd118e437af0a7877dd313db8fdaa3537c675yl retsize = xge_os_snprintf(retbuf, bufsize, fmt, key, \
a23fd118e437af0a7877dd313db8fdaa3537c675yl XGE_HAL_AUX_SEPA, value); \
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (retsize < 0 || retsize >= bufsize) return XGE_HAL_ERR_OUT_OF_SPACE;
a23fd118e437af0a7877dd313db8fdaa3537c675yl#else
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __hal_aux_snprintf(retbuf, bufsize, fmt, key, value, retsize) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (bufsize <= 0) return XGE_HAL_ERR_OUT_OF_SPACE; \
a23fd118e437af0a7877dd313db8fdaa3537c675yl retsize = xge_os_sprintf(retbuf, fmt, key, XGE_HAL_AUX_SEPA, value); \
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(retsize < bufsize); \
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (retsize < 0 || retsize >= bufsize) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_ERR_OUT_OF_SPACE;
a23fd118e437af0a7877dd313db8fdaa3537c675yl#endif
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __HAL_AUX_ENTRY_DECLARE(size, buf) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl int entrysize = 0, leftsize = size; \
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *ptr = buf;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __HAL_AUX_ENTRY(key, value, fmt) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl ptr += entrysize; leftsize -= entrysize; \
a23fd118e437af0a7877dd313db8fdaa3537c675yl __hal_aux_snprintf(ptr, leftsize, "%s%c"fmt"\n", key, value, entrysize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#define __HAL_AUX_ENTRY_END(bufsize, retsize) \
a23fd118e437af0a7877dd313db8fdaa3537c675yl leftsize -= entrysize; \
a23fd118e437af0a7877dd313db8fdaa3537c675yl *retsize = bufsize - leftsize;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw#define __hal_aux_pci_link_info(name, index, var) { \
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY(name, \
7eced415e5dd557aef2d78483b5a7785f0e13670xw (unsigned long long)pcim.link_info[index].var, "%llu") \
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw#define __hal_aux_pci_aggr_info(name, index, var) { \
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY(name, \
7eced415e5dd557aef2d78483b5a7785f0e13670xw (unsigned long long)pcim.aggr_info[index].var, "%llu") \
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_bar0_read - Read and format Xframe BAR0 register.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @offset: Register offset in the BAR0 space.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read Xframe register from BAR0 space. The result is formatted as an ascii string.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not
a23fd118e437af0a7877dd313db8fdaa3537c675yl * valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_BAR_ID - BAR id is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_reg_read().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_bar0_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl unsigned int offset, int bufsize, char *retbuf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl u64 retval;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_reg_read(devh, 0, offset, &retval);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (bufsize < XGE_OS_SPRINTF_STRLEN) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_ERR_OUT_OF_SPACE;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw *retsize = xge_os_snprintf(retbuf, bufsize, "0x%04X%c0x%08X%08X\n",
7eced415e5dd557aef2d78483b5a7785f0e13670xw offset, XGE_HAL_AUX_SEPA, (u32)(retval>>32), (u32)retval);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_bar1_read - Read and format Xframe BAR1 register.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @offset: Register offset in the BAR1 space.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read Xframe register from BAR1 space. The result is formatted as ascii string.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not
a23fd118e437af0a7877dd313db8fdaa3537c675yl * valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_BAR_ID - BAR id is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_reg_read().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_bar1_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl unsigned int offset, int bufsize, char *retbuf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl u64 retval;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_reg_read(devh, 1, offset, &retval);
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (status != XGE_HAL_OK)
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (bufsize < XGE_OS_SPRINTF_STRLEN)
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_ERR_OUT_OF_SPACE;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw *retsize = xge_os_snprintf(retbuf, bufsize, "0x%04X%c0x%08X%08X\n",
7eced415e5dd557aef2d78483b5a7785f0e13670xw offset, XGE_HAL_AUX_SEPA, (u32)(retval>>32), (u32)retval);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_bar0_write - Write BAR0 register.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @offset: Register offset in the BAR0 space.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @value: Regsister value (to write).
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Write BAR0 register.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_OFFSET - Register offset in the BAR space is not
a23fd118e437af0a7877dd313db8fdaa3537c675yl * valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_BAR_ID - BAR id is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_reg_write().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_bar0_write(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl unsigned int offset, u64 value)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_reg_write(devh, 0, offset, value);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_about_read - Retrieve and format about info.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Retrieve about info (using xge_hal_mgmt_about()) and sprintf it
a23fd118e437af0a7877dd313db8fdaa3537c675yl * into the provided @retbuf.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_FAIL - Failed to retrieve the information.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_about(), xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_about_read(xge_hal_device_h devh, int bufsize,
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_about_info_t about_info;
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_about(devh, &about_info,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_about_info_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vendor", about_info.vendor, "0x%x");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("device", about_info.device, "0x%x");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("subsys_vendor", about_info.subsys_vendor, "0x%x");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("subsys_device", about_info.subsys_device, "0x%x");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("board_rev", about_info.board_rev, "0x%x");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vendor_name", about_info.vendor_name, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("chip_name", about_info.chip_name, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("media", about_info.media, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("hal_major", about_info.hal_major, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("hal_minor", about_info.hal_minor, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("hal_fix", about_info.hal_fix, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("hal_build", about_info.hal_build, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("ll_major", about_info.ll_major, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("ll_minor", about_info.ll_minor, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("ll_fix", about_info.ll_fix, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("ll_build", about_info.ll_build, "%s");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("transponder_temperature",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl about_info.transponder_temperature, "%d C");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_tmac_read - Read TMAC hardware statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read TMAC hardware statistics. This is a subset of stats counters
a23fd118e437af0a7877dd313db8fdaa3537c675yl * from xge_hal_stats_hw_info_t{}.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_hw_stats{}, xge_hal_stats_hw_info_t{},
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_pci_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_tmac_read(xge_hal_device_h devh, int bufsize,
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (xge_hal_device_check_id(hldev) != XGE_HAL_CARD_TITAN) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_mgmt_hw_stats_t hw;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw status = xge_hal_mgmt_hw_stats(devh, &hw,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_hw_stats_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (status != XGE_HAL_OK) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw return status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_data_octets", hw.tmac_data_octets, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_frms", hw.tmac_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_drop_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.tmac_drop_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_bcst_frms", hw.tmac_bcst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_mcst_frms", hw.tmac_mcst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_pause_ctrl_frms", (unsigned long long)
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.tmac_pause_ctrl_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_ucst_frms", hw.tmac_ucst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_ttl_octets", hw.tmac_ttl_octets, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_any_err_frms", hw.tmac_any_err_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_nucst_frms", hw.tmac_nucst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_ttl_less_fb_octets", (unsigned long long)
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.tmac_ttl_less_fb_octets, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_vld_ip_octets", (unsigned long long)
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.tmac_vld_ip_octets, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_drop_ip", hw.tmac_drop_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_vld_ip", hw.tmac_vld_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_rst_tcp", hw.tmac_rst_tcp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_icmp", hw.tmac_icmp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_tcp", (unsigned long long)
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.tmac_tcp, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_0", hw.reserved_0, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("tmac_udp", hw.tmac_udp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw } else {
7eced415e5dd557aef2d78483b5a7785f0e13670xw int i;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_mgmt_pcim_stats_t pcim;
7eced415e5dd557aef2d78483b5a7785f0e13670xw status = xge_hal_mgmt_pcim_stats(devh, &pcim,
7eced415e5dd557aef2d78483b5a7785f0e13670xw sizeof(xge_hal_mgmt_pcim_stats_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (status != XGE_HAL_OK) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw return status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw for (i = 0; i < XGE_HAL_MAC_LINKS; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_ttl_eth_octets",
7eced415e5dd557aef2d78483b5a7785f0e13670xw i, tx_ttl_eth_octets );
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_data_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_data_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_mcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_mcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_bcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_bcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_ucst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_ucst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_tagged_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_tagged_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_vld_ip", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_vld_ip);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_vld_ip_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_vld_ip_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_icmp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_icmp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_tcp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_tcp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_rst_tcp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_rst_tcp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_udp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_udp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_unknown_protocol", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_unknown_protocol);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_parse_error", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_parse_error);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_pause_ctrl_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_pause_ctrl_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_lacpdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_lacpdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_marker_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_marker_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_marker_resp_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_marker_resp_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_drop_ip", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_drop_ip);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_xgmii_char1_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_xgmii_char1_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_xgmii_char2_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_xgmii_char2_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_xgmii_column1_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_xgmii_column1_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_xgmii_column2_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_xgmii_column2_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_drop_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_drop_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("tx_any_err_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_any_err_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw for (i = 0; i < XGE_HAL_MAC_AGGREGATORS; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("tx_frms", i, tx_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("tx_mcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_mcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("tx_bcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_bcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("tx_discarded_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_discarded_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("tx_errored_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw tx_errored_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_rmac_read - Read RMAC hardware statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read RMAC hardware statistics. This is a subset of stats counters
a23fd118e437af0a7877dd313db8fdaa3537c675yl * from xge_hal_stats_hw_info_t{}.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_hw_stats{}, xge_hal_stats_hw_info_t{},
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_pci_read(), xge_hal_aux_stats_tmac_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_rmac_read(xge_hal_device_h devh, int bufsize,
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (xge_hal_device_check_id(hldev) != XGE_HAL_CARD_TITAN) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_mgmt_hw_stats_t hw;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw status = xge_hal_mgmt_hw_stats(devh, &hw,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_hw_stats_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (status != XGE_HAL_OK) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw return status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_data_octets", hw.rmac_data_octets, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_vld_frms", hw.rmac_vld_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_fcs_err_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_fcs_err_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("mac_drop_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_drop_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_vld_bcst_frms", hw.rmac_vld_bcst_frms,
7eced415e5dd557aef2d78483b5a7785f0e13670xw "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_vld_mcst_frms", hw.rmac_vld_mcst_frms,
7eced415e5dd557aef2d78483b5a7785f0e13670xw "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_out_rng_len_err_frms",
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_out_rng_len_err_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_in_rng_len_err_frms",
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_in_rng_len_err_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_long_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_long_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_pause_ctrl_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_pause_ctrl_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_unsup_ctrl_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_unsup_ctrl_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_accepted_ucst_frms",
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_accepted_ucst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_octets", hw.rmac_ttl_octets, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_discarded_frms", hw.rmac_discarded_frms,
7eced415e5dd557aef2d78483b5a7785f0e13670xw "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_accepted_nucst_frms",
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_accepted_nucst_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_1", hw.reserved_1, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_drop_events", hw.rmac_drop_events, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_less_fb_octets", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_less_fb_octets, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_2", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.reserved_2, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_usized_frms", hw.rmac_usized_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_3", hw.reserved_3, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frag_frms", hw.rmac_frag_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_osized_frms", hw.rmac_osized_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_4", hw.reserved_4, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_jabber_frms", hw.rmac_jabber_frms, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_64_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_64_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_65_127_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_65_127_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_5", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.reserved_5, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_128_255_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_128_255_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_256_511_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_256_511_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_6", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.reserved_6, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_512_1023_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_512_1023_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ttl_1024_1518_frms", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ttl_1024_1518_frms, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ip", hw.rmac_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_7", hw.reserved_7, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_ip_octets", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_ip_octets, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_drop_ip", hw.rmac_drop_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_hdr_err_ip", hw.rmac_hdr_err_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_8", hw.reserved_8, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_icmp", hw.rmac_icmp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_tcp", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_tcp, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_err_drp_udp", hw.rmac_err_drp_udp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_udp", hw.rmac_udp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_xgmii_err_sym", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_xgmii_err_sym, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q0", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q0, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q1", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q1, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q2", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q2, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q3", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q3, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q4", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q4, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q5", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q5, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q6", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q6, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_frms_q7", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_frms_q7, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q3", hw.rmac_full_q3, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q2", hw.rmac_full_q2, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q1", hw.rmac_full_q1, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q0", hw.rmac_full_q0, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q7", hw.rmac_full_q7, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q6", hw.rmac_full_q6, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q5", hw.rmac_full_q5, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_full_q4", hw.rmac_full_q4, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("reserved_9", hw.reserved_9, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_pause_cnt", hw.rmac_pause_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_xgmii_data_err_cnt", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_xgmii_data_err_cnt, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_xgmii_ctrl_err_cnt", (unsigned long long)
7eced415e5dd557aef2d78483b5a7785f0e13670xw hw.rmac_xgmii_ctrl_err_cnt, "%llu");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_err_tcp", hw.rmac_err_tcp, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rmac_accepted_ip", hw.rmac_accepted_ip, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw } else {
7eced415e5dd557aef2d78483b5a7785f0e13670xw int i;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_mgmt_pcim_stats_t pcim;
7eced415e5dd557aef2d78483b5a7785f0e13670xw status = xge_hal_mgmt_pcim_stats(devh, &pcim,
7eced415e5dd557aef2d78483b5a7785f0e13670xw sizeof(xge_hal_mgmt_pcim_stats_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (status != XGE_HAL_OK) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw return status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw for (i = 0; i < XGE_HAL_MAC_LINKS; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_vld_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_vld_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_offld_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_offld_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_eth_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_eth_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_data_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_data_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_offld_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_offld_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_vld_mcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_vld_mcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_vld_bcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_vld_bcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_accepted_ucst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_accepted_ucst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_accepted_nucst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_accepted_nucst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_tagged_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_tagged_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_long_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_long_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_usized_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_usized_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_osized_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_osized_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_frag_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_frag_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_jabber_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_jabber_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_64_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_64_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_65_127_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_65_127_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_128_255_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_128_255_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_256_511_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_256_511_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_512_1023_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_512_1023_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_1024_1518_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_1024_1518_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_1519_4095_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_1519_4095_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_40956_8191_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_40956_8191_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_8192_max_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_8192_max_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ttl_gt_max_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ttl_gt_max_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ip", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ip);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ip_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ip_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_hdr_err_ip", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_hdr_err_ip);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_icmp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_icmp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_tcp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_tcp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_udp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_udp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_err_tcp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_err_tcp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_pause_cnt", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_pause_cnt);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_pause_ctrl_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_pause_ctrl_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_unsup_ctrl_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_pause_cnt);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_in_rng_len_err_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_in_rng_len_err_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_out_rng_len_err_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_out_rng_len_err_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_drop_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_drop_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_discarded_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_discarded_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_drop_ip", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_drop_ip);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_err_drp_udp", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_err_drp_udp);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_lacpdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_lacpdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_marker_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_marker_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_marker_resp_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_marker_resp_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_unknown_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_unknown_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_illegal_pdu_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_illegal_pdu_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_fcs_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_fcs_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_len_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_len_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_pf_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_pf_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_trash_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_trash_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_rts_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_trash_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_wol_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_wol_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_red_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_red_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_ingm_full_discard", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_ingm_full_discard);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_data_err_cnt", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_data_err_cnt);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_ctrl_err_cnt", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_ctrl_err_cnt);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_err_sym", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_err_sym);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_char1_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_char1_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_char2_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_char2_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_column1_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_column1_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_xgmii_column2_match", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_xgmii_column2_match);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_local_fault", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_local_fault);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_remote_fault", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_remote_fault);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_queue_full", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_queue_full);
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw for (i = 0; i < XGE_HAL_MAC_AGGREGATORS; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_frms", i, rx_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_link_info("rx_data_octets", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_data_octets);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_mcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_mcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_bcst_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_bcst_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_discarded_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_discarded_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_errored_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_errored_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __hal_aux_pci_aggr_info("rx_unknown_protocol_frms", i,
7eced415e5dd557aef2d78483b5a7785f0e13670xw rx_unknown_protocol_frms);
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_herc_enchanced - Get Hercules hardware statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read Hercules device hardware statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_hw_stats{}, xge_hal_stats_hw_info_t{},
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_tmac_read(), xge_hal_aux_stats_rmac_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl*/
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_herc_enchanced(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_hw_stats_t hw;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (xge_hal_device_check_id(hldev) == XGE_HAL_CARD_TITAN) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY_END(bufsize, retsize);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw return XGE_HAL_OK;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_hw_stats(devh, &hw,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_hw_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_frms_oflow", hw.tmac_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_data_octets_oflow", hw.tmac_data_octets_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_mcst_frms_oflow", hw.tmac_mcst_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_bcst_frms_oflow", hw.tmac_bcst_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_ttl_octets_oflow", hw.tmac_ttl_octets_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_ucst_frms_oflow", hw.tmac_ucst_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_nucst_frms_oflow", hw.tmac_nucst_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_any_err_frms_oflow", hw.tmac_any_err_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_vlan_frms", (unsigned long long)hw.tmac_vlan_frms,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_vld_ip_oflow", hw.tmac_vld_ip_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_drop_ip_oflow", hw.tmac_drop_ip_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_icmp_oflow", hw.tmac_icmp_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_rst_tcp_oflow", hw.tmac_rst_tcp_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tmac_udp_oflow", hw.tmac_udp_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tpa_unknown_protocol", hw.tpa_unknown_protocol, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tpa_parse_failure", hw.tpa_parse_failure, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_vld_frms_oflow", hw.rmac_vld_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_data_octets_oflow", hw.rmac_data_octets_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_vld_mcst_frms_oflow", hw.rmac_vld_mcst_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_vld_bcst_frms_oflow", hw.rmac_vld_bcst_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ttl_octets_oflow", hw.rmac_ttl_octets_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_accepted_ucst_frms_oflow",
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.rmac_accepted_ucst_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_accepted_nucst_frms_oflow",
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.rmac_accepted_nucst_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_discarded_frms_oflow",
a23fd118e437af0a7877dd313db8fdaa3537c675yl hw.rmac_discarded_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_drop_events_oflow", hw.rmac_drop_events_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_usized_frms_oflow", hw.rmac_usized_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_osized_frms_oflow", hw.rmac_osized_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_frag_frms_oflow", hw.rmac_frag_frms_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_jabber_frms_oflow", hw.rmac_jabber_frms_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ip_oflow", hw.rmac_ip_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_drop_ip_oflow", hw.rmac_drop_ip_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_icmp_oflow", hw.rmac_icmp_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_udp_oflow", hw.rmac_udp_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_err_drp_udp_oflow", hw.rmac_err_drp_udp_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_pause_cnt_oflow", hw.rmac_pause_cnt_oflow, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ttl_1519_4095_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_ttl_1519_4095_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ttl_4096_8191_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_ttl_4096_8191_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ttl_8192_max_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_ttl_8192_max_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ttl_gt_max_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_ttl_gt_max_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_osized_alt_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_osized_alt_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_jabber_alt_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_jabber_alt_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_gt_max_alt_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_gt_max_alt_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_vlan_frms",
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)hw.rmac_vlan_frms, "%llu");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_fcs_discard", hw.rmac_fcs_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_len_discard", hw.rmac_len_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_da_discard", hw.rmac_da_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_pf_discard", hw.rmac_pf_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_rts_discard", hw.rmac_rts_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_red_discard", hw.rmac_red_discard, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_ingm_full_discard", hw.rmac_ingm_full_discard,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rmac_accepted_ip_oflow", hw.rmac_accepted_ip_oflow,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("link_fault_cnt", hw.link_fault_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_rmac_read - Read PCI hardware statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read PCI statistics counters, including number of PCI read and
a23fd118e437af0a7877dd313db8fdaa3537c675yl * write transactions, PCI retries, discards, etc.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * This is a subset of stats counters from xge_hal_stats_hw_info_t{}.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_hw_stats{}, xge_hal_stats_hw_info_t{},
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_tmac_read(), xge_hal_aux_stats_rmac_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_pci_read(xge_hal_device_h devh, int bufsize,
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_hw_stats_t hw;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (xge_hal_device_check_id(hldev) == XGE_HAL_CARD_TITAN) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY_END(bufsize, retsize);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw return XGE_HAL_OK;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_hw_stats(devh, &hw,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_hw_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("new_rd_req_cnt", hw.new_rd_req_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rd_req_cnt", hw.rd_req_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rd_rtry_cnt", hw.rd_rtry_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("new_rd_req_rtry_cnt", hw.new_rd_req_rtry_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("wr_req_cnt", hw.wr_req_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("wr_rtry_rd_ack_cnt", hw.wr_rtry_rd_ack_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("new_wr_req_rtry_cnt", hw.new_wr_req_rtry_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("new_wr_req_cnt", hw.new_wr_req_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("wr_disc_cnt", hw.wr_disc_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("wr_rtry_cnt", hw.wr_rtry_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("txp_wr_cnt", hw.txp_wr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rd_rtry_wr_ack_cnt", hw.rd_rtry_wr_ack_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("txd_wr_cnt", hw.txd_wr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("txd_rd_cnt", hw.txd_rd_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rxd_wr_cnt", hw.rxd_wr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rxd_rd_cnt", hw.rxd_rd_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rxf_wr_cnt", hw.rxf_wr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("txf_rd_cnt", hw.txf_rd_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_hal_read - Read HAL (layer) statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read HAL statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_INF_STATS_IS_NOT_READY - Statistics information is not
a23fd118e437af0a7877dd313db8fdaa3537c675yl * currently available.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_hal_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_t *item;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_channel_t *channel;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_device_stats_t devstat;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_channel_stats_t chstat;
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw int dest_size;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char *dest_addr;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char key[XGE_OS_SPRINTF_STRLEN];
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_device_stats(hldev, &devstat,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_device_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (!hldev->config.bimodal_interrupts) {
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rx_traffic_intr_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.rx_traffic_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tx_traffic_intr_cnt", devstat.tx_traffic_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("txpic_intr_cnt", devstat.txpic_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("txdma_intr_cnt", devstat.txdma_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("txmac_intr_cnt", devstat.txmac_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("txxgxs_intr_cnt", devstat.txxgxs_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxpic_intr_cnt", devstat.rxpic_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxdma_intr_cnt", devstat.rxdma_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxmac_intr_cnt", devstat.rxmac_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxxgxs_intr_cnt", devstat.rxxgxs_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("mc_intr_cnt", devstat.mc_intr_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("not_xge_intr_cnt", devstat.not_xge_intr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("not_traffic_intr_cnt",
a23fd118e437af0a7877dd313db8fdaa3537c675yl devstat.not_traffic_intr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("traffic_intr_cnt", devstat.traffic_intr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("total_intr_cnt", devstat.total_intr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("soft_reset_cnt", devstat.soft_reset_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (hldev->config.rxufca_hi_lim != hldev->config.rxufca_lo_lim &&
8347601bcb0a439f6e50fc36b4039a73d08700e1yl hldev->config.rxufca_lo_lim != 0) {
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxufca_lo_adjust_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.rxufca_lo_adjust_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rxufca_hi_adjust_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.rxufca_hi_adjust_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (hldev->config.bimodal_interrupts) {
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("bimodal_lo_adjust_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.bimodal_lo_adjust_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("bimodal_hi_adjust_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.bimodal_hi_adjust_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl#if defined(XGE_HAL_CONFIG_LRO)
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tot_frms_lroised",
a23fd118e437af0a7877dd313db8fdaa3537c675yl devstat.tot_frms_lroised, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("tot_lro_sessions",
a23fd118e437af0a7877dd313db8fdaa3537c675yl devstat.tot_lro_sessions, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("lro_frm_len_exceed_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.lro_frm_len_exceed_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("lro_sg_exceed_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.lro_sg_exceed_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("lro_out_of_seq_pkt_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.lro_out_of_seq_pkt_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("lro_dup_pkt_cnt",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl devstat.lro_dup_pkt_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl#endif
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* for each opened rx channel */
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_for_each(item, &hldev->ring_channels) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl channel = xge_container_of(item, xge_hal_channel_t, item);
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_channel_stats(channel, &chstat,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_channel_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "ring%d_", channel->post_qid);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "full_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.full_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_max", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.usage_max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, channel->usage_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_free_swaps_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.reserve_free_swaps_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (!hldev->config.bimodal_interrupts) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "avg_compl_per_intr_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.avg_compl_per_intr_cnt, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_compl_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_compl_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "bump_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.ring_bump_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* for each opened tx channel */
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_for_each(item, &hldev->fifo_channels) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl channel = xge_container_of(item, xge_hal_channel_t, item);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_channel_stats(channel, &chstat,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_channel_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "fifo%d_", channel->post_qid);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "full_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.full_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_max", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.usage_max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, channel->usage_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_free_swaps_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.reserve_free_swaps_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "avg_compl_per_intr_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.avg_compl_per_intr_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_compl_cnt", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_compl_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts_many", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts_many, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "copied_frags", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.copied_frags, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "copied_buffers", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, chstat.copied_buffers, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_buffers", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_buffers, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "avg_buffers_per_post", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.avg_buffers_per_post, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "avg_buffer_size", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.avg_buffer_size, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "avg_post_size", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.avg_post_size, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts_dtrs_many", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts_dtrs_many, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts_frags_many", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts_frags_many, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts_dang_dtrs", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts_dang_dtrs, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "total_posts_dang_frags", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, chstat.total_posts_dang_frags, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_sw_dev_read - Read software device statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read software-maintained device statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_INF_STATS_IS_NOT_READY - Statistics information is not
a23fd118e437af0a7877dd313db8fdaa3537c675yl * currently available.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_stats_sw_dev_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_sw_stats_t sw_dev_err_stats;
7eced415e5dd557aef2d78483b5a7785f0e13670xw int t_code, t_code_cnt;
a23fd118e437af0a7877dd313db8fdaa3537c675yl char buf[XGE_OS_SPRINTF_STRLEN];
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_sw_stats(hldev, &sw_dev_err_stats,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_sw_stats_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("sm_err_cnt",sw_dev_err_stats.sm_err_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("single_ecc_err_cnt",sw_dev_err_stats.single_ecc_err_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("double_ecc_err_cnt",sw_dev_err_stats.double_ecc_err_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("ecc_err_cnt", sw_dev_err_stats.ecc_err_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("parity_err_cnt",sw_dev_err_stats.parity_err_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("serr_cnt",sw_dev_err_stats.serr_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl for (t_code = 1; t_code < 16; t_code++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw t_code_cnt = sw_dev_err_stats.rxd_t_code_err_cnt[t_code];
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (t_code_cnt) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(buf, sizeof(buf), "rxd_t_code_%d", t_code);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(buf, t_code_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl t_code_cnt = sw_dev_err_stats.txd_t_code_err_cnt[t_code];
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (t_code_cnt) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(buf, sizeof(buf), "txd_t_code_%d", t_code);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(buf, t_code_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_transceiver_temp_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_transceiver_temp_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_transceiver_temp_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_transceiver_temp_low, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_laser_bias_current_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_laser_bias_current_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_laser_bias_current_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_laser_bias_current_low, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_laser_output_power_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_laser_output_power_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("alarm_laser_output_power_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.alarm_laser_output_power_low, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_transceiver_temp_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_transceiver_temp_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_transceiver_temp_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_transceiver_temp_low, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_laser_bias_current_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_laser_bias_current_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_laser_bias_current_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_laser_bias_current_low, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_laser_output_power_high",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_laser_output_power_high, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("warn_laser_output_power_low",sw_dev_err_stats.
8347601bcb0a439f6e50fc36b4039a73d08700e1yl stats_xpak.warn_laser_output_power_low, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_pci_config_read - Retrieve and format PCI Configuration
a23fd118e437af0a7877dd313db8fdaa3537c675yl * info.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Retrieve about info (using xge_hal_mgmt_pci_config()) and sprintf it
a23fd118e437af0a7877dd313db8fdaa3537c675yl * into the provided @retbuf.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_mgmt_pci_config(), xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_pci_config_read(xge_hal_device_h devh, int bufsize,
a23fd118e437af0a7877dd313db8fdaa3537c675yl char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
7eced415e5dd557aef2d78483b5a7785f0e13670xw int i;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_mgmt_pci_config_t pci_config;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char key[XGE_OS_SPRINTF_STRLEN];
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_pci_config(devh, &pci_config,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_mgmt_pci_config_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vendor_id", pci_config.vendor_id, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("device_id", pci_config.device_id, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("command", pci_config.command, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("status", pci_config.status, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("revision", pci_config.revision, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pciClass1", pci_config.pciClass[0], "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pciClass2", pci_config.pciClass[1], "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pciClass3", pci_config.pciClass[2], "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("cache_line_size",
a23fd118e437af0a7877dd313db8fdaa3537c675yl pci_config.cache_line_size, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("latency_timer", pci_config.latency_timer, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("header_type", pci_config.header_type, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("bist", pci_config.bist, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("base_addr0_lo", pci_config.base_addr0_lo, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("base_addr0_hi", pci_config.base_addr0_hi, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("base_addr1_lo", pci_config.base_addr1_lo, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("base_addr1_hi", pci_config.base_addr1_hi, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("not_Implemented1",
a23fd118e437af0a7877dd313db8fdaa3537c675yl pci_config.not_Implemented1, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("not_Implemented2", pci_config.not_Implemented2,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("cardbus_cis_pointer", pci_config.cardbus_cis_pointer,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("subsystem_vendor_id", pci_config.subsystem_vendor_id,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("subsystem_id", pci_config.subsystem_id, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("rom_base", pci_config.rom_base, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("capabilities_pointer",
a23fd118e437af0a7877dd313db8fdaa3537c675yl pci_config.capabilities_pointer, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("interrupt_line", pci_config.interrupt_line, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("interrupt_pin", pci_config.interrupt_pin, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("min_grant", pci_config.min_grant, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("max_latency", pci_config.max_latency, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_cap_id", pci_config.msi_cap_id, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_next_ptr", pci_config.msi_next_ptr, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_control", pci_config.msi_control, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_lower_address", pci_config.msi_lower_address,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_higher_address", pci_config.msi_higher_address,
a23fd118e437af0a7877dd313db8fdaa3537c675yl "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_data", pci_config.msi_data, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("msi_unused", pci_config.msi_unused, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vpd_cap_id", pci_config.vpd_cap_id, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vpd_next_cap", pci_config.vpd_next_cap, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vpd_addr", pci_config.vpd_addr, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("vpd_data", pci_config.vpd_data, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pcix_cap", pci_config.pcix_cap, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pcix_next_cap", pci_config.pcix_next_cap, "0x%02X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pcix_command", pci_config.pcix_command, "0x%04X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("pcix_status", pci_config.pcix_status, "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (xge_hal_device_check_id(devh) == XGE_HAL_CARD_HERC) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw for (i = 0; i < (XGE_HAL_PCI_XFRAME_CONFIG_SPACE_SIZE - 0x68)/4; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "%03x:", 4*i + 0x68);
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY(key, *((int *)pci_config.rsvd_b1 + i), "0x%08X");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_channel_read - Read channels information.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read HAL statistics.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_device_dump().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_channel_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_t *item;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_channel_t *channel;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw int dest_size;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char *dest_addr;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char key[XGE_OS_SPRINTF_STRLEN];
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (hldev->magic != XGE_HAL_MAGIC) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_ERR_INVALID_DEVICE;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* for each opened rx channel */
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_for_each(item, &hldev->ring_channels) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl channel = xge_container_of(item, xge_hal_channel_t, item);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (channel->is_open != 1)
a23fd118e437af0a7877dd313db8fdaa3537c675yl continue;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "ring%d_", channel->post_qid);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "type", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->type, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "is_open", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->is_open, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_initial", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_initial, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_max", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_top", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_top, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_threshold", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_threshold, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "free_length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->free_length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "post_index", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->post_index, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "compl_index", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->compl_index, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "per_dtr_space", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->per_dtr_space, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, channel->usage_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* for each opened tx channel */
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_list_for_each(item, &hldev->fifo_channels) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl channel = xge_container_of(item, xge_hal_channel_t, item);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (channel->is_open != 1)
a23fd118e437af0a7877dd313db8fdaa3537c675yl continue;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "fifo%d_", channel->post_qid);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "type", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->type, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "is_open", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->is_open, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_initial", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_initial, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_max", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_top", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_top, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "reserve_threshold", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->reserve_threshold, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "free_length", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->free_length, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "post_index", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->post_index, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "compl_index", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->compl_index, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "per_dtr_space", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, channel->per_dtr_space, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "usage_cnt", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, channel->usage_cnt, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_dump - Dump driver "about" info and device state.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Dump driver & device "about" info and device state,
a23fd118e437af0a7877dd313db8fdaa3537c675yl * including all BAR0 registers, hardware and software statistics, PCI
a23fd118e437af0a7877dd313db8fdaa3537c675yl * configuration space.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_about_read(), xge_hal_mgmt_reg_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_pci_config_read(), xge_hal_aux_stats_sw_dev_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_stats_tmac_read(), xge_hal_aux_stats_rmac_read(),
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_channel_read(), xge_hal_aux_stats_hal_read().
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns:
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_OUT_OF_SPACE - Buffer size is very small.
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_aux_device_dump(xge_hal_device_h devh)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl int retsize;
a23fd118e437af0a7877dd313db8fdaa3537c675yl int offset;
a23fd118e437af0a7877dd313db8fdaa3537c675yl u64 retval;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(hldev->dump_buf != NULL);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println("********* xge DEVICE DUMP BEGIN **********");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_about_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl for (offset = 0; offset < 1574; offset++) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_reg_read(hldev, 0, offset*8, &retval);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (!retval) continue;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_printf("0x%04x 0x%08x%08x", offset*8,
a23fd118e437af0a7877dd313db8fdaa3537c675yl (u32)(retval>>32), (u32)retval);
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println("\n");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_pci_config_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_tmac_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_rmac_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_pci_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (xge_hal_device_check_id(hldev) == XGE_HAL_CARD_HERC) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_herc_enchanced(hldev,
a23fd118e437af0a7877dd313db8fdaa3537c675yl XGE_HAL_DUMP_BUF_SIZE, hldev->dump_buf, &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_sw_dev_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf, &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_channel_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_aux_stats_hal_read(hldev, XGE_HAL_DUMP_BUF_SIZE,
a23fd118e437af0a7877dd313db8fdaa3537c675yl hldev->dump_buf,
a23fd118e437af0a7877dd313db8fdaa3537c675yl &retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl goto error;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println(hldev->dump_buf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_println("********* XFRAME DEVICE DUMP END **********");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675ylerror:
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_driver_config_read - Read Driver configuration.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read driver configuration,
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_device_config_read().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_aux_driver_config_read(int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_driver_config_t drv_config;
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl status = xge_hal_mgmt_driver_config(&drv_config,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_driver_config_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("queue size initial",
a23fd118e437af0a7877dd313db8fdaa3537c675yl drv_config.queue_size_initial, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY("queue size max", drv_config.queue_size_max, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl/**
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_aux_device_config_read - Read device configuration.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @devh: HAL device handle.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @bufsize: Buffer size.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retbuf: Buffer pointer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @retsize: Size of the result. Cannot be greater than @bufsize.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Read device configuration,
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_INVALID_DEVICE - Device is not valid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_VERSION_CONFLICT - Version it not maching.
a23fd118e437af0a7877dd313db8fdaa3537c675yl *
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_aux_driver_config_read().
a23fd118e437af0a7877dd313db8fdaa3537c675yl */
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_status_e xge_hal_aux_device_config_read(xge_hal_device_h devh,
a23fd118e437af0a7877dd313db8fdaa3537c675yl int bufsize, char *retbuf, int *retsize)
a23fd118e437af0a7877dd313db8fdaa3537c675yl{
7eced415e5dd557aef2d78483b5a7785f0e13670xw int i, j;
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_status_e status;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_config_t *dev_config;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_ring_queue_t *ring;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_fifo_queue_t *fifo;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_rti_config_t *rti;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_tti_config_t *tti;
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_mac_config_t *mac;
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw int dest_size;
7eced415e5dd557aef2d78483b5a7785f0e13670xw char *dest_addr;
a23fd118e437af0a7877dd313db8fdaa3537c675yl char key[XGE_OS_SPRINTF_STRLEN];
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_hal_device_t *hldev = (xge_hal_device_t*)devh;
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_DECLARE(bufsize, retbuf);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config = (xge_hal_device_config_t *) xge_os_malloc(hldev->pdev,
7eced415e5dd557aef2d78483b5a7785f0e13670xw sizeof(xge_hal_device_config_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (dev_config == NULL) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw return XGE_HAL_FAIL;
7eced415e5dd557aef2d78483b5a7785f0e13670xw }
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw status = xge_hal_mgmt_device_config(devh, dev_config,
a23fd118e437af0a7877dd313db8fdaa3537c675yl sizeof(xge_hal_device_config_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (status != XGE_HAL_OK) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_free(hldev->pdev, dev_config,
7eced415e5dd557aef2d78483b5a7785f0e13670xw sizeof(xge_hal_device_config_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl return status;
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("mtu", dev_config->mtu, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("isr_polling_count", dev_config->isr_polling_cnt, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("latency_timer", dev_config->latency_timer, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("max_splits_trans",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->max_splits_trans, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("mmrb_count", dev_config->mmrb_count, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("shared_splits", dev_config->shared_splits, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("stats_refresh_time_sec",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->stats_refresh_time_sec, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("pci_freq_mherz", dev_config->pci_freq_mherz, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("intr_mode", dev_config->intr_mode, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("ring_memblock_size",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->ring.memblock_size, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("sched_timer_us", dev_config->sched_timer_us, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("sched_timer_one_shot",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->sched_timer_one_shot, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rxufca_intr_thres", dev_config->rxufca_intr_thres, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rxufca_lo_lim", dev_config->rxufca_lo_lim, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rxufca_hi_lim", dev_config->rxufca_hi_lim, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rxufca_lbolt_period", dev_config->rxufca_lbolt_period, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl for(i = 0; i < XGE_HAL_MAX_RING_NUM; i++)
a23fd118e437af0a7877dd313db8fdaa3537c675yl {
7eced415e5dd557aef2d78483b5a7785f0e13670xw ring = &dev_config->ring.queue[i];
7eced415e5dd557aef2d78483b5a7785f0e13670xw rti = &ring->rti;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (!ring->configured)
a23fd118e437af0a7877dd313db8fdaa3537c675yl continue;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "ring%d_", i);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "inital", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->initial, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "max", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "buffer_mode", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->buffer_mode, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "dram_size_mb", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->dram_size_mb, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "backoff_interval_us", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->backoff_interval_us, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "max_frame_len", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->max_frm_len, "%d");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "priority", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->priority, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "rth_en", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->rth_en, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "no_snoop_bits", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, ring->no_snoop_bits, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "indicate_max_pkts", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, ring->indicate_max_pkts, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_a", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->urange_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_a", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->ufc_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_b", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->urange_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_b", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->ufc_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_c", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->urange_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_c", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->ufc_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_d", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->ufc_d, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_val_us", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, rti->timer_val_us, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl {
7eced415e5dd557aef2d78483b5a7785f0e13670xw mac= &dev_config->mac;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("tmac_util_period",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->tmac_util_period, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rmac_util_period",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->rmac_util_period, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rmac_bcast_en",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->rmac_bcast_en, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rmac_pause_gen_en",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->rmac_pause_gen_en, "%d");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rmac_pause_rcv_en",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->rmac_pause_rcv_en, "%d");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("rmac_pause_time",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->rmac_pause_time, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("mc_pause_threshold_q0q3",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->mc_pause_threshold_q0q3, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("mc_pause_threshold_q4q7",
a23fd118e437af0a7877dd313db8fdaa3537c675yl mac->mc_pause_threshold_q4q7, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("fifo_max_frags",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->fifo.max_frags, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("fifo_reserve_threshold",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->fifo.reserve_threshold, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("fifo_memblock_size",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->fifo.memblock_size, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl#ifdef XGE_HAL_ALIGN_XMIT
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("fifo_alignment_size",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->fifo.alignment_size, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl#endif
a23fd118e437af0a7877dd313db8fdaa3537c675yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl for (i = 0; i < XGE_HAL_MAX_FIFO_NUM; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw fifo = &dev_config->fifo.queue[i];
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (!fifo->configured)
a23fd118e437af0a7877dd313db8fdaa3537c675yl continue;
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "fifo%d_", i);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "initial", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, fifo->initial, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "max", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, fifo->max, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "intr", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, fifo->intr, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "no_snoop_bits", dest_size);
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY(key, fifo->no_snoop_bits, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl for (j = 0; j < XGE_HAL_MAX_FIFO_TTI_NUM; j++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw tti = &dev_config->fifo.queue[i].tti[j];
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (!tti->enabled)
8347601bcb0a439f6e50fc36b4039a73d08700e1yl continue;
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "fifo%d_tti%02d_", i,
8347601bcb0a439f6e50fc36b4039a73d08700e1yl i * XGE_HAL_MAX_FIFO_TTI_NUM + j);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_a", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_a", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_b", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_b", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_c", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_c", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_d", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_d, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_val_us", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->timer_val_us, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_ci_en", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->timer_ci_en, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
8347601bcb0a439f6e50fc36b4039a73d08700e1yl }
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
8347601bcb0a439f6e50fc36b4039a73d08700e1yl /* and bimodal TTIs */
8347601bcb0a439f6e50fc36b4039a73d08700e1yl for (i=0; i<XGE_HAL_MAX_RING_NUM; i++) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw tti = &hldev->bimodal_tti[i];
8347601bcb0a439f6e50fc36b4039a73d08700e1yl if (!tti->enabled)
8347601bcb0a439f6e50fc36b4039a73d08700e1yl continue;
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw (void) xge_os_snprintf(key, sizeof(key), "tti%02d_",
8347601bcb0a439f6e50fc36b4039a73d08700e1yl XGE_HAL_MAX_FIFO_TTI_RING_0 + i);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_addr = key + strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw dest_size = sizeof(key) - strlen(key);
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_a", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_a", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_a, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_b", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_b", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_b, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "urange_c", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->urange_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_c", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_c, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "ufc_d", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->ufc_d, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_val_us", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->timer_val_us, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_ac_en", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->timer_ac_en, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_strlcpy(dest_addr, "timer_ci_en", dest_size);
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY(key, tti->timer_ci_en, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl }
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("dump_on_serr", dev_config->dump_on_serr, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("dump_on_eccerr",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->dump_on_eccerr, "%u");
8347601bcb0a439f6e50fc36b4039a73d08700e1yl __HAL_AUX_ENTRY("dump_on_parityerr",
7eced415e5dd557aef2d78483b5a7785f0e13670xw dev_config->dump_on_parityerr, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rth_en", dev_config->rth_en, "%u");
7eced415e5dd557aef2d78483b5a7785f0e13670xw __HAL_AUX_ENTRY("rth_bucket_size", dev_config->rth_bucket_size, "%u");
a23fd118e437af0a7877dd313db8fdaa3537c675yl
a23fd118e437af0a7877dd313db8fdaa3537c675yl __HAL_AUX_ENTRY_END(bufsize, retsize);
a23fd118e437af0a7877dd313db8fdaa3537c675yl
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_free(hldev->pdev, dev_config,
7eced415e5dd557aef2d78483b5a7785f0e13670xw sizeof(xge_hal_device_config_t));
7eced415e5dd557aef2d78483b5a7785f0e13670xw
a23fd118e437af0a7877dd313db8fdaa3537c675yl return XGE_HAL_OK;
a23fd118e437af0a7877dd313db8fdaa3537c675yl}
a23fd118e437af0a7877dd313db8fdaa3537c675yl