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

📄 swvlantb.h

📁 vt6528芯片交换机API函数和文档运行程序
💻 H
字号:
/*
 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
 * All rights reserved.
 *
 * This software is copyrighted by and is the sole property of
 * VIA Networking Technologies, Inc. This software may only be used
 * in accordance with the corresponding license agreement. Any unauthorized
 * use, duplication, transmission, distribution, or disclosure of this
 * software is expressly forbidden.
 *
 * This software is provided by VIA Networking Technologies, Inc. "as is"
 * and any express or implied warranties, including, but not limited to, the
 * implied warranties of merchantability and fitness for a particular purpose
 * are disclaimed. In no event shall VIA Networking Technologies, Inc.
 * be liable for any direct, indirect, incidental, special, exemplary, or
 * consequential damages.
 *
 *
 * File:    swvlantb.h
 *
 * Purpose: VLAN hardware accessing functions
 *
 * Author:  Tevin Chen
 *          Henry Lin
 *
 * Date:    Jan 08, 2002
 *          May 16, 2005
 *
 */


#ifndef __SWVLANTB_H__
#define __SWVLANTB_H__

#if !defined(__TTYPE_H__)
#include "ttype.h"
#endif
#if !defined(__SWSRAM_H__)
#include "swsram.h"
#endif




/*---------------------  Export Definitions  ------------------------*/
//
// Bit position for VLAN table fields
//

#define VLAN_BIT_EGRS_MEMBER_S      0
#define VLAN_BIT_EGRS_MEMBER_E      26
#define VLAN_BIT_JUMBO_PASS_S       29
#define VLAN_BIT_JUMBO_PASS_E       29
#define VLAN_BIT_PRI_ADJ_S          30
#define VLAN_BIT_PRI_ADJ_E          30
#define VLAN_BIT_TOS_MAP_1P_S       31
#define VLAN_BIT_TOS_MAP_1P_E       31
#define VLAN_BIT_INGRS_MEMBER_S     32
#define VLAN_BIT_INGRS_MEMBER_E     57
#define VLAN_BIT_CPU_FWD_S          60
#define VLAN_BIT_CPU_FWD_E          63
#define VLAN_BIT_FLD_UCST_CPU_S     60
#define VLAN_BIT_FLD_UCST_CPU_E     60
#define VLAN_BIT_FLD_L2P_MCST_CPU_S 61
#define VLAN_BIT_FLD_L2P_MCST_CPU_E 61
#define VLAN_BIT_FLD_IP_MCST_CPU_S  62
#define VLAN_BIT_FLD_IP_MCST_CPU_E  62
#define VLAN_BIT_FLD_BCST_CPU_S     63
#define VLAN_BIT_FLD_BCST_CPU_E     63

#define VLAN_BIT_TAG_S              64
#define VLAN_BIT_TAG_E              89
#define VLAN_BIT_PER_VLAN_PRI_S     92
#define VLAN_BIT_PER_VLAN_PRI_E     94
#define VLAN_BIT_PER_VLAN_VALID_S   95
#define VLAN_BIT_PER_VLAN_VALID_E   95
#define VLAN_BIT_FID_S              96 
#define VLAN_BIT_FID_E              108
#define VLAN_BIT_VERBATIM_MODE_S    109
#define VLAN_BIT_VERBATIM_MODE_E    109
#define VLAN_BIT_LOCAL_TAG_S        110
#define VLAN_BIT_LOCAL_TAG_E        110
#define VLAN_BIT_MSTID_S            120
#define VLAN_BIT_MSTID_E            125
#define VLAN_BIT_MSTID_VALID_S      126
#define VLAN_BIT_MSTID_VALID_E      126
#define VLAN_BIT_VALID_S            127
#define VLAN_BIT_VALID_E            127

//
// Bit pattern for VLAN table fields
//
#define VLAN_BPTN_VALID_VLAN        0x80    // [127], Valid


// Definiton of vlan mode
enum {
    VLAN_MODE_DISABLE,
    VLAN_MODE_PORTBASE,
    VLAN_MODE_8021Q,
    VLAN_MODE_PROTOBASE
};

// Definition of vlan ingress filter config code
enum {
    VLAN_INGRS_FILTER_DISABLE,
    VLAN_INGRS_FILTER_NOTMBR,
    VLAN_INGRS_FILTER_UNTAG,
    VLAN_INGRS_FILTER_NOTMBR_UNTAG
};

#define PORTBASE_VLAN_GRP_VID_BASE      1

/*---------------------  Export Types  ------------------------------*/
// VLAN table entry structure
struct tagSVlanEntry {
    UINT16  u16Vid;                     // VID of the entry, is Address Offset from begining of the table
    UINT16  u16Fid;                     // FID of the entry
    UINT32  u32TagPortMsk;              // Egress tag rule mask
    UINT32  u32EgrsMbrPortMsk;          // Egress membership mask
    UINT32  u32IngrsMbrPortMsk;         // Ingress membership mask
    BOOL    bJumboPass;                 // Jumbo packet pass Enable
    BOOL    bPriAdj;                    // Priority Adjustment Enable
    BOOL    bTosTo8021p;                // ToS/DSCP-to-802.1p mapping enable
    UINT8   u8CpuFwd;                   // bit[0], forward flooded unicast packets to CPU port
                                        // bit[1], forward flooded L2 multicast packets to CPU port
                                        // bit[2], forward flooded IP multicast packets to CPU port
                                        // bit[3], forward broadcast packets to CPU port
    UINT8   u8PerVlanPri;               // Per-VLAN priority
    BOOL    bPerVlanPriVld;             // Per-VLAN priority valid
    BOOL    bVerbMode;                  // Force VLAN verbatim mode
    BOOL    bLocTagRule;                // Local tag rule enable
    UINT8   u8MstId;                    // Multiple Spanning Tree ID (MSTID)
    BOOL    bMstIdVld;                  // Multiple Spanning Tree ID (MSTID) Valid
    BOOL    bIsValid;                   // is this vlan entry valid? used only by vlan table cache
};

typedef struct tagSVlanEntry    SVlanEntry;

// Definitions related to PortBase VLAN setting

#define PORTBASE_VLAN_UNSET_GRP_VID 128
#define PORTBASE_VLAN_FID           128
#define BIT_MASK_PORT_CPU           0x04000000

#define VID_NUM_8021Q               4096
#define INTER_VLAN_MAX_NUM          (128)
#define INTER_VLAN_TBL_SIZE         (INTER_VLAN_MAX_NUM << SHIFT_NUM_SIZE_16Byte)
#define VLAN_ENTRY_SIZE             SRAM_ENTRY_SIZE_16Byte


/*---------------------  Export Macros  -----------------------------*/
#define PORTBASE_ID_TO_VID(u8PortId)    ( (UINT16)(PORTBASE_VLAN_GRP_VID_BASE + u8PortId) )
#define PORTBASE_ID_TO_ADDR(u8PortId)   ( SWVLANTB_dwVidToSramAddr( PORTBASE_ID_TO_VID(u8PortId) ) )


/*---------------------  Export Classes  ----------------------------*/

/*---------------------  Export Variables  --------------------------*/

/*---------------------  Export Functions  --------------------------*/
UINT8 SWVLANTB_u8GetVlanMode(void);
void SWVLANTB_vSetVlanMode(UINT8 u8VlanMode);

BOOL SWVLANTB_bGetEntry(UINT16 u16Indx, SVlanEntry* pSEntry);
BOOL SWVLANTB_bSetEntry(SVlanEntry* pSEntry);
BOOL SWVLANTB_bDelEntry(UINT16 u16Indx);

BOOL SWVLANTB_bIsEntryInvalid(UINT16 u16Indx);

void SWVLANTB_vSetIngrsFilter(UINT8 u8PortId, UINT8 u8Cfg);
void SWVLANTB_vSetClassMethod(UINT16 u16Method);
void SWVLANTB_vSetVerbatimMode(UINT8 u8PortId, BOOL bEn);

void SWVLANTB_vPortBaseClearAllGrp(void);
void SWVLANTB_vPortBaseAddGrp(UINT32 u32MbrMsk);
void SWVLANTB_vPortBaseSetCfgForAllGrp(void);

void SWVLANTB_vPvidGet(UINT8 u8PortId, PUINT16 pu16Pvid);
void SWVLANTB_vPvidSet(UINT8 u8PortId, UINT16 u16Pvid);

BOOL SWVLANTB_bIsIntEntryValid(UINT16 u16Vid);
UINT32 SWVLANTB_dwVidToSramAddr(UINT16 u16Vid);
UINT16 SWVLANTB_wSramAddrToVid(UINT32 u32SramAddr);


//For forward compatible purpose
void SWVLANTB_vPvidSetPage(UINT8 u8PvidPageNo);
BOOL SWVLANTB_bIsPvidOutOfPage(UINT16 u16Pvid);


#endif /* __SWVLANTB_H__ */


⌨️ 快捷键说明

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