Message ID | 20250204071700.8028-1-jedrzej.jagielski@intel.com (mailing list archive) |
---|---|
State | Awaiting Upstream |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [iwl-next,v2] ixgbe: add support for thermal sensor event reception | expand |
On 2/4/2025 8:17 AM, Jedrzej Jagielski wrote: > E610 NICs unlike the previous devices utilising ixgbe driver > are notified in the case of overheatning by the FW ACI event. > > In event of overheat when treshold is exceeded, FW suspends all > traffic and sends overtemp event to the driver. Then driver > logs appropriate message and closes the adapter instance. > The card remains in that state until the platform is rebooted. > > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> > --- > v2: commit msg tweaks > --- > drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 5 +++++ > drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h | 3 +++ > 2 files changed, 8 insertions(+) > > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > index 7236f20c9a30..5c804948dd1f 100644 > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c > @@ -3165,6 +3165,7 @@ static void ixgbe_aci_event_cleanup(struct ixgbe_aci_event *event) > static void ixgbe_handle_fw_event(struct ixgbe_adapter *adapter) > { > struct ixgbe_aci_event event __cleanup(ixgbe_aci_event_cleanup); > + struct net_device *netdev = adapter->netdev; > struct ixgbe_hw *hw = &adapter->hw; > bool pending = false; > int err; > @@ -3185,6 +3186,10 @@ static void ixgbe_handle_fw_event(struct ixgbe_adapter *adapter) > case ixgbe_aci_opc_get_link_status: > ixgbe_handle_link_status_event(adapter, &event); > break; > + case ixgbe_aci_opc_temp_tca_event: > + e_crit(drv, "%s\n", ixgbe_overheat_msg); > + ixgbe_close(netdev); > + break; > default: > e_warn(hw, "unknown FW async event captured\n"); > break; > diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h > index 8d06ade3c7cd..617e07878e4f 100644 > --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h > +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h > @@ -171,6 +171,9 @@ enum ixgbe_aci_opc { > ixgbe_aci_opc_done_alt_write = 0x0904, > ixgbe_aci_opc_clear_port_alt_write = 0x0906, > > + /* TCA Events */ > + ixgbe_aci_opc_temp_tca_event = 0x0C94, > + > /* debug commands */ > ixgbe_aci_opc_debug_dump_internals = 0xFF08, > Thanks for this change Jedrzej Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
On Tue, Feb 04, 2025 at 08:17:00AM +0100, Jedrzej Jagielski wrote: > E610 NICs unlike the previous devices utilising ixgbe driver > are notified in the case of overheatning by the FW ACI event. > > In event of overheat when treshold is exceeded, FW suspends all > traffic and sends overtemp event to the driver. Then driver > logs appropriate message and closes the adapter instance. > The card remains in that state until the platform is rebooted. There is also an HWMON temp[1-*]_emergency_alarm you can set. I _think_ that should also cause a udev event, so user space knows the print^h^h^h^h^hnetwork is on fire. Andrew
On Tue, Feb 04, 2025 at 08:17:00AM +0100, Jedrzej Jagielski wrote: > E610 NICs unlike the previous devices utilising ixgbe driver > are notified in the case of overheatning by the FW ACI event. > > In event of overheat when treshold is exceeded, FW suspends all A nit flagged by checkpatch.pl --codespell. In case there is a v3 for some other reason you may want to correct the spelling of threshold. > traffic and sends overtemp event to the driver. Then driver > logs appropriate message and closes the adapter instance. > The card remains in that state until the platform is rebooted. > > Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com> > Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com> ...
diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c index 7236f20c9a30..5c804948dd1f 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c @@ -3165,6 +3165,7 @@ static void ixgbe_aci_event_cleanup(struct ixgbe_aci_event *event) static void ixgbe_handle_fw_event(struct ixgbe_adapter *adapter) { struct ixgbe_aci_event event __cleanup(ixgbe_aci_event_cleanup); + struct net_device *netdev = adapter->netdev; struct ixgbe_hw *hw = &adapter->hw; bool pending = false; int err; @@ -3185,6 +3186,10 @@ static void ixgbe_handle_fw_event(struct ixgbe_adapter *adapter) case ixgbe_aci_opc_get_link_status: ixgbe_handle_link_status_event(adapter, &event); break; + case ixgbe_aci_opc_temp_tca_event: + e_crit(drv, "%s\n", ixgbe_overheat_msg); + ixgbe_close(netdev); + break; default: e_warn(hw, "unknown FW async event captured\n"); break; diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h b/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h index 8d06ade3c7cd..617e07878e4f 100644 --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h @@ -171,6 +171,9 @@ enum ixgbe_aci_opc { ixgbe_aci_opc_done_alt_write = 0x0904, ixgbe_aci_opc_clear_port_alt_write = 0x0906, + /* TCA Events */ + ixgbe_aci_opc_temp_tca_event = 0x0C94, + /* debug commands */ ixgbe_aci_opc_debug_dump_internals = 0xFF08,