📄 base_comm.h
字号:
/***************************************************************************** ***************************************************************************** Copyright (c) 1999-2000, Intel Corporation All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. 3. Neither the name of Intel Corporation nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. *********************************************************************************************************************************************************//*********************************************************************** ** INTEL CORPORATION ** ** This software is supplied under the terms of the license included ** above. All use of this driver must be in accordance with the terms ** of that license. ** ** Module Name: base_comm.h ** ** Abstract: iANS to base communication defines ** ** Environment: ** ***********************************************************************/#ifndef _IANS_BASE_COMM_H#define _IANS_BASE_COMM_H#include <linux/sockios.h> /* for SIOCDEVPRIVATE */#define UINT16 unsigned short#define UINT32 unsigned long#define UCHAR unsigned char/* Make sure all communications parties use the same packing mode * for the shared structures. */#pragma pack(4)#ifdef _IANS_MAIN_MODULE_C_#define IntOrExt#else#define IntOrExt extern#endif/*--------------------------------------------------------------------* | PRIMITIVES baring iANS communications | ===================================== *--------------------------------------------------------------------*//* The proprietary iANS IOCTL code */#define IANS_BASE_SIOC (SIOCDEVPRIVATE+1)/* The proprietary event notifications code */#define IANS_BASE_NOTIFY (('S'<<24)|('N'<<16)|('A'<<8)|('i')) /* "iANS" *//*------------------------------------------------------------------*| Communication version : | this is the version of the communication protocol described in | this header file. | This information will be passed in the IANS_BD_IDENTIFY ioctl *------------------------------------------------------------------*//* iANS's communications version */#define IANS_COMM_VERSION_MAJOR (UINT16)1#define IANS_COMM_VERSION_MINOR (UINT16)0/* Base driver's version */ #define IANS_BD_COMM_VERSION_MAJOR (UINT16)1#define IANS_BD_COMM_VERSION_MINOR (UINT16)0#define IANS_SIGNATURE_LENGTH 80IntOrExt char IntelCopyrightString[IANS_SIGNATURE_LENGTH]#ifdef _IANS_MAIN_MODULE_C_= "Intel Copyright 1999, all rights reserved\n";#else;#endif/* ================================================================== * * * * IOCTLs * * * * ================================================================== *//*--------------------------------------------------------------------* | Proprietary Opcodes *--------------------------------------------------------------------*/typedef enum _IANS_BASE_OPCODE{ /* ---------- Basic Extension Commands ---------- */ IANS_OP_BD_IDENTIFY, /* Identify BD to make sure it supports iANS comm.*/ /* BD fills Struct: IANS_BD_PARAM_IDENTIFY */ IANS_OP_BD_DISCONNECT, /* Tell the BD that iANS is about to unload */ IANS_OP_EXT_GET_CAPABILITY, /* Get extended capabilities */ /* BD fills struct: _IANS_BD_PARAM_EXT_CAP */ IANS_OP_EXT_SET_MODE, /* Set extended capabilities */ /* iANS fills struct: _IANS_BD_PARAM_EXT_SET_MODE */ IANS_OP_EXT_GET_STATUS, /* Get status from base driver */ /* BD fills status struct: IANS_BD_IOC_PARAM_STATUS */ IANS_OP_ANS_SET_CB, /* pass ans function's pointers to base */#ifdef IANS_BASE_ADAPTER_TEAMING /* ---------- Adapter Teaming Commands ---------- */ IANS_OP_IAT_FIRST=0x0100, /* Skip over reserved area */ /* There are no commands specific to adapter teaming */ /* Capabilities are included in "Extended capabilities" */#endif /* IANS_BASE_ADAPTER_TEAMING */#ifdef IANS_BASE_VLAN_TAGGING /* ---------- VLan Tagging Commands ---------- */ IANS_OP_ITAG_FIRST=0x0200, /* Skip over reserved area */ IANS_OP_ITAG_GET_CAPABILITY, /* Get tagging capabilities */ /* BD fills struct: IANS_BD_PARAM_ITAG_CAP */ IANS_OP_ITAG_SET_MODE, /* None/ISL/802.3ac */ /* IANS fills struct: IANS_BD_PARAM_ITAG_SET_MODE */#endif /* IANS_BASE_VLAN_TAGGING */#ifdef IANS_BASE_VLAN_ID /* ---------- VLan ID Commands ---------- */ IANS_OP_IVLAN_ID_FIRST=0x0300, /* Skip over reserved area */ IANS_OP_IVLAN_ID_GET_CAPABILITY, /* Get VLan ID capabilities */ /* BD fills struct: IANS_BD_PARAM_IVLAN_CAP */ IANS_OP_IVLAN_ID_SET_MODE, /* Set Vlan ID mode */ /* iANS fills struct: IANS_BD_PARAM_IVLAN_SET_MODE*/ IANS_OP_IVLAN_ID_SET_TABLE, /* ID list */ /* iANS fills struct: IANS_BD_PARAM_IVLAN_TABLE */#endif /* IANS_BASE_VLAN_ID */ /* ---------- */ IANS_OP_COMMA /* Dummy to satisfy last ifdef'ed commma */} IANS_BASE_OPCODE, *PIANS_BASE_OPCODE;/*--------------------------------------------------------------------* | Enumerated types for field values *--------------------------------------------------------------------*//*--------------------------------------------------------------------* | Enumerated types for Status struct field values *--------------------------------------------------------------------* | In every field, if a base driver doesn't support a valid indication | on that field it should set it to zero. This value was picked in | every enumerated type to denote "not supported" value. *--------------------------------------------------------------------*//* Used in IANS_BD_PARAM_STATUS.LinkStatus */typedef enum _IANS_BD_LINK_STATUS { IANS_STATUS_LINK_NOT_SUPPORTED = 0, IANS_STATUS_LINK_OK, IANS_STATUS_LINK_FAIL} IANS_BD_LINK_STATUS, *PIANS_BD_LINK_STATUS;/* Used in IANS_BD_PARAM_STATUS.Duplex */typedef enum _IANS_BD_DUPLEX_STATUS { IANS_STATUS_DUPLEX_NOT_SUPPORTED = 0, IANS_STATUS_DUPLEX_HALF, IANS_STATUS_DUPLEX_FULL} IANS_BD_DUPLEX_STATUS, *PIANS_BD_DUPLEX_STATUS;/* Used in IANS_BD_PARAM_STATUS.LinkSpeed */typedef enum _IANS_BD_LINK_SPEED { IANS_STATUS_LINK_SPEED_NOT_SUPPORTED = 0, IANS_STATUS_LINK_SPEED_1MBPS = 0x1, IANS_STATUS_LINK_SPEED_10MBPS = 0x2, IANS_STATUS_LINK_SPEED_100MBPS = 0x4, IANS_STATUS_LINK_SPEED_1000MBPS = 0x8}IANS_BD_LINK_SPEED, *PIANS_BD_LINK_SPEED;/* Used in IANS_BD_PARAM_STATUS.HardwareFailure */typedef enum _IANS_BD_HW_STATUS { IANS_STATUS_HARDWARE_NOT_SUPPORTED = 0, IANS_STATUS_HARDWARE_OK, IANS_STATUS_HARDWARE_FAILURE} IANS_BD_HW_STATUS, *PIANS_BD_HW_STATUS;/* Used in IANS_BD_PARAM_STATUS.DuringResetProcess */typedef enum _IANS_BD_RESET_STAGE { IANS_STATUS_RESET_NOT_SUPPORTED =0, IANS_STATUS_NOT_DURING_RESET, IANS_STATUS_DURING_RESET} IANS_BD_RESET_STAGE, *PIANS_BD_RESET_STAGE;/* Used in IANS_BD_PARAM_STATUS.Suspended */typedef enum _IANS_BD_SUSPENDED_STAGE { IANS_STATUS_SUSPENDED_NOT_SUPPORTED =0, IANS_STATUS_NOT_SUSPENDED, IANS_STATUS_SUSPENDED} IANS_BD_SUSPENDED_STAGE, *PIANS_BD_SUSPENDED_STAGE;/* Rx and event notification routing mechanisms (bitmask ready) */typedef enum _IANS_BD_ROUTING { IANS_ROUTING_NOT_SUPPORTED = 0x00, IANS_ROUTING_RX_PROTOCOL = 0x01,} IANS_BD_ROUTING, *PIANS_BD_ROUTING;typedef enum _IANS_BD_HOT_PLUG_STATUS { IANS_STATUS_HOT_PLUG_NOT_SUPPORTED = 0, IANS_STATUS_HOT_PLUG_NOT_DONE, IANS_STATUS_HOT_PLUG_WAS_DONE} IANS_BD_HOT_PLUG_STATUS, *PIANS_BD_HOT_PLUG_STATUS;/*--------------------------------------------------------------------* | Enumerated types for general structs field values *--------------------------------------------------------------------*//* general typedef for various features - whether BD supports a feature or not. To be used on "capabilites" structs */typedef enum _IANS_BD_SUPPORT { IANS_BD_DOES_NOT_SUPPORT = 0, IANS_BD_SUPPORTS} IANS_BD_SUPPORT, *PIANS_BD_SUPPORT;/* general typedef for various features - whether iANS requests the BD to support a feature or not. To be used on "set mode" structs. */typedef enum _IANS_BD_REQUEST_SUPPORT { IANS_DONT_SUPPORT = 0, IANS_REQUEST_SUPPORT} IANS_BD_REQUEST_SUPPORT, *PIANS_BD_REQUEST_SUPPORT;/*--------------------------------------------------------------------* | Ioctl parameter structs | ======================= | The following structures are used by the different IOCTLs to pass | parameters between the Base driver and iANS. *--------------------------------------------------------------------*//*--------------------------------------------------------------------* | Common Command/Parameter Header | =============================== | The 1st field of every parameter struct. *--------------------------------------------------------------------*/typedef struct _IANS_BD_PARAM_HEADER{ // Cast from IANS_BASE_OPCODE to insure forward size compatibility /* UINT32 */ int Opcode; } IANS_BD_PARAM_HEADER, *PIANS_BD_PARAM_HEADER;/*--------------------------------------------------------------------* | Status result | ============= | This struct is sent with as a response to GET_STATUS request. | The status struct contains a version number : in case we will wish to | extend the status result, we will need a way to indicate which | version of the status struct we support. *--------------------------------------------------------------------*/#define IANS_STATUS_VERSION 0x00000001typedef struct _IANS_BD_PARAM_STATUS{ UINT32 StatusVersion; /* The version of this struct */ UINT32 LinkStatus; /* Cast from IANS_BD_LINK_STATUS */ UINT32 LinkSpeed; /* Cast from IANS_BD_LINK_SPEED */ UINT32 Duplex; /* Cast from IANS_BD_DUPLEX_STATUS */ UINT32 HardwareFailure; /* Cast from IANS_BD_HW_FAILURE */ UINT32 DuringResetProcess; /* Cast from IANS_BD_RESET_STAGE */ UINT32 Suspended; /* Cast from IANS_BD_SUSPENDED_STAGE */ UINT32 HotPlug; /* Cast from IANS_BD_HOT_PLUG_STATUS */} IANS_BD_PARAM_STATUS, *PIANS_BD_PARAM_STATUS;/*--------------------------------------------------------------------* | Status ioctl result | =================== | This structure is the struct sent as a response to the GET_STATUS | request ioctl. It contains the ioctl header, and the status struct. *--------------------------------------------------------------------*/typedef struct _IANS_BD_IOC_PARAM_STATUS{ IANS_BD_PARAM_HEADER Header; /* Common to all commands */ IANS_BD_PARAM_STATUS Status;} IANS_BD_IOC_PARAM_STATUS, *PIANS_BD_IOC_PARAM_STATUS;/*--------------------------------------------------------------------* | Identify yourself struct | ======================== | This struct is sent with the IANS_BD_IDENTIFY request. | iANS fills its signature string and version number, and sends it to | the base driver. The base driver fills its own signature string and | version adn returns it. *--------------------------------------------------------------------*/typedef struct _IANS_BD_PARAM_IDENTIFY{ IANS_BD_PARAM_HEADER Header; /* Common to all commands */ UCHAR iANSSignature[IANS_SIGNATURE_LENGTH]; /* iANS fills copyright string*/ UCHAR BDSignature[IANS_SIGNATURE_LENGTH]; /* BD fills copyright string*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -