* it means we have an array of pids, instead of a single pid.
* ATM we assume we have one pid only.
*/
-
- NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState, 0);
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
+ NdisAcquireRWLockRead(gOvsSwitchContext->dispatchLock, &lockState,
+ NDIS_RWL_AT_DISPATCH_LEVEL);
if (gOvsSwitchContext->numVports > 0) {
/* inBucket: the bucket, used for lookup */
datapath = &gOvsSwitchContext->datapath;
ASSERT(datapath);
- OvsAcquireDatapathRead(datapath, &dpLockState, FALSE);
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
+ OvsAcquireDatapathRead(datapath, &dpLockState, TRUE);
head = &datapath->flowTable[rowIndex];
node = head->Flink;
datapath = &gOvsSwitchContext->datapath;
ASSERT(datapath);
- OvsAcquireDatapathWrite(datapath, &dpLockState, FALSE);
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
+ OvsAcquireDatapathWrite(datapath, &dpLockState, TRUE);
status = HandleFlowPut(put, datapath, stats);
OvsReleaseDatapath(datapath, &dpLockState);
datapath = &gOvsSwitchContext->datapath;
ASSERT(datapath);
- OvsAcquireDatapathRead(datapath, &dpLockState, FALSE);
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
+ OvsAcquireDatapathRead(datapath, &dpLockState, TRUE);
flow = OvsLookupFlow(datapath, &getInput->key, &hash, FALSE);
if (!flow) {
status = STATUS_INVALID_PARAMETER;
datapath = &gOvsSwitchContext->datapath;
ASSERT(datapath);
- OvsAcquireDatapathWrite(datapath, &dpLockState, FALSE);
+ ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
+ OvsAcquireDatapathWrite(datapath, &dpLockState, TRUE);
DeleteAllFlows(datapath);
OvsReleaseDatapath(datapath, &dpLockState);
}
ASSERT(KeGetCurrentIrql() == DISPATCH_LEVEL);
- OvsAcquireDatapathRead(datapath, &dpLockState, dispatch);
+ OvsAcquireDatapathRead(datapath, &dpLockState, TRUE);
flow = OvsLookupFlow(datapath, &key, &hash, FALSE);
if (flow) {