Skip to content

Commit

Permalink
Adaption layer queue trace update
Browse files Browse the repository at this point in the history
Adaptation layer print TX queue level every 20 buffer update
and bug fixed neighbour remove update queue size also.
  • Loading branch information
Juha Heiuskanen committed Dec 2, 2020
1 parent 5a32f4a commit 3158e96
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 0 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
* Added trace for mbed TLS errors
* Optimized medium size network MPL parameters for 40 seconds multicast interval
* Added traces to EAPOL TX failure
* Added traces to Adaptation layer for Direct TX queue level decrease or increase by 20
* New Network statitis info for Randon early detetction dropped packet at Adaptation layer.

### Bugfix
Expand Down
20 changes: 20 additions & 0 deletions source/6LoWPAN/adaptation_interface.c
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ typedef void (adaptation_etx_update_cb)(protocol_interface_info_entry_t *cur, bu
#define tr_debug_extra(...)
#endif

#define ADAPTION_DIRECT_TX_QUEUE_SIZE_THRESHOLD_TRACE 20

typedef struct {
uint16_t tag; /*!< Fragmentation datagram TAG ID */
uint16_t size; /*!< Datagram Total Size (uncompressed) */
Expand Down Expand Up @@ -95,6 +97,7 @@ typedef struct {
fragmenter_tx_list_t activeUnicastList; //Unicast packets waiting data confirmation from MAC
buffer_list_t directTxQueue; //Waiting free tx process
uint16_t directTxQueue_size;
uint16_t directTxQueue_level;
uint16_t activeTxList_size;
uint16_t indirect_big_packet_threshold;
uint16_t max_indirect_big_packets_total;
Expand Down Expand Up @@ -208,6 +211,16 @@ static struct protocol_interface_info_entry *lowpan_adaptation_network_interface
}


static void lowpan_adaptation_tx_queue_level_update(fragmenter_interface_t *interface_ptr)
{
if (interface_ptr->directTxQueue_size == interface_ptr->directTxQueue_level + ADAPTION_DIRECT_TX_QUEUE_SIZE_THRESHOLD_TRACE ||
interface_ptr->directTxQueue_size == interface_ptr->directTxQueue_level - ADAPTION_DIRECT_TX_QUEUE_SIZE_THRESHOLD_TRACE) {
interface_ptr->directTxQueue_level = interface_ptr->directTxQueue_size;
tr_info("Adaptation layer TX queue size %u Active MAC tx request %u", interface_ptr->directTxQueue_level, interface_ptr->activeTxList_size);
}
}


static void lowpan_adaptation_tx_queue_write(fragmenter_interface_t *interface_ptr, buffer_t *buf, bool push_to_first)
{
buffer_t *lower_priority_buf = NULL;
Expand All @@ -230,6 +243,7 @@ static void lowpan_adaptation_tx_queue_write(fragmenter_interface_t *interface_p
ns_list_add_to_end(&interface_ptr->directTxQueue, buf);
}
interface_ptr->directTxQueue_size++;
lowpan_adaptation_tx_queue_level_update(interface_ptr);
protocol_stats_update(STATS_AL_TX_QUEUE_SIZE, interface_ptr->directTxQueue_size);
}

Expand All @@ -243,6 +257,7 @@ static buffer_t *lowpan_adaptation_tx_queue_read(fragmenter_interface_t *interfa
if (lowpan_buffer_tx_allowed(interface_ptr, buf)) {
ns_list_remove(&interface_ptr->directTxQueue, buf);
interface_ptr->directTxQueue_size--;
lowpan_adaptation_tx_queue_level_update(interface_ptr);
protocol_stats_update(STATS_AL_TX_QUEUE_SIZE, interface_ptr->directTxQueue_size);
return buf;
}
Expand Down Expand Up @@ -377,6 +392,7 @@ int8_t lowpan_adaptation_interface_init(int8_t interface_id, uint16_t mac_mtu_si
ns_list_init(&interface_ptr->activeUnicastList);
interface_ptr->activeTxList_size = 0;
interface_ptr->directTxQueue_size = 0;
interface_ptr->directTxQueue_level = 0;
interface_ptr->mac_tx_overflow_reported = false;

ns_list_add_to_end(&fragmenter_interface_list, interface_ptr);
Expand Down Expand Up @@ -412,6 +428,7 @@ int8_t lowpan_adaptation_interface_free(int8_t interface_id)

buffer_free_list(&interface_ptr->directTxQueue);
interface_ptr->directTxQueue_size = 0;
interface_ptr->directTxQueue_level = 0;
//Free Dynamic allocated entries
ns_dyn_mem_free(interface_ptr->fragment_indirect_tx_buffer);
ns_dyn_mem_free(interface_ptr);
Expand Down Expand Up @@ -441,6 +458,7 @@ int8_t lowpan_adaptation_interface_reset(int8_t interface_id)

buffer_free_list(&interface_ptr->directTxQueue);
interface_ptr->directTxQueue_size = 0;
interface_ptr->directTxQueue_level = 0;

return 0;
}
Expand Down Expand Up @@ -1553,6 +1571,8 @@ int8_t lowpan_adaptation_free_messages_from_queues_by_address(struct protocol_in
ns_list_foreach_safe(buffer_t, entry, &interface_ptr->directTxQueue) {
if (lowpan_tx_buffer_address_compare(&entry->dst_sa, address_ptr, adr_type)) {
ns_list_remove(&interface_ptr->directTxQueue, entry);
interface_ptr->directTxQueue_size--;
lowpan_adaptation_tx_queue_level_update(interface_ptr);
socket_tx_buffer_event_and_free(entry, SOCKET_TX_FAIL);
}
}
Expand Down

0 comments on commit 3158e96

Please sign in to comment.