if_nfereg.h revision 162212
1159967Sobrien/* $OpenBSD: if_nfereg.h,v 1.16 2006/02/22 19:23:44 damien Exp $ */ 2159952Sobrien 3159952Sobrien/*- 4159952Sobrien * Copyright (c) 2005 Jonathan Gray <jsg@openbsd.org> 5159952Sobrien * 6159952Sobrien * Permission to use, copy, modify, and distribute this software for any 7159952Sobrien * purpose with or without fee is hereby granted, provided that the above 8159952Sobrien * copyright notice and this permission notice appear in all copies. 9159952Sobrien * 10159952Sobrien * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 11159952Sobrien * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 12159952Sobrien * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 13159952Sobrien * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 14159952Sobrien * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 15159952Sobrien * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 16159952Sobrien * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 17159967Sobrien * 18159967Sobrien * $FreeBSD: head/sys/dev/nfe/if_nfereg.h 162212 2006-09-11 07:31:55Z obrien $ 19159952Sobrien */ 20159952Sobrien 21159952Sobrien#define NFE_PCI_BA 0x10 22159952Sobrien 23159952Sobrien#define NFE_RX_RING_COUNT 128 24159952Sobrien#define NFE_TX_RING_COUNT 256 25159952Sobrien 26159952Sobrien#define NFE_JBYTES (ETHER_MAX_LEN_JUMBO + ETHER_ALIGN) 27159952Sobrien#define NFE_JPOOL_COUNT (NFE_RX_RING_COUNT + 64) 28159952Sobrien#define NFE_JPOOL_SIZE (NFE_JPOOL_COUNT * NFE_JBYTES) 29159952Sobrien 30159952Sobrien#define NFE_MAX_SCATTER (NFE_TX_RING_COUNT - 2) 31159952Sobrien 32159952Sobrien#define NFE_IRQ_STATUS 0x000 33159952Sobrien#define NFE_IRQ_MASK 0x004 34159952Sobrien#define NFE_SETUP_R6 0x008 35159952Sobrien#define NFE_IMTIMER 0x00c 36159952Sobrien#define NFE_MISC1 0x080 37159952Sobrien#define NFE_TX_CTL 0x084 38159952Sobrien#define NFE_TX_STATUS 0x088 39159952Sobrien#define NFE_RXFILTER 0x08c 40159952Sobrien#define NFE_RXBUFSZ 0x090 41159952Sobrien#define NFE_RX_CTL 0x094 42159952Sobrien#define NFE_RX_STATUS 0x098 43159952Sobrien#define NFE_RNDSEED 0x09c 44159952Sobrien#define NFE_SETUP_R1 0x0a0 45159952Sobrien#define NFE_SETUP_R2 0x0a4 46159952Sobrien#define NFE_MACADDR_HI 0x0a8 47159952Sobrien#define NFE_MACADDR_LO 0x0ac 48159952Sobrien#define NFE_MULTIADDR_HI 0x0b0 49159952Sobrien#define NFE_MULTIADDR_LO 0x0b4 50159952Sobrien#define NFE_MULTIMASK_HI 0x0b8 51159952Sobrien#define NFE_MULTIMASK_LO 0x0bc 52159952Sobrien#define NFE_PHY_IFACE 0x0c0 53159952Sobrien#define NFE_TX_RING_ADDR_LO 0x100 54159952Sobrien#define NFE_RX_RING_ADDR_LO 0x104 55159952Sobrien#define NFE_RING_SIZE 0x108 56159952Sobrien#define NFE_TX_UNK 0x10c 57159952Sobrien#define NFE_LINKSPEED 0x110 58159952Sobrien#define NFE_SETUP_R5 0x130 59159952Sobrien#define NFE_SETUP_R3 0x13C 60159952Sobrien#define NFE_SETUP_R7 0x140 61159952Sobrien#define NFE_RXTX_CTL 0x144 62159952Sobrien#define NFE_TX_RING_ADDR_HI 0x148 63159952Sobrien#define NFE_RX_RING_ADDR_HI 0x14c 64159952Sobrien#define NFE_PHY_STATUS 0x180 65159952Sobrien#define NFE_SETUP_R4 0x184 66159952Sobrien#define NFE_STATUS 0x188 67159952Sobrien#define NFE_PHY_SPEED 0x18c 68159952Sobrien#define NFE_PHY_CTL 0x190 69159952Sobrien#define NFE_PHY_DATA 0x194 70159952Sobrien#define NFE_WOL_CTL 0x200 71159952Sobrien#define NFE_PATTERN_CRC 0x204 72159952Sobrien#define NFE_PATTERN_MASK 0x208 73159952Sobrien#define NFE_PWR_CAP 0x268 74159952Sobrien#define NFE_PWR_STATE 0x26c 75159952Sobrien#define NFE_VTAG_CTL 0x300 76159952Sobrien 77159952Sobrien#define NFE_PHY_ERROR 0x00001 78159952Sobrien#define NFE_PHY_WRITE 0x00400 79159952Sobrien#define NFE_PHY_BUSY 0x08000 80159952Sobrien#define NFE_PHYADD_SHIFT 5 81159952Sobrien 82159952Sobrien#define NFE_STATUS_MAGIC 0x140000 83159952Sobrien 84159952Sobrien#define NFE_R1_MAGIC 0x16070f 85159952Sobrien#define NFE_R2_MAGIC 0x16 86159952Sobrien#define NFE_R4_MAGIC 0x08 87159952Sobrien#define NFE_R6_MAGIC 0x03 88159952Sobrien#define NFE_WOL_MAGIC 0x7770 89159952Sobrien#define NFE_RX_START 0x01 90159952Sobrien#define NFE_TX_START 0x01 91159952Sobrien 92159952Sobrien#define NFE_IRQ_RXERR 0x0001 93159952Sobrien#define NFE_IRQ_RX 0x0002 94159952Sobrien#define NFE_IRQ_RX_NOBUF 0x0004 95159952Sobrien#define NFE_IRQ_TXERR 0x0008 96159952Sobrien#define NFE_IRQ_TX_DONE 0x0010 97159952Sobrien#define NFE_IRQ_TIMER 0x0020 98159952Sobrien#define NFE_IRQ_LINK 0x0040 99159952Sobrien#define NFE_IRQ_TXERR2 0x0080 100159952Sobrien#define NFE_IRQ_TX1 0x0100 101159952Sobrien 102159952Sobrien#define NFE_IRQ_WANTED \ 103159952Sobrien (NFE_IRQ_RXERR | NFE_IRQ_RX_NOBUF | NFE_IRQ_RX | \ 104159952Sobrien NFE_IRQ_TXERR | NFE_IRQ_TXERR2 | NFE_IRQ_TX_DONE | \ 105159952Sobrien NFE_IRQ_LINK) 106159952Sobrien 107159952Sobrien#define NFE_RXTX_KICKTX 0x0001 108159952Sobrien#define NFE_RXTX_BIT1 0x0002 109159952Sobrien#define NFE_RXTX_BIT2 0x0004 110159952Sobrien#define NFE_RXTX_RESET 0x0010 111159952Sobrien#define NFE_RXTX_VTAG_STRIP 0x0040 112159952Sobrien#define NFE_RXTX_VTAG_INSERT 0x0080 113159952Sobrien#define NFE_RXTX_RXCSUM 0x0400 114159952Sobrien#define NFE_RXTX_V2MAGIC 0x2100 115159952Sobrien#define NFE_RXTX_V3MAGIC 0x2200 116159952Sobrien#define NFE_RXFILTER_MAGIC 0x007f0008 117159952Sobrien#define NFE_U2M (1 << 5) 118159952Sobrien#define NFE_PROMISC (1 << 7) 119159952Sobrien 120159952Sobrien/* default interrupt moderation timer of 128us */ 121159952Sobrien#define NFE_IM_DEFAULT ((128 * 100) / 1024) 122159952Sobrien 123159952Sobrien#define NFE_VTAG_ENABLE (1 << 13) 124159952Sobrien 125159952Sobrien#define NFE_PWR_VALID (1 << 8) 126159952Sobrien#define NFE_PWR_WAKEUP (1 << 15) 127159952Sobrien 128159952Sobrien#define NFE_MEDIA_SET 0x10000 129159952Sobrien#define NFE_MEDIA_1000T 0x00032 130159952Sobrien#define NFE_MEDIA_100TX 0x00064 131159952Sobrien#define NFE_MEDIA_10T 0x003e8 132159952Sobrien 133159952Sobrien#define NFE_PHY_100TX (1 << 0) 134159952Sobrien#define NFE_PHY_1000T (1 << 1) 135159952Sobrien#define NFE_PHY_HDX (1 << 8) 136159952Sobrien 137159952Sobrien#define NFE_MISC1_MAGIC 0x003b0f3c 138159952Sobrien#define NFE_MISC1_HDX (1 << 1) 139159952Sobrien 140159952Sobrien#define NFE_SEED_MASK 0x0003ff00 141159952Sobrien#define NFE_SEED_10T 0x00007f00 142159952Sobrien#define NFE_SEED_100TX 0x00002d00 143159952Sobrien#define NFE_SEED_1000T 0x00007400 144159952Sobrien 145159952Sobrien/* Rx/Tx descriptor */ 146159952Sobrienstruct nfe_desc32 { 147159952Sobrien uint32_t physaddr; 148159952Sobrien uint16_t length; 149159952Sobrien uint16_t flags; 150159952Sobrien#define NFE_RX_FIXME_V1 0x6004 151159952Sobrien#define NFE_RX_VALID_V1 (1 << 0) 152159952Sobrien#define NFE_TX_ERROR_V1 0x7808 153159952Sobrien#define NFE_TX_LASTFRAG_V1 (1 << 0) 154159967Sobrien#define NFE_RX_ERROR1_V1 (1<<7) 155159967Sobrien#define NFE_RX_ERROR2_V1 (1<<8) 156159967Sobrien#define NFE_RX_ERROR3_V1 (1<<9) 157159967Sobrien#define NFE_RX_ERROR4_V1 (1<<10) 158159952Sobrien} __packed; 159159952Sobrien 160159952Sobrien#define NFE_V1_TXERR "\020" \ 161159952Sobrien "\14TXERROR\13UNDERFLOW\12LATECOLLISION\11LOSTCARRIER\10DEFERRED" \ 162159952Sobrien "\08FORCEDINT\03RETRY\00LASTPACKET" 163159952Sobrien 164159952Sobrien/* V2 Rx/Tx descriptor */ 165159952Sobrienstruct nfe_desc64 { 166159952Sobrien uint32_t physaddr[2]; 167159952Sobrien uint32_t vtag; 168159952Sobrien#define NFE_RX_VTAG (1 << 16) 169159952Sobrien#define NFE_TX_VTAG (1 << 18) 170159952Sobrien uint16_t length; 171159952Sobrien uint16_t flags; 172159952Sobrien#define NFE_RX_FIXME_V2 0x4300 173159952Sobrien#define NFE_RX_VALID_V2 (1 << 13) 174159952Sobrien#define NFE_TX_ERROR_V2 0x5c04 175159952Sobrien#define NFE_TX_LASTFRAG_V2 (1 << 13) 176159967Sobrien#define NFE_RX_IP_CSUMOK_V2 0x1000 177159967Sobrien#define NFE_RX_UDP_CSUMOK_V2 0x1400 178159967Sobrien#define NFE_RX_TCP_CSUMOK_V2 0x1800 179159967Sobrien#define NFE_RX_ERROR1_V2 (1<<2) 180159967Sobrien#define NFE_RX_ERROR2_V2 (1<<3) 181159967Sobrien#define NFE_RX_ERROR3_V2 (1<<4) 182159967Sobrien#define NFE_RX_ERROR4_V2 (1<<5) 183159952Sobrien} __packed; 184159952Sobrien 185159952Sobrien#define NFE_V2_TXERR "\020" \ 186159952Sobrien "\14FORCEDINT\13LASTPACKET\12UNDERFLOW\10LOSTCARRIER\09DEFERRED\02RETRY" 187159952Sobrien 188159952Sobrien/* flags common to V1/V2 descriptors */ 189159952Sobrien#define NFE_RX_CSUMOK 0x1c00 190159952Sobrien#define NFE_RX_ERROR (1 << 14) 191159952Sobrien#define NFE_RX_READY (1 << 15) 192159952Sobrien#define NFE_TX_TCP_CSUM (1 << 10) 193159952Sobrien#define NFE_TX_IP_CSUM (1 << 11) 194159952Sobrien#define NFE_TX_VALID (1 << 15) 195159952Sobrien 196159952Sobrien#define NFE_READ(sc, reg) \ 197159967Sobrien bus_space_read_4((sc)->nfe_memt, (sc)->nfe_memh, (reg)) 198159952Sobrien 199159952Sobrien#define NFE_WRITE(sc, reg, val) \ 200159967Sobrien bus_space_write_4((sc)->nfe_memt, (sc)->nfe_memh, (reg), (val)) 201159967Sobrien 202159967Sobrien#ifndef PCI_VENDOR_NVIDIA 203159967Sobrien#define PCI_VENDOR_NVIDIA 0x10DE 204159967Sobrien#endif 205159967Sobrien 206159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE_LAN 0x01C3 207159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE2_LAN 0x0066 208159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN1 0x00D6 209159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1 0x0086 210159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2 0x008C 211159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN 0x00E6 212159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN4 0x00DF 213159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE4_LAN1 0x0056 214159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE4_LAN2 0x0057 215159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP04_LAN1 0x0037 216159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP04_LAN2 0x0038 217159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE430_LAN1 0x0268 218159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE430_LAN2 0x0269 219159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP55_LAN1 0x0372 220159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP55_LAN2 0x0373 221162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP61_LAN1 0x03e5 222162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP61_LAN2 0x03e6 223162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP61_LAN3 0x03ee 224162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP61_LAN4 0x03ef 225162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP65_LAN1 0x0450 226162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP65_LAN2 0x0451 227162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP65_LAN3 0x0452 228162212Sobrien#define PCI_PRODUCT_NVIDIA_MCP65_LAN4 0x0453 229159967Sobrien 230159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN2 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN1 231159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN3 PCI_PRODUCT_NVIDIA_NFORCE2_400_LAN2 232159967Sobrien#define PCI_PRODUCT_NVIDIA_NFORCE3_LAN5 PCI_PRODUCT_NVIDIA_NFORCE3_250_LAN 233159967Sobrien#define PCI_PRODUCT_NVIDIA_CK804_LAN1 PCI_PRODUCT_NVIDIA_NFORCE4_LAN1 234159967Sobrien#define PCI_PRODUCT_NVIDIA_CK804_LAN2 PCI_PRODUCT_NVIDIA_NFORCE4_LAN2 235159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP51_LAN1 PCI_PRODUCT_NVIDIA_NFORCE430_LAN1 236159967Sobrien#define PCI_PRODUCT_NVIDIA_MCP51_LAN2 PCI_PRODUCT_NVIDIA_NFORCE430_LAN2 237159967Sobrien 238159967Sobrien#define NFE_DEBUG 0x0000 239159967Sobrien#define NFE_DEBUG_INIT 0x0001 240159967Sobrien#define NFE_DEBUG_RUNNING 0x0002 241159967Sobrien#define NFE_DEBUG_DEINIT 0x0004 242159967Sobrien#define NFE_DEBUG_IOCTL 0x0008 243159967Sobrien#define NFE_DEBUG_INTERRUPT 0x0010 244159967Sobrien#define NFE_DEBUG_API 0x0020 245159967Sobrien#define NFE_DEBUG_LOCK 0x0040 246159967Sobrien#define NFE_DEBUG_BROKEN 0x0080 247159967Sobrien#define NFE_DEBUG_MII 0x0100 248159967Sobrien#define NFE_DEBUG_ALL 0xFFFF 249