19a5557fdSlucy wang - Sun Microsystems - Beijing China /* 29a5557fdSlucy wang - Sun Microsystems - Beijing China * CDDL HEADER START 39a5557fdSlucy wang - Sun Microsystems - Beijing China * 49a5557fdSlucy wang - Sun Microsystems - Beijing China * The contents of this file are subject to the terms of the 59a5557fdSlucy wang - Sun Microsystems - Beijing China * Common Development and Distribution License (the "License"). 69a5557fdSlucy wang - Sun Microsystems - Beijing China * You may not use this file except in compliance with the License. 79a5557fdSlucy wang - Sun Microsystems - Beijing China * 89a5557fdSlucy wang - Sun Microsystems - Beijing China * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 99a5557fdSlucy wang - Sun Microsystems - Beijing China * or http://www.opensolaris.org/os/licensing. 109a5557fdSlucy wang - Sun Microsystems - Beijing China * See the License for the specific language governing permissions 119a5557fdSlucy wang - Sun Microsystems - Beijing China * and limitations under the License. 129a5557fdSlucy wang - Sun Microsystems - Beijing China * 139a5557fdSlucy wang - Sun Microsystems - Beijing China * When distributing Covered Code, include this CDDL HEADER in each 149a5557fdSlucy wang - Sun Microsystems - Beijing China * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 159a5557fdSlucy wang - Sun Microsystems - Beijing China * If applicable, add the following below this CDDL HEADER, with the 169a5557fdSlucy wang - Sun Microsystems - Beijing China * fields enclosed by brackets "[]" replaced with your own identifying 179a5557fdSlucy wang - Sun Microsystems - Beijing China * information: Portions Copyright [yyyy] [name of copyright owner] 189a5557fdSlucy wang - Sun Microsystems - Beijing China * 199a5557fdSlucy wang - Sun Microsystems - Beijing China * CDDL HEADER END 209a5557fdSlucy wang - Sun Microsystems - Beijing China */ 2193833965Sjing xiong ERI-SUN 229a5557fdSlucy wang - Sun Microsystems - Beijing China /* 239a5557fdSlucy wang - Sun Microsystems - Beijing China * Copyright 2008 NetXen, Inc. All rights reserved. 249a5557fdSlucy wang - Sun Microsystems - Beijing China * Use is subject to license terms. 259a5557fdSlucy wang - Sun Microsystems - Beijing China */ 269a5557fdSlucy wang - Sun Microsystems - Beijing China /* 2793833965Sjing xiong ERI-SUN * Copyright 2009 Sun Microsystems, Inc. All rights reserved. 289a5557fdSlucy wang - Sun Microsystems - Beijing China * Use is subject to license terms. 299a5557fdSlucy wang - Sun Microsystems - Beijing China */ 3093833965Sjing xiong ERI-SUN 319a5557fdSlucy wang - Sun Microsystems - Beijing China #ifndef _UNM_NIC_ 329a5557fdSlucy wang - Sun Microsystems - Beijing China #define _UNM_NIC_ 339a5557fdSlucy wang - Sun Microsystems - Beijing China 3493833965Sjing xiong ERI-SUN #ifdef __cplusplus 3593833965Sjing xiong ERI-SUN extern "C" { 3693833965Sjing xiong ERI-SUN #endif 3793833965Sjing xiong ERI-SUN 389a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/inttypes.h> 399a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/rwlock.h> 409a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/mutex.h> 419a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/ddi.h> 429a5557fdSlucy wang - Sun Microsystems - Beijing China 439a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/sunddi.h> 449a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/types.h> 459a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/stream.h> 469a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/strsun.h> 479a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/strsubr.h> 489a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/dlpi.h> 499a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/devops.h> 509a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/stat.h> 519a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/pci.h> 529a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/note.h> 539a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/modctl.h> 549a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/kstat.h> 559a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/ethernet.h> 569a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/errno.h> 579a5557fdSlucy wang - Sun Microsystems - Beijing China #include <netinet/ip6.h> 589a5557fdSlucy wang - Sun Microsystems - Beijing China #include <inet/common.h> 599a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/pattr.h> 609a5557fdSlucy wang - Sun Microsystems - Beijing China #include <inet/mi.h> 619a5557fdSlucy wang - Sun Microsystems - Beijing China #include <inet/nd.h> 629a5557fdSlucy wang - Sun Microsystems - Beijing China 63dda0720aSjing xiong ERI-SUN #ifdef SOLARIS11 64da14cebeSEric Cheng #include <sys/mac_provider.h> 659a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/mac_ether.h> 66dda0720aSjing xiong ERI-SUN #else 67dda0720aSjing xiong ERI-SUN #include "mac.h" 68dda0720aSjing xiong ERI-SUN #include "mac_ether.h" 69dda0720aSjing xiong ERI-SUN #endif 709a5557fdSlucy wang - Sun Microsystems - Beijing China #include <sys/miiregs.h> /* by fjlite out of intel */ 719a5557fdSlucy wang - Sun Microsystems - Beijing China 729a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_nic_hw.h" 739a5557fdSlucy wang - Sun Microsystems - Beijing China #include "nic_cmn.h" 749a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_inc.h" /* For MAX_RCV_CTX */ 759a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_brdcfg.h" 769a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_version.h" 779a5557fdSlucy wang - Sun Microsystems - Beijing China #include "nic_phan_reg.h" 789a5557fdSlucy wang - Sun Microsystems - Beijing China #include "unm_nic_ioctl.h" 799a5557fdSlucy wang - Sun Microsystems - Beijing China 809a5557fdSlucy wang - Sun Microsystems - Beijing China #define MAX_ADDR_LEN 6 819a5557fdSlucy wang - Sun Microsystems - Beijing China 829a5557fdSlucy wang - Sun Microsystems - Beijing China #define ADDR_IN_WINDOW1(off) \ 839a5557fdSlucy wang - Sun Microsystems - Beijing China ((off > UNM_CRB_PCIX_HOST2) && (off < UNM_CRB_MAX)) ? 1 : 0 849a5557fdSlucy wang - Sun Microsystems - Beijing China 859a5557fdSlucy wang - Sun Microsystems - Beijing China typedef unsigned long uptr_t; 869a5557fdSlucy wang - Sun Microsystems - Beijing China 879a5557fdSlucy wang - Sun Microsystems - Beijing China #define FIRST_PAGE_GROUP_START 0 889a5557fdSlucy wang - Sun Microsystems - Beijing China #define FIRST_PAGE_GROUP_END 0x100000 899a5557fdSlucy wang - Sun Microsystems - Beijing China 909a5557fdSlucy wang - Sun Microsystems - Beijing China #define SECOND_PAGE_GROUP_START 0x6000000 919a5557fdSlucy wang - Sun Microsystems - Beijing China #define SECOND_PAGE_GROUP_END 0x68BC000 929a5557fdSlucy wang - Sun Microsystems - Beijing China 939a5557fdSlucy wang - Sun Microsystems - Beijing China #define THIRD_PAGE_GROUP_START 0x70E4000 949a5557fdSlucy wang - Sun Microsystems - Beijing China #define THIRD_PAGE_GROUP_END 0x8000000 959a5557fdSlucy wang - Sun Microsystems - Beijing China 969a5557fdSlucy wang - Sun Microsystems - Beijing China #define FIRST_PAGE_GROUP_SIZE FIRST_PAGE_GROUP_END - FIRST_PAGE_GROUP_START 979a5557fdSlucy wang - Sun Microsystems - Beijing China #define SECOND_PAGE_GROUP_SIZE SECOND_PAGE_GROUP_END - SECOND_PAGE_GROUP_START 989a5557fdSlucy wang - Sun Microsystems - Beijing China #define THIRD_PAGE_GROUP_SIZE THIRD_PAGE_GROUP_END - THIRD_PAGE_GROUP_START 999a5557fdSlucy wang - Sun Microsystems - Beijing China 1009a5557fdSlucy wang - Sun Microsystems - Beijing China /* 1019a5557fdSlucy wang - Sun Microsystems - Beijing China * normalize a 64MB crb address to 32MB PCI window 1029a5557fdSlucy wang - Sun Microsystems - Beijing China * To use CRB_NORMALIZE, window _must_ be set to 1 1039a5557fdSlucy wang - Sun Microsystems - Beijing China */ 1049a5557fdSlucy wang - Sun Microsystems - Beijing China #define CRB_NORMAL(reg) \ 1059a5557fdSlucy wang - Sun Microsystems - Beijing China (reg) - UNM_CRB_PCIX_HOST2 + UNM_CRB_PCIX_HOST 1069a5557fdSlucy wang - Sun Microsystems - Beijing China #define CRB_NORMALIZE(adapter, reg) \ 1079a5557fdSlucy wang - Sun Microsystems - Beijing China (void *)(unsigned long)(pci_base_offset(adapter, CRB_NORMAL(reg))) 1089a5557fdSlucy wang - Sun Microsystems - Beijing China 1099a5557fdSlucy wang - Sun Microsystems - Beijing China #define DB_NORMALIZE(adapter, off) \ 1109a5557fdSlucy wang - Sun Microsystems - Beijing China (void *)((unsigned long)adapter->ahw.db_base + (off)) 1119a5557fdSlucy wang - Sun Microsystems - Beijing China 1129a5557fdSlucy wang - Sun Microsystems - Beijing China #define find_diff_among(a, b, range) \ 1139a5557fdSlucy wang - Sun Microsystems - Beijing China ((a) < (b)?((b)-(a)):((b)+(range)-(a))) 1149a5557fdSlucy wang - Sun Microsystems - Beijing China 1159a5557fdSlucy wang - Sun Microsystems - Beijing China #define __FUNCTION__ __func__ 1169a5557fdSlucy wang - Sun Microsystems - Beijing China #define nx_msleep(_msecs_) delay(drv_usectohz(_msecs_ * 1000)) 1179a5557fdSlucy wang - Sun Microsystems - Beijing China 1189a5557fdSlucy wang - Sun Microsystems - Beijing China #define HOST_TO_LE_64 LE_64 1199a5557fdSlucy wang - Sun Microsystems - Beijing China #define HOST_TO_LE_32 LE_32 1209a5557fdSlucy wang - Sun Microsystems - Beijing China #define LE_TO_HOST_32 LE_32 1219a5557fdSlucy wang - Sun Microsystems - Beijing China #define HOST_TO_LE_16 LE_16 1229a5557fdSlucy wang - Sun Microsystems - Beijing China #define LE_TO_HOST_16 LE_16 1239a5557fdSlucy wang - Sun Microsystems - Beijing China 1249a5557fdSlucy wang - Sun Microsystems - Beijing China #define dbwritel(DATA, ADDRESS) \ 1259a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_put32(adapter->db_handle, (uint32_t *)(ADDRESS), (DATA)) 1269a5557fdSlucy wang - Sun Microsystems - Beijing China 1279a5557fdSlucy wang - Sun Microsystems - Beijing China /* 1289a5557fdSlucy wang - Sun Microsystems - Beijing China * Following macros require the mapped addresses to access 1299a5557fdSlucy wang - Sun Microsystems - Beijing China * the Phantom memory. 1309a5557fdSlucy wang - Sun Microsystems - Beijing China */ 1319a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_READ_8(ADDRESS) \ 1329a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_get8(adapter->regs_handle, (uint8_t *)(ADDRESS)) 1339a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_READ_16(ADDRESS) \ 1349a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_get16(adapter->regs_handle, (uint16_t *)(ADDRESS)) 1359a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_READ_32(ADDRESS) \ 1369a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_get32(adapter->regs_handle, (uint32_t *)(ADDRESS)) 1379a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_READ_64(ADDRESS) \ 1389a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_get64(adapter->regs_handle, (uint64_t *)(ADDRESS)) 1399a5557fdSlucy wang - Sun Microsystems - Beijing China 1409a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_WRITE_8(DATA, ADDRESS) \ 1419a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_put8(adapter->regs_handle, (uint8_t *)(ADDRESS), (DATA)) 1429a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_WRITE_16(DATA, ADDRESS) \ 1439a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_put16(adapter->regs_handle, (uint16_t *)(ADDRESS), (DATA)) 1449a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_WRITE_32(DATA, ADDRESS) \ 1459a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_put32(adapter->regs_handle, (uint32_t *)(ADDRESS), (DATA)) 1469a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_PCI_WRITE_64(DATA, ADDRESS) \ 1479a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_put64(adapter->regs_handle, (uint64_t *)(ADDRESS), (DATA)) 1489a5557fdSlucy wang - Sun Microsystems - Beijing China 1499a5557fdSlucy wang - Sun Microsystems - Beijing China #ifdef DEBUG_LEVEL 1509a5557fdSlucy wang - Sun Microsystems - Beijing China #define DPRINTF(n, args) if (DEBUG_LEVEL > (n)) cmn_err args; 1519a5557fdSlucy wang - Sun Microsystems - Beijing China #else 1529a5557fdSlucy wang - Sun Microsystems - Beijing China #define DPRINTF(n, args) 1539a5557fdSlucy wang - Sun Microsystems - Beijing China #endif 1549a5557fdSlucy wang - Sun Microsystems - Beijing China 1559a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_SPIN_LOCK(_lp_) mutex_enter((_lp_)) 1569a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_SPIN_UNLOCK(_lp_) mutex_exit((_lp_)) 1579a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_SPIN_LOCK_ISR(_lp_) mutex_enter((_lp_)) 1589a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_SPIN_UNLOCK_ISR(_lp_) mutex_exit((_lp_)) 1599a5557fdSlucy wang - Sun Microsystems - Beijing China 1609a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_WRITE_LOCK(_lp_) rw_enter((_lp_), RW_WRITER) 1619a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_WRITE_UNLOCK(_lp_) rw_exit((_lp_)) 1629a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_READ_LOCK(_lp_) rw_enter((_lp_), RW_READER) 1639a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_READ_UNLOCK(_lp_) rw_exit((_lp_)) 1649a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_WRITE_LOCK_IRQS(_lp_, _fl_) rw_enter((_lp_), RW_WRITER) 1659a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_WRITE_UNLOCK_IRQR(_lp_, _fl_) rw_exit((_lp_)) 1669a5557fdSlucy wang - Sun Microsystems - Beijing China 1679a5557fdSlucy wang - Sun Microsystems - Beijing China extern char unm_nic_driver_name[]; 1689a5557fdSlucy wang - Sun Microsystems - Beijing China extern int verbmsg; 1699a5557fdSlucy wang - Sun Microsystems - Beijing China 1709a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_dmah_node { 1719a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_dmah_node *next; 1729a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t dmahdl; 1739a5557fdSlucy wang - Sun Microsystems - Beijing China }unm_dmah_node_t; 1749a5557fdSlucy wang - Sun Microsystems - Beijing China 1759a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct dma_area { 1769a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t acc_hdl; /* handle for memory */ 1779a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t dma_hdl; /* DMA handle */ 1789a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t ncookies; 1799a5557fdSlucy wang - Sun Microsystems - Beijing China u64 dma_addr; 1809a5557fdSlucy wang - Sun Microsystems - Beijing China void *vaddr; 1819a5557fdSlucy wang - Sun Microsystems - Beijing China } dma_area_t; 1829a5557fdSlucy wang - Sun Microsystems - Beijing China 1839a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_cmd_buffer { 1849a5557fdSlucy wang - Sun Microsystems - Beijing China dma_area_t dma_area; 1859a5557fdSlucy wang - Sun Microsystems - Beijing China mblk_t *msg; 1869a5557fdSlucy wang - Sun Microsystems - Beijing China unm_dmah_node_t *head, *tail; 1879a5557fdSlucy wang - Sun Microsystems - Beijing China }; 1889a5557fdSlucy wang - Sun Microsystems - Beijing China 1899a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct pkt_info { 1909a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t total_len; 1919a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t mblk_no; 1929a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t etype; 1939a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t mac_hlen; 1949a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t ip_hlen; 1959a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t l4_proto; 1969a5557fdSlucy wang - Sun Microsystems - Beijing China } pktinfo_t; 1979a5557fdSlucy wang - Sun Microsystems - Beijing China 1989a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_rcv_desc_context_s unm_rcv_desc_ctx_t; 1999a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_adapter_s unm_adapter; 2009a5557fdSlucy wang - Sun Microsystems - Beijing China 2019a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_rx_buffer { 2029a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_rx_buffer *next; 2039a5557fdSlucy wang - Sun Microsystems - Beijing China dma_area_t dma_info; 2049a5557fdSlucy wang - Sun Microsystems - Beijing China frtn_t rx_recycle; /* recycle function */ 2059a5557fdSlucy wang - Sun Microsystems - Beijing China mblk_t *mp; 2069a5557fdSlucy wang - Sun Microsystems - Beijing China unm_rcv_desc_ctx_t *rcv_desc; 2079a5557fdSlucy wang - Sun Microsystems - Beijing China unm_adapter *adapter; 2089a5557fdSlucy wang - Sun Microsystems - Beijing China }unm_rx_buffer_t; 2099a5557fdSlucy wang - Sun Microsystems - Beijing China 2109a5557fdSlucy wang - Sun Microsystems - Beijing China /* Board types */ 2119a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_GBE 0x01 2129a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_XGBE 0x02 2139a5557fdSlucy wang - Sun Microsystems - Beijing China 2149a5557fdSlucy wang - Sun Microsystems - Beijing China /* 2159a5557fdSlucy wang - Sun Microsystems - Beijing China * One hardware_context{} per adapter 2169a5557fdSlucy wang - Sun Microsystems - Beijing China * contains interrupt info as well shared hardware info. 2179a5557fdSlucy wang - Sun Microsystems - Beijing China */ 2189a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct _hardware_context { 2199a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_base0; 2209a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_len0; 2219a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_base1; 2229a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_len1; 2239a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_base2; 2249a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long pci_len2; 2259a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long first_page_group_end; 2269a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long first_page_group_start; 2279a5557fdSlucy wang - Sun Microsystems - Beijing China uint8_t revision_id; 2289a5557fdSlucy wang - Sun Microsystems - Beijing China uint8_t cut_through; 2299a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t board_type; 2309a5557fdSlucy wang - Sun Microsystems - Beijing China int pci_func; 2319a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t max_ports; 2329a5557fdSlucy wang - Sun Microsystems - Beijing China unm_board_info_t boardcfg; 2339a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t linkup; 2349a5557fdSlucy wang - Sun Microsystems - Beijing China 2359a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s *adapter; 2369a5557fdSlucy wang - Sun Microsystems - Beijing China cmdDescType0_t *cmdDescHead; 2379a5557fdSlucy wang - Sun Microsystems - Beijing China 2389a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t cmdProducer; 2399a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t cmdConsumer; 2409a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rcvFlag; 2419a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t crb_base; 2429a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long db_base; /* base of mapped db memory */ 2439a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long db_len; /* length of mapped db memory */ 2449a5557fdSlucy wang - Sun Microsystems - Beijing China 2459a5557fdSlucy wang - Sun Microsystems - Beijing China 2469a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t cmdDesc_physAddr; 2479a5557fdSlucy wang - Sun Microsystems - Beijing China int qdr_sn_window, ddr_mn_window; 2489a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long mn_win_crb, ms_win_crb; 2499a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t cmd_desc_dma_handle; 2509a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t cmd_desc_acc_handle; 2519a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_cookie_t cmd_desc_dma_cookie; 2529a5557fdSlucy wang - Sun Microsystems - Beijing China } hardware_context, *phardware_context; 2539a5557fdSlucy wang - Sun Microsystems - Beijing China 2549a5557fdSlucy wang - Sun Microsystems - Beijing China #define NX_CT_DEFAULT_RX_BUF_LEN 2048 2559a5557fdSlucy wang - Sun Microsystems - Beijing China #define MTU_SIZE 1500 256dda0720aSjing xiong ERI-SUN #define MAX_COOKIES_PER_CMD 15 2579a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_DB_MAPSIZE_BYTES 0x1000 2589a5557fdSlucy wang - Sun Microsystems - Beijing China #define EXTRA_HANDLES 512 2599a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_TX_BCOPY_THRESHOLD 128 2609a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_RX_BCOPY_THRESHOLD 128 2619a5557fdSlucy wang - Sun Microsystems - Beijing China #define NX_MIN_DRIVER_RDS_SIZE 64 2629a5557fdSlucy wang - Sun Microsystems - Beijing China 2639a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_pauseparam { 2649a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t rx_pause; 2659a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t tx_pause; 2669a5557fdSlucy wang - Sun Microsystems - Beijing China } unm_pauseparam_t; 2679a5557fdSlucy wang - Sun Microsystems - Beijing China 2689a5557fdSlucy wang - Sun Microsystems - Beijing China /* 2699a5557fdSlucy wang - Sun Microsystems - Beijing China * The driver supports the NDD ioctls ND_GET/ND_SET, and the loopback 2709a5557fdSlucy wang - Sun Microsystems - Beijing China * ioctls LB_GET_INFO_SIZE/LB_GET_INFO/LB_GET_MODE/LB_SET_MODE 2719a5557fdSlucy wang - Sun Microsystems - Beijing China * 2729a5557fdSlucy wang - Sun Microsystems - Beijing China * These are the values to use with LD_SET_MODE. 2739a5557fdSlucy wang - Sun Microsystems - Beijing China */ 2749a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_LOOP_NONE 0 2759a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_LOOP_INTERNAL_PHY 1 2769a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_LOOP_INTERNAL_MAC 2 2779a5557fdSlucy wang - Sun Microsystems - Beijing China 2789a5557fdSlucy wang - Sun Microsystems - Beijing China /* 2799a5557fdSlucy wang - Sun Microsystems - Beijing China * Named Data (ND) Parameter Management Structure 2809a5557fdSlucy wang - Sun Microsystems - Beijing China */ 2819a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct { 2829a5557fdSlucy wang - Sun Microsystems - Beijing China int ndp_info; 2839a5557fdSlucy wang - Sun Microsystems - Beijing China int ndp_min; 2849a5557fdSlucy wang - Sun Microsystems - Beijing China int ndp_max; 2859a5557fdSlucy wang - Sun Microsystems - Beijing China int ndp_val; 2869a5557fdSlucy wang - Sun Microsystems - Beijing China char *ndp_name; 2879a5557fdSlucy wang - Sun Microsystems - Beijing China } nd_param_t; /* 0x18 (24) bytes */ 2889a5557fdSlucy wang - Sun Microsystems - Beijing China 2899a5557fdSlucy wang - Sun Microsystems - Beijing China /* 2909a5557fdSlucy wang - Sun Microsystems - Beijing China * NDD parameter indexes, divided into: 2919a5557fdSlucy wang - Sun Microsystems - Beijing China * 2929a5557fdSlucy wang - Sun Microsystems - Beijing China * read-only parameters describing the hardware's capabilities 2939a5557fdSlucy wang - Sun Microsystems - Beijing China * read-write parameters controlling the advertised capabilities 2949a5557fdSlucy wang - Sun Microsystems - Beijing China * read-only parameters describing the partner's capabilities 2959a5557fdSlucy wang - Sun Microsystems - Beijing China * read-only parameters describing the link state 2969a5557fdSlucy wang - Sun Microsystems - Beijing China */ 2979a5557fdSlucy wang - Sun Microsystems - Beijing China enum { 2989a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_AUTONEG_CAP = 0, 2999a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_PAUSE_CAP, 3009a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ASYM_PAUSE_CAP, 3019a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_10000FDX_CAP, 3029a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_1000FDX_CAP, 3039a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_1000HDX_CAP, 3049a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_100T4_CAP, 3059a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_100FDX_CAP, 3069a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_100HDX_CAP, 3079a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_10FDX_CAP, 3089a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_10HDX_CAP, 3099a5557fdSlucy wang - Sun Microsystems - Beijing China 3109a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_AUTONEG_CAP, 3119a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_PAUSE_CAP, 3129a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_ASYM_PAUSE_CAP, 3139a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_10000FDX_CAP, 3149a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_1000FDX_CAP, 3159a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_1000HDX_CAP, 3169a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_100T4_CAP, 3179a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_100FDX_CAP, 3189a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_100HDX_CAP, 3199a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_10FDX_CAP, 3209a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_ADV_10HDX_CAP, 3219a5557fdSlucy wang - Sun Microsystems - Beijing China 3229a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_LINK_STATUS, 3239a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_LINK_SPEED, 3249a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_LINK_DUPLEX, 3259a5557fdSlucy wang - Sun Microsystems - Beijing China 3269a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_LOOP_MODE, 3279a5557fdSlucy wang - Sun Microsystems - Beijing China 3289a5557fdSlucy wang - Sun Microsystems - Beijing China PARAM_COUNT 3299a5557fdSlucy wang - Sun Microsystems - Beijing China }; 3309a5557fdSlucy wang - Sun Microsystems - Beijing China 3319a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_stats { 3329a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rcvdbadmsg; 3339a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t xmitcalled; 3349a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t xmitedframes; 3359a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t xmitfinished; 3369a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t badmsglen; 3379a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t nocmddescriptor; 3389a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t polled; 3399a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t uphappy; 3409a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t updropped; 3419a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t uplcong; 3429a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t uphcong; 3439a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t upmcong; 3449a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t updunno; 3459a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t msgfreed; 3469a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t txdropped; 3479a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t txnullmsg; 3489a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t csummed; 3499a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t no_rcv; 3509a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rxbytes; 3519a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t txbytes; 3529a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t ints; 3539a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t desballocfailed; 3549a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t txcopyed; 3559a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t txmapped; 3569a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t outoftxdmahdl; 3579a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t outofcmddesc; 3589a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rxcopyed; 3599a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rxmapped; 3609a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t outofrxbuf; 3619a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t promiscmode; 3629a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rxbufshort; 3639a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t allocbfailed; 3649a5557fdSlucy wang - Sun Microsystems - Beijing China }; 3659a5557fdSlucy wang - Sun Microsystems - Beijing China 3669a5557fdSlucy wang - Sun Microsystems - Beijing China /* descriptor types */ 3679a5557fdSlucy wang - Sun Microsystems - Beijing China #define RCV_RING_STD RCV_DESC_NORMAL 3689a5557fdSlucy wang - Sun Microsystems - Beijing China #define RCV_RING_JUMBO RCV_DESC_JUMBO 3699a5557fdSlucy wang - Sun Microsystems - Beijing China #define RCV_RING_LRO RCV_DESC_LRO 3709a5557fdSlucy wang - Sun Microsystems - Beijing China 3719a5557fdSlucy wang - Sun Microsystems - Beijing China /* 3729a5557fdSlucy wang - Sun Microsystems - Beijing China * Rcv Descriptor Context. One such per Rcv Descriptor. There may 3739a5557fdSlucy wang - Sun Microsystems - Beijing China * be one Rcv Descriptor for normal packets, one for jumbo, 3749a5557fdSlucy wang - Sun Microsystems - Beijing China * one for LRO and may be expanded. 3759a5557fdSlucy wang - Sun Microsystems - Beijing China */ 3769a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_rcv_desc_context_s { 3779a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t producer; 3789a5557fdSlucy wang - Sun Microsystems - Beijing China 3799a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t phys_addr; 3809a5557fdSlucy wang - Sun Microsystems - Beijing China dev_info_t *phys_pdev; 3819a5557fdSlucy wang - Sun Microsystems - Beijing China /* address of rx ring in Phantom */ 3829a5557fdSlucy wang - Sun Microsystems - Beijing China rcvDesc_t *desc_head; 3839a5557fdSlucy wang - Sun Microsystems - Beijing China 3849a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t MaxRxDescCount; 3859a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rx_desc_handled; 3869a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rx_buf_card; 3879a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rx_buf_total; 3889a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rx_buf_free; 3899a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t rx_buf_recycle; 3909a5557fdSlucy wang - Sun Microsystems - Beijing China unm_rx_buffer_t *rx_buf_pool; 3919a5557fdSlucy wang - Sun Microsystems - Beijing China unm_rx_buffer_t *pool_list; 3929a5557fdSlucy wang - Sun Microsystems - Beijing China unm_rx_buffer_t *recycle_list; 3939a5557fdSlucy wang - Sun Microsystems - Beijing China kmutex_t pool_lock[1]; /* buffer pool lock */ 3949a5557fdSlucy wang - Sun Microsystems - Beijing China kmutex_t recycle_lock[1]; /* buffer recycle lock */ 3959a5557fdSlucy wang - Sun Microsystems - Beijing China /* size of the receive buf */ 3969a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t buf_size; 3979a5557fdSlucy wang - Sun Microsystems - Beijing China /* rx buffers for receive */ 3989a5557fdSlucy wang - Sun Microsystems - Beijing China 3999a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t rx_desc_dma_handle; 4009a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t rx_desc_acc_handle; 4019a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_cookie_t rx_desc_dma_cookie; 4029a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t host_rx_producer; 4039a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t dma_size; 4049a5557fdSlucy wang - Sun Microsystems - Beijing China }; 4059a5557fdSlucy wang - Sun Microsystems - Beijing China 4069a5557fdSlucy wang - Sun Microsystems - Beijing China /* 4079a5557fdSlucy wang - Sun Microsystems - Beijing China * Receive context. There is one such structure per instance of the 4089a5557fdSlucy wang - Sun Microsystems - Beijing China * receive processing. Any state information that is relevant to 4099a5557fdSlucy wang - Sun Microsystems - Beijing China * the receive, and is must be in this structure. The global data may be 4109a5557fdSlucy wang - Sun Microsystems - Beijing China * present elsewhere. 4119a5557fdSlucy wang - Sun Microsystems - Beijing China */ 4129a5557fdSlucy wang - Sun Microsystems - Beijing China typedef struct unm_recv_context_s { 4139a5557fdSlucy wang - Sun Microsystems - Beijing China unm_rcv_desc_ctx_t rcv_desc[NUM_RCV_DESC_RINGS]; 4149a5557fdSlucy wang - Sun Microsystems - Beijing China 4159a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t statusRxConsumer; 4169a5557fdSlucy wang - Sun Microsystems - Beijing China 4179a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t rcvStatusDesc_physAddr; 4189a5557fdSlucy wang - Sun Microsystems - Beijing China statusDesc_t *rcvStatusDescHead; 4199a5557fdSlucy wang - Sun Microsystems - Beijing China 4209a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t status_desc_dma_handle; 4219a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t status_desc_acc_handle; 4229a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_cookie_t status_desc_dma_cookie; 4239a5557fdSlucy wang - Sun Microsystems - Beijing China 4249a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t state, host_sds_consumer; 4259a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t context_id, virt_port; 4269a5557fdSlucy wang - Sun Microsystems - Beijing China } unm_recv_context_t; 4279a5557fdSlucy wang - Sun Microsystems - Beijing China 4289a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_MSI_ENABLED 0x02 4299a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_NIC_MSIX_ENABLED 0x04 4309a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_IS_MSI_FAMILY(ADAPTER) \ 4319a5557fdSlucy wang - Sun Microsystems - Beijing China ((ADAPTER)->flags & (UNM_NIC_MSI_ENABLED | UNM_NIC_MSIX_ENABLED)) 4329a5557fdSlucy wang - Sun Microsystems - Beijing China 4339a5557fdSlucy wang - Sun Microsystems - Beijing China #define NX_USE_MSIX 4349a5557fdSlucy wang - Sun Microsystems - Beijing China 4359a5557fdSlucy wang - Sun Microsystems - Beijing China /* msix defines */ 4369a5557fdSlucy wang - Sun Microsystems - Beijing China #define MSIX_ENTRIES_PER_ADAPTER 8 4379a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_MSIX_TBL_SPACE 8192 4389a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_PCI_REG_MSIX_TBL 0x44 4399a5557fdSlucy wang - Sun Microsystems - Beijing China 4409a5557fdSlucy wang - Sun Microsystems - Beijing China /* 4419a5557fdSlucy wang - Sun Microsystems - Beijing China * Bug: word or char write on MSI-X capcabilities register (0x40) in PCI config 4429a5557fdSlucy wang - Sun Microsystems - Beijing China * space has no effect on register values. Need to write dword. 4439a5557fdSlucy wang - Sun Microsystems - Beijing China */ 4449a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_HWBUG_8_WORKAROUND 4459a5557fdSlucy wang - Sun Microsystems - Beijing China 4469a5557fdSlucy wang - Sun Microsystems - Beijing China /* 4479a5557fdSlucy wang - Sun Microsystems - Beijing China * Bug: Can not reset bit 32 (msix enable bit) on MSI-X capcabilities 4489a5557fdSlucy wang - Sun Microsystems - Beijing China * register (0x40) independently. 4499a5557fdSlucy wang - Sun Microsystems - Beijing China * Need to write 0x0 (zero) to MSI-X capcabilities register in order to reset 4509a5557fdSlucy wang - Sun Microsystems - Beijing China * msix enable bit. On writing zero rest of the bits are not touched. 4519a5557fdSlucy wang - Sun Microsystems - Beijing China */ 4529a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_HWBUG_9_WORKAROUND 4539a5557fdSlucy wang - Sun Microsystems - Beijing China 4549a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_MC_COUNT 38 /* == ((UNM_ADDR_L2LU_COUNT-1)/4) -2 */ 4559a5557fdSlucy wang - Sun Microsystems - Beijing China 4569a5557fdSlucy wang - Sun Microsystems - Beijing China /* Following structure is for specific port information */ 4579a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s { 4589a5557fdSlucy wang - Sun Microsystems - Beijing China hardware_context ahw; 4599a5557fdSlucy wang - Sun Microsystems - Beijing China uint8_t id[32]; 4609a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t portnum; 4619a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t physical_port; 4629a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t link_speed; 4639a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t link_duplex; 4649a5557fdSlucy wang - Sun Microsystems - Beijing China 4659a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_stats stats; 4669a5557fdSlucy wang - Sun Microsystems - Beijing China int rx_csum; 4679a5557fdSlucy wang - Sun Microsystems - Beijing China int status; 4689a5557fdSlucy wang - Sun Microsystems - Beijing China kmutex_t stats_lock; 4699a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned char mac_addr[MAX_ADDR_LEN]; 4709a5557fdSlucy wang - Sun Microsystems - Beijing China int mtu; /* active mtu */ 4719a5557fdSlucy wang - Sun Microsystems - Beijing China int maxmtu; /* max possible mtu value */ 4729a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t promisc; 4739a5557fdSlucy wang - Sun Microsystems - Beijing China 4749a5557fdSlucy wang - Sun Microsystems - Beijing China mac_resource_handle_t mac_rx_ring_ha; 4759a5557fdSlucy wang - Sun Microsystems - Beijing China mac_handle_t mach; 4769a5557fdSlucy wang - Sun Microsystems - Beijing China int flags; 4779a5557fdSlucy wang - Sun Microsystems - Beijing China 4789a5557fdSlucy wang - Sun Microsystems - Beijing China int instance; 4799a5557fdSlucy wang - Sun Microsystems - Beijing China dev_info_t *dip; 4809a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t pci_cfg_handle; 4819a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t regs_handle; 4829a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_attr_t gc_dma_attr_desc; 4839a5557fdSlucy wang - Sun Microsystems - Beijing China 4849a5557fdSlucy wang - Sun Microsystems - Beijing China struct ddi_device_acc_attr gc_attr_desc; 4859a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_iblock_cookie_t iblock_cookie; 4869a5557fdSlucy wang - Sun Microsystems - Beijing China const char *name; 4879a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t db_handle; 4889a5557fdSlucy wang - Sun Microsystems - Beijing China 4899a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_intr_handle_t intr_handle; 4909a5557fdSlucy wang - Sun Microsystems - Beijing China int intr_type; 4919a5557fdSlucy wang - Sun Microsystems - Beijing China uint_t intr_pri; 4929a5557fdSlucy wang - Sun Microsystems - Beijing China unm_dmah_node_t *dmahdl_pool; 4939a5557fdSlucy wang - Sun Microsystems - Beijing China unm_dmah_node_t tx_dma_hdls[MAX_CMD_DESCRIPTORS+EXTRA_HANDLES]; 4949a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t freehdls; 4959a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t freecmds; 4969a5557fdSlucy wang - Sun Microsystems - Beijing China int tx_bcopy_threshold; 4979a5557fdSlucy wang - Sun Microsystems - Beijing China kmutex_t tx_lock; 4989a5557fdSlucy wang - Sun Microsystems - Beijing China krwlock_t adapter_lock; 4999a5557fdSlucy wang - Sun Microsystems - Beijing China kmutex_t lock; 5009a5557fdSlucy wang - Sun Microsystems - Beijing China struct nx_legacy_intr_set legacy_intr; 5019a5557fdSlucy wang - Sun Microsystems - Beijing China timeout_id_t watchdog_timer; 5029a5557fdSlucy wang - Sun Microsystems - Beijing China kstat_t *kstats[1]; 5039a5557fdSlucy wang - Sun Microsystems - Beijing China 5049a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t curr_window; 5059a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t crb_win; 5069a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t cmdProducer; 5079a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t *cmdConsumer; 5089a5557fdSlucy wang - Sun Microsystems - Beijing China 5099a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t interrupt_crb; 5109a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t fw_major; 5119a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t crb_addr_cmd_producer; 5129a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t crb_addr_cmd_consumer; 5139a5557fdSlucy wang - Sun Microsystems - Beijing China uint16_t tx_context_id; 5149a5557fdSlucy wang - Sun Microsystems - Beijing China short context_alloced; 5159a5557fdSlucy wang - Sun Microsystems - Beijing China int max_rds_rings; 5169a5557fdSlucy wang - Sun Microsystems - Beijing China 5179a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t lastCmdConsumer; 5189a5557fdSlucy wang - Sun Microsystems - Beijing China /* Num of bufs posted in phantom */ 5199a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t pendingCmdCount; 5209a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t MaxTxDescCount; 5219a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t MaxRxDescCount; 5229a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t MaxJumboRxDescCount; 5239a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t MaxLroRxDescCount; 5249a5557fdSlucy wang - Sun Microsystems - Beijing China /* Num of instances active on cmd buffer ring */ 5259a5557fdSlucy wang - Sun Microsystems - Beijing China int resched_needed; 5269a5557fdSlucy wang - Sun Microsystems - Beijing China 5279a5557fdSlucy wang - Sun Microsystems - Beijing China int driver_mismatch; 5289a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t temp; 5299a5557fdSlucy wang - Sun Microsystems - Beijing China 5309a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_cmd_buffer *cmd_buf_arr; /* Command buffers for xmit */ 5319a5557fdSlucy wang - Sun Microsystems - Beijing China int rx_bcopy_threshold; 5329a5557fdSlucy wang - Sun Microsystems - Beijing China 5339a5557fdSlucy wang - Sun Microsystems - Beijing China /* 5349a5557fdSlucy wang - Sun Microsystems - Beijing China * Receive instances. These can be either one per port, 5359a5557fdSlucy wang - Sun Microsystems - Beijing China * or one per peg, etc. 5369a5557fdSlucy wang - Sun Microsystems - Beijing China */ 5379a5557fdSlucy wang - Sun Microsystems - Beijing China unm_recv_context_t recv_ctx[MAX_RCV_CTX]; 5389a5557fdSlucy wang - Sun Microsystems - Beijing China int is_up; 5399a5557fdSlucy wang - Sun Microsystems - Beijing China 5409a5557fdSlucy wang - Sun Microsystems - Beijing China /* context interface shared between card and host */ 5419a5557fdSlucy wang - Sun Microsystems - Beijing China RingContext *ctxDesc; 5429a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t ctxDesc_physAddr; 5439a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t ctxDesc_dma_handle; 5449a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t ctxDesc_acc_handle; 5459a5557fdSlucy wang - Sun Microsystems - Beijing China 5469a5557fdSlucy wang - Sun Microsystems - Beijing China struct { 5479a5557fdSlucy wang - Sun Microsystems - Beijing China void *addr; 5489a5557fdSlucy wang - Sun Microsystems - Beijing China uint64_t phys_addr; 5499a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_handle_t dma_handle; 5509a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_acc_handle_t acc_handle; 5519a5557fdSlucy wang - Sun Microsystems - Beijing China } dummy_dma; 5529a5557fdSlucy wang - Sun Microsystems - Beijing China 5539a5557fdSlucy wang - Sun Microsystems - Beijing China void (*unm_nic_pci_change_crbwindow)(struct unm_adapter_s *, 5549a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t); 5559a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_crb_writelit_adapter)(struct unm_adapter_s *, 5569a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long, int); 5579a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long 5589a5557fdSlucy wang - Sun Microsystems - Beijing China (*unm_nic_pci_set_window)(struct unm_adapter_s *, 5599a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long); 5609a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_fill_statistics)(struct unm_adapter_s *, 5619a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_statistics *); 5629a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_clear_statistics)(struct unm_adapter_s *); 5639a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_hw_write_wx)(struct unm_adapter_s *, u64, 5649a5557fdSlucy wang - Sun Microsystems - Beijing China void *, int); 5659a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_hw_read_wx)(struct unm_adapter_s *, u64, void *, int); 5669a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_hw_write_ioctl)(struct unm_adapter_s *, u64, void *, 5679a5557fdSlucy wang - Sun Microsystems - Beijing China int); 5689a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_hw_read_ioctl)(struct unm_adapter_s *, u64, void *, 5699a5557fdSlucy wang - Sun Microsystems - Beijing China int); 5709a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_pci_mem_write)(struct unm_adapter_s *, u64, void *, 5719a5557fdSlucy wang - Sun Microsystems - Beijing China int); 5729a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_pci_mem_read)(struct unm_adapter_s *, u64, void *, 5739a5557fdSlucy wang - Sun Microsystems - Beijing China int); 5749a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_pci_write_immediate)(struct unm_adapter_s *, u64, 5759a5557fdSlucy wang - Sun Microsystems - Beijing China u32 *); 5769a5557fdSlucy wang - Sun Microsystems - Beijing China int (*unm_nic_pci_read_immediate)(struct unm_adapter_s *, u64, 5779a5557fdSlucy wang - Sun Microsystems - Beijing China u32 *); 5789a5557fdSlucy wang - Sun Microsystems - Beijing China void (*unm_nic_pci_write_normalize)(struct unm_adapter_s *, u64, 5799a5557fdSlucy wang - Sun Microsystems - Beijing China u32); 5809a5557fdSlucy wang - Sun Microsystems - Beijing China u32 (*unm_nic_pci_read_normalize)(struct unm_adapter_s *, u64); 5819a5557fdSlucy wang - Sun Microsystems - Beijing China 5829a5557fdSlucy wang - Sun Microsystems - Beijing China caddr_t nd_data_p; 5839a5557fdSlucy wang - Sun Microsystems - Beijing China nd_param_t nd_params[PARAM_COUNT]; 5849a5557fdSlucy wang - Sun Microsystems - Beijing China }; /* unm_adapter structure */ 5859a5557fdSlucy wang - Sun Microsystems - Beijing China 5869a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_HOST_DUMMY_DMA_SIZE 1024 5879a5557fdSlucy wang - Sun Microsystems - Beijing China 5889a5557fdSlucy wang - Sun Microsystems - Beijing China /* Following structure is for specific port information */ 5899a5557fdSlucy wang - Sun Microsystems - Beijing China 5909a5557fdSlucy wang - Sun Microsystems - Beijing China #define PCI_OFFSET_FIRST_RANGE(adapter, off) \ 5919a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base0 + off) 5929a5557fdSlucy wang - Sun Microsystems - Beijing China #define PCI_OFFSET_SECOND_RANGE(adapter, off) \ 5939a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base1 + off - SECOND_PAGE_GROUP_START) 5949a5557fdSlucy wang - Sun Microsystems - Beijing China #define PCI_OFFSET_THIRD_RANGE(adapter, off) \ 5959a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base2 + off - THIRD_PAGE_GROUP_START) 5969a5557fdSlucy wang - Sun Microsystems - Beijing China 5979a5557fdSlucy wang - Sun Microsystems - Beijing China #define pci_base_offset(adapter, off) \ 5989a5557fdSlucy wang - Sun Microsystems - Beijing China ((((off) < ((adapter)->ahw.first_page_group_end)) && \ 5999a5557fdSlucy wang - Sun Microsystems - Beijing China ((off) >= ((adapter)->ahw.first_page_group_start))) ? \ 6009a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base0 + (off)) : \ 6019a5557fdSlucy wang - Sun Microsystems - Beijing China ((((off) < SECOND_PAGE_GROUP_END) && \ 6029a5557fdSlucy wang - Sun Microsystems - Beijing China ((off) >= SECOND_PAGE_GROUP_START)) ? \ 6039a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base1 + \ 6049a5557fdSlucy wang - Sun Microsystems - Beijing China (off) - SECOND_PAGE_GROUP_START) : \ 6059a5557fdSlucy wang - Sun Microsystems - Beijing China ((((off) < THIRD_PAGE_GROUP_END) && \ 6069a5557fdSlucy wang - Sun Microsystems - Beijing China ((off) >= THIRD_PAGE_GROUP_START)) ? \ 6079a5557fdSlucy wang - Sun Microsystems - Beijing China ((adapter)->ahw.pci_base2 + (off) - \ 6089a5557fdSlucy wang - Sun Microsystems - Beijing China THIRD_PAGE_GROUP_START) : \ 6099a5557fdSlucy wang - Sun Microsystems - Beijing China 0))) 6109a5557fdSlucy wang - Sun Microsystems - Beijing China #define unm_nic_reg_write(_adp_, _off_, _val_) \ 6119a5557fdSlucy wang - Sun Microsystems - Beijing China { \ 6129a5557fdSlucy wang - Sun Microsystems - Beijing China __uint32_t _v1_ = (_val_); \ 6139a5557fdSlucy wang - Sun Microsystems - Beijing China ((_adp_)->unm_nic_hw_write_wx((_adp_), (_off_), \ 6149a5557fdSlucy wang - Sun Microsystems - Beijing China &_v1_, 4)); \ 6159a5557fdSlucy wang - Sun Microsystems - Beijing China } 6169a5557fdSlucy wang - Sun Microsystems - Beijing China 6179a5557fdSlucy wang - Sun Microsystems - Beijing China #define unm_nic_reg_read(_adp_, _off_, _ptr_) \ 6189a5557fdSlucy wang - Sun Microsystems - Beijing China ((_adp_)->unm_nic_hw_read_wx((_adp_), (_off_), (_ptr_), 4)) 6199a5557fdSlucy wang - Sun Microsystems - Beijing China 6209a5557fdSlucy wang - Sun Microsystems - Beijing China 6219a5557fdSlucy wang - Sun Microsystems - Beijing China #define unm_nic_write_w0(_adp_, _idx_, _val_) \ 6229a5557fdSlucy wang - Sun Microsystems - Beijing China ((_adp_)->unm_nic_hw_write_wx((_adp_), (_idx_), &(_val_), 4)) 6239a5557fdSlucy wang - Sun Microsystems - Beijing China 6249a5557fdSlucy wang - Sun Microsystems - Beijing China #define unm_nic_read_w0(_adp_, _idx_, _val_) \ 6259a5557fdSlucy wang - Sun Microsystems - Beijing China ((_adp_)->unm_nic_hw_read_wx((_adp_), (_idx_), (_val_), 4)) 6269a5557fdSlucy wang - Sun Microsystems - Beijing China 6279a5557fdSlucy wang - Sun Microsystems - Beijing China /* Functions available from unm_nic_hw.c */ 6289a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_get_board_info(struct unm_adapter_s *adapter); 6299a5557fdSlucy wang - Sun Microsystems - Beijing China void _unm_nic_write_crb(struct unm_adapter_s *adapter, uint32_t index, 6309a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t value); 6319a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_write_crb(struct unm_adapter_s *adapter, uint32_t index, 6329a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t value); 6339a5557fdSlucy wang - Sun Microsystems - Beijing China void _unm_nic_read_crb(struct unm_adapter_s *adapter, uint32_t index, 6349a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t *value); 6359a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_read_crb(struct unm_adapter_s *adapter, uint32_t index, 6369a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t *value); 6379a5557fdSlucy wang - Sun Microsystems - Beijing China // int unm_nic_reg_read (unm_adapter *adapter, u64 off); 6389a5557fdSlucy wang - Sun Microsystems - Beijing China int _unm_nic_hw_write(struct unm_adapter_s *adapter, 6399a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int len); 6409a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_write(struct unm_adapter_s *adapter, 6419a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int len); 6429a5557fdSlucy wang - Sun Microsystems - Beijing China int _unm_nic_hw_read(struct unm_adapter_s *adapter, 6439a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int len); 6449a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_read(struct unm_adapter_s *adapter, 6459a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int len); 6469a5557fdSlucy wang - Sun Microsystems - Beijing China void _unm_nic_hw_block_read(struct unm_adapter_s *adapter, 6479a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int num_words); 6489a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_hw_block_read(struct unm_adapter_s *adapter, 6499a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int num_words); 6509a5557fdSlucy wang - Sun Microsystems - Beijing China void _unm_nic_hw_block_write(struct unm_adapter_s *adapter, 6519a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int num_words); 6529a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_hw_block_write(struct unm_adapter_s *adapter, 6539a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int num_words); 6549a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_mem_write(struct unm_adapter_s *adapter, 6559a5557fdSlucy wang - Sun Microsystems - Beijing China u64 off, void *data, int size); 6569a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_mem_block_read(struct unm_adapter_s *adapter, u64 off, 6579a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int num_words); 6589a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_mem_block_write(struct unm_adapter_s *adapter, u64 off, 6599a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int num_words); 6609a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_read_ioctl(unm_adapter *adapter, u64 off, void *data, int len); 6619a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_write_ioctl(unm_adapter *adapter, u64 off, void *data, int len); 6629a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_macaddr_set(struct unm_adapter_s *, __uint8_t *addr); 6639a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_tcl_resetall(struct unm_adapter_s *adapter); 6649a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_tcl_phaninit(struct unm_adapter_s *adapter); 6659a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_tcl_postimage(struct unm_adapter_s *adapter); 6669a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_set_mtu(struct unm_adapter_s *adapter, int new_mtu); 6679a5557fdSlucy wang - Sun Microsystems - Beijing China long unm_nic_phy_read(unm_adapter *adapter, long reg, __uint32_t *); 6689a5557fdSlucy wang - Sun Microsystems - Beijing China long unm_nic_init_port(struct unm_adapter_s *adapter); 6699a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_crb_write_adapter(unsigned long off, void *data, 6709a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s *adapter); 6719a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_crb_read_adapter(unsigned long off, void *data, 6729a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s *adapter); 6739a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_crb_read_val_adapter(unsigned long off, 6749a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_adapter_s *adapter); 6759a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_stop_port(struct unm_adapter_s *adapter); 6769a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_set_promisc_mode(struct unm_adapter_s *adapter); 6779a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_unset_promisc_mode(struct unm_adapter_s *adapter); 6789a5557fdSlucy wang - Sun Microsystems - Beijing China 6799a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_nic_hw.c */ 6809a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_pci_change_crbwindow_128M(unm_adapter *adapter, uint32_t wndw); 6819a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_crb_writelit_adapter_128M(struct unm_adapter_s *, unsigned long, int); 6829a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_write_wx_128M(unm_adapter *adapter, u64 off, void *data, 6839a5557fdSlucy wang - Sun Microsystems - Beijing China int len); 6849a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_read_wx_128M(unm_adapter *adapter, u64 off, void *data, int len); 6859a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_write_ioctl_128M(unm_adapter *adapter, u64 off, void *data, 6869a5557fdSlucy wang - Sun Microsystems - Beijing China int len); 6879a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_read_ioctl_128M(unm_adapter *adapter, u64 off, void *data, 6889a5557fdSlucy wang - Sun Microsystems - Beijing China int len); 6899a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_mem_write_128M(struct unm_adapter_s *adapter, u64 off, 6909a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int size); 6919a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_mem_read_128M(struct unm_adapter_s *adapter, u64 off, 6929a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int size); 6939a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_pci_write_normalize_128M(unm_adapter *adapter, u64 off, u32 data); 6949a5557fdSlucy wang - Sun Microsystems - Beijing China u32 unm_nic_pci_read_normalize_128M(unm_adapter *adapter, u64 off); 6959a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_write_immediate_128M(unm_adapter *adapter, u64 off, u32 *data); 6969a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_read_immediate_128M(unm_adapter *adapter, u64 off, u32 *data); 6979a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long unm_nic_pci_set_window_128M(unm_adapter *adapter, 6989a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long addr); 6999a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_clear_statistics_128M(struct unm_adapter_s *adapter); 7009a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_fill_statistics_128M(struct unm_adapter_s *adapter, 7019a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_statistics *unm_stats); 7029a5557fdSlucy wang - Sun Microsystems - Beijing China 7039a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_pci_change_crbwindow_2M(unm_adapter *adapter, uint32_t wndw); 7049a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_crb_writelit_adapter_2M(struct unm_adapter_s *, unsigned long, int); 7059a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_write_wx_2M(unm_adapter *adapter, u64 off, void *data, int len); 7069a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_mem_write_2M(struct unm_adapter_s *adapter, u64 off, 7079a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int size); 7089a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_mem_read_2M(struct unm_adapter_s *adapter, u64 off, 7099a5557fdSlucy wang - Sun Microsystems - Beijing China void *data, int size); 7109a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_hw_read_wx_2M(unm_adapter *adapter, u64 off, void *data, int len); 7119a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_pci_write_normalize_2M(unm_adapter *adapter, u64 off, u32 data); 7129a5557fdSlucy wang - Sun Microsystems - Beijing China u32 unm_nic_pci_read_normalize_2M(unm_adapter *adapter, u64 off); 7139a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_write_immediate_2M(unm_adapter *adapter, u64 off, u32 *data); 7149a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_pci_read_immediate_2M(unm_adapter *adapter, u64 off, u32 *data); 7159a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long unm_nic_pci_set_window_2M(unm_adapter *adapter, 7169a5557fdSlucy wang - Sun Microsystems - Beijing China unsigned long long addr); 7179a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_clear_statistics_2M(struct unm_adapter_s *adapter); 7189a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nic_fill_statistics_2M(struct unm_adapter_s *adapter, 7199a5557fdSlucy wang - Sun Microsystems - Beijing China struct unm_statistics *unm_stats); 7209a5557fdSlucy wang - Sun Microsystems - Beijing China void nx_p3_nic_set_multi(unm_adapter *adapter); 7219a5557fdSlucy wang - Sun Microsystems - Beijing China 7229a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_nic_init.c */ 7239a5557fdSlucy wang - Sun Microsystems - Beijing China int phantom_init(struct unm_adapter_s *adapter, int first_time); 7249a5557fdSlucy wang - Sun Microsystems - Beijing China int load_from_flash(struct unm_adapter_s *adapter); 7259a5557fdSlucy wang - Sun Microsystems - Beijing China int pinit_from_rom(unm_adapter *adapter, int verbose); 7269a5557fdSlucy wang - Sun Microsystems - Beijing China int rom_fast_read(struct unm_adapter_s *adapter, int addr, int *valp); 7279a5557fdSlucy wang - Sun Microsystems - Beijing China 7289a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_nic_isr.c */ 7299a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_handle_phy_intr(unm_adapter *adapter); 7309a5557fdSlucy wang - Sun Microsystems - Beijing China 7319a5557fdSlucy wang - Sun Microsystems - Beijing China /* niu.c */ 7329a5557fdSlucy wang - Sun Microsystems - Beijing China native_t unm_niu_set_promiscuous_mode(struct unm_adapter_s *adapter, 7339a5557fdSlucy wang - Sun Microsystems - Beijing China unm_niu_prom_mode_t mode); 7349a5557fdSlucy wang - Sun Microsystems - Beijing China native_t unm_niu_xg_set_promiscuous_mode(struct unm_adapter_s *adapter, 7359a5557fdSlucy wang - Sun Microsystems - Beijing China unm_niu_prom_mode_t mode); 7369a5557fdSlucy wang - Sun Microsystems - Beijing China 7379a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_xg_macaddr_set(struct unm_adapter_s *adapter, 7389a5557fdSlucy wang - Sun Microsystems - Beijing China unm_ethernet_macaddr_t addr); 7399a5557fdSlucy wang - Sun Microsystems - Beijing China native_t unm_niu_disable_xg_port(struct unm_adapter_s *adapter); 7409a5557fdSlucy wang - Sun Microsystems - Beijing China 7419a5557fdSlucy wang - Sun Microsystems - Beijing China long unm_niu_gbe_init_port(long port); 742*1f0a2977SToomas Soome native_t unm_niu_enable_gbe_port(struct unm_adapter_s *adapter); 7439a5557fdSlucy wang - Sun Microsystems - Beijing China native_t unm_niu_disable_gbe_port(struct unm_adapter_s *adapter); 7449a5557fdSlucy wang - Sun Microsystems - Beijing China 7459a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_macaddr_get(struct unm_adapter_s *adapter, unsigned char *addr); 7469a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_macaddr_set(struct unm_adapter_s *adapter, 7479a5557fdSlucy wang - Sun Microsystems - Beijing China unm_ethernet_macaddr_t addr); 7489a5557fdSlucy wang - Sun Microsystems - Beijing China 7499a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_xg_set_tx_flow_ctl(struct unm_adapter_s *adapter, int enable); 7509a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_gbe_set_rx_flow_ctl(struct unm_adapter_s *adapter, int enable); 7519a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_niu_gbe_set_tx_flow_ctl(struct unm_adapter_s *adapter, int enable); 7529a5557fdSlucy wang - Sun Microsystems - Beijing China long unm_niu_gbe_disable_phy_interrupts(struct unm_adapter_s *); 7539a5557fdSlucy wang - Sun Microsystems - Beijing China long unm_niu_gbe_phy_read(struct unm_adapter_s *, 7549a5557fdSlucy wang - Sun Microsystems - Beijing China long reg, unm_crbword_t *readval); 7559a5557fdSlucy wang - Sun Microsystems - Beijing China 7569a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_nic_ctx.c */ 7579a5557fdSlucy wang - Sun Microsystems - Beijing China int netxen_create_rxtx(struct unm_adapter_s *adapter); 7589a5557fdSlucy wang - Sun Microsystems - Beijing China void netxen_destroy_rxtx(struct unm_adapter_s *adapter); 7599a5557fdSlucy wang - Sun Microsystems - Beijing China int nx_fw_cmd_set_mtu(struct unm_adapter_s *adapter, int mtu); 7609a5557fdSlucy wang - Sun Microsystems - Beijing China 7619a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_nic_main.c */ 7629a5557fdSlucy wang - Sun Microsystems - Beijing China int receive_peg_ready(struct unm_adapter_s *adapter); 7639a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nic_update_cmd_producer(struct unm_adapter_s *adapter, 7649a5557fdSlucy wang - Sun Microsystems - Beijing China uint32_t crb_producer); 7659a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_desc_dma_sync(ddi_dma_handle_t handle, uint_t start, uint_t count, 7669a5557fdSlucy wang - Sun Microsystems - Beijing China uint_t range, uint_t unit_size, uint_t direction); 7679a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_pci_alloc_consistent(unm_adapter *, int, caddr_t *, 7689a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_dma_cookie_t *, ddi_dma_handle_t *, ddi_acc_handle_t *); 7699a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_pci_free_consistent(ddi_dma_handle_t *, ddi_acc_handle_t *); 7709a5557fdSlucy wang - Sun Microsystems - Beijing China 7719a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_ndd.c */ 7729a5557fdSlucy wang - Sun Microsystems - Beijing China int unm_nd_init(unm_adapter *adapter); 7739a5557fdSlucy wang - Sun Microsystems - Beijing China enum ioc_reply unm_nd_ioctl(unm_adapter *adapter, queue_t *wq, 7749a5557fdSlucy wang - Sun Microsystems - Beijing China mblk_t *mp, struct iocblk *iocp); 7759a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_nd_cleanup(unm_adapter *adapter); 7769a5557fdSlucy wang - Sun Microsystems - Beijing China 7779a5557fdSlucy wang - Sun Microsystems - Beijing China /* unm_gem.c */ 7789a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_destroy_intr(unm_adapter *adapter); 7799a5557fdSlucy wang - Sun Microsystems - Beijing China void unm_free_dummy_dma(unm_adapter *adapter); 7809a5557fdSlucy wang - Sun Microsystems - Beijing China 7819a5557fdSlucy wang - Sun Microsystems - Beijing China /* 7829a5557fdSlucy wang - Sun Microsystems - Beijing China * (Internal) return values from ioctl subroutines 7839a5557fdSlucy wang - Sun Microsystems - Beijing China */ 7849a5557fdSlucy wang - Sun Microsystems - Beijing China enum ioc_reply { 7859a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_INVAL = -1, /* bad, NAK with EINVAL */ 7869a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_DONE, /* OK, reply sent */ 7879a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_ACK, /* OK, just send ACK */ 7889a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_REPLY, /* OK, just send reply */ 7899a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_RESTART_ACK, /* OK, restart & ACK */ 7909a5557fdSlucy wang - Sun Microsystems - Beijing China IOC_RESTART_REPLY /* OK, restart & reply */ 7919a5557fdSlucy wang - Sun Microsystems - Beijing China }; 7929a5557fdSlucy wang - Sun Microsystems - Beijing China 7939a5557fdSlucy wang - Sun Microsystems - Beijing China /* 7949a5557fdSlucy wang - Sun Microsystems - Beijing China * Shorthand for the NDD parameters 7959a5557fdSlucy wang - Sun Microsystems - Beijing China */ 7969a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_autoneg nd_params[PARAM_ADV_AUTONEG_CAP].ndp_val 7979a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_pause nd_params[PARAM_ADV_PAUSE_CAP].ndp_val 7989a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_asym_pause nd_params[PARAM_ADV_ASYM_PAUSE_CAP].ndp_val 7999a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_10000fdx nd_params[PARAM_ADV_10000FDX_CAP].ndp_val 8009a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_1000fdx nd_params[PARAM_ADV_1000FDX_CAP].ndp_val 8019a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_1000hdx nd_params[PARAM_ADV_1000HDX_CAP].ndp_val 8029a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_100fdx nd_params[PARAM_ADV_100FDX_CAP].ndp_val 8039a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_100hdx nd_params[PARAM_ADV_100HDX_CAP].ndp_val 8049a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_10fdx nd_params[PARAM_ADV_10FDX_CAP].ndp_val 8059a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_adv_10hdx nd_params[PARAM_ADV_10HDX_CAP].ndp_val 8069a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_link_up nd_params[PARAM_LINK_STATUS].ndp_val 8079a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_link_speed nd_params[PARAM_LINK_SPEED].ndp_val 8089a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_link_duplex nd_params[PARAM_LINK_DUPLEX].ndp_val 8099a5557fdSlucy wang - Sun Microsystems - Beijing China #define param_loop_mode nd_params[PARAM_LOOP_MODE].ndp_val 8109a5557fdSlucy wang - Sun Microsystems - Beijing China 8119a5557fdSlucy wang - Sun Microsystems - Beijing China /* 8129a5557fdSlucy wang - Sun Microsystems - Beijing China * Property lookups 8139a5557fdSlucy wang - Sun Microsystems - Beijing China */ 8149a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_PROP_EXISTS(d, n) \ 8159a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_prop_exists(DDI_DEV_T_ANY, (d), DDI_PROP_DONTPASS, (n)) 8169a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_PROP_GET_INT(d, n) \ 8179a5557fdSlucy wang - Sun Microsystems - Beijing China ddi_prop_get_int(DDI_DEV_T_ANY, (d), DDI_PROP_DONTPASS, (n), -1) 8189a5557fdSlucy wang - Sun Microsystems - Beijing China 8199a5557fdSlucy wang - Sun Microsystems - Beijing China /* 8209a5557fdSlucy wang - Sun Microsystems - Beijing China * Bit flags in the 'debug' word ... 8219a5557fdSlucy wang - Sun Microsystems - Beijing China */ 8229a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_DBG_TRACE 0x00000002 /* general flow tracing */ 8239a5557fdSlucy wang - Sun Microsystems - Beijing China #define UNM_DBG_NDD 0x20000000 /* NDD operations */ 8249a5557fdSlucy wang - Sun Microsystems - Beijing China 8259a5557fdSlucy wang - Sun Microsystems - Beijing China #define MBPS_10 10 8269a5557fdSlucy wang - Sun Microsystems - Beijing China #define MBPS_100 100 8279a5557fdSlucy wang - Sun Microsystems - Beijing China #define MBPS_1000 1000 8289a5557fdSlucy wang - Sun Microsystems - Beijing China 82993833965Sjing xiong ERI-SUN #ifdef __cplusplus 83093833965Sjing xiong ERI-SUN } 83193833965Sjing xiong ERI-SUN #endif 83293833965Sjing xiong ERI-SUN 8339a5557fdSlucy wang - Sun Microsystems - Beijing China #endif /* !_UNM_NIC_ */ 834