linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Wey-Yi Guy <wey-yi.w.guy@intel.com>
To: linville@tuxdriver.com
Cc: linux-wireless@vger.kernel.org,
	ipw3945-devel@lists.sourceforge.net,
	Johannes Berg <johannes.berg@intel.com>,
	Wey-Yi Guy <wey-yi.w.guy@intel.com>
Subject: [PATCH 08/25] iwlagn: simplify ucode check code
Date: Tue,  5 Apr 2011 09:41:55 -0700	[thread overview]
Message-ID: <1302021732-21250-9-git-send-email-wey-yi.w.guy@intel.com> (raw)
In-Reply-To: <1302021732-21250-1-git-send-email-wey-yi.w.guy@intel.com>

From: Johannes Berg <johannes.berg@intel.com>

The code in iwlcore_verify_inst_sparse really
doesn't need to keep track of the number of
errors it encountered since a single one is
fatal.

Also, the code in iwl_verify_inst_full is just
used to print out some things, so rename it to
iwl_print_inst and don't give it a return code
and just make it print out the values.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
---
 drivers/net/wireless/iwlwifi/iwl-agn-ucode.c |   51 +++++++++-----------------
 1 files changed, 17 insertions(+), 34 deletions(-)

diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
index 127c842..2205b60 100644
--- a/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn-ucode.c
@@ -542,8 +542,6 @@ int iwlagn_alive_notify(struct iwl_priv *priv)
 static int iwlcore_verify_inst_sparse(struct iwl_priv *priv, __le32 *image, u32 len)
 {
 	u32 val;
-	int ret = 0;
-	u32 errcnt = 0;
 	u32 i;
 
 	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
@@ -555,56 +553,39 @@ static int iwlcore_verify_inst_sparse(struct iwl_priv *priv, __le32 *image, u32
 		iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
 			i + IWLAGN_RTC_INST_LOWER_BOUND);
 		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
-		if (val != le32_to_cpu(*image)) {
-			ret = -EIO;
-			errcnt++;
-			if (errcnt >= 3)
-				break;
-		}
+		if (val != le32_to_cpu(*image))
+			return -EIO;
 	}
 
-	return ret;
+	return 0;
 }
 
-/**
- * iwlcore_verify_inst_full - verify runtime uCode image in card vs. host,
- *     looking at all data.
- */
-static int iwl_verify_inst_full(struct iwl_priv *priv, __le32 *image,
-				 u32 len)
+static void iwl_print_mismatch_inst(struct iwl_priv *priv,
+				    __le32 *image, u32 len)
 {
 	u32 val;
-	u32 save_len = len;
-	int ret = 0;
-	u32 errcnt;
+	u32 offs;
+	int errors = 0;
 
 	IWL_DEBUG_INFO(priv, "ucode inst image size is %u\n", len);
 
 	iwl_write_direct32(priv, HBUS_TARG_MEM_RADDR,
 			   IWLAGN_RTC_INST_LOWER_BOUND);
 
-	errcnt = 0;
-	for (; len > 0; len -= sizeof(u32), image++) {
+	for (offs = 0;
+	     offs < len && errors < 20;
+	     offs += sizeof(u32), image++) {
 		/* read data comes through single port, auto-incr addr */
 		/* NOTE: Use the debugless read so we don't flood kernel log
 		 * if IWL_DL_IO is set */
 		val = _iwl_read_direct32(priv, HBUS_TARG_MEM_RDAT);
 		if (val != le32_to_cpu(*image)) {
-			IWL_ERR(priv, "uCode INST section is invalid at "
-				  "offset 0x%x, is 0x%x, s/b 0x%x\n",
-				  save_len - len, val, le32_to_cpu(*image));
-			ret = -EIO;
-			errcnt++;
-			if (errcnt >= 20)
-				break;
+			IWL_ERR(priv, "uCode INST section at "
+				"offset 0x%x, is 0x%x, s/b 0x%x\n",
+				offs, val, le32_to_cpu(*image));
+			errors++;
 		}
 	}
-
-	if (!errcnt)
-		IWL_DEBUG_INFO(priv,
-		    "ucode image in INSTRUCTION memory is good\n");
-
-	return ret;
 }
 
 /**
@@ -651,5 +632,7 @@ int iwl_verify_ucode(struct iwl_priv *priv)
 	 * Selection of bootstrap image (vs. other images) is arbitrary. */
 	image = (__le32 *)priv->ucode_boot.v_addr;
 	len = priv->ucode_boot.len;
-	return iwl_verify_inst_full(priv, image, len);
+	iwl_print_mismatch_inst(priv, image, len);
+
+	return -EIO;
 }
-- 
1.7.0.4


  parent reply	other threads:[~2011-04-05 17:01 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-05 16:41 [PATCH 00/25] update for 2.6.40 Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 01/25] iwlagn: remove unused variable Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 02/25] iwlagn: clean up some 3945/4965 remnants Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 03/25] iwlagn: make mac80211 handlers static Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 04/25] iwlagn: clean up ucode loading Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 05/25] iwlagn: remove more 3945/4965 related defines Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 06/25] iwlagn: remove pointless return variables Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 07/25] iwlagn: return send calibration result Wey-Yi Guy
2011-04-05 16:41 ` Wey-Yi Guy [this message]
2011-04-05 16:41 ` [PATCH 09/25] iwlagn: verify specific ucode Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 10/25] iwlagn: remove bootstrap code Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 11/25] iwlagn: centralize and fix ucode restart Wey-Yi Guy
2011-04-05 16:41 ` [PATCH 12/25] iwlagn: remove ucode_data_backup Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 13/25] iwlagn: change Copyright to 2011 Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 14/25] iwlagn: check more error return code Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 15/25] iwlagn: add feature flags Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 16/25] iwlagn: fix ucode verify message Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 17/25] iwlagn: clean up alive handling Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 18/25] iwlagn: init cmd_queue earlier Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 19/25] iwlagn: remove BSM clock setting Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 20/25] iwlagn: remove hw_wa_rev Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 21/25] iwlagn: remove hw_rev Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 22/25] iwlagn: remove rev_id Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 23/25] iwlagn: remove rxb page bookkeeping Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 24/25] iwlagn: remove ISR ops Wey-Yi Guy
2011-04-05 16:42 ` [PATCH 25/25] iwlagn: move IO functions out of line Wey-Yi Guy

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=1302021732-21250-9-git-send-email-wey-yi.w.guy@intel.com \
    --to=wey-yi.w.guy@intel.com \
    --cc=ipw3945-devel@lists.sourceforge.net \
    --cc=johannes.berg@intel.com \
    --cc=linux-wireless@vger.kernel.org \
    --cc=linville@tuxdriver.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).