From eb8ed5e4ebef1b34bc6dd749fb7210cac618a9fe Mon Sep 17 00:00:00 2001 From: Dimitri Staessens Date: Wed, 28 Feb 2018 14:06:01 +0100 Subject: lib: Add fccntl operation to get queue lengths This adds the FLOWGRXQLEN and FLOWGTXQLEN operations to fccntl to get the number of packets that are in the receive and transmit buffers respectively. The flow statistics are updated to show these queue lengths. Signed-off-by: Dimitri Staessens Signed-off-by: Sander Vrijders --- src/lib/dev.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/lib/dev.c') diff --git a/src/lib/dev.c b/src/lib/dev.c index 99ab4359..7e829a5f 100644 --- a/src/lib/dev.c +++ b/src/lib/dev.c @@ -670,6 +670,7 @@ int fccntl(int fd, qosspec_t * qs; uint32_t rx_acl; uint32_t tx_acl; + size_t * qlen; struct flow * flow; if (fd < 0 || fd >= PROG_MAX_FLOWS) @@ -728,6 +729,14 @@ int fccntl(int fd, goto einval; *qs = flow->spec; break; + case FLOWGRXQLEN: + qlen = va_arg(l, size_t *); + *qlen = shm_rbuff_queued(flow->rx_rb); + break; + case FLOWGTXQLEN: + qlen = va_arg(l, size_t *); + *qlen = shm_rbuff_queued(flow->rx_rb); + break; case FLOWSFLAGS: flow->oflags = va_arg(l, uint32_t); rx_acl = shm_rbuff_get_acl(flow->rx_rb); -- cgit v1.2.3