home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1999 March B / SCO_CASTOR4RRT.iso / nics / root.2 / usr / include / sys / ethdef.h / ethdef
Text File  |  1998-08-19  |  5KB  |  162 lines

  1. /*
  2.  * Copyright (c) 1998 The Santa Cruz Operation, Inc.. All Rights Reserved. 
  3.  *                                                                         
  4.  *        THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF THE               
  5.  *                   SANTA CRUZ OPERATION INC.                             
  6.  *                                                                         
  7.  *   The copyright notice above does not evidence any actual or intended   
  8.  *   publication of such source code.                                      
  9.  */
  10.  
  11. #ifndef _IO_TSM_ETHTSM_ETHDEF_H
  12. #define _IO_TSM_ETHTSM_ETHDEF_H
  13.  
  14. #ident    "@(#)ethdef.h    2.1"
  15. #ident    "$Header: $"
  16.  
  17. #ifdef _KERNEL_HEADERS
  18.  
  19. #include <io/odi/msm/msmstruc.h>
  20.  
  21. #elif defined(_KERNEL)
  22.  
  23. #include <sys/msmstruc.h>
  24.  
  25. #endif
  26.  
  27. /*
  28.  * This defines the size of each Frame-Types MAC Header.
  29.  */
  30. #define    SIZE_E8023            14
  31. #define    SIZE_E8022            17
  32. #define    SIZE_EII            14
  33. #define    SIZE_ESNAP            22
  34.  
  35. /*
  36.  * These are used for supporting Assembly HSMs.
  37.  */
  38. #define E8022_DESCRIPT_LEN          14
  39. #define E8023_DESCRIPT_LEN          14
  40. #define EII_DESCRIPT_LEN                11
  41. #define ESNAP_DESCRIPT_LEN          13
  42.  
  43. /*
  44.  * This is the Maximum size a packet can be.
  45.  */
  46. #define MAX8023LENGTH            1500
  47. #define MAX_PACKET_LENGTH        1514
  48.  
  49. #define MULTICASTBIT            0x01
  50. #define GROUPBIT            0x01
  51. #define LOCALBIT            0x02
  52.  
  53. #define MIN_PKT_SIZE            60
  54.  
  55. #define STATISTICSMASK               0x0D300003
  56.  
  57. /*
  58.  * These bits define 802.2 types.
  59.  */
  60. #define S_OR_U_FORMAT            0x01
  61. #define U_FORMAT            0x02
  62.  
  63. typedef struct    _MEDIA_HEADER_ {
  64.     NODE_ADDR    MH_Destination;
  65.     NODE_ADDR    MH_Source;
  66.     UINT8        MH_Length[2];
  67.     UINT8        MH_DSAP;
  68.     UINT8        MH_SSAP;
  69.     UINT8        MH_Ctrl0;
  70.     UINT8        MH_SNAP[5];
  71. } MEDIA_HEADER;
  72.  
  73. typedef    struct    _TCB_FRAGMENTSTRUCT_ {
  74.     UINT32        TCB_FragmentCount;
  75.     FRAGMENTSTRUCT    TCB_Fragment;
  76. } TCB_FRAGMENTSTRUCT;
  77.  
  78. #define NUMBER_OF_PROMISCUOUS_COUNTERS  32
  79.  
  80. typedef    struct _TCB_ {
  81.     UINT32            TCB_DriverWS[3];
  82.     UINT32            TCB_DataLen;
  83.     TCB_FRAGMENTSTRUCT    *TCB_FragStruct;
  84.     UINT32            TCB_MediaHeaderLen;
  85.     MEDIA_HEADER        TCB_MediaHeader;
  86. } TCB;
  87.  
  88. typedef struct _MEDIA_DATA_ {
  89.     UINT32            MaxMulticastAddresses;
  90.     GROUP_ADDR_LIST_NODE        *MulticastAddressList;
  91.     UINT32            MulticastAddressCount;
  92.     TCB            *TCBHead;
  93.     TCB            *TCBList;
  94.     MLID_STATS_TABLE    *NewStatsPtr;
  95.     void            (*TransmitRoutine)(TCB *);
  96.     UINT32            PromiscuousMode;
  97.     UINT8        PromiscuousCounters[NUMBER_OF_PROMISCUOUS_COUNTERS];
  98.     UINT32            RxStatus;
  99. } MEDIA_DATA;
  100.  
  101. ODISTAT        CEtherTSMRegisterHSM(DRIVER_PARM_BLOCK *DriverParameterBlock,
  102.             CONFIG_TABLE **configTable);
  103. RCB         *CEtherTSMFastProcessGetRCB(DRIVER_DATA *driverData,
  104.             RCB *rcb, UINT32 pktSize, UINT32 rcvStatus,
  105.             UINT32 newRcbSize);
  106. void        CEtherTSMFastSendComplete(DRIVER_DATA *driverData, TCB *tcb,
  107.             UINT32 transmitStatus);
  108. TCB        *CEtherTSMGetNextSend(DRIVER_DATA *driverData,
  109.             CONFIG_TABLE **configTable, UINT32 *lengthToSend,
  110.             void **TCBPhysicalPtr);
  111. RCB        *CEtherTSMGetRCB(DRIVER_DATA *driverData, UINT8 *lookAheadData,
  112.             UINT32 pktSize, UINT32 rcvStatus, UINT32 *startByte,
  113.             UINT32 *numBytes);
  114. RCB         *CEtherTSMProcessGetRCB(DRIVER_DATA *driverData, RCB *rcb,
  115.             UINT32 pktSize, UINT32 rcvStatus, UINT32 newRcbSize);
  116. void        CEtherTSMFastRcvComplete(DRIVER_DATA *driverData, RCB *rcb);
  117. void        CEtherTSMFastRcvCompleteStatus(DRIVER_DATA *driverData,
  118.             RCB *rcb, UINT32 packetLength, UINT32 packetStatus);
  119. UINT32        CEtherTSMGetHSMIFLevel();
  120. void        CEtherTSMRcvComplete(DRIVER_DATA *driverData, RCB *rcb);
  121. void        CEtherTSMRcvCompleteStatus(DRIVER_DATA *driverData, RCB *rcb,
  122.             UINT32 packetLength, UINT32 packetStatus);
  123. void        CEtherTSMSendComplete(DRIVER_DATA *driverData, TCB *tcb,
  124.             UINT32 transmitStatus);
  125. void        CEtherTSMECBRcvComplete(DRIVER_DATA *driverData, ECB *ecb);
  126. void        CEtherTSMPipelineRcvComplete(DRIVER_DATA *driverData, ECB *ecb,
  127.             UINT32 packetLength, UINT32 packetStatus);
  128. ODISTAT      CEtherTSMUpdateMulticast(DRIVER_DATA *driverData);
  129. UINT32         CMediaSendRaw8023(SHARED_DATA *sharedData, ECB *ecb, TCB *tcb);
  130. UINT32         CMediaSend8022Over8023(SHARED_DATA *sharedData, ECB *ecb,
  131.             TCB *tcb);
  132. UINT32         CMediaSend8022Snap(SHARED_DATA *sharedData, ECB *ecb, TCB *tcb);
  133. UINT32         CMediaSendEthernetII(SHARED_DATA *sharedData, ECB *ecb,
  134.             TCB *tcb);
  135. GROUP_ADDR_LIST_NODE *EthFindAddressInMCTable(SHARED_DATA *sharedData,
  136.             UINT8 *mcAddress);
  137. ODISTAT        MediaAdjust(FRAME_DATA *frameData);
  138. ODISTAT        MediaInit(DRIVER_DATA *driverData, FRAME_DATA *frameData);
  139. ODISTAT        MediaReset(DRIVER_DATA *driverData, FRAME_DATA *frameData);
  140. ODISTAT        MediaShutdown(DRIVER_DATA *driverData, FRAME_DATA *frameData,
  141.             UINT32 shutdownType);
  142. void        MediaSend(ECB *ecb, CONFIG_TABLE *configTable);
  143. ODISTAT        MediaAddMulticast(DRIVER_DATA *driverData,
  144.             NODE_ADDR *McAddress);
  145. ODISTAT        MediaDeleteMulticast(DRIVER_DATA *driverData,
  146.             NODE_ADDR *McAddress);
  147. ODISTAT        MediaNodeOverride(FRAME_DATA *frameData, MEON mode);
  148. ODISTAT        MediaAdjustNodeAddress(FRAME_DATA *frameData);
  149. ODISTAT        MediaSetLookAheadSize(DRIVER_DATA *driverData,
  150.             FRAME_DATA *frameData, UINT32 size);
  151. ODISTAT        MediaPromiscuousChange(DRIVER_DATA *driverData,
  152.             FRAME_DATA *frameData, UINT32 PromiscuousState,
  153.             UINT32 *PromiscuousMode);
  154. ODISTAT        MediaRegisterMonitor(DRIVER_DATA *driverData,
  155.             FRAME_DATA *frameData, void (*TXRMonRoutine)(TCB *),
  156.             BOOLEAN MonitorState);
  157. ODISTAT        MediaGetParameters(CONFIG_TABLE *configTable);
  158. ODISTAT        MediaGetMulticastInfo(struct _DRIVER_DATA_ *driverData,
  159.             ECB *MulticastInfoECB);
  160.  
  161. #endif    /* _IO_TSM_ETHTSM_ETHDEF_H */
  162.