summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Switch.c
diff options
context:
space:
mode:
authorAnkur Sharma <ankursharma@vmware.com>2014-10-21 17:24:35 -0700
committerBen Pfaff <blp@nicira.com>2014-10-23 09:13:04 -0700
commit75752ef5e7e3ce70706074cae3ccf06c6871ed7e (patch)
treeda0af1dae73d7ad3605d57cdcff323fff7edf0fc /datapath-windows/ovsext/Switch.c
parenta9447331a639832a1c75b3f797757ed4139ec1d2 (diff)
downloadopenvswitch-75752ef5e7e3ce70706074cae3ccf06c6871ed7e.tar.gz
datapath-windows: pid-instance hash table data structure.
This patch introduces data structure for holding instances hashed by pid. Signed-off-by: Ankur Sharma <ankursharma@vmware.com> Acked-by: Sorin Vinturis <svinturis@cloudbasesolutions.com> cked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/Switch.c')
-rw-r--r--datapath-windows/ovsext/Switch.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/datapath-windows/ovsext/Switch.c b/datapath-windows/ovsext/Switch.c
index ac4a847bf..5593d43c4 100644
--- a/datapath-windows/ovsext/Switch.c
+++ b/datapath-windows/ovsext/Switch.c
@@ -360,6 +360,8 @@ OvsInitSwitchContext(POVS_SWITCH_CONTEXT switchContext)
OvsAllocateMemory(sizeof (LIST_ENTRY) * OVS_MAX_VPORT_ARRAY_SIZE);
switchContext->portIdHashArray= (PLIST_ENTRY)
OvsAllocateMemory(sizeof (LIST_ENTRY) * OVS_MAX_VPORT_ARRAY_SIZE);
+ switchContext->pidHashArray = (PLIST_ENTRY)
+ OvsAllocateMemory(sizeof(LIST_ENTRY) * OVS_MAX_PID_ARRAY_SIZE);
status = OvsAllocateFlowTable(&switchContext->datapath, switchContext);
if (status == NDIS_STATUS_SUCCESS) {
@@ -369,7 +371,8 @@ OvsInitSwitchContext(POVS_SWITCH_CONTEXT switchContext)
switchContext->dispatchLock == NULL ||
switchContext->portNoHashArray == NULL ||
switchContext->ovsPortNameHashArray == NULL ||
- switchContext->portIdHashArray== NULL) {
+ switchContext->portIdHashArray== NULL ||
+ switchContext->pidHashArray == NULL) {
if (switchContext->dispatchLock) {
NdisFreeRWLock(switchContext->dispatchLock);
}
@@ -382,6 +385,11 @@ OvsInitSwitchContext(POVS_SWITCH_CONTEXT switchContext)
if (switchContext->portIdHashArray) {
OvsFreeMemory(switchContext->portIdHashArray);
}
+
+ if (switchContext->pidHashArray) {
+ OvsFreeMemory(switchContext->pidHashArray);
+ }
+
OvsDeleteFlowTable(&switchContext->datapath);
OvsCleanupBufferPool(switchContext);
@@ -399,6 +407,10 @@ OvsInitSwitchContext(POVS_SWITCH_CONTEXT switchContext)
InitializeListHead(&switchContext->portNoHashArray[i]);
}
+ for (i = 0; i < OVS_MAX_PID_ARRAY_SIZE; i++) {
+ InitializeListHead(&switchContext->pidHashArray[i]);
+ }
+
switchContext->isActivated = FALSE;
switchContext->isActivateFailed = FALSE;
switchContext->dpNo = OVS_DP_NUMBER;
@@ -420,6 +432,7 @@ OvsCleanupSwitchContext(POVS_SWITCH_CONTEXT switchContext)
OvsFreeMemory(switchContext->ovsPortNameHashArray);
OvsFreeMemory(switchContext->portIdHashArray);
OvsFreeMemory(switchContext->portNoHashArray);
+ OvsFreeMemory(switchContext->pidHashArray);
OvsDeleteFlowTable(&switchContext->datapath);
OvsCleanupBufferPool(switchContext);
OVS_LOG_TRACE("Exit: Delete switchContext: %p", switchContext);