Annotation of Gnu-Mach/linux/src/drivers/net/tlan.h, revision 1.1

1.1     ! root        1: #ifndef TLAN_H
        !             2: #define TLAN_H
        !             3: /********************************************************************
        !             4:  *
        !             5:  *  Linux ThunderLAN Driver
        !             6:  *
        !             7:  *  tlan.h
        !             8:  *  by James Banks
        !             9:  *
        !            10:  *  (C) 1997-1998 Caldera, Inc.
        !            11:  *
        !            12:  *  This software may be used and distributed according to the terms
        !            13:  *  of the GNU Public License, incorporated herein by reference.
        !            14:  *
        !            15:  ** This file is best viewed/edited with tabstop=4, colums>=132
        !            16:  *
        !            17:  ********************************************************************/
        !            18: 
        !            19: 
        !            20: #include <asm/io.h>
        !            21: #include <asm/types.h>
        !            22: #include <linux/netdevice.h>
        !            23: 
        !            24: #if LINUX_VERSION_CODE <= 0x20100
        !            25: #define net_device_stats       enet_statistics
        !            26: #endif
        !            27: 
        !            28: 
        !            29: 
        !            30: 
        !            31:        /*****************************************************************
        !            32:         * TLan Definitions
        !            33:         *
        !            34:         ****************************************************************/
        !            35: 
        !            36: #define FALSE                  0
        !            37: #define TRUE                   1
        !            38: 
        !            39: #define TLAN_MIN_FRAME_SIZE    64
        !            40: #define TLAN_MAX_FRAME_SIZE    1600
        !            41: 
        !            42: #define TLAN_NUM_RX_LISTS      4
        !            43: #define TLAN_NUM_TX_LISTS      8
        !            44: 
        !            45: #define TLAN_IGNORE            0
        !            46: #define TLAN_RECORD            1
        !            47: 
        !            48: #define TLAN_DBG(lvl, format, args...) if (debug&lvl) printk( format, ##args );
        !            49: #define TLAN_DEBUG_GNRL                0x0001
        !            50: #define TLAN_DEBUG_TX          0x0002
        !            51: #define TLAN_DEBUG_RX          0x0004 
        !            52: #define TLAN_DEBUG_LIST                0x0008
        !            53: 
        !            54: 
        !            55: 
        !            56: 
        !            57:        /*****************************************************************
        !            58:         * Device Identification Definitions
        !            59:         *
        !            60:         ****************************************************************/
        !            61:                
        !            62: #define PCI_DEVICE_ID_NETELLIGENT_10                   0xAE34
        !            63: #define PCI_DEVICE_ID_NETELLIGENT_10_100               0xAE32
        !            64: #define PCI_DEVICE_ID_NETFLEX_3P_INTEGRATED            0xAE35
        !            65: #define PCI_DEVICE_ID_NETFLEX_3P                       0xF130
        !            66: #define PCI_DEVICE_ID_NETFLEX_3P_BNC                   0xF150
        !            67: #define PCI_DEVICE_ID_NETELLIGENT_10_100_PROLIANT      0xAE43
        !            68: #define PCI_DEVICE_ID_NETELLIGENT_10_100_DUAL          0xAE40
        !            69: #define PCI_DEVICE_ID_DESKPRO_4000_5233MMX             0xB011
        !            70: #define PCI_DEVICE_ID_NETELLIGENT_10_T2                        0xB012
        !            71: #define PCI_DEVICE_ID_NETELLIGENT_10_100_WS_5100       0xB030
        !            72: #ifndef PCI_DEVICE_ID_OLICOM_OC2183
        !            73: #define PCI_DEVICE_ID_OLICOM_OC2183                    0x0013
        !            74: #endif
        !            75: #ifndef PCI_DEVICE_ID_OLICOM_OC2325
        !            76: #define PCI_DEVICE_ID_OLICOM_OC2325                    0x0012
        !            77: #endif
        !            78: #ifndef PCI_DEVICE_ID_OLICOM_OC2326
        !            79: #define PCI_DEVICE_ID_OLICOM_OC2326                    0x0014
        !            80: #endif
        !            81: 
        !            82: typedef struct tlan_adapter_entry {
        !            83:        u16     vendorId;
        !            84:        u16     deviceId;
        !            85:        char    *deviceLabel;
        !            86:        u32     flags;
        !            87:        u16     addrOfs;
        !            88: } TLanAdapterEntry;
        !            89: 
        !            90: #define TLAN_ADAPTER_NONE              0x00000000
        !            91: #define TLAN_ADAPTER_UNMANAGED_PHY     0x00000001
        !            92: #define TLAN_ADAPTER_BIT_RATE_PHY      0x00000002
        !            93: #define TLAN_ADAPTER_USE_INTERN_10     0x00000004
        !            94: #define TLAN_ADAPTER_ACTIVITY_LED      0x00000008
        !            95: 
        !            96: #define TLAN_SPEED_DEFAULT     0
        !            97: #define TLAN_SPEED_10          10
        !            98: #define TLAN_SPEED_100         100
        !            99: 
        !           100: #define TLAN_DUPLEX_DEFAULT    0
        !           101: #define TLAN_DUPLEX_HALF       1
        !           102: #define TLAN_DUPLEX_FULL       2
        !           103: 
        !           104: 
        !           105: 
        !           106: 
        !           107:        /*****************************************************************
        !           108:         * Rx/Tx List Definitions
        !           109:         *
        !           110:         ****************************************************************/
        !           111: 
        !           112: #define TLAN_BUFFERS_PER_LIST  10
        !           113: #define TLAN_LAST_BUFFER       0x80000000
        !           114: #define TLAN_CSTAT_UNUSED      0x8000
        !           115: #define TLAN_CSTAT_FRM_CMP     0x4000
        !           116: #define TLAN_CSTAT_READY       0x3000
        !           117: #define TLAN_CSTAT_EOC         0x0800
        !           118: #define TLAN_CSTAT_RX_ERROR    0x0400
        !           119: #define TLAN_CSTAT_PASS_CRC    0x0200
        !           120: #define TLAN_CSTAT_DP_PR       0x0100
        !           121: 
        !           122: 
        !           123: typedef struct tlan_buffer_ref_tag {
        !           124:        u32     count;
        !           125:        u32     address;
        !           126: } TLanBufferRef;
        !           127: 
        !           128: 
        !           129: typedef struct tlan_list_tag {
        !           130:        u32             forward;
        !           131:        u16             cStat;
        !           132:        u16             frameSize;
        !           133:        TLanBufferRef   buffer[TLAN_BUFFERS_PER_LIST];
        !           134: } TLanList;
        !           135: 
        !           136: 
        !           137: typedef u8 TLanBuffer[TLAN_MAX_FRAME_SIZE];
        !           138: 
        !           139: 
        !           140: 
        !           141: 
        !           142:        /*****************************************************************
        !           143:         * PHY definitions
        !           144:         *
        !           145:         ****************************************************************/
        !           146: 
        !           147: #define TLAN_PHY_MAX_ADDR      0x1F
        !           148: #define TLAN_PHY_NONE          0x20
        !           149: 
        !           150: 
        !           151: 
        !           152: 
        !           153:        /*****************************************************************
        !           154:         * TLAN Private Information Structure
        !           155:         *
        !           156:         ****************************************************************/
        !           157: 
        !           158: typedef struct tlan_private_tag {
        !           159:        struct device           *nextDevice;
        !           160:        void                    *dmaStorage;
        !           161:        u8                      *padBuffer;
        !           162:        TLanList                *rxList;
        !           163:        u8                      *rxBuffer;
        !           164:        u32                     rxHead;
        !           165:        u32                     rxTail;
        !           166:        u32                     rxEocCount;
        !           167:        TLanList                *txList;
        !           168:        u8                      *txBuffer;
        !           169:        u32                     txHead;
        !           170:        u32                     txInProgress;
        !           171:        u32                     txTail;
        !           172:        u32                     txBusyCount;
        !           173:        u32                     phyOnline;
        !           174:        u32                     timerSetAt;
        !           175:        u32                     timerType;
        !           176:        struct timer_list       timer;
        !           177:        struct net_device_stats stats;
        !           178:        TLanAdapterEntry        *adapter;
        !           179:        u32                     adapterRev;
        !           180:        u32                     aui;
        !           181:        u32                     debug;
        !           182:        u32                     duplex;
        !           183:        u32                     phy[2];
        !           184:        u32                     phyNum;
        !           185:        u32                     sa_int;
        !           186:        u32                     speed;
        !           187:        u8                      tlanRev;
        !           188:        u8                      tlanFullDuplex;
        !           189:        char                    devName[8];
        !           190: } TLanPrivateInfo;
        !           191: 
        !           192: 
        !           193: 
        !           194: 
        !           195:        /*****************************************************************
        !           196:         * TLan Driver Timer Definitions
        !           197:         *
        !           198:         ****************************************************************/
        !           199: 
        !           200: #define TLAN_TIMER_LINK                        1
        !           201: #define TLAN_TIMER_ACTIVITY            2
        !           202: #define TLAN_TIMER_PHY_PDOWN           3
        !           203: #define TLAN_TIMER_PHY_PUP             4
        !           204: #define TLAN_TIMER_PHY_RESET           5
        !           205: #define TLAN_TIMER_PHY_START_LINK      6
        !           206: #define TLAN_TIMER_PHY_FINISH_AN       7
        !           207: #define TLAN_TIMER_FINISH_RESET                8
        !           208: 
        !           209: #define TLAN_TIMER_ACT_DELAY           10
        !           210: 
        !           211: 
        !           212: 
        !           213: 
        !           214:        /*****************************************************************
        !           215:         * TLan Driver Eeprom Definitions
        !           216:         *
        !           217:         ****************************************************************/
        !           218: 
        !           219: #define TLAN_EEPROM_ACK                0
        !           220: #define TLAN_EEPROM_STOP       1
        !           221: 
        !           222: 
        !           223: 
        !           224: 
        !           225:        /*****************************************************************
        !           226:         * Host Register Offsets and Contents
        !           227:         *
        !           228:         ****************************************************************/
        !           229: 
        !           230: #define TLAN_HOST_CMD                  0x00
        !           231: #define        TLAN_HC_GO              0x80000000
        !           232: #define                TLAN_HC_STOP            0x40000000
        !           233: #define                TLAN_HC_ACK             0x20000000
        !           234: #define                TLAN_HC_CS_MASK         0x1FE00000
        !           235: #define                TLAN_HC_EOC             0x00100000
        !           236: #define                TLAN_HC_RT              0x00080000
        !           237: #define                TLAN_HC_NES             0x00040000
        !           238: #define                TLAN_HC_AD_RST          0x00008000
        !           239: #define                TLAN_HC_LD_TMR          0x00004000
        !           240: #define                TLAN_HC_LD_THR          0x00002000
        !           241: #define                TLAN_HC_REQ_INT         0x00001000
        !           242: #define                TLAN_HC_INT_OFF         0x00000800
        !           243: #define                TLAN_HC_INT_ON          0x00000400
        !           244: #define                TLAN_HC_AC_MASK         0x000000FF
        !           245: #define TLAN_CH_PARM                   0x04
        !           246: #define TLAN_DIO_ADR                   0x08
        !           247: #define                TLAN_DA_ADR_INC         0x8000
        !           248: #define                TLAN_DA_RAM_ADR         0x4000
        !           249: #define TLAN_HOST_INT                  0x0A
        !           250: #define                TLAN_HI_IV_MASK         0x1FE0
        !           251: #define                TLAN_HI_IT_MASK         0x001C
        !           252: #define TLAN_DIO_DATA                  0x0C
        !           253: 
        !           254: 
        !           255: /* ThunderLAN Internal Register DIO Offsets */
        !           256: 
        !           257: #define TLAN_NET_CMD                   0x00
        !           258: #define                TLAN_NET_CMD_NRESET     0x80
        !           259: #define                TLAN_NET_CMD_NWRAP      0x40
        !           260: #define                TLAN_NET_CMD_CSF        0x20
        !           261: #define                TLAN_NET_CMD_CAF        0x10
        !           262: #define                TLAN_NET_CMD_NOBRX      0x08
        !           263: #define                TLAN_NET_CMD_DUPLEX     0x04
        !           264: #define                TLAN_NET_CMD_TRFRAM     0x02
        !           265: #define                TLAN_NET_CMD_TXPACE     0x01
        !           266: #define TLAN_NET_SIO                   0x01
        !           267: #define        TLAN_NET_SIO_MINTEN     0x80
        !           268: #define                TLAN_NET_SIO_ECLOK      0x40
        !           269: #define                TLAN_NET_SIO_ETXEN      0x20
        !           270: #define                TLAN_NET_SIO_EDATA      0x10
        !           271: #define                TLAN_NET_SIO_NMRST      0x08
        !           272: #define                TLAN_NET_SIO_MCLK       0x04
        !           273: #define                TLAN_NET_SIO_MTXEN      0x02
        !           274: #define                TLAN_NET_SIO_MDATA      0x01
        !           275: #define TLAN_NET_STS                   0x02
        !           276: #define                TLAN_NET_STS_MIRQ       0x80
        !           277: #define                TLAN_NET_STS_HBEAT      0x40
        !           278: #define                TLAN_NET_STS_TXSTOP     0x20
        !           279: #define                TLAN_NET_STS_RXSTOP     0x10
        !           280: #define                TLAN_NET_STS_RSRVD      0x0F
        !           281: #define TLAN_NET_MASK                  0x03
        !           282: #define                TLAN_NET_MASK_MASK7     0x80
        !           283: #define                TLAN_NET_MASK_MASK6     0x40
        !           284: #define                TLAN_NET_MASK_MASK5     0x20
        !           285: #define                TLAN_NET_MASK_MASK4     0x10
        !           286: #define                TLAN_NET_MASK_RSRVD     0x0F
        !           287: #define TLAN_NET_CONFIG                        0x04
        !           288: #define        TLAN_NET_CFG_RCLK       0x8000
        !           289: #define                TLAN_NET_CFG_TCLK       0x4000
        !           290: #define                TLAN_NET_CFG_BIT        0x2000
        !           291: #define                TLAN_NET_CFG_RXCRC      0x1000
        !           292: #define                TLAN_NET_CFG_PEF        0x0800
        !           293: #define                TLAN_NET_CFG_1FRAG      0x0400
        !           294: #define                TLAN_NET_CFG_1CHAN      0x0200
        !           295: #define                TLAN_NET_CFG_MTEST      0x0100
        !           296: #define                TLAN_NET_CFG_PHY_EN     0x0080
        !           297: #define                TLAN_NET_CFG_MSMASK     0x007F
        !           298: #define TLAN_MAN_TEST                  0x06
        !           299: #define TLAN_DEF_VENDOR_ID             0x08
        !           300: #define TLAN_DEF_DEVICE_ID             0x0A
        !           301: #define TLAN_DEF_REVISION              0x0C
        !           302: #define TLAN_DEF_SUBCLASS              0x0D
        !           303: #define TLAN_DEF_MIN_LAT               0x0E
        !           304: #define TLAN_DEF_MAX_LAT               0x0F
        !           305: #define TLAN_AREG_0                    0x10
        !           306: #define TLAN_AREG_1                    0x16
        !           307: #define TLAN_AREG_2                    0x1C
        !           308: #define TLAN_AREG_3                    0x22
        !           309: #define TLAN_HASH_1                    0x28
        !           310: #define TLAN_HASH_2                    0x2C
        !           311: #define TLAN_GOOD_TX_FRMS              0x30
        !           312: #define TLAN_TX_UNDERUNS               0x33
        !           313: #define TLAN_GOOD_RX_FRMS              0x34
        !           314: #define TLAN_RX_OVERRUNS               0x37
        !           315: #define TLAN_DEFERRED_TX               0x38
        !           316: #define TLAN_CRC_ERRORS                        0x3A
        !           317: #define TLAN_CODE_ERRORS               0x3B
        !           318: #define TLAN_MULTICOL_FRMS             0x3C
        !           319: #define TLAN_SINGLECOL_FRMS            0x3E
        !           320: #define TLAN_EXCESSCOL_FRMS            0x40
        !           321: #define TLAN_LATE_COLS                 0x41
        !           322: #define TLAN_CARRIER_LOSS              0x42
        !           323: #define TLAN_ACOMMIT                   0x43
        !           324: #define TLAN_LED_REG                   0x44
        !           325: #define                TLAN_LED_ACT            0x10
        !           326: #define                TLAN_LED_LINK           0x01
        !           327: #define TLAN_BSIZE_REG                 0x45
        !           328: #define TLAN_MAX_RX                    0x46
        !           329: #define TLAN_INT_DIS                   0x48
        !           330: #define                TLAN_ID_TX_EOC          0x04
        !           331: #define                TLAN_ID_RX_EOF          0x02
        !           332: #define                TLAN_ID_RX_EOC          0x01
        !           333: 
        !           334: 
        !           335: 
        !           336: /* ThunderLAN Interrupt Codes */
        !           337: 
        !           338: #define TLAN_INT_NUMBER_OF_INTS        8
        !           339: 
        !           340: #define TLAN_INT_NONE                  0x0000
        !           341: #define TLAN_INT_TX_EOF                        0x0001
        !           342: #define TLAN_INT_STAT_OVERFLOW         0x0002
        !           343: #define TLAN_INT_RX_EOF                        0x0003
        !           344: #define TLAN_INT_DUMMY                 0x0004
        !           345: #define TLAN_INT_TX_EOC                        0x0005
        !           346: #define TLAN_INT_STATUS_CHECK          0x0006
        !           347: #define TLAN_INT_RX_EOC                        0x0007
        !           348: 
        !           349: 
        !           350: 
        !           351: /* ThunderLAN MII Registers */
        !           352: 
        !           353: /* Generic MII/PHY Registers */
        !           354: 
        !           355: #define MII_GEN_CTL                    0x00
        !           356: #define        MII_GC_RESET            0x8000
        !           357: #define                MII_GC_LOOPBK           0x4000
        !           358: #define                MII_GC_SPEEDSEL         0x2000
        !           359: #define                MII_GC_AUTOENB          0x1000
        !           360: #define                MII_GC_PDOWN            0x0800
        !           361: #define                MII_GC_ISOLATE          0x0400
        !           362: #define                MII_GC_AUTORSRT         0x0200
        !           363: #define                MII_GC_DUPLEX           0x0100
        !           364: #define                MII_GC_COLTEST          0x0080
        !           365: #define                MII_GC_RESERVED         0x007F
        !           366: #define MII_GEN_STS                    0x01
        !           367: #define                MII_GS_100BT4           0x8000
        !           368: #define                MII_GS_100BTXFD         0x4000
        !           369: #define                MII_GS_100BTXHD         0x2000
        !           370: #define                MII_GS_10BTFD           0x1000
        !           371: #define                MII_GS_10BTHD           0x0800
        !           372: #define                MII_GS_RESERVED         0x07C0
        !           373: #define                MII_GS_AUTOCMPLT        0x0020
        !           374: #define                MII_GS_RFLT             0x0010
        !           375: #define                MII_GS_AUTONEG          0x0008
        !           376: #define                MII_GS_LINK             0x0004
        !           377: #define                MII_GS_JABBER           0x0002
        !           378: #define                MII_GS_EXTCAP           0x0001
        !           379: #define MII_GEN_ID_HI                  0x02
        !           380: #define MII_GEN_ID_LO                  0x03
        !           381: #define        MII_GIL_OUI             0xFC00
        !           382: #define        MII_GIL_MODEL           0x03F0
        !           383: #define        MII_GIL_REVISION        0x000F
        !           384: #define MII_AN_ADV                     0x04
        !           385: #define MII_AN_LPA                     0x05
        !           386: #define MII_AN_EXP                     0x06
        !           387: 
        !           388: /* ThunderLAN Specific MII/PHY Registers */
        !           389: 
        !           390: #define TLAN_TLPHY_ID                  0x10
        !           391: #define TLAN_TLPHY_CTL                 0x11
        !           392: #define        TLAN_TC_IGLINK          0x8000
        !           393: #define                TLAN_TC_SWAPOL          0x4000
        !           394: #define                TLAN_TC_AUISEL          0x2000
        !           395: #define                TLAN_TC_SQEEN           0x1000
        !           396: #define                TLAN_TC_MTEST           0x0800
        !           397: #define                TLAN_TC_RESERVED        0x07F8
        !           398: #define                TLAN_TC_NFEW            0x0004
        !           399: #define                TLAN_TC_INTEN           0x0002
        !           400: #define                TLAN_TC_TINT            0x0001
        !           401: #define TLAN_TLPHY_STS                 0x12
        !           402: #define                TLAN_TS_MINT            0x8000
        !           403: #define                TLAN_TS_PHOK            0x4000
        !           404: #define                TLAN_TS_POLOK           0x2000
        !           405: #define                TLAN_TS_TPENERGY        0x1000
        !           406: #define                TLAN_TS_RESERVED        0x0FFF
        !           407: 
        !           408: 
        !           409: #define CIRC_INC( a, b ) if ( ++a >= b ) a = 0
        !           410: 
        !           411: /* Routines to access internal registers. */
        !           412: 
        !           413: inline u8 TLan_DioRead8(u16 base_addr, u16 internal_addr)
        !           414: {
        !           415:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           416:        return (inb((base_addr + TLAN_DIO_DATA) + (internal_addr & 0x3)));
        !           417:        
        !           418: } /* TLan_DioRead8 */
        !           419: 
        !           420: 
        !           421: 
        !           422: 
        !           423: inline u16 TLan_DioRead16(u16 base_addr, u16 internal_addr)
        !           424: {
        !           425:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           426:        return (inw((base_addr + TLAN_DIO_DATA) + (internal_addr & 0x2)));
        !           427: 
        !           428: } /* TLan_DioRead16 */
        !           429: 
        !           430: 
        !           431: 
        !           432: 
        !           433: inline u32 TLan_DioRead32(u16 base_addr, u16 internal_addr)
        !           434: {
        !           435:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           436:        return (inl(base_addr + TLAN_DIO_DATA));
        !           437: 
        !           438: } /* TLan_DioRead32 */
        !           439: 
        !           440: 
        !           441: 
        !           442: 
        !           443: inline void TLan_DioWrite8(u16 base_addr, u16 internal_addr, u8 data)
        !           444: {
        !           445:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           446:        outb(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x3));
        !           447: 
        !           448: }
        !           449: 
        !           450: 
        !           451: 
        !           452: 
        !           453: inline void TLan_DioWrite16(u16 base_addr, u16 internal_addr, u16 data)
        !           454: {
        !           455:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           456:        outw(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x2));
        !           457: 
        !           458: }
        !           459: 
        !           460: 
        !           461: 
        !           462: 
        !           463: inline void TLan_DioWrite32(u16 base_addr, u16 internal_addr, u32 data)
        !           464: {
        !           465:        outw(internal_addr, base_addr + TLAN_DIO_ADR);
        !           466:        outl(data, base_addr + TLAN_DIO_DATA + (internal_addr & 0x2));
        !           467: 
        !           468: }
        !           469: 
        !           470: 
        !           471: 
        !           472: #if 0
        !           473: inline void TLan_ClearBit(u8 bit, u16 port)
        !           474: {
        !           475:        outb_p(inb_p(port) & ~bit, port);
        !           476: }
        !           477: 
        !           478: 
        !           479: 
        !           480: 
        !           481: inline int TLan_GetBit(u8 bit, u16 port)
        !           482: {
        !           483:        return ((int) (inb_p(port) & bit));
        !           484: }
        !           485: 
        !           486: 
        !           487: 
        !           488: 
        !           489: inline void TLan_SetBit(u8 bit, u16 port)
        !           490: {
        !           491:        outb_p(inb_p(port) | bit, port);
        !           492: }
        !           493: #endif
        !           494: 
        !           495: #define TLan_ClearBit( bit, port )     outb_p(inb_p(port) & ~bit, port)
        !           496: #define TLan_GetBit( bit, port )       ((int) (inb_p(port) & bit))
        !           497: #define TLan_SetBit( bit, port )       outb_p(inb_p(port) | bit, port)
        !           498: 
        !           499: 
        !           500: inline u32     xor( u32 a, u32 b )
        !           501: {
        !           502:        return ( ( a && ! b ) || ( ! a && b ) );
        !           503: }
        !           504: #define XOR8( a, b, c, d, e, f, g, h ) xor( a, xor( b, xor( c, xor( d, xor( e, xor( f, xor( g, h ) ) ) ) ) ) )
        !           505: #define DA( a, bit )                                   ( ( (u8) a[bit/8] ) & ( (u8) ( 1 << bit%8 ) ) )
        !           506: 
        !           507: inline u32 TLan_HashFunc( u8 *a )
        !           508: {
        !           509:        u32     hash;
        !           510: 
        !           511:        hash  = XOR8( DA(a,0), DA(a, 6), DA(a,12), DA(a,18), DA(a,24), DA(a,30), DA(a,36), DA(a,42) );
        !           512:        hash |= XOR8( DA(a,1), DA(a, 7), DA(a,13), DA(a,19), DA(a,25), DA(a,31), DA(a,37), DA(a,43) ) << 1;
        !           513:        hash |= XOR8( DA(a,2), DA(a, 8), DA(a,14), DA(a,20), DA(a,26), DA(a,32), DA(a,38), DA(a,44) ) << 2;
        !           514:        hash |= XOR8( DA(a,3), DA(a, 9), DA(a,15), DA(a,21), DA(a,27), DA(a,33), DA(a,39), DA(a,45) ) << 3;
        !           515:        hash |= XOR8( DA(a,4), DA(a,10), DA(a,16), DA(a,22), DA(a,28), DA(a,34), DA(a,40), DA(a,46) ) << 4;
        !           516:        hash |= XOR8( DA(a,5), DA(a,11), DA(a,17), DA(a,23), DA(a,29), DA(a,35), DA(a,41), DA(a,47) ) << 5;
        !           517: 
        !           518:        return hash;
        !           519: 
        !           520: } 
        !           521: 
        !           522: 
        !           523: 
        !           524: 
        !           525: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.