16c8d8eccSSepherosa Ziehau /* 26c8d8eccSSepherosa Ziehau * Copyright (c) 2001 Wind River Systems 36c8d8eccSSepherosa Ziehau * Copyright (c) 1997, 1998, 1999, 2001 46c8d8eccSSepherosa Ziehau * Bill Paul <wpaul@windriver.com>. All rights reserved. 56c8d8eccSSepherosa Ziehau * 66c8d8eccSSepherosa Ziehau * Redistribution and use in source and binary forms, with or without 76c8d8eccSSepherosa Ziehau * modification, are permitted provided that the following conditions 86c8d8eccSSepherosa Ziehau * are met: 96c8d8eccSSepherosa Ziehau * 1. Redistributions of source code must retain the above copyright 106c8d8eccSSepherosa Ziehau * notice, this list of conditions and the following disclaimer. 116c8d8eccSSepherosa Ziehau * 2. Redistributions in binary form must reproduce the above copyright 126c8d8eccSSepherosa Ziehau * notice, this list of conditions and the following disclaimer in the 136c8d8eccSSepherosa Ziehau * documentation and/or other materials provided with the distribution. 146c8d8eccSSepherosa Ziehau * 3. All advertising materials mentioning features or use of this software 156c8d8eccSSepherosa Ziehau * must display the following acknowledgement: 166c8d8eccSSepherosa Ziehau * This product includes software developed by Bill Paul. 176c8d8eccSSepherosa Ziehau * 4. Neither the name of the author nor the names of any co-contributors 186c8d8eccSSepherosa Ziehau * may be used to endorse or promote products derived from this software 196c8d8eccSSepherosa Ziehau * without specific prior written permission. 206c8d8eccSSepherosa Ziehau * 216c8d8eccSSepherosa Ziehau * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 226c8d8eccSSepherosa Ziehau * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 236c8d8eccSSepherosa Ziehau * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 246c8d8eccSSepherosa Ziehau * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 256c8d8eccSSepherosa Ziehau * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 266c8d8eccSSepherosa Ziehau * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 276c8d8eccSSepherosa Ziehau * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 286c8d8eccSSepherosa Ziehau * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 296c8d8eccSSepherosa Ziehau * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 306c8d8eccSSepherosa Ziehau * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 316c8d8eccSSepherosa Ziehau * THE POSSIBILITY OF SUCH DAMAGE. 326c8d8eccSSepherosa Ziehau * 336c8d8eccSSepherosa Ziehau * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.1.2.16 2004/09/23 20:11:18 ps Exp $ 346c8d8eccSSepherosa Ziehau * $DragonFly: src/sys/dev/netif/bge/if_bgereg.h,v 1.25 2008/10/22 14:24:24 sephe Exp $ 356c8d8eccSSepherosa Ziehau */ 366c8d8eccSSepherosa Ziehau 376c8d8eccSSepherosa Ziehau #ifndef _IF_BNXVAR_H_ 386c8d8eccSSepherosa Ziehau #define _IF_BNXVAR_H_ 396c8d8eccSSepherosa Ziehau 406c8d8eccSSepherosa Ziehau /* 416c8d8eccSSepherosa Ziehau * Tigon general information block. This resides in host memory 426c8d8eccSSepherosa Ziehau * and contains the status counters, ring control blocks and 436c8d8eccSSepherosa Ziehau * producer pointers. 446c8d8eccSSepherosa Ziehau */ 456c8d8eccSSepherosa Ziehau 466c8d8eccSSepherosa Ziehau struct bnx_gib { 476c8d8eccSSepherosa Ziehau struct bge_stats bnx_stats; 486c8d8eccSSepherosa Ziehau struct bge_rcb bnx_tx_rcb[16]; 496c8d8eccSSepherosa Ziehau struct bge_rcb bnx_std_rx_rcb; 506c8d8eccSSepherosa Ziehau struct bge_rcb bnx_jumbo_rx_rcb; 516c8d8eccSSepherosa Ziehau struct bge_rcb bnx_mini_rx_rcb; 526c8d8eccSSepherosa Ziehau struct bge_rcb bnx_return_rcb; 536c8d8eccSSepherosa Ziehau }; 546c8d8eccSSepherosa Ziehau 556c8d8eccSSepherosa Ziehau #define BNX_MIN_FRAMELEN 60 566c8d8eccSSepherosa Ziehau #define BNX_MAX_FRAMELEN 1536 576c8d8eccSSepherosa Ziehau #define BNX_JUMBO_FRAMELEN 9018 586c8d8eccSSepherosa Ziehau #define BNX_JUMBO_MTU (BNX_JUMBO_FRAMELEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 596c8d8eccSSepherosa Ziehau 606c8d8eccSSepherosa Ziehau #define BNX_TIMEOUT 5000 616c8d8eccSSepherosa Ziehau #define BNX_FIRMWARE_TIMEOUT 100000 626c8d8eccSSepherosa Ziehau #define BNX_TXCONS_UNSET 0xFFFF /* impossible value */ 636c8d8eccSSepherosa Ziehau 646c8d8eccSSepherosa Ziehau /* 656c8d8eccSSepherosa Ziehau * Other utility macros. 666c8d8eccSSepherosa Ziehau */ 676c8d8eccSSepherosa Ziehau #define BNX_INC(x, y) (x) = ((x) + 1) % (y) 686c8d8eccSSepherosa Ziehau 696c8d8eccSSepherosa Ziehau /* 706c8d8eccSSepherosa Ziehau * Register access macros. The Tigon always uses memory mapped register 716c8d8eccSSepherosa Ziehau * accesses and all registers must be accessed with 32 bit operations. 726c8d8eccSSepherosa Ziehau */ 736c8d8eccSSepherosa Ziehau 746c8d8eccSSepherosa Ziehau #define CSR_WRITE_4(sc, reg, val) \ 756c8d8eccSSepherosa Ziehau bus_space_write_4(sc->bnx_btag, sc->bnx_bhandle, reg, val) 766c8d8eccSSepherosa Ziehau 776c8d8eccSSepherosa Ziehau #define CSR_READ_4(sc, reg) \ 786c8d8eccSSepherosa Ziehau bus_space_read_4(sc->bnx_btag, sc->bnx_bhandle, reg) 796c8d8eccSSepherosa Ziehau 806c8d8eccSSepherosa Ziehau #define BNX_SETBIT(sc, reg, x) \ 816c8d8eccSSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) | x)) 826c8d8eccSSepherosa Ziehau 836c8d8eccSSepherosa Ziehau #define BNX_CLRBIT(sc, reg, x) \ 846c8d8eccSSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) & ~x)) 856c8d8eccSSepherosa Ziehau 866c8d8eccSSepherosa Ziehau #define BNX_MEMWIN_READ(sc, x, val) \ 876c8d8eccSSepherosa Ziehau do { \ 886c8d8eccSSepherosa Ziehau pci_write_config(sc->bnx_dev, BGE_PCI_MEMWIN_BASEADDR, \ 896c8d8eccSSepherosa Ziehau (0xFFFF0000 & x), 4); \ 906c8d8eccSSepherosa Ziehau val = CSR_READ_4(sc, BGE_MEMWIN_START + (x & 0xFFFF)); \ 916c8d8eccSSepherosa Ziehau } while(0) 926c8d8eccSSepherosa Ziehau 936c8d8eccSSepherosa Ziehau #define BNX_MEMWIN_WRITE(sc, x, val) \ 946c8d8eccSSepherosa Ziehau do { \ 956c8d8eccSSepherosa Ziehau pci_write_config(sc->bnx_dev, BGE_PCI_MEMWIN_BASEADDR, \ 966c8d8eccSSepherosa Ziehau (0xFFFF0000 & x), 4); \ 976c8d8eccSSepherosa Ziehau CSR_WRITE_4(sc, BGE_MEMWIN_START + (x & 0xFFFF), val); \ 986c8d8eccSSepherosa Ziehau } while(0) 996c8d8eccSSepherosa Ziehau 1006c8d8eccSSepherosa Ziehau #define RCB_WRITE_4(sc, rcb, offset, val) \ 1016c8d8eccSSepherosa Ziehau bus_space_write_4(sc->bnx_btag, sc->bnx_bhandle, \ 1026c8d8eccSSepherosa Ziehau rcb + offsetof(struct bge_rcb, offset), val) 1036c8d8eccSSepherosa Ziehau 1046c8d8eccSSepherosa Ziehau /* 1056c8d8eccSSepherosa Ziehau * Memory management stuff. Note: the SSLOTS, MSLOTS and JSLOTS 1066c8d8eccSSepherosa Ziehau * values are tuneable. They control the actual amount of buffers 1076c8d8eccSSepherosa Ziehau * allocated for the standard, mini and jumbo receive rings. 1086c8d8eccSSepherosa Ziehau */ 1096c8d8eccSSepherosa Ziehau 1106c8d8eccSSepherosa Ziehau #define BNX_SSLOTS 256 1116c8d8eccSSepherosa Ziehau #define BNX_MSLOTS 256 1126c8d8eccSSepherosa Ziehau #define BNX_JSLOTS 384 1136c8d8eccSSepherosa Ziehau 1146c8d8eccSSepherosa Ziehau #define BNX_JRAWLEN (BNX_JUMBO_FRAMELEN + ETHER_ALIGN) 1156c8d8eccSSepherosa Ziehau #define BNX_JLEN (BNX_JRAWLEN + \ 1166c8d8eccSSepherosa Ziehau (sizeof(uint64_t) - BNX_JRAWLEN % sizeof(uint64_t))) 1176c8d8eccSSepherosa Ziehau #define BNX_JPAGESZ PAGE_SIZE 1186c8d8eccSSepherosa Ziehau #define BNX_RESID (BNX_JPAGESZ - (BNX_JLEN * BNX_JSLOTS) % BNX_JPAGESZ) 1196c8d8eccSSepherosa Ziehau #define BNX_JMEM ((BNX_JLEN * BNX_JSLOTS) + BNX_RESID) 1206c8d8eccSSepherosa Ziehau 1216c8d8eccSSepherosa Ziehau struct bnx_softc; 1226c8d8eccSSepherosa Ziehau 1236c8d8eccSSepherosa Ziehau struct bnx_jslot { 1246c8d8eccSSepherosa Ziehau struct bnx_softc *bnx_sc; 1256c8d8eccSSepherosa Ziehau void *bnx_buf; 1266c8d8eccSSepherosa Ziehau bus_addr_t bnx_paddr; 1276c8d8eccSSepherosa Ziehau int bnx_inuse; 1286c8d8eccSSepherosa Ziehau int bnx_slot; 1296c8d8eccSSepherosa Ziehau SLIST_ENTRY(bnx_jslot) jslot_link; 1306c8d8eccSSepherosa Ziehau }; 1316c8d8eccSSepherosa Ziehau 1326c8d8eccSSepherosa Ziehau /* 1336c8d8eccSSepherosa Ziehau * Ring structures. Most of these reside in host memory and we tell 1346c8d8eccSSepherosa Ziehau * the NIC where they are via the ring control blocks. The exceptions 1356c8d8eccSSepherosa Ziehau * are the tx and command rings, which live in NIC memory and which 1366c8d8eccSSepherosa Ziehau * we access via the shared memory window. 1376c8d8eccSSepherosa Ziehau */ 1386c8d8eccSSepherosa Ziehau struct bnx_ring_data { 1396c8d8eccSSepherosa Ziehau struct bge_rx_bd *bnx_rx_jumbo_ring; 1406c8d8eccSSepherosa Ziehau bus_addr_t bnx_rx_jumbo_ring_paddr; 1416c8d8eccSSepherosa Ziehau struct bge_status_block *bnx_status_block; 1426c8d8eccSSepherosa Ziehau bus_addr_t bnx_status_block_paddr; 1436c8d8eccSSepherosa Ziehau void *bnx_jumbo_buf; 1446c8d8eccSSepherosa Ziehau struct bnx_gib bnx_info; 1456c8d8eccSSepherosa Ziehau }; 1466c8d8eccSSepherosa Ziehau 147beedf5beSSepherosa Ziehau struct bnx_rx_buf { 148beedf5beSSepherosa Ziehau bus_dmamap_t bnx_rx_dmamap; 149beedf5beSSepherosa Ziehau struct mbuf *bnx_rx_mbuf; 150beedf5beSSepherosa Ziehau bus_addr_t bnx_rx_paddr; 1516c8d8eccSSepherosa Ziehau }; 1526c8d8eccSSepherosa Ziehau 153beedf5beSSepherosa Ziehau struct bnx_rx_std_ring { 154329f9016SSepherosa Ziehau struct lwkt_serialize bnx_rx_std_serialize; 155beedf5beSSepherosa Ziehau struct bnx_softc *bnx_sc; 156beedf5beSSepherosa Ziehau 157beedf5beSSepherosa Ziehau uint16_t bnx_rx_std; /* current prod ring head */ 158beedf5beSSepherosa Ziehau struct bge_rx_bd *bnx_rx_std_ring; 159beedf5beSSepherosa Ziehau 160beedf5beSSepherosa Ziehau bus_dma_tag_t bnx_rx_mtag; /* RX mbuf DMA tag */ 161beedf5beSSepherosa Ziehau struct bnx_rx_buf bnx_rx_std_buf[BGE_STD_RX_RING_CNT]; 162beedf5beSSepherosa Ziehau 163beedf5beSSepherosa Ziehau bus_dma_tag_t bnx_rx_std_ring_tag; 164beedf5beSSepherosa Ziehau bus_dmamap_t bnx_rx_std_ring_map; 165beedf5beSSepherosa Ziehau bus_addr_t bnx_rx_std_ring_paddr; 166beedf5beSSepherosa Ziehau } __cachealign; 167beedf5beSSepherosa Ziehau 168beedf5beSSepherosa Ziehau struct bnx_rx_ret_ring { 169329f9016SSepherosa Ziehau struct lwkt_serialize bnx_rx_ret_serialize; 170beedf5beSSepherosa Ziehau struct bnx_softc *bnx_sc; 171beedf5beSSepherosa Ziehau struct bnx_rx_std_ring *bnx_std; 172beedf5beSSepherosa Ziehau 173beedf5beSSepherosa Ziehau /* Shadow of bnx_rx_std_ring's bnx_rx_mtag */ 174beedf5beSSepherosa Ziehau bus_dma_tag_t bnx_rx_mtag; 175beedf5beSSepherosa Ziehau 1763a16b7b8SSepherosa Ziehau volatile uint16_t *bnx_rx_considx; 177beedf5beSSepherosa Ziehau uint16_t bnx_rx_saved_considx; 178beedf5beSSepherosa Ziehau struct bge_rx_bd *bnx_rx_ret_ring; 179beedf5beSSepherosa Ziehau bus_dmamap_t bnx_rx_tmpmap; 180beedf5beSSepherosa Ziehau 181beedf5beSSepherosa Ziehau bus_dma_tag_t bnx_rx_ret_ring_tag; 182beedf5beSSepherosa Ziehau bus_dmamap_t bnx_rx_ret_ring_map; 183beedf5beSSepherosa Ziehau bus_addr_t bnx_rx_ret_ring_paddr; 184beedf5beSSepherosa Ziehau } __cachealign; 185beedf5beSSepherosa Ziehau 1866c8d8eccSSepherosa Ziehau /* 1876c8d8eccSSepherosa Ziehau * Mbuf pointers. We need these to keep track of the virtual addresses 1886c8d8eccSSepherosa Ziehau * of our mbuf chains since we can only convert from physical to virtual, 1896c8d8eccSSepherosa Ziehau * not the other way around. 1906c8d8eccSSepherosa Ziehau */ 1916c8d8eccSSepherosa Ziehau struct bnx_chain_data { 1926c8d8eccSSepherosa Ziehau bus_dma_tag_t bnx_parent_tag; 1936c8d8eccSSepherosa Ziehau bus_dma_tag_t bnx_rx_jumbo_ring_tag; 1946c8d8eccSSepherosa Ziehau bus_dma_tag_t bnx_status_tag; 1956c8d8eccSSepherosa Ziehau bus_dma_tag_t bnx_jumbo_tag; 1966c8d8eccSSepherosa Ziehau bus_dmamap_t bnx_rx_jumbo_ring_map; 1976c8d8eccSSepherosa Ziehau bus_dmamap_t bnx_status_map; 1986c8d8eccSSepherosa Ziehau bus_dmamap_t bnx_jumbo_map; 199beedf5beSSepherosa Ziehau struct bnx_rx_buf bnx_rx_jumbo_chain[BGE_JUMBO_RX_RING_CNT]; 2006c8d8eccSSepherosa Ziehau /* Stick the jumbo mem management stuff here too. */ 2016c8d8eccSSepherosa Ziehau struct bnx_jslot bnx_jslots[BNX_JSLOTS]; 2026c8d8eccSSepherosa Ziehau }; 2036c8d8eccSSepherosa Ziehau 204fa4b1067SSepherosa Ziehau struct bnx_tx_buf { 205fa4b1067SSepherosa Ziehau bus_dmamap_t bnx_tx_dmamap; 206fa4b1067SSepherosa Ziehau struct mbuf *bnx_tx_mbuf; 207fa4b1067SSepherosa Ziehau }; 208fa4b1067SSepherosa Ziehau 20933a04907SSepherosa Ziehau struct bnx_tx_ring { 210329f9016SSepherosa Ziehau struct lwkt_serialize bnx_tx_serialize; 21133a04907SSepherosa Ziehau struct bnx_softc *bnx_sc; 212*3397dea6SSepherosa Ziehau struct ifaltq_subque *bnx_ifsq; 2133a16b7b8SSepherosa Ziehau volatile uint16_t *bnx_tx_considx; 21479a64343SSepherosa Ziehau uint16_t bnx_tx_flags; 21579a64343SSepherosa Ziehau #define BNX_TX_FLAG_SHORTDMA 0x0001 216aad4de2bSSepherosa Ziehau #define BNX_TX_FLAG_FORCE_DEFRAG 0x0002 21733a04907SSepherosa Ziehau uint16_t bnx_tx_saved_considx; 218fa639b88SSepherosa Ziehau int bnx_tx_cnt; 21933a04907SSepherosa Ziehau uint32_t bnx_tx_prodidx; 22033a04907SSepherosa Ziehau int bnx_tx_wreg; 2218bd43d5dSSepherosa Ziehau int bnx_tx_mbx; 222*3397dea6SSepherosa Ziehau struct ifsubq_watchdog bnx_tx_watchdog; 22333a04907SSepherosa Ziehau 22433a04907SSepherosa Ziehau struct bge_tx_bd *bnx_tx_ring; 22533a04907SSepherosa Ziehau 22633a04907SSepherosa Ziehau bus_dma_tag_t bnx_tx_mtag; /* TX mbuf DMA tag */ 227fa4b1067SSepherosa Ziehau struct bnx_tx_buf bnx_tx_buf[BGE_TX_RING_CNT]; 22833a04907SSepherosa Ziehau 22933a04907SSepherosa Ziehau bus_dma_tag_t bnx_tx_ring_tag; 23033a04907SSepherosa Ziehau bus_dmamap_t bnx_tx_ring_map; 23133a04907SSepherosa Ziehau bus_addr_t bnx_tx_ring_paddr; 232f33ac8a4SSepherosa Ziehau int bnx_tx_cpuid; 23333a04907SSepherosa Ziehau } __cachealign; 23433a04907SSepherosa Ziehau 235f33ac8a4SSepherosa Ziehau struct bnx_intr_data { 236f33ac8a4SSepherosa Ziehau struct bnx_softc *bnx_sc; 237f33ac8a4SSepherosa Ziehau struct bnx_rx_ret_ring *bnx_ret; 238f33ac8a4SSepherosa Ziehau struct bnx_tx_ring *bnx_txr; 239f33ac8a4SSepherosa Ziehau 240f33ac8a4SSepherosa Ziehau int bnx_intr_cpuid; 241f33ac8a4SSepherosa Ziehau struct lwkt_serialize *bnx_intr_serialize; 242f33ac8a4SSepherosa Ziehau struct callout bnx_intr_timer; 243f33ac8a4SSepherosa Ziehau void (*bnx_intr_check)(void *); 244f33ac8a4SSepherosa Ziehau uint16_t bnx_rx_check_considx; 245f33ac8a4SSepherosa Ziehau uint16_t bnx_tx_check_considx; 246f33ac8a4SSepherosa Ziehau boolean_t bnx_intr_maylose; 247f33ac8a4SSepherosa Ziehau 248f33ac8a4SSepherosa Ziehau void *bnx_intr_arg; 249f33ac8a4SSepherosa Ziehau driver_intr_t *bnx_intr_func; 250f33ac8a4SSepherosa Ziehau void *bnx_intr_hand; 251f33ac8a4SSepherosa Ziehau struct resource *bnx_intr_res; 252f33ac8a4SSepherosa Ziehau int bnx_intr_rid; 253f33ac8a4SSepherosa Ziehau 254f33ac8a4SSepherosa Ziehau const char *bnx_intr_desc; 255f33ac8a4SSepherosa Ziehau char bnx_intr_desc0[64]; 256f33ac8a4SSepherosa Ziehau } __cachealign; 257f33ac8a4SSepherosa Ziehau 258f33ac8a4SSepherosa Ziehau #define BNX_INTR_MAX 5 259f33ac8a4SSepherosa Ziehau 2606c8d8eccSSepherosa Ziehau struct bnx_softc { 2616c8d8eccSSepherosa Ziehau struct arpcom arpcom; /* interface info */ 2626c8d8eccSSepherosa Ziehau device_t bnx_dev; 2636c8d8eccSSepherosa Ziehau device_t bnx_miibus; 2646c8d8eccSSepherosa Ziehau bus_space_handle_t bnx_bhandle; 2656c8d8eccSSepherosa Ziehau bus_space_tag_t bnx_btag; 2666c8d8eccSSepherosa Ziehau struct resource *bnx_res; 2676c8d8eccSSepherosa Ziehau struct ifmedia bnx_ifmedia; /* TBI media info */ 2686c8d8eccSSepherosa Ziehau int bnx_pciecap; 2696c8d8eccSSepherosa Ziehau uint32_t bnx_status_tag; 2706c8d8eccSSepherosa Ziehau uint32_t bnx_flags; /* BNX_FLAG_ */ 2716c8d8eccSSepherosa Ziehau #define BNX_FLAG_TBI 0x00000001 2726c8d8eccSSepherosa Ziehau #define BNX_FLAG_JUMBO 0x00000002 2736c8d8eccSSepherosa Ziehau #define BNX_FLAG_ONESHOT_MSI 0x00000004 2746c8d8eccSSepherosa Ziehau #define BNX_FLAG_5717_PLUS 0x00000008 2756c8d8eccSSepherosa Ziehau #define BNX_FLAG_MII_SERDES 0x00000010 2766c8d8eccSSepherosa Ziehau #define BNX_FLAG_CPMU 0x00000020 277f368d0d9SSepherosa Ziehau #define BNX_FLAG_57765_PLUS 0x00000040 278f368d0d9SSepherosa Ziehau #define BNX_FLAG_57765_FAMILY 0x00000080 279df9ccc98SSepherosa Ziehau #define BNX_FLAG_STATUSTAG_BUG 0x00000100 28066deb1c1SSepherosa Ziehau #define BNX_FLAG_TSO 0x00000200 2816c8d8eccSSepherosa Ziehau #define BNX_FLAG_NO_EEPROM 0x10000000 2826c8d8eccSSepherosa Ziehau 2836c8d8eccSSepherosa Ziehau uint32_t bnx_chipid; 2846c8d8eccSSepherosa Ziehau uint32_t bnx_asicrev; 2856c8d8eccSSepherosa Ziehau uint32_t bnx_chiprev; 2866c8d8eccSSepherosa Ziehau struct bnx_ring_data bnx_ldata; /* rings */ 2876c8d8eccSSepherosa Ziehau struct bnx_chain_data bnx_cdata; /* mbufs */ 288beedf5beSSepherosa Ziehau 289f33ac8a4SSepherosa Ziehau struct lwkt_serialize bnx_main_serialize; 290329f9016SSepherosa Ziehau int bnx_serialize_cnt; 291329f9016SSepherosa Ziehau struct lwkt_serialize **bnx_serialize; 292f33ac8a4SSepherosa Ziehau 29333a04907SSepherosa Ziehau int bnx_tx_ringcnt; 29433a04907SSepherosa Ziehau struct bnx_tx_ring *bnx_tx_ring; 295beedf5beSSepherosa Ziehau int bnx_rx_retcnt; 296beedf5beSSepherosa Ziehau struct bnx_rx_ret_ring *bnx_rx_ret_ring; 297beedf5beSSepherosa Ziehau struct bnx_rx_std_ring bnx_rx_std_ring; 298beedf5beSSepherosa Ziehau 2996c8d8eccSSepherosa Ziehau uint16_t bnx_jumbo; /* current jumo ring head */ 3006c8d8eccSSepherosa Ziehau SLIST_HEAD(__bnx_jfreehead, bnx_jslot) bnx_jfree_listhead; 3016c8d8eccSSepherosa Ziehau struct lwkt_serialize bnx_jslot_serializer; 3026c8d8eccSSepherosa Ziehau uint32_t bnx_rx_coal_ticks; 3036c8d8eccSSepherosa Ziehau uint32_t bnx_tx_coal_ticks; 3046c8d8eccSSepherosa Ziehau uint32_t bnx_rx_coal_bds; 3056c8d8eccSSepherosa Ziehau uint32_t bnx_tx_coal_bds; 3066c8d8eccSSepherosa Ziehau uint32_t bnx_rx_coal_bds_int; 3076c8d8eccSSepherosa Ziehau uint32_t bnx_tx_coal_bds_int; 3086c8d8eccSSepherosa Ziehau uint32_t bnx_mi_mode; 3096c8d8eccSSepherosa Ziehau int bnx_if_flags; 3106c8d8eccSSepherosa Ziehau int bnx_link; 3116c8d8eccSSepherosa Ziehau int bnx_link_evt; 3128ca0f604SSepherosa Ziehau int bnx_stat_cpuid; 3136c8d8eccSSepherosa Ziehau struct callout bnx_stat_timer; 314b5de76b1SSepherosa Ziehau struct ifpoll_compat bnx_npoll; 3156c8d8eccSSepherosa Ziehau 316f33ac8a4SSepherosa Ziehau int bnx_intr_type; 317f33ac8a4SSepherosa Ziehau int bnx_intr_cnt; 318f33ac8a4SSepherosa Ziehau struct bnx_intr_data bnx_intr_data[BNX_INTR_MAX]; 319df9ccc98SSepherosa Ziehau 3206c8d8eccSSepherosa Ziehau struct sysctl_ctx_list bnx_sysctl_ctx; 3216c8d8eccSSepherosa Ziehau struct sysctl_oid *bnx_sysctl_tree; 3226c8d8eccSSepherosa Ziehau 3236c8d8eccSSepherosa Ziehau int bnx_phyno; 3246c8d8eccSSepherosa Ziehau uint32_t bnx_coal_chg; 3256c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_CHG 0x01 3266c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_CHG 0x02 3276c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_CHG 0x04 3286c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_CHG 0x08 3296c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_INT_CHG 0x40 3306c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_INT_CHG 0x80 3316c8d8eccSSepherosa Ziehau 3326c8d8eccSSepherosa Ziehau void (*bnx_link_upd)(struct bnx_softc *, uint32_t); 3336c8d8eccSSepherosa Ziehau uint32_t bnx_link_chg; 33466deb1c1SSepherosa Ziehau 33566deb1c1SSepherosa Ziehau #define BNX_TSO_NSTATS 45 33666deb1c1SSepherosa Ziehau u_long bnx_tsosegs[BNX_TSO_NSTATS]; 3376c8d8eccSSepherosa Ziehau }; 3386c8d8eccSSepherosa Ziehau 33966deb1c1SSepherosa Ziehau #define BNX_NSEG_NEW 40 340adea0b8cSSepherosa Ziehau #define BNX_NSEG_SPARE 33 /* enough for 64K TSO segment */ 341adea0b8cSSepherosa Ziehau #define BNX_NSEG_RSVD 4 3426c8d8eccSSepherosa Ziehau 3436c8d8eccSSepherosa Ziehau /* RX coalesce ticks, unit: us */ 3446c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_MIN 0 3456c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_DEF 160 3466c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_MAX 1023 3476c8d8eccSSepherosa Ziehau 3486c8d8eccSSepherosa Ziehau /* TX coalesce ticks, unit: us */ 3496c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_MIN 0 3506c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_DEF 1023 3516c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_MAX 1023 3526c8d8eccSSepherosa Ziehau 3536c8d8eccSSepherosa Ziehau /* RX coalesce BDs */ 3548a382fe7SSepherosa Ziehau #define BNX_RX_COAL_BDS_MIN 0 355306e5498SSepherosa Ziehau #define BNX_RX_COAL_BDS_DEF 0 356306e5498SSepherosa Ziehau #define BNX_RX_COAL_BDS_INT_DEF 80 3576c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_MAX 255 3586c8d8eccSSepherosa Ziehau 3596c8d8eccSSepherosa Ziehau /* TX coalesce BDs */ 3608a382fe7SSepherosa Ziehau #define BNX_TX_COAL_BDS_MIN 0 361c9b7f592SSepherosa Ziehau #define BNX_TX_COAL_BDS_DEF 64 362c9b7f592SSepherosa Ziehau #define BNX_TX_COAL_BDS_INT_DEF 64 3636c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_MAX 255 3646c8d8eccSSepherosa Ziehau 3650bb53200SSepherosa Ziehau /* Number of segments sent before writing to TX related registers */ 3660bb53200SSepherosa Ziehau #define BNX_TX_WREG_NSEGS 8 3670bb53200SSepherosa Ziehau 368e0f74fc8SSepherosa Ziehau /* Return ring descriptor count */ 369e0f74fc8SSepherosa Ziehau #define BNX_RETURN_RING_CNT 512 370e0f74fc8SSepherosa Ziehau 3716c8d8eccSSepherosa Ziehau #endif /* !_IF_BNXVAR_H_ */ 372