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