diff options
author | Daniel Borkmann <dborkman@redhat.com> | 2013-03-16 17:59:35 +0100 |
---|---|---|
committer | Daniel Borkmann <dborkman@redhat.com> | 2013-03-16 17:59:35 +0100 |
commit | 4262e95c1c0a09c7f98ea6623d364bfda41e8bec (patch) | |
tree | 64309f7b022b5ed7e730d35589a221c6b336f026 | |
parent | 7a3b0f2226f7ad5f5ba20bcab5ef0f5c2b75e17d (diff) |
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 <dborkman@redhat.com>
-rw-r--r-- | ring.h | 21 |
1 files changed, 8 insertions, 13 deletions
@@ -134,14 +134,14 @@ static inline void set_sockopt_tpacket(int sock) #ifdef __WITH_HARDWARE_TIMESTAMPING # include <linux/net_tstamp.h> -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 */ |