mirror of
https://git.yoctoproject.org/meta-ti
synced 2026-07-17 06:48:07 +00:00
88867c1d96
Move non-essential, outdated, best-effort pieces, as well, as those requiring extra non-standard dependencies besides oe-core. Signed-off-by: Denys Dmytriyenko <denys@ti.com>
64 lines
2.1 KiB
Diff
64 lines
2.1 KiB
Diff
From f14284bb4ad057377b4944bb3985352fe1079c60 Mon Sep 17 00:00:00 2001
|
|
From: J. K. Cliburn <jcliburn@gmail.com>
|
|
Date: Sat, 1 Jan 2011 05:02:12 +0000
|
|
Subject: [PATCH 57/65] atl1: fix oops when changing tx/rx ring params
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Commit 3f5a2a713aad28480d86b0add00c68484b54febc zeroes out the statistics
|
|
message block (SMB) and coalescing message block (CMB) when adapter ring
|
|
resources are freed. This is desirable behavior, but, as a side effect,
|
|
the commit leads to an oops when atl1_set_ringparam() attempts to alter
|
|
the number of rx or tx elements in the ring buffer (by using ethtool
|
|
-G, for example). We don't want SMB or CMB to change during this
|
|
operation.
|
|
|
|
Modify atl1_set_ringparam() to preserve SMB and CMB when changing ring
|
|
parameters.
|
|
|
|
Cc: stable@kernel.org
|
|
Signed-off-by: Jay Cliburn <jcliburn@gmail.com>
|
|
Reported-by: Tõnu Raitviir <jussuf@linux.ee>
|
|
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
---
|
|
drivers/net/atlx/atl1.c | 10 ++++++++++
|
|
1 files changed, 10 insertions(+), 0 deletions(-)
|
|
|
|
diff --git a/drivers/net/atlx/atl1.c b/drivers/net/atlx/atl1.c
|
|
index 5336310..3acf512 100644
|
|
--- a/drivers/net/atlx/atl1.c
|
|
+++ b/drivers/net/atlx/atl1.c
|
|
@@ -3504,6 +3504,8 @@ static int atl1_set_ringparam(struct net_device *netdev,
|
|
struct atl1_rfd_ring rfd_old, rfd_new;
|
|
struct atl1_rrd_ring rrd_old, rrd_new;
|
|
struct atl1_ring_header rhdr_old, rhdr_new;
|
|
+ struct atl1_smb smb;
|
|
+ struct atl1_cmb cmb;
|
|
int err;
|
|
|
|
tpd_old = adapter->tpd_ring;
|
|
@@ -3544,11 +3546,19 @@ static int atl1_set_ringparam(struct net_device *netdev,
|
|
adapter->rrd_ring = rrd_old;
|
|
adapter->tpd_ring = tpd_old;
|
|
adapter->ring_header = rhdr_old;
|
|
+ /*
|
|
+ * Save SMB and CMB, since atl1_free_ring_resources
|
|
+ * will clear them.
|
|
+ */
|
|
+ smb = adapter->smb;
|
|
+ cmb = adapter->cmb;
|
|
atl1_free_ring_resources(adapter);
|
|
adapter->rfd_ring = rfd_new;
|
|
adapter->rrd_ring = rrd_new;
|
|
adapter->tpd_ring = tpd_new;
|
|
adapter->ring_header = rhdr_new;
|
|
+ adapter->smb = smb;
|
|
+ adapter->cmb = cmb;
|
|
|
|
err = atl1_up(adapter);
|
|
if (err)
|
|
--
|
|
1.6.6.1
|
|
|