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

📄 sunbmac.h

📁 powerpc内核mpc8241linux系统下net驱动程序
💻 H
📖 第 1 页 / 共 2 页
字号:
#define BIGMAC_RXCFG_ME        0x00000200 /* Receive packets addressed to me          */#define BIGMAC_RXCFG_PGRP      0x00000400 /* Enable promisc group mode                */#define BIGMAC_RXCFG_HENABLE   0x00000800 /* Enable the hash filter                   */#define BIGMAC_RXCFG_AENABLE   0x00001000 /* Enable the address filter                *//* The BigMAC PHY transceiver.  Not nearly as sophisticated as the happy meal * one.  But it does have the "bit banger", oh baby. */struct bmac_tcvr {	unsigned int	tcvr_pal;	unsigned int    mgmt_pal;};/* Frame commands. */#define FRAME_WRITE           0x50020000#define FRAME_READ            0x60020000/* Tranceiver registers. */#define TCVR_PAL_SERIAL       0x00000001 /* Enable serial mode              */#define TCVR_PAL_EXTLBACK     0x00000002 /* Enable external loopback        */#define TCVR_PAL_MSENSE       0x00000004 /* Media sense                     */#define TCVR_PAL_LTENABLE     0x00000008 /* Link test enable                */#define TCVR_PAL_LTSTATUS     0x00000010 /* Link test status  (P1 only)     *//* Management PAL. */#define MGMT_PAL_DCLOCK       0x00000001 /* Data clock                      */#define MGMT_PAL_OENAB        0x00000002 /* Output enabler                  */#define MGMT_PAL_MDIO         0x00000004 /* MDIO Data/attached              */#define MGMT_PAL_TIMEO        0x00000008 /* Transmit enable timeout error   */#define MGMT_PAL_EXT_MDIO     MGMT_PAL_MDIO#define MGMT_PAL_INT_MDIO     MGMT_PAL_TIMEO/* Here are some PHY addresses. */#define BIGMAC_PHY_EXTERNAL   0 /* External transceiver */#define BIGMAC_PHY_INTERNAL   1 /* Internal transceiver *//* PHY registers */#define BIGMAC_BMCR           0x00 /* Basic mode control register	*/#define BIGMAC_BMSR           0x01 /* Basic mode status register	*//* BMCR bits */#define BMCR_ISOLATE            0x0400  /* Disconnect DP83840 from MII */#define BMCR_PDOWN              0x0800  /* Powerdown the DP83840       */#define BMCR_ANENABLE           0x1000  /* Enable auto negotiation     */#define BMCR_SPEED100           0x2000  /* Select 100Mbps              */#define BMCR_LOOPBACK           0x4000  /* TXD loopback bits           */#define BMCR_RESET              0x8000  /* Reset the DP83840           *//* BMSR bits */#define BMSR_ERCAP              0x0001  /* Ext-reg capability          */#define BMSR_JCD                0x0002  /* Jabber detected             */#define BMSR_LSTATUS            0x0004  /* Link status                 *//* Ring descriptors and such, same as Quad Ethernet. */struct be_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 be_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(bp)                                    \        (((bp)->tx_old <= (bp)->tx_new) ?                     \	  (bp)->tx_old + (TX_RING_SIZE - 1) - (bp)->tx_new :  \			    (bp)->tx_old - (bp)->tx_new - 1)#define SUN4C_TX_BUFFS_AVAIL(bp)                                    \        (((bp)->tx_old <= (bp)->tx_new) ?                           \	  (bp)->tx_old + (SUN4C_TX_RING_SIZE - 1) - (bp)->tx_new :  \	  (bp)->tx_old - (bp)->tx_new - (TX_RING_SIZE - SUN4C_TX_RING_SIZE))#define RX_COPY_THRESHOLD  128#define RX_BUF_ALLOC_SIZE  (ETH_FRAME_LEN + (64 * 3))struct bmac_init_block {	struct be_rxd be_rxd[RX_RING_MAXSIZE];	struct be_txd be_txd[TX_RING_MAXSIZE];};#define bib_offset(mem, elem) \((__u32)((unsigned long)(&(((struct bmac_init_block *)0)->mem[elem]))))#define SUN4C_PKT_BUF_SZ	1546#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 bigmac_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 bbuf_offset(mem, elem) \((__u32)((unsigned long)(&(((struct bigmac_buffers *)0)->mem[elem][0]))))/* Now software state stuff. */enum bigmac_transceiver {	external = 0,	internal = 1,	none     = 2,};/* Timer state engine. */enum bigmac_timer_state {	ltrywait = 1,  /* Forcing try of all modes, from fastest to slowest. */	asleep   = 2,  /* Timer inactive.                                    */};struct bigmac {	struct qe_globreg	*gregs;		/* QEC Global Registers               */	struct qe_creg		*creg;		/* QEC BigMAC Channel Registers       */	struct BIG_MAC_regs	*bregs;         /* BigMAC Registers                   */	struct bmac_tcvr	*tregs;         /* BigMAC Transceiver                 */	struct bmac_init_block	*bmac_block;	/* RX and TX descriptors              */	__u32			 bblock_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 bigmac_buffers	*sun4c_buffers;	__u32			 s4c_buf_dvma;	int board_rev;				/* BigMAC board revision.             */	enum bigmac_transceiver	tcvr_type;	unsigned int		bigmac_bursts;	unsigned int		paddr;	unsigned short		sw_bmsr;         /* SW copy of PHY BMSR               */	unsigned short		sw_bmcr;         /* SW copy of PHY BMCR               */	struct timer_list	bigmac_timer;	enum bigmac_timer_state	timer_state;	unsigned int		timer_ticks;	struct enet_statistics		enet_stats;	struct linux_sbus_device	*qec_sbus_dev;	struct linux_sbus_device	*bigmac_sbus_dev;	struct device			*dev;	struct bigmac			*next_module;};/* 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 *big_mac_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 /* !(_SUNBMAC_H) */

⌨️ 快捷键说明

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