/*************************************************************************** * openboxS28.h * * 2018/08/19 17:51:50 星期日 * Copyright 2018 XuDongLai * ****************************************************************************/ /* * openboxS28.h * * Copyright (C) 2018 - XuDongLai * * 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; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef __OPENBOXS28_H__ #define __OPENBOXS28_H__ #define OBX_PCIE 1 /*使用PCIe接口*/ //硬件版本号 #define FAST_HW_REG_VERSION 0x38 /**< 硬件版本寄存器地址*/ //动作寄存器 #define FAST_ACTION_REG_ADDR 0x20000 /**< 写动作寄存器*/ #define FAST_DEFAULT_RULE_ADDR 0x1F8 /**< 默认动作(匹配不到规则时执行默认动作)地址*/ //规则寄存器 #define FAST_RULE_REG_WADDR 0x200 /**< 规则写寄存器*/ #define FAST_RULE_REG_RADDR 0x208 /**< 规则读寄存器*/ #define FAST_RULE_REG_VADDR 0x210 /**< 读规则返回值寄存器*/ //端口寄存器 /** * 端口计数寄存器的访问由3部分组成:\n * 基地址|端口偏移地址*端口序号|计数寄存器地址\n * @par 示例说明 * REG=FAST_PORT_BASE|FAST_PORT_OFT*port_idx|XX_REG; * * XX_REG可以是计数寄存器、状态寄存器和端口的其他配置寄存器的地址 */ #define FAST_PORT_BASE 0x40000 /**< 此为端口寄存器起始地址*/ #define FAST_PORT_OFT 0x200 /**< 此为端口寄存器起始地址*/ #define BASE_ADDR 0x90980000 /**< 硬件资源起始地址*/ #define REG_LEN 0x80000 /**< 硬件资源可用空间*/ #define FAST_RULE_CNT 64 /**< 硬件流表条数*/ //AMS测量模块虚拟地址空间地址定义 #undef FAST_AMS_TX_TIME_H #undef FAST_AMS_TX_TIME_L #undef FAST_AMS_TX_STATUS #undef FAST_AMS_TX_START #define FAST_AMS_TX_TIME_H 0x20800 /**< 测量发送成功时,从此寄存器读出发送时刻时间高32位*/ #define FAST_AMS_TX_TIME_L 0x20808 /**< 测量发送成功时,从此寄存器读出发送时刻时间低32位*/ #define FAST_AMS_TX_STATUS 0x20840 /**< 本次测量发送是否成功(是否根据用户指定间隔发送完成所有报文)*/ #define FAST_AMS_TX_START 0x20860 /**< 开始启动测量发送报文,主要为了支持硬件背靠背发送报文*/ //PORT COUNTS #define FAST_COUNTS_SEND_PKT_L 0x1A /**< 计数寄存器:发送成功的计数*/ #define FAST_COUNTS_RECV_PKT_L 0x1B /**< 计数寄存器:接收成功的计数*/ #define FAST_COUNTS_CRC_ERR 0x1C /**< 计数寄存器:CRC错误的计算*/ #define FAST_COUNTS_ALIGNER 0x1D /**< 计数寄存器:帧对齐错误*/ #define FAST_COUNTS_SEND_BYTE_L 0x1E /**< 计数寄存器:成功发送字节数低位计数*/ #define FAST_COUNTS_SEND_BYTE_H 0x0F /**< 计数寄存器:成功发送字节数高位计数*/ #define FAST_COUNTS_RECV_BYTE_L 0x1F /**< 计数寄存器:成功接收字节数低位计数*/ #define FAST_COUNTS_RECV_BYTE_H 0x3D /**< 计数寄存器:成功接收字节数高位计数*/ #define FAST_COUNTS_RCVFERR 0x22 /**< 计数寄存器:接收的错误帧数*/ #define FAST_COUNTS_SNDFERR 0x23 /**< 计数寄存器:发送的错误帧数*/ #define FAST_COUNTS_RCVSPKT 0x24 /**< 计数寄存器:接收到的单播报文数*/ #define FAST_COUNTS_RCVMPKT 0x25 /**< 计数寄存器:接收到的多播报文数*/ #define FAST_COUNTS_RCVBPKT 0x26 /**< 计数寄存器:接收到的广播报文数*/ #define FAST_COUNTS_SNDSPKT 0x28 /**< 计数寄存器:发送的单播报文数*/ #define FAST_COUNTS_SNDMPKT 0x29 /**< 计数寄存器:发送的多播报文数*/ #define FAST_COUNTS_SNDBPKT 0x2A /**< 计数寄存器:发送的广播报文数*/ //PORT and STATUS #define FAST_PORT_MAC_CORE_CONFIG 0x2 /**< 配置寄存器:MAC核配置地址*/ #define FAST_PORT_MAC_0 0x3 /**< 配置寄存器:MAC0地址寄存器*/ #define FAST_PORT_MAC_1 0x4 /**< 配置寄存器:MAC1地址寄存器*/ #define FAST_PORT_FRAME_MAX_LEN 0x5 /**< 配置寄存器:支持最大帧长度*/ #define FAST_PORT_BUF_LEVEL 0xE /**< 配置寄存器:BUF LEVEL*/ #define FAST_PORT_FRAME_SPACE 0x17 /**< 配置寄存器:帧间隔*/ #define FAST_PORT_PCS_MODE 0x94 /**< 状态寄存器:PCS模式*/ #define FAST_PORT_PCS_STATUS 0x81 /**< 状态寄存器:PCS状态*/ #define FAST_PORT_PCS_STATUS_LINK_OK (0x1<<2)/**< 状态寄存器:LINK OK状态*/ #define FAST_PORT_PCS_STATUS_AUTONEG_EN (0x1<<3)/**< 状态寄存器:自协商使能状态*/ #define FAST_PORT_PCS_STATUS_AUTONEG_OK (0x1<<5)/**< 状态寄存器:自协商成功状态*/ #define FAST_PORT_NEG_STATUS (0x85) /**< 状态寄存器:自协商状态*/ #define FAST_PORT_NEG_STATUS_10M (0x0<<10)/**< 状态寄存器:链路协商为10M*/ #define FAST_PORT_NEG_STATUS_100M (0x1<<10)/**< 状态寄存器:链路协商为100M*/ #define FAST_PORT_NEG_STATUS_1G (0x2<<10)/**< 状态寄存器:链路协商为1000M*/ #define FAST_PORT_NEG_STATUS_HALF (0x0<<12)/**< 状态寄存器:链路为半双工状态*/ #define FAST_PORT_NEG_STATUS_FULL (0x1<<12)/**< 状态寄存器:链路为全双工状态*/ #define FAST_PORT_NEG_STATUS_UP (0x1<<15)/**< 状态寄存器:端口UP状态*/ #define FAST_PORT_NEG_STATUS_DOWN (0x0<<15)/**< 状态寄存器:端口DOWN状态*/ //AMS测量模块虚拟地址空间地址定义 #define FAST_AMS_TX_TIME_H 0x20800 /**< 测量发送成功时,从此寄存器读出发送时刻时间高32位*/ #define FAST_AMS_TX_TIME_L 0x20808 /**< 测量发送成功时,从此寄存器读出发送时刻时间低32位*/ #define FAST_AMS_TX_STATUS 0x20840 /**< 本次测量发送是否成功(是否根据用户指定间隔发送完成所有报文)*/ #define FAST_AMS_TX_START 0x20860 /**< 开始启动测量发送报文,主要为了支持硬件背靠背发送报文*/ #endif//__OPENBOXS28_H__