Changeset 28722 in vbox for trunk/src/VBox/Devices/Network
- Timestamp:
- Apr 25, 2010 9:40:01 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Network/SrvIntNetR0.cpp
r28714 r28722 293 293 * Updated while owning the switch table spinlock. */ 294 294 RTMAC MacAddr; 295 /** Can pfnXmit cope with disabled preemption for the 'wire'. (reported) */296 bool fWireNoPreempt;297 /** Can pfnXmit cope with disabled preemption for the 'host'. (reported) */298 bool fHostNoPreempt;299 295 /** Whether to supply physical addresses with the outbound SGs. (reported) */ 300 296 bool fPhysSG; 297 /** Explicit alignment. */ 298 bool fUnused; 301 299 /** Busy count for tracking destination table references and active sends. 302 300 * Usually incremented while owning the switch table spinlock. The 30th bit 303 301 * is used to indicate wakeup. */ 304 302 uint32_t volatile cBusy; 303 /** Mask of destinations that pfnXmit cope with disabled preemption for. */ 304 uint32_t fNoPreemptDsts; 305 305 /** The GSO capabilities of the wire destination. (reported) */ 306 306 uint32_t fWireGsoCapabilites; … … 2607 2607 */ 2608 2608 int rc; 2609 if (intnetR0TrunkIfOutLock(pThis)) 2609 if ( (fDst & pThis->fNoPreemptDsts) == fDst 2610 || intnetR0TrunkIfOutLock(pThis)) 2610 2611 { 2611 2612 if ( pSG->GsoCtx.u8Type == PDMNETWORKGSOTYPE_INVALID … … 2614 2615 else 2615 2616 rc = intnetR0TrunkIfSendGsoFallback(pThis, pSG, fDst); 2616 intnetR0TrunkIfOutUnlock(pThis); 2617 2618 if ((fDst & pThis->fNoPreemptDsts) != fDst) 2619 intnetR0TrunkIfOutUnlock(pThis); 2617 2620 } 2618 2621 else … … 2818 2821 /* ASSUMES: that the trunk won't change its report while we're checking. */ 2819 2822 PINTNETTRUNKIF pTrunk = pDstTab->pTrunk; 2820 if ( ((fTrunkDst & INTNETTRUNKDIR_HOST) && (pTrunk->fHostNoPreempt || !pNetwork->MacTab.fHostActive)) 2821 && ((fTrunkDst & INTNETTRUNKDIR_WIRE) && (pTrunk->fWireNoPreempt || !pNetwork->MacTab.fWireActive)) 2822 ) 2823 if ((fTrunkDst & pTrunk->fNoPreemptDsts) == fTrunkDst) 2823 2824 return true; 2824 2825 … … 2859 2860 2860 2861 bool fRc = !pTrunk 2861 || ( (!pNetwork->MacTab.fHostActive || pTrunk->fHostNoPreempt || fSrc == INTNETTRUNKDIR_HOST) 2862 && (!pNetwork->MacTab.fWireActive || pTrunk->fWireNoPreempt || fSrc == INTNETTRUNKDIR_WIRE) ); 2862 || pTrunk->fNoPreemptDsts == (INTNETTRUNKDIR_HOST | INTNETTRUNKDIR_WIRE) 2863 || ( (!pNetwork->MacTab.fHostActive || (pTrunk->fNoPreemptDsts & INTNETTRUNKDIR_HOST) ) 2864 && (!pNetwork->MacTab.fWireActive || (pTrunk->fNoPreemptDsts & INTNETTRUNKDIR_WIRE) ) ); 2863 2865 2864 2866 RTSpinlockReleaseNoInts(pNetwork->hAddrSpinlock, &Tmp); … … 4735 4737 pTrunk->MacAddr.au8[4] = 0xff; 4736 4738 pTrunk->MacAddr.au8[5] = 0xff; 4737 //pTrunk->fWireNoPreempt = false;4738 //pTrunk->fHostNoPreempt = false;4739 4739 //pTrunk->fPhysSG = false; 4740 //pTrunk->fUnused = false; 4740 4741 //pTrunk->cBusy = 0; 4742 //pTrunk->fNoPreemptDsts = 0; 4741 4743 //pTrunk->fWireGsoCapabilites = 0; 4742 4744 //pTrunk->fHostGsoCapabilites = 0;
Note:
See TracChangeset
for help on using the changeset viewer.