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

📄 sunqe.h

📁 powerpc内核mpc8241linux系统下net驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#define MREGS_IREG_MPKTCO           0x04 /* IRQ missed packet cnt overflow */#define MREGS_IREG_RXIRQ            0x02 /* IRQ RX'd a packet              */#define MREGS_IREG_TXIRQ            0x01 /* IRQ TX'd a packet              */#define MREGS_IMASK_BABBLE          0x40 /* IMASK Babble errors            */#define MREGS_IMASK_COLL            0x20 /* IMASK Collision errors         */#define MREGS_IMASK_MPKTCO          0x04 /* IMASK Missed pkt cnt overflow  */#define MREGS_IMASK_RXIRQ           0x02 /* IMASK RX interrupts            */#define MREGS_IMASK_TXIRQ           0x01 /* IMASK TX interrupts            */#define MREGS_POLL_TXVALID          0x80 /* TX is valid                    */#define MREGS_POLL_TDTR             0x40 /* TX data transfer request       */#define MREGS_POLL_RDTR             0x20 /* RX data transfer request       */#define MREGS_BCONFIG_BSWAP         0x40 /* Byte Swap                      */#define MREGS_BCONFIG_4TS           0x00 /* 4byte transmit start point     */#define MREGS_BCONFIG_16TS          0x10 /* 16byte transmit start point    */#define MREGS_BCONFIG_64TS          0x20 /* 64byte transmit start point    */#define MREGS_BCONFIG_112TS         0x30 /* 112byte transmit start point   */#define MREGS_BCONFIG_RESET         0x01 /* SW-Reset the MACE              */#define MREGS_FCONFIG_TXF8          0x00 /* TX fifo 8 write cycles         */#define MREGS_FCONFIG_TXF32         0x80 /* TX fifo 32 write cycles        */#define MREGS_FCONFIG_TXF16         0x40 /* TX fifo 16 write cycles        */#define MREGS_FCONFIG_RXF64         0x20 /* RX fifo 64 write cycles        */#define MREGS_FCONFIG_RXF32         0x10 /* RX fifo 32 write cycles        */#define MREGS_FCONFIG_RXF16         0x00 /* RX fifo 16 write cycles        */#define MREGS_FCONFIG_TFWU          0x08 /* TX fifo watermark update       */#define MREGS_FCONFIG_RFWU          0x04 /* RX fifo watermark update       */#define MREGS_FCONFIG_TBENAB        0x02 /* TX burst enable                */#define MREGS_FCONFIG_RBENAB        0x01 /* RX burst enable                */#define MREGS_MCONFIG_PROMISC       0x80 /* Promiscuous mode enable        */#define MREGS_MCONFIG_TPDDISAB      0x40 /* TX 2part deferral enable       */#define MREGS_MCONFIG_MBAENAB       0x20 /* Modified backoff enable        */#define MREGS_MCONFIG_RPADISAB      0x08 /* RX physical addr disable       */#define MREGS_MCONFIG_RBDISAB       0x04 /* RX broadcast disable           */#define MREGS_MCONFIG_TXENAB        0x02 /* Enable transmitter             */#define MREGS_MCONFIG_RXENAB        0x01 /* Enable receiver                */#define MREGS_PLSCONFIG_TXMS        0x08 /* TX mode select                 */#define MREGS_PLSCONFIG_GPSI        0x06 /* Use GPSI connector             */#define MREGS_PLSCONFIG_DAI         0x04 /* Use DAI connector              */#define MREGS_PLSCONFIG_TP          0x02 /* Use TwistedPair connector      */#define MREGS_PLSCONFIG_AUI         0x00 /* Use AUI connector              */#define MREGS_PLSCONFIG_IOENAB      0x01 /* PLS I/O enable                 */#define MREGS_PHYCONFIG_LSTAT       0x80 /* Link status                    */#define MREGS_PHYCONFIG_LTESTDIS    0x40 /* Disable link test logic        */#define MREGS_PHYCONFIG_RXPOLARITY  0x20 /* RX polarity                    */#define MREGS_PHYCONFIG_APCDISAB    0x10 /* AutoPolarityCorrect disab      */#define MREGS_PHYCONFIG_LTENAB      0x08 /* Select low threshold           */#define MREGS_PHYCONFIG_AUTO        0x04 /* Connector port auto-sel        */#define MREGS_PHYCONFIG_RWU         0x02 /* Remote WakeUp                  */#define MREGS_PHYCONFIG_AW          0x01 /* Auto Wakeup                    */#define MREGS_IACONFIG_ACHNGE       0x80 /* Do address change              */#define MREGS_IACONFIG_PARESET      0x04 /* Physical address reset         */#define MREGS_IACONFIG_LARESET      0x02 /* Logical address reset          */#define MREGS_UTEST_RTRENAB         0x80 /* Enable resv test register      */#define MREGS_UTEST_RTRDISAB        0x40 /* Disab resv test register       */#define MREGS_UTEST_RPACCEPT        0x20 /* Accept runt packets            */#define MREGS_UTEST_FCOLL           0x10 /* Force collision status         */#define MREGS_UTEST_FCSENAB         0x08 /* Enable FCS on RX               */#define MREGS_UTEST_INTLOOPM        0x06 /* Intern lpback w/MENDEC         */#define MREGS_UTEST_INTLOOP         0x04 /* Intern lpback                  */#define MREGS_UTEST_EXTLOOP         0x02 /* Extern lpback                  */#define MREGS_UTEST_NOLOOP          0x00 /* No loopback                    */struct qe_rxd {	unsigned int rx_flags;	unsigned int rx_addr;};#define RXD_OWN      0x80000000 /* Ownership.      */#define RXD_UPDATE   0x10000000 /* Being Updated?  */#define RXD_LENGTH   0x000007ff /* Packet Length.  */struct qe_txd {	unsigned int tx_flags;	unsigned int tx_addr;};#define TXD_OWN      0x80000000 /* Ownership.      */#define TXD_SOP      0x40000000 /* Start Of Packet */#define TXD_EOP      0x20000000 /* End Of Packet   */#define TXD_UPDATE   0x10000000 /* Being Updated?  */#define TXD_LENGTH   0x000007ff /* Packet Length.  */#define TX_RING_MAXSIZE   256#define RX_RING_MAXSIZE   256#define TX_RING_SIZE      256#define RX_RING_SIZE      256#define NEXT_RX(num)       (((num) + 1) & (RX_RING_SIZE - 1))#define NEXT_TX(num)       (((num) + 1) & (TX_RING_SIZE - 1))#define PREV_RX(num)       (((num) - 1) & (RX_RING_SIZE - 1))#define PREV_TX(num)       (((num) - 1) & (TX_RING_SIZE - 1))#define TX_BUFFS_AVAIL(qp)                                    \        (((qp)->tx_old <= (qp)->tx_new) ?                     \	  (qp)->tx_old + (TX_RING_SIZE - 1) - (qp)->tx_new :  \			    (qp)->tx_old - (qp)->tx_new - 1)#define SUN4C_TX_BUFFS_AVAIL(qp)                                    \        (((qp)->tx_old <= (qp)->tx_new) ?                           \	  (qp)->tx_old + (SUN4C_TX_RING_SIZE - 1) - (qp)->tx_new :  \	  (qp)->tx_old - (qp)->tx_new - (TX_RING_SIZE - SUN4C_TX_RING_SIZE))#define RX_COPY_THRESHOLD  256#define RX_BUF_ALLOC_SIZE  (1546 + 64)struct qe_init_block {	struct qe_rxd qe_rxd[RX_RING_MAXSIZE];	struct qe_txd qe_txd[TX_RING_MAXSIZE];};#define qib_offset(mem, elem) \((__u32)((unsigned long)(&(((struct qe_init_block *)0)->mem[elem]))))struct sunqe;struct sunqec {	struct qe_globreg         *gregs;             /* QEC Global Registers         */	struct sunqe              *qes[4];	unsigned int               qec_bursts;	struct linux_sbus_device  *qec_sbus_dev;	struct sunqec             *next_module;};#define SUN4C_PKT_BUF_SZ	1544#define SUN4C_RX_BUFF_SIZE	SUN4C_PKT_BUF_SZ#define SUN4C_TX_BUFF_SIZE	SUN4C_PKT_BUF_SZ#define SUN4C_RX_RING_SIZE	16#define SUN4C_TX_RING_SIZE	16struct sunqe_buffers {	char	tx_buf[SUN4C_TX_RING_SIZE][SUN4C_TX_BUFF_SIZE];	char	pad[2];		/* Align rx_buf for copy_and_sum(). */	char	rx_buf[SUN4C_RX_RING_SIZE][SUN4C_RX_BUFF_SIZE];};#define qebuf_offset(mem, elem) \((__u32)((unsigned long)(&(((struct sunqe_buffers *)0)->mem[elem][0]))))#define SUN4C_NEXT_RX(num)	(((num) + 1) & (SUN4C_RX_RING_SIZE - 1))#define SUN4C_NEXT_TX(num)	(((num) + 1) & (SUN4C_TX_RING_SIZE - 1))#define SUN4C_PREV_RX(num)	(((num) - 1) & (SUN4C_RX_RING_SIZE - 1))#define SUN4C_PREV_TX(num)	(((num) - 1) & (SUN4C_TX_RING_SIZE - 1))struct sunqe {	struct qe_creg            *qcregs;           /* QEC per-channel Registers      */	struct qe_mregs           *mregs;            /* Per-channel MACE Registers     */	struct qe_init_block      *qe_block;         /* RX and TX descriptors          */	__u32                      qblock_dvma;      /* RX and TX descriptors          */	struct sk_buff            *rx_skbs[RX_RING_SIZE];	struct sk_buff            *tx_skbs[TX_RING_SIZE];	int                        rx_new, tx_new, rx_old, tx_old;	struct sunqe_buffers      *sun4c_buffers; /* CPU visible address.  */	__u32                      s4c_buf_dvma;  /* DVMA visible address. */	struct sunqec             *parent;	struct net_device_stats   net_stats;     /* Statistical counters               */	struct linux_sbus_device  *qe_sbusdev;   /* QE's SBUS device struct            */	struct device             *dev;          /* QE's netdevice struct              */	int                        channel;      /* Who am I?                          */};/* We use this to acquire receive skb's that we can DMA directly into. */#define ALIGNED_RX_SKB_ADDR(addr) \        ((((unsigned long)(addr) + (64 - 1)) & ~(64 - 1)) - (unsigned long)(addr))static inline struct sk_buff *qe_alloc_skb(unsigned int length, int gfp_flags){	struct sk_buff *skb;	skb = alloc_skb(length + 64, gfp_flags);	if(skb) {		int offset = ALIGNED_RX_SKB_ADDR(skb->data);		if(offset)			skb_reserve(skb, offset);	}	return skb;}#endif /* !(_SUNQE_H) */

⌨️ 快捷键说明

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