Skip to content

Commit ba09c34

Browse files
author
Jarkko Paso
committed
Added adaptation layer TX queue size statistic
1 parent 2fe2a6c commit ba09c34

File tree

4 files changed

+15
-1
lines changed

4 files changed

+15
-1
lines changed

nanostack/nwk_stats_api.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,9 @@ typedef struct nwk_stats_t {
7070
/* ETX */
7171
uint16_t etx_1st_parent; /**< Primary parent ETX. */
7272
uint16_t etx_2nd_parent; /**< Secondary parent ETX. */
73-
73+
/* MAC */
74+
uint16_t adapt_layer_tx_queue_size; /**< Adaptation layer direct TX queue size. */
75+
uint16_t adapt_layer_tx_queue_peak; /**< Adaptation layer direct TX queue size peak. */
7476
} nwk_stats_t;
7577

7678
/**

source/6LoWPAN/adaptation_interface.c

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ typedef struct {
9292
fragmenter_tx_entry_t active_unicast_tx_buf; //Current active direct unicast tx process
9393
fragmenter_tx_entry_t active_broadcast_tx_buf; //Current active direct broadcast tx process
9494
buffer_list_t directTxQueue; //Waiting free tx process
95+
uint16_t directTxQueue_size;
9596
uint16_t indirect_big_packet_threshold;
9697
uint16_t max_indirect_big_packets_total;
9798
uint16_t max_indirect_small_packets_per_child;
@@ -216,6 +217,8 @@ static void lowpan_adaptation_tx_queue_write(fragmenter_interface_t *interface_p
216217
} else {
217218
ns_list_add_to_end(&interface_ptr->directTxQueue, buf);
218219
}
220+
interface_ptr->directTxQueue_size++;
221+
protocol_stats_update(STATS_AL_TX_QUEUE_SIZE, interface_ptr->directTxQueue_size);
219222
}
220223

221224
static buffer_t *lowpan_adaptation_tx_queue_read(fragmenter_interface_t *interface_ptr, protocol_interface_info_entry_t *cur)
@@ -231,6 +234,8 @@ static buffer_t *lowpan_adaptation_tx_queue_read(fragmenter_interface_t *interfa
231234
} else if ((buf->link_specific.ieee802_15_4.requestAck && !interface_ptr->active_unicast_tx_buf.buf)
232235
|| (!buf->link_specific.ieee802_15_4.requestAck && !interface_ptr->active_broadcast_tx_buf.buf)) {
233236
ns_list_remove(&interface_ptr->directTxQueue, buf);
237+
interface_ptr->directTxQueue_size--;
238+
protocol_stats_update(STATS_AL_TX_QUEUE_SIZE, interface_ptr->directTxQueue_size);
234239
return buf;
235240
}
236241
}

source/NWK_INTERFACE/Include/protocol_stats.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ typedef enum {
4444
STATS_BUFFER_HEADROOM_FAIL,
4545
STATS_ETX_1ST_PARENT,
4646
STATS_ETX_2ND_PARENT,
47+
STATS_AL_TX_QUEUE_SIZE
4748

4849
} nwk_stats_type_t;
4950

source/NWK_INTERFACE/protocol_stats.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ void protocol_stats_update(nwk_stats_type_t type, uint16_t update_val)
146146
case STATS_ETX_2ND_PARENT:
147147
nwk_stats_ptr->etx_2nd_parent = update_val;
148148
break;
149+
case STATS_AL_TX_QUEUE_SIZE:
150+
nwk_stats_ptr->adapt_layer_tx_queue_size = update_val;
151+
if (nwk_stats_ptr->adapt_layer_tx_queue_size > nwk_stats_ptr->adapt_layer_tx_queue_peak) {
152+
nwk_stats_ptr->adapt_layer_tx_queue_peak = nwk_stats_ptr->adapt_layer_tx_queue_size;
153+
}
154+
break;
149155
}
150156
}
151157
}

0 commit comments

Comments
 (0)