]> git.kernelconcepts.de Git - karo-tx-linux.git/blob - drivers/staging/bcm/HostMIBSInterface.h
Merge branch 'for-linus' of git://git.open-osd.org/linux-open-osd
[karo-tx-linux.git] / drivers / staging / bcm / HostMIBSInterface.h
1 #ifndef _HOST_MIBSINTERFACE_H
2 #define _HOST_MIBSINTERFACE_H
3
4 /*
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.
9  */
10
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
22
23 union bcm_mibs_ip_addr {
24         struct {
25                 /* Source Ip Address Range */
26                 unsigned long ulIpv4Addr[MIBS_MAX_IP_RANGE_LENGTH];
27                 /* Source Ip Mask Address Range */
28                 unsigned long ulIpv4Mask[MIBS_MAX_IP_RANGE_LENGTH];
29         };
30         struct {
31                 /* Source Ip Address Range */
32                 unsigned long ulIpv6Addr[MIBS_MAX_IP_RANGE_LENGTH * 4];
33                 /* Source Ip Mask Address Range */
34                 unsigned long ulIpv6Mask[MIBS_MAX_IP_RANGE_LENGTH * 4];
35         };
36         struct {
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];
39         };
40         struct {
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];
43         };
44 };
45
46 struct bcm_mibs_host_info {
47         u64     GoodTransmits;
48         u64     GoodReceives;
49         /* this to keep track of the Tx and Rx MailBox Registers. */
50         unsigned long   NumDesUsed;
51         unsigned long   CurrNumFreeDesc;
52         unsigned long   PrevNumFreeDesc;
53         /* to keep track the no of byte received */
54         unsigned long   PrevNumRcevBytes;
55         unsigned long   CurrNumRcevBytes;
56         /* QOS Related */
57         unsigned long   BEBucketSize;
58         unsigned long   rtPSBucketSize;
59         unsigned long   LastTxQueueIndex;
60         bool    TxOutofDescriptors;
61         bool    TimerActive;
62         u32     u32TotalDSD;
63         u32     aTxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
64         u32     aRxPktSizeHist[MIBS_MAX_HIST_ENTRIES];
65 };
66
67 struct bcm_mibs_classifier_rule {
68         unsigned long   ulSFID;
69         unsigned char   ucReserved[2];
70         u16     uiClassifierRuleIndex;
71         bool    bUsed;
72         unsigned short  usVCID_Value;
73         u8      u8ClassifierRulePriority;
74         union bcm_mibs_ip_addr stSrcIpAddress;
75         /* IP Source Address Length */
76         unsigned char   ucIPSourceAddressLength;
77         union bcm_mibs_ip_addr 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         unsigned short  usSrcPortRangeLo[MIBS_MAX_PORT_RANGE];
87         unsigned short  usSrcPortRangeHi[MIBS_MAX_PORT_RANGE];
88         unsigned char   ucSrcPortRangeLength;
89         unsigned short  usDestPortRangeLo[MIBS_MAX_PORT_RANGE];
90         unsigned short  usDestPortRangeHi[MIBS_MAX_PORT_RANGE];
91         unsigned char   ucDestPortRangeLength;
92         bool    bProtocolValid;
93         bool    bTOSValid;
94         bool    bDestIpValid;
95         bool    bSrcIpValid;
96         unsigned char   ucDirection;
97         bool    bIpv6Protocol;
98         u32     u32PHSRuleID;
99 };
100
101 struct bcm_mibs_phs_rule {
102         unsigned long   ulSFID;
103         u8      u8PHSI;
104         u8      u8PHSFLength;
105         u8      u8PHSF[MIBS_MAX_PHS_LENGTHS];
106         u8      u8PHSMLength;
107         u8      u8PHSM[MIBS_MAX_PHS_LENGTHS];
108         u8      u8PHSS;
109         u8      u8PHSV;
110         u8      reserved[5];
111         long    PHSModifiedBytes;
112         unsigned long   PHSModifiedNumPackets;
113         unsigned long   PHSErrorNumPackets;
114 };
115
116 struct bcm_mibs_parameters {
117         u32 wmanIfSfid;
118         u32 wmanIfCmnCpsSfState;
119         u32 wmanIfCmnCpsMaxSustainedRate;
120         u32 wmanIfCmnCpsMaxTrafficBurst;
121         u32 wmanIfCmnCpsMinReservedRate;
122         u32 wmanIfCmnCpsToleratedJitter;
123         u32 wmanIfCmnCpsMaxLatency;
124         u32 wmanIfCmnCpsFixedVsVariableSduInd;
125         u32 wmanIfCmnCpsSduSize;
126         u32 wmanIfCmnCpsSfSchedulingType;
127         u32 wmanIfCmnCpsArqEnable;
128         u32 wmanIfCmnCpsArqWindowSize;
129         u32 wmanIfCmnCpsArqBlockLifetime;
130         u32 wmanIfCmnCpsArqSyncLossTimeout;
131         u32 wmanIfCmnCpsArqDeliverInOrder;
132         u32 wmanIfCmnCpsArqRxPurgeTimeout;
133         u32 wmanIfCmnCpsArqBlockSize;
134         u32 wmanIfCmnCpsMinRsvdTolerableRate;
135         u32 wmanIfCmnCpsReqTxPolicy;
136         u32 wmanIfCmnSfCsSpecification;
137         u32 wmanIfCmnCpsTargetSaid;
138 };
139
140 struct bcm_mibs_table {
141         unsigned long   ulSFID;
142         unsigned short  usVCID_Value;
143         unsigned int    uiThreshold;
144         u8      u8TrafficPriority;
145         bool    bValid;
146         bool    bActive;
147         bool    bActivateRequestSent;
148         u8      u8QueueType;
149         unsigned int    uiMaxBucketSize;
150         unsigned int    uiCurrentQueueDepthOnTarget;
151         unsigned int    uiCurrentBytesOnHost;
152         unsigned int    uiCurrentPacketsOnHost;
153         unsigned int    uiDroppedCountBytes;
154         unsigned int    uiDroppedCountPackets;
155         unsigned int    uiSentBytes;
156         unsigned int    uiSentPackets;
157         unsigned int    uiCurrentDrainRate;
158         unsigned int    uiThisPeriodSentBytes;
159         u64     liDrainCalculated;
160         unsigned int    uiCurrentTokenCount;
161         u64     liLastUpdateTokenAt;
162         unsigned int    uiMaxAllowedRate;
163         unsigned int    NumOfPacketsSent;
164         unsigned char ucDirection;
165         unsigned short  usCID;
166         struct bcm_mibs_parameters stMibsExtServiceFlowTable;
167         unsigned int    uiCurrentRxRate;
168         unsigned int    uiThisPeriodRxBytes;
169         unsigned int    uiTotalRxBytes;
170         unsigned int    uiTotalTxBytes;
171 };
172
173 struct bcm_mibs_dropped_cntrl_msg {
174         unsigned long cm_responses;
175         unsigned long cm_control_newdsx_multiclassifier_resp;
176         unsigned long link_control_resp;
177         unsigned long status_rsp;
178         unsigned long stats_pointer_resp;
179         unsigned long idle_mode_status;
180         unsigned long auth_ss_host_msg;
181         unsigned long low_priority_message;
182 };
183
184 struct bcm_host_stats_mibs {
185         struct bcm_mibs_host_info stHostInfo;
186         struct bcm_mibs_classifier_rule astClassifierTable[MIBS_MAX_CLASSIFIERS];
187         struct bcm_mibs_table   astSFtable[MIBS_MAX_SERVICEFLOWS];
188         struct bcm_mibs_phs_rule astPhsRulesTable[MIBS_MAX_PHSRULES];
189         struct bcm_mibs_dropped_cntrl_msg stDroppedAppCntrlMsgs;
190 };
191
192 #endif