[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <IA1PR11MB62665A55D20446570A27228AE4652@IA1PR11MB6266.namprd11.prod.outlook.com>
Date: Fri, 13 Sep 2024 22:45:49 +0000
From: "Mogilappagari, Sudheer" <sudheer.mogilappagari@...el.com>
To: Vladimir Oltean <vladimir.oltean@....com>, "netdev@...r.kernel.org"
<netdev@...r.kernel.org>
CC: Michal Kubecek <mkubecek@...e.cz>, Jakub Kicinski <kuba@...nel.org>
Subject: RE: [PATCH ethtool] netlink: rss: retrieve ring count using
ETHTOOL_GRXRINGS ioctl
> -----Original Message-----
> From: Mogilappagari, Sudheer
> Sent: Friday, September 13, 2024 3:43 PM
> To: Vladimir Oltean <vladimir.oltean@....com>; netdev@...r.kernel.org
> Cc: Michal Kubecek <mkubecek@...e.cz>; Jakub Kicinski <kuba@...nel.org>
> Subject: RE: [PATCH ethtool] netlink: rss: retrieve ring count using
> ETHTOOL_GRXRINGS ioctl
>
>
>
> > -----Original Message-----
> > From: Vladimir Oltean <vladimir.oltean@....com>
> > Sent: Friday, September 13, 2024 2:38 AM
> > To: netdev@...r.kernel.org
> > Cc: Michal Kubecek <mkubecek@...e.cz>; Jakub Kicinski
> > <kuba@...nel.org>; Mogilappagari, Sudheer
> > <sudheer.mogilappagari@...el.com>
> > Subject: [PATCH ethtool] netlink: rss: retrieve ring count using
> > ETHTOOL_GRXRINGS ioctl
> >
> > Several drivers regressed when ethtool --show-rxfh was converted from
> > ioctl to netlink. This is because ETHTOOL_GRXRINGS was converted to
> > ETHTOOL_MSG_CHANNELS_GET, which is semantically equivalent to
> > ETHTOOL_GCHANNELS but different from ETHTOOL_GRXRINGS. Drivers which
> > implement ETHTOOL_GRXRINGS do not necessarily implement
> > ETHTOOL_GCHANNELS or its netlink equivalent.
> >
> > According to the man page, "A channel is an IRQ and the set of queues
> > that can trigger that IRQ.", which is different from the definition
> of
> > a queue/ring. So we shouldn't be attempting to query the # of rings
> > for the ioctl variant, but the # of channels for the netlink variant
> > anyway.
> >
> > Reimplement the args->num_rings retrieval as in do_grxfh(), aka using
> > the ETHTOOL_GRXRINGS ioctl.
> >
>
>
> > - if (tb[ETHTOOL_A_CHANNELS_RX_COUNT])
> > - args->num_rings +=
> > mnl_attr_get_u32(tb[ETHTOOL_A_CHANNELS_RX_COUNT]);
> > - return MNL_CB_OK;
> > + ret = ioctl_init(ctx, false);
> > + if (ret)
> > + return ret;
> > +
> > + ret = send_ioctl(ctx, &ring_count);
> > + if (ret) {
> > + perror("Cannot get RX ring count");
> > + return ret;
> > + }
> > +
> > + args->num_rings = (u32)ring_count.data;
> > +
> > + return 0;
> > }
> >
>
> Hi Vladimir, my understanding is ioctls are not used in ethtool netlink
> path. Can we use ETHTOOL_MSG_RINGS_GET (tb[ETHTOOL_A_RINGS_RX] member)
> instead ?
>
> Couldn't work on this since I was on sabbatical till this week.
I see Jakub ack'ed this. Please ignore my comment above.
Powered by blists - more mailing lists