You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
82 lines
3.4 KiB
82 lines
3.4 KiB
From 03bfb6460688a8879a9a159167b3c8d36a4275ee Mon Sep 17 00:00:00 2001
|
|
From: Jonathan Toppins <jtoppins@redhat.com>
|
|
Date: Wed, 2 Oct 2019 18:23:27 -0400
|
|
Subject: [PATCH 72/96] [netdrv] bnxt_en: Handle RESET_NOTIFY async event from
|
|
firmware
|
|
|
|
Message-id: <3a807e3f42d2f73dd6a5c46ce3792861aabac0be.1570027456.git.jtoppins@redhat.com>
|
|
Patchwork-id: 276499
|
|
O-Subject: [RHEL-8.2 PATCH 65/78] bnxt_en: Handle RESET_NOTIFY async event from firmware.
|
|
Bugzilla: 1724766
|
|
RH-Acked-by: John Linville <linville@redhat.com>
|
|
RH-Acked-by: Jarod Wilson <jarod@redhat.com>
|
|
|
|
This event from firmware signals a coordinated reset initiated by the
|
|
firmware. It may be triggered by some error conditions encountered
|
|
in the firmware or other orderly reset conditions.
|
|
|
|
We store the parameters from this event. Subsequent patches will
|
|
add logic to handle reset itself using devlink reporters.
|
|
|
|
Signed-off-by: Vasundhara Volam <vasundhara-v.volam@broadcom.com>
|
|
Signed-off-by: Michael Chan <michael.chan@broadcom.com>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
(cherry picked from commit 2151fe0830fdb951f8ecfcfe67306fdef2366aa0)
|
|
Bugzilla: 1724766
|
|
Build Info: https://brewweb.engineering.redhat.com/brew/taskinfo?taskID=23809532
|
|
Tested: build, boot, basic ping
|
|
Signed-off-by: Jonathan Toppins <jtoppins@redhat.com>
|
|
Signed-off-by: Bruno Meneguele <bmeneg@redhat.com>
|
|
---
|
|
drivers/net/ethernet/broadcom/bnxt/bnxt.c | 11 +++++++++++
|
|
drivers/net/ethernet/broadcom/bnxt/bnxt.h | 7 +++++++
|
|
2 files changed, 18 insertions(+)
|
|
|
|
Index: src/drivers/net/ethernet/broadcom/bnxt/bnxt.c
|
|
===================================================================
|
|
--- src.orig/drivers/net/ethernet/broadcom/bnxt/bnxt.c 2020-02-06 16:23:19.749476077 +0100
|
|
+++ src/drivers/net/ethernet/broadcom/bnxt/bnxt.c 2020-02-06 16:23:20.029473507 +0100
|
|
@@ -254,6 +254,7 @@
|
|
ASYNC_EVENT_CMPL_EVENT_ID_PORT_CONN_NOT_ALLOWED,
|
|
ASYNC_EVENT_CMPL_EVENT_ID_VF_CFG_CHANGE,
|
|
ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE,
|
|
+ ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY,
|
|
ASYNC_EVENT_CMPL_EVENT_ID_ERROR_RECOVERY,
|
|
};
|
|
|
|
@@ -1981,6 +1982,16 @@
|
|
goto async_event_process_exit;
|
|
set_bit(BNXT_RESET_TASK_SILENT_SP_EVENT, &bp->sp_event);
|
|
break;
|
|
+ case ASYNC_EVENT_CMPL_EVENT_ID_RESET_NOTIFY:
|
|
+ bp->fw_reset_timestamp = jiffies;
|
|
+ bp->fw_reset_min_dsecs = cmpl->timestamp_lo;
|
|
+ if (!bp->fw_reset_min_dsecs)
|
|
+ bp->fw_reset_min_dsecs = BNXT_DFLT_FW_RST_MIN_DSECS;
|
|
+ bp->fw_reset_max_dsecs = le16_to_cpu(cmpl->timestamp_hi);
|
|
+ if (!bp->fw_reset_max_dsecs)
|
|
+ bp->fw_reset_max_dsecs = BNXT_DFLT_FW_RST_MAX_DSECS;
|
|
+ set_bit(BNXT_FW_RESET_NOTIFY_SP_EVENT, &bp->sp_event);
|
|
+ break;
|
|
case ASYNC_EVENT_CMPL_EVENT_ID_ERROR_RECOVERY: {
|
|
struct bnxt_fw_health *fw_health = bp->fw_health;
|
|
u32 data1 = le32_to_cpu(cmpl->event_data1);
|
|
Index: src/drivers/net/ethernet/broadcom/bnxt/bnxt.h
|
|
===================================================================
|
|
--- src.orig/drivers/net/ethernet/broadcom/bnxt/bnxt.h 2020-02-06 16:23:19.896474728 +0100
|
|
+++ src/drivers/net/ethernet/broadcom/bnxt/bnxt.h 2020-02-06 16:23:20.029473507 +0100
|
|
@@ -1719,6 +1719,13 @@
|
|
#define BNXT_FLOW_STATS_SP_EVENT 15
|
|
#define BNXT_UPDATE_PHY_SP_EVENT 16
|
|
#define BNXT_RING_COAL_NOW_SP_EVENT 17
|
|
+#define BNXT_FW_RESET_NOTIFY_SP_EVENT 18
|
|
+
|
|
+ u16 fw_reset_min_dsecs;
|
|
+#define BNXT_DFLT_FW_RST_MIN_DSECS 20
|
|
+ u16 fw_reset_max_dsecs;
|
|
+#define BNXT_DFLT_FW_RST_MAX_DSECS 60
|
|
+ unsigned long fw_reset_timestamp;
|
|
|
|
struct bnxt_fw_health *fw_health;
|
|
|