Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v3.13-rc4 141 lines 6.1 kB view raw
1/* 2 * File Name: hostmibs.c 3 * 4 * Author: Beceem Communications Pvt. Ltd 5 * 6 * Abstract: This file contains the routines to copy the statistics used by 7 * the driver to the Host MIBS structure and giving the same to Application. 8 */ 9 10#include "headers.h" 11 12INT ProcessGetHostMibs(struct bcm_mini_adapter *Adapter, struct bcm_host_stats_mibs *pstHostMibs) 13{ 14 struct bcm_phs_entry *pstServiceFlowEntry = NULL; 15 struct bcm_phs_rule *pstPhsRule = NULL; 16 struct bcm_phs_classifier_table *pstClassifierTable = NULL; 17 struct bcm_phs_classifier_entry *pstClassifierRule = NULL; 18 struct bcm_phs_extension *pDeviceExtension = (struct bcm_phs_extension *) &Adapter->stBCMPhsContext; 19 20 UINT nClassifierIndex = 0, nPhsTableIndex = 0, nSfIndex = 0, uiIndex = 0; 21 22 if (pDeviceExtension == NULL) { 23 BCM_DEBUG_PRINT(Adapter, DBG_TYPE_OTHERS, HOST_MIBS, DBG_LVL_ALL, "Invalid Device Extension\n"); 24 return STATUS_FAILURE; 25 } 26 27 /* Copy the classifier Table */ 28 for (nClassifierIndex = 0; nClassifierIndex < MAX_CLASSIFIERS; nClassifierIndex++) { 29 if (Adapter->astClassifierTable[nClassifierIndex].bUsed == TRUE) 30 memcpy((PVOID) & pstHostMibs-> 31 astClassifierTable[nClassifierIndex], 32 (PVOID) & Adapter-> 33 astClassifierTable[nClassifierIndex], 34 sizeof(struct bcm_mibs_classifier_rule)); 35 } 36 37 /* Copy the SF Table */ 38 for (nSfIndex = 0; nSfIndex < NO_OF_QUEUES; nSfIndex++) { 39 if (Adapter->PackInfo[nSfIndex].bValid) { 40 memcpy((PVOID) & pstHostMibs->astSFtable[nSfIndex], 41 (PVOID) & Adapter->PackInfo[nSfIndex], 42 sizeof(struct bcm_mibs_table)); 43 } else { 44 /* If index in not valid, 45 * don't process this for the PHS table. 46 * Go For the next entry. 47 */ 48 continue; 49 } 50 51 /* Retrieve the SFID Entry Index for requested Service Flow */ 52 if (PHS_INVALID_TABLE_INDEX == 53 GetServiceFlowEntry(pDeviceExtension-> 54 pstServiceFlowPhsRulesTable, 55 Adapter->PackInfo[nSfIndex]. 56 usVCID_Value, &pstServiceFlowEntry)) 57 58 continue; 59 60 pstClassifierTable = pstServiceFlowEntry->pstClassifierTable; 61 62 for (uiIndex = 0; uiIndex < MAX_PHSRULE_PER_SF; uiIndex++) { 63 pstClassifierRule = &pstClassifierTable->stActivePhsRulesList[uiIndex]; 64 65 if (pstClassifierRule->bUsed) { 66 pstPhsRule = pstClassifierRule->pstPhsRule; 67 68 pstHostMibs->astPhsRulesTable[nPhsTableIndex]. 69 ulSFID = Adapter->PackInfo[nSfIndex].ulSFID; 70 71 memcpy(&pstHostMibs-> 72 astPhsRulesTable[nPhsTableIndex].u8PHSI, 73 &pstPhsRule->u8PHSI, sizeof(struct bcm_phs_rule)); 74 nPhsTableIndex++; 75 76 } 77 78 } 79 80 } 81 82 /* Copy other Host Statistics parameters */ 83 pstHostMibs->stHostInfo.GoodTransmits = Adapter->dev->stats.tx_packets; 84 pstHostMibs->stHostInfo.GoodReceives = Adapter->dev->stats.rx_packets; 85 pstHostMibs->stHostInfo.CurrNumFreeDesc = atomic_read(&Adapter->CurrNumFreeTxDesc); 86 pstHostMibs->stHostInfo.BEBucketSize = Adapter->BEBucketSize; 87 pstHostMibs->stHostInfo.rtPSBucketSize = Adapter->rtPSBucketSize; 88 pstHostMibs->stHostInfo.TimerActive = Adapter->TimerActive; 89 pstHostMibs->stHostInfo.u32TotalDSD = Adapter->u32TotalDSD; 90 91 memcpy(pstHostMibs->stHostInfo.aTxPktSizeHist, Adapter->aTxPktSizeHist, sizeof(UINT32) * MIBS_MAX_HIST_ENTRIES); 92 memcpy(pstHostMibs->stHostInfo.aRxPktSizeHist, Adapter->aRxPktSizeHist, sizeof(UINT32) * MIBS_MAX_HIST_ENTRIES); 93 94 return STATUS_SUCCESS; 95} 96 97VOID GetDroppedAppCntrlPktMibs(struct bcm_host_stats_mibs *pstHostMibs, struct bcm_tarang_data *pTarang) 98{ 99 memcpy(&(pstHostMibs->stDroppedAppCntrlMsgs), 100 &(pTarang->stDroppedAppCntrlMsgs), 101 sizeof(struct bcm_mibs_dropped_cntrl_msg)); 102} 103 104VOID CopyMIBSExtendedSFParameters(struct bcm_mini_adapter *Adapter, struct bcm_connect_mgr_params *psfLocalSet, UINT uiSearchRuleIndex) 105{ 106 struct bcm_mibs_parameters *t = &Adapter->PackInfo[uiSearchRuleIndex].stMibsExtServiceFlowTable; 107 108 t->wmanIfSfid = psfLocalSet->u32SFID; 109 t->wmanIfCmnCpsMaxSustainedRate = psfLocalSet->u32MaxSustainedTrafficRate; 110 t->wmanIfCmnCpsMaxTrafficBurst = psfLocalSet->u32MaxTrafficBurst; 111 t->wmanIfCmnCpsMinReservedRate = psfLocalSet->u32MinReservedTrafficRate; 112 t->wmanIfCmnCpsToleratedJitter = psfLocalSet->u32ToleratedJitter; 113 t->wmanIfCmnCpsMaxLatency = psfLocalSet->u32MaximumLatency; 114 t->wmanIfCmnCpsFixedVsVariableSduInd = psfLocalSet->u8FixedLengthVSVariableLengthSDUIndicator; 115 t->wmanIfCmnCpsFixedVsVariableSduInd = ntohl(t->wmanIfCmnCpsFixedVsVariableSduInd); 116 t->wmanIfCmnCpsSduSize = psfLocalSet->u8SDUSize; 117 t->wmanIfCmnCpsSduSize = ntohl(t->wmanIfCmnCpsSduSize); 118 t->wmanIfCmnCpsSfSchedulingType = psfLocalSet->u8ServiceFlowSchedulingType; 119 t->wmanIfCmnCpsSfSchedulingType = ntohl(t->wmanIfCmnCpsSfSchedulingType); 120 t->wmanIfCmnCpsArqEnable = psfLocalSet->u8ARQEnable; 121 t->wmanIfCmnCpsArqEnable = ntohl(t->wmanIfCmnCpsArqEnable); 122 t->wmanIfCmnCpsArqWindowSize = ntohs(psfLocalSet->u16ARQWindowSize); 123 t->wmanIfCmnCpsArqWindowSize = ntohl(t->wmanIfCmnCpsArqWindowSize); 124 t->wmanIfCmnCpsArqBlockLifetime = ntohs(psfLocalSet->u16ARQBlockLifeTime); 125 t->wmanIfCmnCpsArqBlockLifetime = ntohl(t->wmanIfCmnCpsArqBlockLifetime); 126 t->wmanIfCmnCpsArqSyncLossTimeout = ntohs(psfLocalSet->u16ARQSyncLossTimeOut); 127 t->wmanIfCmnCpsArqSyncLossTimeout = ntohl(t->wmanIfCmnCpsArqSyncLossTimeout); 128 t->wmanIfCmnCpsArqDeliverInOrder = psfLocalSet->u8ARQDeliverInOrder; 129 t->wmanIfCmnCpsArqDeliverInOrder = ntohl(t->wmanIfCmnCpsArqDeliverInOrder); 130 t->wmanIfCmnCpsArqRxPurgeTimeout = ntohs(psfLocalSet->u16ARQRxPurgeTimeOut); 131 t->wmanIfCmnCpsArqRxPurgeTimeout = ntohl(t->wmanIfCmnCpsArqRxPurgeTimeout); 132 t->wmanIfCmnCpsArqBlockSize = ntohs(psfLocalSet->u16ARQBlockSize); 133 t->wmanIfCmnCpsArqBlockSize = ntohl(t->wmanIfCmnCpsArqBlockSize); 134 t->wmanIfCmnCpsReqTxPolicy = psfLocalSet->u8RequesttransmissionPolicy; 135 t->wmanIfCmnCpsReqTxPolicy = ntohl(t->wmanIfCmnCpsReqTxPolicy); 136 t->wmanIfCmnSfCsSpecification = psfLocalSet->u8CSSpecification; 137 t->wmanIfCmnSfCsSpecification = ntohl(t->wmanIfCmnSfCsSpecification); 138 t->wmanIfCmnCpsTargetSaid = ntohs(psfLocalSet->u16TargetSAID); 139 t->wmanIfCmnCpsTargetSaid = ntohl(t->wmanIfCmnCpsTargetSaid); 140 141}