/drivers/staging/bcm/Adapter.h
C++ Header | 648 lines | 487 code | 100 blank | 61 comment | 0 complexity | ee0f007714700fc26232238be0e30bc1 MD5 | raw file
Possible License(s): GPL-2.0, LGPL-2.0, AGPL-1.0
- /***********************************
- * Adapter.h
- ************************************/
- #ifndef __ADAPTER_H__
- #define __ADAPTER_H__
- #define MAX_FRAGMENTEDIP_CLASSIFICATION_ENTRIES 256
- #include "Debug.h"
- struct _LEADER
- {
- USHORT Vcid;
- USHORT PLength;
- UCHAR Status;
- UCHAR Unused[3];
- }__attribute__((packed));
- typedef struct _LEADER LEADER,*PLEADER;
- struct _PACKETTOSEND
- {
- LEADER Leader;
- UCHAR ucPayload;
- }__attribute__((packed));
- typedef struct _PACKETTOSEND PACKETTOSEND, *PPACKETTOSEND;
- struct _CONTROL_PACKET
- {
- PVOID ControlBuff;
- UINT ControlBuffLen;
- struct _CONTROL_PACKET* next;
- }__attribute__((packed));
- typedef struct _CONTROL_PACKET CONTROL_PACKET,*PCONTROL_PACKET;
- struct link_request
- {
- LEADER Leader;
- UCHAR szData[4];
- }__attribute__((packed));
- typedef struct link_request LINK_REQUEST, *PLINK_REQUEST;
- //classification extension is added
- typedef struct _ADD_CONNECTION
- {
- ULONG SrcIpAddressCount;
- ULONG SrcIpAddress[MAX_CONNECTIONS];
- ULONG SrcIpMask[MAX_CONNECTIONS];
- ULONG DestIpAddressCount;
- ULONG DestIpAddress[MAX_CONNECTIONS];
- ULONG DestIpMask[MAX_CONNECTIONS];
- USHORT SrcPortBegin;
- USHORT SrcPortEnd;
- USHORT DestPortBegin;
- USHORT DestPortEnd;
- UCHAR SrcTOS;
- UCHAR SrcProtocol;
- } ADD_CONNECTION,*PADD_CONNECTION;
- typedef struct _CLASSIFICATION_RULE
- {
- UCHAR ucIPSrcAddrLen;
- UCHAR ucIPSrcAddr[32];
- UCHAR ucIPDestAddrLen;
- UCHAR ucIPDestAddr[32];
- UCHAR ucSrcPortRangeLen;
- UCHAR ucSrcPortRange[4];
- UCHAR ucDestPortRangeLen;
- UCHAR ucDestPortRange[4];
- USHORT usVcid;
- } CLASSIFICATION_RULE,*PCLASSIFICATION_RULE;
- typedef struct _CLASSIFICATION_ONLY
- {
- USHORT usVcid;
- ULONG DestIpAddress;
- ULONG DestIpMask;
- USHORT usPortLo;
- USHORT usPortHi;
- BOOLEAN bIpVersion;
- UCHAR ucDestinationAddress[16];
- } CLASSIFICATION_ONLY, *PCLASSIFICATION_ONLY;
- #define MAX_IP_RANGE_LENGTH 4
- #define MAX_PORT_RANGE 4
- #define MAX_PROTOCOL_LENGTH 32
- #define IPV6_ADDRESS_SIZEINBYTES 0x10
- typedef union _U_IP_ADDRESS
- {
- struct
- {
- ULONG ulIpv4Addr[MAX_IP_RANGE_LENGTH];//Source Ip Address Range
- ULONG ulIpv4Mask[MAX_IP_RANGE_LENGTH];//Source Ip Mask Address Range
- };
- struct
- {
- ULONG ulIpv6Addr[MAX_IP_RANGE_LENGTH * 4];//Source Ip Address Range
- ULONG ulIpv6Mask[MAX_IP_RANGE_LENGTH * 4];//Source Ip Mask Address Range
- };
- struct
- {
- UCHAR ucIpv4Address[MAX_IP_RANGE_LENGTH * IP_LENGTH_OF_ADDRESS];
- UCHAR ucIpv4Mask[MAX_IP_RANGE_LENGTH * IP_LENGTH_OF_ADDRESS];
- };
- struct
- {
- UCHAR ucIpv6Address[MAX_IP_RANGE_LENGTH * IPV6_ADDRESS_SIZEINBYTES];
- UCHAR ucIpv6Mask[MAX_IP_RANGE_LENGTH * IPV6_ADDRESS_SIZEINBYTES];
- };
- }U_IP_ADDRESS;
- struct _packet_info;
- typedef struct _S_HDR_SUPRESSION_CONTEXTINFO
- {
- UCHAR ucaHdrSupressionInBuf[MAX_PHS_LENGTHS]; //Intermediate buffer to accumulate pkt Header for PHS
- UCHAR ucaHdrSupressionOutBuf[MAX_PHS_LENGTHS + PHSI_LEN]; //Intermediate buffer containing pkt Header after PHS
- }S_HDR_SUPRESSION_CONTEXTINFO;
- typedef struct _S_CLASSIFIER_RULE
- {
- ULONG ulSFID;
- UCHAR ucReserved[2];
- B_UINT16 uiClassifierRuleIndex;
- BOOLEAN bUsed;
- USHORT usVCID_Value;
- B_UINT8 u8ClassifierRulePriority; //This field detemines the Classifier Priority
- U_IP_ADDRESS stSrcIpAddress;
- UCHAR ucIPSourceAddressLength;//Ip Source Address Length
- U_IP_ADDRESS stDestIpAddress;
- UCHAR ucIPDestinationAddressLength;//Ip Destination Address Length
- UCHAR ucIPTypeOfServiceLength;//Type of service Length
- UCHAR ucTosLow;//Tos Low
- UCHAR ucTosHigh;//Tos High
- UCHAR ucTosMask;//Tos Mask
- UCHAR ucProtocolLength;//protocol Length
- UCHAR ucProtocol[MAX_PROTOCOL_LENGTH];//protocol Length
- USHORT usSrcPortRangeLo[MAX_PORT_RANGE];
- USHORT usSrcPortRangeHi[MAX_PORT_RANGE];
- UCHAR ucSrcPortRangeLength;
- USHORT usDestPortRangeLo[MAX_PORT_RANGE];
- USHORT usDestPortRangeHi[MAX_PORT_RANGE];
- UCHAR ucDestPortRangeLength;
- BOOLEAN bProtocolValid;
- BOOLEAN bTOSValid;
- BOOLEAN bDestIpValid;
- BOOLEAN bSrcIpValid;
- //For IPv6 Addressing
- UCHAR ucDirection;
- BOOLEAN bIpv6Protocol;
- UINT32 u32PHSRuleID;
- S_PHS_RULE sPhsRule;
- UCHAR u8AssociatedPHSI;
- //Classification fields for ETH CS
- UCHAR ucEthCSSrcMACLen;
- UCHAR au8EThCSSrcMAC[MAC_ADDRESS_SIZE];
- UCHAR au8EThCSSrcMACMask[MAC_ADDRESS_SIZE];
- UCHAR ucEthCSDestMACLen;
- UCHAR au8EThCSDestMAC[MAC_ADDRESS_SIZE];
- UCHAR au8EThCSDestMACMask[MAC_ADDRESS_SIZE];
- UCHAR ucEtherTypeLen;
- UCHAR au8EthCSEtherType[NUM_ETHERTYPE_BYTES];
- UCHAR usUserPriority[2];
- USHORT usVLANID;
- USHORT usValidityBitMap;
- }S_CLASSIFIER_RULE;
- //typedef struct _S_CLASSIFIER_RULE S_CLASSIFIER_RULE;
- typedef struct _S_FRAGMENTED_PACKET_INFO
- {
- BOOLEAN bUsed;
- ULONG ulSrcIpAddress;
- USHORT usIpIdentification;
- S_CLASSIFIER_RULE *pstMatchedClassifierEntry;
- BOOLEAN bOutOfOrderFragment;
- }S_FRAGMENTED_PACKET_INFO,*PS_FRAGMENTED_PACKET_INFO;
- struct _packet_info
- {
- //classification extension Rule
- ULONG ulSFID;
- USHORT usVCID_Value;
- UINT uiThreshold;
- // This field determines the priority of the SF Queues
- B_UINT8 u8TrafficPriority;
- BOOLEAN bValid;
- BOOLEAN bActive;
- BOOLEAN bActivateRequestSent;
- B_UINT8 u8QueueType;//BE or rtPS
- UINT uiMaxBucketSize;//maximum size of the bucket for the queue
- UINT uiCurrentQueueDepthOnTarget;
- UINT uiCurrentBytesOnHost;
- UINT uiCurrentPacketsOnHost;
- UINT uiDroppedCountBytes;
- UINT uiDroppedCountPackets;
- UINT uiSentBytes;
- UINT uiSentPackets;
- UINT uiCurrentDrainRate;
- UINT uiThisPeriodSentBytes;
- LARGE_INTEGER liDrainCalculated;
- UINT uiCurrentTokenCount;
- LARGE_INTEGER liLastUpdateTokenAt;
- UINT uiMaxAllowedRate;
- UINT NumOfPacketsSent;
- UCHAR ucDirection;
- USHORT usCID;
- S_MIBS_EXTSERVICEFLOW_PARAMETERS stMibsExtServiceFlowTable;
- UINT uiCurrentRxRate;
- UINT uiThisPeriodRxBytes;
- UINT uiTotalRxBytes;
- UINT uiTotalTxBytes;
- UINT uiPendedLast;
- UCHAR ucIpVersion;
- union
- {
- struct
- {
- struct sk_buff* FirstTxQueue;
- struct sk_buff* LastTxQueue;
- };
- struct
- {
- struct sk_buff* ControlHead;
- struct sk_buff* ControlTail;
- };
- };
-