From: Jon Kohler <jon@nutanix.com>
To: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Cc: Christian Benvenuti <benve@cisco.com>,
Satish Kharat <satishkh@cisco.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
Larysa Zaremba <larysa.zaremba@intel.com>
Subject: Re: [PATCH] enic: add ethtool get_channel support
Date: Tue, 18 Jun 2024 16:39:40 +0000 [thread overview]
Message-ID: <2CB61A20-4055-49AF-A941-AF5376687244@nutanix.com> (raw)
In-Reply-To: <51a446e5-e5c5-433d-96fd-e0e23d560b08@intel.com>
> On Jun 18, 2024, at 12:20 PM, Przemek Kitszel <przemyslaw.kitszel@intel.com> wrote:
>
> !-------------------------------------------------------------------|
> CAUTION: External Email
>
> |-------------------------------------------------------------------!
>
> On 6/18/24 18:01, Jon Kohler wrote:
>> Add .get_channel to enic_ethtool_ops to enable basic ethtool -l
>> support to get the current channel configuration.
>> Note that the driver does not support dynamically changing queue
>> configuration, so .set_channel is intentionally unused. Instead, users
>> should use Cisco's hardware management tools (UCSM/IMC) to modify
>> virtual interface card configuration out of band.
>> Signed-off-by: Jon Kohler <jon@nutanix.com>
>> ---
>> drivers/net/ethernet/cisco/enic/enic_ethtool.c | 18 ++++++++++++++++++
>> 1 file changed, 18 insertions(+)
>> diff --git a/drivers/net/ethernet/cisco/enic/enic_ethtool.c b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
>> index 241906697019..efbc0715b10e 100644
>> --- a/drivers/net/ethernet/cisco/enic/enic_ethtool.c
>> +++ b/drivers/net/ethernet/cisco/enic/enic_ethtool.c
>> @@ -608,6 +608,23 @@ static int enic_get_ts_info(struct net_device *netdev,
>> return 0;
>> }
>> +static void enic_get_channels(struct net_device *netdev,
>> + struct ethtool_channels *channels)
>> +{
>> + struct enic *enic = netdev_priv(netdev);
>> +
>> + channels->max_rx = ENIC_RQ_MAX;
>> + channels->max_tx = ENIC_WQ_MAX;
>> + channels->rx_count = enic->rq_count;
>> + channels->tx_count = enic->wq_count;
>> +
>> + /* enic doesn't use other channels or combined channels */
>> + channels->combined_count = 0;
>
> my understanding is that effective Rx count is combined_count+rx_count,
> analogous for Tx
Thanks for the quick review!
Looking through how other drivers do this, I didn’t get a sense that
any other drivers were stacking rx_count + combined_count together.
Also, enic and the underlying Cisco VIC hardware appears to be
fairly specific that the queues they provision at the hardware level are
either RX or TX and not a unified ring or something to that effect.
I took that to mean that we would never call anything ‘combined’ in
the context of this driver.
>
> and:
> uapi/linux/ethtool.h:547: * @combined_count: Valid values are in the range 1 to the max_combined.
I saw that, though I did see a few other drivers that also do combined_count = 0
broadcom/bnx2, google/gve, ibm/ibmvnic, and ti/cpsw
I also didn’t see anyone specifically setting it to 1 to comply with the uapi header
you pointed to.
I did check net/ethtool/channels.c -> channels_fill_reply and there is not
any handling there, or anywhere else in channels.c that would prevent the
usage of combined_count = 0.
With this patch, I see the following ethtool output when hardware RX/TX are both
set to 1
# ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 8
TX: 8
Other: n/a
Combined: n/a
Current hardware settings:
RX: 1
TX: 1
Other: n/a
Combined: n/a
# dmesg|grep -i enic
[ 8.296127] enic 0000:35:00.0: vNIC MAC addr 00:25:b5:00:88:0e wq/rq 256/512 mtu 1500
[ 8.296131] enic 0000:35:00.0: vNIC csum tx/rx yes/yes tso/lro yes/yes rss no intr mode any type min timer 125 usec loopback tag 0x0000
[ 8.296134] enic 0000:35:00.0: vNIC resources avail: wq 1 rq 1 cq 2 intr 4
[ 8.296299] enic 0000:35:00.0: vNIC resources used: wq 1 rq 1 cq 2 intr 4 intr mode MSI-X
[ 8.300453] enic 0000:35:00.1: vNIC MAC addr 00:25:b5:00:88:1e wq/rq 256/512 mtu 1500
[ 8.300456] enic 0000:35:00.1: vNIC csum tx/rx yes/yes tso/lro yes/yes rss no intr mode any type min timer 125 usec loopback tag 0x0000
[ 8.300457] enic 0000:35:00.1: vNIC resources avail: wq 1 rq 1 cq 2 intr 4
[ 8.301444] enic 0000:35:00.1: vNIC resources used: wq 1 rq 1 cq 2 intr 4 intr mode MSI-X
[ 8.318699] enic 0000:35:00.0 eth0: renamed from ahv0
[ 8.359256] enic 0000:35:00.1 eth1: renamed from ahv1
[ 15.177655] enic 0000:35:00.0 eth0: Link UP
[ 15.192971] enic 0000:35:00.1 eth1: Link UP
Thanks again,
Jon
>
>> + channels->max_combined = 0;
>> + channels->max_other = 0;
>> + channels->other_count = 0;
>> +}
>> +
>> static const struct ethtool_ops enic_ethtool_ops = {
>> .supported_coalesce_params = ETHTOOL_COALESCE_USECS |
>> ETHTOOL_COALESCE_USE_ADAPTIVE_RX |
>> @@ -632,6 +649,7 @@ static const struct ethtool_ops enic_ethtool_ops = {
>> .set_rxfh = enic_set_rxfh,
>> .get_link_ksettings = enic_get_ksettings,
>> .get_ts_info = enic_get_ts_info,
>> + .get_channels = enic_get_channels,
>> };
>> void enic_set_ethtool_ops(struct net_device *netdev)
>
next prev parent reply other threads:[~2024-06-18 16:39 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-18 16:01 Jon Kohler
2024-06-18 16:20 ` Przemek Kitszel
2024-06-18 16:39 ` Jon Kohler [this message]
2024-06-20 0:04 ` Jakub Kicinski
2024-06-20 19:49 ` Jon Kohler
2024-06-20 19:58 ` Jakub Kicinski
2024-06-24 18:36 ` Jon Kohler
2024-06-19 17:59 ` Simon Horman
2024-06-19 18:01 ` Simon Horman
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2CB61A20-4055-49AF-A941-AF5376687244@nutanix.com \
--to=jon@nutanix.com \
--cc=benve@cisco.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=kuba@kernel.org \
--cc=larysa.zaremba@intel.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=przemyslaw.kitszel@intel.com \
--cc=satishkh@cisco.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®