From: Simon Horman <horms@kernel.org>
To: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Cc: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
netdev@vger.kernel.org,
Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Subject: Re: [Intel-wired-lan] [PATCH iwl-net v1] ixgbe: stop re-reading flash on every get_drvinfo for e610
Date: Fri, 6 Mar 2026 14:18:25 +0000 [thread overview]
Message-ID: <20260306141825.GE461701@kernel.org> (raw)
In-Reply-To: <20260304084232.2937498-1-aleksandr.loktionov@intel.com>
On Wed, Mar 04, 2026 at 09:42:32AM +0100, Aleksandr Loktionov wrote:
> ixgbe_get_drvinfo() calls ixgbe_refresh_fw_version() on every ethtool
> query for e610 adapters. That ends up in ixgbe_discover_flash_size(),
> which bisects the full 16 MB NVM space issuing one ACI command per
> step (~20 ms each, ~24 steps total = ~500 ms).
>
> Profiling on an idle E610-XAT2 system with telegraf scraping ethtool
> stats every 10 seconds:
>
> kretprobe:ixgbe_get_drvinfo took 527603 us
> kretprobe:ixgbe_get_drvinfo took 523978 us
> kretprobe:ixgbe_get_drvinfo took 552975 us
> kretprobe:ice_get_drvinfo took 3 us
> kretprobe:igb_get_drvinfo took 2 us
> kretprobe:i40e_get_drvinfo took 5 us
>
> The half-second stall happens under the RTNL lock, causing visible
> latency on ip-link and friends.
>
> The FW version can only change after an EMPR reset. All flash data is
> already populated at probe time and the cached adapter->eeprom_id is
> what get_drvinfo should be returning. The only place that needs to
> trigger a re-read is ixgbe_devlink_reload_empr_finish(), right after
> the EMPR completes and new firmware is running. Additionally, refresh
> the FW version in ixgbe_reinit_locked() so that any PF that undergoes a
> reinit after an EMPR (e.g. triggered by another PF's devlink reload)
> also picks up the new version in adapter->eeprom_id.
>
> ixgbe_devlink_info_get() keeps its refresh call for explicit
> "devlink dev info" queries, which is fine given those are user-initiated.
>
> Fixes: c9e563cae19e ("ixgbe: add support for devlink reload")
> Co-developed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
WARNING: multiple messages have this Message-ID (diff)
From: Simon Horman <horms@kernel.org>
To: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Cc: intel-wired-lan@lists.osuosl.org, anthony.l.nguyen@intel.com,
netdev@vger.kernel.org,
Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Subject: Re: [PATCH iwl-net v1] ixgbe: stop re-reading flash on every get_drvinfo for e610
Date: Fri, 6 Mar 2026 14:18:25 +0000 [thread overview]
Message-ID: <20260306141825.GE461701@kernel.org> (raw)
In-Reply-To: <20260304084232.2937498-1-aleksandr.loktionov@intel.com>
On Wed, Mar 04, 2026 at 09:42:32AM +0100, Aleksandr Loktionov wrote:
> ixgbe_get_drvinfo() calls ixgbe_refresh_fw_version() on every ethtool
> query for e610 adapters. That ends up in ixgbe_discover_flash_size(),
> which bisects the full 16 MB NVM space issuing one ACI command per
> step (~20 ms each, ~24 steps total = ~500 ms).
>
> Profiling on an idle E610-XAT2 system with telegraf scraping ethtool
> stats every 10 seconds:
>
> kretprobe:ixgbe_get_drvinfo took 527603 us
> kretprobe:ixgbe_get_drvinfo took 523978 us
> kretprobe:ixgbe_get_drvinfo took 552975 us
> kretprobe:ice_get_drvinfo took 3 us
> kretprobe:igb_get_drvinfo took 2 us
> kretprobe:i40e_get_drvinfo took 5 us
>
> The half-second stall happens under the RTNL lock, causing visible
> latency on ip-link and friends.
>
> The FW version can only change after an EMPR reset. All flash data is
> already populated at probe time and the cached adapter->eeprom_id is
> what get_drvinfo should be returning. The only place that needs to
> trigger a re-read is ixgbe_devlink_reload_empr_finish(), right after
> the EMPR completes and new firmware is running. Additionally, refresh
> the FW version in ixgbe_reinit_locked() so that any PF that undergoes a
> reinit after an EMPR (e.g. triggered by another PF's devlink reload)
> also picks up the new version in adapter->eeprom_id.
>
> ixgbe_devlink_info_get() keeps its refresh call for explicit
> "devlink dev info" queries, which is fine given those are user-initiated.
>
> Fixes: c9e563cae19e ("ixgbe: add support for devlink reload")
> Co-developed-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
> Signed-off-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
next prev parent reply other threads:[~2026-03-06 14:18 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-04 8:42 [Intel-wired-lan] [PATCH iwl-net v1] ixgbe: stop re-reading flash on every get_drvinfo for e610 Aleksandr Loktionov
2026-03-04 8:42 ` Aleksandr Loktionov
2026-03-06 14:18 ` Simon Horman [this message]
2026-03-06 14:18 ` Simon Horman
2026-03-31 3:45 ` [Intel-wired-lan] " Rinitha, SX
2026-03-31 3:45 ` Rinitha, SX
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=20260306141825.GE461701@kernel.org \
--to=horms@kernel.org \
--cc=aleksandr.loktionov@intel.com \
--cc=anthony.l.nguyen@intel.com \
--cc=intel-wired-lan@lists.osuosl.org \
--cc=jedrzej.jagielski@intel.com \
--cc=netdev@vger.kernel.org \
/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 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.