summaryrefslogtreecommitdiffstats
path: root/sys/pci
diff options
context:
space:
mode:
authorgibbs <gibbs@FreeBSD.org>1998-07-16 19:33:43 +0000
committergibbs <gibbs@FreeBSD.org>1998-07-16 19:33:43 +0000
commita0f37891cd74449b686d773a4d5e85fe6410587a (patch)
treeb617dd5bb27e5c9c43f639af0e6f16f2ee3b48ee /sys/pci
parente5267d9c1bf272fca670235d30ab651aaa2ee00f (diff)
downloadFreeBSD-src-a0f37891cd74449b686d773a4d5e85fe6410587a.zip
FreeBSD-src-a0f37891cd74449b686d773a4d5e85fe6410587a.tar.gz
Correct SEEPROM checksum calculation when multiple checksum attemps are made.
Pointed out by: "Jose M. Alcaide" <jose@we.lc.ehu.es>
Diffstat (limited to 'sys/pci')
-rw-r--r--sys/pci/aic7870.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/sys/pci/aic7870.c b/sys/pci/aic7870.c
index c99a6fc..0445576 100644
--- a/sys/pci/aic7870.c
+++ b/sys/pci/aic7870.c
@@ -36,7 +36,7 @@
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
- * $Id: aic7870.c,v 1.54 1997/11/18 14:14:34 bde Exp $
+ * $Id: aic7870.c,v 1.55 1998/07/06 18:38:57 gibbs Exp $
*/
#if defined(__FreeBSD__)
@@ -676,7 +676,6 @@ load_seeprom(ahc, sxfrctl1)
struct seeprom_descriptor sd;
struct seeprom_config sc;
u_int16_t *scarray = (u_int16_t *)&sc;
- u_int16_t checksum = 0;
u_int8_t scsi_conf;
u_int8_t host_id;
int have_seeprom;
@@ -726,8 +725,13 @@ load_seeprom(ahc, sxfrctl1)
if (have_seeprom) {
/* Check checksum */
int i;
- int maxaddr = (sizeof(sc)/2) - 1;
- u_int16_t *scarray = (u_int16_t *)&sc;
+ int maxaddr;
+ u_int16_t *scarray;
+ u_int16_t checksum;
+
+ maxaddr = (sizeof(sc)/2) - 1;
+ checksum = 0;
+ scarray = (u_int16_t *)&sc;
for (i = 0; i < maxaddr; i++)
checksum = checksum + scarray[i];
OpenPOWER on IntegriCloud