diff --git a/sys/include/net/gnrc/netif/pktq.h b/sys/include/net/gnrc/netif/pktq.h index 582f83757a..7138e3b5b4 100644 --- a/sys/include/net/gnrc/netif/pktq.h +++ b/sys/include/net/gnrc/netif/pktq.h @@ -46,6 +46,13 @@ extern "C" { */ int gnrc_netif_pktq_put(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt); +/** + * @brief Returns the overall usage of the packet queue resources + * + * @return Number of gnrc_pktqueue_t entries currently in use. + */ +unsigned gnrc_netif_pktq_usage(void); + /** * @brief Gets a packet from the packet send queue of a network interface * diff --git a/sys/net/gnrc/netif/pktq/gnrc_netif_pktq.c b/sys/net/gnrc/netif/pktq/gnrc_netif_pktq.c index b8ced8b893..11a9a3b23e 100644 --- a/sys/net/gnrc/netif/pktq/gnrc_netif_pktq.c +++ b/sys/net/gnrc/netif/pktq/gnrc_netif_pktq.c @@ -32,6 +32,18 @@ static gnrc_pktqueue_t *_get_free_entry(void) return NULL; } +unsigned gnrc_netif_pktq_usage(void) +{ + unsigned res = 0; + + for (unsigned i = 0; i < CONFIG_GNRC_NETIF_PKTQ_POOL_SIZE; i++) { + if (_pool[i].pkt != NULL) { + res++; + } + } + return res; +} + int gnrc_netif_pktq_put(gnrc_netif_t *netif, gnrc_pktsnip_t *pkt) { assert(netif != NULL);