mxfeimpl.h revision 29e83d4b25fd82feb8e0e0fbe89f7e2a8438533d
/*
* Solaris driver for ethernet cards based on the Macronix 98715
*
* Copyright (c) 2007 by Garrett D'Amore <garrett@damore.org>.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* 3. Neither the name of the author nor the names of any co-contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER AND CONTRIBUTORS ``AS IS''
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
* POSSIBILITY OF SUCH DAMAGE.
*/
#ifndef _MXFEIMPL_H
#define _MXFEIMPL_H
#pragma ident "%Z%%M% %I% %E% SMI"
/*
* This entire file is private to the MXFE driver.
*/
#ifdef _KERNEL
/*
* Compile time tunables.
*/
/*
* Constants, do not change. The bufsize is setup to make sure it comes
* in at a whole number of cache lines, even for 32-long-word aligned
* caches.
*/
typedef struct mxfe_card mxfe_card_t;
typedef struct mxfe_rxbuf mxfe_rxbuf_t;
typedef struct mxfe_txbuf mxfe_txbuf_t;
typedef struct mxfe_desc mxfe_desc_t;
struct mxfe_card {
char *card_cardname; /* Description of the card */
unsigned card_model; /* Card specific flags */
};
struct mxfe_nd {
char *nd_name;
};
/*
* Device instance structure, one per PCI card.
*/
struct mxfe {
int mxfe_flags;
/*
* Register access.
*/
/*
* Receive descriptors.
*/
int mxfe_rxhead;
struct mxfe_desc *mxfe_rxdescp;
struct mxfe_rxbuf **mxfe_rxbufs;
/*
* Transmit descriptors.
*/
int mxfe_txreclaim;
int mxfe_txsend;
int mxfe_txavail;
struct mxfe_desc *mxfe_txdescp;
struct mxfe_txbuf **mxfe_txbufs;
/*
* Address management.
*/
/*
* Link state.
*/
int mxfe_linkstate;
int mxfe_lastifspeed;
int mxfe_lastduplex;
int mxfe_lastlinkup;
int mxfe_linkup;
int mxfe_duplex;
int mxfe_ifspeed;
/*
* NDD related support.
*/
/*
* Transceiver stuff.
*/
int mxfe_phyaddr;
int mxfe_phyid;
int mxfe_phyinuse;
int mxfe_adv_aneg;
int mxfe_adv_100T4;
int mxfe_adv_100fdx;
int mxfe_adv_100hdx;
int mxfe_adv_10fdx;
int mxfe_adv_10hdx;
int mxfe_forcephy;
int mxfe_bmsr;
int mxfe_anlpar;
int mxfe_aner;
/*
* Kstats.
*/
unsigned mxfe_norcvbuf;
unsigned mxfe_noxmtbuf;
unsigned mxfe_errrcv;
unsigned mxfe_errxmt;
unsigned mxfe_missed;
unsigned mxfe_underflow;
unsigned mxfe_overflow;
unsigned mxfe_align_errors;
unsigned mxfe_fcs_errors;
unsigned mxfe_carrier_errors;
unsigned mxfe_collisions;
unsigned mxfe_ex_collisions;
unsigned mxfe_tx_late_collisions;
unsigned mxfe_defer_xmts;
unsigned mxfe_first_collisions;
unsigned mxfe_multi_collisions;
unsigned mxfe_sqe_errors;
unsigned mxfe_macxmt_errors;
unsigned mxfe_macrcv_errors;
unsigned mxfe_toolong_errors;
unsigned mxfe_runt;
unsigned mxfe_jabber;
};
struct mxfe_rxbuf {
};
struct mxfe_txbuf {
/* bcopy version of tx */
};
/*
* Descriptor. We use rings rather than chains.
*/
struct mxfe_desc {
unsigned desc_status;
unsigned desc_control;
unsigned desc_buffer1;
unsigned desc_buffer2;
};
/*
* Receive descriptor fields.
*/
/*
* Transmit descriptor fields.
*/
/*
* Interface flags.
*/
/*
* Link flags...
*/
/*
* Card models.
*/
#define MXFE_98715 0x1
#define MXFE_98715A 0x2
#define MXFE_98715AEC 0x3
#define MXFE_98715B 0x4
#define MXFE_98725 0x5
#define MXFE_98713 0x6
#define MXFE_98713A 0x7
#define MXFE_PNICII 0x8
/*
* Register definitions located in mxfe.h exported header file.
*/
/*
* Macros to simplify hardware access. Note that the reg/4 is used to
* help with pointer arithmetic.
*/
/*
* Debugging flags.
*/
#define DWARN 0x0001
#define DINTR 0x0002
#define DWSRV 0x0004
#define DMACID 0x0008
#define DDLPI 0x0010
#define DPHY 0x0020
#define DPCI 0x0040
#define DCHATTY 0x0080
#define DDMA 0x0100
#define DLINK 0x0200
#define DSROM 0x0400
#define DRECV 0x0800
#define DXMIT 0x1000
#ifdef DEBUG
#else
#endif
#endif /* _KERNEL */
#endif /* _MXFEIMPL_H */