Geva, Erez <erez.geva....@siemens.com> writes:
> It make sense for HWTS_FILTER_NORMAL. > > But for HWTSTAMP_FILTER_ALL, it does not make sense to get > HWTSTAMP_FILTER_SOME. > Some of what? You ask for all! Yeah, there isn't really anything besides ALL thas this could timestamp. I'll just modify the HWTS_FILTER_NORMAL then. > Neither can you use rx_filter in this case, since it was not used in > the SIOCSHWTSTAMP request. > > Erez > > ________________________________________ > From: Petr Machata [pe...@mellanox.com] > Sent: 11 June 2019 15:18 > To: linuxptp-devel@lists.sourceforge.net > Subject: [Linuxptp-devel] [PATCH v3] sk: Recognize HWTSTAMP_FILTER_SOME > > struct hwtstamp_config.rx_filter passed to SIOCSHWTSTAMP can be updated by > the kernel with the value of HWTSTAMP_FILTER_SOME. That indicates that all > requested packets will be timestamped, and some others as well. > > Update hwts_init() to recognize this as a valid response, instead of > rejecting it as mismatch. > > Cc: "Keller, Jacob E" <jacob.e.kel...@intel.com> > Signed-off-by: Petr Machata <pe...@mellanox.com> > --- > > Notes: > v3: > - Do not permit HWTSTAMP_FILTER_SOME for SIOCGHWTSTAMP. > > v2: > - Fix whitespace. > > sk.c | 9 +++++++-- > 1 file changed, 7 insertions(+), 2 deletions(-) > > diff --git a/sk.c b/sk.c > index 93ba77a..8fda9c2 100644 > --- a/sk.c > +++ b/sk.c > @@ -61,6 +61,7 @@ static int hwts_init(int fd, const char *device, int > rx_filter, > { > struct ifreq ifreq; > struct hwtstamp_config cfg; > + int orig_rx_filter; > int err; > > init_ifreq(&ifreq, &cfg, device); > @@ -81,17 +82,19 @@ static int hwts_init(int fd, const char *device, int > rx_filter, > pr_err("ioctl SIOCSHWTSTAMP failed: %m"); > return err; > } > + if (cfg.rx_filter == HWTSTAMP_FILTER_SOME) > + cfg.rx_filter = rx_filter; > break; > case HWTS_FILTER_NORMAL: > cfg.tx_type = tx_type; > - cfg.rx_filter = rx_filter; > + cfg.rx_filter = orig_rx_filter = rx_filter; > err = ioctl(fd, SIOCSHWTSTAMP, &ifreq); > if (err < 0) { > pr_info("driver rejected most general HWTSTAMP > filter"); > > init_ifreq(&ifreq, &cfg, device); > cfg.tx_type = tx_type; > - cfg.rx_filter = rx_filter2; > + cfg.rx_filter = orig_rx_filter = rx_filter2; > > err = ioctl(fd, SIOCSHWTSTAMP, &ifreq); > if (err < 0) { > @@ -99,6 +102,8 @@ static int hwts_init(int fd, const char *device, int > rx_filter, > return err; > } > } > + if (cfg.rx_filter == HWTSTAMP_FILTER_SOME) > + cfg.rx_filter = orig_rx_filter; > break; > } _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel