summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Stt.h
diff options
context:
space:
mode:
authorSairam Venugopal <vsairam@vmware.com>2015-10-26 16:48:40 -0700
committerGurucharan Shetty <gshetty@nicira.com>2015-10-27 13:48:46 -0700
commitcab433d0f3d96fd143e76b6fea21449ab7b89240 (patch)
treebc6206a87a4662b99b36c7156f8eb2777888710b /datapath-windows/ovsext/Stt.h
parent9a80ee1443134fe36d15c76bc77b567315f948f9 (diff)
downloadopenvswitch-cab433d0f3d96fd143e76b6fea21449ab7b89240.tar.gz
datapath-windows: STT - Add support for TCP Segmentation Offload
Create and initialize the background thread and buffer that assists in defragmenting and completing a TSO packet. Signed-off-by: Sairam Venugopal <vsairam@vmware.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Gurucharan Shetty <gshetty@nicira.com>
Diffstat (limited to 'datapath-windows/ovsext/Stt.h')
-rw-r--r--datapath-windows/ovsext/Stt.h33
1 files changed, 30 insertions, 3 deletions
diff --git a/datapath-windows/ovsext/Stt.h b/datapath-windows/ovsext/Stt.h
index 38d721c49..9a453791f 100644
--- a/datapath-windows/ovsext/Stt.h
+++ b/datapath-windows/ovsext/Stt.h
@@ -34,6 +34,11 @@
#define STT_PROTO_TCP (1 << 3)
#define STT_PROTO_TYPES (STT_PROTO_IPV4 | STT_PROTO_TCP)
+#define STT_HASH_TABLE_SIZE ((UINT32)1 << 10)
+#define STT_HASH_TABLE_MASK (STT_HASH_TABLE_SIZE - 1)
+#define STT_ENTRY_TIMEOUT 300000000 // 30s
+#define STT_CLEANUP_INTERVAL 300000000 // 30s
+
#define STT_ETH_PAD 2
typedef struct SttHdr {
UINT8 version;
@@ -58,14 +63,32 @@ typedef struct _OVS_STT_VPORT {
UINT64 slowOutPkts;
} OVS_STT_VPORT, *POVS_STT_VPORT;
+typedef struct _OVS_STT_PKT_KEY {
+ UINT32 sAddr;
+ UINT32 dAddr;
+ UINT32 ackSeq;
+} OVS_STT_PKT_KEY, *POVS_STT_PKT_KEY;
+
+typedef struct _OVS_STT_PKT_ENTRY {
+ OVS_STT_PKT_KEY ovsPktKey;
+ UINT64 timeout;
+ UINT32 recvdLen;
+ SttHdr sttHdr;
+ PCHAR packetBuf;
+ LIST_ENTRY link;
+} OVS_STT_PKT_ENTRY, *POVS_STT_PKT_ENTRY;
+
+typedef struct _OVS_STT_THREAD_CTX {
+ KEVENT event;
+ PVOID threadObject;
+ UINT32 exit;
+} OVS_STT_THREAD_CTX, *POVS_STT_THREAD_CTX;
+
NTSTATUS OvsInitSttTunnel(POVS_VPORT_ENTRY vport,
UINT16 udpDestPort);
VOID OvsCleanupSttTunnel(POVS_VPORT_ENTRY vport);
-
-void OvsCleanupSttTunnel(POVS_VPORT_ENTRY vport);
-
NDIS_STATUS OvsEncapStt(POVS_VPORT_ENTRY vport,
PNET_BUFFER_LIST curNbl,
OvsIPv4TunnelKey *tunKey,
@@ -79,6 +102,10 @@ NDIS_STATUS OvsDecapStt(POVS_SWITCH_CONTEXT switchContext,
OvsIPv4TunnelKey *tunKey,
PNET_BUFFER_LIST *newNbl);
+NTSTATUS OvsInitSttDefragmentation();
+
+VOID OvsCleanupSttDefragmentation(VOID);
+
static __inline UINT32
OvsGetSttTunHdrSize(VOID)
{