Show transmission identity and frontier queries in ETCP packet diagnostics

This commit is contained in:
evgeny committed 2026-10-23 11:13:26 +02:00
1 parent 7bb43c42d6
commit 2fddf839af
2 files changed
+10 -3

No files matched your search

+2 -2
View File
@@ -76,13 +76,13 @@ struct INFLIGHT_PACKET {// выделяется из etcp->inflight_pool
struct ll_entry ll;
uint32_t seq; // packet seq (ID по документации)
struct ETCP_LINK* last_link; // Заимствованный курсор выбора следующего пути; очищается перед free линка
uint64_t last_timestamp; // Last send timestamp
uint64_t last_timestamp; // Время последней принятой отправки, 0.1мс; только диагностика, не RTO/BBR
uint64_t last_attempt_id; // Последняя принятая транспортом попытка; ненулевой ID отличает retry
uint32_t send_count; // Статистика отправок с насыщением, без wrap
uint32_t retrans_req_count; // Число запросов повтора с насыщением
uint32_t active_attempts; // Попытки этого seq, ещё занимающие окна каналов
uint8_t state; // WAIT_SEND — готов к отправке; WAIT_ACK — логически ожидает доставки
uint8_t send_hist[8]; // через какие каналы передавался пакет (NEW). send_count - head ptr
uint8_t send_hist[8]; // local_link_id последних попыток; send_count%8 — следующая позиция до насыщения счётчика
};
// Список пакетов для сборки. собирается в ll_queue (используем быстрый поиск с хешем)
+8 -1
View File
@@ -59,13 +59,20 @@ void etcp_dump_pkt_sections(struct ETCP_DGRAM* pkt, struct ETCP_LINK* link, int
offset += 5;
break;
}
case ETCP_SECTION_ACK_REQUEST:
pos += snprintf(buf + pos, sizeof(buf) - pos, " till_query");
offset++;
break;
case ETCP_SECTION_PAYLOAD: {
if (offset + ETCP_PAYLOAD_HEADER_SIZE > len) { offset = len; break; }
payload_seq = (uint32_t)data[offset + 1] | ((uint32_t)data[offset + 2] << 8) |
((uint32_t)data[offset + 3] << 16) | ((uint32_t)data[offset + 4] << 24);
payload_size = len - offset - ETCP_PAYLOAD_HEADER_SIZE;
uint64_t attempt_id = 0;
for (unsigned i = 0; i < 8; i++) attempt_id |= (uint64_t)data[offset + 5 + i] << (8 * i);
has_payload = 1;
pos += snprintf(buf + pos, sizeof(buf) - pos, " payload=%u(seq=%u)", payload_size, payload_seq);
pos += snprintf(buf + pos, sizeof(buf) - pos, " payload=%u(seq=%u attempt=%llu)",
payload_size, payload_seq, (unsigned long long)attempt_id);
offset = len;
break;
}