1 #ifndef _HOST_MIBSINTERFACE_H
2 #define _HOST_MIBSINTERFACE_H
5 * Copyright (c) 2007 Beceem Communications Pvt. Ltd
6 * File Name: HostMIBSInterface.h
7 * Abstract: This file contains DS used by the Host to update the Host
8 * statistics used for the MIBS.
11 #define MIBS_MAX_CLASSIFIERS 100
12 #define MIBS_MAX_PHSRULES 100
13 #define MIBS_MAX_SERVICEFLOWS 17
14 #define MIBS_MAX_IP_RANGE_LENGTH 4
15 #define MIBS_MAX_PORT_RANGE 4
16 #define MIBS_MAX_PROTOCOL_LENGTH 32
17 #define MIBS_MAX_PHS_LENGTHS 255
18 #define MIBS_IPV6_ADDRESS_SIZEINBYTES 0x10
19 #define MIBS_IP_LENGTH_OF_ADDRESS 4
20 #define MIBS_MAX_HIST_ENTRIES 12
21 #define MIBS_PKTSIZEHIST_RANGE 128
23 typedef union _U_MIBS_IP_ADDRESS {
25 /* Source Ip Address Range */
26 ULONG ulIpv4Addr[MIBS_MAX_IP_RANGE_LENGTH];
27 /* Source Ip Mask Address Range */
28 ULONG ulIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH];
31 /* Source Ip Address Range */
32 ULONG ulIpv6Addr[MIBS_MAX_IP_RANGE_LENGTH * 4];
33 /* Source Ip Mask Address Range */
34 ULONG ulIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * 4];
37 unsigned char ucIpv4Address[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IP_LENGTH_OF_ADDRESS];
38 unsigned char ucIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IP_LENGTH_OF_ADDRESS];
41 unsigned char ucIpv6Address[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
42 unsigned char ucIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
46 typedef struct _S_MIBS_HOST_INFO {
47 ULONG64 GoodTransmits;
49 /* this to keep track of the Tx and Rx MailBox Registers. */
51 ULONG CurrNumFreeDesc;
52 ULONG PrevNumFreeDesc;
53 /* to keep track the no of byte received */
54 ULONG PrevNumRcevBytes;
55 ULONG CurrNumRcevBytes;
59 ULONG LastTxQueueIndex;
60 BOOLEAN TxOutofDescriptors;
63 UINT32 aTxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
64 UINT32 aRxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
67 typedef struct _S_MIBS_CLASSIFIER_RULE {
69 unsigned char ucReserved[2];
70 B_UINT16 uiClassifierRuleIndex;
73 B_UINT8 u8ClassifierRulePriority;
74 U_MIBS_IP_ADDRESS stSrcIpAddress;
75 /* IP Source Address Length */
76 unsigned char ucIPSourceAddressLength;
77 U_MIBS_IP_ADDRESS stDestIpAddress;
78 /* IP Destination Address Length */
79 unsigned char ucIPDestinationAddressLength;
80 unsigned char ucIPTypeOfServiceLength;
81 unsigned char ucTosLow;
82 unsigned char ucTosHigh;
83 unsigned char ucTosMask;
84 unsigned char ucProtocolLength;
85 unsigned char ucProtocol[MIBS_MAX_PROTOCOL_LENGTH];
86 USHORT usSrcPortRangeLo[MIBS_MAX_PORT_RANGE];
87 USHORT usSrcPortRangeHi[MIBS_MAX_PORT_RANGE];
88 unsigned char ucSrcPortRangeLength;
89 USHORT usDestPortRangeLo[MIBS_MAX_PORT_RANGE];
90 USHORT usDestPortRangeHi[MIBS_MAX_PORT_RANGE];
91 unsigned char ucDestPortRangeLength;
92 BOOLEAN bProtocolValid;
96 unsigned char ucDirection;
97 BOOLEAN bIpv6Protocol;
99 } S_MIBS_CLASSIFIER_RULE;
101 typedef struct _S_MIBS_PHS_RULE {
104 B_UINT8 u8PHSFLength;
105 B_UINT8 u8PHSF[MIBS_MAX_PHS_LENGTHS];
106 B_UINT8 u8PHSMLength;
107 B_UINT8 u8PHSM[MIBS_MAX_PHS_LENGTHS];
111 LONG PHSModifiedBytes;
112 ULONG PHSModifiedNumPackets;
113 ULONG PHSErrorNumPackets;
116 typedef struct _S_MIBS_EXTSERVICEFLOW_PARAMETERS {
118 UINT32 wmanIfCmnCpsSfState;
119 UINT32 wmanIfCmnCpsMaxSustainedRate;
120 UINT32 wmanIfCmnCpsMaxTrafficBurst;
121 UINT32 wmanIfCmnCpsMinReservedRate;
122 UINT32 wmanIfCmnCpsToleratedJitter;
123 UINT32 wmanIfCmnCpsMaxLatency;
124 UINT32 wmanIfCmnCpsFixedVsVariableSduInd;
125 UINT32 wmanIfCmnCpsSduSize;
126 UINT32 wmanIfCmnCpsSfSchedulingType;
127 UINT32 wmanIfCmnCpsArqEnable;
128 UINT32 wmanIfCmnCpsArqWindowSize;
129 UINT32 wmanIfCmnCpsArqBlockLifetime;
130 UINT32 wmanIfCmnCpsArqSyncLossTimeout;
131 UINT32 wmanIfCmnCpsArqDeliverInOrder;
132 UINT32 wmanIfCmnCpsArqRxPurgeTimeout;
133 UINT32 wmanIfCmnCpsArqBlockSize;
134 UINT32 wmanIfCmnCpsMinRsvdTolerableRate;
135 UINT32 wmanIfCmnCpsReqTxPolicy;
136 UINT32 wmanIfCmnSfCsSpecification;
137 UINT32 wmanIfCmnCpsTargetSaid;
138 } S_MIBS_EXTSERVICEFLOW_PARAMETERS;
140 typedef struct _S_MIBS_SERVICEFLOW_TABLE {
144 B_UINT8 u8TrafficPriority;
147 BOOLEAN bActivateRequestSent;
149 UINT uiMaxBucketSize;
150 UINT uiCurrentQueueDepthOnTarget;
151 UINT uiCurrentBytesOnHost;
152 UINT uiCurrentPacketsOnHost;
153 UINT uiDroppedCountBytes;
154 UINT uiDroppedCountPackets;
157 UINT uiCurrentDrainRate;
158 UINT uiThisPeriodSentBytes;
159 LARGE_INTEGER liDrainCalculated;
160 UINT uiCurrentTokenCount;
161 LARGE_INTEGER liLastUpdateTokenAt;
162 UINT uiMaxAllowedRate;
163 UINT NumOfPacketsSent;
164 unsigned char ucDirection;
166 S_MIBS_EXTSERVICEFLOW_PARAMETERS stMibsExtServiceFlowTable;
167 UINT uiCurrentRxRate;
168 UINT uiThisPeriodRxBytes;
171 } S_MIBS_SERVICEFLOW_TABLE;
173 typedef struct _S_MIBS_DROPPED_APP_CNTRL_MESSAGES {
175 ULONG cm_control_newdsx_multiclassifier_resp;
176 ULONG link_control_resp;
178 ULONG stats_pointer_resp;
179 ULONG idle_mode_status;
180 ULONG auth_ss_host_msg;
181 ULONG low_priority_message;
182 } S_MIBS_DROPPED_APP_CNTRL_MESSAGES;
184 typedef struct _S_MIBS_HOST_STATS_MIBS {
185 S_MIBS_HOST_INFO stHostInfo;
186 S_MIBS_CLASSIFIER_RULE astClassifierTable[MIBS_MAX_CLASSIFIERS];
187 S_MIBS_SERVICEFLOW_TABLE astSFtable[MIBS_MAX_SERVICEFLOWS];
188 S_MIBS_PHS_RULE astPhsRulesTable[MIBS_MAX_PHSRULES];
189 S_MIBS_DROPPED_APP_CNTRL_MESSAGES stDroppedAppCntrlMsgs;
190 } S_MIBS_HOST_STATS_MIBS;