Changeset 40712 in vbox for trunk/src/VBox/VMM/VMMR3
- Timestamp:
- Mar 29, 2012 3:33:43 PM (13 years ago)
- svn:sync-xref-src-repo-rev:
- 77171
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/VMM/VMMR3/PDMNetShaper.cpp
r40706 r40712 152 152 #endif 153 153 154 static void pdmNsBwGroupSetLimit(PPDMNSBWGROUP pBwGroup, uint32_t cbTransferPerSecMax) 155 { 156 pBwGroup->cbTransferPerSecMax = cbTransferPerSecMax; 157 pBwGroup->cbBucketSize = RT_MAX(PDM_NETSHAPER_MIN_BUCKET_SIZE, 158 cbTransferPerSecMax * PDM_NETSHAPER_MAX_LATENCY / 1000); 159 LogFlowFunc(("New rate limit is %d bytes per second, adjusted bucket size to %d bytes\n", 160 pBwGroup->cbTransferPerSecMax, pBwGroup->cbBucketSize)); 161 } 162 154 163 static int pdmNsBwGroupCreate(PPDMNETSHAPER pShaper, const char *pcszBwGroup, uint32_t cbTransferPerSecMax) 155 164 { … … 179 188 pBwGroup->cRefs = 0; 180 189 181 pBwGroup->cbTransferPerSecMax = cbTransferPerSecMax; 182 pBwGroup->cbBucketSize = RT_MAX(PDM_NETSHAPER_MIN_BUCKET_SIZE, 183 cbTransferPerSecMax * PDM_NETSHAPER_MAX_LATENCY / 1000); 190 pdmNsBwGroupSetLimit(pBwGroup, cbTransferPerSecMax); 191 ; 184 192 pBwGroup->cbTokensLast = pBwGroup->cbBucketSize; 185 193 pBwGroup->tsUpdatedLast = RTTimeSystemNanoTS(); … … 231 239 { 232 240 bool fChoked = ASMAtomicXchgBool(&pFilter->fChoked, false); 233 Log FlowFunc(("pFilter=%#p fChoked=%RTbool\n", pFilter, fChoked));241 Log3((LOG_FN_FMT ": pFilter=%#p fChoked=%RTbool\n", __PRETTY_FUNCTION__, pFilter, fChoked)); 234 242 if (fChoked && pFilter->pIDrvNet) 235 243 { … … 337 345 } 338 346 339 boolPDMR3NsAllocateBandwidth(PPDMNSFILTER pFilter, uint32_t cbTransfer)347 VMMR3DECL(bool) PDMR3NsAllocateBandwidth(PPDMNSFILTER pFilter, uint32_t cbTransfer) 340 348 { 341 349 AssertPtrReturn(pFilter, VERR_INVALID_POINTER); … … 363 371 364 372 rc = RTCritSectLeave(&pBwGroup->cs); AssertRC(rc); 365 Log FlowFunc(("BwGroup=%#p{%s} cbTransfer=%u uTokens=%u uTokensAdded=%u fAllowed=%RTbool\n",366 373 Log2((LOG_FN_FMT "BwGroup=%#p{%s} cbTransfer=%u uTokens=%u uTokensAdded=%u fAllowed=%RTbool\n", 374 __PRETTY_FUNCTION__, pBwGroup, pBwGroup->pszName, cbTransfer, uTokens, uTokensAdded, fAllowed)); 367 375 return fAllowed; 368 376 } 377 378 VMMR3DECL(int) PDMR3NsBwGroupSetLimit(PVM pVM, const char *pcszBwGroup, uint32_t cbTransferPerSecMax) 379 { 380 PUVM pUVM = pVM->pUVM; 381 PPDMNETSHAPER pShaper = pUVM->pdm.s.pNetShaper; 382 383 int rc = RTCritSectEnter(&pShaper->cs); AssertRC(rc); 384 if (RT_SUCCESS(rc)) 385 { 386 PPDMNSBWGROUP pBwGroup = pdmNsBwGroupFindById(pShaper, pcszBwGroup); 387 if (pBwGroup) 388 { 389 rc = RTCritSectEnter(&pBwGroup->cs); AssertRC(rc); 390 pdmNsBwGroupSetLimit(pBwGroup, cbTransferPerSecMax); 391 /* Drop extra tokens */ 392 if (pBwGroup->cbTokensLast > pBwGroup->cbBucketSize) 393 pBwGroup->cbTokensLast = pBwGroup->cbBucketSize; 394 rc = RTCritSectLeave(&pBwGroup->cs); AssertRC(rc); 395 } 396 rc = RTCritSectLeave(&pShaper->cs); AssertRC(rc); 397 } 398 return rc; 399 } 400 369 401 370 402 /**
Note:
See TracChangeset
for help on using the changeset viewer.