[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20210526170033.62c8e6eb@kicinski-fedora-pc1c0hjn.dhcp.thefacebook.com>
Date: Wed, 26 May 2021 17:00:33 -0700
From: Jakub Kicinski <kuba@...nel.org>
To: Huazhong Tan <tanhuazhong@...wei.com>
Cc: <davem@...emloft.net>, <netdev@...r.kernel.org>,
<salil.mehta@...wei.com>, <yisen.zhuang@...wei.com>,
<huangdaode@...wei.com>, <linuxarm@...wei.com>,
<dledford@...hat.com>, <jgg@...pe.ca>, <netanel@...zon.com>,
<akiyano@...zon.com>, <thomas.lendacky@....com>,
<irusskikh@...vell.com>, <michael.chan@...adcom.com>,
<edwin.peer@...adcom.com>, <rohitm@...lsio.com>,
<jesse.brandeburg@...el.com>, <jacob.e.keller@...el.com>,
<ioana.ciornei@....com>, <vladimir.oltean@....com>,
<sgoutham@...vell.com>, <sbhatta@...vell.com>, <saeedm@...dia.com>,
<ecree.xilinx@...il.com>, <grygorii.strashko@...com>,
<merez@...eaurora.org>, <kvalo@...eaurora.org>,
<linux-wireless@...r.kernel.org>
Subject: Re: [RFC net-next 2/4] ethtool: extend coalesce setting uAPI with
CQE mode
On Wed, 26 May 2021 17:27:40 +0800 Huazhong Tan wrote:
> Currently, there many drivers who support CQE mode configuration,
> some configure it as a fixed when initialized, some provide an
> interface to change it by ethtool private flags. In order make it
> more generic, add 'ETHTOOL_A_COALESCE_USE_CQE_TX' and
> 'ETHTOOL_A_COALESCE_USE_CQE_RX' attribute and expand struct
> kernel_ethtool_coalesce with use_cqe_mode_tx and use_cqe_mode_rx,
> then these parameters can be accessed by ethtool netlink coalesce
> uAPI.
>
> Signed-off-by: Huazhong Tan <tanhuazhong@...wei.com>
> diff --git a/Documentation/networking/ethtool-netlink.rst b/Documentation/networking/ethtool-netlink.rst
> index 25131df..975394e 100644
> --- a/Documentation/networking/ethtool-netlink.rst
> +++ b/Documentation/networking/ethtool-netlink.rst
> @@ -937,6 +937,8 @@ Kernel response contents:
> ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx
> ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx
> ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval
> + ``ETHTOOL_A_COALESCE_USE_CQE_TX`` bool Tx CQE mode
> + ``ETHTOOL_A_COALESCE_USE_CQE_RX`` bool Rx CQE mode
> =========================================== ====== =======================
>
> Attributes are only included in reply if their value is not zero or the
> @@ -975,6 +977,8 @@ Request contents:
> ``ETHTOOL_A_COALESCE_TX_USECS_HIGH`` u32 delay (us), high Tx
> ``ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH`` u32 max packets, high Tx
> ``ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL`` u32 rate sampling interval
> + ``ETHTOOL_A_COALESCE_USE_CQE_TX`` bool Tx CQE mode
> + ``ETHTOOL_A_COALESCE_USE_CQE_RX`` bool Rx CQE mode
> =========================================== ====== =======================
>
> Request is rejected if it attributes declared as unsupported by driver (i.e.
You need to thoroughly document the semantics. Can you point us to
which drivers/devices implement similar modes of operation (if they
exist we need to make sure semantics match)?
> diff --git a/include/linux/ethtool.h b/include/linux/ethtool.h
> index 1030540..9d0a386 100644
> --- a/include/linux/ethtool.h
> +++ b/include/linux/ethtool.h
> @@ -179,6 +179,8 @@ __ethtool_get_link_ksettings(struct net_device *dev,
>
> struct kernel_ethtool_coalesce {
> struct ethtool_coalesce base;
> + __u32 use_cqe_mode_tx;
> + __u32 use_cqe_mode_rx;
No __ in front, this is not a user space structure.
Why not bool or a bitfield?
> };
>
> /**
> @@ -216,6 +223,8 @@ const struct nla_policy ethnl_coalesce_set_policy[] = {
> [ETHTOOL_A_COALESCE_TX_USECS_HIGH] = { .type = NLA_U32 },
> [ETHTOOL_A_COALESCE_TX_MAX_FRAMES_HIGH] = { .type = NLA_U32 },
> [ETHTOOL_A_COALESCE_RATE_SAMPLE_INTERVAL] = { .type = NLA_U32 },
> + [ETHTOOL_A_COALESCE_USE_CQE_MODE_TX] = { .type = NLA_U8 },
> + [ETHTOOL_A_COALESCE_USE_CQE_MODE_RX] = { .type = NLA_U8 },
This needs a policy to make sure values are <= 1.
Powered by blists - more mailing lists