Skip to content

Commit

Permalink
compat: Add gen_stats include to define tc hw stats.
Browse files Browse the repository at this point in the history
Update kernel UAPI to support dumping hardware stats
of tc filters.

Signed-off-by: Paul Blakey <[email protected]>
Reviewed-by: Roi Dayan <[email protected]>
Reviewed-by: Maxime Coquelin <[email protected]>
Signed-off-by: Ilya Maximets <[email protected]>
  • Loading branch information
Paul Blakey authored and igsilya committed Mar 4, 2022
1 parent 015994d commit de634e4
Show file tree
Hide file tree
Showing 3 changed files with 89 additions and 0 deletions.
7 changes: 7 additions & 0 deletions acinclude.m4
Original file line number Diff line number Diff line change
Expand Up @@ -305,6 +305,13 @@ AC_DEFUN([OVS_CHECK_LINUX_TC], [
])],
[AC_DEFINE([HAVE_TCA_SKBEDIT_FLAGS], [1],
[Define to 1 if TCA_SKBEDIT_FLAGS is available.])])
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([#include <linux/gen_stats.h>], [
int x = TCA_STATS_PKT64;
])],
[AC_DEFINE([HAVE_TCA_STATS_PKT64], [1],
[Define to 1 if TCA_STATS_PKT64 is available.])])
])

dnl OVS_CHECK_LINUX_SCTP_CT
Expand Down
1 change: 1 addition & 0 deletions include/linux/automake.mk
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ noinst_HEADERS += \
include/linux/netlink.h \
include/linux/netfilter/nf_conntrack_sctp.h \
include/linux/pkt_cls.h \
include/linux/gen_stats.h \
include/linux/tc_act/tc_mpls.h \
include/linux/tc_act/tc_pedit.h \
include/linux/tc_act/tc_skbedit.h \
Expand Down
81 changes: 81 additions & 0 deletions include/linux/gen_stats.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
#ifndef __LINUX_GEN_STATS_WRAPPER_H
#define __LINUX_GEN_STATS_WRAPPER_H 1

#if defined(__KERNEL__) || defined(HAVE_TCA_STATS_PKT64)
#include_next <linux/gen_stats.h>
#else
#include <linux/types.h>

enum {
TCA_STATS_UNSPEC,
TCA_STATS_BASIC,
TCA_STATS_RATE_EST,
TCA_STATS_QUEUE,
TCA_STATS_APP,
TCA_STATS_RATE_EST64,
TCA_STATS_PAD,
TCA_STATS_BASIC_HW,
TCA_STATS_PKT64,
__TCA_STATS_MAX,
};
#define TCA_STATS_MAX (__TCA_STATS_MAX - 1)

/**
* struct gnet_stats_basic - byte/packet throughput statistics
* @bytes: number of seen bytes
* @packets: number of seen packets
*/
struct gnet_stats_basic {
__u64 bytes;
__u32 packets;
};

/**
* struct gnet_stats_rate_est - rate estimator
* @bps: current byte rate
* @pps: current packet rate
*/
struct gnet_stats_rate_est {
__u32 bps;
__u32 pps;
};

/**
* struct gnet_stats_rate_est64 - rate estimator
* @bps: current byte rate
* @pps: current packet rate
*/
struct gnet_stats_rate_est64 {
__u64 bps;
__u64 pps;
};

/**
* struct gnet_stats_queue - queuing statistics
* @qlen: queue length
* @backlog: backlog size of queue
* @drops: number of dropped packets
* @requeues: number of requeues
* @overlimits: number of enqueues over the limit
*/
struct gnet_stats_queue {
__u32 qlen;
__u32 backlog;
__u32 drops;
__u32 requeues;
__u32 overlimits;
};

/**
* struct gnet_estimator - rate estimator configuration
* @interval: sampling period
* @ewma_log: the log of measurement window weight
*/
struct gnet_estimator {
signed char interval;
unsigned char ewma_log;
};

#endif /* __KERNEL__ || !HAVE_TCA_STATS_PKT64 */
#endif /* __LINUX_GEN_STATS_WRAPPER_H */

0 comments on commit de634e4

Please sign in to comment.