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

📄 bcm570x_lm.h

📁 F:worksip2440a board可启动u-boot-like.tar.gz F:worksip2440a board可启动u-boot-like.tar.gz
💻 H
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************//*                                                                            *//* Broadcom BCM5700 Linux Network Driver, Copyright (c) 2000 Broadcom         *//* Corporation.                                                               *//* All rights reserved.                                                       *//*                                                                            *//* This program is free software; you can redistribute it and/or modify       *//* it under the terms of the GNU General Public License as published by       *//* the Free Software Foundation, located in the file LICENSE.                 *//*                                                                            *//* History:                                                                   *//*    02/25/00 Hav Khauv        Initial version.                              *//******************************************************************************/#ifndef LM_H#define LM_H#include "bcm570x_queue.h"#include "bcm570x_bits.h"/******************************************************************************//* Basic types. *//******************************************************************************/typedef char           LM_CHAR,    *PLM_CHAR;typedef unsigned int   LM_UINT,    *PLM_UINT;typedef unsigned char  LM_UINT8,   *PLM_UINT8;typedef unsigned short LM_UINT16,  *PLM_UINT16;typedef unsigned int   LM_UINT32,  *PLM_UINT32;typedef unsigned int   LM_COUNTER, *PLM_COUNTER;typedef void           LM_VOID,    *PLM_VOID;typedef char           LM_BOOL,    *PLM_BOOL;/* 64bit value. */typedef struct {#ifdef BIG_ENDIAN_HOST    LM_UINT32 High;    LM_UINT32 Low;#else /* BIG_ENDIAN_HOST */    LM_UINT32 Low;    LM_UINT32 High;#endif /* !BIG_ENDIAN_HOST */} LM_UINT64, *PLM_UINT64;typedef LM_UINT64 LM_PHYSICAL_ADDRESS, *PLM_PHYSICAL_ADDRESS;/* void LM_INC_PHYSICAL_ADDRESS(PLM_PHYSICAL_ADDRESS pAddr,LM_UINT32 IncSize) */#define LM_INC_PHYSICAL_ADDRESS(pAddr, IncSize)             \    {                                                       \	LM_UINT32 OrgLow;                                   \							    \	OrgLow = (pAddr)->Low;                              \	(pAddr)->Low += IncSize;                            \	if((pAddr)->Low < OrgLow) {                         \	    (pAddr)->High++; /* Wrap around. */             \	}                                                   \    }#ifndef NULL#define NULL                ((void *) 0)#endif /* NULL */#ifndef OFFSETOF#define OFFSETOF(_s, _m)    (MM_UINT_PTR(&(((_s *) 0)->_m)))#endif /* OFFSETOF *//******************************************************************************//* Simple macros. *//******************************************************************************/#define IS_ETH_BROADCAST(_pEthAddr)                                         \    (((unsigned char *) (_pEthAddr))[0] == ((unsigned char) 0xff))#define IS_ETH_MULTICAST(_pEthAddr)                                         \    (((unsigned char *) (_pEthAddr))[0] & ((unsigned char) 0x01))#define IS_ETH_ADDRESS_EQUAL(_pEtherAddr1, _pEtherAddr2)                    \    ((((unsigned char *) (_pEtherAddr1))[0] ==                              \    ((unsigned char *) (_pEtherAddr2))[0]) &&                               \    (((unsigned char *) (_pEtherAddr1))[1] ==                               \    ((unsigned char *) (_pEtherAddr2))[1]) &&                               \    (((unsigned char *) (_pEtherAddr1))[2] ==                               \    ((unsigned char *) (_pEtherAddr2))[2]) &&                               \    (((unsigned char *) (_pEtherAddr1))[3] ==                               \    ((unsigned char *) (_pEtherAddr2))[3]) &&                               \    (((unsigned char *) (_pEtherAddr1))[4] ==                               \    ((unsigned char *) (_pEtherAddr2))[4]) &&                               \    (((unsigned char *) (_pEtherAddr1))[5] ==                               \    ((unsigned char *) (_pEtherAddr2))[5]))#define COPY_ETH_ADDRESS(_Src, _Dst)                                        \    ((unsigned char *) (_Dst))[0] = ((unsigned char *) (_Src))[0];          \    ((unsigned char *) (_Dst))[1] = ((unsigned char *) (_Src))[1];          \    ((unsigned char *) (_Dst))[2] = ((unsigned char *) (_Src))[2];          \    ((unsigned char *) (_Dst))[3] = ((unsigned char *) (_Src))[3];          \    ((unsigned char *) (_Dst))[4] = ((unsigned char *) (_Src))[4];          \    ((unsigned char *) (_Dst))[5] = ((unsigned char *) (_Src))[5];/******************************************************************************//* Constants. *//******************************************************************************/#define ETHERNET_ADDRESS_SIZE           6#define ETHERNET_PACKET_HEADER_SIZE     14#define MIN_ETHERNET_PACKET_SIZE        64      /* with 4 byte crc. */#define MAX_ETHERNET_PACKET_SIZE        1518    /* with 4 byte crc. */#define MIN_ETHERNET_PACKET_SIZE_NO_CRC 60#define MAX_ETHERNET_PACKET_SIZE_NO_CRC 1514#define MAX_ETHERNET_PACKET_BUFFER_SIZE 1536    /* A nice even number. */#ifndef LM_MAX_MC_TABLE_SIZE#define LM_MAX_MC_TABLE_SIZE            32#endif /* LM_MAX_MC_TABLE_SIZE */#define LM_MC_ENTRY_SIZE                (ETHERNET_ADDRESS_SIZE+1)#define LM_MC_INSTANCE_COUNT_INDEX      (LM_MC_ENTRY_SIZE-1)/* Receive filter masks. */#define LM_ACCEPT_UNICAST               0x0001#define LM_ACCEPT_MULTICAST             0x0002#define LM_ACCEPT_ALL_MULTICAST         0x0004#define LM_ACCEPT_BROADCAST             0x0008#define LM_ACCEPT_ERROR_PACKET          0x0010#define LM_PROMISCUOUS_MODE             0x10000/******************************************************************************//* PCI registers. *//******************************************************************************/#define PCI_VENDOR_ID_REG               0x00#define PCI_DEVICE_ID_REG               0x02#define PCI_COMMAND_REG                 0x04#define PCI_IO_SPACE_ENABLE             0x0001#define PCI_MEM_SPACE_ENABLE            0x0002#define PCI_BUSMASTER_ENABLE            0x0004#define PCI_MEMORY_WRITE_INVALIDATE     0x0010#define PCI_PARITY_ERROR_ENABLE         0x0040#define PCI_SYSTEM_ERROR_ENABLE         0x0100#define PCI_FAST_BACK_TO_BACK_ENABLE    0x0200#define PCI_STATUS_REG                  0x06#define PCI_REV_ID_REG                  0x08#define PCI_CACHE_LINE_SIZE_REG         0x0c#define PCI_IO_BASE_ADDR_REG            0x10#define PCI_IO_BASE_ADDR_MASK           0xfffffff0#define PCI_MEM_BASE_ADDR_LOW           0x10#define PCI_MEM_BASE_ADDR_HIGH          0x14#define PCI_SUBSYSTEM_VENDOR_ID_REG     0x2c#define PCI_SUBSYSTEM_ID_REG            0x2e#define PCI_INT_LINE_REG                0x3c#define PCIX_CAP_REG                    0x40#define PCIX_ENABLE_RELAXED_ORDERING    BIT_17/******************************************************************************//* Fragment structure. *//******************************************************************************/typedef struct {    LM_UINT32 FragSize;    LM_PHYSICAL_ADDRESS FragBuf;} LM_FRAG, *PLM_FRAG;typedef struct {    /* FragCount is initialized for the caller to the maximum array size, on */    /* return FragCount is the number of the actual fragments in the array. */    LM_UINT32 FragCount;    /* Total buffer size. */    LM_UINT32 TotalSize;    /* Fragment array buffer. */    LM_FRAG Fragments[1];} LM_FRAG_LIST, *PLM_FRAG_LIST;#define DECLARE_FRAG_LIST_BUFFER_TYPE(_FRAG_LIST_TYPE_NAME, _MAX_FRAG_COUNT) \    typedef struct {                                                         \	LM_FRAG_LIST FragList;                                               \	LM_FRAG FragListBuffer[_MAX_FRAG_COUNT-1];                           \    } _FRAG_LIST_TYPE_NAME, *P##_FRAG_LIST_TYPE_NAME/******************************************************************************//* Status codes. *//******************************************************************************/#define LM_STATUS_SUCCESS                                       0#define LM_STATUS_FAILURE                                       1#define LM_STATUS_INTERRUPT_ACTIVE                              2#define LM_STATUS_INTERRUPT_NOT_ACTIVE                          3#define LM_STATUS_LINK_ACTIVE                                   4#define LM_STATUS_LINK_DOWN                                     5#define LM_STATUS_LINK_SETTING_MISMATCH                         6#define LM_STATUS_TOO_MANY_FRAGMENTS                            7#define LM_STATUS_TRANSMIT_ABORTED                              8#define LM_STATUS_TRANSMIT_ERROR                                9#define LM_STATUS_RECEIVE_ABORTED                               10#define LM_STATUS_RECEIVE_ERROR                                 11#define LM_STATUS_INVALID_PACKET_SIZE                           12#define LM_STATUS_OUT_OF_MAP_REGISTERS                          13#define LM_STATUS_UNKNOWN_ADAPTER                               14typedef LM_UINT LM_STATUS, *PLM_STATUS;/******************************************************************************//* Requested media type. *//******************************************************************************/#define LM_REQUESTED_MEDIA_TYPE_AUTO                            0#define LM_REQUESTED_MEDIA_TYPE_BNC                             1

⌨️ 快捷键说明

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