afeimpl.h revision bdb9230ac765cb7af3fc1f4119caf2c5720dceb3
1959748cbddf37d4734c107dadfa449e076045e3gd * Solaris driver for ethernet cards based on the ADMtek Centaur
1959748cbddf37d4734c107dadfa449e076045e3gd * Copyright (c) 2007 by Garrett D'Amore <garrett@damore.org>.
1959748cbddf37d4734c107dadfa449e076045e3gd * All rights reserved.
1959748cbddf37d4734c107dadfa449e076045e3gd * Redistribution and use in source and binary forms, with or without
1959748cbddf37d4734c107dadfa449e076045e3gd * modification, are permitted provided that the following conditions
1959748cbddf37d4734c107dadfa449e076045e3gd * are met:
1959748cbddf37d4734c107dadfa449e076045e3gd * 1. Redistributions of source code must retain the above copyright
1959748cbddf37d4734c107dadfa449e076045e3gd * notice, this list of conditions and the following disclaimer.
1959748cbddf37d4734c107dadfa449e076045e3gd * 2. Redistributions in binary form must reproduce the above copyright
1959748cbddf37d4734c107dadfa449e076045e3gd * notice, this list of conditions and the following disclaimer in the
1959748cbddf37d4734c107dadfa449e076045e3gd * documentation and/or other materials provided with the distribution.
1959748cbddf37d4734c107dadfa449e076045e3gd * 3. Neither the name of the author nor the names of any co-contributors
1959748cbddf37d4734c107dadfa449e076045e3gd * may be used to endorse or promote products derived from this software
1959748cbddf37d4734c107dadfa449e076045e3gd * without specific prior written permission.
1959748cbddf37d4734c107dadfa449e076045e3gd * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
1959748cbddf37d4734c107dadfa449e076045e3gd * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1959748cbddf37d4734c107dadfa449e076045e3gd * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1959748cbddf37d4734c107dadfa449e076045e3gd * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
1959748cbddf37d4734c107dadfa449e076045e3gd * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
1959748cbddf37d4734c107dadfa449e076045e3gd * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
1959748cbddf37d4734c107dadfa449e076045e3gd * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
1959748cbddf37d4734c107dadfa449e076045e3gd * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
1959748cbddf37d4734c107dadfa449e076045e3gd * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
1959748cbddf37d4734c107dadfa449e076045e3gd * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
1959748cbddf37d4734c107dadfa449e076045e3gd * POSSIBILITY OF SUCH DAMAGE.
bdb9230ac765cb7af3fc1f4119caf2c5720dceb3Garrett D'Amore * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
96fb08b94cc33de779f46f36c30d77230f1a8c2fgd * Use is subject to license terms.
1959748cbddf37d4734c107dadfa449e076045e3gd * Compile time tunables.
1959748cbddf37d4734c107dadfa449e076045e3gd#define AFE_TXRECLAIM 8 /* when to reclaim tx buffers (txavail) */
bdb9230ac765cb7af3fc1f4119caf2c5720dceb3Garrett D'Amore#define AFE_WDOGTIMER 5000 /* how often we check for tx hang (in msec) */
1959748cbddf37d4734c107dadfa449e076045e3gd#define AFE_HEADROOM 34 /* headroom in packet (should be 2 modulo 4) */
1959748cbddf37d4734c107dadfa449e076045e3gd * Constants, do not change.
1959748cbddf37d4734c107dadfa449e076045e3gd#define AFE_BUFSZ (1664) /* big enough for a vlan frame */
1959748cbddf37d4734c107dadfa449e076045e3gd * Card models.
1959748cbddf37d4734c107dadfa449e076045e3gdtypedef enum {
1959748cbddf37d4734c107dadfa449e076045e3gd * Device instance structure, one per PCI card.
1959748cbddf37d4734c107dadfa449e076045e3gd * Register and DMA access.
1959748cbddf37d4734c107dadfa449e076045e3gd * Receive descriptors.
1959748cbddf37d4734c107dadfa449e076045e3gd * Transmit descriptors.
1959748cbddf37d4734c107dadfa449e076045e3gd * Transceiver stuff.
1959748cbddf37d4734c107dadfa449e076045e3gd * Address management.
1959748cbddf37d4734c107dadfa449e076045e3gd * Descriptor. We use rings rather than chains.
1959748cbddf37d4734c107dadfa449e076045e3gd * Receive descriptor fields.
1959748cbddf37d4734c107dadfa449e076045e3gd#define RXSTAT_RXLEN 0x3FFF0000U /* frame length, incl. crc */
1959748cbddf37d4734c107dadfa449e076045e3gd#define RXSTAT_GROUP 0x00000400U /* multicast/brdcast frame */
1959748cbddf37d4734c107dadfa449e076045e3gd#define RXSTAT_COLLSEEN 0x00000040U /* late collision seen */
1959748cbddf37d4734c107dadfa449e076045e3gd#define RXSTAT_WATCHDOG 0x00000010U /* receive watchdog */
1959748cbddf37d4734c107dadfa449e076045e3gd * Transmit descriptor fields.
1959748cbddf37d4734c107dadfa449e076045e3gd#define TXSTAT_EXCOLL 0x00000100U /* excessive collisions */
1959748cbddf37d4734c107dadfa449e076045e3gd#define TXCTL_INTCMPLTE 0x80000000U /* interrupt completed */
1959748cbddf37d4734c107dadfa449e076045e3gd#define TXCTL_HASHPERF 0x00400000U /* hash perfect mode */
1959748cbddf37d4734c107dadfa449e076045e3gd * Interface flags.
1959748cbddf37d4734c107dadfa449e076045e3gd#define AFE_HASFIBER 0x4 /* internal phy supports fiber (AFE_PHY_MCR) */
1959748cbddf37d4734c107dadfa449e076045e3gd * Register definitions located in afe.h exported header file.
1959748cbddf37d4734c107dadfa449e076045e3gd * Macros to simplify hardware access.
1959748cbddf37d4734c107dadfa449e076045e3gd ddi_get32(afep->afe_regshandle, (uint32_t *)(afep->afe_regs + reg))
1959748cbddf37d4734c107dadfa449e076045e3gd ddi_get16(afep->afe_regshandle, (uint16_t *)(afep->afe_regs + reg))
1959748cbddf37d4734c107dadfa449e076045e3gd ddi_put32(afep->afe_regshandle, (uint32_t *)(afep->afe_regs + reg), val)
1959748cbddf37d4734c107dadfa449e076045e3gd ddi_put16(afep->afe_regshandle, (uint16_t *)(afep->afe_regs + reg), val)
1959748cbddf37d4734c107dadfa449e076045e3gd#define SETBIT(afep, reg, val) PUTCSR(afep, reg, GETCSR(afep, reg) | (val))
1959748cbddf37d4734c107dadfa449e076045e3gd#define CLRBIT(afep, reg, val) PUTCSR(afep, reg, GETCSR(afep, reg) & ~(val))
1959748cbddf37d4734c107dadfa449e076045e3gd#endif /* _KERNEL */
1959748cbddf37d4734c107dadfa449e076045e3gd#endif /* _AFEIMPL_H */