From c6ddd5f1c3f3254034f8e9ba741af4a3b0260998 Mon Sep 17 00:00:00 2001 From: Terry Duncan Date: Wed, 24 Feb 2021 20:50:27 -0800 Subject: [PATCH] ipmi: Refine retry conditions for getting device id Rarely but still failures are observed while getting BMC device ID so this commit changes the condition to retry to get device id when cc is not IPMI_CC_NO_ERROR. Signed-off-by: Terry Duncan Signed-off-by: Jae Hyun Yoo Message-Id: <20210225045027.9344-1-jae.hyun.yoo@linux.intel.com> Signed-off-by: Corey Minyard --- drivers/char/ipmi/ipmi_msghandler.c | 6 ++---- drivers/char/ipmi/ipmi_si_intf.c | 6 ++---- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/drivers/char/ipmi/ipmi_msghandler.c b/drivers/char/ipmi/ipmi_msghandler.c index c44ad18464f15..f19f0f967e283 100644 --- a/drivers/char/ipmi/ipmi_msghandler.c +++ b/drivers/char/ipmi/ipmi_msghandler.c @@ -2447,10 +2447,8 @@ retry: wait_event(intf->waitq, bmc->dyn_id_set != 2); if (!bmc->dyn_id_set) { - if ((bmc->cc == IPMI_DEVICE_IN_FW_UPDATE_ERR - || bmc->cc == IPMI_DEVICE_IN_INIT_ERR - || bmc->cc == IPMI_NOT_IN_MY_STATE_ERR) - && ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { + if (bmc->cc != IPMI_CC_NO_ERROR && + ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { msleep(500); dev_warn(intf->si_dev, "BMC returned 0x%2.2x, retry get bmc device id\n", diff --git a/drivers/char/ipmi/ipmi_si_intf.c b/drivers/char/ipmi/ipmi_si_intf.c index 5eac94cf4ff89..be41a473e3c26 100644 --- a/drivers/char/ipmi/ipmi_si_intf.c +++ b/drivers/char/ipmi/ipmi_si_intf.c @@ -1346,10 +1346,8 @@ retry: /* record completion code */ unsigned char cc = *(resp + 2); - if ((cc == IPMI_DEVICE_IN_FW_UPDATE_ERR - || cc == IPMI_DEVICE_IN_INIT_ERR - || cc == IPMI_NOT_IN_MY_STATE_ERR) - && ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { + if (cc != IPMI_CC_NO_ERROR && + ++retry_count <= GET_DEVICE_ID_MAX_RETRY) { dev_warn(smi_info->io.dev, "BMC returned 0x%2.2x, retry get bmc device id\n", cc); -- 2.30.2