📄 sunqe.h
字号:
#define MREGS_TXRCNT_CMASK 0x0f /* TX retry count */#define MREGS_RXFCNTL_LOWLAT 0x08 /* RX low latency */#define MREGS_RXFCNTL_AREJECT 0x04 /* RX addr match rej */#define MREGS_RXFCNTL_AUTOSTRIP 0x01 /* RX auto strip */#define MREGS_RXFSTAT_OVERFLOW 0x80 /* RX overflow */#define MREGS_RXFSTAT_LCOLL 0x40 /* RX late collision */#define MREGS_RXFSTAT_FERROR 0x20 /* RX framing error */#define MREGS_RXFSTAT_FCSERROR 0x10 /* RX FCS error */#define MREGS_RXFSTAT_RBCNT 0x0f /* RX msg byte count */#define MREGS_FFCNT_RX 0xf0 /* RX FIFO frame cnt */#define MREGS_FFCNT_TX 0x0f /* TX FIFO frame cnt */#define MREGS_IREG_JABBER 0x80 /* IRQ Jabber error */#define MREGS_IREG_BABBLE 0x40 /* IRQ Babble error */#define MREGS_IREG_COLL 0x20 /* IRQ Collision error */#define MREGS_IREG_RCCO 0x10 /* IRQ Collision cnt overflow */#define MREGS_IREG_RPKTCO 0x08 /* IRQ Runt packet count overflow */#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 { u32 rx_flags; u32 rx_addr;};#define RXD_OWN 0x80000000 /* Ownership. */#define RXD_UPDATE 0x10000000 /* Being Updated? */#define RXD_LENGTH 0x000007ff /* Packet Length. */struct qe_txd { u32 tx_flags; u32 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 16#define RX_RING_SIZE 16#define NEXT_RX(num) (((num) + 1) & (RX_RING_MAXSIZE - 1))#define NEXT_TX(num) (((num) + 1) & (TX_RING_MAXSIZE - 1))#define PREV_RX(num) (((num) - 1) & (RX_RING_MAXSIZE - 1))#define PREV_TX(num) (((num) - 1) & (TX_RING_MAXSIZE - 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)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 { unsigned long gregs; /* QEC Global Registers */ struct sunqe *qes[4]; /* Each child MACE */ unsigned int qec_bursts; /* Support burst sizes */ struct sbus_dev *qec_sdev; /* QEC's SBUS device */ struct sunqec *next_module; /* List of all QECs in system */};#define PKT_BUF_SZ 1664#define RXD_PKT_SZ 1664struct sunqe_buffers { u8 tx_buf[TX_RING_SIZE][PKT_BUF_SZ]; u8 __pad[2]; u8 rx_buf[RX_RING_SIZE][PKT_BUF_SZ];};#define qebuf_offset(mem, elem) \((__u32)((unsigned long)(&(((struct sunqe_buffers *)0)->mem[elem][0]))))struct sunqe { unsigned long qcregs; /* QEC per-channel Registers */ unsigned long mregs; /* Per-channel MACE Registers */ struct qe_init_block *qe_block; /* RX and TX descriptors */ __u32 qblock_dvma; /* RX and TX descriptors */ spinlock_t lock; /* Protects txfull state */ int rx_new, rx_old; /* RX ring extents */ int tx_new, tx_old; /* TX ring extents */ struct sunqe_buffers *buffers; /* CPU visible address. */ __u32 buffers_dvma; /* DVMA visible address. */ struct sunqec *parent; u8 mconfig; /* Base MACE mconfig value */ struct net_device_stats net_stats; /* Statistical counters */ struct sbus_dev *qe_sdev; /* QE's SBUS device struct */ struct net_device *dev; /* QE's netdevice struct */ int channel; /* Who am I? */};#endif /* !(_SUNQE_H) */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -