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