diff options
author | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2017-07-27 12:00:57 +0100 |
---|---|---|
committer | Konstantin Ananyev <konstantin.ananyev@intel.com> | 2017-07-27 20:24:53 +0100 |
commit | 7e18fa1bf263822c46d7431a911b41d6377d5f69 (patch) | |
tree | ddf5ce05545419d6d77bb9d8b3c48fc90d221a7a /lib/libtle_l4p/tcp_misc.h | |
parent | e151ee29d02d7802fab9e32b50ced54fd8d64160 (diff) |
- Introduce tle_tcp_stream_readv() and tle_tcp_stream_writev().
- Introduce flags for tle_ctx_param.
- Introduce TLE_CTX_FLAG_ST - indicates that given ctx will be used
by single thread only.
- Introduce new parameters for tcp context:
timewait - allows user to configure max timeout in TCP_TIMEWAIT state.
icw - allows user to specify desired initial congestion window
for new connections.
-Few optimisations:
cache tx.ol_flags inside tle destination.
calcualte and cache inside ctx cycles_to_ms shift value.
reorder restoring SYN opts and filling TCB a bit.
Change-Id: Ie05087783b3b7f1e4ce99d3555bc5bd098f83fe0
Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Mohammad Abdul Awal <mohammad.abdul.awal@intel.com>
Diffstat (limited to 'lib/libtle_l4p/tcp_misc.h')
-rw-r--r-- | lib/libtle_l4p/tcp_misc.h | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/lib/libtle_l4p/tcp_misc.h b/lib/libtle_l4p/tcp_misc.h index 9f19f69..0ca5429 100644 --- a/lib/libtle_l4p/tcp_misc.h +++ b/lib/libtle_l4p/tcp_misc.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016 Intel Corporation. + * Copyright (c) 2016-2017 Intel Corporation. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -54,6 +54,10 @@ extern "C" { #define TCP6_OP_MSS (TCP6_NOP_MSS - TCP_TX_OPT_LEN_MAX) +/* Initial Window Configuration parameter, probably will be configured during + * the startup in future */ +#define TCP_INITIAL_CWND_MAX 14600 + /* * TCP flags */ @@ -93,8 +97,8 @@ union seg_info { struct { uint32_t seq; uint32_t ack; - uint16_t hole1; uint16_t wnd; + uint16_t mss; /* valid only at SYN time */ }; }; @@ -223,11 +227,10 @@ struct dack_info { /* get current timestamp in ms */ static inline uint32_t -tcp_get_tms(void) +tcp_get_tms(uint32_t mshift) { - uint64_t ts, ms; - ms = (rte_get_tsc_hz() + MS_PER_S - 1) / MS_PER_S; - ts = rte_get_tsc_cycles() / ms; + uint64_t ts; + ts = rte_get_tsc_cycles() >> mshift; return ts; } @@ -248,8 +251,11 @@ static inline void get_seg_info(const struct tcp_hdr *th, union seg_info *si) { __m128i v; - const __m128i bswap_mask = _mm_set_epi8(15, 14, 13, 12, 10, 11, 9, 8, - 4, 5, 6, 7, 0, 1, 2, 3); + const __m128i bswap_mask = + _mm_set_epi8(UINT8_MAX, UINT8_MAX, UINT8_MAX, UINT8_MAX, + UINT8_MAX, UINT8_MAX, 10, 11, + 4, 5, 6, 7, + 0, 1, 2, 3); v = _mm_loadu_si128((const __m128i *)&th->sent_seq); si->raw.x = _mm_shuffle_epi8(v, bswap_mask); |