[ovs-dev] [PATCH v4 2/3] datapath-windows: Implement locking in conntrack NAT.
Alin Serdean
aserdean at cloudbasesolutions.com
Fri Jun 22 14:18:51 UTC 2018
> -----Mesaj original-----
> De la: ovs-dev-bounces at openvswitch.org <ovs-dev-
> bounces at openvswitch.org> În numele Anand Kumar
> Trimis: Tuesday, June 19, 2018 8:33 PM
> Către: dev at openvswitch.org
> Subiect: [ovs-dev] [PATCH v4 2/3] datapath-windows: Implement locking in
> conntrack NAT.
>
> This patch primarily replaces existing ndis RWlock based implementaion for
> NAT in conntrack with a spinlock based implementation inside NAT, module
> along with some conntrack optimization.
>
> - The 'ovsNatTable' and 'ovsUnNatTable' tables are shared
> between cleanup threads and packet processing thread.
> In order to protect these two tables use a spinlock.
> Also introduce counters to track number of nat entries.
> - Introduce a new function OvsGetTcpHeader() to retrieve TCP header
> and payload length, to optimize for TCP traffic.
> - Optimize conntrack look up.
> - Remove 'bucketlockRef' member from conntrack entry structure.
>
> Testing:
> Verified loading/unloading the driver with driver verified enabled.
> Ran TCP/UDP and ICMP traffic.
>
> Signed-off-by: Anand Kumar <kumaranand at vmware.com>
> ---
> v1->v2: Merge patch 2 and 3 so that NAT locks related changes are in a
> single patch.
> v2->v3: No change
> v3->v4: No change
> ---
> datapath-windows/ovsext/Conntrack-ftp.c | 4 +-
> datapath-windows/ovsext/Conntrack-nat.c | 27 +++++++- datapath-
> windows/ovsext/Conntrack-tcp.c | 15 ++---
> datapath-windows/ovsext/Conntrack.c | 110 +++++++++++++--------------
> -----
> datapath-windows/ovsext/Conntrack.h | 36 +++++++----
> 5 files changed, 100 insertions(+), 92 deletions(-)
>
Can you please fold in the following:
diff --git a/datapath-windows/ovsext/Conntrack-nat.c b/datapath-windows/ovsext/Conntrack-nat.c
index 11057e6ed..559a7f689 100644
--- a/datapath-windows/ovsext/Conntrack-nat.c
+++ b/datapath-windows/ovsext/Conntrack-nat.c
@@ -151,7 +151,8 @@ VOID OvsNatFlush(UINT16 zone)
VOID OvsNatCleanup()
{
if (ovsNatTable == NULL) {
- return;
+ NdisFreeSpinLock(&ovsCtNatLock);
+ return;
}
NdisAcquireSpinLock(&ovsCtNatLock);
The rest looks good.
Acked-by: Alin Gabriel Serdean <aserdean at ovn.org>
More information about the dev
mailing list