xgehal-driver.c revision 7eced415e5dd557aef2d78483b5a7785f0e13670
a23fd118e437af0a7877dd313db8fdaa3537c675yl * CDDL HEADER START
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 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See the License for the specific language governing permissions
a23fd118e437af0a7877dd313db8fdaa3537c675yl * and limitations under the License.
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 * CDDL HEADER END
8347601bcb0a439f6e50fc36b4039a73d08700e1yl * Copyright (c) 2002-2006 Neterion, Inc.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Runtime tracing support
7eced415e5dd557aef2d78483b5a7785f0e13670xwstatic unsigned long g_module_mask_default = 0;
a23fd118e437af0a7877dd313db8fdaa3537c675ylstatic int g_level_default = 0;
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_driver_tracebuf_dump - Dump the trace buffer.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Dump the trace buffer contents.
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_printf("################ Trace dump Begin ###############");
a23fd118e437af0a7877dd313db8fdaa3537c675yl if (*(dmesg + i))
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_printf("################ Trace dump End ###############");
7eced415e5dd557aef2d78483b5a7785f0e13670xwxge_hal_driver_tracebuf_read(int bufsize, char *retbuf, int *retsize)
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (*(dmesg_start + i)) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_snprintf((retbuf + retbuf_off), (bufsize - retbuf_off),
7eced415e5dd557aef2d78483b5a7785f0e13670xw if (*(dmesg + i)) {
7eced415e5dd557aef2d78483b5a7785f0e13670xw xge_os_snprintf((retbuf + retbuf_off), (bufsize - retbuf_off),
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, adapter_status) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, tx_traffic_int) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, dtx_control) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, tx_fifo_partition_0) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, pcc_enable) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, prc_rxd0_n[0]) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, rti_command_mem) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, rmac_addr_cmd_mem) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, mac_link_util) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, mc_pause_thresh_q0q3) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, pcc_err_reg) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, rxdma_int_status) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, mac_tmac_err_reg) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, mc_err_reg) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_assert(xge_offsetof(xge_hal_pci_bar0_t, xgxs_int_status) ==
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_driver_initialize - Initialize HAL.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @config: HAL configuration, see xge_hal_driver_config_t{}.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * @uld_callbacks: Upper-layer driver callbacks, e.g. link-up.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * HAL initialization entry point. Not to confuse with device initialization
a23fd118e437af0a7877dd313db8fdaa3537c675yl * (note that HAL "contains" zero or more Xframe devices).
a23fd118e437af0a7877dd313db8fdaa3537c675yl * Returns: XGE_HAL_OK - success;
a23fd118e437af0a7877dd313db8fdaa3537c675yl * XGE_HAL_ERR_BAD_DRIVER_CONFIG - Driver configuration params invalid.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_device_initialize(), xge_hal_status_e{},
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_uld_cbs_t{}.
a23fd118e437af0a7877dd313db8fdaa3537c675ylxge_hal_driver_initialize(xge_hal_driver_config_t *config,
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_hal_driver_debug_module_mask_set(XGE_DEBUG_MODULE_MASK_DEF);
7eced415e5dd557aef2d78483b5a7785f0e13670xw * Trace buffer implementation is not lock protected.
7eced415e5dd557aef2d78483b5a7785f0e13670xw * The only harm to expect is memcpy() to go beyond of
7eced415e5dd557aef2d78483b5a7785f0e13670xw * allowed boundaries. To make it safe (driver-wise),
7eced415e5dd557aef2d78483b5a7785f0e13670xw * we pre-allocate needed number of extra bytes.
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_memzero(g_xge_hal_driver, sizeof(xge_hal_driver_t));
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* apply config */
a23fd118e437af0a7877dd313db8fdaa3537c675yl /* apply ULD callbacks */
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_memcpy(&g_xge_hal_driver->uld_callbacks, uld_callbacks,
a23fd118e437af0a7877dd313db8fdaa3537c675yl g_tracebuf.data = (char *)xge_os_malloc(NULL, g_tracebuf.size);
7eced415e5dd557aef2d78483b5a7785f0e13670xw /* timestamps disabled by default */
a23fd118e437af0a7877dd313db8fdaa3537c675yl * xge_hal_driver_terminate - Terminate HAL.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * HAL termination entry point.
a23fd118e437af0a7877dd313db8fdaa3537c675yl * See also: xge_hal_device_terminate().
a23fd118e437af0a7877dd313db8fdaa3537c675yl xge_os_printf("OSPAL: max g_malloc_cnt %d", g_malloc_cnt);
a23fd118e437af0a7877dd313db8fdaa3537c675yl for (i=0; i<g_malloc_cnt; i++) {
a23fd118e437af0a7877dd313db8fdaa3537c675yl (unsigned long long)(ulong_t)