]> www.infradead.org Git - users/hch/misc.git/commitdiff
ixgbe: add support for thermal sensor event reception
authorJedrzej Jagielski <jedrzej.jagielski@intel.com>
Mon, 10 Mar 2025 17:44:59 +0000 (10:44 -0700)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 18 Mar 2025 09:15:50 +0000 (10:15 +0100)
E610 NICs unlike the previous devices utilising ixgbe driver
are notified in the case of overheating by the FW ACI event.

In event of overheat when threshold is exceeded, FW suspends all
traffic and sends overtemp event to the driver. Then driver
logs appropriate message and disables the adapter instance.
The card remains in that state until the platform is rebooted.

This approach is a solution to the fact current version of the
E610 FW doesn't support reading thermal sensor data by the
SW. So give to user at least any info that overtemp event
has occurred, without interface disappearing from the OS
without any note.

Reviewed-by: Przemek Kitszel <przemyslaw.kitszel@intel.com>
Reviewed-by: Mateusz Polchlopek <mateusz.polchlopek@intel.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: Jedrzej Jagielski <jedrzej.jagielski@intel.com>
Tested-by: Jeremiah Lokan <jeremiahx.j.lokan@intel.com> (A Contingent worker at Intel)
Signed-off-by: Tony Nguyen <anthony.l.nguyen@intel.com>
Link: https://patch.msgid.link/20250310174502.3708121-7-anthony.l.nguyen@intel.com
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
drivers/net/ethernet/intel/ixgbe/ixgbe_type_e610.h

index 467f81239e12f9fa7a007db544a5917d08dca92e..481f917f7ed28881152514bcc52d6e696c34c4b9 100644 (file)
@@ -3185,6 +3185,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_down(adapter);
+                       break;
                default:
                        e_warn(hw, "unknown FW async event captured\n");
                        break;
index 8d06ade3c7cd971e284cf9cf2e2595a2163e684f..617e07878e4f7f79e4a299d5ce4a46610aa95479 100644 (file)
@@ -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,