/******************************************************************************/ /* */ /* bypass library, Copyright (c) 2004-2006 Silicom, Ltd */ /* Corporation. */ /* */ /* 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, located in the file LICENSE. */ /* */ /* */ /* */ /******************************************************************************/ #ifndef BP_IOCTL_H #define BP_IOCTL_H #define BP_CAP 0x01 //BIT_0 #define BP_STATUS_CAP 0x02 //BIT_1 #define BP_STATUS_CHANGE_CAP 0x04 //BIT_2 #define SW_CTL_CAP 0x08 //BIT_3 #define BP_DIS_CAP 0x10 //BIT_4 #define BP_DIS_STATUS_CAP 0x20 //BIT_5 #define STD_NIC_CAP 0x40 //BIT_6 #define BP_PWOFF_ON_CAP 0x80 //BIT_7 #define BP_PWOFF_OFF_CAP 0x0100 //BIT_8 #define BP_PWOFF_CTL_CAP 0x0200 //BIT_9 #define BP_PWUP_ON_CAP 0x0400 //BIT_10 #define BP_PWUP_OFF_CAP 0x0800 //BIT_11 #define BP_PWUP_CTL_CAP 0x1000 //BIT_12 #define WD_CTL_CAP 0x2000 //BIT_13 #define WD_STATUS_CAP 0x4000 //BIT_14 #define WD_TIMEOUT_CAP 0x8000 //BIT_15 #define TX_CTL_CAP 0x10000 //BIT_16 #define TX_STATUS_CAP 0x20000 //BIT_17 #define TAP_CAP 0x40000 //BIT_18 #define TAP_STATUS_CAP 0x80000 //BIT_19 #define TAP_STATUS_CHANGE_CAP 0x100000 //BIT_20 #define TAP_DIS_CAP 0x200000 //BIT_21 #define TAP_DIS_STATUS_CAP 0x400000 //BIT_22 #define TAP_PWUP_ON_CAP 0x800000 //BIT_23 #define TAP_PWUP_OFF_CAP 0x1000000 //BIT 24 #define TAP_PWUP_CTL_CAP 0x2000000 //BIT 25 #define NIC_CAP_NEG 0x4000000 //BIT 26 #define TPL_CAP 0x8000000 //BIT 27 #define DISC_CAP 0x10000000 //BIT 28 #define DISC_DIS_CAP 0x20000000 //BIT 29 #define DISC_PWUP_CTL_CAP 0x40000000 //BIT 30 #define WD_MIN_TIME_MASK(val) (val & 0xf) #define WD_STEP_COUNT_MASK(val) ((val & 0xf) << 5) #define WDT_STEP_TIME 0x10 //BIT_4 #define WD_MIN_TIME_GET(desc) (desc & 0xf) #define WD_STEP_COUNT_GET(desc) (desc>>5) & 0xf typedef enum { IS_BYPASS = 1, GET_BYPASS_SLAVE, GET_BYPASS_CAPS, GET_WD_SET_CAPS, SET_BYPASS, GET_BYPASS, GET_BYPASS_CHANGE, SET_BYPASS_WD, GET_BYPASS_WD, GET_WD_EXPIRE_TIME, RESET_BYPASS_WD_TIMER, SET_DIS_BYPASS, GET_DIS_BYPASS, SET_BYPASS_PWOFF, GET_BYPASS_PWOFF, SET_BYPASS_PWUP, GET_BYPASS_PWUP, SET_STD_NIC, GET_STD_NIC, SET_TX, GET_TX, SET_TAP, GET_TAP, GET_TAP_CHANGE, SET_DIS_TAP, GET_DIS_TAP, SET_TAP_PWUP, GET_TAP_PWUP, SET_WD_EXP_MODE, GET_WD_EXP_MODE, SET_WD_AUTORESET, GET_WD_AUTORESET, SET_TPL, GET_TPL, SET_DISC, GET_DISC, GET_DISC_CHANGE, SET_DIS_DISC, GET_DIS_DISC, SET_DISC_PWUP, GET_DISC_PWUP, GET_BYPASS_INFO = 100, GET_BP_WAIT_AT_PWUP, SET_BP_WAIT_AT_PWUP, GET_BP_HW_RESET, SET_BP_HW_RESET, } CMND_TYPE; typedef enum { IF_SCAN_SD, GET_DEV_NUM_SD, IS_BYPASS_SD, GET_BYPASS_SLAVE_SD, GET_BYPASS_CAPS_SD, GET_WD_SET_CAPS_SD, SET_BYPASS_SD, GET_BYPASS_SD, GET_BYPASS_CHANGE_SD, SET_BYPASS_WD_SD, GET_BYPASS_WD_SD, GET_WD_EXPIRE_TIME_SD, RESET_BYPASS_WD_TIMER_SD, SET_DIS_BYPASS_SD, GET_DIS_BYPASS_SD, SET_BYPASS_PWOFF_SD, GET_BYPASS_PWOFF_SD, SET_BYPASS_PWUP_SD, GET_BYPASS_PWUP_SD, SET_STD_NIC_SD, GET_STD_NIC_SD, SET_TX_SD, GET_TX_SD, SET_TAP_SD, GET_TAP_SD, GET_TAP_CHANGE_SD, SET_DIS_TAP_SD, GET_DIS_TAP_SD, SET_TAP_PWUP_SD, GET_TAP_PWUP_SD, SET_WD_EXP_MODE_SD, GET_WD_EXP_MODE_SD, SET_WD_AUTORESET_SD, GET_WD_AUTORESET_SD, SET_TPL_SD, GET_TPL_SD, SET_DISC_SD, GET_DISC_SD, GET_DISC_CHANGE_SD, SET_DIS_DISC_SD, GET_DIS_DISC_SD, SET_DISC_PWUP_SD, GET_DISC_PWUP_SD, GET_BYPASS_INFO_SD = 100, GET_BP_WAIT_AT_PWUP_SD, SET_BP_WAIT_AT_PWUP_SD, GET_BP_HW_RESET_SD, SET_BP_HW_RESET_SD, } CMND_TYPE_SD; #define SIOCGIFBYPASS SIOCDEVPRIVATE+10 struct bp_info { char prod_name[14]; unsigned char fw_ver; }; /* for passing single values */ struct if_bypass { char if_name[IFNAMSIZ]; int cmd; int data; }; struct if_bypass_info { char if_name[IFNAMSIZ]; char cmd; struct bp_info bp_info; }; /* * The major device number. We can't rely on dynamic * registration any more, because ioctls need to know * it. */ #define MAGIC_NUM 'J' /* for passing single values */ struct bpctl_cmd { int status; int data[8]; int in_param[8]; int out_param[8]; }; #define IOCTL_TX_MSG(cmd) _IOWR(MAGIC_NUM, cmd, struct bpctl_cmd) #define DEVICE_NAME "bpctl" #endif