#ifndef __XDSL_CTRL_H__ #define __XDSL_CTRL_H__ #include <linux/atm.h> #include <linux/atmdev.h> #include <linux/atmbr2684.h> #include <linux/netdevice.h> #include <linux/ppp_channel.h> #include "xdsl_types.h" #include "xdsl_ctrl_erb.h" #define PTM_WANIF "ptm0" #if defined(CONFIG_XDSL_CTRL_ON_SOC) #define ETH_WANIF "eth0.2" #else #define ETH_WANIF "eth0" #endif enum { XDSL_CMD, PTM_CMD, }; // category enum { CTRL_2DSL_SET, CTRL_2DSL_GET, CTRL_2SOC_RET, CTRL_2MASTER_SET, CTRL_2MASTER_GET, CTRL_2SLAVE_RET, CTRL_SLAVE_LINKCHANGE, CTRL_SLAVE_EXECEPTION, CTRL_MASTER_EXECEPTION, }; // protocol enum { XDSL_CMD_SET, XDSL_CMD_GET, XDSL_CMD_DATA, XDSL_CMD_DATA_EOF, XDSL_ERB_SET, PTM_CMD_SET, PTM_CMD_GET, PTM_CMD_DATA, SLAVE_XDSL_UP, SLAVE_XDSL_DOWN, SLAVE_RX_FIFO_FULL, SLAVE_RX_FIFO_CHECK, SLAVE_TPSTC_RX_POLLING }; #define DSL_MAX_BUF_SIZE 4096 #define DSL_CMD_POOL_SIZE 32 #define DSL_ARG_MAX_SIZE 256 #define DSL_RXBUF_MAX_SIZE 4000 typedef struct { uint8 devnum; uint8 category; uint8 protocol; uint32 command; uint32 argsize; uint32 msg; uint8 arg[ DSL_ARG_MAX_SIZE ]; int32 ret; uint8 rxbuf[ DSL_RXBUF_MAX_SIZE ]; uint8 reserved[1]; } ctrl_pkt_t; typedef struct CMD_TYPE { int cmdId; int setFlag; //1: data get 2: command setting } cmd_t; typedef struct { unsigned char cmd; union{ struct{ unsigned int cmd2; unsigned int cmd3; unsigned int cmd4; }; struct{ unsigned short a1; unsigned short a2; unsigned char a3[8]; }; unsigned char arg[12]; }; } ptm_arg; typedef struct XDSL_ARG { int argsize; int arg; } xdsl_arg; typedef struct MSGTODSL { int msg; int* intVal; } msgtodsl; typedef struct DEF_MSGTODSL { int message; int intVal[4]; } def_msgtodsl; typedef struct XDSL_CMD { char devnum; char category; char protocol; unsigned int cmdId; unsigned long argp; xdsl_arg argument; msgtodsl message; uint8 *buf; } xdsl_cmd; typedef struct XDSL_CMD_POOL { int start; int tail; int counter; xdsl_cmd data[ DSL_CMD_POOL_SIZE ]; } xdsl_cmd_pool; // ptm ioctl command called by protocols (system-independent) #define PTM_MAGIC (('R'+'T'+'L'+'P'+'T'+'M') << 8) #define PTM_SET_DEFAULT_TABLE (PTM_MAGIC+1) #define PTM_GET_TABLE (PTM_MAGIC+2) #define PTM_READ_DATA (PTM_MAGIC+3) #define PTM_WRITE_DATA (PTM_MAGIC+4) #define PTM_SET_HW (PTM_MAGIC+5) #define PTM_GET_QMAP (PTM_MAGIC+6) #define PTM_STOP_HW (PTM_MAGIC+7) #define PTM_START_HW (PTM_MAGIC+8) #define PTM_CLEAN_WANIF (PTM_MAGIC+9) #define PTM_CLEAN_QMAP (PTM_MAGIC+10) #define PTM_SET_WANIF (PTM_MAGIC+11) #define PTM_SET_QMAP (PTM_MAGIC+12) #define PTM_SET_STAGTYPE (PTM_MAGIC+13) #define PTM_SET_DUMMYVID (PTM_MAGIC+14) #define PTM_SET_QMAPATSTAG (PTM_MAGIC+15) #define PTM_SET_MODE (PTM_MAGIC+16) #define PTM_SET_SYSTEM (PTM_MAGIC+17) #define PTM_ENABLE_TPSTC (PTM_MAGIC+18) #define PTM_DISABLE_TPSTC (PTM_MAGIC+19) #define PTM_RESET_TPSTC (PTM_MAGIC+20) #define PTM_GET_TPSTC_TX_CNT (PTM_MAGIC+21) #define PTM_GET_UTOPIA_TX_CNT (PTM_MAGIC+22) // xdsl ioctl command #define RLCM_IOC_MAGIC (('R'+'L'+'C'+'M'+'a'+'d'+'s'+'l') << 8) #define ADSL_CMD_BASE (RLCM_IOC_MAGIC + 0) #define ADSL_CMD_END (RLCM_IOC_MAGIC + 206) #define VDSL_CMD_BASE (RLCM_IOC_MAGIC + 111 + 1000) #define VDSL_CMD_END (RLCM_IOC_MAGIC + 145 + 1000) // ioctl command called by protocols (system-independent) #define RLCM_PHY_ENABLE_MODEM (RLCM_IOC_MAGIC + 1) #define RLCM_PHY_DISABLE_MODEM (RLCM_IOC_MAGIC + 2) #define RLCM_GET_DRIVER_VERSION (RLCM_IOC_MAGIC + 3) #define RLCM_GET_DRIVER_BUILD (RLCM_IOC_MAGIC + 4) #define RLCM_MODEM_RETRAIN (RLCM_IOC_MAGIC + 5) #define RLCM_GET_REHS_COUNT (RLCM_IOC_MAGIC + 6) #define RLCM_GET_CHANNEL_SNR (RLCM_IOC_MAGIC + 7) #define RLCM_GET_AVERAGE_SNR (RLCM_IOC_MAGIC + 8) #define RLCM_GET_SNR_MARGIN (RLCM_IOC_MAGIC + 9) #define RLCM_REPORT_MODEM_STATE (RLCM_IOC_MAGIC +10) #define RLCM_REPORT_PM_DATA (RLCM_IOC_MAGIC +11) #define RLCM_MODEM_NEAR_END_ID_REQ (RLCM_IOC_MAGIC +12) #define RLCM_MODEM_FAR_END_ID_REQ (RLCM_IOC_MAGIC +13) #define RLCM_MODEM_NEAR_END_LINE_DATA_REQ (RLCM_IOC_MAGIC +14) #define RLCM_MODEM_FAR_END_LINE_DATA_REQ (RLCM_IOC_MAGIC +15) #define RLCM_MODEM_NEAR_END_FAST_CH_DATA_REQ (RLCM_IOC_MAGIC +16) #define RLCM_MODEM_NEAR_END_INT_CH_DATA_REQ (RLCM_IOC_MAGIC +17) #define RLCM_MODEM_FAR_END_FAST_CH_DATA_REQ (RLCM_IOC_MAGIC +18) #define RLCM_MODEM_FAR_END_INT_CH_DATA_REQ (RLCM_IOC_MAGIC +19) #define RLCM_SET_ADSL_MODE (RLCM_IOC_MAGIC +20) #define RLCM_GET_ADSL_MODE (RLCM_IOC_MAGIC +21) #define RLCM_GET_LOSS_DATA (RLCM_IOC_MAGIC +22) #define RLCM_GET_LINK_SPEED (RLCM_IOC_MAGIC +23) #define RLCM_GET_CHANNEL_MODE (RLCM_IOC_MAGIC +24) #define RLCM_GET_LOOP_ATT (RLCM_IOC_MAGIC +25) #define RLCM_INC_TX_POWER (RLCM_IOC_MAGIC +26) #define RLCM_TUNE_PERF (RLCM_IOC_MAGIC +27) #define RLCM_ENABLE_BIT_SWAP (RLCM_IOC_MAGIC +28) #define RLCM_DISABLE_BIT_SWAP (RLCM_IOC_MAGIC +29) #define RLCM_ENABLE_PILOT_RELOCATION (RLCM_IOC_MAGIC +30) #define RLCM_DISABLE_PILOT_RELOCATION (RLCM_IOC_MAGIC +31) #define RLCM_ENABLE_TRELLIS (RLCM_IOC_MAGIC +32) #define RLCM_DISABLE_TRELLIS (RLCM_IOC_MAGIC +33) #define RLCM_SET_VENDOR_ID (RLCM_IOC_MAGIC +34) #define RLCM_MODEM_READ_CONFIG (RLCM_IOC_MAGIC +35) #define RLCM_MODEM_WRITE_CONFIG (RLCM_IOC_MAGIC +36) #define RLCM_DEBUG_MODE (RLCM_IOC_MAGIC +37) #define RLCM_TEST_PSD (RLCM_IOC_MAGIC +38) #define RLCM_GET_ADSL_TIME (RLCM_IOC_MAGIC +39) #define RLCM_PHY_START_MODEM (RLCM_IOC_MAGIC +40) #define RLCM_ENABLE_ADSL_LOG (RLCM_IOC_MAGIC +41) #define RLCM_DISABLE_ADSL_LOG (RLCM_IOC_MAGIC +42) //added command #define RLCM_GET_VENDOR_ID (RLCM_IOC_MAGIC +43) #define RLCM_GET_TX_POWER (RLCM_IOC_MAGIC +44) #define RLCM_GET_PERF_VALUE (RLCM_IOC_MAGIC +45) #define RLCM_GET_15MIN_LOSS_DATA (RLCM_IOC_MAGIC +46) #define RLCM_GET_1DAY_LOSS_DATA (RLCM_IOC_MAGIC +47) #define RLCM_GET_CHANNEL_BITLOAD (RLCM_IOC_MAGIC +48) //for MIB TRAP set #define RLCM_GET_TRAP_THRESHOLD (RLCM_IOC_MAGIC +49) #define RLCM_SET_TRAP_THRESHOLD (RLCM_IOC_MAGIC +50) #define RLCM_15MIN_WAIT_TRAP (RLCM_IOC_MAGIC +51) //for ATM test #define RLCM_ENABLE_ATM_LOOPBACK (RLCM_IOC_MAGIC +52) #define RLCM_DISABLE_ATM_LOOPBACK (RLCM_IOC_MAGIC +53) #define RLCM_MSGMODE (RLCM_IOC_MAGIC +54) #define RLCM_CMD_API (RLCM_IOC_MAGIC +55) #define RLCM_GET_CURRENT_LOSS_DATA (RLCM_IOC_MAGIC +56) #define RLCM_GET_CHANNEL_BH (RLCM_IOC_MAGIC +57) #define RLCM_GET_TRAP_15MIN_LOSS_DATA (RLCM_IOC_MAGIC +58) #define RLCM_SEND_DYING_GASP (RLCM_IOC_MAGIC +59) #define RLCM_TEST_HW (RLCM_IOC_MAGIC +62) #define RLCM_SET_LOOPBACK (RLCM_IOC_MAGIC +63) #define RLCM_INIT_ADSL_MODE (RLCM_IOC_MAGIC +64) #define RLCM_ENABLE_POM_ACCESS (RLCM_IOC_MAGIC +65) #define RLCM_DISABLE_POM_ACCESS (RLCM_IOC_MAGIC +66) #define RLCM_MASK_TONE (RLCM_IOC_MAGIC +67) #define RLCM_GET_CAPABILITY (RLCM_IOC_MAGIC +68) #define RLCM_VERIFY_HW (RLCM_IOC_MAGIC +69) #define RLCM_TRIG_OLR_TYPE (RLCM_IOC_MAGIC +70) #define RLCM_TRIG_OLR_TYPE1 (RLCM_IOC_MAGIC +71) #define RLCM_ENABLE_AEQ (RLCM_IOC_MAGIC +72) #define RLCM_ENABLE_HPF (RLCM_IOC_MAGIC +73) #define RLCM_SET_HPF_FC (RLCM_IOC_MAGIC +74) // new_hibrid #define RLCM_SET_HYBRID (RLCM_IOC_MAGIC +75) #define RLCM_SET_RX_GAIN (RLCM_IOC_MAGIC +76) #define RLCM_SET_AFE_REG (RLCM_IOC_MAGIC +77) #define RLCM_SET_FOBASE (RLCM_IOC_MAGIC +78) //yaru + for webdata #define RLCM_SET_XDSL_MODE (RLCM_IOC_MAGIC +79) #define RLCM_GET_SHOWTIME_XDSL_MODE (RLCM_IOC_MAGIC +80) #define RLCM_GET_XDSL_MODE (RLCM_IOC_MAGIC +81) #define RLCM_SET_OLR_TYPE (RLCM_IOC_MAGIC +82) #define RLCM_GET_OLR_TYPE (RLCM_IOC_MAGIC +83) #define RLCM_GET_LINE_RATE (RLCM_IOC_MAGIC +84) #define RLCM_GET_DS_ERROR_COUNT (RLCM_IOC_MAGIC +85) #define RLCM_GET_US_ERROR_COUNT (RLCM_IOC_MAGIC +86) #define RLCM_GET_DIAG_QLN (RLCM_IOC_MAGIC +87) #define RLCM_GET_DIAG_HLOG (RLCM_IOC_MAGIC +88) #define RLCM_GET_DIAG_SNR (RLCM_IOC_MAGIC +89) #define RLCM_GET_DS_PMS_PARAM1 (RLCM_IOC_MAGIC +90) #define RLCM_GET_US_PMS_PARAM1 (RLCM_IOC_MAGIC +91) #define RLCM_SET_ANNEX_L (RLCM_IOC_MAGIC +92) #define RLCM_GET_ANNEX_L (RLCM_IOC_MAGIC +93) #define RLCM_GET_LINK_POWER_STATE (RLCM_IOC_MAGIC +94) #define RLCM_GET_ATT_RATE (RLCM_IOC_MAGIC +95) #define RLCM_LOADCARRIERMASK (RLCM_IOC_MAGIC +96) #define RLCM_SET_ANNEX_M (RLCM_IOC_MAGIC +97) #define RLCM_GET_ANNEX_M (RLCM_IOC_MAGIC +98) #define RLCM_SET_8671_REV (RLCM_IOC_MAGIC +99) #define RLCM_GET_8671_REV (RLCM_IOC_MAGIC +100) #define RLCM_SET_HIGH_INP (RLCM_IOC_MAGIC +101) #define RLCM_GET_HIGH_INP (RLCM_IOC_MAGIC +102) #define RLCM_GET_LD_STATE (RLCM_IOC_MAGIC +103) #define RLCM_SET_ANNEX_B (RLCM_IOC_MAGIC +104) #define RLCM_GET_ANNEX_B (RLCM_IOC_MAGIC +105) //for TR069 #define RLCM_GET_DSL_STAT_SHOWTIME (RLCM_IOC_MAGIC +106) #define RLCM_GET_DSL_STAT_TOTAL (RLCM_IOC_MAGIC +107) #define RLCM_GET_DSL_PSD (RLCM_IOC_MAGIC +108) #define RLCM_GET_DSL_ORHERS (RLCM_IOC_MAGIC +109) #define RLCM_GET_DSL_GI (RLCM_IOC_MAGIC +110) // for Telefonica #define RLCM_SET_ADSL_LAST_OPMode (RLCM_IOC_MAGIC +111) #define RLCM_SET_ADSL_PMS_CONFIG (RLCM_IOC_MAGIC +112) //Lupin, for TR069 #define RLCM_GET_ADSL2WAN_IFCFG (RLCM_IOC_MAGIC +113) #define RLCM_ENABLE_DIAGNOSTIC (RLCM_IOC_MAGIC +114) #ifdef FIELD_TRY_SAFE_MODE #define RLCM_GET_SAFEMODE_CTRL (RLCM_IOC_MAGIC +115) #define RLCM_SET_SAFEMODE_CTRL (RLCM_IOC_MAGIC +116) #endif // Mason Yu. For CurrentDay and QuarterHour. #define RLCM_GET_DSL_STAT_15MIN (RLCM_IOC_MAGIC +117) #define RLCM_GET_DSL_STAT_1DAY (RLCM_IOC_MAGIC +118) #define RLCM_WEB_SET_USPSD (RLCM_IOC_MAGIC +154) #define RLCM_GET_INIT_COUNT_LAST_LINK_RATE (RLCM_IOC_MAGIC +155) #define RLCM_ENABLE_NODROPLINEFLAG (RLCM_IOC_MAGIC +156) #define RLCM_DISABLE_NODROPLINEFLAG (RLCM_IOC_MAGIC +157) #define RLCM_SET_D_CONFIG (RLCM_IOC_MAGIC +158) #define RLCM_GET_DSL_STAT_LAST_SHOWTIME (RLCM_IOC_MAGIC +159) #define RLCM_GET_DSL_STAT_SHOWTIME_REV1P4 (RLCM_IOC_MAGIC +160) #define RLCM_GET_DSL_STAT_TOTAL_REV1P4 (RLCM_IOC_MAGIC +161) #define RLCM_GET_DSL_STAT_LAST_SHOWTIME_REV1P4 (RLCM_IOC_MAGIC +162) #define RLCM_GET_DSL_STAT_15MIN_REV1P4 (RLCM_IOC_MAGIC +163) #define RLCM_GET_DSL_STAT_1DAY_REV1P4 (RLCM_IOC_MAGIC +164) #define RLCM_GET_DSL_STAT_FLAG_LOF (RLCM_IOC_MAGIC +165) #define RLCM_GET_FRAME_COUNT (RLCM_IOC_MAGIC +166) #define RLCM_DBG_DATA (RLCM_IOC_MAGIC +167) #define RLCM_SET_DSL_FUNC (RLCM_IOC_MAGIC +168) #define RLCM_GET_DSL_STAT_PRE_15MIN (RLCM_IOC_MAGIC +180) #define RLCM_GET_CHANNEL_TABLE (RLCM_IOC_MAGIC +190) // Mason Yu. 20130207 #define RLCM_GET_PREV1DAY_LOSS_DATA (RLCM_IOC_MAGIC +200) #define RLCM_GET_ANY_15MIN_LOSS_DATA (RLCM_IOC_MAGIC +201) #define RLCM_GET_ADSLLINE_ENABLED (RLCM_IOC_MAGIC +202) #define RLCM_SET_ADSLLINE_ENABLED (RLCM_IOC_MAGIC +203) #define RLCM_GET_ADSLLINE_CAP_ACT (RLCM_IOC_MAGIC +204) #define RLCM_GET_ADSLLINE_MODE_CAP (RLCM_IOC_MAGIC +205) #define RLCM_GET_ADSLLINE_MODE_ACT (RLCM_IOC_MAGIC +206) #define RLCM_DEBUG_DATA (RLCM_IOC_MAGIC +111+1000) #define RLCM_GET_VDSL2_MREFPSD_DS (RLCM_IOC_MAGIC +114+1000) #define RLCM_GET_VDSL2_TXREFVNPSD_DS (RLCM_IOC_MAGIC +115+1000) #define RLCM_GET_VDSL2_MREFPSD_US (RLCM_IOC_MAGIC +116+1000) #define RLCM_GET_VDSL2_TXREFVNPSD_US (RLCM_IOC_MAGIC +117+1000) #define RLCM_GET_ADSL_DIAG_HLIN (RLCM_IOC_MAGIC +118+1000) #define RLCM_GET_ADSL_DIAG_GI (RLCM_IOC_MAGIC +119+1000) #define RLCM_GET_ADSL_DIAG_BI (RLCM_IOC_MAGIC +120+1000) #define RLCM_GET_ADSL_DIAG_OTHER (RLCM_IOC_MAGIC +121+1000) #define RLCM_GET_VDSL2_DIAG_QLN (RLCM_IOC_MAGIC +122+1000) #define RLCM_GET_VDSL2_DIAG_HLOG (RLCM_IOC_MAGIC +123+1000) #define RLCM_GET_VDSL2_DIAG_SNR (RLCM_IOC_MAGIC +124+1000) #define RLCM_GET_VDSL2_DIAG_HLIN (RLCM_IOC_MAGIC +125+1000) #define RLCM_GET_VDSL2_DIAG_HLIN_SCALE (RLCM_IOC_MAGIC +126+1000) #define RLCM_GET_VDSL2_DIAG_OTHER (RLCM_IOC_MAGIC +127+1000) #define RLCM_GET_VDSL2_DS_PMS_PARAM1 (RLCM_IOC_MAGIC +128+1000) #define RLCM_GET_VDSL2_US_PMS_PARAM1 (RLCM_IOC_MAGIC +129+1000) #define RLCM_GET_VDSL2_SNR_MARGIN (RLCM_IOC_MAGIC +130+1000) #define RLCM_GET_VDSL2_LOOP_ATT (RLCM_IOC_MAGIC +131+1000) #define RLCM_GET_VDSL2_CHANNEL_SNR (RLCM_IOC_MAGIC +132+1000) #define RLCM_GET_VDSL2_CHANNEL_BITLOAD (RLCM_IOC_MAGIC +133+1000) #define RLCM_WANBonderDSLConfig_Enable (RLCM_IOC_MAGIC +137+1000) #define RLCM_WANBonderDSLConfig_Status (RLCM_IOC_MAGIC +138+1000) #define RLCM_WANBonderDSLConfig_GroupBondScheme (RLCM_IOC_MAGIC +139+1000) #define RLCM_WANBonderDSLConfig_GroupCapacity (RLCM_IOC_MAGIC +140+1000) #define RLCM_WANBonderDSLConfig_aGroupTargetUpRate (RLCM_IOC_MAGIC +141+1000) #define RLCM_WANBonderDSLConfig_aGroupTargetDownRate (RLCM_IOC_MAGIC +142+1000) #define RLCM_WANConfig_LineNumber (RLCM_IOC_MAGIC +143+1000) #define RLCM_UserGetDslData (RLCM_IOC_MAGIC +144+1000) #define RLCM_UserSetDslData (RLCM_IOC_MAGIC +145+1000) #define RLCM_INIT_ATMSAR (RLCM_IOC_MAGIC +146+1000) #define RLCM_INIT_PTMMAC (RLCM_IOC_MAGIC +147+1000) #define OWNBYCPU 0 #define OWNBYDSL 1 #define VLAN_HLEN 4 #define VLAN_ETH_ALEN 6 #define CH_UNUSE 0 #define CH_SETTING 1 #define CH_USED 2 #if defined(ERB_DEBUG) extern void dump_ctrlp(ctrl_pkt_t * p); extern void dump_rxbuf(unsigned char * b, int l); #endif #if 0 #ifdef _LITTLE_ENDIAN #define ntohs(x) (swaps16(x)) #define ntohl(x) (swapl32(x)) #define htons(x) (swaps16(x)) #define htonl(x) (swapl32(x)) #else #define ntohs(x) (x) #define ntohl(x) (x) #define htons(x) (x) #define htonl(x) (x) #endif #endif #endif /* __XDSL_CTRL_H__ */