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 */ 42ff7f3632SSepherosa Ziehau #define JME_TX_DESC_CNT_DEF 512 43ff7f3632SSepherosa Ziehau #define JME_RX_DESC_CNT_DEF 512 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 */ 64ff7f3632SSepherosa Ziehau #define JME_TX_RING_ALIGN __VM_CACHELINE_SIZE 65ff7f3632SSepherosa Ziehau #define JME_RX_RING_ALIGN __VM_CACHELINE_SIZE 669d424ceeSSepherosa Ziehau #define JME_MAXSEGSIZE 4096 671bedd927SSepherosa Ziehau #define JME_TSO_MAXSIZE (IP_MAXPACKET + sizeof(struct ether_vlan_header)) 681bedd927SSepherosa Ziehau #define JME_MAXTXSEGS 40 6976fbb0b9SSepherosa Ziehau #define JME_RX_BUF_ALIGN sizeof(uint64_t) 70ff7f3632SSepherosa Ziehau #define JME_SSB_ALIGN __VM_CACHELINE_SIZE 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) \ 86b020bb10SSepherosa Ziehau ((sc)->jme_cdata.jme_tx_desc_cnt - \ 87b020bb10SSepherosa Ziehau (((sc)->jme_cdata.jme_tx_desc_cnt * 3) / 10)) 8876fbb0b9SSepherosa Ziehau 8976fbb0b9SSepherosa Ziehau /* 9076fbb0b9SSepherosa Ziehau * JMC250 can send 9K jumbo frame on Tx path and can receive 9176fbb0b9SSepherosa Ziehau * 65535 bytes. 9276fbb0b9SSepherosa Ziehau */ 9376fbb0b9SSepherosa Ziehau #define JME_JUMBO_FRAMELEN 9216 9476fbb0b9SSepherosa Ziehau #define JME_JUMBO_MTU \ 9576fbb0b9SSepherosa Ziehau (JME_JUMBO_FRAMELEN - sizeof(struct ether_vlan_header) - \ 9676fbb0b9SSepherosa Ziehau ETHER_HDR_LEN - ETHER_CRC_LEN) 9776fbb0b9SSepherosa Ziehau #define JME_MAX_MTU \ 9876fbb0b9SSepherosa Ziehau (ETHER_MAX_LEN + sizeof(struct ether_vlan_header) - \ 9976fbb0b9SSepherosa Ziehau ETHER_HDR_LEN - ETHER_CRC_LEN) 10076fbb0b9SSepherosa Ziehau /* 10176fbb0b9SSepherosa Ziehau * JMC250 can't handle Tx checksum offload/TSO if frame length 10276fbb0b9SSepherosa Ziehau * is larger than its FIFO size(2K). It's also good idea to not 10376fbb0b9SSepherosa Ziehau * use jumbo frame if hardware is running at half-duplex media. 10476fbb0b9SSepherosa Ziehau * Because the jumbo frame may not fit into the Tx FIFO, 10576fbb0b9SSepherosa Ziehau * collisions make hardware fetch frame from host memory with 10676fbb0b9SSepherosa Ziehau * DMA again which in turn slows down Tx performance 10776fbb0b9SSepherosa Ziehau * significantly. 10876fbb0b9SSepherosa Ziehau */ 10976fbb0b9SSepherosa Ziehau #define JME_TX_FIFO_SIZE 2000 11076fbb0b9SSepherosa Ziehau /* 11176fbb0b9SSepherosa Ziehau * JMC250 has just 4K Rx FIFO. To support jumbo frame that is 11276fbb0b9SSepherosa Ziehau * larger than 4K bytes in length, Rx FIFO threshold should be 11376fbb0b9SSepherosa Ziehau * adjusted to minimize Rx FIFO overrun. 11476fbb0b9SSepherosa Ziehau */ 11576fbb0b9SSepherosa Ziehau #define JME_RX_FIFO_SIZE 4000 11676fbb0b9SSepherosa Ziehau 11776fbb0b9SSepherosa Ziehau #define JME_DESC_INC(x, y) ((x) = ((x) + 1) % (y)) 1186960d7d2SSepherosa Ziehau #define JME_DESC_ADD(x, d, y) ((x) = ((x) + (d)) % (y)) 11976fbb0b9SSepherosa Ziehau 12076fbb0b9SSepherosa Ziehau struct jme_txdesc { 12176fbb0b9SSepherosa Ziehau struct mbuf *tx_m; 12276fbb0b9SSepherosa Ziehau bus_dmamap_t tx_dmamap; 12376fbb0b9SSepherosa Ziehau int tx_ndesc; 12476fbb0b9SSepherosa Ziehau struct jme_desc *tx_desc; 12576fbb0b9SSepherosa Ziehau }; 12676fbb0b9SSepherosa Ziehau 12776fbb0b9SSepherosa Ziehau struct jme_rxdesc { 12876fbb0b9SSepherosa Ziehau struct mbuf *rx_m; 129fd2a6d2cSSepherosa Ziehau bus_addr_t rx_paddr; 13076fbb0b9SSepherosa Ziehau bus_dmamap_t rx_dmamap; 13176fbb0b9SSepherosa Ziehau struct jme_desc *rx_desc; 13276fbb0b9SSepherosa Ziehau }; 13376fbb0b9SSepherosa Ziehau 13458880b0dSSepherosa Ziehau struct jme_softc; 13558880b0dSSepherosa Ziehau 1364447c752SSepherosa Ziehau /* 1374447c752SSepherosa Ziehau * RX ring/descs 1384447c752SSepherosa Ziehau */ 1394447c752SSepherosa Ziehau struct jme_rxdata { 14031f0d5a2SSepherosa Ziehau struct lwkt_serialize jme_rx_serialize; 14158880b0dSSepherosa Ziehau struct jme_softc *jme_sc; 1427b040092SSepherosa Ziehau 14358880b0dSSepherosa Ziehau uint32_t jme_rx_coal; 14458880b0dSSepherosa Ziehau uint32_t jme_rx_comp; 14558880b0dSSepherosa Ziehau uint32_t jme_rx_empty; 14658880b0dSSepherosa Ziehau int jme_rx_idx; 1477b040092SSepherosa Ziehau 1484447c752SSepherosa Ziehau bus_dma_tag_t jme_rx_tag; /* RX mbuf tag */ 1494447c752SSepherosa Ziehau bus_dmamap_t jme_rx_sparemap; 1504447c752SSepherosa Ziehau struct jme_rxdesc *jme_rxdesc; 1514447c752SSepherosa Ziehau 1524447c752SSepherosa Ziehau struct jme_desc *jme_rx_ring; 1534447c752SSepherosa Ziehau bus_addr_t jme_rx_ring_paddr; 1544447c752SSepherosa Ziehau bus_dma_tag_t jme_rx_ring_tag; 1554447c752SSepherosa Ziehau bus_dmamap_t jme_rx_ring_map; 1564447c752SSepherosa Ziehau 1574447c752SSepherosa Ziehau int jme_rx_cons; 1587b040092SSepherosa Ziehau int jme_rx_desc_cnt; 1594447c752SSepherosa Ziehau 1604447c752SSepherosa Ziehau int jme_rxlen; 1614447c752SSepherosa Ziehau struct mbuf *jme_rxhead; 1624447c752SSepherosa Ziehau struct mbuf *jme_rxtail; 1637b040092SSepherosa Ziehau 1647b040092SSepherosa Ziehau u_long jme_rx_pkt; 165955f266eSSepherosa Ziehau u_long jme_rx_emp; 166594bec47SSepherosa Ziehau } __cachealign; 1674447c752SSepherosa Ziehau 16876fbb0b9SSepherosa Ziehau struct jme_chain_data { 169560616bfSSepherosa Ziehau /* 170560616bfSSepherosa Ziehau * Top level tags 171560616bfSSepherosa Ziehau */ 172560616bfSSepherosa Ziehau bus_dma_tag_t jme_ring_tag; /* parent ring tag */ 173560616bfSSepherosa Ziehau bus_dma_tag_t jme_buffer_tag; /* parent mbuf/ssb tag */ 174560616bfSSepherosa Ziehau 175560616bfSSepherosa Ziehau /* 176560616bfSSepherosa Ziehau * Shadow status block 177560616bfSSepherosa Ziehau */ 178560616bfSSepherosa Ziehau struct jme_ssb *jme_ssb_block; 179560616bfSSepherosa Ziehau bus_addr_t jme_ssb_block_paddr; 18076fbb0b9SSepherosa Ziehau bus_dma_tag_t jme_ssb_tag; 18176fbb0b9SSepherosa Ziehau bus_dmamap_t jme_ssb_map; 182560616bfSSepherosa Ziehau 183560616bfSSepherosa Ziehau /* 184560616bfSSepherosa Ziehau * TX ring/descs 185560616bfSSepherosa Ziehau */ 18631f0d5a2SSepherosa Ziehau struct lwkt_serialize jme_tx_serialize; 18758880b0dSSepherosa Ziehau struct jme_softc *jme_sc; 188560616bfSSepherosa Ziehau bus_dma_tag_t jme_tx_tag; /* TX mbuf tag */ 18983b03786SSepherosa Ziehau struct jme_txdesc *jme_txdesc; 190560616bfSSepherosa Ziehau 191560616bfSSepherosa Ziehau struct jme_desc *jme_tx_ring; 192560616bfSSepherosa Ziehau bus_addr_t jme_tx_ring_paddr; 19376fbb0b9SSepherosa Ziehau bus_dma_tag_t jme_tx_ring_tag; 19476fbb0b9SSepherosa Ziehau bus_dmamap_t jme_tx_ring_map; 19576fbb0b9SSepherosa Ziehau 19676fbb0b9SSepherosa Ziehau int jme_tx_prod; 19776fbb0b9SSepherosa Ziehau int jme_tx_cons; 19876fbb0b9SSepherosa Ziehau int jme_tx_cnt; 199b020bb10SSepherosa Ziehau int jme_tx_desc_cnt; 20076fbb0b9SSepherosa Ziehau 2017b040092SSepherosa Ziehau int jme_rx_ring_cnt; 2024447c752SSepherosa Ziehau struct jme_rxdata jme_rx_data[JME_NRXRING_MAX]; 203594bec47SSepherosa Ziehau } __cachealign; 20476fbb0b9SSepherosa Ziehau 20558880b0dSSepherosa Ziehau struct jme_msix_data { 20658880b0dSSepherosa Ziehau int jme_msix_rid; 20758880b0dSSepherosa Ziehau int jme_msix_cpuid; 20858880b0dSSepherosa Ziehau u_int jme_msix_vector; 20958880b0dSSepherosa Ziehau uint32_t jme_msix_intrs; 21058880b0dSSepherosa Ziehau struct resource *jme_msix_res; 21158880b0dSSepherosa Ziehau void *jme_msix_handle; 21258880b0dSSepherosa Ziehau struct lwkt_serialize *jme_msix_serialize; 21358880b0dSSepherosa Ziehau char jme_msix_desc[64]; 21458880b0dSSepherosa Ziehau 21558880b0dSSepherosa Ziehau driver_intr_t *jme_msix_func; 21658880b0dSSepherosa Ziehau void *jme_msix_arg; 21758880b0dSSepherosa Ziehau }; 21858880b0dSSepherosa Ziehau 21983b03786SSepherosa Ziehau #define JME_TX_RING_SIZE(sc) \ 220b020bb10SSepherosa Ziehau (sizeof(struct jme_desc) * (sc)->jme_cdata.jme_tx_desc_cnt) 2217b040092SSepherosa Ziehau #define JME_RX_RING_SIZE(rdata) \ 2227b040092SSepherosa Ziehau (sizeof(struct jme_desc) * (rdata)->jme_rx_desc_cnt) 22376fbb0b9SSepherosa Ziehau #define JME_SSB_SIZE sizeof(struct jme_ssb) 22476fbb0b9SSepherosa Ziehau 22576fbb0b9SSepherosa Ziehau /* 22676fbb0b9SSepherosa Ziehau * Software state per device. 22776fbb0b9SSepherosa Ziehau */ 22876fbb0b9SSepherosa Ziehau struct jme_softc { 22976fbb0b9SSepherosa Ziehau struct arpcom arpcom; 23076fbb0b9SSepherosa Ziehau device_t jme_dev; 23176fbb0b9SSepherosa Ziehau 23276fbb0b9SSepherosa Ziehau int jme_mem_rid; 23376fbb0b9SSepherosa Ziehau struct resource *jme_mem_res; 23476fbb0b9SSepherosa Ziehau bus_space_tag_t jme_mem_bt; 23576fbb0b9SSepherosa Ziehau bus_space_handle_t jme_mem_bh; 23676fbb0b9SSepherosa Ziehau 2373eba890aSSepherosa Ziehau int jme_irq_type; 23876fbb0b9SSepherosa Ziehau int jme_irq_rid; 23976fbb0b9SSepherosa Ziehau struct resource *jme_irq_res; 24076fbb0b9SSepherosa Ziehau void *jme_irq_handle; 24158880b0dSSepherosa Ziehau struct jme_msix_data jme_msix[JME_NMSIX]; 24258880b0dSSepherosa Ziehau int jme_msix_cnt; 24358880b0dSSepherosa Ziehau uint32_t jme_msinum[JME_MSINUM_CNT]; 24487aa452bSSepherosa Ziehau int jme_tx_cpuid; 24576fbb0b9SSepherosa Ziehau 246*8a0620e4SSepherosa Ziehau int jme_npoll_rxoff; 247*8a0620e4SSepherosa Ziehau int jme_npoll_txoff; 248*8a0620e4SSepherosa Ziehau 24976fbb0b9SSepherosa Ziehau device_t jme_miibus; 25076fbb0b9SSepherosa Ziehau int jme_phyaddr; 251b249905bSSepherosa Ziehau bus_addr_t jme_lowaddr; 25276fbb0b9SSepherosa Ziehau 253b249905bSSepherosa Ziehau uint32_t jme_clksrc; 254b249905bSSepherosa Ziehau uint32_t jme_clksrc_1000; 25576fbb0b9SSepherosa Ziehau uint32_t jme_tx_dma_size; 25676fbb0b9SSepherosa Ziehau uint32_t jme_rx_dma_size; 257ec7e787bSSepherosa Ziehau 258ec7e787bSSepherosa Ziehau uint32_t jme_caps; 259ec7e787bSSepherosa Ziehau #define JME_CAP_FPGA 0x0001 260ec7e787bSSepherosa Ziehau #define JME_CAP_PCIE 0x0002 261ec7e787bSSepherosa Ziehau #define JME_CAP_PMCAP 0x0004 262ec7e787bSSepherosa Ziehau #define JME_CAP_FASTETH 0x0008 2633a5f3f36SSepherosa Ziehau #define JME_CAP_JUMBO 0x0010 264ad22907fSSepherosa Ziehau 265ad22907fSSepherosa Ziehau uint32_t jme_workaround; 266ad22907fSSepherosa Ziehau #define JME_WA_EXTFIFO 0x0001 2673b3da110SSepherosa Ziehau #define JME_WA_HDX 0x0002 268ec7e787bSSepherosa Ziehau 269cccc3955SSepherosa Ziehau boolean_t jme_has_link; 270cccc3955SSepherosa Ziehau boolean_t jme_in_tick; 27176fbb0b9SSepherosa Ziehau 27231f0d5a2SSepherosa Ziehau struct lwkt_serialize jme_serialize; 27331f0d5a2SSepherosa Ziehau struct lwkt_serialize *jme_serialize_arr[JME_NSERIALIZE]; 27431f0d5a2SSepherosa Ziehau int jme_serialize_cnt; 27531f0d5a2SSepherosa Ziehau 27676fbb0b9SSepherosa Ziehau struct callout jme_tick_ch; 27776fbb0b9SSepherosa Ziehau struct jme_chain_data jme_cdata; 27876fbb0b9SSepherosa Ziehau int jme_if_flags; 27976fbb0b9SSepherosa Ziehau uint32_t jme_txcsr; 28076fbb0b9SSepherosa Ziehau uint32_t jme_rxcsr; 28176fbb0b9SSepherosa Ziehau 28276fbb0b9SSepherosa Ziehau struct sysctl_ctx_list jme_sysctl_ctx; 28376fbb0b9SSepherosa Ziehau struct sysctl_oid *jme_sysctl_tree; 28476fbb0b9SSepherosa Ziehau 28576fbb0b9SSepherosa Ziehau /* 28676fbb0b9SSepherosa Ziehau * Sysctl variables 28776fbb0b9SSepherosa Ziehau */ 28876fbb0b9SSepherosa Ziehau int jme_tx_coal_to; 28976fbb0b9SSepherosa Ziehau int jme_tx_coal_pkt; 29076fbb0b9SSepherosa Ziehau int jme_rx_coal_to; 29176fbb0b9SSepherosa Ziehau int jme_rx_coal_pkt; 292760c056cSSepherosa Ziehau int jme_rss_debug; 29376fbb0b9SSepherosa Ziehau }; 29476fbb0b9SSepherosa Ziehau 29576fbb0b9SSepherosa Ziehau /* Register access macros. */ 29676fbb0b9SSepherosa Ziehau #define CSR_WRITE_4(_sc, reg, val) \ 29776fbb0b9SSepherosa Ziehau bus_space_write_4((_sc)->jme_mem_bt, (_sc)->jme_mem_bh, (reg), (val)) 29876fbb0b9SSepherosa Ziehau #define CSR_READ_4(_sc, reg) \ 29976fbb0b9SSepherosa Ziehau bus_space_read_4((_sc)->jme_mem_bt, (_sc)->jme_mem_bh, (reg)) 30076fbb0b9SSepherosa Ziehau 30176fbb0b9SSepherosa Ziehau #define JME_MAXERR 5 30276fbb0b9SSepherosa Ziehau 303dea2452aSSepherosa Ziehau #define JME_RXCHAIN_RESET(rdata) \ 30476fbb0b9SSepherosa Ziehau do { \ 305dea2452aSSepherosa Ziehau (rdata)->jme_rxhead = NULL; \ 306dea2452aSSepherosa Ziehau (rdata)->jme_rxtail = NULL; \ 307dea2452aSSepherosa Ziehau (rdata)->jme_rxlen = 0; \ 30876fbb0b9SSepherosa Ziehau } while (0) 30976fbb0b9SSepherosa Ziehau 31076fbb0b9SSepherosa Ziehau #define JME_TX_TIMEOUT 5 31176fbb0b9SSepherosa Ziehau #define JME_TIMEOUT 1000 31276fbb0b9SSepherosa Ziehau #define JME_PHY_TIMEOUT 1000 31376fbb0b9SSepherosa Ziehau #define JME_EEPROM_TIMEOUT 1000 31476fbb0b9SSepherosa Ziehau 31576fbb0b9SSepherosa Ziehau #define JME_TXD_RSVD 1 3161bedd927SSepherosa Ziehau /* Large enough to cooperate 64K TSO segment and one spare TX descriptor */ 3171bedd927SSepherosa Ziehau #define JME_TXD_SPARE 34 31876fbb0b9SSepherosa Ziehau 3196afef6abSSepherosa Ziehau #define JME_ENABLE_HWRSS(sc) \ 3206afef6abSSepherosa Ziehau ((sc)->jme_cdata.jme_rx_ring_cnt > JME_NRXRING_MIN) 3216afef6abSSepherosa Ziehau 32276fbb0b9SSepherosa Ziehau #endif 323