| /******************************************************************************/ |
| /* */ |
| /* 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 |