diff options
author | Simon Zhang <yuwei1.zhang@intel.com> | 2019-09-02 22:54:00 +0800 |
---|---|---|
committer | Florin Coras <florin.coras@gmail.com> | 2019-09-10 20:02:55 +0000 |
commit | 1146ff4bcd336d8efc19405f1d83914e6115a01f (patch) | |
tree | 314970d121e92fce05e1d122ddeeb5fccd9439a6 /src/vnet/tcp/tcp.c | |
parent | b97641c79f4aaf0069268c550f263167ddea2b34 (diff) |
tcp: enable gso in tcp hoststack
Type: feature
Change-Id: If68d07fbe8c6f7fffd2f93c7e854367082927e4f
Signed-off-by: Simon Zhang <yuwei1.zhang@intel.com>
Diffstat (limited to 'src/vnet/tcp/tcp.c')
-rw-r--r-- | src/vnet/tcp/tcp.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c index 5090b7dd2d7..ad9bbff5c0e 100644 --- a/src/vnet/tcp/tcp.c +++ b/src/vnet/tcp/tcp.c @@ -1177,6 +1177,17 @@ tcp_half_open_session_get_transport (u32 conn_index) return &tc->connection; } +static u16 +tcp_session_cal_goal_size (tcp_connection_t * tc) +{ + u16 goal_size = tc->snd_mss; + + goal_size = TCP_MAX_GSO_SZ - tc->snd_mss % TCP_MAX_GSO_SZ; + goal_size = clib_min (goal_size, tc->snd_wnd / 2); + + return goal_size; +} + /** * Compute maximum segment size for session layer. * @@ -1194,6 +1205,11 @@ tcp_session_send_mss (transport_connection_t * trans_conn) * the current state of the connection. */ tcp_update_burst_snd_vars (tc); + if (PREDICT_FALSE (tc->is_tso)) + { + return tcp_session_cal_goal_size (tc); + } + return tc->snd_mss; } |