diff --git a/impl/src/layer2/layer2_tx.c b/impl/src/layer2/layer2_tx.c index 5d931eb..02e7fd5 100644 --- a/impl/src/layer2/layer2_tx.c +++ b/impl/src/layer2/layer2_tx.c @@ -96,10 +96,6 @@ result_t layer2_tx_fill_packet_queue(layer2_tx_t *ctx) result_t layer2_tx_add_empty_packet(layer2_tx_t *ctx, bool tx_request) { - if(packet_queue_get_free_space(&ctx->packet_queue) == 0) { - return ERR_NO_MEM; - } - layer2_packet_header_t header; header.dst_addr.addr[0] = 0xFFFF; @@ -111,7 +107,9 @@ result_t layer2_tx_add_empty_packet(layer2_tx_t *ctx, bool tx_request) header.tx_seq_nr = 0; // not used in empty packets header.tx_request = tx_request; - packet_queue_add(&ctx->packet_queue, &header, NULL, 0); + if (!packet_queue_add(&ctx->packet_queue, &header, NULL, 0)) { + return ERR_NO_MEM; + } return OK; } @@ -188,7 +186,10 @@ void layer2_tx_handle_ack(layer2_tx_t *ctx, uint8_t acked_seq) if(packets_available == 0) { // no packets left in queue, but an acknowledgement must be // transmitted. Add an empty packet to do that. - layer2_tx_add_empty_packet(ctx, false); + result_t res = layer2_tx_add_empty_packet(ctx, false); + if (res != OK) { + LOG(LVL_WARN, "Failed to add empty packet: %d.", res); + } } }