diff options
author | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-02-08 12:55:03 -0500 |
---|---|---|
committer | Paul Gortmaker <paul.gortmaker@windriver.com> | 2011-02-08 12:55:03 -0500 |
commit | bee4090e9ccdb34184b4572743dd5fda427e96e0 (patch) | |
tree | dd0b6626f6552f1e6c73d6b67ff35e6f35168408 | |
parent | 05560c0e77192b01b902ba79582fd15e7b8fbf24 (diff) | |
download | rt-patches-bee4090e9ccdb34184b4572743dd5fda427e96e0.tar.gz |
rm gianfar-Fix-TX-ring-processing-on-SMP-machines.patch ; now upstr.v2.6.34-rc1-997-ga3d3203v2.6.34-rc1-959-gbca14ddv2.6.34-rc1-955-ga818d8ev2.6.34-rc1-934-gf901e75v2.6.34-rc1-927-gbced863v2.6.34-rc1-919-gceb804cv2.6.34-rc1-912-g3474cbdv2.6.34-rc1-909-gd89b218v2.6.34-rc1-1736-ge4d8063v2.6.34-rc1-1729-gb50df7dv2.6.34-rc1-1723-g352d465v2.6.34-rc1-1719-g95c46afv2.6.34-rc1-1711-gcf3966bv2.6.34-rc1-1709-g8dba8f9v2.6.34-rc1-1701-g2eb645ev2.6.34-rc1-1688-g8fdb7e9v2.6.34-rc1-1642-gfc7f99cv2.6.34-rc1-1436-g0a492fdv2.6.34-rc1-1429-g3971047v2.6.34-rc1-1332-g9d20593v2.6.34-rc1-1325-g9b59a0av2.6.34-rc1-1306-gc3a0bd7v2.6.34-rc1-1281-ga41842fv2.6.34-rc1-1276-g7228744v2.6.34-rc1-1248-g31cc1ddv2.6.34-rc1-1246-g961cde9v2.6.34-rc1-1176-gf82c37ev2.6.34-rc1-1140-gc6b9e73v2.6.34-rc1-1134-g441f405v2.6.34-rc1-1103-g7c34691v2.6.34-rc1-1096-g5f87e54v2.6.34-rc1-1092-g01da470v2.6.34-rc1-1081-g61d7180v2.6.34-rc1-1069-g5dbc2f5v2.6.34-rc1-1061-g01d61d0v2.6.34-rc1-1057-g2e0c17dv2.6.34-rc1-1016-g7de4a9av2.6.34-rc1-1012-g1097d7c
Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
-rw-r--r-- | gianfar-Fix-TX-ring-processing-on-SMP-machines.patch | 75 | ||||
-rw-r--r-- | series | 1 |
2 files changed, 0 insertions, 76 deletions
diff --git a/gianfar-Fix-TX-ring-processing-on-SMP-machines.patch b/gianfar-Fix-TX-ring-processing-on-SMP-machines.patch deleted file mode 100644 index f8d0c90..0000000 --- a/gianfar-Fix-TX-ring-processing-on-SMP-machines.patch +++ /dev/null @@ -1,75 +0,0 @@ -From 42edbcbc3240b56cf89a426cbfe9c8d9051459c4 Mon Sep 17 00:00:00 2001 -From: Anton Vorontsov <avorontsov@ru.mvista.com> -Date: Wed, 3 Mar 2010 08:18:58 +0000 -Subject: [PATCH] gianfar: Fix TX ring processing on SMP machines - -commit 42edbcbc3240b56cf89a426cbfe9c8d9051459c4 in tip. - -Starting with commit a3bc1f11e9b867a4f49505 ("gianfar: Revive SKB -recycling") gianfar driver sooner or later stops transmitting any -packets on SMP machines. - -start_xmit() prepares new skb for transmitting, generally it does -three things: - -1. sets up all BDs (marks them ready to send), except the first one. -2. stores skb into tx_queue->tx_skbuff so that clean_tx_ring() - would cleanup it later. -3. sets up the first BD, i.e. marks it ready. - -Here is what clean_tx_ring() does: - -1. reads skbs from tx_queue->tx_skbuff -2. checks if the *last* BD is ready. If it's still ready [to send] - then it it isn't transmitted, so clean_tx_ring() returns. - Otherwise it actually cleanups BDs. All is OK. - -Now, if there is just one BD, code flow: - -- start_xmit(): stores skb into tx_skbuff. Note that the first BD - (which is also the last one) isn't marked as ready, yet. -- clean_tx_ring(): sees that skb is not null, *and* its lstatus - says that it is NOT ready (like if BD was sent), so it cleans - it up (bad!) -- start_xmit(): marks BD as ready [to send], but it's too late. - -We can fix this simply by reordering lstatus/tx_skbuff writes. - -[ Upstream commit: 0eddba525cf4c3a4aab9feaf36b12b465290d4a7 ] - -Reported-by: Martyn Welch <martyn.welch@ge.com> -Bisected-by: Paul Gortmaker <paul.gortmaker@windriver.com> -Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com> -Tested-by: Paul Gortmaker <paul.gortmaker@windriver.com> -Tested-by: Martyn Welch <martyn.welch@ge.com> -Cc: Sandeep Gopalpet <Sandeep.Kumar@freescale.com> -Cc: Stable <stable@vger.kernel.org> [2.6.33] -Signed-off-by: David S. Miller <davem@davemloft.net> -Signed-off-by: Thomas Gleixner <tglx@linutronix.de> - -diff --git a/drivers/net/gianfar.c b/drivers/net/gianfar.c -index 5c85948..f819db2 100644 ---- a/drivers/net/gianfar.c -+++ b/drivers/net/gianfar.c -@@ -2021,7 +2021,6 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev) - } - - /* setup the TxBD length and buffer pointer for the first BD */ -- tx_queue->tx_skbuff[tx_queue->skb_curtx] = skb; - txbdp_start->bufPtr = dma_map_single(&priv->ofdev->dev, skb->data, - skb_headlen(skb), DMA_TO_DEVICE); - -@@ -2053,6 +2052,10 @@ static int gfar_start_xmit(struct sk_buff *skb, struct net_device *dev) - - txbdp_start->lstatus = lstatus; - -+ eieio(); /* force lstatus write before tx_skbuff */ -+ -+ tx_queue->tx_skbuff[tx_queue->skb_curtx] = skb; -+ - /* Update the current skb pointer to the next entry we will use - * (wrapping if necessary) */ - tx_queue->skb_curtx = (tx_queue->skb_curtx + 1) & --- -1.7.1.1 - @@ -435,7 +435,6 @@ powerpc-Disable-sparse-irq-for-RT.patch lockdep-Reduce-stack_trace-usage.patch perf-Fix-errors-path-in-perf_output_begin.patch timer_stats-Convert-table_lock-to-raw_spin_lock.patch -gianfar-Fix-TX-ring-processing-on-SMP-machines.patch # v2.6.33.5-rt24.patch # v2.6.33.5-rt25.patch # v2.6.33.6-rt26.patch |