From: Jingjing Wu <jingjing.wu@intel.com>
To: dev@dpdk.org
Cc: jingjing.wu@intel.com, helin.zhang@intel.com
Subject: [dpdk-dev] [PATCH v3 26/31] net/i40e/base: add ERROR state for NVM update state machine
Date: Sat, 10 Dec 2016 19:24:48 +0800 [thread overview]
Message-ID: <1481369093-102492-27-git-send-email-jingjing.wu@intel.com> (raw)
In-Reply-To: <1481369093-102492-1-git-send-email-jingjing.wu@intel.com>
This patch adds I40E_NVMUPD_STATE_ERROR state for NVM update.
Without this patch driver has no possibility to return NVM image write
failure.This state is being set when ARQ rises error.
arq_last_status is also updated every time when ARQ event comes,
not only on error cases.
Signed-off-by: Jingjing Wu <jingjing.wu@intel.com>
---
drivers/net/i40e/base/i40e_adminq.c | 4 ++--
drivers/net/i40e/base/i40e_nvm.c | 17 +++++++++++++++++
drivers/net/i40e/base/i40e_type.h | 2 ++
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/drivers/net/i40e/base/i40e_adminq.c b/drivers/net/i40e/base/i40e_adminq.c
index 0d3a83f..5bdf3f7 100644
--- a/drivers/net/i40e/base/i40e_adminq.c
+++ b/drivers/net/i40e/base/i40e_adminq.c
@@ -1077,11 +1077,11 @@ enum i40e_status_code i40e_clean_arq_element(struct i40e_hw *hw,
desc = I40E_ADMINQ_DESC(hw->aq.arq, ntc);
desc_idx = ntc;
+ hw->aq.arq_last_status =
+ (enum i40e_admin_queue_err)LE16_TO_CPU(desc->retval);
flags = LE16_TO_CPU(desc->flags);
if (flags & I40E_AQ_FLAG_ERR) {
ret_code = I40E_ERR_ADMIN_QUEUE_ERROR;
- hw->aq.arq_last_status =
- (enum i40e_admin_queue_err)LE16_TO_CPU(desc->retval);
i40e_debug(hw,
I40E_DEBUG_AQ_MESSAGE,
"AQRX: Event received with error 0x%X.\n",
diff --git a/drivers/net/i40e/base/i40e_nvm.c b/drivers/net/i40e/base/i40e_nvm.c
index 1f345a5..4f4a645 100644
--- a/drivers/net/i40e/base/i40e_nvm.c
+++ b/drivers/net/i40e/base/i40e_nvm.c
@@ -901,9 +901,20 @@ enum i40e_status_code i40e_nvmupd_command(struct i40e_hw *hw,
*((u16 *)&bytes[2]) = hw->nvm_wait_opcode;
}
+ /* Clear error status on read */
+ if (hw->nvmupd_state == I40E_NVMUPD_STATE_ERROR)
+ hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
+
return I40E_SUCCESS;
}
+ /* Clear status even it is not read and log */
+ if (hw->nvmupd_state == I40E_NVMUPD_STATE_ERROR) {
+ i40e_debug(hw, I40E_DEBUG_NVM,
+ "Clearing I40E_NVMUPD_STATE_ERROR state without reading\n");
+ hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
+ }
+
switch (hw->nvmupd_state) {
case I40E_NVMUPD_STATE_INIT:
status = i40e_nvmupd_state_init(hw, cmd, bytes, perrno);
@@ -1253,6 +1264,7 @@ STATIC enum i40e_status_code i40e_nvmupd_state_writing(struct i40e_hw *hw,
void i40e_nvmupd_check_wait_event(struct i40e_hw *hw, u16 opcode)
{
if (opcode == hw->nvm_wait_opcode) {
+
i40e_debug(hw, I40E_DEBUG_NVM,
"NVMUPD: clearing wait on opcode 0x%04x\n", opcode);
if (hw->nvm_release_on_done) {
@@ -1261,6 +1273,11 @@ void i40e_nvmupd_check_wait_event(struct i40e_hw *hw, u16 opcode)
}
hw->nvm_wait_opcode = 0;
+ if (hw->aq.arq_last_status) {
+ hw->nvmupd_state = I40E_NVMUPD_STATE_ERROR;
+ return;
+ }
+
switch (hw->nvmupd_state) {
case I40E_NVMUPD_STATE_INIT_WAIT:
hw->nvmupd_state = I40E_NVMUPD_STATE_INIT;
diff --git a/drivers/net/i40e/base/i40e_type.h b/drivers/net/i40e/base/i40e_type.h
index 3784c8f..56e47ea 100644
--- a/drivers/net/i40e/base/i40e_type.h
+++ b/drivers/net/i40e/base/i40e_type.h
@@ -499,6 +499,7 @@ enum i40e_nvmupd_state {
I40E_NVMUPD_STATE_WRITING,
I40E_NVMUPD_STATE_INIT_WAIT,
I40E_NVMUPD_STATE_WRITE_WAIT,
+ I40E_NVMUPD_STATE_ERROR
};
/* nvm_access definition and its masks/shifts need to be accessible to
@@ -1526,6 +1527,7 @@ struct i40e_hw_port_stats {
#define I40E_SR_EMPR_REGS_AUTO_LOAD_PTR 0x3A
#define I40E_SR_GLOBR_REGS_AUTO_LOAD_PTR 0x3B
#define I40E_SR_CORER_REGS_AUTO_LOAD_PTR 0x3C
+#define I40E_SR_PHY_ACTIVITY_LIST_PTR 0x3D
#define I40E_SR_PCIE_ALT_AUTO_LOAD_PTR 0x3E
#define I40E_SR_SW_CHECKSUM_WORD 0x3F
#define I40E_SR_1ST_FREE_PROVISION_AREA_PTR 0x40
--
2.4.11
next prev parent reply other threads:[~2016-12-10 11:26 UTC|newest]
Thread overview: 108+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-12-03 1:18 [dpdk-dev] [PATCH 00/31] net/i40e: base code update Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 01/31] net/i40e/base: add encap csum VF offload flag Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 02/31] net/i40e/base: preserve extended PHY type field Jingjing Wu
2016-12-05 14:34 ` Ferruh Yigit
2016-12-03 1:18 ` [dpdk-dev] [PATCH 03/31] net/i40e/base: remove unnecessary code Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 04/31] net/i40e/base: fix bit test mask Jingjing Wu
2016-12-05 14:37 ` Ferruh Yigit
2016-12-03 1:18 ` [dpdk-dev] [PATCH 05/31] net/i40e/base: group base mode VF offload flags Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 06/31] net/i40e/base: fix long link down notification time Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 07/31] net/i40e/base: add media type detection for 25G link Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 08/31] net/i40e/base: add clause22 and clause45 implementation Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 09/31] net/i40e/base: add bus number info Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 10/31] net/i40e/base: add protocols when discover capabilities Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 11/31] net/i40e/base: pass unknown PHY type for unknown PHYs Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 12/31] net/i40e/base: replace memcpy Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 13/31] net/i40e/base: deprecating unused macro Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 14/31] net/i40e/base: remove FPK HyperV VF device ID Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 15/31] net/i40e/base: add FEC bits to PHY capabilities Jingjing Wu
2016-12-05 14:30 ` Ferruh Yigit
2016-12-03 1:18 ` [dpdk-dev] [PATCH 16/31] net/i40e/base: use BIT() macro instead of bit fields Jingjing Wu
2016-12-03 1:18 ` [dpdk-dev] [PATCH 17/31] net/i40e/base: adjust 25G PHY type values Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 18/31] net/i40e/base: implement clear all WoL filters Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 19/31] net/i40e/base: implement set VSI full promisc mode Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 20/31] net/i40e/base: add defines for new aq command Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 21/31] net/i40e/base: save link FEC info from link up event Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 22/31] net/i40e/base: acquire NVM lock before reads on all devices Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 23/31] net/i40e/base: change shift values to hex Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 24/31] net/i40e/base: comment that udp port must be in Host order Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 25/31] net/i40e/base: remove duplicate definitions Jingjing Wu
2016-12-05 14:52 ` Ferruh Yigit
2016-12-03 1:19 ` [dpdk-dev] [PATCH 26/31] net/i40e/base: add ERROR state for NVM update state machine Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 27/31] net/i40e/base: add broadcast promiscuous control per VLAN Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 28/31] net/i40e/base: avoid division by zero Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 29/31] net/i40e/base: fix byte order Jingjing Wu
2016-12-03 1:19 ` [dpdk-dev] [PATCH 30/31] net/i40e/base: remove unused marco Jingjing Wu
2016-12-05 14:55 ` Ferruh Yigit
2016-12-06 6:43 ` Wu, Jingjing
2016-12-03 1:19 ` [dpdk-dev] [PATCH 31/31] net/i40e: remove unused marco from PMD Jingjing Wu
2016-12-05 14:57 ` Ferruh Yigit
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 00/31] net/i40e: base code update Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 01/31] net/i40e/base: add encap csum VF offload flag Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 02/31] net/i40e/base: preserve extended PHY type field Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 03/31] net/i40e/base: remove unnecessary code Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 04/31] net/i40e/base: fix bit test mask Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 05/31] net/i40e/base: group base mode VF offload flags Jingjing Wu
2016-12-09 14:38 ` [dpdk-dev] [PATCH v2 06/31] net/i40e/base: fix long link down notification time Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 07/31] net/i40e/base: add media type detection for 25G link Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 08/31] net/i40e/base: add clause22 and clause45 implementation Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 09/31] net/i40e/base: add bus number info Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 10/31] net/i40e/base: add protocols when discover capabilities Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 11/31] net/i40e/base: pass unknown PHY type for unknown PHYs Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 12/31] net/i40e/base: replace memcpy Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 13/31] net/i40e/base: deprecating unused macro Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 14/31] net/i40e/base: remove FPK HyperV VF device ID Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 15/31] net/i40e/base: add FEC bits to PHY capabilities Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 16/31] net/i40e/base: use BIT() macro instead of bit fields Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 17/31] net/i40e/base: adjust 25G PHY type values Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 18/31] net/i40e/base: implement clear all WoL filters Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 19/31] net/i40e/base: implement set VSI full promisc mode Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 20/31] net/i40e/base: add defines for new aq command Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 21/31] net/i40e/base: save link FEC info from link up event Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 22/31] net/i40e/base: acquire NVM lock before reads on all devices Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 23/31] net/i40e/base: change shift values to hex Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 24/31] net/i40e/base: comment that udp port must be in Host order Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 25/31] net/i40e/base: remove duplicate definitions Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 26/31] net/i40e/base: add ERROR state for NVM update state machine Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 27/31] net/i40e/base: add broadcast promiscuous control per VLAN Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 28/31] net/i40e/base: avoid division by zero Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 29/31] net/i40e/base: fix byte order Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 30/31] net/i40e/base: remove unused macro Jingjing Wu
2016-12-09 14:39 ` [dpdk-dev] [PATCH v2 31/31] net/i40e: remove unused macro from PMD Jingjing Wu
2016-12-09 16:08 ` [dpdk-dev] [PATCH v2 00/31] net/i40e: base code update Ferruh Yigit
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 " Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 01/31] net/i40e/base: add encap csum VF offload flag Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 02/31] net/i40e/base: fix flow control set for 25G Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 03/31] net/i40e/base: remove unnecessary code Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 04/31] net/i40e/base: fix bit test mask Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 05/31] net/i40e/base: group base mode VF offload flags Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 06/31] net/i40e/base: fix long link down notification time Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 07/31] net/i40e/base: add media type detection for 25G link Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 08/31] net/i40e/base: add clause22 and clause45 implementation Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 09/31] net/i40e/base: add bus number info Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 10/31] net/i40e/base: add protocols when discover capabilities Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 11/31] net/i40e/base: fix unknown PHYs incorrect identification Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 12/31] net/i40e/base: replace memcpy Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 13/31] net/i40e/base: deprecating unused macro Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 14/31] net/i40e/base: remove FPK HyperV VF device ID Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 15/31] net/i40e/base: add FEC bits to PHY capabilities Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 16/31] net/i40e/base: use BIT() macro instead of bit fields Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 17/31] net/i40e/base: adjust 25G PHY type values Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 18/31] net/i40e/base: implement clear all WoL filters Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 19/31] net/i40e/base: implement set VSI full promisc mode Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 20/31] net/i40e/base: fix wol failure on PF reset Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 21/31] net/i40e/base: save link FEC info from link up event Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 22/31] net/i40e/base: fix NVM access intefering Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 23/31] net/i40e/base: change shift values to hex Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 24/31] net/i40e/base: comment that udp port must be in Host order Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 25/31] net/i40e/base: remove duplicate definitions Jingjing Wu
2016-12-10 11:24 ` Jingjing Wu [this message]
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 27/31] net/i40e/base: add broadcast promiscuous control per VLAN Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 28/31] net/i40e/base: fix division by zero Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 29/31] net/i40e/base: fix byte order Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 30/31] net/i40e/base: remove unused macro Jingjing Wu
2016-12-10 11:24 ` [dpdk-dev] [PATCH v3 31/31] net/i40e: remove unused macro from PMD Jingjing Wu
2016-12-12 10:32 ` [dpdk-dev] [PATCH v3 00/31] net/i40e: base code update Ferruh Yigit
2016-12-20 15:40 ` Gregory Etelson
2016-12-20 16:21 ` Gregory Etelson
2017-01-12 11:48 ` Ferruh Yigit
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1481369093-102492-27-git-send-email-jingjing.wu@intel.com \
--to=jingjing.wu@intel.com \
--cc=dev@dpdk.org \
--cc=helin.zhang@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).