blob: f17a4f13474c3904d605e405da096a4ec10faee6 [file] [log] [blame]
#ifndef _HOST_MIBSINTERFACE_H
#define _HOST_MIBSINTERFACE_H
/*
* Copyright (c) 2007 Beceem Communications Pvt. Ltd
* File Name: HostMIBSInterface.h
* Abstract: This file contains DS used by the Host to update the Host
* statistics used for the MIBS.
*/
#define MIBS_MAX_CLASSIFIERS 100
#define MIBS_MAX_PHSRULES 100
#define MIBS_MAX_SERVICEFLOWS 17
#define MIBS_MAX_IP_RANGE_LENGTH 4
#define MIBS_MAX_PORT_RANGE 4
#define MIBS_MAX_PROTOCOL_LENGTH 32
#define MIBS_MAX_PHS_LENGTHS 255
#define MIBS_IPV6_ADDRESS_SIZEINBYTES 0x10
#define MIBS_IP_LENGTH_OF_ADDRESS 4
#define MIBS_MAX_HIST_ENTRIES 12
#define MIBS_PKTSIZEHIST_RANGE 128
typedef union _U_MIBS_IP_ADDRESS
{
struct
{
//Source Ip Address Range
ULONG ulIpv4Addr[MIBS_MAX_IP_RANGE_LENGTH];
//Source Ip Mask Address Range
ULONG ulIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH];
};
struct
{
//Source Ip Address Range
ULONG ulIpv6Addr[MIBS_MAX_IP_RANGE_LENGTH * 4];
//Source Ip Mask Address Range
ULONG ulIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * 4];
};
struct
{
UCHAR ucIpv4Address[MIBS_MAX_IP_RANGE_LENGTH *
MIBS_IP_LENGTH_OF_ADDRESS];
UCHAR ucIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH *
MIBS_IP_LENGTH_OF_ADDRESS];
};
struct
{
UCHAR ucIpv6Address[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
UCHAR ucIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
};
}U_MIBS_IP_ADDRESS;
typedef struct _S_MIBS_HOST_INFO
{
ULONG64 GoodTransmits;
ULONG64 GoodReceives;
// this to keep track of the Tx and Rx MailBox Registers.
ULONG NumDesUsed;
ULONG CurrNumFreeDesc;
ULONG PrevNumFreeDesc;
// to keep track the no of byte recieved
ULONG PrevNumRcevBytes;
ULONG CurrNumRcevBytes;
/* QOS Related */
ULONG BEBucketSize;
ULONG rtPSBucketSize;
ULONG LastTxQueueIndex;
BOOLEAN TxOutofDescriptors;
BOOLEAN TimerActive;
UINT32 u32TotalDSD;
UINT32 aTxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
UINT32 aRxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
}S_MIBS_HOST_INFO;
typedef struct _S_MIBS_CLASSIFIER_RULE
{
ULONG ulSFID;
UCHAR ucReserved[2];
B_UINT16 uiClassifierRuleIndex;
BOOLEAN bUsed;
USHORT usVCID_Value;
// This field detemines the Classifier Priority
B_UINT8 u8ClassifierRulePriority;
U_MIBS_IP_ADDRESS stSrcIpAddress;
/*IP Source Address Length*/
UCHAR ucIPSourceAddressLength;
U_MIBS_IP_ADDRESS stDestIpAddress;
/* IP Destination Address Length */
UCHAR ucIPDestinationAddressLength;
UCHAR ucIPTypeOfServiceLength;//Type of service Length
UCHAR ucTosLow;//Tos Low
UCHAR ucTosHigh;//Tos High
UCHAR ucTosMask;//Tos Mask
UCHAR ucProtocolLength;//protocol Length
UCHAR ucProtocol[MIBS_MAX_PROTOCOL_LENGTH];//protocol Length
USHORT usSrcPortRangeLo[MIBS_MAX_PORT_RANGE];
USHORT usSrcPortRangeHi[MIBS_MAX_PORT_RANGE];
UCHAR ucSrcPortRangeLength;
USHORT usDestPortRangeLo[MIBS_MAX_PORT_RANGE];
USHORT usDestPortRangeHi[MIBS_MAX_PORT_RANGE];
UCHAR ucDestPortRangeLength;
BOOLEAN bProtocolValid;
BOOLEAN bTOSValid;
BOOLEAN bDestIpValid;
BOOLEAN bSrcIpValid;
UCHAR ucDirection;
BOOLEAN bIpv6Protocol;
UINT32 u32PHSRuleID;
}S_MIBS_CLASSIFIER_RULE;
typedef struct _S_MIBS_PHS_RULE
{
ULONG ulSFID;
/// brief 8bit PHSI Of The Service Flow
B_UINT8 u8PHSI;
/// brief PHSF Of The Service Flow
B_UINT8 u8PHSFLength;
B_UINT8 u8PHSF[MIBS_MAX_PHS_LENGTHS];
/// brief PHSM Of The Service Flow
B_UINT8 u8PHSMLength;
B_UINT8 u8PHSM[MIBS_MAX_PHS_LENGTHS];
/// brief 8bit PHSS Of The Service Flow
B_UINT8 u8PHSS;
/// brief 8bit PHSV Of The Service Flow
B_UINT8 u8PHSV;
// Reserved bytes are 5, so that it is similar to S_PHS_RULE structure.
B_UINT8 reserved[5];
LONG PHSModifiedBytes;
ULONG PHSModifiedNumPackets;
ULONG PHSErrorNumPackets;
}S_MIBS_PHS_RULE;
typedef struct _S_MIBS_EXTSERVICEFLOW_PARAMETERS
{
UINT32 wmanIfSfid;
UINT32 wmanIfCmnCpsSfState;
UINT32 wmanIfCmnCpsMaxSustainedRate;
UINT32 wmanIfCmnCpsMaxTrafficBurst;
UINT32 wmanIfCmnCpsMinReservedRate;
UINT32 wmanIfCmnCpsToleratedJitter;
UINT32 wmanIfCmnCpsMaxLatency;
UINT32 wmanIfCmnCpsFixedVsVariableSduInd;
UINT32 wmanIfCmnCpsSduSize;
UINT32 wmanIfCmnCpsSfSchedulingType;
UINT32 wmanIfCmnCpsArqEnable;
UINT32 wmanIfCmnCpsArqWindowSize;
UINT32 wmanIfCmnCpsArqBlockLifetime;
UINT32 wmanIfCmnCpsArqSyncLossTimeout;
UINT32 wmanIfCmnCpsArqDeliverInOrder;
UINT32 wmanIfCmnCpsArqRxPurgeTimeout;
UINT32 wmanIfCmnCpsArqBlockSize;
UINT32 wmanIfCmnCpsMinRsvdTolerableRate;
UINT32 wmanIfCmnCpsReqTxPolicy;
UINT32 wmanIfCmnSfCsSpecification;
UINT32 wmanIfCmnCpsTargetSaid;
}S_MIBS_EXTSERVICEFLOW_PARAMETERS;
typedef struct _S_MIBS_SERVICEFLOW_TABLE
{
//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;
//BE or rtPS
B_UINT8 u8QueueType;
//maximum size of the bucket for the queue
UINT uiMaxBucketSize;
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;
}S_MIBS_SERVICEFLOW_TABLE;
typedef struct _S_MIBS_DROPPED_APP_CNTRL_MESSAGES
{
ULONG cm_responses;
ULONG cm_control_newdsx_multiclassifier_resp;
ULONG link_control_resp;
ULONG status_rsp;
ULONG stats_pointer_resp;
ULONG idle_mode_status;
ULONG auth_ss_host_msg;
ULONG low_priority_message;
}S_MIBS_DROPPED_APP_CNTRL_MESSAGES;
typedef struct _S_MIBS_HOST_STATS_MIBS
{
S_MIBS_HOST_INFO stHostInfo;
S_MIBS_CLASSIFIER_RULE astClassifierTable[MIBS_MAX_CLASSIFIERS];
S_MIBS_SERVICEFLOW_TABLE astSFtable[MIBS_MAX_SERVICEFLOWS];
S_MIBS_PHS_RULE astPhsRulesTable[MIBS_MAX_PHSRULES];
S_MIBS_DROPPED_APP_CNTRL_MESSAGES stDroppedAppCntrlMsgs;
}S_MIBS_HOST_STATS_MIBS;
#endif