⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 if_devar.h

📁 国产CPU-龙芯(loongson)BIOS源代码
💻 H
📖 第 1 页 / 共 3 页
字号:
typedef enum {    TULIP_MEDIAPOLL_TIMER,		/* 100ms timer fired */    TULIP_MEDIAPOLL_FASTTIMER,		/* <100ms timer fired */    TULIP_MEDIAPOLL_LINKFAIL,		/* called from interrupt routine */    TULIP_MEDIAPOLL_LINKPASS,		/* called from interrupt routine */    TULIP_MEDIAPOLL_START,		/* start a media probe (called from reset) */    TULIP_MEDIAPOLL_TXPROBE_OK,		/* txprobe succeeded */    TULIP_MEDIAPOLL_TXPROBE_FAILED,	/* txprobe failed */    TULIP_MEDIAPOLL_MAX} tulip_mediapoll_event_t;typedef enum {    TULIP_LINK_DOWN,			/* Link is down */    TULIP_LINK_UP,			/* link is ok */    TULIP_LINK_UNKNOWN			/* we can't tell either way */} tulip_link_status_t;/* * This data structure is used to abstract out the quirks. * media_probe  = tries to determine the media type. * media_select = enables the current media (or autosenses) * media_poll	= autosenses media * media_preset = 21140, etal requires bit to set before the *		  the software reset; hence pre-set.  Should be *		  pre-reset but that's ugly. */typedef struct {    tulip_board_t bd_type;    void (*bd_media_probe)(tulip_softc_t * const sc);    void (*bd_media_select)(tulip_softc_t * const sc);    void (*bd_media_poll)(tulip_softc_t * const sc, tulip_mediapoll_event_t event);    void (*bd_media_preset)(tulip_softc_t * const sc);#if defined(__bsdi__) && _BSDI_VERSION >= 199701    struct ifmedia_entry *bd_media_list;    int bd_media_cnt;    int bd_media_options_mask;#endif} tulip_boardsw_t;/* * The next few declarations are for MII/PHY based board. * *    The first enumeration identifies a superset of various datums * that can be obtained from various PHY chips.  Not all PHYs will * support all datums. *    The modedata structure indicates what register contains * a datum, what mask is applied the register contents, and what the * result should be. *    The attr structure records information about a supported PHY. *    The phy structure records information about a PHY instance. */typedef enum {    PHY_MODE_10T,    PHY_MODE_100TX,    PHY_MODE_100T4,    PHY_MODE_FULLDUPLEX,    PHY_MODE_MAX} tulip_phy_mode_t;typedef struct {    u_int16_t pm_regno;    u_int16_t pm_mask;    u_int16_t pm_value;} tulip_phy_modedata_t;typedef struct {    u_int32_t attr_id;    u_int16_t attr_flags;#define	PHY_NEED_HARD_RESET	0x0001#define	PHY_DUAL_CYCLE_TA	0x0002    tulip_phy_modedata_t attr_modes[PHY_MODE_MAX];#ifdef TULIP_DEBUG    const char *attr_name;#endif} tulip_phy_attr_t;/* * Various probe states used when trying to autosense the media. */typedef enum {    TULIP_PROBE_INACTIVE,    TULIP_PROBE_PHYRESET,    TULIP_PROBE_PHYAUTONEG,    TULIP_PROBE_GPRTEST,    TULIP_PROBE_MEDIATEST,    TULIP_PROBE_FAILED} tulip_probe_state_t;typedef struct {    /*     * Transmit Statistics     */    u_int32_t dot3StatsSingleCollisionFrames;    u_int32_t dot3StatsMultipleCollisionFrames;    u_int32_t dot3StatsSQETestErrors;    u_int32_t dot3StatsDeferredTransmissions;    u_int32_t dot3StatsLateCollisions;    u_int32_t dot3StatsExcessiveCollisions;    u_int32_t dot3StatsCarrierSenseErrors;    u_int32_t dot3StatsInternalMacTransmitErrors;    u_int32_t dot3StatsInternalTransmitUnderflows;	/* not in rfc1650! */    u_int32_t dot3StatsInternalTransmitBabbles;		/* not in rfc1650! */    /*     * Receive Statistics     */    u_int32_t dot3StatsMissedFrames;	/* not in rfc1650! */    u_int32_t dot3StatsAlignmentErrors;    u_int32_t dot3StatsFCSErrors;    u_int32_t dot3StatsFrameTooLongs;    u_int32_t dot3StatsInternalMacReceiveErrors;} tulip_dot3_stats_t;/* * Now to important stuff.  This is softc structure (where does softc * come from??? No idea) for the tulip device.   * */struct _tulip_softc_t {#if defined(__NetBSD__) || defined(__OpenBSD__)    struct device tulip_dev;		/* base device */    void *tulip_ih;			/* intrrupt vectoring */    void *tulip_ats;			/* shutdown hook */    bus_space_tag_t tulip_bustag;	/* tag of CSR region being used */    bus_space_handle_t tulip_bushandle;	/* handle for CSR region being used */    pci_chipset_tag_t tulip_pc;#if !defined(__OpenBSD__)    struct ethercom tulip_ec;#endif    u_int8_t tulip_enaddr[ETHER_ADDR_LEN];#endif#if !defined(tulip_ifmedia) && defined(IFM_ETHER)    struct ifmedia tulip_ifmedia;#endif#if !defined(__NetBSD__)    struct arpcom tulip_ac;#endif    tulip_regfile_t tulip_csrs;    u_int32_t tulip_flags;#define	TULIP_WANTSETUP		0x00000001#define	TULIP_WANTHASHPERFECT	0x00000002#define	TULIP_WANTHASHONLY	0x00000004#define	TULIP_DOINGSETUP	0x00000008#define	TULIP_PRINTMEDIA	0x00000010#define	TULIP_TXPROBE_ACTIVE	0x00000020#define	TULIP_ALLMULTI		0x00000040#define	TULIP_WANTRXACT		0x00000080#define	TULIP_RXACT		0x00000100#define	TULIP_INRESET		0x00000200#define	TULIP_NEEDRESET		0x00000400#define	TULIP_SQETEST		0x00000800#define	TULIP_xxxxxx0		0x00001000#define	TULIP_xxxxxx1		0x00002000#define	TULIP_WANTTXSTART	0x00004000#define	TULIP_NEWTXTHRESH	0x00008000#define	TULIP_NOAUTOSENSE	0x00010000#define	TULIP_PRINTLINKUP	0x00020000#define	TULIP_LINKUP		0x00040000#define	TULIP_RXBUFSLOW		0x00080000#define	TULIP_NOMESSAGES	0x00100000#define	TULIP_SYSTEMERROR	0x00200000#define	TULIP_TIMEOUTPENDING	0x00400000#define	TULIP_xxxxxx2		0x00800000#define	TULIP_TRYNWAY		0x01000000#define	TULIP_DIDNWAY		0x02000000#define	TULIP_RXIGNORE		0x04000000#define	TULIP_PROBE1STPASS	0x08000000#define	TULIP_DEVICEPROBE	0x10000000#define	TULIP_PROMISC		0x20000000#define	TULIP_HASHONLY		0x40000000#define	TULIP_xxxxxx3		0x80000000    /* only 4 bits left! */    u_int32_t tulip_features;	/* static bits indicating features of chip */#define	TULIP_HAVE_GPR		0x00000001	/* have gp register (140[A]) */#define	TULIP_HAVE_RXBADOVRFLW	0x00000002	/* RX corrupts on overflow */#define	TULIP_HAVE_POWERMGMT	0x00000004	/* Snooze/sleep modes */#define	TULIP_HAVE_MII		0x00000008	/* Some medium on MII */#define	TULIP_HAVE_SIANWAY	0x00000010	/* SIA does NWAY */#define	TULIP_HAVE_DUALSENSE	0x00000020	/* SIA senses both AUI & TP */#define	TULIP_HAVE_SIAGP	0x00000040	/* SIA has a GP port */#define	TULIP_HAVE_BROKEN_HASH	0x00000080	/* Broken Multicast Hash */#define	TULIP_HAVE_ISVSROM	0x00000100	/* uses ISV SROM Format */#define	TULIP_HAVE_BASEROM	0x00000200	/* Board ROM can be cloned */#define	TULIP_HAVE_SLAVEDROM	0x00000400	/* Board ROM cloned */#define	TULIP_HAVE_SLAVEDINTR	0x00000800	/* Board slaved interrupt */#define	TULIP_HAVE_SHAREDINTR	0x00001000	/* Board shares interrupts */#define	TULIP_HAVE_OKROM	0x00002000	/* ROM was recognized */#define	TULIP_HAVE_NOMEDIA	0x00004000	/* did not detect any media */#define	TULIP_HAVE_STOREFWD	0x00008000	/* have CMD_STOREFWD */#define	TULIP_HAVE_SIA100	0x00010000	/* has LS100 in SIA status */#define	TULIP_HAVE_OKSROM	0x00020000	/* SROM CRC is OK */    u_int32_t tulip_intrmask;	/* our copy of csr_intr */    u_int32_t tulip_cmdmode;	/* our copy of csr_cmdmode */    u_int32_t tulip_last_system_error : 3;	/* last system error (only value is TULIP_SYSTEMERROR is also set) */    u_int32_t tulip_txtimer : 2;	/* transmission timer */    u_int32_t tulip_system_errors;	/* number of system errors encountered */    u_int32_t tulip_statusbits;	/* status bits from CSR5 that may need to be printed */    tulip_media_info_t *tulip_mediums[TULIP_MEDIA_MAX];	/* indexes into mediainfo */    tulip_media_t tulip_media;			/* current media type */    u_int32_t tulip_abilities;	/* remote system's abiltities (as defined in IEEE 802.3u) */    u_int8_t tulip_revinfo;			/* revision of chip */    u_int8_t tulip_phyaddr;			/* 0..31 -- address of current phy */    u_int8_t tulip_gpinit;			/* active pins on 21140 */    u_int8_t tulip_gpdata;			/* default gpdata for 21140 */    struct {	u_int8_t probe_count;			/* count of probe operations */	int32_t probe_timeout;			/* time in ms of probe timeout */	tulip_probe_state_t probe_state;	/* current media probe state */	tulip_media_t probe_media;		/* current media being probed */	u_int32_t probe_mediamask;		/* medias checked */	u_int32_t probe_passes;			/* times autosense failed */	u_int32_t probe_txprobes;		/* txprobes attempted */    } tulip_probe;#define	tulip_probe_count	tulip_probe.probe_count#define	tulip_probe_timeout	tulip_probe.probe_timeout#define	tulip_probe_state	tulip_probe.probe_state#define	tulip_probe_media	tulip_probe.probe_media#define	tulip_probe_mediamask	tulip_probe.probe_mediamask#define	tulip_probe_passes	tulip_probe.probe_passes    tulip_chipid_t tulip_chipid;		/* type of chip we are using */    const tulip_boardsw_t *tulip_boardsw;	/* board/chip characteristics */    tulip_softc_t *tulip_slaves;		/* slaved devices (ZX3xx) */#if defined(TULIP_DEBUG)    /*     * Debugging/Statistical information     */    struct {	tulip_media_t dbg_last_media;	u_int32_t dbg_intrs;	u_int32_t dbg_media_probes;	u_int32_t dbg_txprobe_nocarr;	u_int32_t dbg_txprobe_exccoll;	u_int32_t dbg_link_downed;	u_int32_t dbg_link_suspected;	u_int32_t dbg_link_intrs;	u_int32_t dbg_link_pollintrs;	u_int32_t dbg_link_failures;	u_int32_t dbg_nway_starts;	u_int32_t dbg_nway_failures;	u_int16_t dbg_phyregs[32][4];	u_int32_t dbg_rxlowbufs;	u_int32_t dbg_rxintrs;	u_int32_t dbg_last_rxintrs;	u_int32_t dbg_high_rxintrs_hz;	u_int32_t dbg_txprobes_ok[TULIP_MEDIA_MAX];	u_int32_t dbg_txprobes_failed[TULIP_MEDIA_MAX];	u_int32_t dbg_events[TULIP_MEDIAPOLL_MAX];	u_int32_t dbg_rxpktsperintr[TULIP_RXDESCS];    } tulip_dbg;#endif#if defined(TULIP_PERFSTATS)#define	TULIP_PERF_CURRENT	0#define	TULIP_PERF_PREVIOUS	1#define	TULIP_PERF_TOTAL	2#define	TULIP_PERF_MAX		3    struct tulip_perfstats {	u_quad_t perf_intr_cycles;	u_quad_t perf_ifstart_cycles;	u_quad_t perf_ifstart_one_cycles;	u_quad_t perf_ifioctl_cycles;	u_quad_t perf_ifwatchdog_cycles;	u_quad_t perf_timeout_cycles;	u_quad_t perf_txput_cycles;	u_quad_t perf_txintr_cycles;	u_quad_t perf_rxintr_cycles;	u_quad_t perf_rxget_cycles;	unsigned perf_intr;	unsigned perf_ifstart;	unsigned perf_ifstart_one;	unsigned perf_ifioctl;	unsigned perf_ifwatchdog;	unsigned perf_timeout;	unsigned perf_txput;	unsigned perf_txintr;	unsigned perf_rxintr;	unsigned perf_rxget;    } tulip_perfstats[TULIP_PERF_MAX];#define	tulip_curperfstats		tulip_perfstats[TULIP_PERF_CURRENT]#endif    struct ifqueue tulip_txq;    struct ifqueue tulip_rxq;    tulip_dot3_stats_t tulip_dot3stats;    tulip_ringinfo_t tulip_rxinfo;    tulip_ringinfo_t tulip_txinfo;    tulip_media_info_t tulip_mediainfo[10];    /*     * The setup buffers for sending the setup frame to the chip.     * one is the one being sent while the other is the one being     * filled.     */    u_int32_t tulip_setupbuf[192/sizeof(u_int32_t)];    u_int32_t tulip_setupdata[192/sizeof(u_int32_t)];    char tulip_boardid[16];		/* buffer for board ID */    u_int8_t tulip_rombuf[128];#if defined(__NetBSD__)    struct device *tulip_pci_busno;	/* needed for multiport boards */#else    u_int8_t tulip_pci_busno;		/* needed for multiport boards */#endif    u_int8_t tulip_pci_devno;		/* needed for multiport boards */    u_int8_t tulip_connidx;    tulip_srom_connection_t tulip_conntype;    tulip_desc_t tulip_rxdescs[TULIP_RXDESCS];    tulip_desc_t tulip_txdescs[TULIP_TXDESCS];#if defined(__NetBSD__) && NRND > 0    rndsource_element_t    tulip_rndsource;#endif};#if defined(IFM_ETHER)#define	TULIP_DO_AUTOSENSE(sc)	(IFM_SUBTYPE((sc)->tulip_ifmedia.ifm_media) == IFM_AUTO)#else#define	TULIP_DO_AUTOSENSE(sc)	(((sc)->tulip_flags & TULIP_NOAUTOSENSE) == 0)#endif#if defined(TULIP_HDR_DATA)static const char * const tulip_chipdescs[] = {     "21040 [10Mb/s]",#if defined(TULIP_EISA)    "DE425 [10Mb/s]",#else    NULL,#endif    "21041 [10Mb/s]",    "21140 [10-100Mb/s]",    "21140A [10-100Mb/s]",    "21142 [10-100Mb/s]",    "21143 [10-100Mb/s]",    "82C168 [10-100Mb/s]",};static const char * const tulip_mediums[] = {    "unknown",			/* TULIP_MEDIA_UNKNOWN */    "10baseT",			/* TULIP_MEDIA_10BASET */    "Full Duplex 10baseT",	/* TULIP_MEDIA_10BASET_FD */    "BNC",			/* TULIP_MEDIA_BNC */    "AUI",			/* TULIP_MEDIA_AUI */    "External SIA",		/* TULIP_MEDIA_EXTSIA */    "AUI/BNC",			/* TULIP_MEDIA_AUIBNC */    "100baseTX",		/* TULIP_MEDIA_100BASET */    "Full Duplex 100baseTX",	/* TULIP_MEDIA_100BASET_FD */    "100baseT4",		/* TULIP_MEDIA_100BASET4 */    "100baseFX",		/* TULIP_MEDIA_100BASEFX */    "Full Duplex 100baseFX",	/* TULIP_MEDIA_100BASEFX_FD */};#if defined(IFM_ETHER)static const int tulip_media_to_ifmedia[] = {    IFM_ETHER | IFM_NONE,		/* TULIP_MEDIA_UNKNOWN */    IFM_ETHER | IFM_10_T,		/* TULIP_MEDIA_10BASET */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -