| /* |
| * Copyright (c) 2009 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. |
| * |
| * |
| */ |
| |
| |
| #ifndef _HIDRV_H |
| #define _HIDRV_H |
| |
| #include "channels.h" |
| #include "modules.h" |
| #include "fpart.h" |
| |
| U32 FCODE_TO_EVENT(U32 fcode); |
| |
| #if !defined(COMCERTO_2000_CONTROL) |
| |
| typedef struct tHostCommand { |
| U16 length; |
| U16 code; |
| U32 pad; // keep data aligned on a DWORD boundary |
| U16 data[128]; |
| } HostCommand; |
| |
| typedef struct tHostMessage { |
| struct tHostMessage *next; |
| U16 length; |
| U16 code; |
| U16 data[128]; |
| } HostMessage; |
| |
| void msg_free(HostMessage *msg); |
| HostMessage *msg_alloc(void); |
| void msg_send(HostMessage *msg); |
| |
| #endif /* !defined(COMCERTO_2000_CONTROL) */ |
| |
| typedef U16 (*CmdProc)(U16, U16, U16 *); |
| |
| |
| extern CmdProc gCmdProcTable[]; |
| |
| #define set_cmd_handler(event, handler) gCmdProcTable[event] = handler; |
| |
| #if !defined (COMCERTO_2000) |
| |
| extern HostCommand host_cmd; |
| |
| BOOL M_hidrv_init(PModuleDesc pModule); |
| void M_hidrv_entry(void); |
| |
| extern DataQueue hostmsg_queue; |
| |
| #define CMD_MBOX_0_ADDR 0x0A000000 |
| #define CMD_MBOX_1_ADDR 0x0A000004 |
| #define EVENT_MBOX_0_ADDR 0x0A000010 |
| #define EVENT_MBOX_1_ADDR 0x0A000014 |
| |
| #define CMD_DATA_ADDR 0x0A000020 |
| #define EVENT_DATA_ADDR 0x0A000220 |
| |
| |
| #define M0_CMD 0x00000001 |
| #define M0_ACK 0x00000002 |
| #define M0_EVENT 0x00000004 |
| #define TX_MAGIC 0x4D535044 // -> MSPD |
| |
| #endif /* !defined (COMCERTO_2000) */ |
| |
| |
| // Function codes |
| // 0x0000 -> 0x00FF : RX module |
| #define FC_RX 0x0000 |
| #define CMD_RX_ENABLE 0x0001 |
| #define CMD_RX_DISABLE 0x0002 |
| #define CMD_RX_CNG_ENABLE 0x0003 |
| #define CMD_RX_CNG_DISABLE 0x0004 |
| #define CMD_RX_CNG_SHOW 0x0005 |
| #define CMD_RX_FILL_BUFFERPOOL 0x0006 |
| #define CMD_RX_FILTER_PROMISCUOUS 0x0007 |
| #define CMD_RX_L2BRIDGE_ENABLE 0x0008 |
| #define L2BRIDGE_FIRST_COMMAND CMD_RX_L2BRIDGE_ENABLE |
| #define CMD_RX_L2BRIDGE_ADD 0x0009 |
| #define CMD_RX_L2BRIDGE_REMOVE 0x000a |
| #define CMD_RX_L2BRIDGE_QUERY_STATUS 0x000b |
| #define CMD_RX_L2BRIDGE_QUERY_ENTRY 0x000c |
| #define CMD_RX_L2BRIDGE_FLOW_ENTRY 0x000d |
| #define CMD_RX_L2BRIDGE_MODE 0x000e |
| #define CMD_RX_L2BRIDGE_FLOW_TIMEOUT 0x000f |
| #define CMD_RX_L2BRIDGE_FLOW_RESET 0x0010 |
| |
| #define L2BRIDGE_LAST_COMMAND CMD_RX_L2BRIDGE_FLOW_RESET |
| #define CMD_RX_LRO 0x0011 |
| |
| // 0x0100 -> 0x01FF : Ethernet module |
| #define FC_ETH 0x0001 |
| |
| // 0x0200 -> 0x02FF : QM module |
| #define FC_QM 0x0002 |
| #define CMD_QM_QOSENABLE 0x0201 |
| #define CMD_QM_QOSALG 0x0202 |
| #define CMD_QM_NHIGH 0x0203 |
| #define CMD_QM_MAX_TXDEPTH 0x0204 |
| #define CMD_QM_MAX_QDEPTH 0x0205 |
| #define CMD_QM_MAX_WEIGHT 0x0206 |
| #define CMD_QM_RATE_LIMIT 0x0207 |
| #define CMD_QM_EXPT_RATE 0x020c |
| #define CMD_QM_QUERY 0x020d |
| #define CMD_QM_QUERY_EXPT_RATE 0x020e |
| |
| #define CMD_QM_RESET 0x0210 |
| #define CMD_QM_SHAPER_CONFIG 0x0211 |
| #define CMD_QM_SCHEDULER_CONFIG 0x0212 |
| #define CMD_QM_DSCP_QM 0x0213 |
| |
| #define CMD_QM_QUEUE_QOSENABLE 0x0214 |
| |
| |
| // 0x0300 -> 0x03FF : IPv4 module |
| #define FC_IPV4 0x0003 |
| #define CMD_IP_ROUTE 0x0313 |
| #define CMD_IPV4_CONNTRACK 0x0314 |
| #define CMD_IPV4_CONNTRACK_CHANGE 0x0315 |
| #define CMD_IPV4_RESET 0x0316 |
| #define CMD_IPV4_SET_TIMEOUT 0x0319 |
| #define CMD_IPV4_GET_TIMEOUT 0x0320 |
| #define CMD_IPV4_FF_CONTROL 0x0321 |
| |
| #define CMD_IPV4_SOCK_OPEN 0x0330 |
| #define CMD_IPV4_SOCK_CLOSE 0x0331 |
| #define CMD_IPV4_SOCK_UPDATE 0x0332 |
| #define CMD_IPV4_FRAGTIMEOUT 0x0333 |
| #define CMD_IPV4_SAM_FRAGTIMEOUT 0x0334 |
| |
| |
| // 0x0400 -> 0x04FF : IPv6 module |
| #define FC_IPV6 0x0004 |
| #define CMD_IPV6_CONNTRACK 0x0414 |
| #define CMD_IPV6_CONNTRACK_CHANGE 0x0415 |
| #define CMD_IPV6_RESET 0x0416 |
| #define CMD_IPV6_GET_TIMEOUT 0x0420 |
| #define CMD_IPV6_SOCK_OPEN 0x0430 |
| #define CMD_IPV6_SOCK_CLOSE 0x0431 |
| #define CMD_IPV6_SOCK_UPDATE 0x0432 |
| #define CMD_IPV6_FRAGTIMEOUT 0x0433 |
| |
| |
| // 0x0500 -> 0x05FF : Tx module |
| #define FC_TX 0x0005 |
| #define CMD_TX_ENABLE 0x0501 |
| #define CMD_TX_DISABLE 0x0502 |
| #define CMD_LINK_UP 0x0504 |
| #define CMD_PORT_UPDATE 0x0505 |
| |
| // 0x0600 -> 0x06FF : PPPoE module |
| #define FC_PPPOE 0x0006 |
| #define CMD_PPPOE_ENTRY 0x0601 |
| #define CMD_PPPOE_ENTRY_CHANGE 0x0602 |
| #define CMD_PPPOE_GET_IDLE 0x0603 |
| #define CMD_PPPOE_RELAY_ENTRY 0x0610 |
| |
| |
| // 0x0700 -> 0x07FF : MC4 and MC6 modules |
| #define FC_MC 0x0007 |
| #define CMD_MC4_MULTICAST 0x0701 |
| #define CMD_MC4_RESET 0x0702 |
| #define CMD_MC6_MULTICAST 0x0703 |
| #define CMD_MC6_RESET 0x0704 |
| #define CMD_MC6_MODE 0x0705 |
| |
| // 0x0800 -> 0x08FF : RTP relay module |
| #define FC_RTP 0x0008 |
| #define CMD_RTP_OPEN 0x0801 |
| #define CMD_RTP_UPDATE 0x0802 |
| #define CMD_RTP_TAKEOVER 0x0803 |
| #define CMD_RTP_CONTROL 0x0804 |
| #define CMD_RTP_SPECTX_PLD 0x0805 |
| #define CMD_RTP_SPECTX_CTRL 0x0806 |
| #define CMD_RTCP_QUERY 0x0807 |
| #define CMD_RTP_CLOSE 0x0808 |
| |
| #define CMD_RTP_STATS_ENABLE 0x0810 |
| #define CMD_RTP_STATS_DISABLE 0x0811 |
| #define CMD_RTP_STATS_QUERY 0x0812 |
| #define CMD_RTP_STATS_DTMF_PT 0x0813 |
| |
| #define CMD_VOICE_BUFFER_LOAD 0x0820 |
| #define CMD_VOICE_BUFFER_UNLOAD 0x0821 |
| #define CMD_VOICE_BUFFER_START 0x0822 |
| #define CMD_VOICE_BUFFER_STOP 0x0823 |
| #define CMD_VOICE_BUFFER_RESET 0x0824 |
| |
| // 0x0900 -> 0x09FF : VLAN module |
| #define FC_VLAN 0x0009 |
| #define CMD_VLAN_ENTRY 0x0901 |
| #define CMD_VLAN_ENTRY_RESET 0x0902 |
| |
| // 0x0a00 -> 0x0aff : IPSec module |
| #define FC_IPSEC 0x000A |
| #define CMD_IPSEC_SA_CREATE 0x0A01 |
| #define CMD_IPSEC_SA_DELETE 0x0A02 |
| #define CMD_IPSEC_SA_FLUSH 0x0A03 |
| #define CMD_IPSEC_SA_SET_KEYS 0x0A04 |
| #define CMD_IPSEC_SA_SET_TUNNEL 0x0A05 |
| #define CMD_IPSEC_SA_SET_NATT 0x0A06 |
| #define CMD_IPSEC_SA_SET_STATE 0x0A07 |
| #define CMD_IPSEC_SA_SET_LIFETIME 0x0A08 |
| #define CMD_IPSEC_SA_NOTIFY 0x0A09 |
| #define CMD_IPSEC_SA_ACTION_QUERY 0x0A0A |
| #define CMD_IPSEC_SA_ACTION_QUERY_CONT 0x0A0B |
| #define CMD_IPSEC_FRAG_CFG 0x0A14 |
| |
| // 0x0b00 -> 0x0bff : Tunnel module |
| #define FC_TNL 0x000B |
| #define CMD_TNL_CREATE 0x0B01 |
| #define CMD_TNL_DELETE 0x0B02 |
| #define CMD_TNL_UPDATE 0x0B03 |
| #define CMD_TNL_IPSEC 0x0B04 |
| #define CMD_TNL_QUERY 0x0B05 |
| #define CMD_TNL_QUERY_CONT 0x0B06 |
| #define CMD_TNL_4o6_ID_CONVERSION_dupsport 0x0B07 |
| #define CMD_TNL_4o6_ID_CONVERSION_psid 0x0B08 |
| |
| // 0x0c00 -> 0x0cFF : QM module |
| #define FC_EXPT 0x000c |
| #define CMD_EXPT_QUEUE_DSCP 0x0c01 |
| #define CMD_EXPT_QUEUE_CTRL 0x0c02 |
| #define CMD_EXPT_QUEUE_RESET 0x0c03 |
| |
| // 0x0d00-> 0x0dFF : Packet capture module |
| |
| #define FC_PKTCAP 0x000d |
| #define CMD_PKTCAP_ENABLE 0x0d01 |
| #define CMD_PKTCAP_IFSTATUS 0x0d02 |
| #define CMD_PKTCAP_SLICE 0x0d04 |
| #define CMD_PKTCAP_FLF 0x0d03 |
| #define CMD_PKTCAP_QUERY 0x0d05 |
| |
| /* 0x0e00 -> 0x0eff : Stat module */ |
| #define FC_STAT 0x000E |
| #define CMD_STAT_ENABLE 0x0E01 |
| #define CMD_STAT_QUEUE 0x0E02 |
| #define CMD_STAT_INTERFACE_PKT 0x0E03 |
| #define CMD_STAT_CONN 0x0E04 |
| #define CMD_STAT_PPPOE_STATUS 0x0E05 |
| #define CMD_STAT_PPPOE_ENTRY 0x0E06 |
| #define CMD_STAT_BRIDGE_STATUS 0x0E07 |
| #define CMD_STAT_BRIDGE_ENTRY 0x0E08 |
| #define CMD_STAT_IPSEC_STATUS 0x0E09 |
| #define CMD_STAT_IPSEC_ENTRY 0x0E0A |
| #define CMD_STAT_VLAN_STATUS 0x0E0B |
| #define CMD_STAT_VLAN_ENTRY 0x0E0C |
| |
| // 0x0f00 ->0x0fff : Trace/Profiling/Debugging |
| #define FC_TRC 0x000f |
| #define CMD_TRC_ON 0x0f01 |
| #define CMD_TRC_OFF 0x0f02 |
| #define CMD_TRC_SWITCH 0x0f03 |
| #define CMD_TRC_DMEM 0x0f04 |
| #define CMD_TRC_SETMASK 0x0f05 |
| #define CMD_TRC_SHOW 0x0f06 |
| #define CMD_TRC_BSYCPU 0x0f07 |
| #define CMD_TRC_STATUS 0x0f08 |
| /* Command return codes */ |
| #define CMD_TRC_UNIMPLEMENTED 0x0f7f |
| #define CMD_TRC_PARTIAL 0xf00 |
| #define CMD_TRC_ERR 0xffe |
| |
| // 0x1000: Alternate Configuration |
| #define FC_ALTCONF 0x0010 |
| #define CMD_ALTCONF_SET 0x1001 |
| #define CMD_ALTCONF_RESET 0x1002 |
| |
| #ifdef CFG_WIFI_OFFLOAD |
| //0x2000: WiFi Rx module |
| #define FC_WIFI_RX 0x0020 |
| #define CMD_WIFI_VAP_ENTRY 0x2001 |
| #define CMD_CFG_WIFI_OFFLOAD 0x2002 |
| #define CMD_WIFI_DISABLE 0x2003 |
| #define CMD_WIFI_VAP_QUERY 0x2004 |
| #define CMD_WIFI_VAP_RESET 0x2005 |
| #endif |
| |
| #if !defined(COMCERTO_100) |
| // 0x1400 -> 0x14ff : MACVLAN module |
| #define FC_MACVLAN 0x0014 |
| #define CMD_MACVLAN_ENTRY 0x1401 |
| #define CMD_MACVLAN_ENTRY_RESET 0x1402 |
| #endif |
| // 0x1100: NAT-PT Module |
| #define FC_NATPT 0x0011 |
| #define CMD_NATPT_OPEN 0x1101 |
| #define CMD_NATPT_CLOSE 0x1102 |
| #define CMD_NATPT_QUERY 0x1103 |
| |
| |
| // 0x1200: Fppdiag configuration |
| #define FC_FPPDIAG 0x0012 |
| #define CMD_FPPDIAG_ENABLE 0x1201 |
| #define CMD_FPPDIAG_DISABLE 0x1202 |
| #define CMD_FPPDIAG_UPDATE 0x1203 |
| #define CMD_FPPDIAG_DUMP_CTRS 0x1204 |
| |
| // 0x1500: ICC |
| #define FC_ICC 0x0015 |
| #define CMD_ICC_RESET 0x1500 |
| #define CMD_ICC_THRESHOLD 0x1501 |
| #define CMD_ICC_ADD_DELETE 0x1502 |
| #define CMD_ICC_QUERY 0x1503 |
| |
| // 0x1600: L2TP |
| #define FC_L2TP 0x0016 |
| #define CMD_L2TP_ITF_ADD 0x1600 |
| #define CMD_L2TP_ITF_DEL 0x1601 |
| |
| // return code |
| #define CMD_OK 0x0000 |
| #define CMD_ERR 0xFFFE |
| #endif |