On 25.10.2021 10:45:05, Jakub Kicinski wrote: > On Mon, 25 Oct 2021 15:27:18 +0200 Marc Kleine-Budde wrote: > > On 25.10.2021 15:11:49, Marc Kleine-Budde wrote: > > > On 14.10.2021 19:39:41, Guangbin Huang wrote: > > > > From: Hao Chen > > > > > > > > Add two new parameters ringparam_ext and extack for > > > > .get_ringparam and .set_ringparam to extend more ring params > > > > through netlink. > > > > > > > > Signed-off-by: Hao Chen > > > > Signed-off-by: Guangbin Huang > > > > > > While discussing a different ethtool ring param extension, > > > > Let me explain my requirements: > > > > There is a not Ethernet based bus system, called CAN (mainly used in the > > automotive and industrial world). It comes in 2 different generations or > > modes (CAN-2.0 and CAN-FD) and the 3rd one CAN-XL has already been > > specified. > > > > Due to different frame sizes used in these CAN modes and HW limitations, > > we need the possibility to set a RX/TX ring configuration for each of > > these modes. > > > > The approach Andrew suggested is two-fold. First introduce a "struct > > ethtool_kringparam" that's only used inside the kernel, as "struct > > ethtool_ringparam" is ABI. Then extend "struct ethtool_kringparam" as > > needed. > > Indeed, there are different ways to extend the API for drivers, > I think it comes down to personal taste. I find the "inheritance" > models in C (kstruct usually contains the old struct as some "base") > awkward. > > I don't think we have agreed-on best practice in the area. The set/get_coalesce as just extended, using a 3rd parameter for the new values: | int (*set_coalesce)(struct net_device *, | struct ethtool_coalesce *, | struct kernel_ethtool_coalesce *, | struct netlink_ext_ack *); https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=f3ccfda19319 regards, Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |