]> bbs.cooldavid.org Git - net-next-2.6.git/blob - drivers/staging/bcm/HostMIBSInterface.h
staging: Beeceem USB Wimax driver
[net-next-2.6.git] / drivers / staging / bcm / HostMIBSInterface.h
1
2
3 #ifndef _HOST_MIBSINTERFACE_H
4 #define _HOST_MIBSINTERFACE_H
5
6 /*
7  * Copyright (c) 2007 Beceem Communications Pvt. Ltd
8  * File Name: HostMIBSInterface.h
9  * Abstract: This file contains DS used by the Host to update the Host
10  * statistics used for the MIBS.
11  */
12
13 #define MIBS_MAX_CLASSIFIERS 100
14 #define MIBS_MAX_PHSRULES 100
15 #define MIBS_MAX_SERVICEFLOWS 17
16 #define MIBS_MAX_IP_RANGE_LENGTH 4
17 #define MIBS_MAX_PORT_RANGE 4
18 #define MIBS_MAX_PROTOCOL_LENGTH   32
19 #define MIBS_MAX_PHS_LENGTHS     255
20 #define MIBS_IPV6_ADDRESS_SIZEINBYTES 0x10
21 #define MIBS_IP_LENGTH_OF_ADDRESS       4
22 #define MIBS_MAX_HIST_ENTRIES 12
23 #define MIBS_PKTSIZEHIST_RANGE 128
24
25 typedef union _U_MIBS_IP_ADDRESS
26 {
27     struct
28         {
29                 //Source Ip Address Range
30                 ULONG           ulIpv4Addr[MIBS_MAX_IP_RANGE_LENGTH];
31                 //Source Ip Mask Address Range
32                 ULONG       ulIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH];
33         };
34         struct
35         {
36                 //Source Ip Address Range
37                 ULONG           ulIpv6Addr[MIBS_MAX_IP_RANGE_LENGTH * 4];
38                 //Source Ip Mask Address Range
39                 ULONG       ulIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * 4];
40
41         };
42         struct
43         {
44                 UCHAR           ucIpv4Address[MIBS_MAX_IP_RANGE_LENGTH *
45                                                                         MIBS_IP_LENGTH_OF_ADDRESS];
46                 UCHAR           ucIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH *
47                                                                         MIBS_IP_LENGTH_OF_ADDRESS];
48         };
49         struct
50         {
51                 UCHAR           ucIpv6Address[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
52                 UCHAR           ucIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * MIBS_IPV6_ADDRESS_SIZEINBYTES];
53         };
54 }U_MIBS_IP_ADDRESS;
55
56
57 typedef struct _S_MIBS_HOST_INFO
58 {
59         ULONG64                 GoodTransmits;
60         ULONG64                 GoodReceives;
61         // this to keep track of the Tx and Rx MailBox Registers.
62         ULONG                   NumDesUsed;
63         ULONG                   CurrNumFreeDesc;
64         ULONG                   PrevNumFreeDesc;
65         // to keep track the no of byte recieved
66         ULONG                   PrevNumRcevBytes;
67         ULONG                   CurrNumRcevBytes;
68
69         /* QOS Related */
70         ULONG                   BEBucketSize;
71         ULONG                   rtPSBucketSize;
72         ULONG                   LastTxQueueIndex;
73         BOOLEAN                 TxOutofDescriptors;
74         BOOLEAN                 TimerActive;
75         UINT32                  u32TotalDSD;
76         UINT32                  aTxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
77         UINT32                  aRxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
78 }S_MIBS_HOST_INFO;
79
80 typedef struct _S_MIBS_CLASSIFIER_RULE
81 {
82         ULONG                           ulSFID;
83         UCHAR               ucReserved[2];
84         B_UINT16            uiClassifierRuleIndex;
85         BOOLEAN                         bUsed;
86         USHORT                          usVCID_Value;
87         // This field detemines the Classifier Priority
88         B_UINT8             u8ClassifierRulePriority;
89         U_MIBS_IP_ADDRESS   stSrcIpAddress;
90         /*IP Source Address Length*/
91         UCHAR               ucIPSourceAddressLength;
92
93         U_MIBS_IP_ADDRESS   stDestIpAddress;
94         /* IP Destination Address Length */
95         UCHAR               ucIPDestinationAddressLength;
96         UCHAR               ucIPTypeOfServiceLength;//Type of service Length
97         UCHAR               ucTosLow;//Tos Low
98         UCHAR               ucTosHigh;//Tos High
99         UCHAR               ucTosMask;//Tos Mask
100         UCHAR               ucProtocolLength;//protocol Length
101         UCHAR               ucProtocol[MIBS_MAX_PROTOCOL_LENGTH];//protocol Length
102         USHORT                          usSrcPortRangeLo[MIBS_MAX_PORT_RANGE];
103         USHORT                          usSrcPortRangeHi[MIBS_MAX_PORT_RANGE];
104         UCHAR               ucSrcPortRangeLength;
105         USHORT                          usDestPortRangeLo[MIBS_MAX_PORT_RANGE];
106         USHORT                          usDestPortRangeHi[MIBS_MAX_PORT_RANGE];
107         UCHAR               ucDestPortRangeLength;
108         BOOLEAN                         bProtocolValid;
109         BOOLEAN                         bTOSValid;
110         BOOLEAN                         bDestIpValid;
111         BOOLEAN                         bSrcIpValid;
112         UCHAR                           ucDirection;
113         BOOLEAN             bIpv6Protocol;
114         UINT32              u32PHSRuleID;
115 }S_MIBS_CLASSIFIER_RULE;
116
117
118 typedef struct _S_MIBS_PHS_RULE
119 {
120         ULONG           ulSFID;
121         /// brief 8bit PHSI Of The Service Flow
122         B_UINT8     u8PHSI;
123         /// brief PHSF Of The Service Flow
124         B_UINT8     u8PHSFLength;
125         B_UINT8     u8PHSF[MIBS_MAX_PHS_LENGTHS];
126         /// brief PHSM Of The Service Flow
127         B_UINT8     u8PHSMLength;
128         B_UINT8     u8PHSM[MIBS_MAX_PHS_LENGTHS];
129         /// brief 8bit PHSS Of The Service Flow
130         B_UINT8     u8PHSS;
131         /// brief 8bit PHSV Of The Service Flow
132         B_UINT8     u8PHSV;
133         // Reserved bytes are 5, so that it is similar to S_PHS_RULE structure.
134         B_UINT8     reserved[5];
135
136         LONG        PHSModifiedBytes;
137         ULONG       PHSModifiedNumPackets;
138         ULONG           PHSErrorNumPackets;
139 }S_MIBS_PHS_RULE;
140
141 typedef struct _S_MIBS_EXTSERVICEFLOW_PARAMETERS
142 {
143         UINT32          wmanIfSfid;
144         UINT32          wmanIfCmnCpsSfState;
145         UINT32          wmanIfCmnCpsMaxSustainedRate;
146         UINT32          wmanIfCmnCpsMaxTrafficBurst;
147         UINT32          wmanIfCmnCpsMinReservedRate;
148         UINT32          wmanIfCmnCpsToleratedJitter;
149         UINT32          wmanIfCmnCpsMaxLatency;
150         UINT32          wmanIfCmnCpsFixedVsVariableSduInd;
151         UINT32          wmanIfCmnCpsSduSize;
152         UINT32          wmanIfCmnCpsSfSchedulingType;
153         UINT32          wmanIfCmnCpsArqEnable;
154         UINT32          wmanIfCmnCpsArqWindowSize;
155         UINT32          wmanIfCmnCpsArqBlockLifetime;
156         UINT32          wmanIfCmnCpsArqSyncLossTimeout;
157         UINT32          wmanIfCmnCpsArqDeliverInOrder;
158         UINT32          wmanIfCmnCpsArqRxPurgeTimeout;
159         UINT32          wmanIfCmnCpsArqBlockSize;
160         UINT32          wmanIfCmnCpsMinRsvdTolerableRate;
161         UINT32          wmanIfCmnCpsReqTxPolicy;
162         UINT32          wmanIfCmnSfCsSpecification;
163         UINT32          wmanIfCmnCpsTargetSaid;
164
165 }S_MIBS_EXTSERVICEFLOW_PARAMETERS;
166
167
168 typedef struct _S_MIBS_SERVICEFLOW_TABLE
169 {
170          //classification extension Rule
171         ULONG           ulSFID;
172     USHORT              usVCID_Value;
173         UINT            uiThreshold;
174         // This field determines the priority of the SF Queues
175         B_UINT8     u8TrafficPriority;
176
177         BOOLEAN         bValid;
178         BOOLEAN     bActive;
179         BOOLEAN         bActivateRequestSent;
180         //BE or rtPS
181         B_UINT8         u8QueueType;
182         //maximum size of the bucket for the queue
183         UINT            uiMaxBucketSize;
184         UINT            uiCurrentQueueDepthOnTarget;
185         UINT            uiCurrentBytesOnHost;
186         UINT            uiCurrentPacketsOnHost;
187         UINT            uiDroppedCountBytes;
188         UINT            uiDroppedCountPackets;
189         UINT            uiSentBytes;
190         UINT            uiSentPackets;
191         UINT            uiCurrentDrainRate;
192         UINT            uiThisPeriodSentBytes;
193         LARGE_INTEGER   liDrainCalculated;
194         UINT            uiCurrentTokenCount;
195         LARGE_INTEGER   liLastUpdateTokenAt;
196         UINT            uiMaxAllowedRate;
197         UINT        NumOfPacketsSent;
198         UCHAR           ucDirection;
199         USHORT          usCID;
200         S_MIBS_EXTSERVICEFLOW_PARAMETERS        stMibsExtServiceFlowTable;
201         UINT            uiCurrentRxRate;
202         UINT            uiThisPeriodRxBytes;
203         UINT            uiTotalRxBytes;
204         UINT            uiTotalTxBytes;
205 }S_MIBS_SERVICEFLOW_TABLE;
206
207 typedef struct _S_MIBS_DROPPED_APP_CNTRL_MESSAGES
208 {
209         ULONG cm_responses;
210         ULONG cm_control_newdsx_multiclassifier_resp;
211         ULONG link_control_resp;
212         ULONG status_rsp;
213         ULONG stats_pointer_resp;
214         ULONG idle_mode_status;
215         ULONG auth_ss_host_msg;
216         ULONG low_priority_message;
217
218 }S_MIBS_DROPPED_APP_CNTRL_MESSAGES;
219
220 typedef struct _S_MIBS_HOST_STATS_MIBS
221 {
222         S_MIBS_HOST_INFO                                stHostInfo;
223         S_MIBS_CLASSIFIER_RULE                  astClassifierTable[MIBS_MAX_CLASSIFIERS];
224         S_MIBS_SERVICEFLOW_TABLE                astSFtable[MIBS_MAX_SERVICEFLOWS];
225         S_MIBS_PHS_RULE                 astPhsRulesTable[MIBS_MAX_PHSRULES];
226         S_MIBS_DROPPED_APP_CNTRL_MESSAGES       stDroppedAppCntrlMsgs;
227 }S_MIBS_HOST_STATS_MIBS;
228 #endif
229
230