1*8ff8bce6SSepherosa Ziehau /* 2*8ff8bce6SSepherosa Ziehau * Copyright (c) 2001 Wind River Systems 3*8ff8bce6SSepherosa Ziehau * Copyright (c) 1997, 1998, 1999, 2001 4*8ff8bce6SSepherosa Ziehau * Bill Paul <wpaul@windriver.com>. All rights reserved. 5*8ff8bce6SSepherosa Ziehau * 6*8ff8bce6SSepherosa Ziehau * Redistribution and use in source and binary forms, with or without 7*8ff8bce6SSepherosa Ziehau * modification, are permitted provided that the following conditions 8*8ff8bce6SSepherosa Ziehau * are met: 9*8ff8bce6SSepherosa Ziehau * 1. Redistributions of source code must retain the above copyright 10*8ff8bce6SSepherosa Ziehau * notice, this list of conditions and the following disclaimer. 11*8ff8bce6SSepherosa Ziehau * 2. Redistributions in binary form must reproduce the above copyright 12*8ff8bce6SSepherosa Ziehau * notice, this list of conditions and the following disclaimer in the 13*8ff8bce6SSepherosa Ziehau * documentation and/or other materials provided with the distribution. 14*8ff8bce6SSepherosa Ziehau * 3. All advertising materials mentioning features or use of this software 15*8ff8bce6SSepherosa Ziehau * must display the following acknowledgement: 16*8ff8bce6SSepherosa Ziehau * This product includes software developed by Bill Paul. 17*8ff8bce6SSepherosa Ziehau * 4. Neither the name of the author nor the names of any co-contributors 18*8ff8bce6SSepherosa Ziehau * may be used to endorse or promote products derived from this software 19*8ff8bce6SSepherosa Ziehau * without specific prior written permission. 20*8ff8bce6SSepherosa Ziehau * 21*8ff8bce6SSepherosa Ziehau * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 22*8ff8bce6SSepherosa Ziehau * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23*8ff8bce6SSepherosa Ziehau * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24*8ff8bce6SSepherosa Ziehau * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 25*8ff8bce6SSepherosa Ziehau * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26*8ff8bce6SSepherosa Ziehau * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27*8ff8bce6SSepherosa Ziehau * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28*8ff8bce6SSepherosa Ziehau * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29*8ff8bce6SSepherosa Ziehau * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30*8ff8bce6SSepherosa Ziehau * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 31*8ff8bce6SSepherosa Ziehau * THE POSSIBILITY OF SUCH DAMAGE. 32*8ff8bce6SSepherosa Ziehau * 33*8ff8bce6SSepherosa Ziehau * $FreeBSD: src/sys/dev/bge/if_bgereg.h,v 1.1.2.16 2004/09/23 20:11:18 ps Exp $ 34*8ff8bce6SSepherosa Ziehau * $DragonFly: src/sys/dev/netif/bge/if_bgereg.h,v 1.25 2008/10/22 14:24:24 sephe Exp $ 35*8ff8bce6SSepherosa Ziehau */ 36*8ff8bce6SSepherosa Ziehau 37*8ff8bce6SSepherosa Ziehau #ifndef _IF_BGEVAR_H_ 38*8ff8bce6SSepherosa Ziehau #define _IF_BGEVAR_H_ 39*8ff8bce6SSepherosa Ziehau 40*8ff8bce6SSepherosa Ziehau /* 41*8ff8bce6SSepherosa Ziehau * Tigon general information block. This resides in host memory 42*8ff8bce6SSepherosa Ziehau * and contains the status counters, ring control blocks and 43*8ff8bce6SSepherosa Ziehau * producer pointers. 44*8ff8bce6SSepherosa Ziehau */ 45*8ff8bce6SSepherosa Ziehau 46*8ff8bce6SSepherosa Ziehau struct bge_gib { 47*8ff8bce6SSepherosa Ziehau struct bge_stats bge_stats; 48*8ff8bce6SSepherosa Ziehau struct bge_rcb bge_tx_rcb[16]; 49*8ff8bce6SSepherosa Ziehau struct bge_rcb bge_std_rx_rcb; 50*8ff8bce6SSepherosa Ziehau struct bge_rcb bge_jumbo_rx_rcb; 51*8ff8bce6SSepherosa Ziehau struct bge_rcb bge_mini_rx_rcb; 52*8ff8bce6SSepherosa Ziehau struct bge_rcb bge_return_rcb; 53*8ff8bce6SSepherosa Ziehau }; 54*8ff8bce6SSepherosa Ziehau 55*8ff8bce6SSepherosa Ziehau #define BGE_MIN_FRAMELEN 60 56*8ff8bce6SSepherosa Ziehau #define BGE_MAX_FRAMELEN 1536 57*8ff8bce6SSepherosa Ziehau #define BGE_JUMBO_FRAMELEN 9018 58*8ff8bce6SSepherosa Ziehau #define BGE_JUMBO_MTU (BGE_JUMBO_FRAMELEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 59*8ff8bce6SSepherosa Ziehau 60*8ff8bce6SSepherosa Ziehau #define BGE_TIMEOUT 5000 61*8ff8bce6SSepherosa Ziehau #define BGE_FIRMWARE_TIMEOUT 20000 62*8ff8bce6SSepherosa Ziehau #define BGE_TXCONS_UNSET 0xFFFF /* impossible value */ 63*8ff8bce6SSepherosa Ziehau 64*8ff8bce6SSepherosa Ziehau /* 65*8ff8bce6SSepherosa Ziehau * Other utility macros. 66*8ff8bce6SSepherosa Ziehau */ 67*8ff8bce6SSepherosa Ziehau #define BGE_INC(x, y) (x) = ((x) + 1) % (y) 68*8ff8bce6SSepherosa Ziehau 69*8ff8bce6SSepherosa Ziehau /* 70*8ff8bce6SSepherosa Ziehau * Register access macros. The Tigon always uses memory mapped register 71*8ff8bce6SSepherosa Ziehau * accesses and all registers must be accessed with 32 bit operations. 72*8ff8bce6SSepherosa Ziehau */ 73*8ff8bce6SSepherosa Ziehau 74*8ff8bce6SSepherosa Ziehau #define CSR_WRITE_4(sc, reg, val) \ 75*8ff8bce6SSepherosa Ziehau bus_space_write_4(sc->bge_btag, sc->bge_bhandle, reg, val) 76*8ff8bce6SSepherosa Ziehau 77*8ff8bce6SSepherosa Ziehau #define CSR_READ_4(sc, reg) \ 78*8ff8bce6SSepherosa Ziehau bus_space_read_4(sc->bge_btag, sc->bge_bhandle, reg) 79*8ff8bce6SSepherosa Ziehau 80*8ff8bce6SSepherosa Ziehau #define BGE_SETBIT(sc, reg, x) \ 81*8ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) | x)) 82*8ff8bce6SSepherosa Ziehau 83*8ff8bce6SSepherosa Ziehau #define BGE_CLRBIT(sc, reg, x) \ 84*8ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, reg, (CSR_READ_4(sc, reg) & ~x)) 85*8ff8bce6SSepherosa Ziehau 86*8ff8bce6SSepherosa Ziehau #define BGE_MEMWIN_READ(sc, x, val) \ 87*8ff8bce6SSepherosa Ziehau do { \ 88*8ff8bce6SSepherosa Ziehau pci_write_config(sc->bge_dev, BGE_PCI_MEMWIN_BASEADDR, \ 89*8ff8bce6SSepherosa Ziehau (0xFFFF0000 & x), 4); \ 90*8ff8bce6SSepherosa Ziehau val = CSR_READ_4(sc, BGE_MEMWIN_START + (x & 0xFFFF)); \ 91*8ff8bce6SSepherosa Ziehau } while(0) 92*8ff8bce6SSepherosa Ziehau 93*8ff8bce6SSepherosa Ziehau #define BGE_MEMWIN_WRITE(sc, x, val) \ 94*8ff8bce6SSepherosa Ziehau do { \ 95*8ff8bce6SSepherosa Ziehau pci_write_config(sc->bge_dev, BGE_PCI_MEMWIN_BASEADDR, \ 96*8ff8bce6SSepherosa Ziehau (0xFFFF0000 & x), 4); \ 97*8ff8bce6SSepherosa Ziehau CSR_WRITE_4(sc, BGE_MEMWIN_START + (x & 0xFFFF), val); \ 98*8ff8bce6SSepherosa Ziehau } while(0) 99*8ff8bce6SSepherosa Ziehau 100*8ff8bce6SSepherosa Ziehau #define RCB_WRITE_4(sc, rcb, offset, val) \ 101*8ff8bce6SSepherosa Ziehau bus_space_write_4(sc->bge_btag, sc->bge_bhandle, \ 102*8ff8bce6SSepherosa Ziehau rcb + offsetof(struct bge_rcb, offset), val) 103*8ff8bce6SSepherosa Ziehau 104*8ff8bce6SSepherosa Ziehau /* 105*8ff8bce6SSepherosa Ziehau * Memory management stuff. Note: the SSLOTS, MSLOTS and JSLOTS 106*8ff8bce6SSepherosa Ziehau * values are tuneable. They control the actual amount of buffers 107*8ff8bce6SSepherosa Ziehau * allocated for the standard, mini and jumbo receive rings. 108*8ff8bce6SSepherosa Ziehau */ 109*8ff8bce6SSepherosa Ziehau 110*8ff8bce6SSepherosa Ziehau #define BGE_SSLOTS 256 111*8ff8bce6SSepherosa Ziehau #define BGE_MSLOTS 256 112*8ff8bce6SSepherosa Ziehau #define BGE_JSLOTS 384 113*8ff8bce6SSepherosa Ziehau 114*8ff8bce6SSepherosa Ziehau #define BGE_JRAWLEN (BGE_JUMBO_FRAMELEN + ETHER_ALIGN) 115*8ff8bce6SSepherosa Ziehau #define BGE_JLEN (BGE_JRAWLEN + \ 116*8ff8bce6SSepherosa Ziehau (sizeof(uint64_t) - BGE_JRAWLEN % sizeof(uint64_t))) 117*8ff8bce6SSepherosa Ziehau #define BGE_JPAGESZ PAGE_SIZE 118*8ff8bce6SSepherosa Ziehau #define BGE_RESID (BGE_JPAGESZ - (BGE_JLEN * BGE_JSLOTS) % BGE_JPAGESZ) 119*8ff8bce6SSepherosa Ziehau #define BGE_JMEM ((BGE_JLEN * BGE_JSLOTS) + BGE_RESID) 120*8ff8bce6SSepherosa Ziehau 121*8ff8bce6SSepherosa Ziehau struct bge_softc; 122*8ff8bce6SSepherosa Ziehau 123*8ff8bce6SSepherosa Ziehau struct bge_jslot { 124*8ff8bce6SSepherosa Ziehau struct bge_softc *bge_sc; 125*8ff8bce6SSepherosa Ziehau void *bge_buf; 126*8ff8bce6SSepherosa Ziehau bus_addr_t bge_paddr; 127*8ff8bce6SSepherosa Ziehau int bge_inuse; 128*8ff8bce6SSepherosa Ziehau int bge_slot; 129*8ff8bce6SSepherosa Ziehau SLIST_ENTRY(bge_jslot) jslot_link; 130*8ff8bce6SSepherosa Ziehau }; 131*8ff8bce6SSepherosa Ziehau 132*8ff8bce6SSepherosa Ziehau /* 133*8ff8bce6SSepherosa Ziehau * Ring structures. Most of these reside in host memory and we tell 134*8ff8bce6SSepherosa Ziehau * the NIC where they are via the ring control blocks. The exceptions 135*8ff8bce6SSepherosa Ziehau * are the tx and command rings, which live in NIC memory and which 136*8ff8bce6SSepherosa Ziehau * we access via the shared memory window. 137*8ff8bce6SSepherosa Ziehau */ 138*8ff8bce6SSepherosa Ziehau struct bge_ring_data { 139*8ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_std_ring; 140*8ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_std_ring_paddr; 141*8ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_jumbo_ring; 142*8ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_jumbo_ring_paddr; 143*8ff8bce6SSepherosa Ziehau struct bge_rx_bd *bge_rx_return_ring; 144*8ff8bce6SSepherosa Ziehau bus_addr_t bge_rx_return_ring_paddr; 145*8ff8bce6SSepherosa Ziehau struct bge_tx_bd *bge_tx_ring; 146*8ff8bce6SSepherosa Ziehau bus_addr_t bge_tx_ring_paddr; 147*8ff8bce6SSepherosa Ziehau struct bge_status_block *bge_status_block; 148*8ff8bce6SSepherosa Ziehau bus_addr_t bge_status_block_paddr; 149*8ff8bce6SSepherosa Ziehau struct bge_stats *bge_stats; 150*8ff8bce6SSepherosa Ziehau bus_addr_t bge_stats_paddr; 151*8ff8bce6SSepherosa Ziehau void *bge_jumbo_buf; 152*8ff8bce6SSepherosa Ziehau struct bge_gib bge_info; 153*8ff8bce6SSepherosa Ziehau }; 154*8ff8bce6SSepherosa Ziehau 155*8ff8bce6SSepherosa Ziehau struct bge_rxchain { 156*8ff8bce6SSepherosa Ziehau struct mbuf *bge_mbuf; 157*8ff8bce6SSepherosa Ziehau bus_addr_t bge_paddr; 158*8ff8bce6SSepherosa Ziehau }; 159*8ff8bce6SSepherosa Ziehau 160*8ff8bce6SSepherosa Ziehau /* 161*8ff8bce6SSepherosa Ziehau * Mbuf pointers. We need these to keep track of the virtual addresses 162*8ff8bce6SSepherosa Ziehau * of our mbuf chains since we can only convert from physical to virtual, 163*8ff8bce6SSepherosa Ziehau * not the other way around. 164*8ff8bce6SSepherosa Ziehau */ 165*8ff8bce6SSepherosa Ziehau struct bge_chain_data { 166*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_parent_tag; 167*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_std_ring_tag; 168*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_jumbo_ring_tag; 169*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_return_ring_tag; 170*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_tx_ring_tag; 171*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_status_tag; 172*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_stats_tag; 173*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_jumbo_tag; 174*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_tx_mtag; /* TX mbuf DMA tag */ 175*8ff8bce6SSepherosa Ziehau bus_dma_tag_t bge_rx_mtag; /* RX mbuf DMA tag */ 176*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_tmpmap; 177*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_tx_dmamap[BGE_TX_RING_CNT]; 178*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_std_dmamap[BGE_STD_RX_RING_CNT]; 179*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_std_ring_map; 180*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_jumbo_ring_map; 181*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_tx_ring_map; 182*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_rx_return_ring_map; 183*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_status_map; 184*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_stats_map; 185*8ff8bce6SSepherosa Ziehau bus_dmamap_t bge_jumbo_map; 186*8ff8bce6SSepherosa Ziehau struct mbuf *bge_tx_chain[BGE_TX_RING_CNT]; 187*8ff8bce6SSepherosa Ziehau struct bge_rxchain bge_rx_std_chain[BGE_STD_RX_RING_CNT]; 188*8ff8bce6SSepherosa Ziehau struct bge_rxchain bge_rx_jumbo_chain[BGE_JUMBO_RX_RING_CNT]; 189*8ff8bce6SSepherosa Ziehau /* Stick the jumbo mem management stuff here too. */ 190*8ff8bce6SSepherosa Ziehau struct bge_jslot bge_jslots[BGE_JSLOTS]; 191*8ff8bce6SSepherosa Ziehau }; 192*8ff8bce6SSepherosa Ziehau 193*8ff8bce6SSepherosa Ziehau struct bge_softc { 194*8ff8bce6SSepherosa Ziehau struct arpcom arpcom; /* interface info */ 195*8ff8bce6SSepherosa Ziehau device_t bge_dev; 196*8ff8bce6SSepherosa Ziehau device_t bge_miibus; 197*8ff8bce6SSepherosa Ziehau bus_space_handle_t bge_bhandle; 198*8ff8bce6SSepherosa Ziehau bus_space_tag_t bge_btag; 199*8ff8bce6SSepherosa Ziehau void *bge_intrhand; 200*8ff8bce6SSepherosa Ziehau struct resource *bge_irq; 201*8ff8bce6SSepherosa Ziehau struct resource *bge_res; 202*8ff8bce6SSepherosa Ziehau struct ifmedia bge_ifmedia; /* TBI media info */ 203*8ff8bce6SSepherosa Ziehau int bge_pcixcap; 204*8ff8bce6SSepherosa Ziehau int bge_pciecap; 205*8ff8bce6SSepherosa Ziehau uint32_t bge_pci_miscctl; 206*8ff8bce6SSepherosa Ziehau uint32_t bge_status_tag; 207*8ff8bce6SSepherosa Ziehau uint32_t bge_flags; /* BGE_FLAG_ */ 208*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_TBI 0x00000001 209*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_JUMBO 0x00000002 210*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_MII_SERDES 0x00000010 211*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_CPMU 0x00000020 212*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_PCIX 0x00000200 213*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_PCIE 0x00000400 214*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_5700_FAMILY 0x00001000 215*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_5705_PLUS 0x00002000 216*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_5714_FAMILY 0x00004000 217*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_575X_PLUS 0x00008000 218*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_5755_PLUS 0x00010000 219*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_MAXADDR_40BIT 0x00020000 220*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_RX_ALIGNBUG 0x00100000 221*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_NO_EEPROM 0x10000000 222*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_5788 0x20000000 223*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_SHORTDMA 0x40000000 224*8ff8bce6SSepherosa Ziehau #define BGE_FLAG_STATUS_TAG 0x80000000 225*8ff8bce6SSepherosa Ziehau 226*8ff8bce6SSepherosa Ziehau uint32_t bge_chipid; 227*8ff8bce6SSepherosa Ziehau uint32_t bge_asicrev; 228*8ff8bce6SSepherosa Ziehau uint32_t bge_chiprev; 229*8ff8bce6SSepherosa Ziehau struct bge_ring_data bge_ldata; /* rings */ 230*8ff8bce6SSepherosa Ziehau struct bge_chain_data bge_cdata; /* mbufs */ 231*8ff8bce6SSepherosa Ziehau uint16_t bge_tx_saved_considx; 232*8ff8bce6SSepherosa Ziehau uint16_t bge_rx_saved_considx; 233*8ff8bce6SSepherosa Ziehau uint16_t bge_ev_saved_considx; 234*8ff8bce6SSepherosa Ziehau uint16_t bge_return_ring_cnt; 235*8ff8bce6SSepherosa Ziehau uint16_t bge_std; /* current std ring head */ 236*8ff8bce6SSepherosa Ziehau uint16_t bge_jumbo; /* current jumo ring head */ 237*8ff8bce6SSepherosa Ziehau SLIST_HEAD(__bge_jfreehead, bge_jslot) bge_jfree_listhead; 238*8ff8bce6SSepherosa Ziehau struct lwkt_serialize bge_jslot_serializer; 239*8ff8bce6SSepherosa Ziehau uint32_t bge_stat_ticks; 240*8ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_ticks; 241*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_ticks; 242*8ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_bds; 243*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_bds; 244*8ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_ticks_int; 245*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_ticks_int; 246*8ff8bce6SSepherosa Ziehau uint32_t bge_rx_coal_bds_int; 247*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_coal_bds_int; 248*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_prodidx; 249*8ff8bce6SSepherosa Ziehau uint32_t bge_tx_buf_ratio; 250*8ff8bce6SSepherosa Ziehau uint32_t bge_mi_mode; 251*8ff8bce6SSepherosa Ziehau int bge_force_defrag; 252*8ff8bce6SSepherosa Ziehau int bge_mbox_reorder; 253*8ff8bce6SSepherosa Ziehau int bge_if_flags; 254*8ff8bce6SSepherosa Ziehau int bge_txcnt; 255*8ff8bce6SSepherosa Ziehau int bge_link; 256*8ff8bce6SSepherosa Ziehau int bge_link_evt; 257*8ff8bce6SSepherosa Ziehau struct callout bge_stat_timer; 258*8ff8bce6SSepherosa Ziehau 259*8ff8bce6SSepherosa Ziehau struct sysctl_ctx_list bge_sysctl_ctx; 260*8ff8bce6SSepherosa Ziehau struct sysctl_oid *bge_sysctl_tree; 261*8ff8bce6SSepherosa Ziehau 262*8ff8bce6SSepherosa Ziehau int bge_phyno; 263*8ff8bce6SSepherosa Ziehau uint32_t bge_coal_chg; 264*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_CHG 0x01 265*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_CHG 0x02 266*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_CHG 0x04 267*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_CHG 0x08 268*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_INT_CHG 0x10 269*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_INT_CHG 0x20 270*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_INT_CHG 0x40 271*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_INT_CHG 0x80 272*8ff8bce6SSepherosa Ziehau 273*8ff8bce6SSepherosa Ziehau void (*bge_link_upd)(struct bge_softc *, uint32_t); 274*8ff8bce6SSepherosa Ziehau uint32_t bge_link_chg; 275*8ff8bce6SSepherosa Ziehau }; 276*8ff8bce6SSepherosa Ziehau 277*8ff8bce6SSepherosa Ziehau #define BGE_NSEG_NEW 32 278*8ff8bce6SSepherosa Ziehau #define BGE_NSEG_SPARE 5 279*8ff8bce6SSepherosa Ziehau #define BGE_NSEG_RSVD 16 280*8ff8bce6SSepherosa Ziehau 281*8ff8bce6SSepherosa Ziehau /* RX coalesce ticks, unit: us */ 282*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_MIN 0 283*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_DEF 160 284*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_TICKS_MAX 1023 285*8ff8bce6SSepherosa Ziehau 286*8ff8bce6SSepherosa Ziehau /* TX coalesce ticks, unit: us */ 287*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_MIN 0 288*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_DEF 1023 289*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_TICKS_MAX 1023 290*8ff8bce6SSepherosa Ziehau 291*8ff8bce6SSepherosa Ziehau /* RX coalesce BDs */ 292*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_MIN 1 293*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_DEF 80 294*8ff8bce6SSepherosa Ziehau #define BGE_RX_COAL_BDS_MAX 255 295*8ff8bce6SSepherosa Ziehau 296*8ff8bce6SSepherosa Ziehau /* TX coalesce BDs */ 297*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_MIN 1 298*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_DEF 128 299*8ff8bce6SSepherosa Ziehau #define BGE_TX_COAL_BDS_MAX 255 300*8ff8bce6SSepherosa Ziehau 301*8ff8bce6SSepherosa Ziehau #endif /* !_IF_BGEVAR_H_ */ 302