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

📄 ibmlana.h

📁 Linux内核源代码 为压缩文件 是<<Linux内核>>一书中的源代码
💻 H
字号:
#ifndef _IBM_LANA_INCLUDE_#define _IBM_LANA_INCLUDE_#ifdef _IBM_LANA_DRIVER_/* version-dependent functions/structures */#if LINUX_VERSION_CODE >= 0x020318#define IBMLANA_READB(addr) isa_readb(addr)#define IBMLANA_TOIO(dest, src, len) isa_memcpy_toio(dest, src, len)#define IBMLANA_FROMIO(dest, src, len) isa_memcpy_fromio(dest, src, len)#define IBMLANA_SETIO(dest, val, len) isa_memset_io(dest, val, len)#define IBMLANA_NETDEV net_device#else#define IBMLANA_READB(addr) readb(addr)#define IBMLANA_TOIO(dest, src, len) memcpy_toio(dest, src, len)#define IBMLANA_FROMIO(dest, src, len) memcpy_fromio(dest, src, len)#define IBMLANA_SETIO(dest, val, len) memset_io(dest, val, len)#define IBMLANA_NETDEV device#endif/* maximum packet size */#define PKTSIZE 1524/* number of transmit buffers */#define TXBUFCNT 4/* Adapter ID's */#define IBM_LANA_ID 0xffe0/* media enumeration - defined in a way that it fits onto the LAN/A's   POS registers... */typedef enum { Media_10BaseT, Media_10Base5,	Media_Unknown, Media_10Base2, Media_Count} ibmlana_medium;/* private structure */typedef struct {	unsigned int slot;	/* MCA-Slot-#                       */	struct net_device_stats stat;	/* packet statistics            */	int realirq;		/* memorizes actual IRQ, even when 				   currently not allocated          */	ibmlana_medium medium;	/* physical cannector               */	u32 tdastart, txbufstart,	/* addresses                        */	 rrastart, rxbufstart, rdastart, rxbufcnt, txusedcnt;	int nextrxdescr,	/* next rx descriptor to be used    */	 lastrxdescr,		/* last free rx descriptor          */	 nexttxdescr,		/* last tx descriptor to be used    */	 currtxdescr,		/* tx descriptor currently tx'ed    */	 txused[TXBUFCNT];	/* busy flags                       */} ibmlana_priv;/* this card uses quite a lot of I/O ports...luckily the MCA bus decodes    a full 64K I/O range... */#define IBM_LANA_IORANGE 0xa0/* Command Register: */#define SONIC_CMDREG     0x00#define CMDREG_HTX       0x0001	/* halt transmission                */#define CMDREG_TXP       0x0002	/* start transmission               */#define CMDREG_RXDIS     0x0004	/* disable receiver                 */#define CMDREG_RXEN      0x0008	/* enable receiver                  */#define CMDREG_STP       0x0010	/* stop timer                       */#define CMDREG_ST        0x0020	/* start timer                      */#define CMDREG_RST       0x0080	/* software reset                   */#define CMDREG_RRRA      0x0100	/* force SONIC to read first RRA    */#define CMDREG_LCAM      0x0200	/* force SONIC to read CAM descrs   *//* Data Configuration Register */#define SONIC_DCREG      0x02#define DCREG_EXBUS      0x8000	/* Extended Bus Mode                */#define DCREG_LBR        0x2000	/* Latched Bus Retry                */#define DCREG_PO1        0x1000	/* Programmable Outputs             */#define DCREG_PO0        0x0800#define DCREG_SBUS       0x0400	/* Synchronous Bus Mode             */#define DCREG_USR1       0x0200	/* User Definable Pins              */#define DCREG_USR0       0x0100#define DCREG_WC0        0x0000	/* 0..3 Wait States                 */#define DCREG_WC1        0x0040#define DCREG_WC2        0x0080#define DCREG_WC3        0x00c0#define DCREG_DW16       0x0000	/* 16 bit Bus Mode                  */#define DCREG_DW32       0x0020	/* 32 bit Bus Mode                  */#define DCREG_BMS        0x0010	/* Block Mode Select                */#define DCREG_RFT4       0x0000	/* 4/8/16/24 bytes RX  Threshold    */#define DCREG_RFT8       0x0004#define DCREG_RFT16      0x0008#define DCREG_RFT24      0x000c#define DCREG_TFT8       0x0000	/* 8/16/24/28 bytes TX Threshold    */#define DCREG_TFT16      0x0001#define DCREG_TFT24      0x0002#define DCREG_TFT28      0x0003/* Receive Control Register */#define SONIC_RCREG      0x04#define RCREG_ERR        0x8000	/* accept damaged and collided pkts */#define RCREG_RNT        0x4000	/* accept packets that are < 64     */#define RCREG_BRD        0x2000	/* accept broadcasts                */#define RCREG_PRO        0x1000	/* promiscous mode                  */#define RCREG_AMC        0x0800	/* accept all multicasts            */#define RCREG_LB_NONE    0x0000	/* no loopback                      */#define RCREG_LB_MAC     0x0200	/* MAC loopback                     */#define RCREG_LB_ENDEC   0x0400	/* ENDEC loopback                   */#define RCREG_LB_XVR     0x0600	/* Transceiver loopback             */#define RCREG_MC         0x0100	/* Multicast received               */#define RCREG_BC         0x0080	/* Broadcast received               */#define RCREG_LPKT       0x0040	/* last packet in RBA               */#define RCREG_CRS        0x0020	/* carrier sense present            */#define RCREG_COL        0x0010	/* recv'd packet with collision     */#define RCREG_CRCR       0x0008	/* recv'd packet with CRC error     */#define RCREG_FAER       0x0004	/* recv'd packet with inv. framing  */#define RCREG_LBK        0x0002	/* recv'd loopback packet           */#define RCREG_PRX        0x0001	/* recv'd packet is OK              *//* Transmit Control Register */#define SONIC_TCREG      0x06#define TCREG_PINT       0x8000	/* generate interrupt after TDA read */#define TCREG_POWC       0x4000	/* timer start out of window detect */#define TCREG_CRCI       0x2000	/* inhibit CRC generation           */#define TCREG_EXDIS      0x1000	/* disable excessive deferral timer */#define TCREG_EXD        0x0400	/* excessive deferral occured       */#define TCREG_DEF        0x0200	/* single deferral occured          */#define TCREG_NCRS       0x0100	/* no carrier detected              */#define TCREG_CRSL       0x0080	/* carrier lost                     */#define TCREG_EXC        0x0040	/* excessive collisions occured     */#define TCREG_OWC        0x0020	/* out of window collision occured  */#define TCREG_PMB        0x0008	/* packet monitored bad             */#define TCREG_FU         0x0004	/* FIFO underrun                    */#define TCREG_BCM        0x0002	/* byte count mismatch of fragments */#define TCREG_PTX        0x0001	/* packet transmitted OK            *//* Interrupt Mask Register */#define SONIC_IMREG      0x08#define IMREG_BREN       0x4000	/* interrupt when bus retry occured */#define IMREG_HBLEN      0x2000	/* interrupt when heartbeat lost    */#define IMREG_LCDEN      0x1000	/* interrupt when CAM loaded        */#define IMREG_PINTEN     0x0800	/* interrupt when PINT in TDA set   */#define IMREG_PRXEN      0x0400	/* interrupt when packet received   */#define IMREG_PTXEN      0x0200	/* interrupt when packet was sent   */#define IMREG_TXEREN     0x0100	/* interrupt when send failed       */#define IMREG_TCEN       0x0080	/* interrupt when timer completed   */#define IMREG_RDEEN      0x0040	/* interrupt when RDA exhausted     */#define IMREG_RBEEN      0x0020	/* interrupt when RBA exhausted     */#define IMREG_RBAEEN     0x0010	/* interrupt when RBA too short     */#define IMREG_CRCEN      0x0008	/* interrupt when CRC counter rolls */#define IMREG_FAEEN      0x0004	/* interrupt when FAE counter rolls */#define IMREG_MPEN       0x0002	/* interrupt when MP counter rolls  */#define IMREG_RFOEN      0x0001	/* interrupt when Rx FIFO overflows *//* Interrupt Status Register */#define SONIC_ISREG      0x0a#define ISREG_BR         0x4000	/* bus retry occured                */#define ISREG_HBL        0x2000	/* heartbeat lost                   */#define ISREG_LCD        0x1000	/* CAM loaded                       */#define ISREG_PINT       0x0800	/* PINT in TDA set                  */#define ISREG_PKTRX      0x0400	/* packet received                  */#define ISREG_TXDN       0x0200	/* packet was sent                  */#define ISREG_TXER       0x0100	/* send failed                      */#define ISREG_TC         0x0080	/* timer completed                  */#define ISREG_RDE        0x0040	/* RDA exhausted                    */#define ISREG_RBE        0x0020	/* RBA exhausted                    */#define ISREG_RBAE       0x0010	/* RBA too short for received frame */#define ISREG_CRC        0x0008	/* CRC counter rolls over           */#define ISREG_FAE        0x0004	/* FAE counter rolls over           */#define ISREG_MP         0x0002	/* MP counter rolls  over           */#define ISREG_RFO        0x0001	/* Rx FIFO overflows                */#define SONIC_UTDA       0x0c	/* current transmit descr address   */#define SONIC_CTDA       0x0e#define SONIC_URDA       0x1a	/* current receive descr address    */#define SONIC_CRDA       0x1c#define SONIC_CRBA0      0x1e	/* current receive buffer address   */#define SONIC_CRBA1      0x20#define SONIC_RBWC0      0x22	/* word count in receive buffer     */#define SONIC_RBWC1      0x24#define SONIC_EOBC       0x26	/* minimum space to be free in RBA  */#define SONIC_URRA       0x28	/* upper address of CDA & Recv Area */#define SONIC_RSA        0x2a	/* start of receive resource area   */#define SONIC_REA        0x2c	/* end of receive resource area     */#define SONIC_RRP        0x2e	/* resource read pointer            */#define SONIC_RWP        0x30	/* resource write pointer           */#define SONIC_CAMEPTR    0x42	/* CAM entry pointer                */#define SONIC_CAMADDR2   0x44	/* CAM address ports                */#define SONIC_CAMADDR1   0x46#define SONIC_CAMADDR0   0x48#define SONIC_CAMPTR     0x4c	/* lower address of CDA             */#define SONIC_CAMCNT     0x4e	/* # of CAM descriptors to load     *//* Data Configuration Register 2    */#define SONIC_DCREG2     0x7e#define DCREG2_EXPO3     0x8000	/* extended programmable outputs    */#define DCREG2_EXPO2     0x4000#define DCREG2_EXPO1     0x2000#define DCREG2_EXPO0     0x1000#define DCREG2_HD        0x0800	/* heartbeat disable                */#define DCREG2_JD        0x0200	/* jabber timer disable             */#define DCREG2_AUTO      0x0100	/* enable AUI/TP auto selection     */#define DCREG2_XWRAP     0x0040	/* TP transceiver loopback          */#define DCREG2_PH        0x0010	/* HOLD request timing              */#define DCREG2_PCM       0x0004	/* packet compress when matched     */#define DCREG2_PCNM      0x0002	/* packet compress when not matched */#define DCREG2_RJCM      0x0001	/* inverse packet match via CAM     *//* Board Control Register: Enable RAM, Interrupts... */#define BCMREG           0x80#define BCMREG_RAMEN     0x80	/* switch over to RAM               */#define BCMREG_IPEND     0x40	/* interrupt pending ?              */#define BCMREG_RESET     0x08	/* reset board                      */#define BCMREG_16BIT     0x04	/* adapter in 16-bit slot           */#define BCMREG_RAMWIN    0x02	/* enable RAM window                */#define BCMREG_IEN       0x01	/* interrupt enable                 *//* MAC Address PROM */#define MACADDRPROM      0x92/* structure of a CAM entry */typedef struct {	u32 index;		/* pointer into CAM area            */	u32 addr0;		/* address part (bits 0..15 used)   */	u32 addr1;	u32 addr2;} camentry_t;/* structure of a receive resource */typedef struct {	u32 startlo;		/* start address (bits 0..15 used)  */	u32 starthi;	u32 cntlo;		/* size in 16-bit quantities        */	u32 cnthi;} rra_t;/* structure of a receive descriptor */typedef struct {	u32 status;		/* packet status                    */	u32 length;		/* length in bytes                  */	u32 startlo;		/* start address                    */	u32 starthi;	u32 seqno;		/* frame sequence                   */	u32 link;		/* pointer to next descriptor       */	/* bit 0 = EOL                      */	u32 inuse;		/* !=0 --> free for SONIC to write  */} rda_t;/* structure of a transmit descriptor */typedef struct {	u32 status;		/* transmit status                  */	u32 config;		/* value for TCR                    */	u32 length;		/* total length                     */	u32 fragcount;		/* number of fragments              */	u32 startlo;		/* start address of fragment        */	u32 starthi;	u32 fraglength;		/* length of this fragment          */	/* more address/length triplets may */	/* follow here                      */	u32 link;		/* pointer to next descriptor       */	/* bit 0 = EOL                      */} tda_t;#endif				/* _IBM_LANA_DRIVER_ */extern int ibmlana_probe(struct IBMLANA_NETDEV *);#endif	/* _IBM_LANA_INCLUDE_ */

⌨️ 快捷键说明

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