xref: /dflybsd-src/sys/dev/netif/bnx/if_bnxvar.h (revision fa639b889fde342f8c394e411ef1dd543a5d41fd)
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 {
154beedf5beSSepherosa Ziehau 	struct bnx_softc	*bnx_sc;
155beedf5beSSepherosa Ziehau 
156beedf5beSSepherosa Ziehau 	uint16_t		bnx_rx_std;	/* current prod ring head */
157beedf5beSSepherosa Ziehau 	struct bge_rx_bd	*bnx_rx_std_ring;
158beedf5beSSepherosa Ziehau 
159beedf5beSSepherosa Ziehau 	bus_dma_tag_t		bnx_rx_mtag;	/* RX mbuf DMA tag */
160beedf5beSSepherosa Ziehau 	struct bnx_rx_buf	bnx_rx_std_buf[BGE_STD_RX_RING_CNT];
161beedf5beSSepherosa Ziehau 
162beedf5beSSepherosa Ziehau 	bus_dma_tag_t		bnx_rx_std_ring_tag;
163beedf5beSSepherosa Ziehau 	bus_dmamap_t		bnx_rx_std_ring_map;
164beedf5beSSepherosa Ziehau 	bus_addr_t		bnx_rx_std_ring_paddr;
165beedf5beSSepherosa Ziehau } __cachealign;
166beedf5beSSepherosa Ziehau 
167beedf5beSSepherosa Ziehau struct bnx_rx_ret_ring {
168beedf5beSSepherosa Ziehau 	struct bnx_softc	*bnx_sc;
169beedf5beSSepherosa Ziehau 	struct bnx_rx_std_ring	*bnx_std;
170beedf5beSSepherosa Ziehau 
171beedf5beSSepherosa Ziehau 	/* Shadow of bnx_rx_std_ring's bnx_rx_mtag */
172beedf5beSSepherosa Ziehau 	bus_dma_tag_t		bnx_rx_mtag;
173beedf5beSSepherosa Ziehau 
174beedf5beSSepherosa Ziehau 	uint16_t		bnx_rx_saved_considx;
175beedf5beSSepherosa Ziehau 	struct bge_rx_bd	*bnx_rx_ret_ring;
176beedf5beSSepherosa Ziehau 	bus_dmamap_t		bnx_rx_tmpmap;
177beedf5beSSepherosa Ziehau 
178beedf5beSSepherosa Ziehau 	bus_dma_tag_t		bnx_rx_ret_ring_tag;
179beedf5beSSepherosa Ziehau 	bus_dmamap_t		bnx_rx_ret_ring_map;
180beedf5beSSepherosa Ziehau 	bus_addr_t		bnx_rx_ret_ring_paddr;
181beedf5beSSepherosa Ziehau } __cachealign;
182beedf5beSSepherosa Ziehau 
1836c8d8eccSSepherosa Ziehau /*
1846c8d8eccSSepherosa Ziehau  * Mbuf pointers. We need these to keep track of the virtual addresses
1856c8d8eccSSepherosa Ziehau  * of our mbuf chains since we can only convert from physical to virtual,
1866c8d8eccSSepherosa Ziehau  * not the other way around.
1876c8d8eccSSepherosa Ziehau  */
1886c8d8eccSSepherosa Ziehau struct bnx_chain_data {
1896c8d8eccSSepherosa Ziehau 	bus_dma_tag_t		bnx_parent_tag;
1906c8d8eccSSepherosa Ziehau 	bus_dma_tag_t		bnx_rx_jumbo_ring_tag;
1916c8d8eccSSepherosa Ziehau 	bus_dma_tag_t		bnx_status_tag;
1926c8d8eccSSepherosa Ziehau 	bus_dma_tag_t		bnx_jumbo_tag;
1936c8d8eccSSepherosa Ziehau 	bus_dmamap_t		bnx_rx_jumbo_ring_map;
1946c8d8eccSSepherosa Ziehau 	bus_dmamap_t		bnx_status_map;
1956c8d8eccSSepherosa Ziehau 	bus_dmamap_t		bnx_jumbo_map;
196beedf5beSSepherosa Ziehau 	struct bnx_rx_buf	bnx_rx_jumbo_chain[BGE_JUMBO_RX_RING_CNT];
1976c8d8eccSSepherosa Ziehau 	/* Stick the jumbo mem management stuff here too. */
1986c8d8eccSSepherosa Ziehau 	struct bnx_jslot	bnx_jslots[BNX_JSLOTS];
1996c8d8eccSSepherosa Ziehau };
2006c8d8eccSSepherosa Ziehau 
201fa4b1067SSepherosa Ziehau struct bnx_tx_buf {
202fa4b1067SSepherosa Ziehau 	bus_dmamap_t		bnx_tx_dmamap;
203fa4b1067SSepherosa Ziehau 	struct mbuf		*bnx_tx_mbuf;
204fa4b1067SSepherosa Ziehau };
205fa4b1067SSepherosa Ziehau 
20633a04907SSepherosa Ziehau struct bnx_tx_ring {
20733a04907SSepherosa Ziehau 	struct bnx_softc	*bnx_sc;
20879a64343SSepherosa Ziehau 	uint16_t		bnx_tx_flags;
20979a64343SSepherosa Ziehau #define BNX_TX_FLAG_SHORTDMA		0x0001
210aad4de2bSSepherosa Ziehau #define BNX_TX_FLAG_FORCE_DEFRAG	0x0002
21133a04907SSepherosa Ziehau 	uint16_t		bnx_tx_saved_considx;
212*fa639b88SSepherosa Ziehau 	int			bnx_tx_cnt;
21333a04907SSepherosa Ziehau 	uint32_t		bnx_tx_prodidx;
21433a04907SSepherosa Ziehau 	int			bnx_tx_wreg;
2158bd43d5dSSepherosa Ziehau 	int			bnx_tx_mbx;
21633a04907SSepherosa Ziehau 
21733a04907SSepherosa Ziehau 	struct bge_tx_bd	*bnx_tx_ring;
21833a04907SSepherosa Ziehau 
21933a04907SSepherosa Ziehau 	bus_dma_tag_t		bnx_tx_mtag;	/* TX mbuf DMA tag */
220fa4b1067SSepherosa Ziehau 	struct bnx_tx_buf	bnx_tx_buf[BGE_TX_RING_CNT];
22133a04907SSepherosa Ziehau 
22233a04907SSepherosa Ziehau 	bus_dma_tag_t		bnx_tx_ring_tag;
22333a04907SSepherosa Ziehau 	bus_dmamap_t		bnx_tx_ring_map;
22433a04907SSepherosa Ziehau 	bus_addr_t		bnx_tx_ring_paddr;
22533a04907SSepherosa Ziehau } __cachealign;
22633a04907SSepherosa Ziehau 
2276c8d8eccSSepherosa Ziehau struct bnx_softc {
2286c8d8eccSSepherosa Ziehau 	struct arpcom		arpcom;		/* interface info */
2296c8d8eccSSepherosa Ziehau 	device_t		bnx_dev;
2306c8d8eccSSepherosa Ziehau 	device_t		bnx_miibus;
2316c8d8eccSSepherosa Ziehau 	bus_space_handle_t	bnx_bhandle;
2326c8d8eccSSepherosa Ziehau 	bus_space_tag_t		bnx_btag;
2336c8d8eccSSepherosa Ziehau 	void			*bnx_intrhand;
2346c8d8eccSSepherosa Ziehau 	struct resource		*bnx_irq;
2356c8d8eccSSepherosa Ziehau 	int			bnx_irq_type;
2366c8d8eccSSepherosa Ziehau 	int			bnx_irq_rid;
2376c8d8eccSSepherosa Ziehau 	struct resource		*bnx_res;
2386c8d8eccSSepherosa Ziehau 	struct ifmedia		bnx_ifmedia;	/* TBI media info */
2396c8d8eccSSepherosa Ziehau 	int			bnx_pciecap;
2406c8d8eccSSepherosa Ziehau 	uint32_t		bnx_status_tag;
2416c8d8eccSSepherosa Ziehau 	uint32_t		bnx_flags;	/* BNX_FLAG_ */
2426c8d8eccSSepherosa Ziehau #define BNX_FLAG_TBI		0x00000001
2436c8d8eccSSepherosa Ziehau #define BNX_FLAG_JUMBO		0x00000002
2446c8d8eccSSepherosa Ziehau #define BNX_FLAG_ONESHOT_MSI	0x00000004
2456c8d8eccSSepherosa Ziehau #define BNX_FLAG_5717_PLUS	0x00000008
2466c8d8eccSSepherosa Ziehau #define BNX_FLAG_MII_SERDES	0x00000010
2476c8d8eccSSepherosa Ziehau #define BNX_FLAG_CPMU		0x00000020
248f368d0d9SSepherosa Ziehau #define BNX_FLAG_57765_PLUS	0x00000040
249f368d0d9SSepherosa Ziehau #define BNX_FLAG_57765_FAMILY	0x00000080
250df9ccc98SSepherosa Ziehau #define BNX_FLAG_STATUSTAG_BUG	0x00000100
25166deb1c1SSepherosa Ziehau #define BNX_FLAG_TSO		0x00000200
2526c8d8eccSSepherosa Ziehau #define BNX_FLAG_NO_EEPROM	0x10000000
2536c8d8eccSSepherosa Ziehau 
2546c8d8eccSSepherosa Ziehau 	uint32_t		bnx_chipid;
2556c8d8eccSSepherosa Ziehau 	uint32_t		bnx_asicrev;
2566c8d8eccSSepherosa Ziehau 	uint32_t		bnx_chiprev;
2576c8d8eccSSepherosa Ziehau 	struct bnx_ring_data	bnx_ldata;	/* rings */
2586c8d8eccSSepherosa Ziehau 	struct bnx_chain_data	bnx_cdata;	/* mbufs */
259beedf5beSSepherosa Ziehau 
26033a04907SSepherosa Ziehau 	int			bnx_tx_ringcnt;
26133a04907SSepherosa Ziehau 	struct bnx_tx_ring	*bnx_tx_ring;
262beedf5beSSepherosa Ziehau 	int			bnx_rx_retcnt;
263beedf5beSSepherosa Ziehau 	struct bnx_rx_ret_ring	*bnx_rx_ret_ring;
264beedf5beSSepherosa Ziehau 	struct bnx_rx_std_ring	bnx_rx_std_ring;
265beedf5beSSepherosa Ziehau 
2666c8d8eccSSepherosa Ziehau 	uint16_t		bnx_jumbo;	/* current jumo ring head */
2676c8d8eccSSepherosa Ziehau 	SLIST_HEAD(__bnx_jfreehead, bnx_jslot)	bnx_jfree_listhead;
2686c8d8eccSSepherosa Ziehau 	struct lwkt_serialize	bnx_jslot_serializer;
2696c8d8eccSSepherosa Ziehau 	uint32_t		bnx_rx_coal_ticks;
2706c8d8eccSSepherosa Ziehau 	uint32_t		bnx_tx_coal_ticks;
2716c8d8eccSSepherosa Ziehau 	uint32_t		bnx_rx_coal_bds;
2726c8d8eccSSepherosa Ziehau 	uint32_t		bnx_tx_coal_bds;
2736c8d8eccSSepherosa Ziehau 	uint32_t		bnx_rx_coal_bds_int;
2746c8d8eccSSepherosa Ziehau 	uint32_t		bnx_tx_coal_bds_int;
2756c8d8eccSSepherosa Ziehau 	uint32_t		bnx_mi_mode;
2766c8d8eccSSepherosa Ziehau 	int			bnx_if_flags;
2776c8d8eccSSepherosa Ziehau 	int			bnx_link;
2786c8d8eccSSepherosa Ziehau 	int			bnx_link_evt;
2798ca0f604SSepherosa Ziehau 	int			bnx_stat_cpuid;
2806c8d8eccSSepherosa Ziehau 	struct callout		bnx_stat_timer;
281b5de76b1SSepherosa Ziehau 	struct ifpoll_compat	bnx_npoll;
2826c8d8eccSSepherosa Ziehau 
283df9ccc98SSepherosa Ziehau 	uint16_t		bnx_rx_check_considx;
284df9ccc98SSepherosa Ziehau 	uint16_t		bnx_tx_check_considx;
285df9ccc98SSepherosa Ziehau 	boolean_t		bnx_intr_maylose;
286df9ccc98SSepherosa Ziehau 	int			bnx_intr_cpuid;
287df9ccc98SSepherosa Ziehau 	struct callout		bnx_intr_timer;
288df9ccc98SSepherosa Ziehau 
2896c8d8eccSSepherosa Ziehau 	struct sysctl_ctx_list	bnx_sysctl_ctx;
2906c8d8eccSSepherosa Ziehau 	struct sysctl_oid	*bnx_sysctl_tree;
2916c8d8eccSSepherosa Ziehau 
2926c8d8eccSSepherosa Ziehau 	int			bnx_phyno;
2936c8d8eccSSepherosa Ziehau 	uint32_t		bnx_coal_chg;
2946c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_CHG		0x01
2956c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_CHG		0x02
2966c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_CHG		0x04
2976c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_CHG		0x08
2986c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_INT_CHG		0x40
2996c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_INT_CHG		0x80
3006c8d8eccSSepherosa Ziehau 
3016c8d8eccSSepherosa Ziehau 	void			(*bnx_link_upd)(struct bnx_softc *, uint32_t);
3026c8d8eccSSepherosa Ziehau 	uint32_t		bnx_link_chg;
30366deb1c1SSepherosa Ziehau 
30466deb1c1SSepherosa Ziehau #define BNX_TSO_NSTATS		45
30566deb1c1SSepherosa Ziehau 	u_long			bnx_tsosegs[BNX_TSO_NSTATS];
3066c8d8eccSSepherosa Ziehau };
3076c8d8eccSSepherosa Ziehau 
30866deb1c1SSepherosa Ziehau #define BNX_NSEG_NEW		40
309adea0b8cSSepherosa Ziehau #define BNX_NSEG_SPARE		33	/* enough for 64K TSO segment */
310adea0b8cSSepherosa Ziehau #define BNX_NSEG_RSVD		4
3116c8d8eccSSepherosa Ziehau 
3126c8d8eccSSepherosa Ziehau /* RX coalesce ticks, unit: us */
3136c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_MIN	0
3146c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_DEF	160
3156c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_TICKS_MAX	1023
3166c8d8eccSSepherosa Ziehau 
3176c8d8eccSSepherosa Ziehau /* TX coalesce ticks, unit: us */
3186c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_MIN	0
3196c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_DEF	1023
3206c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_TICKS_MAX	1023
3216c8d8eccSSepherosa Ziehau 
3226c8d8eccSSepherosa Ziehau /* RX coalesce BDs */
3238a382fe7SSepherosa Ziehau #define BNX_RX_COAL_BDS_MIN	0
324306e5498SSepherosa Ziehau #define BNX_RX_COAL_BDS_DEF	0
325306e5498SSepherosa Ziehau #define BNX_RX_COAL_BDS_INT_DEF	80
3266c8d8eccSSepherosa Ziehau #define BNX_RX_COAL_BDS_MAX	255
3276c8d8eccSSepherosa Ziehau 
3286c8d8eccSSepherosa Ziehau /* TX coalesce BDs */
3298a382fe7SSepherosa Ziehau #define BNX_TX_COAL_BDS_MIN	0
330c9b7f592SSepherosa Ziehau #define BNX_TX_COAL_BDS_DEF	64
331c9b7f592SSepherosa Ziehau #define BNX_TX_COAL_BDS_INT_DEF	64
3326c8d8eccSSepherosa Ziehau #define BNX_TX_COAL_BDS_MAX	255
3336c8d8eccSSepherosa Ziehau 
3340bb53200SSepherosa Ziehau /* Number of segments sent before writing to TX related registers */
3350bb53200SSepherosa Ziehau #define BNX_TX_WREG_NSEGS	8
3360bb53200SSepherosa Ziehau 
337e0f74fc8SSepherosa Ziehau /* Return ring descriptor count */
338e0f74fc8SSepherosa Ziehau #define BNX_RETURN_RING_CNT	512
339e0f74fc8SSepherosa Ziehau 
3406c8d8eccSSepherosa Ziehau #endif	/* !_IF_BNXVAR_H_ */
341