|
|
|
|
@ -637,6 +637,8 @@ static void input_send_q_cb(struct ll_queue* q, void* arg) {// etcp->input_send_
|
|
|
|
|
static void send_ack_req_cb(struct ll_queue* q, void* arg) {// etcp->ack_q data ready
|
|
|
|
|
DEBUG_TRACE(DEBUG_CATEGORY_ETCP, ""); |
|
|
|
|
struct ETCP_CONN* etcp=(struct ETCP_CONN*)arg; |
|
|
|
|
DEBUG_DEBUG(DEBUG_CATEGORY_ETCP, "[%s] processing", etcp->log_name); |
|
|
|
|
|
|
|
|
|
etcp_conn_process_send_queue(etcp); |
|
|
|
|
if (etcp->tx_state==ETCP_TX_STATE_DATA_WAIT) queue_resume_callback(etcp->ack_q); |
|
|
|
|
} |
|
|
|
|
@ -1139,6 +1141,8 @@ void etcp_conn_input(struct ETCP_DGRAM* pkt) {
|
|
|
|
|
p->seq=seq; |
|
|
|
|
p->pkt_timestamp=pkt->timestamp; |
|
|
|
|
p->recv_timestamp=get_current_timestamp(); |
|
|
|
|
DEBUG_DEBUG(DEBUG_CATEGORY_ETCP, "[%s] RX add to ack_q seq=%d", etcp->log_name, seq); |
|
|
|
|
|
|
|
|
|
queue_data_put_with_index(etcp->ack_q, (struct ll_entry*)p, 0, 4); |
|
|
|
|
if (etcp->ack_resp_timer == NULL) { |
|
|
|
|
etcp->ack_resp_timer = uasync_set_timeout(etcp->instance->ua, ACK_DELAY_TB, etcp, ack_response_timer_cb); |
|
|
|
|
|