All of lore.kernel.org
 help / color / mirror / Atom feed
From: Alice Michael <alice.michael@intel.com>
To: intel-wired-lan@osuosl.org
Subject: [Intel-wired-lan] [next PATCH S3 4/9] i40e: ShadowRAM checksum calculation change
Date: Thu, 28 Feb 2019 09:52:50 -0800	[thread overview]
Message-ID: <20190228175255.54754-4-alice.michael@intel.com> (raw)
In-Reply-To: <20190228175255.54754-1-alice.michael@intel.com>

From: Maciej Paczkowski <maciej.paczkowski@intel.com>

Due to changes in FW the SW is required to perform double SR dump in
some cases.

Implementation adds two new steps to update nvm checksum function:
* recalculate checksum and check if checksum in NVM is correct
* if checksum in NVM is not correct then update it again

Signed-off-by: Maciej Paczkowski <maciej.paczkowski@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_nvm.c | 29 +++++++++++++++++++---
 1 file changed, 25 insertions(+), 4 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_nvm.c b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
index 0299e5bbb902..ee89779a9a6f 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_nvm.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_nvm.c
@@ -574,13 +574,34 @@ static i40e_status i40e_calc_nvm_checksum(struct i40e_hw *hw,
 i40e_status i40e_update_nvm_checksum(struct i40e_hw *hw)
 {
 	i40e_status ret_code;
-	u16 checksum;
+	u16 checksum, checksum_sr;
 	__le16 le_sum;
 
 	ret_code = i40e_calc_nvm_checksum(hw, &checksum);
-	if (!ret_code) {
-		le_sum = cpu_to_le16(checksum);
-		ret_code = i40e_write_nvm_aq(hw, 0x00, I40E_SR_SW_CHECKSUM_WORD,
+	if (ret_code)
+		return ret_code;
+
+	le_sum = cpu_to_le16(checksum);
+	ret_code = i40e_write_nvm_aq(hw, 0x00, I40E_SR_SW_CHECKSUM_WORD,
+				     1, &le_sum, true);
+	if (ret_code)
+		return ret_code;
+
+	/* Due to changes in FW the SW is required to perform double SR-dump
+	 * in some cases. SR-dump is the process when internal shadow RAM is
+	 * dumped into flash bank. It is triggered by setting "last_command"
+	 * argument in i40e_write_nvm_aq function call.
+	 * Since FW 1.8 we need to calculate SR checksum again and update it
+	 * in flash if it is not equal to previously computed checksum.
+	 * This situation would occur only in FW >= 1.8
+	 */
+	ret_code = i40e_calc_nvm_checksum(hw, &checksum_sr);
+	if (ret_code)
+		return ret_code;
+	if (checksum_sr != checksum) {
+		le_sum = cpu_to_le16(checksum_sr);
+		ret_code = i40e_write_nvm_aq(hw, 0x00,
+					     I40E_SR_SW_CHECKSUM_WORD,
 					     1, &le_sum, true);
 	}
 
-- 
2.19.2


  parent reply	other threads:[~2019-02-28 17:52 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-02-28 17:52 [Intel-wired-lan] [next PATCH S3 1/9] i40e: Fix for allowing too many MDD events on VF Alice Michael
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 2/9] i40e: change behavior on PF in response to MDD event Alice Michael
2019-03-02  0:22   ` Bowers, AndrewX
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 3/9] i40e: remove error msg when vf with port vlan tries to remove vlan 0 Alice Michael
2019-02-28 17:57   ` Loktionov, Aleksandr
2019-03-02  0:22   ` Bowers, AndrewX
2019-02-28 17:52 ` Alice Michael [this message]
2019-03-02  0:23   ` [Intel-wired-lan] [next PATCH S3 4/9] i40e: ShadowRAM checksum calculation change Bowers, AndrewX
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 5/9] i40e: Report advertised link modes on 40GBase_LR4, CR4 and fibre Alice Michael
2019-03-02  0:23   ` Bowers, AndrewX
2019-03-04  9:11   ` Ludkiewicz, Adam
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 6/9] i40e: Further implementation of LLDP Alice Michael
2019-02-28 17:56   ` Loktionov, Aleksandr
2019-03-02  0:24   ` Bowers, AndrewX
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 7/9] i40e: remove out-of-range comparisions in i40e_validate_cloud_filter Alice Michael
2019-03-02  0:24   ` Bowers, AndrewX
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 8/9] i40e: update version number Alice Michael
2019-03-02  0:25   ` Bowers, AndrewX
2019-02-28 17:52 ` [Intel-wired-lan] [next PATCH S3 9/9] i40e: fix misleading message about promisc setting on un-trusted VF Alice Michael
2019-03-02  0:26   ` Bowers, AndrewX
2019-03-02  0:21 ` [Intel-wired-lan] [next PATCH S3 1/9] i40e: Fix for allowing too many MDD events on VF Bowers, AndrewX

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=20190228175255.54754-4-alice.michael@intel.com \
    --to=alice.michael@intel.com \
    --cc=intel-wired-lan@osuosl.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.