Skip to main content
Homepage
Explore
Search or go to…
/
Sign in
Explore
Primary navigation
Project
L
libethernet
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Collapse sidebar
Snippets
Groups
Projects
Show more breadcrumbs
HAL
libethernet
Commits
8e7c70cb
Commit
8e7c70cb
authored
Oct 2, 2023
by
Arun Muthusamy
Browse files
Options
Downloads
Patches
Plain Diff
RMON stats and Eth stats implementation for HSGMII LAN driver
parent
4a363a69
No related branches found
No related tags found
1 merge request
!10
RMON stats and Eth stats implementation for HSGMII LAN driver
Pipeline
#117305
passed
Oct 5, 2023
Status:
Stage: static_code_analysis
Status:
Stage: compile_test
Changes
3
Pipelines
2
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
econet/ecnt_prvt.c
+131
-0
131 additions, 0 deletions
econet/ecnt_prvt.c
econet/econet.c
+10
-0
10 additions, 0 deletions
econet/econet.c
econet/fe_type.h
+880
-0
880 additions, 0 deletions
econet/fe_type.h
with
1021 additions
and
0 deletions
econet/ecnt_prvt.c
+
131
−
0
View file @
8e7c70cb
...
...
@@ -33,10 +33,14 @@
#include
<sys/types.h>
#include
<unistd.h>
#include
<easy/easy.h>
#include
<sys/ioctl.h>
#include
<net/if.h>
#include
<linux/sockios.h>
#include
"../ethernet.h"
#include
"ecnt_prvt.h"
#include
"fe_type.h"
#ifdef STATIC_ANALYSIS
#include
"stub_libapi_lib_switchmgr.h"
...
...
@@ -51,12 +55,139 @@
#define IFNAME_ETH0 "eth0."
#define IFNAME_NAS "nas"
#define IFNAME_AE_WAN "ae_wan"
#define DRIVER_NAME "hsgmii_lan"
#define DRIVER_NAME_LEN 20
#define HSGMII_INDEX 2
/* Not defined in Econet library */
ECNT_SWITCHMGR_RET
switchmgr_lib_get_port_link_state
(
u8
port
,
ECNT_SWITCHMGR_LINK_STATE
*
p_link_state
,
ECNT_SWITCHMGR_LINK_SPEED
*
p_speed
);
static
int
get_drv_info_by_ifname
(
char
*
ifname
,
char
*
buffer
)
{
int
fd
;
int
ret
=
-
1
;
struct
ifreq
ifr
;
struct
ethtool_drvinfo
info
;
if
(
ifname
==
NULL
||
buffer
==
NULL
)
return
ret
;
fd
=
socket
(
AF_INET
,
SOCK_DGRAM
,
0
);
if
(
fd
<
0
)
return
ret
;
memset
(
&
info
,
0
,
sizeof
(
info
));
info
.
cmd
=
ETHTOOL_GDRVINFO
;
memset
(
&
ifr
,
0
,
sizeof
(
ifr
));
strncpy
(
ifr
.
ifr_name
,
ifname
,
sizeof
(
ifr
.
ifr_name
)
-
1
);
ifr
.
ifr_data
=
(
void
*
)
&
info
;
if
(
ioctl
(
fd
,
SIOCETHTOOL
,
&
ifr
)
!=
0
)
goto
exit
;
strcpy
(
buffer
,
info
.
driver
);
ret
=
0
;
exit:
close
(
fd
);
return
ret
;
}
static
int
get_port_statistics
(
int
function_id
,
struct
ecnt_fe_data
*
para
)
{
int
fd
,
ret
=
-
1
;
para
->
function_id
=
function_id
;
para
->
index
=
HSGMII_INDEX
;
fd
=
open
(
"/dev/fe"
,
O_RDWR
);
if
(
fd
<
0
)
{
return
-
1
;
}
ret
=
ioctl
(
fd
,
0
,
para
);
close
(
fd
);
if
(
ret
>=
0
)
return
0
;
return
-
1
;
}
int
hsgmii_lan_prvt_get_port_statistics
(
char
*
ifname
,
struct
eth_stats
*
stats
,
struct
eth_rmon_stats
*
rstats
)
{
char
driver_name
[
DRIVER_NAME_LEN
];
struct
ecnt_fe_data
para
;
memset
(
&
para
,
0
,
sizeof
(
struct
ecnt_fe_data
));
if
(
get_drv_info_by_ifname
(
ifname
,
driver_name
))
return
-
1
;
if
(
!
strncmp
(
driver_name
,
DRIVER_NAME
,
DRIVER_NAME_LEN
))
{
if
(
!
get_port_statistics
(
FE_GET_HSGMII_LAN_TX_CNT
,
&
para
))
{
if
(
stats
!=
NULL
)
{
stats
->
tx_bytes
=
0
;
stats
->
tx_packets
=
para
.
api_data
.
FE_TxCnt
.
txFrameCnt
;
stats
->
tx_errors
=
0
;
stats
->
tx_ucast_packets
=
0
;
stats
->
tx_mcast_packets
=
para
.
api_data
.
FE_TxCnt
.
txBroadcastCnt
;
stats
->
tx_bcast_packets
=
para
.
api_data
.
FE_TxCnt
.
txMulticastCnt
;
stats
->
tx_discard_packets
=
para
.
api_data
.
FE_RxCnt
.
rxDropCnt
;
stats
->
rx_unknown_packets
=
0
;
}
if
(
rstats
!=
NULL
)
{
rstats
->
tx
.
packets
=
para
.
api_data
.
FE_TxCnt
.
txFrameCnt
;
rstats
->
tx
.
bytes
=
0
;
rstats
->
tx
.
bcast_packets
=
para
.
api_data
.
FE_TxCnt
.
txMulticastCnt
;
rstats
->
tx
.
mcast_packets
=
para
.
api_data
.
FE_TxCnt
.
txMulticastCnt
;
rstats
->
tx
.
crc_err_packets
=
0
;
rstats
->
tx
.
under_sz_packets
=
0
;
rstats
->
tx
.
over_sz_packets
=
0
;
rstats
->
tx
.
packets_64bytes
=
para
.
api_data
.
FE_TxCnt
.
txEq64Cnt
;
rstats
->
tx
.
packets_65to127bytes
=
para
.
api_data
.
FE_TxCnt
.
txFrom65To127Cnt
;
rstats
->
tx
.
packets_256to511bytes
=
para
.
api_data
.
FE_TxCnt
.
txFrom256To511Cnt
;
rstats
->
tx
.
packets_512to1023bytes
=
para
.
api_data
.
FE_TxCnt
.
txFrom512To1023Cnt
;
rstats
->
tx
.
packets_1024to1518bytes
=
para
.
api_data
.
FE_TxCnt
.
txFrom1024To1518Cnt
;
}
}
if
(
!
get_port_statistics
(
FE_GET_HSGMII_LAN_RX_CNT
,
&
para
))
{
if
(
rstats
!=
NULL
)
{
rstats
->
rx
.
packets
=
para
.
api_data
.
FE_RxCnt
.
rxFrameCnt
;
rstats
->
rx
.
bytes
=
0
;
rstats
->
rx
.
bcast_packets
=
para
.
api_data
.
FE_RxCnt
.
rxMulticastCnt
;
rstats
->
rx
.
mcast_packets
=
para
.
api_data
.
FE_RxCnt
.
rxMulticastCnt
;
rstats
->
rx
.
crc_err_packets
=
para
.
api_data
.
FE_RxCnt
.
rxCrcCnt
;
rstats
->
rx
.
under_sz_packets
=
para
.
api_data
.
FE_RxCnt
.
rxUnderSizeCnt
;
rstats
->
rx
.
over_sz_packets
=
para
.
api_data
.
FE_RxCnt
.
rxOversizeCnt
;
rstats
->
rx
.
packets_64bytes
=
para
.
api_data
.
FE_RxCnt
.
rxEq64Cnt
;
rstats
->
rx
.
packets_65to127bytes
=
para
.
api_data
.
FE_RxCnt
.
rxFrom65To127Cnt
;
rstats
->
rx
.
packets_256to511bytes
=
para
.
api_data
.
FE_RxCnt
.
rxFrom256To511Cnt
;
rstats
->
rx
.
packets_512to1023bytes
=
para
.
api_data
.
FE_RxCnt
.
rxFrom512To1023Cnt
;
rstats
->
rx
.
packets_1024to1518bytes
=
para
.
api_data
.
FE_RxCnt
.
rxFrom1024To1518Cnt
;
}
if
(
stats
!=
NULL
)
{
stats
->
rx_bytes
=
0
;
stats
->
rx_packets
=
para
.
api_data
.
FE_RxCnt
.
rxFrameCnt
;
stats
->
rx_errors
=
0
;
stats
->
rx_ucast_packets
=
0
;
stats
->
rx_mcast_packets
=
para
.
api_data
.
FE_RxCnt
.
rxMulticastCnt
;
stats
->
rx_bcast_packets
=
para
.
api_data
.
FE_RxCnt
.
rxBroadcastCnt
;
stats
->
rx_discard_packets
=
para
.
api_data
.
FE_TxCnt
.
txDropCnt
;
stats
->
rx_unknown_packets
=
0
;
}
}
return
0
;
}
return
-
1
;
}
int
ecnt_prvt_get_port_statistics
(
uint32_t
port
,
struct
eth_stats
*
stats
,
struct
eth_rmon_stats
*
rstats
)
...
...
...
...
This diff is collapsed.
Click to expand it.
econet/econet.c
+
10
−
0
View file @
8e7c70cb
...
...
@@ -64,6 +64,10 @@ int econet_eth_get_stats(const char *ifname, struct eth_stats *stats)
port_num
=
ecnt_prvt_get_port_num
(
ifname
);
if
(
port_num
==
ECNT_PRVT_PORT_NUM_INVALID
)
{
/* Check and fetch stats if the Interface belongs to hsgmii_lan driver */
if
(
!
hsgmii_lan_prvt_get_port_statistics
(
ifname
,
stats
,
NULL
))
{
return
0
;
}
libethernet_err
(
"invalid port name: %s
\n
"
,
ifname
);
return
-
1
;
}
...
...
@@ -82,6 +86,12 @@ int econet_eth_get_rmon_stats(const char *ifname, struct eth_rmon_stats *rstats)
port_num
=
ecnt_prvt_get_port_num
(
ifname
);
if
(
port_num
==
ECNT_PRVT_PORT_NUM_INVALID
)
{
/* Check and fetch rstats if the Interface belongs to hsgmii_lan driver */
if
(
!
hsgmii_lan_prvt_get_port_statistics
(
ifname
,
NULL
,
rstats
))
{
return
0
;
}
libethernet_err
(
"invalid port name: %s
\n
"
,
ifname
);
return
-
1
;
}
...
...
...
...
This diff is collapsed.
Click to expand it.
econet/fe_type.h
0 → 100755
+
880
−
0
View file @
8e7c70cb
/***************************************************************
Copyright Statement:
This software/firmware and related documentation (EcoNet Software)
are protected under relevant copyright laws. The information contained herein
is confidential and proprietary to EcoNet (HK) Limited (EcoNet) and/or
its licensors. Without the prior written permission of EcoNet and/or its licensors,
any reproduction, modification, use or disclosure of EcoNet Software, and
information contained herein, in whole or in part, shall be strictly prohibited.
EcoNet (HK) Limited EcoNet. ALL RIGHTS RESERVED.
BY OPENING OR USING THIS FILE, RECEIVER HEREBY UNEQUIVOCALLY
ACKNOWLEDGES AND AGREES THAT THE SOFTWARE/FIRMWARE AND ITS
DOCUMENTATIONS (ECONET SOFTWARE) RECEIVED FROM ECONET
AND/OR ITS REPRESENTATIVES ARE PROVIDED TO RECEIVER ON AN AS IS
BASIS ONLY. ECONET EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
WHETHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
OR NON-INFRINGEMENT. NOR DOES ECONET PROVIDE ANY WARRANTY
WHATSOEVER WITH RESPECT TO THE SOFTWARE OF ANY THIRD PARTIES WHICH
MAY BE USED BY, INCORPORATED IN, OR SUPPLIED WITH THE ECONET SOFTWARE.
RECEIVER AGREES TO LOOK ONLY TO SUCH THIRD PARTIES FOR ANY AND ALL
WARRANTY CLAIMS RELATING THERETO. RECEIVER EXPRESSLY ACKNOWLEDGES
THAT IT IS RECEIVERS SOLE RESPONSIBILITY TO OBTAIN FROM ANY THIRD
PARTY ALL PROPER LICENSES CONTAINED IN ECONET SOFTWARE.
ECONET SHALL NOT BE RESPONSIBLE FOR ANY ECONET SOFTWARE RELEASES
MADE TO RECEIVERS SPECIFICATION OR CONFORMING TO A PARTICULAR
STANDARD OR OPEN FORUM. RECEIVER'S SOLE AND EXCLUSIVE REMEDY AND
ECONET'S ENTIRE AND CUMULATIVE LIABILITY WITH RESPECT TO THE ECONET
SOFTWARE RELEASED HEREUNDER SHALL BE, AT ECONET'S SOLE OPTION, TO
REVISE OR REPLACE THE ECONET SOFTWARE AT ISSUE OR REFUND ANY SOFTWARE
LICENSE FEES OR SERVICE CHARGES PAID BY RECEIVER TO ECONET FOR SUCH
ECONET SOFTWARE.
***************************************************************/
#ifndef _ECNT_HOOK_FE_TYPE_H_
#define _ECNT_HOOK_FE_TYPE_H_
/************************************************************************
* I N C L U D E S
*************************************************************************
*/
#ifdef __KERNEL__
#include
<linux/types.h>
#include
<linux/in6.h>
#else
#include
<netinet/in.h>
#endif
/************************************************************************
* D E F I N E S & C O N S T A N T S
*************************************************************************
*/
/************************************************************************
* M A C R O S
*************************************************************************
*/
#define FE_WAN_RX_UC_RATE 0
#define FE_WAN_RX_BC_RATE 1
#define FE_WAN_RX_MC_RATE 2
#define FE_WAN_RX_OC_RATE 3
#define FE_WAN_TX_RATE_LIMIT 4
#define FE_WAN_RX_MAC_FILTER_RATE_LIMIT 5
#define FE_RX_RATE_LIMIT 6
#define CDM_TX_ENCODING_SHIFT (0)
#define CDM_TX_ENCODING_MASK (0xF<<CDM_TX_ENCODING_SHIFT)
#define CDM_RX_DECODING_SHIFT (4)
#define CDM_RX_DECODING_MASK (0xF<<CDM_RX_DECODING_SHIFT)
#define GDM_TX_ENCODING_SHIFT (8)
#define GDM_TX_ENCODING_MASK (0xF<<GDM_TX_ENCODING_SHIFT)
#define GDM_RX_DECODING_SHIFT (12)
#define GDM_RX_DECODING_MASK (0xF<<GDM_RX_DECODING_SHIFT)
#define MTR_MASK (0x3F)
#define MTR_MASK_LEN (6)
#define ACNT0_OFFSET MTR_MASK_LEN
#define ACNT0_MASK (0x3F<<ACNT0_OFFSET)
#define ACNT0_MASK_LEN (6)
#define ACNT1_OFFSET (MTR_MASK_LEN + ACNT0_MASK_LEN)
#define ACNT1_MASK (0x1F<<ACNT1_OFFSET)
#define ACNT1_MASK_LEN (5)
#define ACNT2_OFFSET (MTR_MASK_LEN + ACNT0_MASK_LEN + ACNT1_MASK_LEN)
#define ACNT2_MASK (0x7F<<ACNT2_OFFSET)
#define ACNT2_MASK_LEN (7)
#define ETHER_WAN_OFFSET (MTR_MASK_LEN + ACNT0_MASK_LEN + ACNT1_MASK_LEN + ACNT2_MASK_LEN)
#define ETHER_WAN_MASK (1<<ETHER_WAN_OFFSET)
#define DFT_ITF_OFFSET (MTR_MASK_LEN + ACNT0_MASK_LEN + ACNT1_MASK_LEN + ACNT2_MASK_LEN)
#define DFT_ITF_MASK (0x1<<DFT_ITF_OFFSET)
#define DFT_ITF_MASK_LEN (1)
#define FE_AC_MTR_GROUP_MAX (63)
#define ACNT_GRP_WAN_NUM (8)
#define UP_DOWN_WAN_ITF_NUM (ACNT_GRP_WAN_NUM*2)
#define UP_DOWN_QUEUE_NUM (16)
#define WAN_ITF_AND_DEV_NUM (23)
#define UP_DOWN_WAN_ITF_AND_DEV_NUM (WAN_ITF_AND_DEV_NUM*2)
#define WAN_ITF_ONLY_BASE (UP_DOWN_WAN_ITF_AND_DEV_NUM)
#define WAN_ITF_ONLY_NUM (3)
#define UP_DOWN_WAN_ITF_ONLY_NUM (WAN_ITF_ONLY_NUM*2)
#define MULTICAST_DOWNSTREAM_BASE (WAN_ITF_ONLY_BASE + UP_DOWN_WAN_ITF_ONLY_NUM)
#define MULTICAST_DOWNSTREAM_NUM (11)
#define WAN_ITF_HAS_FLOW_ACNT_NUM (8)
/*one itf need one*/
#define FE_TRFC_SVID (1 << 0)
#define FE_TRFC_SPBIT (1 << 1)
#define FE_TRFC_CVID (1 << 2)
#define FE_TRFC_CPBIT (1 << 3)
#define FE_TRFC_TOS (1 << 4)
#define FE_TRFC_TC (1 << 5)
#define FE_TRFC_ETYPE (1 << 6)
#define FE_TRFC_DPORT (1 << 7)
#define FE_TRFC_SPORT (1 << 8)
#define FE_TRFC_DIPV6 (1 << 9)
#define FE_TRFC_SIPV6 (1 << 10)
#define FE_TRFC_DIPV4 (1 << 11)
#define FE_TRFC_SIPV4 (1 << 12)
#define FE_TRFC_DMAC (1 << 13)
#define FE_TRFC_SMAC (1 << 14)
#define FE_TRFC_CVLAN (FE_TRFC_CPBIT|FE_TRFC_CVID)
#define FE_TRFC_SVLAN (FE_TRFC_SPBIT|FE_TRFC_SVID)
#define FE_TRFC_VLAN (FE_TRFC_CVLAN|FE_TRFC_SVLAN)
#define FE_MC_VLAN_TABLE_MAX (64)
#define FE_MC_VLAN_PORT_MAX (16)
/************************************************************************
* D A T A T Y P E S
*************************************************************************
*/
typedef
unsigned
char
unchar
;
typedef
enum
{
ECNT_FE_API
,
}
FE_Api_SubType_t
;
typedef
enum
{
FE_GDM_SEL_GDMA1
=
0
,
FE_GDM_SEL_GDMA2
,
FE_GDM_SEL_GDMA3
,
FE_GDM_SEL_GDMA4
}
FE_Gdma_Sel_t
;
typedef
enum
{
FE_OFF
=
0
,
FE_ON
=
1
}
FE_Status_Sel_t
;
typedef
enum
{
FE_MAC_SET_LAN
=
0
,
FE_MAC_SET_WAN
}
FE_MacSet_Sel_t
;
typedef
enum
{
FE_MAC_GPON
=
0
,
FE_MAC_EPON
}
FE_PonMode_Sel_t
;
typedef
enum
{
#if defined(TCSUPPORT_CPU_EN7580)
FE_WANPORT_PSE_P2
=
2
,
FE_WANPORT_GSW_P0
=
0x10
,
FE_WANPORT_GSW_P1
,
FE_WANPORT_GSW_P2
,
FE_WANPORT_GSW_P3
,
FE_WANPORT_GSW_P4
,
FE_WANPORT_GSW_P5
#else
FE_WANPORT_PSE_P2
=
2
,
FE_WANPORT_GSW_P0
=
8
,
FE_WANPORT_GSW_P1
,
FE_WANPORT_GSW_P2
,
FE_WANPORT_GSW_P3
,
FE_WANPORT_GSW_P4
,
FE_WANPORT_GSW_P5
#endif
}
FE_WanPort_Sel_t
;
typedef
enum
{
FE_CDM_SEL_CDMA1
=
0
,
FE_CDM_SEL_CDMA2
}
FE_Cdma_Sel_t
;
typedef
enum
{
FE_RED_DROP_Q0
=
0
,
FE_RED_DROP_Q1L
,
FE_RED_DROP_Q1H
}
FE_RedDropQ_Sel_t
;
typedef
enum
{
FE_RATE_OR_FULL_DROP
=
0
,
FE_RATE_OR_THRL_DROP
,
FE_RATE_AND_FULL_DROP
,
FE_RATE_AND_THRL_DROP
}
FE_RedDropMode_Sel_t
;
typedef
enum
{
FE_GDM_SEL_TX
=
0
,
FE_GDM_SEL_RX
}
FE_TXRX_Sel_t
;
typedef
enum
{
FE_DISABLE
=
0
,
FE_ENABLE
}
FE_Enable_t
;
typedef
enum
{
FE_NOT_PPPOE
=
0
,
FE_IS_PPPOE
}
FE_PPPOE_t
;
typedef
enum
{
ETH_TYPE
=
0
,
PPPOE_TYPE
,
IP_TYPE
,
TCP_TYPE
,
UDP_TYPE
,
}
FE_Patn_type
;
typedef
enum
{
FE_KEY0
=
0
,
FE_KEY1
}
FE_L2U_KEY_t
;
typedef
enum
{
FE_LINKUP
=
0
,
FE_LINKDOWN
}
FE_Linkup_t
;
typedef
enum
{
FE_PCP_MODE_DISABLE
=
0
,
FE_PCP_MODE_8B0D
=
1
,
FE_PCP_MODE_7B1D
=
2
,
FE_PCP_MODE_6B2D
=
4
,
FE_PCP_MODE_5B3D
=
8
}
FE_PcpMode_t
;
typedef
enum
{
FE_DP_QDMA1_CPU
=
0
,
FE_DP_GDM1
,
FE_DP_GDM2
,
FE_DP_QDMA1_HWF
,
FE_DP_GDMA3_HWF
=
3
,
FE_DP_PPE
,
FE_DP_QDMA2_CPU
,
FE_DP_QDMA2_HWF
,
FE_DP_DISCARD
}
FE_Frame_dp_t
;
typedef
enum
{
FE_TYPE_OC
=
0
,
FE_TYPE_MC
,
FE_TYPE_BC
,
FE_TYPE_UC
,
}
FE_Frame_type_t
;
typedef
enum
{
FE_ERR_CRC
=
0
,
FE_ERR_LONG
,
FE_ERR_RUNT
,
}
FE_Err_type_t
;
typedef
enum
{
FE_ADD_TLS_PORT
=
0
,
FE_DEL_TLS_PORT
,
FE_SET_TLS_VLAN
,
FE_UNSET_TLS_VLAN
,
FE_ADD_GROUP_TLS_ENTRY
,
FE_DEL_GROUP_TLS_ENTRY
,
FE_SHOW_GROUP_TLS_ENTRY
,
}
FE_Tls_cmd_t
;
typedef
enum
{
FE_ADD_TLS_ENTRY
=
0
,
FE_DEL_TLS_ENTRY
,
FE_SHOW_TLS_ENTRY
,
}
FE_Tls_Trunk_Mode_Cmd_t
;
typedef
enum
{
FE_TLS_FORWARD_UPSTREAM
=
0
,
FE_TLS_FORWARD_DOWNSTREAM
,
}
FE_Tls_forward_direction_t
;
typedef
struct
{
unsigned
char
uni_port_id
;
/*0~3*/
unsigned
short
uni_vlan
;
/*2~4094,4095 means not care*/
unsigned
short
gem_port
;
/*gemport id*/
unsigned
short
ani_vlan
;
/*2~4094,4095 means not care*/
}
FE_Tls_info_t
;
typedef
enum
{
FE_SCU_RESET
=
0
,
FE_CORE_RESET
,
}
FE_Reset_mode_t
;
enum
BindDir
{
UPSTREAM_ONLY
=
0
,
/* only speed up upstream flow */
DOWNSTREAM_ONLY
=
1
,
/* only speed up downstream flow */
BIDIRECTION
=
2
/* speed up bi-direction flow */
};
typedef
enum
{
FIX_MODE
=
0
,
RANDOM_MODE
,
}
FE_Random_mode_t
;
typedef
enum
{
METER_BYTE_MODE
=
0
,
METER_PACKET_MODE
,
}
FE_Packet_Mode_t
;
typedef
enum
{
FAST_TICK
=
0
,
SLOW_TICK
,
}
FE_TickSel_t
;
typedef
enum
{
DOWN_STREAM
=
0
,
UP_STREAM
,
}
FE_Dir_t
;
typedef
enum
{
CAR_QOS_MODE
=
0
,
/*CT and cmcc */
IP_BIND_MODE
,
IF_BIND_MODE
,
OLT_CTL_MODE
,
TRAFFIC_QOS_MODE
,
/*used for 8 queue traffic qos */
DEV_MAC_MODE
,
FORCEBW_WRR_MODE
,
WAN_MODE
,
NULL_BIND_MODE
,
}
FE_Meter_Mode_t
;
typedef
enum
{
TRAFFIC_FLOW_MODE
=
0
,
/*dafault set , traffic mode, could be exend if need */
DEV_MODE
,
WAN_ITF_MODE
,
MULTICAST_MODE
,
WAN_ITF_AND_TRAFFIC_FLOW_MODE
,
DEFAULT_NULL_MODE
,
}
FE_ACNT_Mode_t
;
struct
Fe_Ratelimit_IP_Info
{
unsigned
char
index
;
/*rue index*/
unsigned
char
enable
;
/*this rule if active?*/
unsigned
int
rate
;
unsigned
char
ip_version
;
/*0: IPv4 , 1: IPv6*/
unsigned
char
v4_pair_l
[
4
]
;
/*IPv4 range*/
unsigned
char
v4_pair_h
[
4
]
;
unsigned
char
v6_pair_l
[
16
]
;
/*IPv6 range*/
unsigned
char
v6_pair_h
[
16
]
;
};
struct
Fe_Ratelimit_Itf_Info
{
unsigned
char
index
;
/*rule index*/
unsigned
char
enable
;
/*this rule if active?*/
unsigned
int
rate
;
};
typedef
struct
{
struct
sk_buff
*
skb
;
uint
rate
;
/*ratelimit value.*/
FE_Enable_t
enable
;
FE_Packet_Mode_t
pkt_mode
;
FE_TickSel_t
tick_sel
;
unchar
idx
;
/*idx of mapping array*/
FE_Dir_t
dir
;
FE_Meter_Mode_t
mode
;
FE_ACNT_Mode_t
acnt_mode
;
uint
bucket_size
;
unchar
meter_id
;
unchar
acnt2_id
;
unchar
acnt1_id
;
unchar
acnt0_id
;
uint
byteCnt_L
;
uint
byteCnt_H
;
uint
pktCnt
;
uint
pktCnt_H
;
unchar
mac
[
6
];
char
itf_name
[
16
];
struct
Fe_Ratelimit_IP_Info
ip_info
;
struct
Fe_Ratelimit_Itf_Info
if_info
;
}
Meter_cfg_t
;
typedef
enum
{
ADD_MODE
=
0
,
SUBTRACT_MODE
,
}
FE_Rate_minus_t
;
typedef
enum
{
FE_MC_VLAN_KEEP
=
0
,
FE_MC_VLAN_REPLACE
,
FE_MC_VLAN_ADD
,
FE_MC_VLAN_REMOVE
}
FE_McVlan_OP_t
;
typedef
enum
{
FE_MC_VPM_KEEP
=
0
,
FE_MC_VPM_8100
,
FE_MC_VPM_88a8
,
FE_MC_VPM_CSR
}
FE_McVlan_VPM_t
;
typedef
enum
{
XSI_PHY_LINK_DOWN
,
XSI_PHY_LINK_UP
,
}
XFI_LINK_STATUS_t
;
typedef
enum
{
FE_MISC_CONFIG_GPON
=
0
,
FE_MISC_CONFIG_EPON
,
FE_MISC_CONFIG_XGPON
,
FE_MISC_CONFIG_XEPON
,
FE_MISC_CONFIG_NONE
}
FE_MISC_CONFIG_t
;
typedef
enum
{
FE_SET_PACKET_LENGTH
=
0
,
FE_SET_CHANNEL_ENABLE
,
FE_SET_MAC_ADDR
,
FE_SET_HWFWD_CHANNEL
,
FE_SET_CHANNEL_RETIRE
,
FE_SET_CRC_STRIP
,
FE_SET_PADDING
,
FE_GET_EXT_TPID
,
FE_SET_EXT_TPID
,
FE_GET_FW_CFG
,
FE_SET_FW_CFG
,
FE_SET_DROP_UDP_CHKSUM_ERR_ENABLE
,
FE_SET_DROP_TCP_CHKSUM_ERR_ENABLE
,
FE_SET_DROP_IP_CHKSUM_ERR_ENABLE
,
FE_SET_DROP_CRC_ERR_ENABLE
,
FE_SET_DROP_RUNT_ENABLE
,
FE_SET_DROP_LONG_ENABLE
,
FE_SET_VLAN_CHECK
,
FE_GET_OK_CNT
,
FE_GET_RX_CRC_ERR_CNT
,
FE_GET_RX_DROP_FIFO_CNT
,
FE_GET_RX_DROP_ERR_CNT
,
FE_GET_OK_BYTE_CNT
,
FE_GET_TX_GET_CNT
,
FE_GET_TX_DROP_CNT
,
FE_GET_TIEM_STAMP
,
FE_SET_TIEM_STAMP
,
FE_SET_INS_VLAN_TPID
,
FE_SET_VLAN_ENABLE
,
FE_SET_BLACK_LIST
,
FE_SET_ETHER_TYEP
,
FE_SET_L2U_KEY
,
FE_GET_AC_GROUP_PKT_CNT
,
FE_GET_AC_GROUP_BYTE_CNT
,
FE_CLR_AC_GROUP_PKT_CNT
,
FE_CLR_AC_GROUP_BYTE_CNT
,
FE_SET_METER_GROUP
,
FE_GET_METER_GROUP
,
FE_SET_GDM_PCP_CODING
,
FE_SET_CDM_PCP_CODING
,
FE_SET_VIP_ENABLE
,
FE_GET_ETH_RX_CNT
,
FE_GET_ETH_TX_CNT
,
FE_GET_ETH_FRAME_CNT
,
FE_GET_ETH_ERR_CNT
,
FE_SET_CLEAR_MIB
,
FE_SET_CDM_RX_RED_DROP
,
FE_GET_CDM_RX_RED_DROP
,
FE_SET_CHANNEL_RETIRE_ALL
,
FE_SET_CHANNEL_RETIRE_ONE
,
FE_SET_TX_RATE
,
FE_SET_RXUC_RATE
,
FE_SET_RXBC_RATE
,
FE_SET_RXMC_RATE
,
FE_SET_RXOC_RATE
,
FE_ADD_VIP_ETHER
,
FE_ADD_VIP_PPP
,
FE_ADD_VIP_IP
,
FE_ADD_VIP_TCP
,
FE_ADD_VIP_UDP
,
FE_DEL_VIP_ETHER
,
FE_DEL_VIP_PPP
,
FE_DEL_VIP_IP
,
FE_DEL_VIP_TCP
,
FE_DEL_VIP_UDP
,
FE_ADD_L2LU_VLAN_DSCP
,
FE_ADD_L2LU_VLAN_TRFC
,
FE_DEL_L2LU_VLAN_DSCP
,
FE_DEL_L2LU_VLAN_TRFC
,
FE_ADD_TRAFFIC_CLASS
,
FE_DEL_TRAFFIC_CLASS
,
FE_SET_TX_FAVOR_OAM_ENABLE
,
FE_SET_TLS_CFG
,
FE_TLS_FORWARD
,
FE_DO_RESET
,
FE_SET_MAC_ADDR_7516
,
FE_SET_WAN_PORT_7516
,
FE_SET_LOOPBACK_ENABLE
,
FE_SET_LOOPBACK_MODE
,
FE_GET_UNKNOWN_MUL_PKT
,
#if 1
FE_SET_METER_RATELIMIT
,
FE_GET_METER_RATELIMIT
,
FE_GET_METER_IDX
,
FE_GET_ACNT1_IDX
,
FE_GET_ACNT0_IDX
,
FE_INIT_RESOURCE_MANAGE
,
FE_DEINIT_RESOURCE_MANAGE
,
FE_SET_RX_RATELIMIT_RULE
,
FE_SET_RX_RATELIMIT_MODE
,
FE_SET_METER_CTL_BY_OLT
,
FE_GET_FLOW_CNT
,
FE_CLEAR_FLOW_CNT
,
FE_GET_ACNT0_MODE
,
FE_GET_ACNT1_MODE
,
FE_SET_ACNT0_MODE
,
FE_SET_ACNT1_MODE
,
FE_GET_METER_ENABLE
,
FE_GET_DEV_MAC_INDEX
,
FE_SET_PSE_OQ_THR
,
FE_GET_ACNT2_IDX
,
FE_SET_ACNT2_MODE
,
FE_GET_WAN_ITF_INDEX
,
#endif
FE_SET_GLO_RATE_BYTE
,
FE_GET_PPPOE_INFO
,
FE_SET_PPPOE_INFO_CLEAN
,
FE_GET_TX_TRAFFIC
,
FE_GET_RX_TRAFFIC
,
FE_GET_TX_RATE
,
FE_GET_RX_RATE
,
FE_GET_TX_OCTETS
,
FE_GET_RX_OCTETS
,
FE_GET_RX_DISCARD_COUNTER
,
FE_GET_TX_DISCARD_COUNTER
,
FE_GET_RX_ERROR_COUNTER
,
FE_GET_TX_ERROR_COUNTER
,
FE_ADD_DEV_TO_TOTAL_ACCOUNT
,
FE_ADD_STB_SRC_IP
,
FE_DEL_STB_SRC_IP
,
FE_SET_RATELIMIT_FOR_PKT_FORMATE
,
FE_SET_MC_VLAN_GLOBAL
,
FE_GET_MC_VLAN_GLOBAL
,
FE_SET_MC_VLAN_TABLE_CFG
,
FE_GET_MC_VLAN_TABLE_CFG
,
FE_SET_MC_VLAN_ACTION_CFG
,
FE_GET_MC_VLAN_ACTION_CFG
,
FE_SET_MC_VLAN_CLEAR_ALL
,
FE_SET_RX_MAC_FILTER
,
FE_SET_RX_MAC_FILTER_RATE
,
FE_XFI_PHY_LINK_CHANGE
,
FE_SET_GDMA_MISC_CONFIG
,
FE_GET_RX_RATELIMIT_MODE
,
FE_GET_HSGMII_LAN_RX_CNT
,
FE_GET_HSGMII_LAN_TX_CNT
,
FE_SET_AEWAN_FWDFQ
,
FE_SET_AEWAN_IFCDISABLE
,
FE_SET_GMD2_SPTAG_FOR_LOOPBACK
,
FE_SET_RX_RATE
,
FE_FUNCTION_MAX_NUM
,
}
FE_HookFunctionID_t
;
typedef
struct
FE_TxCnt_s
{
unsigned
long
long
txFrameCnt
;
unsigned
long
long
txFrameLen
;
unsigned
long
long
txDropCnt
;
unsigned
long
long
txBroadcastCnt
;
unsigned
long
long
txMulticastCnt
;
unsigned
long
long
txLess64Cnt
;
unsigned
long
long
txMore1518Cnt
;
unsigned
long
long
txEq64Cnt
;
unsigned
long
long
txFrom65To127Cnt
;
unsigned
long
long
txFrom128To255Cnt
;
unsigned
long
long
txFrom256To511Cnt
;
unsigned
long
long
txFrom512To1023Cnt
;
unsigned
long
long
txFrom1024To1518Cnt
;
}
FE_TxCnt_t
;
typedef
struct
FE_RxCnt_s
{
unsigned
long
long
rxFCDropCnt
;
unsigned
long
long
rxRCDropCnt
;
unsigned
long
long
rxOVDropCnt
;
unsigned
long
long
rxERRDropCnt
;
unsigned
long
long
rxOKPktCnt
;
unsigned
long
long
rxOKByteCnt
;
unsigned
long
long
rxOversizeCnt
;
unsigned
long
long
rxUnderSizeCnt
;
unsigned
long
long
rxFrameCnt
;
unsigned
long
long
rxFrameLen
;
unsigned
long
long
rxDropCnt
;
unsigned
long
long
rxBroadcastCnt
;
unsigned
long
long
rxMulticastCnt
;
unsigned
long
long
rxCrcCnt
;
unsigned
long
long
rxFragFameCnt
;
unsigned
long
long
rxJabberFameCnt
;
unsigned
long
long
rxLess64Cnt
;
unsigned
long
long
rxMore1518Cnt
;
unsigned
long
long
rxEq64Cnt
;
unsigned
long
long
rxFrom65To127Cnt
;
unsigned
long
long
rxFrom128To255Cnt
;
unsigned
long
long
rxFrom256To511Cnt
;
unsigned
long
long
rxFrom512To1023Cnt
;
unsigned
long
long
rxFrom1024To1518Cnt
;
}
FE_RxCnt_t
;
typedef
struct
{
unchar
valid
;
int
timeout
;
unsigned
char
mac
[
6
];
int
wan_itf
;
}
WanItfAndDevBandwidth_t
;
typedef
struct
{
unchar
valid
;
int
timeout
;
int
wan_itf
;
}
WanItf_t
;
typedef
struct
{
unchar
valid
;
int
timeout
;
int
wan_itf
;
int
group_ip_type
;
/* 0 means ipv4, 1 means ipv6 */
union
{
unsigned
int
ip4
;
struct
in6_addr
ip6
;
}
group_ip
;
}
Multicast_t
;
#ifdef __KERNEL__
typedef
struct
{
unsigned
char
mac
[
6
];
unsigned
int
upstream_byte_lo
;
unsigned
int
upstream_byte_hi
;
unsigned
int
upstream_packet
;
unsigned
int
downstream_byte_lo
;
unsigned
int
downstream_byte_hi
;
unsigned
int
downstream_packet
;
struct
list_head
account_node
;
}
dev_bandwidth_account_t
;
#endif
typedef
struct
FE_TrfcCfg_s
{
unsigned
char
smac
[
6
];
unsigned
char
dmac
[
6
];
unsigned
int
sip
;
unsigned
int
dip
;
unsigned
short
sipv6
[
8
];
unsigned
short
dipv6
[
8
];
unsigned
short
sport
;
unsigned
short
dport
;
unsigned
short
eth_type
;
unsigned
char
tc_min
;
unsigned
char
tc_max
;
unsigned
char
tos_min
;
unsigned
char
tos_max
;
unsigned
char
cpbit_min
;
unsigned
char
cpbit_max
;
unsigned
short
cvid_min
;
unsigned
short
cvid_max
;
unsigned
char
spbit_min
;
unsigned
char
spbit_max
;
unsigned
short
svid_min
;
unsigned
short
svid_max
;
/* each bit means if need to care the key above or not */
unsigned
int
mask
;
unsigned
char
field_num
;
}
FE_TrfcCfg_t
;
typedef
struct
FE_PppoeInfo_s
{
int
valid
;
char
ifname
[
16
];
unsigned
char
smac_add
[
6
];
unsigned
char
dmac_add
[
6
];
unsigned
int
sessionID
;
unsigned
int
src_ip
;
unsigned
int
dst_ip
;
int
dns_valid
;
unsigned
int
pri_dns
;
unsigned
int
snd_dns
;
}
FE_PppoeInfo_t
;
typedef
struct
FE_McVlanTableCfg_s
{
unsigned
char
mc_table_id
;
FE_Enable_t
enable
;
unsigned
short
ppe_entry_id
;
}
FE_McVlanTableCfg_t
;
typedef
struct
FE_McVlanActionCfg_s
{
unsigned
char
mc_table_id
;
unsigned
char
mc_chnl_id
;
FE_McVlan_OP_t
mc_vlan_op
;
FE_McVlan_VPM_t
mc_vlan_vpm
;
unsigned
short
mc_vlan
;
}
FE_McVlanActionCfg_t
;
typedef
struct
FE_RxMacFilter_s
{
unsigned
char
cmd_id
;
unsigned
char
gdm_sel
;
unsigned
char
pkt_type
;
unsigned
char
mac_sel
;
unsigned
char
action
;
unsigned
char
list_type
;
unsigned
char
mac
[
6
];
}
FE_RxMacFilter_t
;
struct
ecnt_fe_data
{
FE_HookFunctionID_t
function_id
;
FE_Gdma_Sel_t
gdm_sel
;
FE_MacSet_Sel_t
macSet_sel
;
FE_Cdma_Sel_t
cdm_sel
;
FE_RedDropQ_Sel_t
dropQ_sel
;
FE_RedDropMode_Sel_t
dropMode_sel
;
FE_TXRX_Sel_t
txrx_sel
;
FE_Err_type_t
err_type
;
uint
channel
;
uint
index
;
uint
reg_val
;
uint
cnt
;
uint
cnt_hi
;
uint
timeStamp
;
union
{
FE_Enable_t
enable
;
FE_Linkup_t
link_mode
;
FE_PcpMode_t
coding_mode
;
uint
meter_rate
;
uint
unknown_mul_pkt
;
FE_Reset_mode_t
reset_mode
;
FE_PonMode_Sel_t
pon_mode
;
struct
{
uint
byteCnt_L
;
uint
byteCnt_H
;
}
byteCnt
;
struct
{
uint
length_long
;
uint
length_short
;
}
pkt_len
;
struct
{
unchar
*
mac
;
ushort
mask
;
}
mac_addr
;
struct
{
uint
mac_h
;
uint
mac_lmin
;
uint
mac_lmax
;
}
mac_addr_7516
;
struct
{
FE_Enable_t
wan1_en
;
FE_WanPort_Sel_t
wan1_port
;
FE_WanPort_Sel_t
wan0_port
;
}
wan_port_7516
;
struct
{
FE_Frame_type_t
dp_sel
;
FE_Frame_dp_t
dp_val
;
}
fw_cfg
;
struct
{
FE_Enable_t
enable
;
FE_PPPOE_t
is_pppoe
;
uint
value
;
}
eth_cfg
;
struct
{
FE_L2U_KEY_t
key_sel
;
uint
key0
;
uint
key1
;
}
l2u_key
;
struct
{
FE_Enable_t
enable
;
FE_Patn_type
patten_type
;
uint
patten
;
}
vip_cfg
;
struct
{
uint
rate
;
uint
mode
;
uint
maxBkSize
;
uint
tick
;
}
rate_cfg
;
struct
{
ushort
type
;
ushort
src
;
ushort
dst
;
unchar
mode
;
}
vip
;
struct
{
unchar
mask
;
unchar
dscp
;
ushort
svlan
;
ushort
cvlan
;
}
l2lu
;
struct
{
unchar
cmd
;
unchar
tls_port
;
ushort
tls_vlan
;
FE_Tls_info_t
tls_info
;
}
tls_cfg
;
FE_RxCnt_t
FE_RxCnt
;
FE_TxCnt_t
FE_TxCnt
;
struct
{
void
*
skb
;
FE_Tls_forward_direction_t
dir
;
}
tls_forward
;
struct
{
FE_Random_mode_t
channel_mode
;
FE_Random_mode_t
length_mode
;
FE_Random_mode_t
gap_mode
;
}
lpbp_mode
;
Meter_cfg_t
meter_cfg
;
FE_TrfcCfg_t
fe_trfc_cfg
;
struct
{
FE_Rate_minus_t
rate_minus
;
unchar
rate_byte
;
}
glo_rate_byte
;
FE_PppoeInfo_t
pppoe_info
;
struct
{
int
lan_port
;
union
{
uint
rate
;
uint
frameByteCnt
;
};
}
fe_cnt_str
;
struct
{
unsigned
char
mac
[
6
];
}
dev_cfg
;
struct
{
int
ip_type
;
/* 0 means ipv4, 1 means ipv6 */
union
{
unsigned
int
ip4
;
struct
in6_addr
ip6
;
};
}
stb_ip_cfg
;
struct
{
unsigned
char
pkt_formate
;
unsigned
char
mode
;
}
pkt_ratelimit
;
FE_McVlanTableCfg_t
fe_mcvlan_table_cfg
;
FE_McVlanActionCfg_t
fe_mcvlan_action_cfg
;
FE_RxMacFilter_t
macfilter_cfg
;
XFI_LINK_STATUS_t
status
;
FE_MISC_CONFIG_t
fe_misc_cfg
;
}
api_data
;
int
retValue
;
};
/************************************************************************
* D A T A D E C L A R A T I O N S
*************************************************************************
*/
/************************************************************************
* F U N C T I O N D E C L A R A T I O N S
# I N L I N E F U N C T I O N D E F I N I T I O N S
*************************************************************************
*/
#endif
/* _ECNT_HOOK_QDMA_TYPE_H_ */
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
sign in
to comment