uboot/drivers/net/sk98lin/h/skrlmt.h
<<
>>
Prefs
   1/******************************************************************************
   2 *
   3 * Name:        skrlmt.h
   4 * Project:     GEnesis, PCI Gigabit Ethernet Adapter
   5 * Version:     $Revision: 1.35 $
   6 * Date:        $Date: 2003/01/31 14:12:41 $
   7 * Purpose:     Header file for Redundant Link ManagemenT.
   8 *
   9 ******************************************************************************/
  10
  11/******************************************************************************
  12 *
  13 *      (C)Copyright 1998-2001 SysKonnect GmbH.
  14 *
  15 *      This program is free software; you can redistribute it and/or modify
  16 *      it under the terms of the GNU General Public License as published by
  17 *      the Free Software Foundation; either version 2 of the License, or
  18 *      (at your option) any later version.
  19 *
  20 *      The information in this file is provided "AS IS" without warranty.
  21 *
  22 ******************************************************************************/
  23
  24/******************************************************************************
  25 *
  26 * History:
  27 *
  28 *      $Log: skrlmt.h,v $
  29 *      Revision 1.35  2003/01/31 14:12:41  mkunz
  30 *      single port adapter runs now with two identical MAC addresses
  31 *
  32 *      Revision 1.34  2002/09/23 15:13:41  rwahl
  33 *      Editorial changes.
  34 *
  35 *      Revision 1.33  2001/07/03 12:16:48  mkunz
  36 *      New Flag ChgBcPrio (Change priority of last broadcast received)
  37 *
  38 *      Revision 1.32  2001/02/14 14:06:31  rassmann
  39 *      Editorial changes.
  40 *
  41 *      Revision 1.31  2001/02/05 14:25:26  rassmann
  42 *      Prepared RLMT for transparent operation.
  43 *
  44 *      Revision 1.30  2001/01/22 13:41:39  rassmann
  45 *      Supporting two nets on dual-port adapters.
  46 *
  47 *      Revision 1.29  2000/11/17 08:58:00  rassmann
  48 *      Moved CheckSwitch from SK_RLMT_PACKET_RECEIVED to SK_RLMT_TIM event.
  49 *
  50 *      Revision 1.28  2000/11/09 12:24:34  rassmann
  51 *      Editorial changes.
  52 *
  53 *      Revision 1.27  1999/11/22 13:59:56  cgoos
  54 *      Changed license header to GPL.
  55 *
  56 *      Revision 1.26  1999/10/04 14:01:19  rassmann
  57 *      Corrected reaction to reception of BPDU frames (#10441).
  58 *
  59 *      Revision 1.25  1999/07/20 12:53:39  rassmann
  60 *      Fixed documentation errors for lookahead macros.
  61 *
  62 *      Revision 1.24  1999/05/28 11:15:56  rassmann
  63 *      Changed behaviour to reflect Design Spec v1.2.
  64 *      Controlling Link LED(s).
  65 *      Introduced RLMT Packet Version field in RLMT Packet.
  66 *      Newstyle lookahead macros (checking meta-information before looking at
  67 *        the packet).
  68 *
  69 *      Revision 1.23  1999/01/28 12:50:42  rassmann
  70 *      Not using broadcast time stamps in CheckLinkState mode.
  71 *
  72 *      Revision 1.22  1999/01/27 14:13:04  rassmann
  73 *      Monitoring broadcast traffic.
  74 *      Switching more reliably and not too early if switch is
  75 *       configured for spanning tree.
  76 *
  77 *      Revision 1.21  1998/12/08 13:11:25  rassmann
  78 *      Stopping SegTimer at RlmtStop.
  79 *
  80 *      Revision 1.20  1998/11/24 12:37:33  rassmann
  81 *      Implemented segmentation check.
  82 *
  83 *      Revision 1.19  1998/11/17 13:43:06  rassmann
  84 *      Handling (logical) tx failure.
  85 *      Sending packet on logical address after PORT_SWITCH.
  86 *
  87 *      Revision 1.18  1998/11/13 16:56:56  rassmann
  88 *      Added macro version of SkRlmtLookaheadPacket.
  89 *
  90 *      Revision 1.17  1998/11/06 18:06:05  rassmann
  91 *      Corrected timing when RLMT checks fail.
  92 *      Clearing tx counter earlier in periodical checks.
  93 *
  94 *      Revision 1.16  1998/11/03 13:53:50  rassmann
  95 *      RLMT should switch now (at least in mode 3).
  96 *
  97 *      Revision 1.15  1998/10/22 11:39:52  rassmann
  98 *      Corrected signed/unsigned mismatches.
  99 *      Corrected receive list handling and address recognition.
 100 *
 101 *      Revision 1.14  1998/10/15 15:16:36  rassmann
 102 *      Finished Spanning Tree checking.
 103 *      Checked with lint.
 104 *
 105 *      Revision 1.13  1998/09/24 19:16:08  rassmann
 106 *      Code cleanup.
 107 *      Introduced Timer for PORT_DOWN due to no RX.
 108 *
 109 *      Revision 1.12  1998/09/16 11:09:52  rassmann
 110 *      Syntax corrections.
 111 *
 112 *      Revision 1.11  1998/09/15 11:28:50  rassmann
 113 *      Syntax corrections.
 114 *
 115 *      Revision 1.10  1998/09/14 17:07:38  rassmann
 116 *      Added code for port checking via LAN.
 117 *      Changed Mbuf definition.
 118 *
 119 *      Revision 1.9  1998/09/07 11:14:15  rassmann
 120 *      Syntax corrections.
 121 *
 122 *      Revision 1.8  1998/09/07 09:06:08  rassmann
 123 *      Syntax corrections.
 124 *
 125 *      Revision 1.7  1998/09/04 19:41:34  rassmann
 126 *      Syntax corrections.
 127 *      Started entering code for checking local links.
 128 *
 129 *      Revision 1.6  1998/09/04 12:14:28  rassmann
 130 *      Interface cleanup.
 131 *
 132 *      Revision 1.5  1998/09/02 16:55:29  rassmann
 133 *      Updated to reflect new DRV/HWAC/RLMT interface.
 134 *
 135 *      Revision 1.4  1998/09/02 07:26:02  afischer
 136 *      typedef for SK_RLMT_PORT
 137 *
 138 *      Revision 1.3  1998/08/27 14:29:03  rassmann
 139 *      Code cleanup.
 140 *
 141 *      Revision 1.2  1998/08/27 14:26:25  rassmann
 142 *      Updated interface.
 143 *
 144 *      Revision 1.1  1998/08/21 08:29:10  rassmann
 145 *      First public version.
 146 *
 147 ******************************************************************************/
 148
 149/******************************************************************************
 150 *
 151 * Description:
 152 *
 153 * This is the header file for Redundant Link ManagemenT.
 154 *
 155 * Include File Hierarchy:
 156 *
 157 *      "skdrv1st.h"
 158 *      ...
 159 *      "sktypes.h"
 160 *      "skqueue.h"
 161 *      "skaddr.h"
 162 *      "skrlmt.h"
 163 *      ...
 164 *      "skdrv2nd.h"
 165 *
 166 ******************************************************************************/
 167
 168#ifndef __INC_SKRLMT_H
 169#define __INC_SKRLMT_H
 170
 171#ifdef __cplusplus
 172#error C++ is not yet supported.
 173extern "C" {
 174#endif  /* cplusplus */
 175
 176/* defines ********************************************************************/
 177
 178#define SK_RLMT_NET_DOWN_TEMP   1       /* NET_DOWN due to last port down. */
 179#define SK_RLMT_NET_DOWN_FINAL  2       /* NET_DOWN due to RLMT_STOP. */
 180
 181/* ----- Default queue sizes - must be multiples of 8 KB ----- */
 182
 183/* Less than 8 KB free in RX queue => pause frames. */
 184#define SK_RLMT_STANDBY_QRXSIZE 128     /* Size of rx standby queue in KB. */
 185#define SK_RLMT_STANDBY_QXASIZE 32      /* Size of async standby queue in KB. */
 186#define SK_RLMT_STANDBY_QXSSIZE 0       /* Size of sync standby queue in KB. */
 187
 188#define SK_RLMT_MAX_TX_BUF_SIZE 60      /* Maximum RLMT transmit size. */
 189
 190/* ----- PORT states ----- */
 191
 192#define SK_RLMT_PS_INIT                 0       /* Port state: Init. */
 193#define SK_RLMT_PS_LINK_DOWN    1       /* Port state: Link down. */
 194#define SK_RLMT_PS_DOWN                 2       /* Port state: Port down. */
 195#define SK_RLMT_PS_GOING_UP             3       /* Port state: Going up. */
 196#define SK_RLMT_PS_UP                   4       /* Port state: Up. */
 197
 198/* ----- RLMT states ----- */
 199
 200#define SK_RLMT_RS_INIT                 0       /* RLMT state: Init. */
 201#define SK_RLMT_RS_NET_DOWN             1       /* RLMT state: Net down. */
 202#define SK_RLMT_RS_NET_UP               2       /* RLMT state: Net up. */
 203
 204/* ----- PORT events ----- */
 205
 206#define SK_RLMT_LINK_UP                 1001    /* Link came up. */
 207#define SK_RLMT_LINK_DOWN               1002    /* Link went down. */
 208#define SK_RLMT_PORT_ADDR               1003    /* Port address changed. */
 209
 210/* ----- RLMT events ----- */
 211
 212#define SK_RLMT_START                   2001    /* Start RLMT. */
 213#define SK_RLMT_STOP                    2002    /* Stop RLMT. */
 214#define SK_RLMT_PACKET_RECEIVED 2003    /* Packet was received for RLMT. */
 215#define SK_RLMT_STATS_CLEAR             2004    /* Clear statistics. */
 216#define SK_RLMT_STATS_UPDATE    2005    /* Update statistics. */
 217#define SK_RLMT_PREFPORT_CHANGE 2006    /* Change preferred port. */
 218#define SK_RLMT_MODE_CHANGE             2007    /* New RlmtMode. */
 219#define SK_RLMT_SET_NETS                2008    /* Number of Nets (1 or 2). */
 220
 221/* ----- RLMT mode bits ----- */
 222
 223/*
 224 * CAUTION:     These defines are private to RLMT.
 225 *                      Please use the RLMT mode defines below.
 226 */
 227
 228#define SK_RLMT_CHECK_LINK                1             /* Check Link. */
 229#define SK_RLMT_CHECK_LOC_LINK    2             /* Check other link on same adapter. */
 230#define SK_RLMT_CHECK_SEG                 4             /* Check segmentation. */
 231
 232#ifndef RLMT_CHECK_REMOTE
 233#define SK_RLMT_CHECK_OTHERS    SK_RLMT_CHECK_LOC_LINK
 234#else   /* RLMT_CHECK_REMOTE */
 235#define SK_RLMT_CHECK_REM_LINK    8             /* Check link(s) on other adapter(s). */
 236#define SK_RLMT_MAX_REMOTE_PORTS_CHECKED        3
 237#define SK_RLMT_CHECK_OTHERS    \
 238                (SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
 239#endif  /* RLMT_CHECK_REMOTE */
 240
 241#ifndef SK_RLMT_ENABLE_TRANSPARENT
 242#define SK_RLMT_TRANSPARENT               0             /* RLMT transparent - inactive. */
 243#else   /* SK_RLMT_ENABLE_TRANSPARENT */
 244#define SK_RLMT_TRANSPARENT             128             /* RLMT transparent. */
 245#endif  /* SK_RLMT_ENABLE_TRANSPARENT */
 246
 247/* ----- RLMT modes ----- */
 248
 249/* Check Link State. */
 250#define SK_RLMT_MODE_CLS        (SK_RLMT_CHECK_LINK)
 251
 252/* Check Local Ports: check other links on the same adapter. */
 253#define SK_RLMT_MODE_CLP        (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK)
 254
 255/* Check Local Ports and Segmentation Status. */
 256#define SK_RLMT_MODE_CLPSS      \
 257                (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_SEG)
 258
 259#ifdef RLMT_CHECK_REMOTE
 260/* Check Local and Remote Ports: check links (local or remote). */
 261        Name of define TBD!
 262#define SK_RLMT_MODE_CRP        \
 263                (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | SK_RLMT_CHECK_REM_LINK)
 264
 265/* Check Local and Remote Ports and Segmentation Status. */
 266        Name of define TBD!
 267#define SK_RLMT_MODE_CRPSS      \
 268                (SK_RLMT_CHECK_LINK | SK_RLMT_CHECK_LOC_LINK | \
 269                SK_RLMT_CHECK_REM_LINK | SK_RLMT_CHECK_SEG)
 270#endif  /* RLMT_CHECK_REMOTE */
 271
 272/* ----- RLMT lookahead result bits ----- */
 273
 274#define SK_RLMT_RX_RLMT                 1       /* Give packet to RLMT. */
 275#define SK_RLMT_RX_PROTOCOL             2       /* Give packet to protocol. */
 276
 277/* Macros */
 278
 279#if 0
 280SK_AC           *pAC            /* adapter context */
 281SK_U32          PortNum         /* receiving port */
 282unsigned        PktLen          /* received packet's length */
 283SK_BOOL         IsBc            /* Flag: packet is broadcast */
 284unsigned        *pOffset        /* offs. of bytes to present to SK_RLMT_LOOKAHEAD */
 285unsigned        *pNumBytes      /* #Bytes to present to SK_RLMT_LOOKAHEAD */
 286#endif  /* 0 */
 287
 288#define SK_RLMT_PRE_LOOKAHEAD(pAC,PortNum,PktLen,IsBc,pOffset,pNumBytes) { \
 289        SK_AC   *_pAC; \
 290        SK_U32  _PortNum; \
 291        _pAC = (pAC); \
 292        _PortNum = (SK_U32)(PortNum); \
 293        /* _pAC->Rlmt.Port[_PortNum].PacketsRx++; */ \
 294        _pAC->Rlmt.Port[_PortNum].PacketsPerTimeSlot++; \
 295    if (_pAC->Rlmt.RlmtOff) { \
 296                *(pNumBytes) = 0; \
 297    } \
 298    else {\
 299        if ((_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_TRANSPARENT) != 0) { \
 300                *(pNumBytes) = 0; \
 301        } \
 302        else if (IsBc) { \
 303                if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode != SK_RLMT_MODE_CLS) { \
 304                        *(pNumBytes) = 6; \
 305                        *(pOffset) = 6; \
 306                } \
 307                else { \
 308                        *(pNumBytes) = 0; \
 309                } \
 310        } \
 311        else { \
 312                if ((PktLen) > SK_RLMT_MAX_TX_BUF_SIZE) { \
 313                        /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
 314                        *(pNumBytes) = 0; \
 315                } \
 316                else { \
 317                        *(pNumBytes) = 6; \
 318                        *(pOffset) = 0; \
 319                } \
 320        } \
 321    } \
 322}
 323
 324#if 0
 325SK_AC           *pAC            /* adapter context */
 326SK_U32          PortNum         /* receiving port */
 327SK_U8           *pLaPacket,     /* received packet's data (points to pOffset) */
 328SK_BOOL         IsBc            /* Flag: packet is broadcast */
 329SK_BOOL         IsMc            /* Flag: packet is multicast */
 330unsigned        *pForRlmt       /* Result: bits SK_RLMT_RX_RLMT, SK_RLMT_RX_PROTOCOL */
 331SK_RLMT_LOOKAHEAD() expects *pNumBytes from
 332packet offset *pOffset (s.a.) at *pLaPacket.
 333
 334If you use SK_RLMT_LOOKAHEAD in a path where you already know if the packet is
 335BC, MC, or UC, you should use constants for IsBc and IsMc, so that your compiler
 336can trash unneeded parts of the if construction.
 337#endif  /* 0 */
 338
 339#define SK_RLMT_LOOKAHEAD(pAC,PortNum,pLaPacket,IsBc,IsMc,pForRlmt) { \
 340        SK_AC   *_pAC; \
 341        SK_U32  _PortNum; \
 342        SK_U8   *_pLaPacket; \
 343        _pAC = (pAC); \
 344        _PortNum = (SK_U32)(PortNum); \
 345        _pLaPacket = (SK_U8 *)(pLaPacket); \
 346        if (IsBc) {\
 347                if (!SK_ADDR_EQUAL(_pLaPacket, _pAC->Addr.Net[_pAC->Rlmt.Port[ \
 348                        _PortNum].Net->NetNumber].CurrentMacAddress.a)) { \
 349                        _pAC->Rlmt.Port[_PortNum].BcTimeStamp = SkOsGetTime(_pAC); \
 350                        _pAC->Rlmt.CheckSwitch = SK_TRUE; \
 351                } \
 352                /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
 353                *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
 354        } \
 355        else if (IsMc) { \
 356                if (SK_ADDR_EQUAL(_pLaPacket, BridgeMcAddr.a)) { \
 357                        _pAC->Rlmt.Port[_PortNum].BpduPacketsPerTimeSlot++; \
 358                        if (_pAC->Rlmt.Port[_PortNum].Net->RlmtMode & SK_RLMT_CHECK_SEG) { \
 359                                *(pForRlmt) = SK_RLMT_RX_RLMT | SK_RLMT_RX_PROTOCOL; \
 360                        } \
 361                        else { \
 362                                *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
 363                        } \
 364                } \
 365                else if (SK_ADDR_EQUAL(_pLaPacket, SkRlmtMcAddr.a)) { \
 366                        *(pForRlmt) = SK_RLMT_RX_RLMT; \
 367                } \
 368                else { \
 369                        /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
 370                        *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
 371                } \
 372        } \
 373        else { \
 374                if (SK_ADDR_EQUAL( \
 375                        _pLaPacket, \
 376                        _pAC->Addr.Port[_PortNum].CurrentMacAddress.a)) { \
 377                        *(pForRlmt) = SK_RLMT_RX_RLMT; \
 378                } \
 379                else { \
 380                        /* _pAC->Rlmt.Port[_PortNum].DataPacketsPerTimeSlot++; */ \
 381                        *(pForRlmt) = SK_RLMT_RX_PROTOCOL; \
 382                } \
 383        } \
 384}
 385
 386#ifdef SK_RLMT_FAST_LOOKAHEAD
 387Error: SK_RLMT_FAST_LOOKAHEAD no longer used. Use new macros for lookahead.
 388#endif  /* SK_RLMT_FAST_LOOKAHEAD */
 389#ifdef SK_RLMT_SLOW_LOOKAHEAD
 390Error: SK_RLMT_SLOW_LOOKAHEAD no longer used. Use new macros for lookahead.
 391#endif  /* SK_RLMT_SLOW_LOOKAHEAD */
 392
 393/* typedefs *******************************************************************/
 394
 395#ifdef SK_RLMT_MBUF_PRIVATE
 396typedef struct s_RlmtMbuf {
 397        some content
 398} SK_RLMT_MBUF;
 399#endif  /* SK_RLMT_MBUF_PRIVATE */
 400
 401
 402#ifdef SK_LA_INFO
 403typedef struct s_Rlmt_PacketInfo {
 404        unsigned        PacketLength;                   /* Length of packet. */
 405        unsigned        PacketType;                             /* Directed/Multicast/Broadcast. */
 406} SK_RLMT_PINFO;
 407#endif  /* SK_LA_INFO */
 408
 409
 410typedef struct s_RootId {
 411        SK_U8           Id[8];                                  /* Root Bridge Id. */
 412} SK_RLMT_ROOT_ID;
 413
 414
 415typedef struct s_port {
 416        SK_MAC_ADDR     CheckAddr;
 417        SK_BOOL         SuspectTx;
 418} SK_PORT_CHECK;
 419
 420
 421typedef struct s_RlmtNet SK_RLMT_NET;
 422
 423
 424typedef struct s_RlmtPort {
 425
 426/* ----- Public part (read-only) ----- */
 427
 428        SK_U8                   PortState;                              /* Current state of this port. */
 429
 430        /* For PNMI */
 431        SK_BOOL                 LinkDown;
 432        SK_BOOL                 PortDown;
 433        SK_U8                   Align01;
 434
 435        SK_U32                  PortNumber;                             /* Number of port on adapter. */
 436        SK_RLMT_NET *   Net;                                    /* Net port belongs to. */
 437
 438        SK_U64                  TxHelloCts;
 439        SK_U64                  RxHelloCts;
 440        SK_U64                  TxSpHelloReqCts;
 441        SK_U64                  RxSpHelloCts;
 442
 443/* ----- Private part ----- */
 444
 445/*      SK_U64                  PacketsRx; */                           /* Total packets received. */
 446        SK_U32                  PacketsPerTimeSlot;             /* Packets rxed between TOs. */
 447/*      SK_U32                  DataPacketsPerTimeSlot; */      /* Data packets ... */
 448        SK_U32                  BpduPacketsPerTimeSlot; /* BPDU packets rxed in TS. */
 449        SK_U64                  BcTimeStamp;                    /* Time of last BC receive. */
 450        SK_U64                  GuTimeStamp;                    /* Time of entering GOING_UP. */
 451
 452        SK_TIMER                UpTimer;                                /* Timer struct Link/Port up. */
 453        SK_TIMER                DownRxTimer;                    /* Timer struct down rx. */
 454        SK_TIMER                DownTxTimer;                    /* Timer struct down tx. */
 455
 456        SK_U32                  CheckingState;                  /* Checking State. */
 457
 458        SK_ADDR_PORT *  AddrPort;
 459
 460        SK_U8                   Random[4];                              /* Random value. */
 461        unsigned                PortsChecked;                   /* #ports checked. */
 462        unsigned                PortsSuspect;                   /* #ports checked that are s. */
 463        SK_PORT_CHECK   PortCheck[1];
 464/*      SK_PORT_CHECK   PortCheck[SK_MAX_MACS - 1]; */
 465
 466        SK_BOOL                 PortStarted;                    /* Port is started. */
 467        SK_BOOL                 PortNoRx;                               /* NoRx for >= 1 time slot. */
 468        SK_BOOL                 RootIdSet;
 469        SK_RLMT_ROOT_ID Root;                                   /* Root Bridge Id. */
 470} SK_RLMT_PORT;
 471
 472
 473struct s_RlmtNet {
 474
 475/* ----- Public part (read-only) ----- */
 476
 477        SK_U32                  NetNumber;                      /* Number of net. */
 478
 479        SK_RLMT_PORT *  Port[SK_MAX_MACS];      /* Ports that belong to this net. */
 480        SK_U32                  NumPorts;                       /* Number of ports. */
 481        SK_U32                  PrefPort;                       /* Preferred port. */
 482
 483        /* For PNMI */
 484
 485        SK_U32                  ChgBcPrio;                      /* Change Priority of last broadcast received */
 486        SK_U32                  RlmtMode;                       /* Check ... */
 487        SK_U32                  ActivePort;                     /* Active port. */
 488        SK_U32                  Preference;             /* 0xFFFFFFFF: Automatic. */
 489
 490        SK_U8                   RlmtState;                      /* Current RLMT state. */
 491
 492/* ----- Private part ----- */
 493        SK_BOOL                 RootIdSet;
 494        SK_U16                  Align01;
 495
 496        int                             LinksUp;                        /* #Links up. */
 497        int                             PortsUp;                        /* #Ports up. */
 498        SK_U32                  TimeoutValue;           /* RLMT timeout value. */
 499
 500        SK_U32                  CheckingState;          /* Checking State. */
 501        SK_RLMT_ROOT_ID Root;                           /* Root Bridge Id. */
 502
 503        SK_TIMER                LocTimer;                       /* Timer struct. */
 504        SK_TIMER                SegTimer;                       /* Timer struct. */
 505};
 506
 507
 508typedef struct s_Rlmt {
 509
 510/* ----- Public part (read-only) ----- */
 511
 512        SK_U32                  NumNets;                        /* Number of nets. */
 513        SK_U32                  NetsStarted;            /* Number of nets started. */
 514        SK_RLMT_NET             Net[SK_MAX_NETS];       /* Array of available nets. */
 515        SK_RLMT_PORT    Port[SK_MAX_MACS];      /* Array of available ports. */
 516
 517/* ----- Private part ----- */
 518        SK_BOOL                 CheckSwitch;
 519        SK_BOOL                 RlmtOff;            /* set to zero if the Mac addresses
 520                                           are equal or the second one
 521                                           is zero */
 522        SK_U16                  Align01;
 523
 524} SK_RLMT;
 525
 526
 527extern  SK_MAC_ADDR     BridgeMcAddr;
 528extern  SK_MAC_ADDR     SkRlmtMcAddr;
 529
 530/* function prototypes ********************************************************/
 531
 532
 533#ifndef SK_KR_PROTO
 534
 535/* Functions provided by SkRlmt */
 536
 537/* ANSI/C++ compliant function prototypes */
 538
 539extern  void    SkRlmtInit(
 540        SK_AC   *pAC,
 541        SK_IOC  IoC,
 542        int             Level);
 543
 544extern  int     SkRlmtEvent(
 545        SK_AC           *pAC,
 546        SK_IOC          IoC,
 547        SK_U32          Event,
 548        SK_EVPARA       Para);
 549
 550#else   /* defined(SK_KR_PROTO) */
 551
 552/* Non-ANSI/C++ compliant function prototypes */
 553
 554#error KR-style function prototypes are not yet provided.
 555
 556#endif  /* defined(SK_KR_PROTO)) */
 557
 558
 559#ifdef __cplusplus
 560}
 561#endif  /* __cplusplus */
 562
 563#endif  /* __INC_SKRLMT_H */
 564