Show transmission identity and frontier queries in ETCP packet diagnostics
This commit is contained in:
1 parent
7bb43c42d6
commit
2fddf839af
2 files changed
+10
-3
No files matched your search
@@ -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 (используем быстрый поиск с хешем)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user