From 447d4d442c64437147e4c7901f7a3b3175171bbb Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Sun, 18 Dec 2011 09:35:41 +0100 Subject: [PATCH] udp: bring a warning or error if the driver changes our hwtstamp options. Signed-off-by: Richard Cochran --- udp.c | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/udp.c b/udp.c index bbb507b..ee31ba5 100644 --- a/udp.c +++ b/udp.c @@ -42,7 +42,7 @@ static int hwts_init(int fd, char *device) { struct ifreq ifreq; - struct hwtstamp_config cfg; + struct hwtstamp_config cfg, req; int err; memset(&ifreq, 0, sizeof(ifreq)); @@ -54,11 +54,22 @@ static int hwts_init(int fd, char *device) cfg.tx_type = HWTSTAMP_TX_ON; cfg.rx_filter = HWTSTAMP_FILTER_PTP_V2_EVENT; + req = cfg; err = ioctl(fd, SIOCSHWTSTAMP, &ifreq); if (err < 0) pr_err("ioctl SIOCSHWTSTAMP failed: %m"); - printf("tx_type %d\n" "rx_filter %d\n", cfg.tx_type, cfg.rx_filter); + if (memcmp(&cfg, &req, sizeof(cfg))) { + + pr_warning("driver changed our HWTSTAMP options"); + pr_warning("tx_type %d not %d", cfg.tx_type, req.tx_type); + pr_warning("rx_filter %d not %d", cfg.rx_filter, req.rx_filter); + + if (cfg.tx_type != HWTSTAMP_TX_ON || + cfg.rx_filter != HWTSTAMP_FILTER_ALL) { + return -1; + } + } return err ? errno : 0; }