serialqueue: Rename stalled_bytes stat to upcoming_bytes
The stalled_bytes counter refers to the number of bytes that are not yet eligible for transmission. However, the naming leads to confusion as it could be interpretted as an inability to transmit data. Rename to upcoming_bytes to try to avoid that confusion. Signed-off-by: Kevin O'Connor <kevin@koconnor.net>
This commit is contained in:
parent
acca55b074
commit
22ee889f41
|
@ -8,6 +8,9 @@ All dates in this document are approximate.
|
||||||
|
|
||||||
## Changes
|
## Changes
|
||||||
|
|
||||||
|
20230407: The `stalled_bytes` counter in the log and in the
|
||||||
|
`printer.mcu.last_stats` field has been renamed to `upcoming_bytes`.
|
||||||
|
|
||||||
20230304: The `SET_TMC_CURRENT` command now properly adjusts the globalscaler
|
20230304: The `SET_TMC_CURRENT` command now properly adjusts the globalscaler
|
||||||
register for drivers that have it. This removes a limitation where on tmc5160,
|
register for drivers that have it. This removes a limitation where on tmc5160,
|
||||||
the currents could not be raised higher with `SET_TMC_CURRENT` than the
|
the currents could not be raised higher with `SET_TMC_CURRENT` than the
|
||||||
|
|
|
@ -30,7 +30,7 @@
|
||||||
#include "serialqueue.h" // struct queue_message
|
#include "serialqueue.h" // struct queue_message
|
||||||
|
|
||||||
struct command_queue {
|
struct command_queue {
|
||||||
struct list_head stalled_queue, ready_queue;
|
struct list_head upcoming_queue, ready_queue;
|
||||||
struct list_node node;
|
struct list_node node;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ struct serialqueue {
|
||||||
double srtt, rttvar, rto;
|
double srtt, rttvar, rto;
|
||||||
// Pending transmission message queues
|
// Pending transmission message queues
|
||||||
struct list_head pending_queues;
|
struct list_head pending_queues;
|
||||||
int ready_bytes, stalled_bytes, need_ack_bytes, last_ack_bytes;
|
int ready_bytes, upcoming_bytes, need_ack_bytes, last_ack_bytes;
|
||||||
uint64_t need_kick_clock;
|
uint64_t need_kick_clock;
|
||||||
struct list_head notify_queue;
|
struct list_head notify_queue;
|
||||||
// Received messages
|
// Received messages
|
||||||
|
@ -458,7 +458,7 @@ build_and_send_command(struct serialqueue *sq, uint8_t *buf, int pending
|
||||||
if (len + qm->len > MESSAGE_MAX - MESSAGE_TRAILER_SIZE)
|
if (len + qm->len > MESSAGE_MAX - MESSAGE_TRAILER_SIZE)
|
||||||
break;
|
break;
|
||||||
list_del(&qm->node);
|
list_del(&qm->node);
|
||||||
if (list_empty(&cq->ready_queue) && list_empty(&cq->stalled_queue))
|
if (list_empty(&cq->ready_queue) && list_empty(&cq->upcoming_queue))
|
||||||
list_del(&cq->node);
|
list_del(&cq->node);
|
||||||
memcpy(&buf[len], qm->msg, qm->len);
|
memcpy(&buf[len], qm->msg, qm->len);
|
||||||
len += qm->len;
|
len += qm->len;
|
||||||
|
@ -523,10 +523,10 @@ check_send_command(struct serialqueue *sq, int pending, double eventtime)
|
||||||
uint64_t min_stalled_clock = MAX_CLOCK, min_ready_clock = MAX_CLOCK;
|
uint64_t min_stalled_clock = MAX_CLOCK, min_ready_clock = MAX_CLOCK;
|
||||||
struct command_queue *cq;
|
struct command_queue *cq;
|
||||||
list_for_each_entry(cq, &sq->pending_queues, node) {
|
list_for_each_entry(cq, &sq->pending_queues, node) {
|
||||||
// Move messages from the stalled_queue to the ready_queue
|
// Move messages from the upcoming_queue to the ready_queue
|
||||||
while (!list_empty(&cq->stalled_queue)) {
|
while (!list_empty(&cq->upcoming_queue)) {
|
||||||
struct queue_message *qm = list_first_entry(
|
struct queue_message *qm = list_first_entry(
|
||||||
&cq->stalled_queue, struct queue_message, node);
|
&cq->upcoming_queue, struct queue_message, node);
|
||||||
if (ack_clock < qm->min_clock) {
|
if (ack_clock < qm->min_clock) {
|
||||||
if (qm->min_clock < min_stalled_clock)
|
if (qm->min_clock < min_stalled_clock)
|
||||||
min_stalled_clock = qm->min_clock;
|
min_stalled_clock = qm->min_clock;
|
||||||
|
@ -534,7 +534,7 @@ check_send_command(struct serialqueue *sq, int pending, double eventtime)
|
||||||
}
|
}
|
||||||
list_del(&qm->node);
|
list_del(&qm->node);
|
||||||
list_add_tail(&qm->node, &cq->ready_queue);
|
list_add_tail(&qm->node, &cq->ready_queue);
|
||||||
sq->stalled_bytes -= qm->len;
|
sq->upcoming_bytes -= qm->len;
|
||||||
sq->ready_bytes += qm->len;
|
sq->ready_bytes += qm->len;
|
||||||
}
|
}
|
||||||
// Update min_ready_clock
|
// Update min_ready_clock
|
||||||
|
@ -714,7 +714,7 @@ serialqueue_free(struct serialqueue *sq)
|
||||||
&sq->pending_queues, struct command_queue, node);
|
&sq->pending_queues, struct command_queue, node);
|
||||||
list_del(&cq->node);
|
list_del(&cq->node);
|
||||||
message_queue_free(&cq->ready_queue);
|
message_queue_free(&cq->ready_queue);
|
||||||
message_queue_free(&cq->stalled_queue);
|
message_queue_free(&cq->upcoming_queue);
|
||||||
}
|
}
|
||||||
pthread_mutex_unlock(&sq->lock);
|
pthread_mutex_unlock(&sq->lock);
|
||||||
pollreactor_free(sq->pr);
|
pollreactor_free(sq->pr);
|
||||||
|
@ -728,7 +728,7 @@ serialqueue_alloc_commandqueue(void)
|
||||||
struct command_queue *cq = malloc(sizeof(*cq));
|
struct command_queue *cq = malloc(sizeof(*cq));
|
||||||
memset(cq, 0, sizeof(*cq));
|
memset(cq, 0, sizeof(*cq));
|
||||||
list_init(&cq->ready_queue);
|
list_init(&cq->ready_queue);
|
||||||
list_init(&cq->stalled_queue);
|
list_init(&cq->upcoming_queue);
|
||||||
return cq;
|
return cq;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -738,7 +738,7 @@ serialqueue_free_commandqueue(struct command_queue *cq)
|
||||||
{
|
{
|
||||||
if (!cq)
|
if (!cq)
|
||||||
return;
|
return;
|
||||||
if (!list_empty(&cq->ready_queue) || !list_empty(&cq->stalled_queue)) {
|
if (!list_empty(&cq->ready_queue) || !list_empty(&cq->upcoming_queue)) {
|
||||||
errorf("Memory leak! Can't free non-empty commandqueue");
|
errorf("Memory leak! Can't free non-empty commandqueue");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -784,12 +784,12 @@ serialqueue_send_batch(struct serialqueue *sq, struct command_queue *cq
|
||||||
return;
|
return;
|
||||||
qm = list_first_entry(msgs, struct queue_message, node);
|
qm = list_first_entry(msgs, struct queue_message, node);
|
||||||
|
|
||||||
// Add list to cq->stalled_queue
|
// Add list to cq->upcoming_queue
|
||||||
pthread_mutex_lock(&sq->lock);
|
pthread_mutex_lock(&sq->lock);
|
||||||
if (list_empty(&cq->ready_queue) && list_empty(&cq->stalled_queue))
|
if (list_empty(&cq->ready_queue) && list_empty(&cq->upcoming_queue))
|
||||||
list_add_tail(&cq->node, &sq->pending_queues);
|
list_add_tail(&cq->node, &sq->pending_queues);
|
||||||
list_join_tail(msgs, &cq->stalled_queue);
|
list_join_tail(msgs, &cq->upcoming_queue);
|
||||||
sq->stalled_bytes += len;
|
sq->upcoming_bytes += len;
|
||||||
int mustwake = 0;
|
int mustwake = 0;
|
||||||
if (qm->min_clock < sq->need_kick_clock) {
|
if (qm->min_clock < sq->need_kick_clock) {
|
||||||
sq->need_kick_clock = 0;
|
sq->need_kick_clock = 0;
|
||||||
|
@ -925,13 +925,13 @@ serialqueue_get_stats(struct serialqueue *sq, char *buf, int len)
|
||||||
" bytes_retransmit=%u bytes_invalid=%u"
|
" bytes_retransmit=%u bytes_invalid=%u"
|
||||||
" send_seq=%u receive_seq=%u retransmit_seq=%u"
|
" send_seq=%u receive_seq=%u retransmit_seq=%u"
|
||||||
" srtt=%.3f rttvar=%.3f rto=%.3f"
|
" srtt=%.3f rttvar=%.3f rto=%.3f"
|
||||||
" ready_bytes=%u stalled_bytes=%u"
|
" ready_bytes=%u upcoming_bytes=%u"
|
||||||
, stats.bytes_write, stats.bytes_read
|
, stats.bytes_write, stats.bytes_read
|
||||||
, stats.bytes_retransmit, stats.bytes_invalid
|
, stats.bytes_retransmit, stats.bytes_invalid
|
||||||
, (int)stats.send_seq, (int)stats.receive_seq
|
, (int)stats.send_seq, (int)stats.receive_seq
|
||||||
, (int)stats.retransmit_seq
|
, (int)stats.retransmit_seq
|
||||||
, stats.srtt, stats.rttvar, stats.rto
|
, stats.srtt, stats.rttvar, stats.rto
|
||||||
, stats.ready_bytes, stats.stalled_bytes);
|
, stats.ready_bytes, stats.upcoming_bytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Extract old messages stored in the debug queues
|
// Extract old messages stored in the debug queues
|
||||||
|
|
Loading…
Reference in New Issue