From 4262e95c1c0a09c7f98ea6623d364bfda41e8bec Mon Sep 17 00:00:00 2001 From: Daniel Borkmann Date: Sat, 16 Mar 2013 17:59:35 +0100 Subject: ring: don't care if we cannot active hw timestamping Hw timestaming is currently done, if we have the header file from the kernel available. If it fails, we currently bail out, which is bullshit. Just returning is enough, since some users might have the header available, but not a NIC supporting hw timestaming. Signed-off-by: Daniel Borkmann --- ring.h | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/ring.h b/ring.h index 75f4d26..3306ba1 100644 --- a/ring.h +++ b/ring.h @@ -134,14 +134,14 @@ static inline void set_sockopt_tpacket(int sock) #ifdef __WITH_HARDWARE_TIMESTAMPING # include -static inline void set_sockopt_hwtimestamp(int sock, const char *dev) +static inline int set_sockopt_hwtimestamp(int sock, const char *dev) { int timesource, ret; struct hwtstamp_config hwconfig; struct ifreq ifr; if (!strncmp("any", dev, strlen("any"))) - return; + return -1; memset(&hwconfig, 0, sizeof(hwconfig)); hwconfig.tx_type = HWTSTAMP_TX_ON; @@ -152,23 +152,18 @@ static inline void set_sockopt_hwtimestamp(int sock, const char *dev) ifr.ifr_data = &hwconfig; ret = ioctl(sock, SIOCSHWTSTAMP, &ifr); - if (ret < 0) { - if (errno == EOPNOTSUPP) - return; - panic("Cannot set timestamping: %s\n", strerror(errno)); - } + if (ret < 0) + return -1; timesource = SOF_TIMESTAMPING_RAW_HARDWARE; - ret = setsockopt(sock, SOL_PACKET, PACKET_TIMESTAMP, ×ource, - sizeof(timesource)); - if (ret) - panic("Cannot set timestamping: %s!\n", strerror(errno)); + return setsockopt(sock, SOL_PACKET, PACKET_TIMESTAMP, ×ource, + sizeof(timesource)); } #else -static inline void set_sockopt_hwtimestamp(int sock, const char *dev) +static inline int set_sockopt_hwtimestamp(int sock, const char *dev) { - return; + return -1; } #endif #endif /* RING_H */ -- cgit v1.2.3-54-g00ecf