18ff8bce6SSepherosa Ziehau /* 28ff8bce6SSepherosa Ziehau * Copyright (c) 2001 Wind River Systems 38ff8bce6SSepherosa Ziehau * Copyright (c) 1997, 1998, 1999, 2001 48ff8bce6SSepherosa Ziehau * Bill Paul <wpaul@windriver.com>. All rights reserved. 58ff8bce6SSepherosa Ziehau * 68ff8bce6SSepherosa Ziehau * Redistribution and use in source and binary forms, with or without 78ff8bce6SSepherosa Ziehau * modification, are permitted provided that the following conditions 88ff8bce6SSepherosa Ziehau * are met: 98ff8bce6SSepherosa Ziehau * 1. Redistributions of source code must retain the above copyright 108ff8bce6SSepherosa Ziehau * notice, this list of conditions and the following disclaimer. 118ff8bce6SSepherosa Ziehau * 2. Redistributions in binary form must reproduce the above copyright 128ff8bce6SSepherosa Ziehau * notice, this list of conditions and the following disclaimer in the 138ff8bce6SSepherosa Ziehau * documentation and/or other materials provided with the distribution. 148ff8bce6SSepherosa Ziehau * 3. All advertising materials mentioning features or use of this software 158ff8bce6SSepherosa Ziehau * must display the following acknowledgement: 168ff8bce6SSepherosa Ziehau * This product includes software developed by Bill Paul. 178ff8bce6SSepherosa Ziehau * 4. Neither the name of the author nor the names of any co-contributors 188ff8bce6SSepherosa Ziehau * may be used to endorse or promote products derived from this software 198ff8bce6SSepherosa Ziehau * without specific prior written permission. 208ff8bce6SSepherosa Ziehau * 218ff8bce6SSepherosa Ziehau * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 228ff8bce6SSepherosa Ziehau * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 238ff8bce6SSepherosa Ziehau * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 248ff8bce6SSepherosa Ziehau * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 258ff8bce6SSepherosa Ziehau * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 268ff8bce6SSepherosa Ziehau * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 278ff8bce6SSepherosa Ziehau * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 288ff8bce6SSepherosa Ziehau * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 298ff8bce6SSepherosa Ziehau * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 308ff8bce6SSepherosa Ziehau * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 318ff8bce6SSepherosa Ziehau * THE POSSIBILITY OF SUCH DAMAGE. 328ff8bce6SSepherosa Ziehau * 338ff8bce6SSepherosa Ziehau * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.1.2.16 2004/09/23 20:11:18 ps Exp $ 348ff8bce6SSepherosa Ziehau */ 358ff8bce6SSepherosa Ziehau 368ff8bce6SSepherosa Ziehau #ifndef _IF_BGEVAR_H_ 378ff8bce6SSepherosa Ziehau #define _IF_BGEVAR_H_ 388ff8bce6SSepherosa Ziehau 398ff8bce6SSepherosa Ziehau /* 408ff8bce6SSepherosa Ziehau * Tigon general information block. This resides in host memory 418ff8bce6SSepherosa Ziehau * and contains the status counters, ring control blocks and 428ff8bce6SSepherosa Ziehau * producer pointers. 438ff8bce6SSepherosa Ziehau */ 448ff8bce6SSepherosa Ziehau 458ff8bce6SSepherosa Ziehau struct bge_gib { 468ff8bce6SSepherosa Ziehau struct bge_stats bge_stats; 478ff8bce6SSepherosa Ziehau struct bge_rcb bge_tx_rcb[16]; 488ff8bce6SSepherosa Ziehau struct bge_rcb bge_std_rx_rcb; 498ff8bce6SSepherosa Ziehau struct bge_rcb bge_jumbo_rx_rcb; 508ff8bce6SSepherosa Ziehau struct bge_rcb bge_mini_rx_rcb; 518ff8bce6SSepherosa Ziehau struct bge_rcb bge_return_rcb; 528ff8bce6SSepherosa Ziehau }; 538ff8bce6SSepherosa Ziehau 548ff8bce6SSepherosa Ziehau #define BGE_MIN_FRAMELEN 60 558ff8bce6SSepherosa Ziehau #define BGE_MAX_FRAMELEN 1536 568ff8bce6SSepherosa Ziehau #define BGE_JUMBO_FRAMELEN 9018 578ff8bce6SSepherosa Ziehau #define BGE_JUMBO_MTU (BGE_JUMBO_FRAMELEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 588ff8bce6SSepherosa Ziehau 598ff8bce6SSepherosa Ziehau #define BGE_TIMEOUT 5000 601dfb1558SSepherosa Ziehau #define BGE_FIRMWARE_TIMEOUT 100000 618ff8bce6SSepherosa Ziehau #define BGE_TXCONS_UNSET 0xFFFF /* impossible value */ 628ff8bce6SSepherosa Ziehau 638ff8bce6SSepherosa Ziehau /* 648ff8bce6SSepherosa Ziehau * Other utility macros. 658ff8bce6SSepherosa Ziehau */ 668ff8bce6SSepherosa Ziehau #define BGE_INC(x, y) (x) = ((x) + 1) % (y) 678ff8bce6SSepherosa Ziehau 688ff8bce6SSepherosa Ziehau /* 69*ea320e53SSepherosa Ziehau * BAR0 MAC register access macros. The Tigon always uses memory mapped 70*ea320e53SSepherosa Ziehau * register accesses and all registers must be accessed with 32 bit 71*ea320e53SSepherosa Ziehau * operations. 728ff8bce6SSepherosa Ziehau */ 738ff8bce6SSepherosa Ziehau 748ff8bce6SSepherosa Ziehau #define CSR_WRITE_4(sc, reg, val) \ 758ff8bce6SSepherosa Ziehau bus_space_write_4(sc->bge_btag, sc->bge_bhandle, reg, val) 768ff8bce6SSepherosa Ziehau 778ff8bce6SSepherosa Ziehau #define CSR_READ_4(sc, reg) \ 788ff8bce6SSepherosa Ziehau bus_space_read_4(sc->bge_btag, sc->bge_bhandle, reg) 798ff8bce6SSepherosa Ziehau 808ff8bce6SSepherosa Ziehau #define BGE_SETBIT(sc, reg, x) \ 818ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) | x)) 828ff8bce6SSepherosa Ziehau 838ff8bce6SSepherosa Ziehau #define BGE_CLRBIT(sc, reg, x) \ 848ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) & ~x)) 858ff8bce6SSepherosa Ziehau 86*ea320e53SSepherosa Ziehau /* BAR2 APE register access macros. */ 87*ea320e53SSepherosa Ziehau #define APE_WRITE_4(sc, reg, val) \ 88*ea320e53SSepherosa Ziehau bus_write_4(sc->bge_res2, reg, val) 89*ea320e53SSepherosa Ziehau 90*ea320e53SSepherosa Ziehau #define APE_READ_4(sc, reg) \ 91*ea320e53SSepherosa Ziehau bus_read_4(sc->bge_res2, reg) 92*ea320e53SSepherosa Ziehau 93*ea320e53SSepherosa Ziehau #define APE_SETBIT(sc, reg, x) \ 94*ea320e53SSepherosa Ziehau APE_WRITE_4(sc, reg, (APE_READ_4(sc, reg) | (x))) 95*ea320e53SSepherosa Ziehau #define APE_CLRBIT(sc, reg, x) \ 96*ea320e53SSepherosa Ziehau APE_WRITE_4(sc, reg, (APE_READ_4(sc, reg) & ~(x))) 97*ea320e53SSepherosa Ziehau 988ff8bce6SSepherosa Ziehau #define BGE_MEMWIN_READ(sc, x, val) \ 998ff8bce6SSepherosa Ziehau do { \ 1008ff8bce6SSepherosa Ziehau pci_write_config(sc->bge_dev, BGE_PCI_MEMWIN_BASEADDR, \ 1018ff8bce6SSepherosa Ziehau (0xFFFF0000 & x), 4); \ 1028ff8bce6SSepherosa Ziehau val = CSR_READ_4(sc, BGE_MEMWIN_START + (x & 0xFFFF)); \ 1038ff8bce6SSepherosa Ziehau } while(0) 1048ff8bce6SSepherosa Ziehau 1058ff8bce6SSepherosa Ziehau #define BGE_MEMWIN_WRITE(sc, x, val) \ 1068ff8bce6SSepherosa Ziehau do { \ 1078ff8bce6SSepherosa Ziehau pci_write_config(sc->bge_dev, BGE_PCI_MEMWIN_BASEADDR, \ 1088ff8bce6SSepherosa Ziehau (0xFFFF0000 & x), 4); \ 1098ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, BGE_MEMWIN_START + (x & 0xFFFF), val); \ 1108ff8bce6SSepherosa Ziehau } while(0) 1118ff8bce6SSepherosa Ziehau 1128ff8bce6SSepherosa Ziehau #define RCB_WRITE_4(sc, rcb, offset, val) \ 1138ff8bce6SSepherosa Ziehau bus_space_write_4(sc->bge_btag, sc->bge_bhandle, \ 1148ff8bce6SSepherosa Ziehau rcb + offsetof(struct bge_rcb, offset), val) 1158ff8bce6SSepherosa Ziehau 1168ff8bce6SSepherosa Ziehau /* 1178ff8bce6SSepherosa Ziehau * Memory management stuff. Note: the SSLOTS, MSLOTS and JSLOTS 1188ff8bce6SSepherosa Ziehau * values are tuneable. They control the actual amount of buffers 1198ff8bce6SSepherosa Ziehau * allocated for the standard, mini and jumbo receive rings. 1208ff8bce6SSepherosa Ziehau */ 1218ff8bce6SSepherosa Ziehau 1228ff8bce6SSepherosa Ziehau #define BGE_SSLOTS 256 1238ff8bce6SSepherosa Ziehau #define BGE_MSLOTS 256 1248ff8bce6SSepherosa Ziehau #define BGE_JSLOTS 384 1258ff8bce6SSepherosa Ziehau 1268ff8bce6SSepherosa Ziehau #define BGE_JRAWLEN (BGE_JUMBO_FRAMELEN + ETHER_ALIGN) 1278ff8bce6SSepherosa Ziehau #define BGE_JLEN (BGE_JRAWLEN + \ 1288ff8bce6SSepherosa Ziehau (sizeof(uint64_t) - BGE_JRAWLEN % sizeof(uint64_t))) 1298ff8bce6SSepherosa Ziehau #define BGE_JPAGESZ PAGE_SIZE 1308ff8bce6SSepherosa Ziehau #define BGE_RESID (BGE_JPAGESZ - (BGE_JLEN * BGE_JSLOTS) % BGE_JPAGESZ) 1318ff8bce6SSepherosa Ziehau #define BGE_JMEM ((BGE_JLEN * BGE_JSLOTS) + BGE_RESID) 1328ff8bce6SSepherosa Ziehau 1338ff8bce6SSepherosa Ziehau struct bge_softc; 1348ff8bce6SSepherosa Ziehau 1358ff8bce6SSepherosa Ziehau struct bge_jslot { 1368ff8bce6SSepherosa Ziehau struct bge_softc *bge_sc; 1378ff8bce6SSepherosa Ziehau void *bge_buf; 1388ff8bce6SSepherosa Ziehau bus_addr_t bge_paddr; 1398ff8bce6SSepherosa Ziehau int bge_inuse; 1408ff8bce6SSepherosa Ziehau int bge_slot; 1418ff8bce6SSepherosa Ziehau SLIST_ENTRY(bge_jslot) jslot_link; 1428ff8bce6SSepherosa Ziehau }; 1438ff8bce6SSepherosa Ziehau 1448ff8bce6SSepherosa Ziehau /* 1458ff8bce6SSepherosa Ziehau * Ring structures. Most of these reside in host memory and we tell 1468ff8bce6SSepherosa Ziehau * the NIC where they are via the ring control blocks. The exceptions 1478ff8bce6SSepherosa Ziehau * are the tx and command rings, which live in NIC memory and which 1488ff8bce6SSepherosa Ziehau * we access via the shared memory window. 1498ff8bce6SSepherosa Ziehau */ 1508ff8bce6SSepherosa Ziehau struct bge_ring_data { 1518ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_std_ring; 1528ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_std_ring_paddr; 1538ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_jumbo_ring; 1548ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_jumbo_ring_paddr; 1558ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_return_ring; 1568ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_return_ring_paddr; 1578ff8bce6SSepherosa Ziehau struct bge_tx_bd *bge_tx_ring; 1588ff8bce6SSepherosa Ziehau bus_addr_t bge_tx_ring_paddr; 1598ff8bce6SSepherosa Ziehau struct bge_status_block *bge_status_block; 1608ff8bce6SSepherosa Ziehau bus_addr_t bge_status_block_paddr; 1618ff8bce6SSepherosa Ziehau struct bge_stats *bge_stats; 1628ff8bce6SSepherosa Ziehau bus_addr_t bge_stats_paddr; 1638ff8bce6SSepherosa Ziehau void *bge_jumbo_buf; 1648ff8bce6SSepherosa Ziehau struct bge_gib bge_info; 1658ff8bce6SSepherosa Ziehau }; 1668ff8bce6SSepherosa Ziehau 1678ff8bce6SSepherosa Ziehau struct bge_rxchain { 1688ff8bce6SSepherosa Ziehau struct mbuf *bge_mbuf; 1698ff8bce6SSepherosa Ziehau bus_addr_t bge_paddr; 1708ff8bce6SSepherosa Ziehau }; 1718ff8bce6SSepherosa Ziehau 1728ff8bce6SSepherosa Ziehau /* 1738ff8bce6SSepherosa Ziehau * Mbuf pointers. We need these to keep track of the virtual addresses 1748ff8bce6SSepherosa Ziehau * of our mbuf chains since we can only convert from physical to virtual, 1758ff8bce6SSepherosa Ziehau * not the other way around. 1768ff8bce6SSepherosa Ziehau */ 1778ff8bce6SSepherosa Ziehau struct bge_chain_data { 1788ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_parent_tag; 1798ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_std_ring_tag; 1808ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_jumbo_ring_tag; 1818ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_return_ring_tag; 1828ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_tx_ring_tag; 1838ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_status_tag; 1848ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_stats_tag; 1858ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_jumbo_tag; 1868ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_tx_mtag; /* TX mbuf DMA tag */ 1878ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_mtag; /* RX mbuf DMA tag */ 1888ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_tmpmap; 1898ff8bce6SSepherosa Ziehau bus_dmamap_t bge_tx_dmamap[BGE_TX_RING_CNT]; 1908ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_std_dmamap[BGE_STD_RX_RING_CNT]; 1918ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_std_ring_map; 1928ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_jumbo_ring_map; 1938ff8bce6SSepherosa Ziehau bus_dmamap_t bge_tx_ring_map; 1948ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_return_ring_map; 1958ff8bce6SSepherosa Ziehau bus_dmamap_t bge_status_map; 1968ff8bce6SSepherosa Ziehau bus_dmamap_t bge_stats_map; 1978ff8bce6SSepherosa Ziehau bus_dmamap_t bge_jumbo_map; 1988ff8bce6SSepherosa Ziehau struct mbuf *bge_tx_chain[BGE_TX_RING_CNT]; 1998ff8bce6SSepherosa Ziehau struct bge_rxchain bge_rx_std_chain[BGE_STD_RX_RING_CNT]; 2008ff8bce6SSepherosa Ziehau struct bge_rxchain bge_rx_jumbo_chain[BGE_JUMBO_RX_RING_CNT]; 2018ff8bce6SSepherosa Ziehau /* Stick the jumbo mem management stuff here too. */ 2028ff8bce6SSepherosa Ziehau struct bge_jslot bge_jslots[BGE_JSLOTS]; 2038ff8bce6SSepherosa Ziehau }; 2048ff8bce6SSepherosa Ziehau 2058ff8bce6SSepherosa Ziehau struct bge_softc { 2068ff8bce6SSepherosa Ziehau struct arpcom arpcom; /* interface info */ 2078ff8bce6SSepherosa Ziehau device_t bge_dev; 2088ff8bce6SSepherosa Ziehau device_t bge_miibus; 2098ff8bce6SSepherosa Ziehau bus_space_handle_t bge_bhandle; 2108ff8bce6SSepherosa Ziehau bus_space_tag_t bge_btag; 2118ff8bce6SSepherosa Ziehau void *bge_intrhand; 2128ff8bce6SSepherosa Ziehau struct resource *bge_irq; 213308dcd8eSSepherosa Ziehau int bge_irq_type; 214308dcd8eSSepherosa Ziehau int bge_irq_rid; 215*ea320e53SSepherosa Ziehau struct resource *bge_res; /* MAC mapped I/O */ 216*ea320e53SSepherosa Ziehau struct resource *bge_res2; /* APE mapped I/O */ 2178ff8bce6SSepherosa Ziehau struct ifmedia bge_ifmedia; /* TBI media info */ 2188ff8bce6SSepherosa Ziehau int bge_pcixcap; 2198ff8bce6SSepherosa Ziehau int bge_pciecap; 220308dcd8eSSepherosa Ziehau int bge_msicap; 2218ff8bce6SSepherosa Ziehau uint32_t bge_pci_miscctl; 2228ff8bce6SSepherosa Ziehau uint32_t bge_status_tag; 2238ff8bce6SSepherosa Ziehau uint32_t bge_flags; /* BGE_FLAG_ */ 2248ff8bce6SSepherosa Ziehau #define BGE_FLAG_TBI 0x00000001 2258ff8bce6SSepherosa Ziehau #define BGE_FLAG_JUMBO 0x00000002 226308dcd8eSSepherosa Ziehau #define BGE_FLAG_ONESHOT_MSI 0x00000004 227e92f005cSSepherosa Ziehau #define BGE_FLAG_TSO 0x00000008 2288ff8bce6SSepherosa Ziehau #define BGE_FLAG_MII_SERDES 0x00000010 2298ff8bce6SSepherosa Ziehau #define BGE_FLAG_CPMU 0x00000020 23057b62224SSepherosa Ziehau #define BGE_FLAG_APE 0x00000040 2318ff8bce6SSepherosa Ziehau #define BGE_FLAG_PCIX 0x00000200 2328ff8bce6SSepherosa Ziehau #define BGE_FLAG_PCIE 0x00000400 2338ff8bce6SSepherosa Ziehau #define BGE_FLAG_5700_FAMILY 0x00001000 2348ff8bce6SSepherosa Ziehau #define BGE_FLAG_5705_PLUS 0x00002000 2358ff8bce6SSepherosa Ziehau #define BGE_FLAG_5714_FAMILY 0x00004000 2368ff8bce6SSepherosa Ziehau #define BGE_FLAG_575X_PLUS 0x00008000 2378ff8bce6SSepherosa Ziehau #define BGE_FLAG_5755_PLUS 0x00010000 2388ff8bce6SSepherosa Ziehau #define BGE_FLAG_MAXADDR_40BIT 0x00020000 2398ff8bce6SSepherosa Ziehau #define BGE_FLAG_RX_ALIGNBUG 0x00100000 2408ff8bce6SSepherosa Ziehau #define BGE_FLAG_NO_EEPROM 0x10000000 2418ff8bce6SSepherosa Ziehau #define BGE_FLAG_5788 0x20000000 2428ff8bce6SSepherosa Ziehau #define BGE_FLAG_SHORTDMA 0x40000000 2438ff8bce6SSepherosa Ziehau #define BGE_FLAG_STATUS_TAG 0x80000000 2448ff8bce6SSepherosa Ziehau 245*ea320e53SSepherosa Ziehau uint32_t bge_mfw_flags; /* Management F/W flags */ 246*ea320e53SSepherosa Ziehau #define BGE_MFW_ON_RXCPU 0x00000001 247*ea320e53SSepherosa Ziehau #define BGE_MFW_ON_APE 0x00000002 248*ea320e53SSepherosa Ziehau #define BGE_MFW_TYPE_NCSI 0x00000004 249*ea320e53SSepherosa Ziehau #define BGE_MFW_TYPE_DASH 0x00000008 250*ea320e53SSepherosa Ziehau int bge_phy_ape_lock; 251*ea320e53SSepherosa Ziehau int bge_func_addr; 252*ea320e53SSepherosa Ziehau 2538ff8bce6SSepherosa Ziehau uint32_t bge_chipid; 25457b62224SSepherosa Ziehau uint8_t bge_asf_mode; 25557b62224SSepherosa Ziehau #define ASF_ENABLE 0x01 25657b62224SSepherosa Ziehau #define ASF_NEW_HANDSHAKE 0x02 25757b62224SSepherosa Ziehau #define ASF_STACKUP 0x04 25857b62224SSepherosa Ziehau uint8_t bge_asf_count; 2598ff8bce6SSepherosa Ziehau uint32_t bge_asicrev; 2608ff8bce6SSepherosa Ziehau uint32_t bge_chiprev; 2617e1b2526SSepherosa Ziehau struct ifpoll_compat bge_npoll; /* polling */ 2628ff8bce6SSepherosa Ziehau struct bge_ring_data bge_ldata; /* rings */ 2638ff8bce6SSepherosa Ziehau struct bge_chain_data bge_cdata; /* mbufs */ 2648ff8bce6SSepherosa Ziehau uint16_t bge_tx_saved_considx; 2658ff8bce6SSepherosa Ziehau uint16_t bge_rx_saved_considx; 2668ff8bce6SSepherosa Ziehau uint16_t bge_ev_saved_considx; 2678ff8bce6SSepherosa Ziehau uint16_t bge_return_ring_cnt; 2688ff8bce6SSepherosa Ziehau uint16_t bge_std; /* current std ring head */ 2698ff8bce6SSepherosa Ziehau uint16_t bge_jumbo; /* current jumo ring head */ 2708ff8bce6SSepherosa Ziehau SLIST_HEAD(__bge_jfreehead, bge_jslot) bge_jfree_listhead; 2718ff8bce6SSepherosa Ziehau struct lwkt_serialize bge_jslot_serializer; 2728ff8bce6SSepherosa Ziehau uint32_t bge_stat_ticks; 2738ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_ticks; 2748ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_ticks; 2758ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_bds; 2768ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_bds; 2778ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_ticks_int; 2788ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_ticks_int; 2798ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_bds_int; 2808ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_bds_int; 2818ff8bce6SSepherosa Ziehau uint32_t bge_tx_prodidx; 282aad8b3feSSepherosa Ziehau int bge_tx_wreg; 2834849f4a3SSepherosa Ziehau int bge_rx_wreg; 2848ff8bce6SSepherosa Ziehau uint32_t bge_tx_buf_ratio; 2858ff8bce6SSepherosa Ziehau uint32_t bge_mi_mode; 2868ff8bce6SSepherosa Ziehau int bge_force_defrag; 2878ff8bce6SSepherosa Ziehau int bge_mbox_reorder; 2888ff8bce6SSepherosa Ziehau int bge_if_flags; 2898ff8bce6SSepherosa Ziehau int bge_txcnt; 290e92f005cSSepherosa Ziehau int bge_txspare; 291e92f005cSSepherosa Ziehau int bge_txrsvd; 2928ff8bce6SSepherosa Ziehau int bge_link; 2938ff8bce6SSepherosa Ziehau int bge_link_evt; 2948ff8bce6SSepherosa Ziehau struct callout bge_stat_timer; 2958ff8bce6SSepherosa Ziehau 2968ff8bce6SSepherosa Ziehau int bge_phyno; 2978ff8bce6SSepherosa Ziehau uint32_t bge_coal_chg; 2988ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_CHG 0x01 2998ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_CHG 0x02 3008ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_CHG 0x04 3018ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_CHG 0x08 3028ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_INT_CHG 0x10 3038ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_INT_CHG 0x20 3048ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_INT_CHG 0x40 3058ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_INT_CHG 0x80 3068ff8bce6SSepherosa Ziehau 3078ff8bce6SSepherosa Ziehau void (*bge_link_upd)(struct bge_softc *, uint32_t); 3088ff8bce6SSepherosa Ziehau uint32_t bge_link_chg; 3098ff8bce6SSepherosa Ziehau }; 3108ff8bce6SSepherosa Ziehau 311e92f005cSSepherosa Ziehau #define BGE_NSEG_NEW 40 3128ff8bce6SSepherosa Ziehau #define BGE_NSEG_SPARE 5 313e92f005cSSepherosa Ziehau #define BGE_NSEG_SPARE_TSO 33 3148ff8bce6SSepherosa Ziehau #define BGE_NSEG_RSVD 16 315e92f005cSSepherosa Ziehau #define BGE_NSEG_RSVD_TSO 4 3168ff8bce6SSepherosa Ziehau 3178ff8bce6SSepherosa Ziehau /* RX coalesce ticks, unit: us */ 3188ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_MIN 0 3198ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_DEF 160 3208ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_MAX 1023 3218ff8bce6SSepherosa Ziehau 3228ff8bce6SSepherosa Ziehau /* TX coalesce ticks, unit: us */ 3238ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_MIN 0 3248ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_DEF 1023 3258ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_MAX 1023 3268ff8bce6SSepherosa Ziehau 3278ff8bce6SSepherosa Ziehau /* RX coalesce BDs */ 32846a9b369SSepherosa Ziehau #define BGE_RX_COAL_BDS_MIN 0 3298ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_DEF 80 3308ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_MAX 255 3318ff8bce6SSepherosa Ziehau 3328ff8bce6SSepherosa Ziehau /* TX coalesce BDs */ 33346a9b369SSepherosa Ziehau #define BGE_TX_COAL_BDS_MIN 0 3348ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_DEF 128 3358ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_MAX 255 3368ff8bce6SSepherosa Ziehau 33748929615SSepherosa Ziehau /* Number of segments sent before writing to TX related registers */ 33848929615SSepherosa Ziehau #define BGE_TX_WREG_NSEGS 16 33948929615SSepherosa Ziehau 3408ff8bce6SSepherosa Ziehau #endif /* !_IF_BGEVAR_H_ */ 341