diff options
author | Sairam Venugopal <vsairam@vmware.com> | 2015-10-26 16:48:40 -0700 |
---|---|---|
committer | Gurucharan Shetty <gshetty@nicira.com> | 2015-10-27 13:48:46 -0700 |
commit | cab433d0f3d96fd143e76b6fea21449ab7b89240 (patch) | |
tree | bc6206a87a4662b99b36c7156f8eb2777888710b /datapath-windows/ovsext/Stt.h | |
parent | 9a80ee1443134fe36d15c76bc77b567315f948f9 (diff) | |
download | openvswitch-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.h | 33 |
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) { |