blob: c1777d694589926c7b0e4242b5fdc019b8bbfe5f [file] [log] [blame]
/*
* 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