xref: /dflybsd-src/sys/dev/netif/jme/if_jmevar.h (revision 7b0400926d0f4475a0a1ffb2e8bc51290561f585)
176fbb0b9SSepherosa Ziehau /*-
276fbb0b9SSepherosa Ziehau  * Copyright (c) 2008, Pyun YongHyeon <yongari@FreeBSD.org>
376fbb0b9SSepherosa Ziehau  * All rights reserved.
476fbb0b9SSepherosa Ziehau  *
576fbb0b9SSepherosa Ziehau  * Redistribution and use in source and binary forms, with or without
676fbb0b9SSepherosa Ziehau  * modification, are permitted provided that the following conditions
776fbb0b9SSepherosa Ziehau  * are met:
876fbb0b9SSepherosa Ziehau  * 1. Redistributions of source code must retain the above copyright
976fbb0b9SSepherosa Ziehau  *    notice unmodified, this list of conditions, and the following
1076fbb0b9SSepherosa Ziehau  *    disclaimer.
1176fbb0b9SSepherosa Ziehau  * 2. Redistributions in binary form must reproduce the above copyright
1276fbb0b9SSepherosa Ziehau  *    notice, this list of conditions and the following disclaimer in the
1376fbb0b9SSepherosa Ziehau  *    documentation and/or other materials provided with the distribution.
1476fbb0b9SSepherosa Ziehau  *
1576fbb0b9SSepherosa Ziehau  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1676fbb0b9SSepherosa Ziehau  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1776fbb0b9SSepherosa Ziehau  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1876fbb0b9SSepherosa Ziehau  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1976fbb0b9SSepherosa Ziehau  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2076fbb0b9SSepherosa Ziehau  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2176fbb0b9SSepherosa Ziehau  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2276fbb0b9SSepherosa Ziehau  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2376fbb0b9SSepherosa Ziehau  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2476fbb0b9SSepherosa Ziehau  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2576fbb0b9SSepherosa Ziehau  * SUCH DAMAGE.
2676fbb0b9SSepherosa Ziehau  *
2776fbb0b9SSepherosa Ziehau  * $FreeBSD: src/sys/dev/jme/if_jmevar.h,v 1.1 2008/05/27 01:42:01 yongari Exp $
28b249905bSSepherosa Ziehau  * $DragonFly: src/sys/dev/netif/jme/if_jmevar.h,v 1.8 2008/11/26 11:55:18 sephe Exp $
2976fbb0b9SSepherosa Ziehau  */
3076fbb0b9SSepherosa Ziehau 
3176fbb0b9SSepherosa Ziehau #ifndef	_IF_JMEVAR_H
3276fbb0b9SSepherosa Ziehau #define	_IF_JMEVAR_H
3376fbb0b9SSepherosa Ziehau 
3476fbb0b9SSepherosa Ziehau #include <sys/queue.h>
3576fbb0b9SSepherosa Ziehau #include <sys/callout.h>
3676fbb0b9SSepherosa Ziehau #include <sys/taskqueue.h>
3776fbb0b9SSepherosa Ziehau 
3876fbb0b9SSepherosa Ziehau /*
397405bec3SSepherosa Ziehau  * JMC250 supports upto JME_NDESC_MAX descriptors and the number of
4083b03786SSepherosa Ziehau  * descriptors should be multiple of JME_NDESC_ALIGN.
4176fbb0b9SSepherosa Ziehau  */
4269325526SSepherosa Ziehau #define	JME_TX_DESC_CNT_DEF	384
4369325526SSepherosa Ziehau #define	JME_RX_DESC_CNT_DEF	256
4469325526SSepherosa Ziehau 
4583b03786SSepherosa Ziehau #define JME_NDESC_ALIGN		16
4669325526SSepherosa Ziehau #define JME_NDESC_MAX		1024
4783b03786SSepherosa Ziehau 
48760c056cSSepherosa Ziehau #define JME_NRXRING_1		1
49760c056cSSepherosa Ziehau #define JME_NRXRING_2		2
50760c056cSSepherosa Ziehau #define JME_NRXRING_4		4
51760c056cSSepherosa Ziehau 
52760c056cSSepherosa Ziehau #define JME_NRXRING_MIN		JME_NRXRING_1
53760c056cSSepherosa Ziehau #define JME_NRXRING_MAX		JME_NRXRING_4
544447c752SSepherosa Ziehau 
5531f0d5a2SSepherosa Ziehau #define JME_NSERIALIZE		(JME_NRXRING_MAX + 2)
5631f0d5a2SSepherosa Ziehau 
5758880b0dSSepherosa Ziehau #define JME_NMSIX		(JME_NRXRING_MAX + 1)
5858880b0dSSepherosa Ziehau 
5976fbb0b9SSepherosa Ziehau /*
6076fbb0b9SSepherosa Ziehau  * Tx/Rx descriptor queue base should be 16bytes aligned and
6176fbb0b9SSepherosa Ziehau  * should not cross 4G bytes boundary on the 64bits address
6276fbb0b9SSepherosa Ziehau  * mode.
6376fbb0b9SSepherosa Ziehau  */
6476fbb0b9SSepherosa Ziehau #define	JME_TX_RING_ALIGN	16
6576fbb0b9SSepherosa Ziehau #define	JME_RX_RING_ALIGN	16
669d424ceeSSepherosa Ziehau #define	JME_MAXSEGSIZE		4096
6776fbb0b9SSepherosa Ziehau #define	JME_TSO_MAXSIZE		(65535 + sizeof(struct ether_vlan_header))
6876fbb0b9SSepherosa Ziehau #define	JME_MAXTXSEGS		32
6976fbb0b9SSepherosa Ziehau #define	JME_RX_BUF_ALIGN	sizeof(uint64_t)
7076fbb0b9SSepherosa Ziehau #define	JME_SSB_ALIGN		16
7176fbb0b9SSepherosa Ziehau 
72a7547dadSSepherosa Ziehau #if (BUS_SPACE_MAXADDR != BUS_SPACE_MAXADDR_32BIT)
73a7547dadSSepherosa Ziehau #define JME_RING_BOUNDARY	0x100000000ULL
74a7547dadSSepherosa Ziehau #else
75a7547dadSSepherosa Ziehau #define JME_RING_BOUNDARY	0
76a7547dadSSepherosa Ziehau #endif
77a7547dadSSepherosa Ziehau 
7876fbb0b9SSepherosa Ziehau #define	JME_ADDR_LO(x)		((uint64_t) (x) & 0xFFFFFFFF)
7976fbb0b9SSepherosa Ziehau #define	JME_ADDR_HI(x)		((uint64_t) (x) >> 32)
8076fbb0b9SSepherosa Ziehau 
8176fbb0b9SSepherosa Ziehau #define	JME_MSI_MESSAGES	8
8276fbb0b9SSepherosa Ziehau #define	JME_MSIX_MESSAGES	8
8376fbb0b9SSepherosa Ziehau 
8476fbb0b9SSepherosa Ziehau /* Water mark to kick reclaiming Tx buffers. */
8583b03786SSepherosa Ziehau #define	JME_TX_DESC_HIWAT(sc)	\
8669325526SSepherosa Ziehau 	((sc)->jme_tx_desc_cnt - (((sc)->jme_tx_desc_cnt * 3) / 10))
8776fbb0b9SSepherosa Ziehau 
8876fbb0b9SSepherosa Ziehau /*
8976fbb0b9SSepherosa Ziehau  * JMC250 can send 9K jumbo frame on Tx path and can receive
9076fbb0b9SSepherosa Ziehau  * 65535 bytes.
9176fbb0b9SSepherosa Ziehau  */
9276fbb0b9SSepherosa Ziehau #define JME_JUMBO_FRAMELEN	9216
9376fbb0b9SSepherosa Ziehau #define JME_JUMBO_MTU							\
9476fbb0b9SSepherosa Ziehau 	(JME_JUMBO_FRAMELEN - sizeof(struct ether_vlan_header) -	\
9576fbb0b9SSepherosa Ziehau 	 ETHER_HDR_LEN - ETHER_CRC_LEN)
9676fbb0b9SSepherosa Ziehau #define	JME_MAX_MTU							\
9776fbb0b9SSepherosa Ziehau 	(ETHER_MAX_LEN + sizeof(struct ether_vlan_header) -		\
9876fbb0b9SSepherosa Ziehau 	 ETHER_HDR_LEN - ETHER_CRC_LEN)
9976fbb0b9SSepherosa Ziehau /*
10076fbb0b9SSepherosa Ziehau  * JMC250 can't handle Tx checksum offload/TSO if frame length
10176fbb0b9SSepherosa Ziehau  * is larger than its FIFO size(2K). It's also good idea to not
10276fbb0b9SSepherosa Ziehau  * use jumbo frame if hardware is running at half-duplex media.
10376fbb0b9SSepherosa Ziehau  * Because the jumbo frame may not fit into the Tx FIFO,
10476fbb0b9SSepherosa Ziehau  * collisions make hardware fetch frame from host memory with
10576fbb0b9SSepherosa Ziehau  * DMA again which in turn slows down Tx performance
10676fbb0b9SSepherosa Ziehau  * significantly.
10776fbb0b9SSepherosa Ziehau  */
10876fbb0b9SSepherosa Ziehau #define	JME_TX_FIFO_SIZE	2000
10976fbb0b9SSepherosa Ziehau /*
11076fbb0b9SSepherosa Ziehau  * JMC250 has just 4K Rx FIFO. To support jumbo frame that is
11176fbb0b9SSepherosa Ziehau  * larger than 4K bytes in length, Rx FIFO threshold should be
11276fbb0b9SSepherosa Ziehau  * adjusted to minimize Rx FIFO overrun.
11376fbb0b9SSepherosa Ziehau  */
11476fbb0b9SSepherosa Ziehau #define	JME_RX_FIFO_SIZE	4000
11576fbb0b9SSepherosa Ziehau 
11676fbb0b9SSepherosa Ziehau #define	JME_DESC_INC(x, y)	((x) = ((x) + 1) % (y))
11776fbb0b9SSepherosa Ziehau 
11876fbb0b9SSepherosa Ziehau struct jme_txdesc {
11976fbb0b9SSepherosa Ziehau 	struct mbuf		*tx_m;
12076fbb0b9SSepherosa Ziehau 	bus_dmamap_t		tx_dmamap;
12176fbb0b9SSepherosa Ziehau 	int			tx_ndesc;
12276fbb0b9SSepherosa Ziehau 	struct jme_desc		*tx_desc;
12376fbb0b9SSepherosa Ziehau };
12476fbb0b9SSepherosa Ziehau 
12576fbb0b9SSepherosa Ziehau struct jme_rxdesc {
12676fbb0b9SSepherosa Ziehau 	struct mbuf 		*rx_m;
12776fbb0b9SSepherosa Ziehau 	bus_dmamap_t		rx_dmamap;
12876fbb0b9SSepherosa Ziehau 	struct jme_desc		*rx_desc;
12976fbb0b9SSepherosa Ziehau };
13076fbb0b9SSepherosa Ziehau 
13158880b0dSSepherosa Ziehau struct jme_softc;
13258880b0dSSepherosa Ziehau 
1334447c752SSepherosa Ziehau /*
1344447c752SSepherosa Ziehau  * RX ring/descs
1354447c752SSepherosa Ziehau  */
1364447c752SSepherosa Ziehau struct jme_rxdata {
13731f0d5a2SSepherosa Ziehau 	struct lwkt_serialize	jme_rx_serialize;
13858880b0dSSepherosa Ziehau 	struct jme_softc	*jme_sc;
139*7b040092SSepherosa Ziehau 
14058880b0dSSepherosa Ziehau 	uint32_t		jme_rx_coal;
14158880b0dSSepherosa Ziehau 	uint32_t		jme_rx_comp;
14258880b0dSSepherosa Ziehau 	uint32_t		jme_rx_empty;
14358880b0dSSepherosa Ziehau 	int			jme_rx_idx;
144*7b040092SSepherosa Ziehau 
1454447c752SSepherosa Ziehau 	bus_dma_tag_t		jme_rx_tag;	/* RX mbuf tag */
1464447c752SSepherosa Ziehau 	bus_dmamap_t		jme_rx_sparemap;
1474447c752SSepherosa Ziehau 	struct jme_rxdesc	*jme_rxdesc;
1484447c752SSepherosa Ziehau 
1494447c752SSepherosa Ziehau 	struct jme_desc		*jme_rx_ring;
1504447c752SSepherosa Ziehau 	bus_addr_t		jme_rx_ring_paddr;
1514447c752SSepherosa Ziehau 	bus_dma_tag_t		jme_rx_ring_tag;
1524447c752SSepherosa Ziehau 	bus_dmamap_t		jme_rx_ring_map;
1534447c752SSepherosa Ziehau 
1544447c752SSepherosa Ziehau 	int			jme_rx_cons;
155*7b040092SSepherosa Ziehau 	int			jme_rx_desc_cnt;
1564447c752SSepherosa Ziehau 
1574447c752SSepherosa Ziehau 	int			jme_rxlen;
1584447c752SSepherosa Ziehau 	struct mbuf		*jme_rxhead;
1594447c752SSepherosa Ziehau 	struct mbuf		*jme_rxtail;
160*7b040092SSepherosa Ziehau 
161*7b040092SSepherosa Ziehau 	u_long			jme_rx_pkt;
1624447c752SSepherosa Ziehau };
1634447c752SSepherosa Ziehau 
16476fbb0b9SSepherosa Ziehau struct jme_chain_data {
165560616bfSSepherosa Ziehau 	/*
166560616bfSSepherosa Ziehau 	 * Top level tags
167560616bfSSepherosa Ziehau 	 */
168560616bfSSepherosa Ziehau 	bus_dma_tag_t		jme_ring_tag;	/* parent ring tag */
169560616bfSSepherosa Ziehau 	bus_dma_tag_t		jme_buffer_tag;	/* parent mbuf/ssb tag */
170560616bfSSepherosa Ziehau 
171560616bfSSepherosa Ziehau 	/*
172560616bfSSepherosa Ziehau 	 * Shadow status block
173560616bfSSepherosa Ziehau 	 */
174560616bfSSepherosa Ziehau 	struct jme_ssb		*jme_ssb_block;
175560616bfSSepherosa Ziehau 	bus_addr_t		jme_ssb_block_paddr;
17676fbb0b9SSepherosa Ziehau 	bus_dma_tag_t		jme_ssb_tag;
17776fbb0b9SSepherosa Ziehau 	bus_dmamap_t		jme_ssb_map;
178560616bfSSepherosa Ziehau 
179560616bfSSepherosa Ziehau 	/*
180560616bfSSepherosa Ziehau 	 * TX ring/descs
181560616bfSSepherosa Ziehau 	 */
18231f0d5a2SSepherosa Ziehau 	struct lwkt_serialize	jme_tx_serialize;
18358880b0dSSepherosa Ziehau 	struct jme_softc	*jme_sc;
184560616bfSSepherosa Ziehau 	bus_dma_tag_t		jme_tx_tag;	/* TX mbuf tag */
18583b03786SSepherosa Ziehau 	struct jme_txdesc	*jme_txdesc;
186560616bfSSepherosa Ziehau 
187560616bfSSepherosa Ziehau 	struct jme_desc		*jme_tx_ring;
188560616bfSSepherosa Ziehau 	bus_addr_t		jme_tx_ring_paddr;
18976fbb0b9SSepherosa Ziehau 	bus_dma_tag_t		jme_tx_ring_tag;
19076fbb0b9SSepherosa Ziehau 	bus_dmamap_t		jme_tx_ring_map;
19176fbb0b9SSepherosa Ziehau 
19276fbb0b9SSepherosa Ziehau 	int			jme_tx_prod;
19376fbb0b9SSepherosa Ziehau 	int			jme_tx_cons;
19476fbb0b9SSepherosa Ziehau 	int			jme_tx_cnt;
19576fbb0b9SSepherosa Ziehau 
196*7b040092SSepherosa Ziehau 	int			jme_rx_ring_cnt;
1974447c752SSepherosa Ziehau 	struct jme_rxdata	jme_rx_data[JME_NRXRING_MAX];
19876fbb0b9SSepherosa Ziehau };
19976fbb0b9SSepherosa Ziehau 
20058880b0dSSepherosa Ziehau struct jme_msix_data {
20158880b0dSSepherosa Ziehau 	int			jme_msix_rid;
20258880b0dSSepherosa Ziehau 	int			jme_msix_cpuid;
20358880b0dSSepherosa Ziehau 	u_int			jme_msix_vector;
20458880b0dSSepherosa Ziehau 	uint32_t		jme_msix_intrs;
20558880b0dSSepherosa Ziehau 	struct resource		*jme_msix_res;
20658880b0dSSepherosa Ziehau 	void			*jme_msix_handle;
20758880b0dSSepherosa Ziehau 	struct lwkt_serialize	*jme_msix_serialize;
20858880b0dSSepherosa Ziehau 	char			jme_msix_desc[64];
20958880b0dSSepherosa Ziehau 
21058880b0dSSepherosa Ziehau 	driver_intr_t		*jme_msix_func;
21158880b0dSSepherosa Ziehau 	void			*jme_msix_arg;
21258880b0dSSepherosa Ziehau };
21358880b0dSSepherosa Ziehau 
21483b03786SSepherosa Ziehau #define JME_TX_RING_SIZE(sc)	\
21569325526SSepherosa Ziehau     (sizeof(struct jme_desc) * (sc)->jme_tx_desc_cnt)
216*7b040092SSepherosa Ziehau #define JME_RX_RING_SIZE(rdata)	\
217*7b040092SSepherosa Ziehau     (sizeof(struct jme_desc) * (rdata)->jme_rx_desc_cnt)
21876fbb0b9SSepherosa Ziehau #define	JME_SSB_SIZE		sizeof(struct jme_ssb)
21976fbb0b9SSepherosa Ziehau 
22076fbb0b9SSepherosa Ziehau /*
22176fbb0b9SSepherosa Ziehau  * Software state per device.
22276fbb0b9SSepherosa Ziehau  */
22376fbb0b9SSepherosa Ziehau struct jme_softc {
22476fbb0b9SSepherosa Ziehau 	struct arpcom		arpcom;
22576fbb0b9SSepherosa Ziehau 	device_t		jme_dev;
22676fbb0b9SSepherosa Ziehau 
22776fbb0b9SSepherosa Ziehau 	int			jme_mem_rid;
22876fbb0b9SSepherosa Ziehau 	struct resource		*jme_mem_res;
22976fbb0b9SSepherosa Ziehau 	bus_space_tag_t		jme_mem_bt;
23076fbb0b9SSepherosa Ziehau 	bus_space_handle_t	jme_mem_bh;
23176fbb0b9SSepherosa Ziehau 
2323eba890aSSepherosa Ziehau 	int			jme_irq_type;
23376fbb0b9SSepherosa Ziehau 	int			jme_irq_rid;
23476fbb0b9SSepherosa Ziehau 	struct resource		*jme_irq_res;
23576fbb0b9SSepherosa Ziehau 	void			*jme_irq_handle;
23658880b0dSSepherosa Ziehau 	struct jme_msix_data	jme_msix[JME_NMSIX];
23758880b0dSSepherosa Ziehau 	int			jme_msix_cnt;
23858880b0dSSepherosa Ziehau 	uint32_t		jme_msinum[JME_MSINUM_CNT];
23976fbb0b9SSepherosa Ziehau 
24076fbb0b9SSepherosa Ziehau 	device_t		jme_miibus;
24176fbb0b9SSepherosa Ziehau 	int			jme_phyaddr;
242b249905bSSepherosa Ziehau 	bus_addr_t		jme_lowaddr;
24376fbb0b9SSepherosa Ziehau 
244b249905bSSepherosa Ziehau 	uint32_t		jme_clksrc;
245b249905bSSepherosa Ziehau 	uint32_t		jme_clksrc_1000;
24676fbb0b9SSepherosa Ziehau 	uint32_t		jme_tx_dma_size;
24776fbb0b9SSepherosa Ziehau 	uint32_t		jme_rx_dma_size;
248ec7e787bSSepherosa Ziehau 
249ec7e787bSSepherosa Ziehau 	uint32_t		jme_caps;
250ec7e787bSSepherosa Ziehau #define	JME_CAP_FPGA		0x0001
251ec7e787bSSepherosa Ziehau #define	JME_CAP_PCIE		0x0002
252ec7e787bSSepherosa Ziehau #define	JME_CAP_PMCAP		0x0004
253ec7e787bSSepherosa Ziehau #define	JME_CAP_FASTETH		0x0008
2543a5f3f36SSepherosa Ziehau #define	JME_CAP_JUMBO		0x0010
255ad22907fSSepherosa Ziehau 
256ad22907fSSepherosa Ziehau 	uint32_t		jme_workaround;
257ad22907fSSepherosa Ziehau #define JME_WA_EXTFIFO		0x0001
2583b3da110SSepherosa Ziehau #define JME_WA_HDX		0x0002
259ec7e787bSSepherosa Ziehau 
260ec7e787bSSepherosa Ziehau 	uint32_t		jme_flags;
261ec7e787bSSepherosa Ziehau #define	JME_FLAG_MSI		0x0001
262ec7e787bSSepherosa Ziehau #define	JME_FLAG_MSIX		0x0002
263ec7e787bSSepherosa Ziehau #define	JME_FLAG_DETACH		0x0004
264ec7e787bSSepherosa Ziehau #define	JME_FLAG_LINK		0x0008
26576fbb0b9SSepherosa Ziehau 
26631f0d5a2SSepherosa Ziehau 	struct lwkt_serialize	jme_serialize;
26731f0d5a2SSepherosa Ziehau 	struct lwkt_serialize	*jme_serialize_arr[JME_NSERIALIZE];
26831f0d5a2SSepherosa Ziehau 	int			jme_serialize_cnt;
26931f0d5a2SSepherosa Ziehau 
27076fbb0b9SSepherosa Ziehau 	struct callout		jme_tick_ch;
27176fbb0b9SSepherosa Ziehau 	struct jme_chain_data	jme_cdata;
27276fbb0b9SSepherosa Ziehau 	int			jme_if_flags;
27376fbb0b9SSepherosa Ziehau 	uint32_t		jme_txcsr;
27476fbb0b9SSepherosa Ziehau 	uint32_t		jme_rxcsr;
27576fbb0b9SSepherosa Ziehau 
27676fbb0b9SSepherosa Ziehau 	int			jme_txd_spare;
27776fbb0b9SSepherosa Ziehau 
27876fbb0b9SSepherosa Ziehau 	struct sysctl_ctx_list	jme_sysctl_ctx;
27976fbb0b9SSepherosa Ziehau 	struct sysctl_oid	*jme_sysctl_tree;
28076fbb0b9SSepherosa Ziehau 
28176fbb0b9SSepherosa Ziehau 	/*
28276fbb0b9SSepherosa Ziehau 	 * Sysctl variables
28376fbb0b9SSepherosa Ziehau 	 */
28476fbb0b9SSepherosa Ziehau 	int			jme_tx_coal_to;
28576fbb0b9SSepherosa Ziehau 	int			jme_tx_coal_pkt;
28676fbb0b9SSepherosa Ziehau 	int			jme_rx_coal_to;
28776fbb0b9SSepherosa Ziehau 	int			jme_rx_coal_pkt;
28869325526SSepherosa Ziehau 	int			jme_tx_desc_cnt;
289760c056cSSepherosa Ziehau 	int			jme_rss_debug;
29076fbb0b9SSepherosa Ziehau };
29176fbb0b9SSepherosa Ziehau 
29276fbb0b9SSepherosa Ziehau /* Register access macros. */
29376fbb0b9SSepherosa Ziehau #define CSR_WRITE_4(_sc, reg, val)	\
29476fbb0b9SSepherosa Ziehau 	bus_space_write_4((_sc)->jme_mem_bt, (_sc)->jme_mem_bh, (reg), (val))
29576fbb0b9SSepherosa Ziehau #define CSR_READ_4(_sc, reg)		\
29676fbb0b9SSepherosa Ziehau 	bus_space_read_4((_sc)->jme_mem_bt, (_sc)->jme_mem_bh, (reg))
29776fbb0b9SSepherosa Ziehau 
29876fbb0b9SSepherosa Ziehau #define	JME_MAXERR	5
29976fbb0b9SSepherosa Ziehau 
300dea2452aSSepherosa Ziehau #define	JME_RXCHAIN_RESET(rdata)	\
30176fbb0b9SSepherosa Ziehau do {					\
302dea2452aSSepherosa Ziehau 	(rdata)->jme_rxhead = NULL;	\
303dea2452aSSepherosa Ziehau 	(rdata)->jme_rxtail = NULL;	\
304dea2452aSSepherosa Ziehau 	(rdata)->jme_rxlen = 0;		\
30576fbb0b9SSepherosa Ziehau } while (0)
30676fbb0b9SSepherosa Ziehau 
30776fbb0b9SSepherosa Ziehau #define	JME_TX_TIMEOUT		5
30876fbb0b9SSepherosa Ziehau #define JME_TIMEOUT		1000
30976fbb0b9SSepherosa Ziehau #define JME_PHY_TIMEOUT		1000
31076fbb0b9SSepherosa Ziehau #define JME_EEPROM_TIMEOUT	1000
31176fbb0b9SSepherosa Ziehau 
31276fbb0b9SSepherosa Ziehau #define JME_TXD_RSVD		1
31376fbb0b9SSepherosa Ziehau 
31476fbb0b9SSepherosa Ziehau #endif
315