From 6b05f21de47d2e3a49e6d99ee8a6af773266f117 Mon Sep 17 00:00:00 2001 From: jiangheng Date: Fri, 18 Mar 2022 14:54:37 +0800 Subject: [PATCH] the sending of sock last data is triggered by lstack --- src/lstack/core/lstack_lwip.c | 5 +++-- src/lstack/core/lstack_protocol_stack.c | 3 ++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/lstack/core/lstack_lwip.c b/src/lstack/core/lstack_lwip.c index 7bab92f..b4d75d2 100644 --- a/src/lstack/core/lstack_lwip.c +++ b/src/lstack/core/lstack_lwip.c @@ -214,7 +214,7 @@ void stack_replenish_send_idlembuf(struct protocol_stack *stack) uint32_t replenish_cnt = rte_ring_free_count(stack->send_idle_ring); for (uint32_t i = 0; i < replenish_cnt; i++) { - struct pbuf *pbuf = lwip_alloc_pbuf(PBUF_TRANSPORT, MAX_PACKET_SZ - PBUF_TRANSPORT, PBUF_RAM); + struct pbuf *pbuf = lwip_alloc_pbuf(PBUF_TRANSPORT, TCP_MSS, PBUF_RAM); if (pbuf == NULL) { break; } @@ -361,7 +361,8 @@ void stack_send(struct rpc_msg *msg) msg->result = write_lwip_data(sock, fd, flags); __atomic_store_n(&sock->have_rpc_send, false, __ATOMIC_RELEASE); - if (msg->result >= 0 && rte_ring_count(sock->send_ring)) { + if (msg->result >= 0 && + (rte_ring_count(sock->send_ring) || sock->send_lastdata)) { if (list_is_empty(&sock->send_list)) { __atomic_store_n(&sock->have_rpc_send, true, __ATOMIC_RELEASE); list_add_node(&stack->send_list, &sock->send_list); diff --git a/src/lstack/core/lstack_protocol_stack.c b/src/lstack/core/lstack_protocol_stack.c index 1de546d..e5761a4 100644 --- a/src/lstack/core/lstack_protocol_stack.c +++ b/src/lstack/core/lstack_protocol_stack.c @@ -350,7 +350,8 @@ static void send_stack_list(struct protocol_stack *stack) ssize_t ret = write_lwip_data(sock, sock->conn->socket, sock->send_flags); __atomic_store_n(&sock->have_rpc_send, false, __ATOMIC_RELEASE); - if (ret >= 0 && rte_ring_count(sock->send_ring)) { + if (ret >= 0 && + (rte_ring_count(sock->send_ring) || sock->send_lastdata)) { __atomic_store_n(&sock->have_rpc_send, true, __ATOMIC_RELEASE); } else { list_del_node_init(&sock->send_list); -- 1.8.3.1