Message ID | 1706789109-36556-1-git-send-email-wangyunjian@huawei.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net-next] tun: Implement ethtool's get_channels() callback | expand |
Thu, Feb 01, 2024 at 01:05:09PM CET, wangyunjian@huawei.com wrote: >Implement the tun .get_channels functionality. This feature is necessary >for some tools, such as libxdp, which need to retrieve the queue count. > >Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Yunjian Wang wrote: > Implement the tun .get_channels functionality. This feature is necessary > for some tools, such as libxdp, which need to retrieve the queue count. > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> > --- > drivers/net/tun.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index afa5497f7c35..7cf448ff93ee 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c > @@ -3638,12 +3638,22 @@ static int tun_set_coalesce(struct net_device *dev, > return 0; > } > > +static void tun_get_channels(struct net_device *dev, > + struct ethtool_channels *channels) > +{ > + struct tun_struct *tun = netdev_priv(dev); > + > + channels->combined_count = tun->numqueues; > + channels->max_combined = MAX_TAP_QUEUES; Conditional on IFF_MULTI_QUEUE? > +} > + > static const struct ethtool_ops tun_ethtool_ops = { > .supported_coalesce_params = ETHTOOL_COALESCE_RX_MAX_FRAMES, > .get_drvinfo = tun_get_drvinfo, > .get_msglevel = tun_get_msglevel, > .set_msglevel = tun_set_msglevel, > .get_link = ethtool_op_get_link, > + .get_channels = tun_get_channels, > .get_ts_info = ethtool_op_get_ts_info, > .get_coalesce = tun_get_coalesce, > .set_coalesce = tun_set_coalesce, > -- > 2.33.0 >
> -----Original Message----- > From: Willem de Bruijn [mailto:willemdebruijn.kernel@gmail.com] > Sent: Thursday, February 1, 2024 11:43 PM > To: wangyunjian <wangyunjian@huawei.com>; > willemdebruijn.kernel@gmail.com; jasowang@redhat.com; kuba@kernel.org; > davem@davemloft.net > Cc: netdev@vger.kernel.org; linux-kernel@vger.kernel.org; xudingke > <xudingke@huawei.com>; wangyunjian <wangyunjian@huawei.com> > Subject: Re: [PATCH net-next] tun: Implement ethtool's get_channels() callback > > Yunjian Wang wrote: > > Implement the tun .get_channels functionality. This feature is > > necessary for some tools, such as libxdp, which need to retrieve the queue > count. > > > > Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> > > --- > > drivers/net/tun.c | 10 ++++++++++ > > 1 file changed, 10 insertions(+) > > > > diff --git a/drivers/net/tun.c b/drivers/net/tun.c index > > afa5497f7c35..7cf448ff93ee 100644 > > --- a/drivers/net/tun.c > > +++ b/drivers/net/tun.c > > @@ -3638,12 +3638,22 @@ static int tun_set_coalesce(struct net_device > *dev, > > return 0; > > } > > > > +static void tun_get_channels(struct net_device *dev, > > + struct ethtool_channels *channels) { > > + struct tun_struct *tun = netdev_priv(dev); > > + > > + channels->combined_count = tun->numqueues; > > + channels->max_combined = MAX_TAP_QUEUES; > > Conditional on IFF_MULTI_QUEUE? OK, like this? channels->combined_count = tun->numqueues; channels->max_combined = tun->flags & IFF_MULTI_QUEUE ? MAX_TAP_QUEUES : 1; Thanks > > > +} > > + > > static const struct ethtool_ops tun_ethtool_ops = { > > .supported_coalesce_params = ETHTOOL_COALESCE_RX_MAX_FRAMES, > > .get_drvinfo = tun_get_drvinfo, > > .get_msglevel = tun_get_msglevel, > > .set_msglevel = tun_set_msglevel, > > .get_link = ethtool_op_get_link, > > + .get_channels = tun_get_channels, > > .get_ts_info = ethtool_op_get_ts_info, > > .get_coalesce = tun_get_coalesce, > > .set_coalesce = tun_set_coalesce, > > -- > > 2.33.0 > > >
diff --git a/drivers/net/tun.c b/drivers/net/tun.c index afa5497f7c35..7cf448ff93ee 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -3638,12 +3638,22 @@ static int tun_set_coalesce(struct net_device *dev, return 0; } +static void tun_get_channels(struct net_device *dev, + struct ethtool_channels *channels) +{ + struct tun_struct *tun = netdev_priv(dev); + + channels->combined_count = tun->numqueues; + channels->max_combined = MAX_TAP_QUEUES; +} + static const struct ethtool_ops tun_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_RX_MAX_FRAMES, .get_drvinfo = tun_get_drvinfo, .get_msglevel = tun_get_msglevel, .set_msglevel = tun_set_msglevel, .get_link = ethtool_op_get_link, + .get_channels = tun_get_channels, .get_ts_info = ethtool_op_get_ts_info, .get_coalesce = tun_get_coalesce, .set_coalesce = tun_set_coalesce,
Implement the tun .get_channels functionality. This feature is necessary for some tools, such as libxdp, which need to retrieve the queue count. Signed-off-by: Yunjian Wang <wangyunjian@huawei.com> --- drivers/net/tun.c | 10 ++++++++++ 1 file changed, 10 insertions(+)