aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKonstantin Ananyev <konstantin.ananyev@intel.com>2017-06-05 18:05:01 +0100
committerKonstantin Ananyev <konstantin.ananyev@intel.com>2017-06-09 11:13:49 +0100
commite49446d6c07fd64b2b40d6a9a6ccec7c06a88366 (patch)
tree4a695c6939df6644b25d3586a26bdf5d60ae095a
parentfbba0a3bf2dbfd86e48efe9745af9f94203d5f80 (diff)
tle_tcp_proces: fix the issue when strem can sit in the txs queue forever.
Change-Id: I313f048fc0888d661f8b0e34af6256afc516670a Signed-off-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
-rw-r--r--lib/libtle_l4p/tcp_rxtx.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/lib/libtle_l4p/tcp_rxtx.c b/lib/libtle_l4p/tcp_rxtx.c
index ff39f32..7429bf0 100644
--- a/lib/libtle_l4p/tcp_rxtx.c
+++ b/lib/libtle_l4p/tcp_rxtx.c
@@ -2417,11 +2417,12 @@ tle_tcp_process(struct tle_ctx *ctx, uint32_t num)
for (i = 0; i != k; i++) {
s = rs[i];
- if (rwl_try_acquire(&s->tx.use) > 0 &&
- rte_atomic32_read(&s->tx.arm) > 0) {
- rte_atomic32_set(&s->tx.arm, 0);
+ rte_atomic32_set(&s->tx.arm, 0);
+
+ if (rwl_try_acquire(&s->tx.use) > 0)
tx_stream(s, tms);
- }
+ else
+ txs_enqueue(s->s.ctx, s);
rwl_release(&s->tx.use);
}