if_rlreg.h (131253) | if_rlreg.h (131605) |
---|---|
1/* 2 * Copyright (c) 1997, 1998-2003 3 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 * THE POSSIBILITY OF SUCH DAMAGE. 31 * | 1/* 2 * Copyright (c) 1997, 1998-2003 3 * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 15 unchanged lines hidden (view full) --- 24 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 30 * THE POSSIBILITY OF SUCH DAMAGE. 31 * |
32 * $FreeBSD: head/sys/pci/if_rlreg.h 131253 2004-06-28 20:07:03Z imp $ | 32 * $FreeBSD: head/sys/pci/if_rlreg.h 131605 2004-07-05 02:46:42Z bms $ |
33 */ 34 35/* 36 * RealTek 8129/8139 register offsets 37 */ 38#define RL_IDR0 0x0000 /* ID register 0 (station addr) */ 39#define RL_IDR1 0x0001 /* Must use 32-bit accesses (?) */ 40#define RL_IDR2 0x0002 --- 386 unchanged lines hidden (view full) --- 427#define RL_TX_MAXDMA RL_TXDMA_2048BYTES 428 429#define RL_RXCFG_CONFIG (RL_RX_FIFOTHRESH|RL_RX_MAXDMA|RL_RX_BUF_SZ) 430#define RL_TXCFG_CONFIG (RL_TXCFG_IFG|RL_TX_MAXDMA) 431 432#define RL_ETHER_ALIGN 2 433 434struct rl_chain_data { | 33 */ 34 35/* 36 * RealTek 8129/8139 register offsets 37 */ 38#define RL_IDR0 0x0000 /* ID register 0 (station addr) */ 39#define RL_IDR1 0x0001 /* Must use 32-bit accesses (?) */ 40#define RL_IDR2 0x0002 --- 386 unchanged lines hidden (view full) --- 427#define RL_TX_MAXDMA RL_TXDMA_2048BYTES 428 429#define RL_RXCFG_CONFIG (RL_RX_FIFOTHRESH|RL_RX_MAXDMA|RL_RX_BUF_SZ) 430#define RL_TXCFG_CONFIG (RL_TXCFG_IFG|RL_TX_MAXDMA) 431 432#define RL_ETHER_ALIGN 2 433 434struct rl_chain_data { |
435 u_int16_t cur_rx; 436 caddr_t rl_rx_buf; 437 caddr_t rl_rx_buf_ptr; | 435 uint16_t cur_rx; 436 uint8_t *rl_rx_buf; 437 uint8_t *rl_rx_buf_ptr; |
438 bus_dmamap_t rl_rx_dmamap; 439 440 struct mbuf *rl_tx_chain[RL_TX_LIST_CNT]; 441 bus_dmamap_t rl_tx_dmamap[RL_TX_LIST_CNT]; | 438 bus_dmamap_t rl_rx_dmamap; 439 440 struct mbuf *rl_tx_chain[RL_TX_LIST_CNT]; 441 bus_dmamap_t rl_tx_dmamap[RL_TX_LIST_CNT]; |
442 u_int8_t last_tx; 443 u_int8_t cur_tx; | 442 uint8_t last_tx; 443 uint8_t cur_tx; |
444}; 445 446#define RL_INC(x) (x = (x + 1) % RL_TX_LIST_CNT) 447#define RL_CUR_TXADDR(x) ((x->rl_cdata.cur_tx * 4) + RL_TXADDR0) 448#define RL_CUR_TXSTAT(x) ((x->rl_cdata.cur_tx * 4) + RL_TXSTAT0) 449#define RL_CUR_TXMBUF(x) (x->rl_cdata.rl_tx_chain[x->rl_cdata.cur_tx]) 450#define RL_CUR_DMAMAP(x) (x->rl_cdata.rl_tx_dmamap[x->rl_cdata.cur_tx]) 451#define RL_LAST_TXADDR(x) ((x->rl_cdata.last_tx * 4) + RL_TXADDR0) 452#define RL_LAST_TXSTAT(x) ((x->rl_cdata.last_tx * 4) + RL_TXSTAT0) 453#define RL_LAST_TXMBUF(x) (x->rl_cdata.rl_tx_chain[x->rl_cdata.last_tx]) 454#define RL_LAST_DMAMAP(x) (x->rl_cdata.rl_tx_dmamap[x->rl_cdata.last_tx]) 455 456struct rl_type { | 444}; 445 446#define RL_INC(x) (x = (x + 1) % RL_TX_LIST_CNT) 447#define RL_CUR_TXADDR(x) ((x->rl_cdata.cur_tx * 4) + RL_TXADDR0) 448#define RL_CUR_TXSTAT(x) ((x->rl_cdata.cur_tx * 4) + RL_TXSTAT0) 449#define RL_CUR_TXMBUF(x) (x->rl_cdata.rl_tx_chain[x->rl_cdata.cur_tx]) 450#define RL_CUR_DMAMAP(x) (x->rl_cdata.rl_tx_dmamap[x->rl_cdata.cur_tx]) 451#define RL_LAST_TXADDR(x) ((x->rl_cdata.last_tx * 4) + RL_TXADDR0) 452#define RL_LAST_TXSTAT(x) ((x->rl_cdata.last_tx * 4) + RL_TXSTAT0) 453#define RL_LAST_TXMBUF(x) (x->rl_cdata.rl_tx_chain[x->rl_cdata.last_tx]) 454#define RL_LAST_DMAMAP(x) (x->rl_cdata.rl_tx_dmamap[x->rl_cdata.last_tx]) 455 456struct rl_type { |
457 u_int16_t rl_vid; 458 u_int16_t rl_did; | 457 uint16_t rl_vid; 458 uint16_t rl_did; |
459 int rl_basetype; 460 char *rl_name; 461}; 462 463struct rl_hwrev { | 459 int rl_basetype; 460 char *rl_name; 461}; 462 463struct rl_hwrev { |
464 u_int32_t rl_rev; | 464 uint32_t rl_rev; |
465 int rl_type; 466 char *rl_desc; 467}; 468 469struct rl_mii_frame { | 465 int rl_type; 466 char *rl_desc; 467}; 468 469struct rl_mii_frame { |
470 u_int8_t mii_stdelim; 471 u_int8_t mii_opcode; 472 u_int8_t mii_phyaddr; 473 u_int8_t mii_regaddr; 474 u_int8_t mii_turnaround; 475 u_int16_t mii_data; | 470 uint8_t mii_stdelim; 471 uint8_t mii_opcode; 472 uint8_t mii_phyaddr; 473 uint8_t mii_regaddr; 474 uint8_t mii_turnaround; 475 uint16_t mii_data; |
476}; 477 478/* 479 * MII constants 480 */ 481#define RL_MII_STARTDELIM 0x01 482#define RL_MII_READOP 0x02 483#define RL_MII_WRITEOP 0x01 --- 17 unchanged lines hidden (view full) --- 501/* 502 * RX/TX descriptor definition. When large send mode is enabled, the 503 * lower 11 bits of the TX rl_cmd word are used to hold the MSS, and 504 * the checksum offload bits are disabled. The structure layout is 505 * the same for RX and TX descriptors 506 */ 507 508struct rl_desc { | 476}; 477 478/* 479 * MII constants 480 */ 481#define RL_MII_STARTDELIM 0x01 482#define RL_MII_READOP 0x02 483#define RL_MII_WRITEOP 0x01 --- 17 unchanged lines hidden (view full) --- 501/* 502 * RX/TX descriptor definition. When large send mode is enabled, the 503 * lower 11 bits of the TX rl_cmd word are used to hold the MSS, and 504 * the checksum offload bits are disabled. The structure layout is 505 * the same for RX and TX descriptors 506 */ 507 508struct rl_desc { |
509 u_int32_t rl_cmdstat; 510 u_int32_t rl_vlanctl; 511 u_int32_t rl_bufaddr_lo; 512 u_int32_t rl_bufaddr_hi; | 509 uint32_t rl_cmdstat; 510 uint32_t rl_vlanctl; 511 uint32_t rl_bufaddr_lo; 512 uint32_t rl_bufaddr_hi; |
513}; 514 515#define RL_TDESC_CMD_FRAGLEN 0x0000FFFF 516#define RL_TDESC_CMD_TCPCSUM 0x00010000 /* TCP checksum enable */ 517#define RL_TDESC_CMD_UDPCSUM 0x00020000 /* UDP checksum enable */ 518#define RL_TDESC_CMD_IPCSUM 0x00040000 /* IP header checksum enable */ 519#define RL_TDESC_CMD_MSSVAL 0x07FF0000 /* Large send MSS value */ 520#define RL_TDESC_CMD_LGSEND 0x08000000 /* TCP large send enb */ --- 59 unchanged lines hidden (view full) --- 580 RL_PROTOID_TCPIP) 581#define RL_UDPPKT(x) (((x) & RL_RDESC_STAT_PROTOID) == \ 582 RL_PROTOID_UDPIP) 583 584/* 585 * Statistics counter structure (8139C+ and 8169 only) 586 */ 587struct rl_stats { | 513}; 514 515#define RL_TDESC_CMD_FRAGLEN 0x0000FFFF 516#define RL_TDESC_CMD_TCPCSUM 0x00010000 /* TCP checksum enable */ 517#define RL_TDESC_CMD_UDPCSUM 0x00020000 /* UDP checksum enable */ 518#define RL_TDESC_CMD_IPCSUM 0x00040000 /* IP header checksum enable */ 519#define RL_TDESC_CMD_MSSVAL 0x07FF0000 /* Large send MSS value */ 520#define RL_TDESC_CMD_LGSEND 0x08000000 /* TCP large send enb */ --- 59 unchanged lines hidden (view full) --- 580 RL_PROTOID_TCPIP) 581#define RL_UDPPKT(x) (((x) & RL_RDESC_STAT_PROTOID) == \ 582 RL_PROTOID_UDPIP) 583 584/* 585 * Statistics counter structure (8139C+ and 8169 only) 586 */ 587struct rl_stats { |
588 u_int32_t rl_tx_pkts_lo; 589 u_int32_t rl_tx_pkts_hi; 590 u_int32_t rl_tx_errs_lo; 591 u_int32_t rl_tx_errs_hi; 592 u_int32_t rl_tx_errs; 593 u_int16_t rl_missed_pkts; 594 u_int16_t rl_rx_framealign_errs; 595 u_int32_t rl_tx_onecoll; 596 u_int32_t rl_tx_multicolls; 597 u_int32_t rl_rx_ucasts_hi; 598 u_int32_t rl_rx_ucasts_lo; 599 u_int32_t rl_rx_bcasts_lo; 600 u_int32_t rl_rx_bcasts_hi; 601 u_int32_t rl_rx_mcasts; 602 u_int16_t rl_tx_aborts; 603 u_int16_t rl_rx_underruns; | 588 uint32_t rl_tx_pkts_lo; 589 uint32_t rl_tx_pkts_hi; 590 uint32_t rl_tx_errs_lo; 591 uint32_t rl_tx_errs_hi; 592 uint32_t rl_tx_errs; 593 uint16_t rl_missed_pkts; 594 uint16_t rl_rx_framealign_errs; 595 uint32_t rl_tx_onecoll; 596 uint32_t rl_tx_multicolls; 597 uint32_t rl_rx_ucasts_hi; 598 uint32_t rl_rx_ucasts_lo; 599 uint32_t rl_rx_bcasts_lo; 600 uint32_t rl_rx_bcasts_hi; 601 uint32_t rl_rx_mcasts; 602 uint16_t rl_tx_aborts; 603 uint16_t rl_rx_underruns; |
604}; 605 606#define RL_RX_DESC_CNT 64 607#define RL_TX_DESC_CNT 64 608#define RL_RX_LIST_SZ (RL_RX_DESC_CNT * sizeof(struct rl_desc)) 609#define RL_TX_LIST_SZ (RL_TX_DESC_CNT * sizeof(struct rl_desc)) 610#define RL_RING_ALIGN 256 611#define RL_IFQ_MAXLEN 512 612#define RL_DESC_INC(x) (x = (x + 1) % RL_TX_DESC_CNT) 613#define RL_OWN(x) (le32toh((x)->rl_cmdstat) & RL_RDESC_STAT_OWN) 614#define RL_RXBYTES(x) (le32toh((x)->rl_cmdstat) & sc->rl_rxlenmask) 615#define RL_PKTSZ(x) ((x)/* >> 3*/) 616 | 604}; 605 606#define RL_RX_DESC_CNT 64 607#define RL_TX_DESC_CNT 64 608#define RL_RX_LIST_SZ (RL_RX_DESC_CNT * sizeof(struct rl_desc)) 609#define RL_TX_LIST_SZ (RL_TX_DESC_CNT * sizeof(struct rl_desc)) 610#define RL_RING_ALIGN 256 611#define RL_IFQ_MAXLEN 512 612#define RL_DESC_INC(x) (x = (x + 1) % RL_TX_DESC_CNT) 613#define RL_OWN(x) (le32toh((x)->rl_cmdstat) & RL_RDESC_STAT_OWN) 614#define RL_RXBYTES(x) (le32toh((x)->rl_cmdstat) & sc->rl_rxlenmask) 615#define RL_PKTSZ(x) ((x)/* >> 3*/) 616 |
617#define RL_ADDR_LO(y) ((u_int64_t) (y) & 0xFFFFFFFF) 618#define RL_ADDR_HI(y) ((u_int64_t) (y) >> 32) | 617#define RL_ADDR_LO(y) ((uint64_t) (y) & 0xFFFFFFFF) 618#define RL_ADDR_HI(y) ((uint64_t) (y) >> 32) |
619 620#define RL_JUMBO_FRAMELEN 9018 621#define RL_JUMBO_MTU (RL_JUMBO_FRAMELEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 622 623struct rl_softc; 624 625struct rl_dmaload_arg { 626 struct rl_softc *sc; 627 int rl_idx; 628 int rl_maxsegs; | 619 620#define RL_JUMBO_FRAMELEN 9018 621#define RL_JUMBO_MTU (RL_JUMBO_FRAMELEN-ETHER_HDR_LEN-ETHER_CRC_LEN) 622 623struct rl_softc; 624 625struct rl_dmaload_arg { 626 struct rl_softc *sc; 627 int rl_idx; 628 int rl_maxsegs; |
629 u_int32_t rl_flags; | 629 uint32_t rl_flags; |
630 struct rl_desc *rl_ring; 631}; 632 633struct rl_list_data { 634 struct mbuf *rl_tx_mbuf[RL_TX_DESC_CNT]; 635 struct mbuf *rl_rx_mbuf[RL_TX_DESC_CNT]; 636 int rl_tx_prodidx; 637 int rl_rx_prodidx; --- 21 unchanged lines hidden (view full) --- 659 bus_space_handle_t rl_bhandle; /* bus space handle */ 660 bus_space_tag_t rl_btag; /* bus space tag */ 661 struct resource *rl_res; 662 struct resource *rl_irq; 663 void *rl_intrhand; 664 device_t rl_miibus; 665 bus_dma_tag_t rl_parent_tag; 666 bus_dma_tag_t rl_tag; | 630 struct rl_desc *rl_ring; 631}; 632 633struct rl_list_data { 634 struct mbuf *rl_tx_mbuf[RL_TX_DESC_CNT]; 635 struct mbuf *rl_rx_mbuf[RL_TX_DESC_CNT]; 636 int rl_tx_prodidx; 637 int rl_rx_prodidx; --- 21 unchanged lines hidden (view full) --- 659 bus_space_handle_t rl_bhandle; /* bus space handle */ 660 bus_space_tag_t rl_btag; /* bus space tag */ 661 struct resource *rl_res; 662 struct resource *rl_irq; 663 void *rl_intrhand; 664 device_t rl_miibus; 665 bus_dma_tag_t rl_parent_tag; 666 bus_dma_tag_t rl_tag; |
667 u_int8_t rl_unit; /* interface number */ 668 u_int8_t rl_type; | 667 uint8_t rl_unit; /* interface number */ 668 uint8_t rl_type; |
669 int rl_eecmd_read; | 669 int rl_eecmd_read; |
670 u_int8_t rl_stats_no_timeout; | 670 uint8_t rl_stats_no_timeout; |
671 int rl_txthresh; 672 struct rl_chain_data rl_cdata; 673 struct rl_list_data rl_ldata; 674 struct callout_handle rl_stat_ch; 675 struct mtx rl_mtx; 676 struct mbuf *rl_head; 677 struct mbuf *rl_tail; | 671 int rl_txthresh; 672 struct rl_chain_data rl_cdata; 673 struct rl_list_data rl_ldata; 674 struct callout_handle rl_stat_ch; 675 struct mtx rl_mtx; 676 struct mbuf *rl_head; 677 struct mbuf *rl_tail; |
678 u_int32_t rl_hwrev; 679 u_int32_t rl_rxlenmask; | 678 uint32_t rl_hwrev; 679 uint32_t rl_rxlenmask; |
680 int rl_testmode; 681 int suspended; /* 0 = normal 1 = suspended */ 682#ifdef DEVICE_POLLING 683 int rxcycles; 684#endif 685}; 686 687#define RL_LOCK(_sc) mtx_lock(&(_sc)->rl_mtx) --- 186 unchanged lines hidden --- | 680 int rl_testmode; 681 int suspended; /* 0 = normal 1 = suspended */ 682#ifdef DEVICE_POLLING 683 int rxcycles; 684#endif 685}; 686 687#define RL_LOCK(_sc) mtx_lock(&(_sc)->rl_mtx) --- 186 unchanged lines hidden --- |