• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
193