From: Greg Kroah-Hartman Date: Thu, 15 Nov 2007 17:59:16 +0000 (-0800) Subject: remove review-2.6.23-4/skge-ram-buffer-fix.patch as it was deemed broken. X-Git-Tag: v2.6.23.2~3 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=d64cfeab38377053f88d2556051823588d7a19d2;p=thirdparty%2Fkernel%2Fstable-queue.git remove review-2.6.23-4/skge-ram-buffer-fix.patch as it was deemed broken. --- diff --git a/review-2.6.23-4/series b/review-2.6.23-4/series index 3904a8bbb2b..2bf8275b289 100644 --- a/review-2.6.23-4/series +++ b/review-2.6.23-4/series @@ -6,7 +6,6 @@ forcedeth-msi-bugfix.patch forcedeth-add-mcp77-device-ids.patch tg3-fix-performance-regression-on-5705.patch fix-l2tp-oopses.patch -skge-ram-buffer-fix.patch skge-xm-phy-poll.patch sky2-status-race.patch sky2-ethdump.patch diff --git a/review-2.6.23-4/skge-ram-buffer-fix.patch b/review-2.6.23-4/skge-ram-buffer-fix.patch deleted file mode 100644 index ab2554b5518..00000000000 --- a/review-2.6.23-4/skge-ram-buffer-fix.patch +++ /dev/null @@ -1,123 +0,0 @@ -From stable-bounces@linux.kernel.org Tue Nov 6 14:18:31 2007 -From: Stephen Hemminger -Date: Tue, 06 Nov 2007 14:12:29 -0800 -Subject: [stable] [PATCH 1/6] skge: fix ram buffer size calculation -To: stable@kernel.org -Message-ID: <20071106221308.286029028@linux-foundation.org> -Content-Disposition: inline; filename=skge-ram-buffer-fix.patch - -From: Stephen Hemminger - -patch 7fb7ac241162dc51ec0f7644d4a97b2855213c32 in mainline. - -This fixes problems with transmit hangs on older fiber based SysKonnect boards. - -Adjust ram buffer sizing calculation to make it correct on all boards -and make it like the code in sky2 driver. - -Signed-off-by: Stephen Hemminger -Signed-off-by: Greg Kroah-Hartman -Signed-off-by: Jeff Garzik - ---- - drivers/net/skge.c | 51 ++++++++++++++++++++++++--------------------------- - 1 file changed, 24 insertions(+), 27 deletions(-) - ---- a/drivers/net/skge.c -+++ b/drivers/net/skge.c -@@ -2400,32 +2400,31 @@ static int skge_ioctl(struct net_device - return err; - } - --static void skge_ramset(struct skge_hw *hw, u16 q, u32 start, size_t len) -+/* Assign Ram Buffer allocation to queue */ -+static void skge_ramset(struct skge_hw *hw, u16 q, u32 start, u32 space) - { - u32 end; - -- start /= 8; -- len /= 8; -- end = start + len - 1; -+ /* convert from K bytes to qwords used for hw register */ -+ start *= 1024/8; -+ space *= 1024/8; -+ end = start + space - 1; - - skge_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR); - skge_write32(hw, RB_ADDR(q, RB_START), start); -+ skge_write32(hw, RB_ADDR(q, RB_END), end); - skge_write32(hw, RB_ADDR(q, RB_WP), start); - skge_write32(hw, RB_ADDR(q, RB_RP), start); -- skge_write32(hw, RB_ADDR(q, RB_END), end); - - if (q == Q_R1 || q == Q_R2) { -+ u32 tp = space - space/4; -+ - /* Set thresholds on receive queue's */ -- skge_write32(hw, RB_ADDR(q, RB_RX_UTPP), -- start + (2*len)/3); -- skge_write32(hw, RB_ADDR(q, RB_RX_LTPP), -- start + (len/3)); -- } else { -- /* Enable store & forward on Tx queue's because -- * Tx FIFO is only 4K on Genesis and 1K on Yukon -- */ -+ skge_write32(hw, RB_ADDR(q, RB_RX_UTPP), tp); -+ skge_write32(hw, RB_ADDR(q, RB_RX_LTPP), space/4); -+ } else if (hw->chip_id != CHIP_ID_GENESIS) -+ /* Genesis Tx Fifo is too small for normal store/forward */ - skge_write8(hw, RB_ADDR(q, RB_CTRL), RB_ENA_STFWD); -- } - - skge_write8(hw, RB_ADDR(q, RB_CTRL), RB_ENA_OP_MD); - } -@@ -2453,7 +2452,7 @@ static int skge_up(struct net_device *de - struct skge_port *skge = netdev_priv(dev); - struct skge_hw *hw = skge->hw; - int port = skge->port; -- u32 chunk, ram_addr; -+ u32 ramaddr, ramsize, rxspace; - size_t rx_size, tx_size; - int err; - -@@ -2508,14 +2507,15 @@ static int skge_up(struct net_device *de - spin_unlock_bh(&hw->phy_lock); - - /* Configure RAMbuffers */ -- chunk = hw->ram_size / ((hw->ports + 1)*2); -- ram_addr = hw->ram_offset + 2 * chunk * port; -+ ramsize = (hw->ram_size - hw->ram_offset) / hw->ports; -+ ramaddr = hw->ram_offset + port * ramsize; -+ rxspace = 8 + (2*(ramsize - 16))/3; - -- skge_ramset(hw, rxqaddr[port], ram_addr, chunk); -- skge_qset(skge, rxqaddr[port], skge->rx_ring.to_clean); -+ skge_ramset(hw, rxqaddr[port], ramaddr, rxspace); -+ skge_ramset(hw, txqaddr[port], ramaddr + rxspace, ramsize - rxspace); - -+ skge_qset(skge, rxqaddr[port], skge->rx_ring.to_clean); - BUG_ON(skge->tx_ring.to_use != skge->tx_ring.to_clean); -- skge_ramset(hw, txqaddr[port], ram_addr+chunk, chunk); - skge_qset(skge, txqaddr[port], skge->tx_ring.to_use); - - /* Start receiver BMU */ -@@ -3450,15 +3450,12 @@ static int skge_reset(struct skge_hw *hw - if (hw->chip_id == CHIP_ID_GENESIS) { - if (t8 == 3) { - /* special case: 4 x 64k x 36, offset = 0x80000 */ -- hw->ram_size = 0x100000; -- hw->ram_offset = 0x80000; -+ hw->ram_size = 1024; -+ hw->ram_offset = 512; - } else - hw->ram_size = t8 * 512; -- } -- else if (t8 == 0) -- hw->ram_size = 0x20000; -- else -- hw->ram_size = t8 * 4096; -+ } else /* Yukon */ -+ hw->ram_size = t8 ? t8 * 4 : 128; - - hw->intr_mask = IS_HW_ERR; -