All of lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH net-next v4 0/6] Implement devlink-rate API and extend it
@ 2022-09-15 13:42 Michal Wilczynski
  2022-09-15 13:42 ` [RFC PATCH net-next v4 1/6] ice: Add function for move/reconfigure TxQ AQ command Michal Wilczynski
                   ` (6 more replies)
  0 siblings, 7 replies; 35+ messages in thread
From: Michal Wilczynski @ 2022-09-15 13:42 UTC (permalink / raw)
  To: netdev
  Cc: alexandr.lobakin, dchumak, maximmi, jiri, simon.horman,
	jacob.e.keller, jesse.brandeburg, przemyslaw.kitszel,
	Michal Wilczynski

This patch series implements devlink-rate for ice driver. Unfortunately
current API isn't flexible enough for our use case, so there is a need to
extend it. New object type 'queue' is being introduced, and more functions
has been changed to non-static, to enable the driver to export current
Tx scheduling configuration.

This patch series is a follow up for this thread:
https://lore.kernel.org/netdev/20220704114513.2958937-1-michal.wilczynski@intel.com/T/#u

V4:
- changed static variable counter to per port IDA to
  uniquely identify nodes

V3:
- removed shift macros, since FIELD_PREP is used
- added static_assert for struct
- removed unnecessary functions
- used tab instead of space in define

V2:
- fixed Alexandr comments
- refactored code to fix checkpatch issues
- added mutual exclusion for RDMA, DCB


Ben Shelton (1):
  ice: Add function for move/reconfigure TxQ AQ command

Michal Wilczynski (5):
  devlink: Extend devlink-rate api with queues and new parameters
  ice: Introduce new parameters in ice_sched_node
  ice: Implement devlink-rate API
  ice: Export Tx scheduler configuration to devlink-rate
  ice: Prevent ADQ, DCB and RDMA coexistence with Custom Tx scheduler

 .../net/ethernet/intel/ice/ice_adminq_cmd.h   |  41 +-
 drivers/net/ethernet/intel/ice/ice_common.c   |  75 ++-
 drivers/net/ethernet/intel/ice/ice_common.h   |   8 +
 drivers/net/ethernet/intel/ice/ice_dcb.c      |   2 +-
 drivers/net/ethernet/intel/ice/ice_dcb_lib.c  |   4 +
 drivers/net/ethernet/intel/ice/ice_devlink.c  | 598 ++++++++++++++++++
 drivers/net/ethernet/intel/ice/ice_devlink.h  |   2 +
 drivers/net/ethernet/intel/ice/ice_idc.c      |   5 +
 drivers/net/ethernet/intel/ice/ice_main.c     |   2 +
 drivers/net/ethernet/intel/ice/ice_sched.c    |  81 ++-
 drivers/net/ethernet/intel/ice/ice_sched.h    |  27 +-
 drivers/net/ethernet/intel/ice/ice_type.h     |   7 +
 drivers/net/ethernet/intel/ice/ice_virtchnl.c |  10 +
 .../net/ethernet/mellanox/mlx5/core/devlink.c |   6 +-
 .../mellanox/mlx5/core/esw/devlink_port.c     |   8 +-
 .../net/ethernet/mellanox/mlx5/core/esw/qos.c |  12 +-
 .../net/ethernet/mellanox/mlx5/core/esw/qos.h |  10 +-
 drivers/net/netdevsim/dev.c                   |  32 +-
 include/net/devlink.h                         |  56 +-
 include/uapi/linux/devlink.h                  |   8 +-
 net/core/devlink.c                            | 407 ++++++++++--
 21 files changed, 1284 insertions(+), 117 deletions(-)

-- 
2.35.1


^ permalink raw reply	[flat|nested] 35+ messages in thread
* Re: [RFC PATCH net-next v4 2/6] devlink: Extend devlink-rate api with queues and new parameters
  2022-09-15 13:42 ` [RFC PATCH net-next v4 2/6] devlink: Extend devlink-rate api with queues and new parameters Michal Wilczynski
@ 2022-09-19  9:22 ` Dan Carpenter
  0 siblings, 0 replies; 35+ messages in thread
From: kernel test robot @ 2022-09-19  7:22 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 9092 bytes --]

BCC: lkp(a)intel.com
CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220915134239.1935604-3-michal.wilczynski@intel.com>
References: <20220915134239.1935604-3-michal.wilczynski@intel.com>
TO: Michal Wilczynski <michal.wilczynski@intel.com>

Hi Michal,

[FYI, it's a private test report for your RFC patch.]
[auto build test WARNING on net-next/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Michal-Wilczynski/Implement-devlink-rate-API-and-extend-it/20220915-214539
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 8a26a9dee5e3679637edc6f8caf4beb5f3100dde
:::::: branch date: 4 days ago
:::::: commit date: 4 days ago
config: mips-randconfig-m031-20220918 (https://download.01.org/0day-ci/archive/20220919/202209191557.PkFshuDN-lkp(a)intel.com/config)
compiler: mips64el-linux-gcc (GCC) 12.1.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

New smatch warnings:
net/core/devlink.c:2039 devlink_nl_rate_set() error: uninitialized symbol 'rate'.
net/core/devlink.c:10399 devl_rate_node_create() warn: possible memory leak of 'rate_node'
net/core/devlink.c:10446 devl_rate_vport_create() warn: possible memory leak of 'devlink_rate'

Old smatch warnings:
net/core/devlink.c:7425 devlink_fmsg_prepare_skb() error: uninitialized symbol 'err'.
net/core/devlink.c:10410 devl_rate_node_create() warn: possible memory leak of 'rate_node'
net/core/devlink.c:10453 devl_rate_vport_create() warn: possible memory leak of 'devlink_rate'

vim +/rate +2039 net/core/devlink.c

d7555984507822 Dmytro Linkin     2021-06-02  1983  
1897db2ec3109e Dmytro Linkin     2021-06-02  1984  static int devlink_nl_rate_set(struct devlink_rate *devlink_rate,
1897db2ec3109e Dmytro Linkin     2021-06-02  1985  			       const struct devlink_ops *ops,
1897db2ec3109e Dmytro Linkin     2021-06-02  1986  			       struct genl_info *info)
1897db2ec3109e Dmytro Linkin     2021-06-02  1987  {
d7555984507822 Dmytro Linkin     2021-06-02  1988  	struct nlattr *nla_parent, **attrs = info->attrs;
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  1989  	int err = -EOPNOTSUPP;
3400deb7c35335 Michal Wilczynski 2022-09-15  1990  	u16 priority;
3400deb7c35335 Michal Wilczynski 2022-09-15  1991  	u16 weight;
1897db2ec3109e Dmytro Linkin     2021-06-02  1992  	u64 rate;
1897db2ec3109e Dmytro Linkin     2021-06-02  1993  
1897db2ec3109e Dmytro Linkin     2021-06-02  1994  	if (attrs[DEVLINK_ATTR_RATE_TX_SHARE]) {
1897db2ec3109e Dmytro Linkin     2021-06-02  1995  		rate = nla_get_u64(attrs[DEVLINK_ATTR_RATE_TX_SHARE]);
3400deb7c35335 Michal Wilczynski 2022-09-15  1996  		if (devlink_rate_is_vport(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  1997  			err = ops->rate_vport_tx_share_set(devlink_rate, devlink_rate->priv,
1897db2ec3109e Dmytro Linkin     2021-06-02  1998  							   rate, info->extack);
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  1999  		else if (devlink_rate_is_node(devlink_rate))
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  2000  			err = ops->rate_node_tx_share_set(devlink_rate, devlink_rate->priv,
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  2001  							  rate, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2002  		else if (devlink_rate_is_queue(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2003  			err = ops->rate_queue_tx_share_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2004  							   rate, info->extack);
1897db2ec3109e Dmytro Linkin     2021-06-02  2005  		if (err)
1897db2ec3109e Dmytro Linkin     2021-06-02  2006  			return err;
1897db2ec3109e Dmytro Linkin     2021-06-02  2007  		devlink_rate->tx_share = rate;
1897db2ec3109e Dmytro Linkin     2021-06-02  2008  	}
1897db2ec3109e Dmytro Linkin     2021-06-02  2009  
1897db2ec3109e Dmytro Linkin     2021-06-02  2010  	if (attrs[DEVLINK_ATTR_RATE_TX_MAX]) {
1897db2ec3109e Dmytro Linkin     2021-06-02  2011  		rate = nla_get_u64(attrs[DEVLINK_ATTR_RATE_TX_MAX]);
3400deb7c35335 Michal Wilczynski 2022-09-15  2012  		if (devlink_rate_is_vport(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2013  			err = ops->rate_vport_tx_max_set(devlink_rate, devlink_rate->priv,
1897db2ec3109e Dmytro Linkin     2021-06-02  2014  							 rate, info->extack);
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  2015  		else if (devlink_rate_is_node(devlink_rate))
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  2016  			err = ops->rate_node_tx_max_set(devlink_rate, devlink_rate->priv,
a8ecb93ef03de4 Dmytro Linkin     2021-06-02  2017  							rate, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2018  		else if (devlink_rate_is_queue(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2019  			err = ops->rate_queue_tx_max_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2020  							rate, info->extack);
1897db2ec3109e Dmytro Linkin     2021-06-02  2021  		if (err)
1897db2ec3109e Dmytro Linkin     2021-06-02  2022  			return err;
1897db2ec3109e Dmytro Linkin     2021-06-02  2023  		devlink_rate->tx_max = rate;
1897db2ec3109e Dmytro Linkin     2021-06-02  2024  	}
1897db2ec3109e Dmytro Linkin     2021-06-02  2025  
3400deb7c35335 Michal Wilczynski 2022-09-15  2026  	if (attrs[DEVLINK_ATTR_RATE_TX_PRIORITY]) {
3400deb7c35335 Michal Wilczynski 2022-09-15  2027  		priority = nla_get_u16(attrs[DEVLINK_ATTR_RATE_TX_PRIORITY]);
3400deb7c35335 Michal Wilczynski 2022-09-15  2028  		if (devlink_rate_is_vport(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2029  			err = ops->rate_vport_tx_priority_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2030  							priority, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2031  		else if (devlink_rate_is_node(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2032  			err = ops->rate_node_tx_priority_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2033  							priority, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2034  		else if (devlink_rate_is_queue(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2035  			err = ops->rate_queue_tx_priority_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2036  							priority, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2037  		if (err)
3400deb7c35335 Michal Wilczynski 2022-09-15  2038  			return err;
3400deb7c35335 Michal Wilczynski 2022-09-15 @2039  		devlink_rate->tx_priority = rate;
3400deb7c35335 Michal Wilczynski 2022-09-15  2040  	}
3400deb7c35335 Michal Wilczynski 2022-09-15  2041  
3400deb7c35335 Michal Wilczynski 2022-09-15  2042  	if (attrs[DEVLINK_ATTR_RATE_TX_WEIGHT]) {
3400deb7c35335 Michal Wilczynski 2022-09-15  2043  		weight = nla_get_u16(attrs[DEVLINK_ATTR_RATE_TX_WEIGHT]);
3400deb7c35335 Michal Wilczynski 2022-09-15  2044  		if (devlink_rate_is_vport(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2045  			err = ops->rate_vport_tx_weight_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2046  							 weight, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2047  		else if (devlink_rate_is_node(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2048  			err = ops->rate_node_tx_weight_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2049  							weight, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2050  		else if (devlink_rate_is_queue(devlink_rate))
3400deb7c35335 Michal Wilczynski 2022-09-15  2051  			err = ops->rate_queue_tx_weight_set(devlink_rate, devlink_rate->priv,
3400deb7c35335 Michal Wilczynski 2022-09-15  2052  							weight, info->extack);
3400deb7c35335 Michal Wilczynski 2022-09-15  2053  		if (err)
3400deb7c35335 Michal Wilczynski 2022-09-15  2054  			return err;
3400deb7c35335 Michal Wilczynski 2022-09-15  2055  		devlink_rate->tx_weight = weight;
3400deb7c35335 Michal Wilczynski 2022-09-15  2056  	}
3400deb7c35335 Michal Wilczynski 2022-09-15  2057  
d7555984507822 Dmytro Linkin     2021-06-02  2058  	nla_parent = attrs[DEVLINK_ATTR_RATE_PARENT_NODE_NAME];
d7555984507822 Dmytro Linkin     2021-06-02  2059  	if (nla_parent) {
d7555984507822 Dmytro Linkin     2021-06-02  2060  		err = devlink_nl_rate_parent_node_set(devlink_rate, info,
d7555984507822 Dmytro Linkin     2021-06-02  2061  						      nla_parent);
d7555984507822 Dmytro Linkin     2021-06-02  2062  		if (err)
d7555984507822 Dmytro Linkin     2021-06-02  2063  			return err;
d7555984507822 Dmytro Linkin     2021-06-02  2064  	}
d7555984507822 Dmytro Linkin     2021-06-02  2065  
1897db2ec3109e Dmytro Linkin     2021-06-02  2066  	return 0;
1897db2ec3109e Dmytro Linkin     2021-06-02  2067  }
1897db2ec3109e Dmytro Linkin     2021-06-02  2068  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] 35+ messages in thread

end of thread, other threads:[~2022-10-11 14:18 UTC | newest]

Thread overview: 35+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-15 13:42 [RFC PATCH net-next v4 0/6] Implement devlink-rate API and extend it Michal Wilczynski
2022-09-15 13:42 ` [RFC PATCH net-next v4 1/6] ice: Add function for move/reconfigure TxQ AQ command Michal Wilczynski
2022-09-15 13:42 ` [RFC PATCH net-next v4 2/6] devlink: Extend devlink-rate api with queues and new parameters Michal Wilczynski
2022-09-15 15:31   ` Edward Cree
2022-09-15 18:41     ` Wilczynski, Michal
2022-09-15 21:01       ` Edward Cree
2022-09-19 13:12         ` Wilczynski, Michal
2022-09-20 11:09           ` Edward Cree
2022-09-26 11:58             ` Jiri Pirko
2022-09-28 11:53               ` Wilczynski, Michal
2022-09-29  7:08                 ` Jiri Pirko
2022-09-21 23:33       ` Jakub Kicinski
2022-09-22 11:44         ` Wilczynski, Michal
2022-09-22 12:50           ` Jakub Kicinski
2022-09-22 13:45             ` Wilczynski, Michal
2022-09-22 20:29               ` Jakub Kicinski
2022-09-23 12:11                 ` Wilczynski, Michal
2022-09-23 13:16                   ` Jakub Kicinski
2022-09-23 15:46                     ` Wilczynski, Michal
2022-09-27  0:16                       ` Jakub Kicinski
2022-09-28 12:02                         ` Wilczynski, Michal
2022-09-28 17:39                           ` Jakub Kicinski
2022-09-26 11:51       ` Jiri Pirko
2022-09-28 11:47         ` Wilczynski, Michal
2022-09-29  7:12           ` Jiri Pirko
2022-10-11 13:28             ` Wilczynski, Michal
2022-10-11 14:17               ` Jiri Pirko
2022-09-15 13:42 ` [RFC PATCH net-next v4 3/6] ice: Introduce new parameters in ice_sched_node Michal Wilczynski
2022-09-15 13:42 ` [RFC PATCH net-next v4 4/6] ice: Implement devlink-rate API Michal Wilczynski
2022-09-22 13:08   ` Przemek Kitszel
2022-09-15 13:42 ` [RFC PATCH net-next v4 5/6] ice: Export Tx scheduler configuration to devlink-rate Michal Wilczynski
2022-09-15 13:42 ` [RFC PATCH net-next v4 6/6] ice: Prevent ADQ, DCB and RDMA coexistence with Custom Tx scheduler Michal Wilczynski
2022-09-15 13:57 ` [RFC PATCH net-next v4 0/6] Implement devlink-rate API and extend it Wilczynski, Michal
2022-09-19  7:22 [RFC PATCH net-next v4 2/6] devlink: Extend devlink-rate api with queues and new parameters kernel test robot
2022-09-19  9:22 ` Dan Carpenter

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.