Source-Changes-HG archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
[src/trunk]: src/sys/dev/pci/ixgbe Copy & paste some missing part (flow direc...
details: https://anonhg.NetBSD.org/src/rev/378902a88f92
branches: trunk
changeset: 948314:378902a88f92
user: msaitoh <msaitoh%NetBSD.org@localhost>
date: Sat Dec 26 06:27:38 2020 +0000
description:
Copy & paste some missing part (flow director, ECC and temp sensor) from
ixgbe_msix_admin() to ixgbe_legacy_irq(). Now it's ready to make a new
function to share the common part. It'll be done in near future.
diffstat:
sys/dev/pci/ixgbe/ixgbe.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 56 insertions(+), 1 deletions(-)
diffs (71 lines):
diff -r a40b0be7a9fe -r 378902a88f92 sys/dev/pci/ixgbe/ixgbe.c
--- a/sys/dev/pci/ixgbe/ixgbe.c Sat Dec 26 06:17:55 2020 +0000
+++ b/sys/dev/pci/ixgbe/ixgbe.c Sat Dec 26 06:27:38 2020 +0000
@@ -1,4 +1,4 @@
-/* $NetBSD: ixgbe.c,v 1.275 2020/12/26 06:17:55 msaitoh Exp $ */
+/* $NetBSD: ixgbe.c,v 1.276 2020/12/26 06:27:38 msaitoh Exp $ */
/******************************************************************************
@@ -5272,6 +5272,61 @@
}
}
+ if (adapter->hw.mac.type != ixgbe_mac_82598EB) {
+ if ((adapter->feat_en & IXGBE_FEATURE_FDIR) &&
+ (eicr & IXGBE_EICR_FLOW_DIR)) {
+ if (!atomic_cas_uint(&adapter->fdir_reinit, 0, 1)) {
+ task_requests |= IXGBE_REQUEST_TASK_FDIR;
+ /* Disable the interrupt */
+ eims_disable |= IXGBE_EIMS_FLOW_DIR;
+ }
+ }
+
+ if (eicr & IXGBE_EICR_ECC) {
+ device_printf(adapter->dev,
+ "CRITICAL: ECC ERROR!! Please Reboot!!\n");
+ /* Disable interrupt to prevent log spam */
+ eims_disable |= IXGBE_EICR_ECC;
+ }
+
+ /* Check for over temp condition */
+ if (adapter->feat_en & IXGBE_FEATURE_TEMP_SENSOR) {
+ switch (adapter->hw.mac.type) {
+ case ixgbe_mac_X550EM_a:
+ if (!(eicr & IXGBE_EICR_GPI_SDP0_X550EM_a))
+ break;
+ /* Disable interrupt to prevent log spam */
+ eims_disable |= IXGBE_EICR_GPI_SDP0_X550EM_a;
+
+ retval = hw->phy.ops.check_overtemp(hw);
+ if (retval != IXGBE_ERR_OVERTEMP)
+ break;
+ device_printf(adapter->dev, "CRITICAL: OVER TEMP!! PHY IS SHUT DOWN!!\n");
+ device_printf(adapter->dev, "System shutdown required!\n");
+ break;
+ default:
+ if (!(eicr & IXGBE_EICR_TS))
+ break;
+ /* Disable interrupt to prevent log spam */
+ eims_disable |= IXGBE_EIMS_TS;
+
+ retval = hw->phy.ops.check_overtemp(hw);
+ if (retval != IXGBE_ERR_OVERTEMP)
+ break;
+ device_printf(adapter->dev, "CRITICAL: OVER TEMP!! PHY IS SHUT DOWN!!\n");
+ device_printf(adapter->dev, "System shutdown required!\n");
+ break;
+ }
+ }
+
+ /* Check for VF message */
+ if ((adapter->feat_en & IXGBE_FEATURE_SRIOV) &&
+ (eicr & IXGBE_EICR_MAILBOX)) {
+ task_requests |= IXGBE_REQUEST_TASK_MBX;
+ eims_disable |= IXGBE_EIMS_MAILBOX;
+ }
+ }
+
/* Check for fan failure */
if (adapter->feat_en & IXGBE_FEATURE_FAN_FAIL) {
retval = ixgbe_check_fan_failure(adapter, eicr, true);
Home |
Main Index |
Thread Index |
Old Index