Sophie

Sophie

distrib > Scientific%20Linux > 5x > x86_64 > by-pkgid > 27922b4260f65d317aabda37e42bbbff > files > 3023

kernel-2.6.18-238.el5.src.rpm

From: Chad Dupuis <cdupuis@redhat.com>
Date: Fri, 19 Nov 2010 18:25:24 -0500
Subject: [net] qlge: reset chip before freeing buffers
Message-id: <20101119182524.6308.54848.sendpatchset@localhost.localdomain>
Patchwork-id: 29520
O-Subject: [RHEL 5.6 PATCH 2/5] qlge: reset the chip before freeing the buffers.
Bugzilla: 654420
RH-Acked-by: David S. Miller <davem@redhat.com>

Bugzilla
--------

Bug 654420 (https://bugzilla.redhat.com/show_bug.cgi?id=654420)

Upstream Status
---------------

net-2.6 commit id fe5f098055ed7f701bfb16f8f87378cf67de9a0e

Description
-----------

>From 12b9c5120f1622f7ddd459ef2e50129694b94fa7 Mon Sep 17 00:00:00 2001
From: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
Date: Thu, 14 Oct 2010 13:54:46 -0700
Subject: [PATCH 2/5] 	qlge: reset the chip before freeing the buffers.

	Qlge is freeing the buffers before stopping the card DMA, and
	this can cause some severe error, as a EEH event on PPC.

	This patch just stop the card and then free the resources.

Signed-off-by: Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>

diff --git a/drivers/net/qlge/qlge_main.c b/drivers/net/qlge/qlge_main.c
index 3391f12..d10de66 100644
--- a/drivers/net/qlge/qlge_main.c
+++ b/drivers/net/qlge/qlge_main.c
@@ -3688,11 +3688,11 @@ static int ql_adapter_down(struct ql_adapter *qdev)
 	ql_disable_interrupts(qdev);
 
 	ql_tx_ring_clean(qdev);
-	ql_free_rx_buffers(qdev);
 	status = ql_adapter_reset(qdev);
 	if (status)
 		QPRINTK(qdev, IFDOWN, ERR, "reset(func #%d) FAILED!\n",
 			qdev->func);
+	ql_free_rx_buffers(qdev);
 	return status;
 }