* [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers
@ 2025-05-12 9:05 Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 1/2] ice: add link_down_events statistic Martyna Szapar-Mudlaw
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Martyna Szapar-Mudlaw @ 2025-05-12 9:05 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Martyna Szapar-Mudlaw
This series introduces link_down_events counters to the ixgbe and ice drivers.
The counters are incremented each time the link transitions from up to down,
allowing better diagnosis of link stability issues such as port flapping or
unexpected link drops.
The values are exposed via ethtool using the get_link_ext_stats() interface.
Martyna Szapar-Mudlaw (2):
ice: add link_down_events statistic
ixgbe: add link_down_events statistic
v3 -> v2:
ixgbe patch: rebased on latest ixgbe changes; added statistic for E610
no changes to ice driver patch
v2 -> v1:
used ethtool get_link_ext_stats() interface to expose counters
drivers/net/ethernet/intel/ice/ice.h | 1 +
drivers/net/ethernet/intel/ice/ice_ethtool.c | 10 ++++++++++
drivers/net/ethernet/intel/ice/ice_main.c | 3 +++
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 10 ++++++++++
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++
6 files changed, 27 insertions(+)
--
2.47.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH iwl-next v3 1/2] ice: add link_down_events statistic
2025-05-12 9:05 [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Martyna Szapar-Mudlaw
@ 2025-05-12 9:05 ` Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 2/2] ixgbe: " Martyna Szapar-Mudlaw
2025-05-13 0:21 ` [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Jakub Kicinski
2 siblings, 0 replies; 7+ messages in thread
From: Martyna Szapar-Mudlaw @ 2025-05-12 9:05 UTC (permalink / raw)
To: intel-wired-lan; +Cc: netdev, Martyna Szapar-Mudlaw, Kory Maincent, Rinitha S
Introduce a link_down_events counter to the ice driver, incremented
each time the link transitions from up to down.
This counter can help diagnose issues related to link stability,
such as port flapping or unexpected link drops.
The value is exposed via ethtool's get_link_ext_stats() interface.
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Tested-by: Rinitha S <sx.rinitha@intel.com> (A Contingent worker at Intel)
Signed-off-by: Martyna Szapar-Mudlaw <martyna.szapar-mudlaw@linux.intel.com>
---
drivers/net/ethernet/intel/ice/ice.h | 1 +
drivers/net/ethernet/intel/ice/ice_ethtool.c | 10 ++++++++++
drivers/net/ethernet/intel/ice/ice_main.c | 3 +++
3 files changed, 14 insertions(+)
diff --git a/drivers/net/ethernet/intel/ice/ice.h b/drivers/net/ethernet/intel/ice/ice.h
index e42572ae7631..eac0f95d20f1 100644
--- a/drivers/net/ethernet/intel/ice/ice.h
+++ b/drivers/net/ethernet/intel/ice/ice.h
@@ -617,6 +617,7 @@ struct ice_pf {
u16 globr_count; /* Global reset count */
u16 empr_count; /* EMP reset count */
u16 pfr_count; /* PF reset count */
+ u32 link_down_events;
u8 wol_ena : 1; /* software state of WoL */
u32 wakeup_reason; /* last wakeup reason */
diff --git a/drivers/net/ethernet/intel/ice/ice_ethtool.c b/drivers/net/ethernet/intel/ice/ice_ethtool.c
index 648815170477..db7ae817b127 100644
--- a/drivers/net/ethernet/intel/ice/ice_ethtool.c
+++ b/drivers/net/ethernet/intel/ice/ice_ethtool.c
@@ -836,6 +836,15 @@ static void ice_set_msglevel(struct net_device *netdev, u32 data)
#endif /* !CONFIG_DYNAMIC_DEBUG */
}
+static void ice_get_link_ext_stats(struct net_device *netdev,
+ struct ethtool_link_ext_stats *stats)
+{
+ struct ice_netdev_priv *np = netdev_priv(netdev);
+ struct ice_pf *pf = np->vsi->back;
+
+ stats->link_down_events = pf->link_down_events;
+}
+
static int ice_get_eeprom_len(struct net_device *netdev)
{
struct ice_netdev_priv *np = netdev_priv(netdev);
@@ -4784,6 +4793,7 @@ static const struct ethtool_ops ice_ethtool_ops = {
.set_msglevel = ice_set_msglevel,
.self_test = ice_self_test,
.get_link = ethtool_op_get_link,
+ .get_link_ext_stats = ice_get_link_ext_stats,
.get_eeprom_len = ice_get_eeprom_len,
.get_eeprom = ice_get_eeprom,
.get_coalesce = ice_get_coalesce,
diff --git a/drivers/net/ethernet/intel/ice/ice_main.c b/drivers/net/ethernet/intel/ice/ice_main.c
index 1fbe13ee93a8..2d1361b68b14 100644
--- a/drivers/net/ethernet/intel/ice/ice_main.c
+++ b/drivers/net/ethernet/intel/ice/ice_main.c
@@ -1144,6 +1144,9 @@ ice_link_event(struct ice_pf *pf, struct ice_port_info *pi, bool link_up,
if (link_up == old_link && link_speed == old_link_speed)
return 0;
+ if (!link_up && old_link)
+ pf->link_down_events++;
+
ice_ptp_link_change(pf, link_up);
if (ice_is_dcb_active(pf)) {
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH iwl-next v3 2/2] ixgbe: add link_down_events statistic
2025-05-12 9:05 [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 1/2] ice: add link_down_events statistic Martyna Szapar-Mudlaw
@ 2025-05-12 9:05 ` Martyna Szapar-Mudlaw
2025-05-13 0:21 ` [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Jakub Kicinski
2 siblings, 0 replies; 7+ messages in thread
From: Martyna Szapar-Mudlaw @ 2025-05-12 9:05 UTC (permalink / raw)
To: intel-wired-lan
Cc: netdev, Martyna Szapar-Mudlaw, Kory Maincent, Aleksandr Loktionov
Introduce a link_down_events counter to the ixgbe driver, incremented
each time the link transitions from up to down.
This counter can help diagnose issues related to link stability,
such as port flapping or unexpected link drops.
The value is exposed via ethtool's get_link_ext_stats() interface.
Reviewed-by: Kory Maincent <kory.maincent@bootlin.com>
Reviewed-by: Aleksandr Loktionov <aleksandr.loktionov@intel.com>
Signed-off-by: Martyna Szapar-Mudlaw <martyna.szapar-mudlaw@linux.intel.com>
---
drivers/net/ethernet/intel/ixgbe/ixgbe.h | 1 +
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c | 10 ++++++++++
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 2 ++
3 files changed, 13 insertions(+)
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
index 47311b134a7a..c6772cd2d802 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
@@ -752,6 +752,7 @@ struct ixgbe_adapter {
bool link_up;
unsigned long sfp_poll_time;
unsigned long link_check_timeout;
+ u32 link_down_events;
struct timer_list service_timer;
struct work_struct service_task;
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
index d8a919ab7027..1dc1c6e611a4 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c
@@ -1033,6 +1033,14 @@ static void ixgbe_get_regs(struct net_device *netdev,
regs_buff[1144] = IXGBE_READ_REG(hw, IXGBE_SECRXSTAT);
}
+static void ixgbe_get_link_ext_stats(struct net_device *netdev,
+ struct ethtool_link_ext_stats *stats)
+{
+ struct ixgbe_adapter *adapter = ixgbe_from_netdev(netdev);
+
+ stats->link_down_events = adapter->link_down_events;
+}
+
static int ixgbe_get_eeprom_len(struct net_device *netdev)
{
struct ixgbe_adapter *adapter = ixgbe_from_netdev(netdev);
@@ -3719,6 +3727,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops = {
.set_wol = ixgbe_set_wol,
.nway_reset = ixgbe_nway_reset,
.get_link = ethtool_op_get_link,
+ .get_link_ext_stats = ixgbe_get_link_ext_stats,
.get_eeprom_len = ixgbe_get_eeprom_len,
.get_eeprom = ixgbe_get_eeprom,
.set_eeprom = ixgbe_set_eeprom,
@@ -3764,6 +3773,7 @@ static const struct ethtool_ops ixgbe_ethtool_ops_e610 = {
.set_wol = ixgbe_set_wol_e610,
.nway_reset = ixgbe_nway_reset,
.get_link = ethtool_op_get_link,
+ .get_link_ext_stats = ixgbe_get_link_ext_stats,
.get_eeprom_len = ixgbe_get_eeprom_len,
.get_eeprom = ixgbe_get_eeprom,
.set_eeprom = ixgbe_set_eeprom,
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
index 03d31e5b131d..1982314aaf3c 100644
--- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
+++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
@@ -7991,6 +7991,8 @@ static void ixgbe_watchdog_link_is_down(struct ixgbe_adapter *adapter)
if (!netif_carrier_ok(netdev))
return;
+ adapter->link_down_events++;
+
/* poll for SFP+ cable when link is down */
if (ixgbe_is_sfp(hw) && hw->mac.type == ixgbe_mac_82598EB)
adapter->flags2 |= IXGBE_FLAG2_SEARCH_FOR_SFP;
--
2.47.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers
2025-05-12 9:05 [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 1/2] ice: add link_down_events statistic Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 2/2] ixgbe: " Martyna Szapar-Mudlaw
@ 2025-05-13 0:21 ` Jakub Kicinski
2025-05-14 13:44 ` Szapar-Mudlaw, Martyna
2 siblings, 1 reply; 7+ messages in thread
From: Jakub Kicinski @ 2025-05-13 0:21 UTC (permalink / raw)
To: Martyna Szapar-Mudlaw; +Cc: intel-wired-lan, netdev
On Mon, 12 May 2025 11:05:14 +0200 Martyna Szapar-Mudlaw wrote:
> This series introduces link_down_events counters to the ixgbe and ice drivers.
> The counters are incremented each time the link transitions from up to down,
> allowing better diagnosis of link stability issues such as port flapping or
> unexpected link drops.
To confirm, will the counter increment:
- when link is held up by BMC / NC-SI or some other agent
and user does down/up on the host?
- when user reconfigures channels, attaches XDP etc?
Would be good to document that in the cover letter.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers
2025-05-13 0:21 ` [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Jakub Kicinski
@ 2025-05-14 13:44 ` Szapar-Mudlaw, Martyna
2025-05-14 14:42 ` Jakub Kicinski
0 siblings, 1 reply; 7+ messages in thread
From: Szapar-Mudlaw, Martyna @ 2025-05-14 13:44 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: intel-wired-lan, netdev
Hi Jakub,
The link-down events counter increments upon actual physical link-down
events, doesn't increment when user performs a simple down/up of the
interface. However there is indeed link down event from firmware - as
part of interface reinitialization eg. when attaching XDP program,
reconfiguring channels and setting interface priv-flags. In those cases,
the interface is stopped and then brought back up.
I will add more these details in the cover letter.
Thank you!
Martyna
On 5/13/2025 2:21 AM, Jakub Kicinski wrote:
> On Mon, 12 May 2025 11:05:14 +0200 Martyna Szapar-Mudlaw wrote:
>> This series introduces link_down_events counters to the ixgbe and ice drivers.
>> The counters are incremented each time the link transitions from up to down,
>> allowing better diagnosis of link stability issues such as port flapping or
>> unexpected link drops.
>
> To confirm, will the counter increment:
> - when link is held up by BMC / NC-SI or some other agent
> and user does down/up on the host?
> - when user reconfigures channels, attaches XDP etc?
>
> Would be good to document that in the cover letter.
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers
2025-05-14 13:44 ` Szapar-Mudlaw, Martyna
@ 2025-05-14 14:42 ` Jakub Kicinski
2025-05-14 14:59 ` Szapar-Mudlaw, Martyna
0 siblings, 1 reply; 7+ messages in thread
From: Jakub Kicinski @ 2025-05-14 14:42 UTC (permalink / raw)
To: Szapar-Mudlaw, Martyna; +Cc: intel-wired-lan, netdev
On Wed, 14 May 2025 15:44:49 +0200 Szapar-Mudlaw, Martyna wrote:
> The link-down events counter increments upon actual physical link-down
> events, doesn't increment when user performs a simple down/up of the
> interface.
>
> However there is indeed link down event from firmware - as
> part of interface reinitialization eg. when attaching XDP program,
> reconfiguring channels and setting interface priv-flags.
Maybe I'm misunderstanding, but are you saying that the link-down
counter doesn't increment on ifdown+ifup but it does increment
when attaching an XDP prog?
The definition of link_down_events is pretty simple - (plus minus
the quantum world of signals) the link_down_events is physical link
downs which the switch / remote end will also see. Unlike software
carrier off which may just configure the MAC or the NIC pipeline to
drop but the PHY stays connected / trained / synchronized.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers
2025-05-14 14:42 ` Jakub Kicinski
@ 2025-05-14 14:59 ` Szapar-Mudlaw, Martyna
0 siblings, 0 replies; 7+ messages in thread
From: Szapar-Mudlaw, Martyna @ 2025-05-14 14:59 UTC (permalink / raw)
To: Jakub Kicinski; +Cc: intel-wired-lan, netdev
On 5/14/2025 4:42 PM, Jakub Kicinski wrote:
> On Wed, 14 May 2025 15:44:49 +0200 Szapar-Mudlaw, Martyna wrote:
>> The link-down events counter increments upon actual physical link-down
>> events, doesn't increment when user performs a simple down/up of the
>> interface.
>>
>> However there is indeed link down event from firmware - as
>> part of interface reinitialization eg. when attaching XDP program,
>> reconfiguring channels and setting interface priv-flags.
>
> Maybe I'm misunderstanding, but are you saying that the link-down
> counter doesn't increment on ifdown+ifup but it does increment
> when attaching an XDP prog?
>
> The definition of link_down_events is pretty simple - (plus minus
> the quantum world of signals) the link_down_events is physical link
> downs which the switch / remote end will also see. Unlike software
> carrier off which may just configure the MAC or the NIC pipeline to
> drop but the PHY stays connected / trained / synchronized.
>
Agree. I said that it increments when physical link gets down and not
eg. when user performs ip link set dev eth down.
So this implementation of link_down_events counter is consistent with
the definition you provided.
Regards,
Martyna
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2025-05-14 14:59 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-05-12 9:05 [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 1/2] ice: add link_down_events statistic Martyna Szapar-Mudlaw
2025-05-12 9:05 ` [PATCH iwl-next v3 2/2] ixgbe: " Martyna Szapar-Mudlaw
2025-05-13 0:21 ` [PATCH iwl-next v3 0/2] Add link_down_events counters to ixgbe and ice drivers Jakub Kicinski
2025-05-14 13:44 ` Szapar-Mudlaw, Martyna
2025-05-14 14:42 ` Jakub Kicinski
2025-05-14 14:59 ` Szapar-Mudlaw, Martyna
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).