| /* |
| * Copyright (c) 2011 Mindspeed Technologies, Inc. |
| * |
| * 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, write to the Free Software |
| * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. |
| * |
| * |
| */ |
| |
| #include "hal.h" |
| #include "types.h" |
| #include "layer2.h" |
| #include "module_pppoe.h" |
| #include "module_vlan.h" |
| #include "module_mc4.h" |
| #include "module_mc6.h" |
| #include "module_qm.h" |
| #include "module_ipsec.h" |
| #include "module_tunnel.h" |
| #include "module_bridge.h" |
| #include "module_hidrv.h" |
| #include "module_rtp_relay.h" |
| #include "module_natpt.h" |
| #include "Module_ipv4frag.h" |
| #include "Module_ipv6frag.h" |
| #include "voicebuf.h" |
| #include "icc.h" |
| #include "alt_conf.h" |
| #include "module_capture.h" |
| |
| TIMER_ENTRY ip_timer; |
| TIMER_ENTRY mc6_timer; |
| TIMER_ENTRY mc6_delayed_remove_timer; |
| TIMER_ENTRY mc4_timer; |
| TIMER_ENTRY mc4_delayed_remove_timer; |
| TIMER_ENTRY bridge_timer; |
| TIMER_ENTRY bridge_delayed_removal_timer; |
| TIMER_ENTRY socket_timer; |
| TIMER_ENTRY rtpflow_timer; |
| TIMER_ENTRY voice_source_delayed_remove_timer; |
| TIMER_ENTRY sa_timer; |
| TIMER_ENTRY natpt_delayed_remove_timer; |
| TIMER_ENTRY rtpqos_timer; |
| |
| struct physical_port CLASS_DMEM_SH(phy_port)[MAX_PHY_PORTS_FAST]; |
| struct physical_port CLASS_PE_LMEM_SH(phy_port_slow)[MAX_PHY_PORTS_SLOW]; |
| struct physical_port_util UTIL_DMEM_SH2(phy_port)[MAX_PHY_PORTS_FAST]; |
| |
| /* PPPoE session cache */ |
| struct slist_head CLASS_DMEM_SH(pppoe_cache)[NUM_PPPOE_ENTRIES] __attribute__((aligned(32))); |
| PPPoE_Info CLASS_DMEM_SH(pppoe_itf)[PPPOE_MAX_ITF]; |
| |
| struct slist_head CLASS_DMEM_SH(vlan_cache)[NUM_VLAN_ENTRIES] __attribute__((aligned(32))); |
| VlanEntry CLASS_DMEM_SH(vlan_itf)[VLAN_MAX_ITF]; |
| |
| OnifDesc gOnif_DB[L2_MAX_ONIF+1] __attribute__((aligned(32))); |
| |
| struct slist_head CLASS_DMEM_SH(mc4_table_memory)[MC4_NUM_HASH_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head CLASS_DMEM_SH(mc6_table_memory)[MC6_NUM_HASH_ENTRIES] __attribute__((aligned(32))); |
| struct tMC4_context CLASS_DMEM_SH(gMC4Ctx); |
| struct tMC6_context CLASS_DMEM_SH(gMC6Ctx); |
| |
| struct slist_head ct_cache[NUM_CT_ENTRIES] __attribute__((aligned(32))); |
| |
| struct slist_head bridge_cache[NUM_BT_ENTRIES]; |
| struct slist_head bridge_l3_cache[NUM_BT_L3_ENTRIES]; |
| |
| struct slist_head sock4_cache[NUM_SOCK_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head sock6_cache[NUM_SOCK_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head sockid_cache[NUM_SOCK_ENTRIES] __attribute__((aligned(32))); |
| |
| struct slist_head sa_cache_by_h[NUM_SA_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head sa_cache_by_spi[NUM_SA_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head rt_cache[NUM_ROUTE_ENTRIES] __attribute__((aligned(32))); |
| |
| struct voice_buffer UTIL_DDR_SH(voicebuf)[VOICEBUF_MAX] __attribute__((aligned(32))); |
| U8 UTIL_DMEM_SH(voice_buffers_loaded); |
| |
| U8 CLASS_DMEM_SH(DSCP_to_Q)[NUM_DSCP_VALUES]; |
| U8 CLASS_DMEM_SH(DSCP_to_Qmod)[NUM_DSCP_VALUES]; |
| U8 CLASS_DMEM_SH(CTRL_to_Q); |
| |
| ICCTAB CLASS_DMEM_SH(icctab); |
| |
| #ifdef CFG_PCAP |
| U8 g_pcap_enable; |
| CAPCtrl gCapCtrl[GEM_PORTS]__attribute__((aligned(8))); |
| CAPflf gCapFilter[GEM_PORTS]__attribute__((aligned(8))); |
| #endif |
| |
| PNatt_Socket_v6 gNatt_Sock_v6_cache[NUM_IPSEC_SOCK_ENTRIES] __attribute__((aligned(32))) = {0}; |
| PNatt_Socket_v4 gNatt_Sock_v4_cache[NUM_IPSEC_SOCK_ENTRIES] __attribute__((aligned(32))) = {0}; |
| struct tIPSec_hw_context gIpSecHWCtx __attribute__((aligned(32))); |
| int gIpsec_available = 0; |
| |
| struct slist_head natpt_cache[NUM_NATPT_ENTRIES] __attribute__((aligned(32))); |
| |
| struct tTNL_context CLASS_DMEM_SH(gTNLCtx); |
| |
| CmdProc gCmdProcTable[EVENT_MAX]; |
| |
| tControlGlobals gCtrlGlobals __attribute__((aligned(32))); |
| |
| |
| tFppGlobals gFppGlobals; |
| tFppGlobals CLASS_DMEM_SH2(gFppGlobals); |
| |
| struct ip_frag_ctrl UTIL_DMEM_SH(ipv6_frag_ctrl); |
| struct ip_frag_ctrl UTIL_DMEM_SH(ipv4_frag_ctrl); |
| |
| struct tQM_context_ctl *gQMpCtx[GEM_PORTS] __attribute__((aligned(32)));; |
| struct tQM_context_ctl gQMCtx[GEM_PORTS] __attribute__((aligned(32))); |
| struct tQM_context_ctl gQMQosOffCtx[GEM_PORTS] __attribute__((aligned(32))); |
| struct tQM_context_ctl gQMExptCtx __attribute__((aligned(32))); |
| |
| struct tQM_context TMU_DMEM_SH(g_qm_context) __attribute__((aligned(32))); |
| //struct tQM_stat TMU_DMEM_SH(g_qm_stat)[4] __attribute__((aligned(32))); |
| //U8 TMU_DMEM_SH(g_qm_wt)[QM_WT_CMD_SIZE] __attribute__((aligned(32))); |
| U8 TMU_DMEM_SH(g_qm_cmd_info)[QM_CMD_SIZE] __attribute__((aligned(32))); |
| |
| #ifdef CFG_STATS |
| int gStatBridgeQueryStatus; |
| int gStatPPPoEQueryStatus; |
| int gStatIpsecQueryStatus; |
| int gStatVlanQueryStatus; |
| #endif |
| |
| U8 gDTMF_PT[2]; |
| struct slist_head rtpflow_cache[NUM_RTPFLOW_ENTRIES] __attribute__((aligned(32))); |
| struct slist_head rtpcall_list; |
| |
| AltConfIpsec_RlEntry AltConfIpsec_RateLimitEntry __attribute__((aligned(32))); |
| |
| struct _trtpqos_entry rtpqos_cache[MAX_RTP_STATS_ENTRY] __attribute__((aligned(32))); |