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