From dbdb3e1a55ca692df2a95381aa8d91788fc9e49f Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Tue, 11 Dec 2012 22:20:12 +0100 Subject: [PATCH] ifpps: show rate if available Signed-off-by: Daniel Borkmann --- src/ifpps.c | 10 ++++++++-- src/xutils.c | 16 +++++++++++++++- src/xutils.h | 3 ++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/ifpps.c b/src/ifpps.c index 9fc7b1ea..52da7293 100644 --- a/src/ifpps.c +++ b/src/ifpps.c @@ -507,14 +507,20 @@ static void screen_init(WINDOW **screen) static void screen_header(WINDOW *screen, const char *ifname, int *voff, uint64_t ms_interval) { + char buff[64]; struct ethtool_drvinfo drvinf; + const char *rate = ethtool_bitrate_str(ethtool_bitrate(ifname)); memset(&drvinf, 0, sizeof(drvinf)); ethtool_drvinf(ifname, &drvinf); + memset(buff, 0, sizeof(buff)); + if (rate) + slprintf(buff, sizeof(buff), ", %s", rate); + mvwprintw(screen, (*voff)++, 2, - "Kernel net/sys statistics for %s (%s), t=%lums", - ifname, drvinf.driver, ms_interval); + "Kernel net/sys statistics for %s (%s%s), t=%lums", + ifname, drvinf.driver, buff, ms_interval); } static void screen_net_dev_rel(WINDOW *screen, const struct ifstat *rel, diff --git a/src/xutils.c b/src/xutils.c index 409fd184..0db07bb7 100644 --- a/src/xutils.c +++ b/src/xutils.c @@ -337,7 +337,20 @@ int wireless_rangemax_sigqual(const char *ifname) return sigqual; } -int ethtool_bitrate(const char *ifname) +const char*ethtool_bitrate_str(u32 bitrate) +{ + const char * const bitstrs[] = { + [SPEED_10] = "10Mbit/s", + [SPEED_100] = "100Mbit/s", + [SPEED_1000] = "1Gbit/s", + [SPEED_2500] = "2.5Gbit/s", + [SPEED_10000] = "10Gbit/s", + }; + + return bitstrs[bitrate]; +} + +u32 ethtool_bitrate(const char *ifname) { int ret, sock, bitrate; struct ifreq ifr; @@ -363,6 +376,7 @@ int ethtool_bitrate(const char *ifname) case SPEED_10: case SPEED_100: case SPEED_1000: + case SPEED_2500: case SPEED_10000: bitrate = ecmd.speed; break; diff --git a/src/xutils.h b/src/xutils.h index 757e94da..001c212b 100644 --- a/src/xutils.h +++ b/src/xutils.h @@ -42,7 +42,8 @@ extern int wireless_bitrate(const char *ifname); extern int adjust_dbm_level(int in_dbm, int dbm_val); extern int wireless_sigqual(const char *ifname, struct iw_statistics *stats); extern int wireless_rangemax_sigqual(const char *ifname); -extern int ethtool_bitrate(const char *ifname); +extern u32 ethtool_bitrate(const char *ifname); +extern const char*ethtool_bitrate_str(u32 bitrate); extern int ethtool_drvinf(const char *ifname, struct ethtool_drvinfo *drvinf); extern int device_bitrate(const char *ifname); extern int device_mtu(const char *ifname); -- 2.11.4.GIT